$(document).ready( function() { performTranslation(); var oldDelList = []; var effectName = ""; var imageData = ""; var effects_editor = null; var effectPy = ""; var testrun; if(window.showOptHelp) createHintH("intro", $.i18n('effectsconfigurator_label_intro'), "intro_effc"); function updateDelEffectlist(){ var newDelList = window.serverInfo.effects; if(newDelList.length != oldDelList.length) { $('#effectsdellist').html(""); var usrEffArr = []; var sysEffArr = []; for(var idx=0; idx<newDelList.length; idx++) { if(!/^\:/.test(newDelList[idx].file)) usrEffArr.push('ext_'+newDelList[idx].name+':'+newDelList[idx].name); else sysEffArr.push('int_'+newDelList[idx].name+':'+newDelList[idx].name); } $('#effectsdellist').append(createSel(usrEffArr, $.i18n('remote_optgroup_usreffets'), true)).append(createSel(sysEffArr, $.i18n('remote_optgroup_syseffets'), true)).trigger('change'); oldDelList = newDelList; } } function triggerTestEffect() { testrun = true; var args = effects_editor.getEditor('root.args'); requestTestEffect(effectName, ":/effects/" + effectPy.slice(1), JSON.stringify(args.getValue()), imageData); }; // Specify upload handler for image files JSONEditor.defaults.options.upload = function(type, file, cbs) { var fileReader = new FileReader(); //check file if (!file.type.startsWith('image')) { imageData = ""; cbs.failure('File upload error'); // TODO clear file dialog. showInfoDialog('error', "", $.i18n('infoDialog_writeimage_error_text', file.name)); return; } fileReader.onload = function () { imageData = this.result.split(',')[1]; cbs.success(file.name); }; fileReader.readAsDataURL(file); }; $("#effectslist").off().on("change", function(event) { if(effects_editor != null) effects_editor.destroy(); for(var idx=0; idx<effects.length; idx++){ if (effects[idx].schemaContent.script == this.value) { effects_editor = createJsonEditor('editor_container', { args : effects[idx].schemaContent, },false, true, false); effectPy = ':'; effectPy += effects[idx].schemaContent.script; imageData = ""; $("#name-input").trigger("change"); $("#eff_desc").html(createEffHint($.i18n(effects[idx].schemaContent.title),$.i18n(effects[idx].schemaContent.title+'_desc'))); break; } } effects_editor.on('change',function() { if ($("#btn_cont_test").hasClass("btn-success") && effects_editor.validate().length == 0 && effectName != "") { triggerTestEffect(); } if( effects_editor.validate().length == 0 && effectName != "") { $('#btn_start_test').attr('disabled', false); !window.readOnlyMode ? $('#btn_write').attr('disabled', false) : $('#btn_write').attr('disabled', true); } else { $('#btn_start_test, #btn_write').attr('disabled', true); } }); }); // disable or enable control elements $("#name-input").on('change keyup', function(event) { effectName = $(this).val(); if ($(this).val() == '') { effects_editor.disable(); $("#eff_footer").children().attr('disabled',true); } else { effects_editor.enable(); $("#eff_footer").children().attr('disabled',false); !window.readOnlyMode ? $('#btn_write').attr('disabled', false) : $('#btn_write').attr('disabled', true); } }); // Save Effect $('#btn_write').off().on('click',function() { requestWriteEffect(effectName,effectPy,JSON.stringify(effects_editor.getValue()),imageData); $(window.hyperion).one("cmd-create-effect", function(event) { if (event.response.success) showInfoDialog('success', "", $.i18n('infoDialog_effconf_created_text', effectName)); }); if (testrun) setTimeout(requestPriorityClear,100); }); // Start test $('#btn_start_test').off().on('click',function() { triggerTestEffect(); }); // Stop test $('#btn_stop_test').off().on('click',function() { requestPriorityClear(); testrun = false; }); // Continuous test $('#btn_cont_test').off().on('click',function() { toggleClass('#btn_cont_test', "btn-success", "btn-danger"); }); // Delete Effect $('#btn_delete').off().on('click',function() { var name = $("#effectsdellist").val().split("_")[1]; requestDeleteEffect(name); $(window.hyperion).one("cmd-delete-effect", function(event) { if (event.response.success) showInfoDialog('success', "", $.i18n('infoDialog_effconf_deleted_text', name)); }); }); // disable or enable Delete Effect Button $('#effectsdellist').off().on('change', function(){ $(this).val() == null ? $('#btn_edit, #btn_delete').prop('disabled',true) : ""; $(this).val().startsWith("int_") ? $('#btn_delete').prop('disabled',true) : $('#btn_delete').prop('disabled',false); }); // Load Effect $('#btn_edit').off().on('click', function(){ var name = $("#effectsdellist").val().replace("ext_",""); if(name.startsWith("int_")) { name = name.split("_").pop(); $("#name-input").val("My Modded Effect"); } else { name = name.split("_").pop(); $("#name-input").val(name); } var efx = window.serverInfo.effects; for(var i = 0; i<efx.length; i++) { if(efx[i].name == name) { var py = efx[i].script.split("/").pop(); $("#effectslist").val(py).trigger("change"); for(var key in efx[i].args) { var ed = effects_editor.getEditor('root.args.'+[key]); if(ed) ed.setValue(efx[i].args[key]); } break; } } }); //create basic effect list var effects = window.serverSchema.properties.effectSchemas.internal; for(var idx=0; idx<effects.length; idx++) { $("#effectslist").append(createSelOpt(effects[idx].schemaContent.script, $.i18n(effects[idx].schemaContent.title))); } $("#effectslist").trigger("change"); updateDelEffectlist(); //interval update $(window.hyperion).on("cmd-effects-update", function(event){ window.serverInfo.effects = event.response.data.effects updateDelEffectlist(); }); removeOverlay(); });