113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.7 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 getInfoString = async () => {
 | |
|   // Fetch data from the server
 | |
|   const time = dayjs().format("HH:mm");
 | |
|   const text = await fetch(
 | |
|     "https://script.google.com/macros/s/AKfycbz80LcaEUrhnlEsLkJy0LG2IRO3DBVQhfNmN1d_0f_HvtsujNQpxM90SrV9yKWH_JG1Ww/exec"
 | |
|   )
 | |
|     .then((response) => response.text())
 | |
|     .then((data) => {
 | |
|       if (data !== "") {
 | |
|         return data.split("^");
 | |
|       }
 | |
|       return null;
 | |
|     });
 | |
|   ToastAndroid.show(`${text}`, ToastAndroid.SHORT);
 | |
|   return { time, text };
 | |
| };
 | |
| 
 | |
| export function InfoWidget({ time, text }) {
 | |
|   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={"列車運行情報"}
 | |
|           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,
 | |
|         }}
 | |
|       >
 | |
|         {text ? (
 | |
|           <TextWidget
 | |
|             style={{
 | |
|               color: "#000000",
 | |
| 
 | |
|               fontSize: 20,
 | |
|             }}
 | |
|             clickAction="OPEN_APP"
 | |
|             text={text}
 | |
|           />
 | |
|         ) : (
 | |
|           <TextWidget
 | |
|             style={{
 | |
|               color: "#000000",
 | |
|               fontSize: 20,
 | |
|             }}
 | |
|             clickAction="WIDGET_CLICK"
 | |
|             text="通常運行中です。"
 | |
|           />
 | |
|         )}
 | |
|       </ListWidget>
 | |
|     </FlexWidget>
 | |
|   );
 | |
| }
 | |
| 
 | |
| const FlexText = ({ flex, text }) => (
 | |
|   <FlexWidget style={{ flex }}>
 | |
|     <TextWidget style={{ fontSize: 20, color: "#000000" }} text={text} />
 | |
|   </FlexWidget>
 | |
| );
 |