Save worktree changes
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
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/playlists/playlist-schedule.js']
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user