iobroker.nspanel-lovelace-ui
Version:
NsPanel Lovelace UI is a Firmware for the nextion screen inside of NSPanel in the Design of Lovelace UI Design.
172 lines (171 loc) • 6.87 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var pageTrash_exports = {};
__export(pageTrash_exports, {
getTrashDataFromFile: () => getTrashDataFromFile,
getTrashDataFromState: () => getTrashDataFromState
});
module.exports = __toCommonJS(pageTrash_exports);
var import_Color = require("../../const/Color");
var import_node_ical = __toESM(require("node-ical"));
async function getTrashDataFromState(trashJSON, entry) {
var _a;
const items = [];
const countItems = (_a = entry.countItems) != null ? _a : 6;
try {
let trashData;
if (typeof trashJSON === "string") {
trashData = JSON.parse(trashJSON);
} else if (Array.isArray(trashJSON)) {
trashData = trashJSON;
} else {
return { messages: items, error: new Error("trashJSON must be a string or array ") };
}
if (!Array.isArray(trashData)) {
return { messages: items, error: new Error("trashData is not an array") };
}
for (const trashObject of trashData) {
if (new Date(trashObject._date).setHours(0, 0, 0, 0) < (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0)) {
continue;
}
const result = getTrashItem(
{ start: trashObject._date, summary: trashObject.event },
countItems,
entry.items
);
if (result) {
items.push(result);
}
if (items.length >= 6) {
break;
}
}
return { messages: items };
} catch (error) {
return { messages: items, error };
}
}
async function getTrashDataFromFile(entry, adapter) {
var _a;
const items = [];
const trashFile = entry.trashFile;
const countItems = (_a = entry.countItems) != null ? _a : 6;
try {
if (!await adapter.fileExistsAsync(adapter.namespace, trashFile)) {
return { messages: items, error: `File ${trashFile} does not exist in ioBroker files` };
}
let fileData;
try {
fileData = (await adapter.readFileAsync(adapter.namespace, trashFile)).file.toString("utf-8");
} catch (readError) {
console.error(`Error reading ${trashFile} from ioBroker files:`, readError);
return { messages: items, error: readError };
}
const data = import_node_ical.default.parseICS(fileData);
const arrayData = Object.values(data).filter(
(entry2) => entry2 !== void 0 && typeof entry2 === "object" && entry2.type === "VEVENT" && new Date(entry2.start).setHours(0, 0, 0, 0) >= (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0)
);
arrayData.sort((a, b) => {
const dateA = new Date(a.start).getTime();
const dateB = new Date(b.start).getTime();
return dateA - dateB;
});
for (const event of arrayData) {
if (event.type === "VEVENT") {
const result = getTrashItem(event, countItems, entry.items);
if (result) {
items.push(result);
}
if (items.length >= 6) {
break;
}
}
}
return { messages: items };
} catch (error) {
console.error("Error in getTrashDataFromFile:", error);
return { messages: items, error };
}
}
function getTrashItem(event, countItems, items) {
const eventSummary = event.summary !== void 0 ? event.summary : null;
const eventName = typeof eventSummary === "string" ? eventSummary : eventSummary == null ? void 0 : eventSummary.val;
if (!eventName || typeof eventName !== "string" || eventName.trim() === "") {
return null;
}
let trashIndex = -1;
for (let i = 0; i < items.length; i++) {
const trashText = items[i].textTrash;
const trashName = typeof trashText === "string" ? trashText : trashText == null ? void 0 : trashText.val;
if (trashName && typeof trashName === "string" && trashName.trim() !== "" && eventName.includes(trashName)) {
trashIndex = i;
break;
}
}
if (trashIndex === -1) {
return null;
}
const item = items[trashIndex];
const trashType = item.textTrash || "";
const customTrash = item.customTrash || "";
const iconColor = item.iconColor || "";
const icon = item.icon || "calendar-month";
const eventStartdatum = new Date(event.start || 1);
let eventDatum = "";
const tempDate = new Date(eventStartdatum).setHours(0, 0, 0, 0);
if (tempDate == (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0)) {
eventDatum = "today";
} else if (tempDate === new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() + 1)).setHours(0, 0, 0, 0)) {
eventDatum = "tomorrow";
} else if (tempDate > new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() + 1)).setHours(0, 0, 0, 0) && tempDate < new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() + 8)).setHours(0, 0, 0, 0)) {
eventDatum = countItems < 6 ? eventStartdatum.toLocaleString("de-DE", { weekday: "long" }) : eventStartdatum.toLocaleString("de-DE", { weekday: "short" });
} else {
eventDatum = (countItems < 6 ? eventStartdatum.toLocaleString("de-DE", {
year: "numeric",
month: "2-digit",
day: "2-digit"
}) : eventStartdatum.toLocaleString("de-DE", {
year: "2-digit",
month: "2-digit",
day: "2-digit"
})) || "";
}
return {
icon,
color: import_Color.Color.ConvertHexToRgb(iconColor),
text: customTrash && customTrash !== "" ? customTrash : trashType,
text1: eventDatum
};
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
getTrashDataFromFile,
getTrashDataFromState
});
//# sourceMappingURL=pageTrash.js.map