1 line
No EOL
6.5 KiB
JavaScript
1 line
No EOL
6.5 KiB
JavaScript
import dialogHelper from"./../modules/dialoghelper/dialoghelper.js";import layoutManager from"./../modules/layoutmanager.js";import globalize from"./../modules/common/globalize.js";import datetime from"./../modules/common/datetime.js";import focusManager from"./../modules/focusmanager.js";import"./../modules/emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js";import ScheduledTaskController from"./scheduledtaskcontroller.js";function onSubmit(e){e.preventDefault();let instance=this,options=instance.options,trigger=options.trigger,apiClient=(updateTriggerFromForm(instance.context,trigger),options.apiClient),scheduledTaskId=trigger.ScheduledTaskId;apiClient.getScheduledTask(scheduledTaskId).then(function(item){options.isNewTrigger&&item.Triggers.push(trigger),apiClient.updateScheduledTaskTriggers(scheduledTaskId,item.Triggers).then(function(){instance.closeDialog()})})}function ScheduledTaskTriggerEditor(){}function getDisplayTime(ticks){var ticks=ticks/1e4,now=new Date;return now.setHours(0,0,0,0),now.setTime(now.getTime()+ticks),datetime.getDisplayTime(now)}function setTriggerIntoForm(form,trigger){form.querySelector(".selectTriggerType").value=trigger.TriggerType,form.querySelector(".selectTriggerType").dispatchEvent(new CustomEvent("change",{bubbles:!0}))}function getTriggerToAdd(form){var triggerType=form.querySelector(".selectTriggerType").value,trigger={TriggerType:triggerType},triggerType=("DailyTrigger"===triggerType?trigger.TimeOfDayTicks=form.querySelector(".selectTimeOfDay").value:"WeeklyTrigger"===triggerType?(trigger.DayOfWeek=form.querySelector(".selectDayOfWeek").value,trigger.TimeOfDayTicks=form.querySelector(".selectTimeOfDay").value):"SystemEventTrigger"===triggerType?trigger.SystemEvent=form.querySelector(".selectSystemEvent").value:"IntervalTrigger"===triggerType&&(trigger.IntervalTicks=form.querySelector(".selectInterval").value),form.querySelector(".txtTimeLimit").value||"0"),triggerType=36e9*parseFloat(triggerType);return trigger.MaxRuntimeTicks=triggerType||null,trigger}function updateTriggerFromForm(form,trigger){Object.assign(trigger,getTriggerToAdd(form))}function refreshTriggerFields(context,triggerType){"DailyTrigger"===triggerType?(context.querySelector(".fldTimeOfDay").classList.remove("hide"),context.querySelector(".fldDayOfWeek").classList.add("hide"),context.querySelector(".fldSelectSystemEvent").classList.add("hide"),context.querySelector(".fldSelectInterval").classList.add("hide"),context.querySelector(".selectTimeOfDay").setAttribute("required","required")):"WeeklyTrigger"===triggerType?(context.querySelector(".fldTimeOfDay").classList.remove("hide"),context.querySelector(".fldDayOfWeek").classList.remove("hide"),context.querySelector(".fldSelectSystemEvent").classList.add("hide"),context.querySelector(".fldSelectInterval").classList.add("hide"),context.querySelector(".selectTimeOfDay").setAttribute("required","required")):"SystemEventTrigger"===triggerType?(context.querySelector(".fldTimeOfDay").classList.add("hide"),context.querySelector(".fldDayOfWeek").classList.add("hide"),context.querySelector(".fldSelectSystemEvent").classList.remove("hide"),context.querySelector(".fldSelectInterval").classList.add("hide"),context.querySelector(".selectTimeOfDay").removeAttribute("required")):"IntervalTrigger"===triggerType?(context.querySelector(".fldTimeOfDay").classList.add("hide"),context.querySelector(".fldDayOfWeek").classList.add("hide"),context.querySelector(".fldSelectSystemEvent").classList.add("hide"),context.querySelector(".fldSelectInterval").classList.remove("hide"),context.querySelector(".selectTimeOfDay").removeAttribute("required")):"StartupTrigger"===triggerType&&(context.querySelector(".fldTimeOfDay").classList.add("hide"),context.querySelector(".fldDayOfWeek").classList.add("hide"),context.querySelector(".fldSelectSystemEvent").classList.add("hide"),context.querySelector(".fldSelectInterval").classList.add("hide"),context.querySelector(".selectTimeOfDay").removeAttribute("required"))}function fillTimeOfDay(select){var options=[];for(let i=0;i<864e5;i+=9e5)options.push({name:getDisplayTime(1e4*i),value:1e4*i});select.innerHTML=options.map(function(o){return'<option value="'+o.value+'">'+o.name+"</option>"}).join("")}function fillDayOptions(context){for(var elems=context.querySelectorAll(".selectDayOfWeek option"),date=new Date;0<date.getDay();)date.setDate(date.getDate()-1);for(let i=0,length=elems.length;i<length;i++)elems[i].innerHTML=datetime.toLocaleDateString(date,{weekday:"long"}),date.setDate(date.getDate()+1)}function onOpened(){focusManager.autoFocus(this,{skipIfNotEnabled:!0})}function fillTranslatedIntervals(context){var options=context.querySelectorAll(".selectInterval option");for(let i=0,length=options.length;i<length;i++){var option=options[i],ms=parseInt(option.getAttribute("value"));option.innerHTML=ScheduledTaskController.getDurationDisplay(ms)}}function showEditor(options){let editor=new ScheduledTaskTriggerEditor;return editor.show(options).then(function(result){return editor.destroy(),Promise.resolve(result)})}require(["flexStyles","formDialogStyle","material-icons"]),ScheduledTaskTriggerEditor.prototype.show=function(options){this.options=options;let instance=this;return require(["text!./scheduledtasks/scheduledtasktriggereditor.template.html"]).then(function(responses){var responses=responses[0],dialogOptions=(instance.hasChanges=!1,{removeOnClose:!(instance.newStreamIndex=null),scrollY:!1,autoFocus:!1}),dialogOptions=(layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="medium-tall",dialogHelper.createDialog(dialogOptions));(instance.context=dialogOptions).classList.add("formDialog"),dialogOptions.innerHTML=globalize.translateDocument(responses,"sharedcomponents"),fillTranslatedIntervals(dialogOptions);let form=dialogOptions.querySelector("form");form.addEventListener("submit",onSubmit.bind(instance));responses=options.trigger;return responses.TriggerType||(responses.TriggerType="DailyTrigger",options.isNewTrigger=!0),fillTimeOfDay(form.querySelector(".selectTimeOfDay")),fillDayOptions(form),form.querySelector(".selectTriggerType").addEventListener("change",function(){refreshTriggerFields(form,this.value)}),setTriggerIntoForm(form,responses),dialogOptions.addEventListener("opened",onOpened),dialogHelper.open(dialogOptions)})},ScheduledTaskTriggerEditor.prototype.closeDialog=function(){dialogHelper.close(this.context)},ScheduledTaskTriggerEditor.prototype.pause=function(){},ScheduledTaskTriggerEditor.prototype.destroy=function(){this.pause(),this.options=null,this.context=null};export default{show:showEditor}; |