Initial commit

This commit is contained in:
Paul Fey 2025-06-20 09:47:10 +02:00
commit c310cd7943
19 changed files with 3939 additions and 0 deletions

2
pages/home/i18n/en-US.po Normal file
View file

@ -0,0 +1,2 @@
msgid "example"
msgstr "This is an example in device"

78
pages/home/index.js Normal file
View file

@ -0,0 +1,78 @@
import {
createWidget,
widget,
align,
updateStatusBarTitle,
event,
} from "@zos/ui";
import { log as Logger, px } from "@zos/utils";
import { push } from "@zos/router";
import {
DEFAULT_COLOR,
DEFAULT_COLOR_TRANSPARENT,
} from "../../utils/config/constants";
import { DEVICE_WIDTH } from "../../utils/config/device";
import VisLog from "@silver-zepp/vis-log";
const vis = new VisLog("index.js");
const logger = Logger.getLogger("ZeppSpace");
const { messageBuilder } = getApp()._options.globalData;
let spaces = {};
Page({
state: {},
build() {
updateStatusBarTitle("Spaces (Loading)");
this.fetchData();
},
fetchData() {
messageBuilder
.request({
method: "GET_DIRECTORY",
})
.then((data) => {
vis.log("data received");
const statusSuccess = data["success"];
if (!statusSuccess) {
return;
}
let spaceNames = Object.fromEntries(
Object.entries(data["result"]).sort(([a], [b]) => a.localeCompare(b)),
);
let yPos = 70;
for (let key in spaceNames) {
if (spaceNames.hasOwnProperty(key)) {
spaces[key] = createWidget(widget.TEXT, {
x: 0,
y: px(yPos),
w: px(DEVICE_WIDTH),
h: px(50),
align_h: align.CENTER_H,
align_v: align.CENTER_V,
text_size: px(32),
color: 0xffffff,
text: key,
});
spaces[key].addEventListener(event.CLICK_UP, (info) => {
push({
url: "pages/status/index",
params: {
name: key,
url: spaceNames[key],
},
});
});
yPos += 50;
}
}
updateStatusBarTitle("Spaces");
});
},
});

View file

@ -0,0 +1,2 @@
msgid "example"
msgstr "This is an example in device"

110
pages/status/index.js Normal file
View file

@ -0,0 +1,110 @@
import { createWidget, widget, align, updateStatusBarTitle } from "@zos/ui";
import { log as Logger, px } from "@zos/utils";
import { back } from "@zos/router";
import {
DEFAULT_COLOR,
DEFAULT_COLOR_TRANSPARENT,
} from "../../utils/config/constants";
import { DEVICE_WIDTH } from "../../utils/config/device";
import VisLog from "@silver-zepp/vis-log";
const vis = new VisLog("index.js");
const logger = Logger.getLogger("ZeppSpace");
const { messageBuilder } = getApp()._options.globalData;
let title = "";
let url = "";
Page({
state: {},
onInit(params) {
const data = JSON.parse(params);
if (data["url"] == undefined || data["name"] == undefined) {
back();
return;
}
title = data["name"];
url = data["url"];
},
build() {
updateStatusBarTitle(title + " (Loading)");
this.fetchData();
},
fetchData() {
messageBuilder
.request({
method: "GET_STATUS",
url: url,
})
.then((data) => {
const statusSuccess = data["success"];
if (!statusSuccess) {
return;
}
let open = data["result"]["state"]["open"];
let openText = open ? "Yes" : "No";
createWidget(widget.TEXT, {
x: 0,
y: px(70),
w: px(DEVICE_WIDTH),
h: px(50),
align_h: align.CENTER_H,
align_v: align.CENTER_V,
text_size: px(32),
color: 0xffffff,
text: "Open: " + openText,
});
createWidget(widget.TEXT, {
x: 0,
y: px(120),
w: px(DEVICE_WIDTH),
h: px(50),
align_h: align.CENTER_H,
align_v: align.CENTER_V,
text_size: px(32),
color: 0xffffff,
text:
"Last Updated: " +
this.convertTime(data["result"]["state"]["lastchange"]),
});
updateStatusBarTitle(title);
});
},
convertTime(timestamp) {
var a = new Date(timestamp * 1000);
var today = new Date();
var yesterday = new Date(Date.now() - 86400000);
var months = [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
];
var year = a.getFullYear();
var month = months[a.getMonth()];
var date = a.getDate();
var hour = a.getHours() < 10 ? "0" + a.getHours() : a.getHours();
var min = a.getMinutes() < 10 ? "0" + a.getMinutes() : a.getMinutes();
if (a.setHours(0, 0, 0, 0) == today.setHours(0, 0, 0, 0))
return hour + ":" + min;
else if (a.setHours(0, 0, 0, 0) == yesterday.setHours(0, 0, 0, 0))
return "Yesterday, " + hour + ":" + min;
else if (year == today.getFullYear()) return date + " " + month;
else return date + " " + month + " " + year;
},
});