80 lines
2.6 KiB
JavaScript
80 lines
2.6 KiB
JavaScript
const { renderFragment } = require('../../../view');
|
|
|
|
const DAY_OPTIONS = [
|
|
{ value: 0, label: 'Sun' },
|
|
{ value: 1, label: 'Mon' },
|
|
{ value: 2, label: 'Tue' },
|
|
{ value: 3, label: 'Wed' },
|
|
{ value: 4, label: 'Thu' },
|
|
{ value: 5, label: 'Fri' },
|
|
{ value: 6, label: 'Sat' }
|
|
];
|
|
|
|
const DEFAULT_START_TIME = '00:00';
|
|
const DEFAULT_END_TIME = '23:59';
|
|
|
|
function formatDateTimeInput(value) {
|
|
if (!value) {
|
|
return '';
|
|
}
|
|
const date = new Date(value);
|
|
if (Number.isNaN(date.getTime())) {
|
|
return '';
|
|
}
|
|
const year = date.getFullYear();
|
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
const day = String(date.getDate()).padStart(2, '0');
|
|
const hours = String(date.getHours()).padStart(2, '0');
|
|
const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
return `${year}-${month}-${day}T${hours}:${minutes}`;
|
|
}
|
|
|
|
function formatTimeInput(value) {
|
|
if (!value) {
|
|
return '';
|
|
}
|
|
return String(value).slice(0, 5);
|
|
}
|
|
|
|
module.exports = function renderPlaylistSlideConfigPage(playlist, playlistSlide, message, rowKey, currentUser) {
|
|
const slide = playlistSlide || {
|
|
id: 0,
|
|
schedule_mode: 'always',
|
|
schedule_days: [],
|
|
schedule_start_datetime: null,
|
|
schedule_end_datetime: null,
|
|
schedule_start_time: null,
|
|
schedule_end_time: null
|
|
};
|
|
const scheduleMode = String(slide.schedule_mode || 'always');
|
|
const selectedDays = new Set(Array.isArray(slide.schedule_days) ? slide.schedule_days.map(Number) : []);
|
|
const startTimeValue = formatTimeInput(slide.schedule_start_time) || (scheduleMode === 'times' ? DEFAULT_START_TIME : '');
|
|
const endTimeValue = formatTimeInput(slide.schedule_end_time) || (scheduleMode === 'times' ? DEFAULT_END_TIME : '');
|
|
|
|
return renderFragment('playlists/slide-config', {
|
|
title: 'Slide schedule',
|
|
framePopupCard: true,
|
|
hideFrameHeader: true,
|
|
hideThemeToggle: true,
|
|
frameBodyClass: 'admin-shell-body--frame-plain',
|
|
message: message,
|
|
currentUser: currentUser || null,
|
|
playlist: playlist,
|
|
playlistSlide: slide,
|
|
scheduleMode: scheduleMode,
|
|
isAlwaysMode: scheduleMode === 'always',
|
|
isDatesMode: scheduleMode === 'dates',
|
|
isTimesMode: scheduleMode === 'times',
|
|
rowKey: String(rowKey || ''),
|
|
startDateTimeValue: formatDateTimeInput(slide.schedule_start_datetime),
|
|
endDateTimeValue: formatDateTimeInput(slide.schedule_end_datetime),
|
|
startTimeValue: startTimeValue,
|
|
endTimeValue: endTimeValue,
|
|
dayOptions: DAY_OPTIONS.map((day) => ({
|
|
...day,
|
|
checked: selectedDays.has(day.value)
|
|
})),
|
|
scripts: ['js/lib/modal.js', 'js/playlists/playlist-schedule.js']
|
|
});
|
|
};
|