@tomorrowos/sdk 0.4.4 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/store/types.d.ts
CHANGED
|
@@ -34,11 +34,15 @@ export interface PlaylistItemRecord {
|
|
|
34
34
|
type?: string;
|
|
35
35
|
durationMs?: number;
|
|
36
36
|
}
|
|
37
|
+
/** Device-local run window: startDate+start → endDate+end (one continuous period, not daily repeat). */
|
|
37
38
|
export interface PlaylistSchedule {
|
|
38
39
|
startDate?: string;
|
|
39
40
|
endDate?: string;
|
|
41
|
+
/** @deprecated Ignored by player; kept for backward compatibility in stored JSON. */
|
|
40
42
|
daysOfWeek?: number[];
|
|
43
|
+
/** HH:mm — combined with startDate for run-from datetime. */
|
|
41
44
|
start?: string;
|
|
45
|
+
/** HH:mm — combined with endDate for run-until datetime (exclusive). */
|
|
42
46
|
end?: string;
|
|
43
47
|
}
|
|
44
48
|
export interface StoredPlaylist {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tomorrowos/sdk",
|
|
3
|
-
"version": "0.4.
|
|
4
|
-
"description": "TomorrowOS CMS server SDK
|
|
3
|
+
"version": "0.4.5",
|
|
4
|
+
"description": "TomorrowOS CMS server SDK - WebSocket transport, pairing, device commands, optional static CMS UI. Includes CLI (tomorrowos init / build) and starter templates.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -41,3 +41,4 @@
|
|
|
41
41
|
},
|
|
42
42
|
"license": "Apache-2.0"
|
|
43
43
|
}
|
|
44
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "my-cms",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "CMS server on @tomorrowos/sdk. Add your UI (React, static files, etc.) alongside this server.",
|
|
5
5
|
"private": true,
|
|
6
6
|
"type": "module",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"build-player": "tomorrowos build --platform tizen"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@tomorrowos/sdk": "^0.4.
|
|
13
|
+
"@tomorrowos/sdk": "^0.4.5"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"@types/node": "^20.0.0",
|
|
@@ -18,3 +18,4 @@
|
|
|
18
18
|
"typescript": "^5.5.0"
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
+
|
|
@@ -66,35 +66,27 @@
|
|
|
66
66
|
<h3 class="subheading">When this playlist plays</h3>
|
|
67
67
|
<p class="hint">
|
|
68
68
|
Leave blank for always on. Uses the <strong>TV/device local clock</strong> (not CMS server time).
|
|
69
|
-
|
|
69
|
+
Schedule is one continuous run: <strong>from date/time → until date/time</strong>
|
|
70
|
+
(e.g. May 5 13:00 through May 8 14:00), not a daily repeat inside those dates.
|
|
71
|
+
“Until” time stops at that moment (exclusive).
|
|
70
72
|
</p>
|
|
71
73
|
<div class="schedule-grid">
|
|
72
74
|
<label>
|
|
73
|
-
|
|
75
|
+
Run from (date)
|
|
74
76
|
<input type="date" id="scheduleStartDate" />
|
|
75
77
|
</label>
|
|
76
78
|
<label>
|
|
77
|
-
|
|
78
|
-
<input type="
|
|
79
|
+
Run from (time)
|
|
80
|
+
<input type="time" id="scheduleStartTime" />
|
|
79
81
|
</label>
|
|
80
82
|
<label>
|
|
81
|
-
|
|
82
|
-
<input type="
|
|
83
|
+
Run until (date)
|
|
84
|
+
<input type="date" id="scheduleEndDate" />
|
|
83
85
|
</label>
|
|
84
86
|
<label>
|
|
85
|
-
|
|
87
|
+
Run until (time)
|
|
86
88
|
<input type="time" id="scheduleEndTime" />
|
|
87
89
|
</label>
|
|
88
|
-
<div class="days-row">
|
|
89
|
-
<span style="width: 100%; color: #444">Days</span>
|
|
90
|
-
<label><input type="checkbox" class="day-checkbox" value="0" /> Sun</label>
|
|
91
|
-
<label><input type="checkbox" class="day-checkbox" value="1" /> Mon</label>
|
|
92
|
-
<label><input type="checkbox" class="day-checkbox" value="2" /> Tue</label>
|
|
93
|
-
<label><input type="checkbox" class="day-checkbox" value="3" /> Wed</label>
|
|
94
|
-
<label><input type="checkbox" class="day-checkbox" value="4" /> Thu</label>
|
|
95
|
-
<label><input type="checkbox" class="day-checkbox" value="5" /> Fri</label>
|
|
96
|
-
<label><input type="checkbox" class="day-checkbox" value="6" /> Sat</label>
|
|
97
|
-
</div>
|
|
98
90
|
</div>
|
|
99
91
|
|
|
100
92
|
<div class="editor-actions">
|
|
@@ -306,14 +306,10 @@ function buildScheduleFromForm() {
|
|
|
306
306
|
const endDate = document.getElementById("scheduleEndDate")?.value?.trim();
|
|
307
307
|
const startTime = document.getElementById("scheduleStartTime")?.value?.trim();
|
|
308
308
|
const endTime = document.getElementById("scheduleEndTime")?.value?.trim();
|
|
309
|
-
const days = [...document.querySelectorAll(".day-checkbox:checked")].map((el) =>
|
|
310
|
-
Number(el.value)
|
|
311
|
-
);
|
|
312
309
|
if (startDate) schedule.startDate = startDate;
|
|
313
310
|
if (endDate) schedule.endDate = endDate;
|
|
314
311
|
if (startTime) schedule.start = startTime;
|
|
315
312
|
if (endTime) schedule.end = endTime;
|
|
316
|
-
if (days.length > 0) schedule.daysOfWeek = days;
|
|
317
313
|
return Object.keys(schedule).length > 0 ? schedule : undefined;
|
|
318
314
|
}
|
|
319
315
|
|
|
@@ -323,10 +319,6 @@ function loadScheduleIntoForm(schedule) {
|
|
|
323
319
|
document.getElementById("scheduleEndDate").value = s.endDate || "";
|
|
324
320
|
document.getElementById("scheduleStartTime").value = s.start || "";
|
|
325
321
|
document.getElementById("scheduleEndTime").value = s.end || "";
|
|
326
|
-
document.querySelectorAll(".day-checkbox").forEach((el) => {
|
|
327
|
-
el.checked =
|
|
328
|
-
Array.isArray(s.daysOfWeek) && s.daysOfWeek.includes(Number(el.value));
|
|
329
|
-
});
|
|
330
322
|
}
|
|
331
323
|
|
|
332
324
|
function getSelectedPlaylist() {
|
|
@@ -492,11 +484,21 @@ function renderEditorAssets() {
|
|
|
492
484
|
const actions = document.createElement("div");
|
|
493
485
|
actions.className = "playlist-item-actions";
|
|
494
486
|
const durInput = document.createElement("input");
|
|
487
|
+
const isVideo = item.type === "video";
|
|
495
488
|
durInput.type = "number";
|
|
496
489
|
durInput.min = "1";
|
|
497
490
|
durInput.max = "3600";
|
|
498
491
|
durInput.value = String(Math.round(item.durationMs / 1000));
|
|
492
|
+
if (isVideo) {
|
|
493
|
+
durInput.readOnly = true;
|
|
494
|
+
durInput.disabled = true;
|
|
495
|
+
durInput.title = "Video duration is auto-detected and cannot be edited.";
|
|
496
|
+
}
|
|
499
497
|
durInput.addEventListener("change", () => {
|
|
498
|
+
if (isVideo) {
|
|
499
|
+
durInput.value = String(Math.round(item.durationMs / 1000));
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
500
502
|
item.durationMs = Math.min(3600, Math.max(1, Number(durInput.value) || 10)) * 1000;
|
|
501
503
|
meta.textContent = `${item.type} · ${Math.round(item.durationMs / 1000)}s`;
|
|
502
504
|
});
|