1 line
No EOL
6.4 KiB
JavaScript
1 line
No EOL
6.4 KiB
JavaScript
import dialogHelper from"./../dialoghelper/dialoghelper.js";import layoutManager from"./../layoutmanager.js";import globalize from"./../common/globalize.js";import userSettings from"./../common/usersettings/usersettings.js";import"./../emby-elements/emby-checkbox/emby-checkbox.js";import"./../emby-elements/emby-select/emby-select.js";import"./../emby-elements/emby-button/emby-button.js";import"./../emby-elements/emby-button/paper-icon-button-light.js";import"./../emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js";let supportsCssVariables=CSS.supports("color","var(--fake-var)"),supportsCalc=CSS.supports("width","min(45.2%,calc(100% - .65em))"),supportsMin=CSS.supports("width","min(10em, 5vw)");function onSubmit(e){return e.preventDefault(),!1}function getViewTypes(column){return(column.viewTypes||"cards,datagrid").replace("cards","primary,banner,disc,logo,thumb")}function initEditor(context,options){context.querySelector("form").addEventListener("submit",onSubmit);var visibleSettings=options.visibleSettings||[],fieldsSection=context.querySelector(".showFieldsSection"),availableFields=options.availableFields||[];let html="";for(let i=0,length=availableFields.length;i<length;i++){var column=availableFields[i];html=(html=html+('<label class="hide viewField" data-field="'+column.id+'" data-includeviewtype="'+getViewTypes(column)+'">')+'<input is="emby-checkbox" type="checkbox" class="chkField" />')+("<span>"+column.name+"</span>")+"</label>"}fieldsSection.querySelector(".checkboxList").innerHTML=html;var settingElements=context.querySelectorAll(".viewSetting");for(let i=0,length=settingElements.length;i<length;i++)visibleSettings.includes(settingElements[i].getAttribute("data-settingname"))?settingElements[i].classList.remove("hide"):settingElements[i].classList.add("hide");var selectImageType=context.querySelector(".selectImageType"),viewOptionsToRemove=[];for(let i=0,length=selectImageType.options.length;i<length;i++)options.viewOptions.includes(selectImageType.options[i].value)||viewOptionsToRemove.push(selectImageType.options[i]);for(let i=0,length=viewOptionsToRemove.length;i<length;i++)viewOptionsToRemove[i].remove()}function selectEnabledFields(context,settings){var elems=context.querySelectorAll(".chkField"),fields=settings.fields||[];for(let i=0,length=elems.length;i<length;i++)elems[i].checked=fields.includes(elems[i].closest(".viewField").getAttribute("data-field"))}function setCardSizeByName(context,cardSize){"default"===cardSize&&(cardSize=""),context.querySelector(".selectCardSize").value=cardSize}function setFieldValues(context,settings){var elems=context.querySelectorAll(".viewSetting-checkboxContainer");for(let i=0,length=elems.length;i<length;i++)elems[i].querySelector("input").checked=settings[elems[i].getAttribute("data-settingname")]||!1;context.querySelector(".selectImageType").value=settings.imageType||"primary",setCardSizeByName(context,settings.cardSize||"default"),selectEnabledFields(context,settings)}function saveFields(context,settingsKey){var elems=context.querySelectorAll(".viewField:not(.hide) .chkField:checked"),fields=[];for(let i=0,length=elems.length;i<length;i++)fields.push(elems[i].closest(".viewField").getAttribute("data-field"));fields.length||fields.push("None"),userSettings.set(settingsKey+"-fields",fields.join(","),!1)}function saveValues(context,settingsKey){var elems=context.querySelectorAll(".viewSetting-checkboxContainer");for(let i=0,length=elems.length;i<length;i++)userSettings.set(settingsKey+"-"+elems[i].getAttribute("data-settingname"),elems[i].querySelector("input").checked);userSettings.set(settingsKey+"-imageType",context.querySelector(".selectImageType").value,!1),userSettings.set(settingsKey+"-cardSize",context.querySelector(".selectCardSize").value,!1),saveFields(context,settingsKey)}function mapFieldToId(field){return field.id}function showOrHideFieldsIfAllowed(context,availableFields,currentViewType){var fields=context.querySelectorAll(".viewField");let anyVisible;var availableFieldIds=availableFields.map(mapFieldToId);for(let i=0,length=fields.length;i<length;i++){var field=fields[i],viewTypes=field.getAttribute("data-includeviewtype").split(","),fieldId=field.getAttribute("data-field");viewTypes.includes(currentViewType)&&availableFieldIds.includes(fieldId)?(field.classList.remove("hide"),anyVisible=!0):field.classList.add("hide")}availableFields=context.querySelector(".showFieldsSection");anyVisible?availableFields.classList.remove("hide"):availableFields.classList.add("hide")}function enableDefaultFields(context,defaultFields){var elems=context.querySelectorAll(".viewField:not(.hide) .chkField");for(let i=0,length=elems.length;i<length;i++)elems[i].checked=defaultFields.includes(elems[i].closest(".viewField").getAttribute("data-field"))}function ViewSettings(){}require(["flexStyles","formDialogStyle","material-icons"]),ViewSettings.prototype.show=function(options){return require(["text!./modules/viewsettings/viewsettings.template.html"]).then(function(responses){var responses=responses[0],dialogOptions={removeOnClose:!0,scrollY:!1,offsetTop:2,positionTo:options.positionTo,positionY:options.positionY};layoutManager.tv&&(dialogOptions.size="fullscreen");let dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");dialogOptions=(dialogOptions=(dialogOptions='<div class="formDialogHeader"><button type="button" is="emby-dialogclosebutton" closetype="done"></button>')+'<h3 class="formDialogHeaderTitle">'+globalize.translate("Settings")+"</h3>")+"</div>"+responses;dlg.innerHTML=globalize.translateDocument(dialogOptions,"sharedcomponents"),initEditor(dlg,options),setFieldValues(dlg,options.settings),dlg.querySelector(".selectImageType").addEventListener("change",function(e){supportsCalc&&supportsMin&&supportsCssVariables&&"datagrid"!==this.value&&"list"!==this.value?dlg.querySelector(".fldCardSize").classList.remove("hide"):dlg.querySelector(".fldCardSize").classList.add("hide"),showOrHideFieldsIfAllowed(dlg,options.availableFields,this.value),!1!==e.detail?.resetFields&&enableDefaultFields(dlg,"datagrid"===this.value?options.settings.tableDefaultFields:options.settings.defaultFields)});let submitted;return dlg.querySelector(".selectImageType").dispatchEvent(new CustomEvent("change",{detail:{resetFields:!1}})),dlg.querySelector("form").addEventListener("change",function(){submitted=!0,options.onChange&&(saveValues(dlg,options.settingsKey),options.onChange())}),dialogHelper.open(dlg).then(function(){return submitted?Promise.resolve():Promise.reject()})})};export default ViewSettings; |