122 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import React from "react";
 | |
| import {
 | |
|   FlexWidget,
 | |
|   TextWidget,
 | |
|   ListWidget,
 | |
| } from "react-native-android-widget";
 | |
| import dayjs from "dayjs";
 | |
| import { ToastAndroid } from "react-native";
 | |
| 
 | |
| export const getDelayData = async () => {
 | |
|   // Fetch data from the server
 | |
|   const time = dayjs().format("HH:mm");
 | |
|   const delayString = await fetch(
 | |
|     "https://script.google.com/macros/s/AKfycbyKxch7z7l8e07LXulRHqxjVoIiB13kcgvoToLE-rqlxLmLSKdlmqz0FI1F2EuA7Zfg/exec"
 | |
|   )
 | |
|     .then((response) => response.text())
 | |
|     .then((data) => {
 | |
|       if (data !== "") {
 | |
|         return data.split("^");
 | |
|       }
 | |
|       return null;
 | |
|     });
 | |
|   ToastAndroid.show(`${delayString}`, ToastAndroid.SHORT);
 | |
|   return { time, delayString };
 | |
| };
 | |
| export function TraInfoEXWidget({ time, delayString }) {
 | |
|   return (
 | |
|     <FlexWidget
 | |
|       style={{
 | |
|         height: "match_parent",
 | |
|         width: "match_parent",
 | |
|         justifyContent: "center",
 | |
|         alignItems: "center",
 | |
|         backgroundColor: "#ffffff",
 | |
|         borderRadius: 16,
 | |
|       }}
 | |
|       clickAction="WIDGET_CLICK"
 | |
|     >
 | |
|       <FlexWidget
 | |
|         style={{
 | |
|           justifyContent: "center",
 | |
|           alignItems: "center",
 | |
|           backgroundColor: "#0099CC",
 | |
|           width: "100%",
 | |
|           flexDirection: "row",
 | |
|           paddingTop: 10,
 | |
|           paddingBottom: 10,
 | |
|         }}
 | |
|       >
 | |
|         <TextWidget
 | |
|           text={"列車遅延速報EX"}
 | |
|           style={{
 | |
|             fontSize: 30,
 | |
|             fontWeight: "bold",
 | |
|             fontFamily: "Inter",
 | |
|             color: "#fff",
 | |
|             textAlign: "left",
 | |
|             marginLeft: 10,
 | |
|           }}
 | |
|         />
 | |
|         <FlexWidget style={{ flex: 1 }} />
 | |
|         <TextWidget
 | |
|           text={time}
 | |
|           style={{
 | |
|             fontSize: 30,
 | |
|             fontFamily: "Inter",
 | |
|             color: "#fff",
 | |
|             textAlign: "right",
 | |
|             marginRight: 10,
 | |
|           }}
 | |
|         />
 | |
|       </FlexWidget>
 | |
|       <ListWidget
 | |
|         style={{
 | |
|           flex: 1,
 | |
|           backgroundColor: "#fff",
 | |
|           width: "match_parent",
 | |
|           height: "match_parent",
 | |
|           padding: 10,
 | |
|         }}
 | |
|       >
 | |
|         {delayString ? (
 | |
|           delayString.map((d) => {
 | |
|             let data = d.split(" ");
 | |
|             return (
 | |
|               <FlexWidget
 | |
|                 style={{
 | |
|                   flexDirection: "row",
 | |
|                   width: "match_parent",
 | |
|                   backgroundColor: "#ffffff",
 | |
|                   flex: 1,
 | |
|                 }}
 | |
|                 clickAction="WIDGET_CLICK"
 | |
|                 key={data[1]}
 | |
|               >
 | |
|                 <FlexText flex={3} text={data[0].replace("\n", "")} />
 | |
|                 <FlexText flex={1} text={data[1]} />
 | |
|                 <FlexText flex={1} text={data[3]} />
 | |
|               </FlexWidget>
 | |
|             );
 | |
|           })
 | |
|         ) : (
 | |
|           <TextWidget
 | |
|             style={{
 | |
|               color: "#000000",
 | |
|               fontSize: 20,
 | |
|             }}
 | |
|             clickAction="WIDGET_CLICK"
 | |
|             text="現在、5分以上の遅れはありません。"
 | |
|           />
 | |
|         )}
 | |
|       </ListWidget>
 | |
|     </FlexWidget>
 | |
|   );
 | |
| }
 | |
| 
 | |
| const FlexText = ({ flex, text }) => (
 | |
|   <FlexWidget style={{ flex }}>
 | |
|     <TextWidget style={{ fontSize: 20, color: "#000000" }} text={text} />
 | |
|   </FlexWidget>
 | |
| );
 |