Release v2.20.5
This commit is contained in:
1 parent
e6c48c6340
commit
1e8bcae72a
8 files changed
+35
-7
No files matched your search
@@ -2,6 +2,12 @@
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## 2.20.5 - 2026-10-25
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed playlist schedule summaries showing weekday text and omitting boundary times when dates are returned as `Date` objects.
|
||||
|
||||
## 2.20.4 - 2026-10-25
|
||||
|
||||
### Added
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pulse-signage-player",
|
||||
"version": "2.20.4",
|
||||
"version": "2.20.5",
|
||||
"private": false,
|
||||
"description": "Pulse Signage player application bundle",
|
||||
"engines": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pulse-signage-web",
|
||||
"version": "2.20.4",
|
||||
"version": "2.20.5",
|
||||
"private": false,
|
||||
"description": "Pulse Signage web and bridge application bundle",
|
||||
"engines": {
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "pulse-signage",
|
||||
"version": "2.20.4",
|
||||
"version": "2.20.5",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "pulse-signage",
|
||||
"version": "2.20.4",
|
||||
"version": "2.20.5",
|
||||
"dependencies": {
|
||||
"@better-auth/passkey": "^1.7.13",
|
||||
"animate.css": "^4.1.1",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pulse-signage",
|
||||
"version": "2.20.4",
|
||||
"version": "2.20.5",
|
||||
"private": false,
|
||||
"description": "Pulse Signage application with MySQL and media storage",
|
||||
"engines": {
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
const DAY_NAMES = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
||||
|
||||
function normalizeDateTimeValue(value) {
|
||||
if (value instanceof Date || Object.prototype.toString.call(value) === '[object Date]') {
|
||||
if (Number.isNaN(value.getTime())) {
|
||||
return null;
|
||||
}
|
||||
const pad = (part) => String(part).padStart(2, '0');
|
||||
return value.getFullYear() + '-' + pad(value.getMonth() + 1) + '-' + pad(value.getDate())
|
||||
+ 'T' + pad(value.getHours()) + ':' + pad(value.getMinutes());
|
||||
}
|
||||
const raw = String(value || '').trim();
|
||||
return raw ? raw : null;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,18 @@
|
||||
};
|
||||
|
||||
// Schedule helpers.
|
||||
function normalizeDateTimeValue(value) {
|
||||
if (value instanceof Date || Object.prototype.toString.call(value) === '[object Date]') {
|
||||
if (Number.isNaN(value.getTime())) {
|
||||
return '';
|
||||
}
|
||||
var pad = function (part) { return String(part).padStart(2, '0'); };
|
||||
return value.getFullYear() + '-' + pad(value.getMonth() + 1) + '-' + pad(value.getDate())
|
||||
+ 'T' + pad(value.getHours()) + ':' + pad(value.getMinutes());
|
||||
}
|
||||
return String(value || '').trim();
|
||||
}
|
||||
|
||||
function formatDays(daysValue) {
|
||||
var days = [];
|
||||
if (Array.isArray(daysValue)) {
|
||||
@@ -36,8 +48,8 @@
|
||||
|
||||
function normalizeScheduleRuleValue(rule) {
|
||||
var input = rule && typeof rule === 'object' ? rule : {};
|
||||
var startDatetime = String(input.start_datetime || input.startDateTime || input.startDateTimeValue || '').trim();
|
||||
var endDatetime = String(input.end_datetime || input.endDateTime || input.endDateTimeValue || '').trim();
|
||||
var startDatetime = normalizeDateTimeValue(input.start_datetime || input.startDateTime || input.startDateTimeValue);
|
||||
var endDatetime = normalizeDateTimeValue(input.end_datetime || input.endDateTime || input.endDateTimeValue);
|
||||
var startTime = String(input.start_time || input.startTime || input.startTimeValue || '').trim();
|
||||
var endTime = String(input.end_time || input.endTime || input.endTimeValue || '').trim();
|
||||
var days = [];
|
||||
|
||||
@@ -26,6 +26,8 @@ test('playlist schedule summaries show up to two short rules on separate lines a
|
||||
[[{ days: [1] }, { days: [2] }, { days: [3] }, { days: [4] }], '4 rules'],
|
||||
[[{ start_datetime: '2026-10-25T09:00', end_datetime: '2026-10-26T17:00', days: [1] }],
|
||||
'Rule 1: Dates 2026-10-25 09:00 to 2026-10-26 17:00: Mon'],
|
||||
[[{ start_datetime: new Date(2026, 0, 1, 0, 0), end_datetime: new Date(2026, 9, 30, 20, 0) }],
|
||||
'Rule 1: Dates 2026-01-01 00:00 to 2026-10-30 20:00'],
|
||||
[[{ start_datetime: '2026-10-25T09:00', end_datetime: '2026-10-26T17:00',
|
||||
days: [1, 2], start_time: '09:00', end_time: '17:00' }],
|
||||
'1 rule'],
|
||||
|
||||
Reference in new issue
Block a user