cronapp-framework-js 3.2.0-SP.4 → 3.2.0-SP.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,7 +39,7 @@ maskDirectiveAsDate.$inject=["$compile","$translate","$parse"],maskDirectiveMask
39
39
  <input id="${l}">
40
40
  <span id="${s}" class="k-icon k-i-close" style="margin-left: 5px;"></span>
41
41
  </li>
42
- </ul>`);t.html(i),t.append(c),$compile(i)(t.scope());let p=$(`#${r}`).kendoContextMenu({target:i,filter:"td",close:t=>{closeContextMenu||t.preventDefault()},open:t=>{let e=t.target,n=$(e).parent()[0],a=i.data("kendoGrid"),o=t.item.id,d=e.innerText;if(d.length&&"\u200B"!==d)$(t.item).find(`#${l}`).val(d),closeContextMenu=!1;else{let e=()=>new Promise((e,t)=>{let n=setInterval(()=>{$(`#${r}`).is(":visible")&&(clearInterval(n),$(`#${r}`).hide())})});e()}}}).data("kendoContextMenu");$(`#${s}`).on("click",t=>{closeContextMenu=!0,p.close()})}}}]).directive("src",["$compile",function(e){return{restrict:"A",link:function(e,t,n,a){"IMG"===t[0].tagName&&cronapi.internal.isBase64(n.src)&&setTimeout(()=>$(t[0]).attr("src","data:image/png;base64,"+n.src))}}}]).directive("crnSkin",["$compile","$http",function(e,t){return{restrict:"A",link:function(e,n,a,i){a.crnSkin&&t.get(a.crnSkin,{cache:!0}).then(e=>{if(e.data){let t=e.data;t.startsWith(":root{")&&(t=t.substring(6)),t.endsWith("}")&&(t=t.substring(0,t.length-2)),$element=$(n);let a=$element.find("[data-role=\"grid\"]");a.length&&($element=a);let i=$element.attr("style")||"";i&&(i+=", "),i+=t,$element.attr("style",i)}})}}}]).directive("cronTreeView",["$compile","$translate",function($compile,$translate){return{restrict:"E",replace:!0,require:"ngModel",scope:!0,getDataSource:function(options,scope,ngModelCtrl){let id=options.dataSourceScreen.schema.filter(e=>!0===e.key)[0].name,schema={model:{id:id,hasChildren:function(e){return e.hasChildren}}},getAllParent=function(e,t,n,a,i){t[schema.model.id]&&n.push(t[schema.model.id]);let o=`${e.entity}?$filter=${schema.model.id} eq '${t[options.selfRelationshipField]}'&$format=json&$inlinecount=allpages`;t[options.selfRelationshipField]?$.ajax({url:o,success:t=>{getAllParent(e,t.d.results[0],n,a,i)},beforeSend:e=>{window.isUsingCookie()||e.setRequestHeader("X-AUTH-TOKEN",cronapi.util.getUserToken())},error:()=>i(),type:"GET"}):a(n)},reloadAndExpand=function(e){let t=()=>{let t=new Promise((t,n)=>{getAllParent(this.options.cronappDatasource,e,[],t,n)});t.then(e=>{this.options.kendoObj.expandPath(e.reverse())})};this.options.kendoObj.dataSource.bind("requestEnd",t),this.options.kendoObj.dataSource.read()},helperDirective=this,waitingPromise=!1,datasource=new kendo.data.HierarchicalDataSource({transport:{push:async function(e){let t=await this.options.cronappDatasource();!helperDirective.dataSourceEventsPush&&t&&(helperDirective.dataSourceEventsPush={create:function(e){reloadAndExpand.bind(this)(e)}.bind(this),update:function(e){reloadAndExpand.bind(this)(e)}.bind(this),delete:function(e){reloadAndExpand.bind(this)(e),ngModelCtrl.$setViewValue(null)}.bind(this),overRideRefresh:function(e){this.options.fromRefresh=!0,this.options.kendoObj.dataSource.read(),ngModelCtrl.$setViewValue(null)}.bind(this),read:function(e){waitingPromise||(this.options.kendoObj.dataSource.read(),ngModelCtrl.$setViewValue(null))}.bind(this)},t.addDataSourceEvents(helperDirective.dataSourceEventsPush))},read:async function(e){let cronappDatasource=await this.options.cronappDatasource(),conditionIsEmpty=e=>{let t=!0;if(e){let n=JSON.parse(e);n.expression&&n.expression.args&&n.expression.args.forEach(e=>{""!==e.right&&"''"!==e.right&&e.right!==void 0&&(t=!1)})}return t};for(key in e.data)null==e.data[key]&&delete e.data[key];let logicFilter={filter:{logic:"and",filters:[]}};for(let t in e.data){let n={field:options.selfRelationshipField,operator:"eq",value:e.data[t]};logicFilter.filter.filters.push(n)}let condition=cronappDatasource.condition,conditionEmpty=conditionIsEmpty(condition),paramsOData={$inlinecount:"allpages",$format:"json",$filter:`${options.selfRelationshipField} eq null`};logicFilter.filter.filters.length?(cronappDatasource.condition="",paramsOData=kendo.data.transports.odata.parameterMap(logicFilter,"read")):this.options.fromRefresh&&(this.options.fromRefresh=!1,!conditionEmpty&&(cronappDatasource.cleanup(),paramsOData={$inlinecount:"allpages",$format:"json"})),cronappDatasource.rowsPerPage=e.data.pageSize,cronappDatasource.offset=e.data.page-1;let fetchData={};fetchData.params=paramsOData,helperKendoDs=this,cronappDatasource.fetch(fetchData,{success:function(data){let all=data.map(item=>{let odataUrl=`${this.entity}/$count?$filter=${options.selfRelationshipField} eq '${item[schema.model.id]}'`;return new Promise((resolve,reject)=>{$.ajax({url:odataUrl,success:count=>{item.hasChildren=0<eval(count),resolve()},beforeSend:e=>{window.isUsingCookie()||e.setRequestHeader("X-AUTH-TOKEN",cronapi.util.getUserToken())},error:()=>reject(),type:"GET"})})});waitingPromise=!0,Promise.all(all).then(()=>{e.success(data),waitingPromise=!1})},canceled:function(t){e.error("canceled","canceled","canceled")}},!0),condition&&(cronappDatasource.condition=condition)},options:{fromRead:!1,cronappDatasource:async()=>await app.kendoHelper.getCorrectlyDSPromise(options.dataSourceScreen.name,scope)}},schema:schema});return datasource},link:function(t,n,a,i){let o=$("<div></div>"),d=JSON.parse(a.options),r=this,l=function(e,t){t=e.getKeyValues(t);var n=Object.keys(t);return 1===n.length&&(t=t[n]),t},s=o.kendoTreeView({dataSource:r.getDataSource(d,t,i),dataTextField:d.textField,dataImageUrlField:d.imageUrlField,change:async function(n){let e=this.dataItem(this.select()),a=await this.dataSource.transport.options.cronappDatasource();t.safeApply(a.goTo(e)),d.fieldType&&"key"===d.fieldType&&(a.active=l(a,a.active)),i.$setViewValue(a.active)}}).data("kendoTreeView");s.dataSource.transport.options.kendoObj=s,n.html(o),$compile(o)(n.scope())}}}]).directive("cronSelect",["$compile",function(e){return{restrict:"E",replace:!0,require:"ngModel",link:async function(t,n,a,i){var o={};try{o=JSON.parse(a.options)}catch(e){console.log("ComboBox invalid configuration! "+e)}var d=a.id?" id=\""+a.id+"\"":"",e=a.name?" name=\""+a.name+"\"":"",r=n.parent();$(r).append("<input style=\"width: 100%;\" "+d+e+" class=\"cronSelect\"/>");var l=$(r).find("input.cronSelect"),s=await app.kendoHelper.getConfigCombobox(o,t);s.close=a.ngClose?function(){t.$eval(a.ngClose)}:void 0,s.dataBound=a.ngDataBound?function(){t.$eval(a.ngDataBound)}:void 0,s.filtering=a.ngFiltering?function(){t.$eval(a.ngFiltering)}:void 0,s.select=a.ngSelect?function(n){t.safeApply(()=>{var e={selected:n.dataItem,selectedKey:n.dataItem[s.dataValueField],selectedValue:n.dataItem[s.dataTextField]};t.$eval(a.ngSelect,e)})}:void 0,s.change=a.ngChange?function(n){var e=this.dataItem();t.safeApply(()=>{a.ngModel&&g.$$parse(a.ngModel).assign(t,this.value(),a.ngModel.split("."));var n={selected:e,selectedKey:e[s.dataValueField],selectedValue:e[s.dataTextField]};t.$eval(a.ngChange,n)})}:function(n){t.safeApply(()=>{a.ngModel&&g.$$parse(a.ngModel).assign(t,this.value(),a.ngModel.split("."))})},s.messages={noData:a.noResultsMessage?a.noResultsMessage:"NO DATA FOUND"};var c;if(!0===o.dontAllowOutsideList){c=l.kendoDropDownList(s).data("kendoDropDownList");let e=r.find("span").first();e.on("focus",()=>cronapi.internal.selectContent(e.find(".k-input")[0]))}else c=l.kendoComboBox(s).data("kendoComboBox");$(n).remove();let p,u=()=>{if(p=$(r).find(".k-input.cronSelect"),p.length){p.attr("ng-required",a.ngRequired),"true"===a.ngRequired&&p.attr("required","required"),p.attr("ng-model",a.ngModel),p.attr("id",a.id),p.attr("validationmessage",a.validationmessage);let e=p.parent();p.on("change",()=>{"true"===a.ngRequired&&(0==p.val().length?(e.addClass("ng-invalid-required"),p.addClass("ng-invalid-required")):(e.removeClass("ng-invalid-required"),p.removeClass("ng-invalid-required")))})}else setTimeout(()=>u())};u(),t.$watch(a.cronDisabled,function(e){c.enable(!e)});var m=t,g=i;i&&(i.$formatters.push(function(e){var t="";return("boolean"==typeof e||e)&&(t=e),c.value(t),t}),i.$parsers.push(function(e){return p&&p.trigger("change"),"boolean"==typeof e||e?e:null}))}}}]).directive("cronDynamicSelect",["$compile","$timeout","$parse","$translate","$log",function($compile,$timeout,$parse,$translate,$log){return{restrict:"E",replace:!0,require:"?ngModel",goTo:function(e,t,n){if(dataSourceScreen=$(t).data("dataSourceScreen"),null!=dataSourceScreen)return dataSourceScreen.goTo(n,!0)},compileAngular:function(e,t){var n=$(t),a=angular.element(n);$compile(a)(e)},getActive:function(active){if(active&&active.indexOf(".active."))try{return eval(active.substr(0,active.indexOf(".active.")))}catch(t){}return null},getFieldText:function(e,t){if(e&&e.indexOf(".active.")&&t.dataTextField)try{var n=e.substr(e.indexOf(".active.")+8);return n+"_"+t.dataTextField}catch(t){}return null},isDefaultEntity:function(e){if(e&&e.entity){var t=e.entity.split("/");if(t&&0<t.length)return-1==t.pop().indexOf("query")}return!1},getModelParent:function(e){if("string"==typeof e&&9<e.length&&0<e.indexOf("|raw}}")){e=e.trim();var t=e.substr(e.indexOf("{{")+2);return t=t.substr(0,t.indexOf("|raw}}")),t.trim()}return null},toComboType:function(e,t,n,a){let i=t.find("span").first();switch(i.on("focus",()=>cronapi.internal.selectContent(i.find("span.ng-scope")[0])),n.type){case"autoComplete":let t=["Tab","Shift","CapsLock","Control","Alt","Escape","PageDown","PageUp","Backspace","ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Delete","Insert","Enter"," "],o=["Tab","Shift","CapsLock","Control","Alt","Escape","PageDown","PageUp","ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Insert"];i.attr("contenteditable","true");let d=$(`input[aria-owns=${e.id}_listbox]`),r=d.parent(),l=$(`#${e.id}-list`);r.hide(),i.on("keyup",n=>{document.activeElement!==i[0]||o.includes(n.originalEvent.key)||d.val(i.find("span.ng-scope").text()),i.hasClass("k-state-border-down")||t.includes(n.originalEvent.key)||i.trigger("click")}),i.on("focusout",()=>{l.is(":visible")||s()}),i.on("click",()=>c());let s=()=>{i.find("span.ng-scope").text(a.dataItem()[n.dataTextField]),a.search()},c=()=>{let e=setInterval(()=>{l.is(":visible")||(clearInterval(e),document.activeElement!==i[0]&&s())})};break;default:i.on("keydown",t=>{if("ArrowDown"===t.originalEvent.key||"ArrowUp"===t.originalEvent.key)return t.stopImmediatePropagation(),void i.trigger("click")})}},link:async function(scope,element,attrs,ngModelCtrl){function forceEmptyLineSelected(){var e=combobox.list.find(".k-list-optionlabel");e&&e.length&&e.addClass("k-state-selected k-state-focused"),$log.debug("Linha vazia marcada como ativa:",e)}await cronapi.internal.skipIterationLoop();var modelGetter=$parse(attrs.ngModel),modelSetter=(e,t)=>{$log.debug("modelSetter | "+attrs.id+" | "+t),modelGetter.assign(e,t)},select={},self=this,parentDS={},textField=null;try{select=JSON.parse(attrs.options),parentDS=this.getActive(attrs.ngModel),textField=this.getFieldText(attrs.ngModel,select)}catch(e){console.log("DynamicComboBox invalid configuration! "+e)}let lastFieldInModel=attrs.ngModel.split(".");lastFieldInModel=lastFieldInModel[lastFieldInModel.length-1];let modelForTextField=attrs.ngModel.replace(lastFieldInModel,textField),modelTextFieldGetter=$parse(modelForTextField),modelTextFieldSetter=modelTextFieldGetter.assign;var options=await app.kendoHelper.getConfigCombobox(select,scope);options.autoBind=!0;var dataSourceScreen=null;try{delete options.dataSource.schema.model.id,dataSourceScreen=eval(select.dataSourceScreen.name),dataSourceScreen.rowsPerPage=dataSourceScreen.rowsPerPage?dataSourceScreen.rowsPerPage:100,options.dataSource.transport.origin="combobox"}catch(t){}var _scope=scope,_goTo=this.goTo,_compileAngular=this.compileAngular;options.virtual={},options.virtual.itemHeight=26;let lastValueMapper;if(options.dataSource.pageSize&&0<options.dataSource.pageSize){options.height=options.dataSource.pageSize*options.virtual.itemHeight/4,options.virtual.mapValueTo="dataItem";var _options=options;let e=()=>new Promise(e=>{let t;_options.combobox?e():t=setInterval(()=>{_options.combobox&&(clearInterval(t),e())})});options.virtual.valueMapper=async function(t){await e(),$log.debug(`valueMapper | ${attrs.id} | ${t.value}`),lastValueMapper&&!1===lastValueMapper.completed&&(lastValueMapper.canceled=!0),lastValueMapper=t;const{optionLabel:n,dataValueField:a}=_options.combobox.options,i=_options.dataSource.transport.options.cronappDatasource;return t.canceled||!t.value||n[a]&&""===t.value?t.success(null):void(_options.combobox.isEvaluating=!0,i.findObj([t.value],!1,e=>{t.canceled||(t.success(Array.isArray(e)?e[0]:e),$log.debug(`valueMapper.success | ${attrs.id} | ${e}`))},()=>t.success(null),[a]),t.completed=_options.combobox.isEvaluating=!1)}}options.messages={noData:attrs.noResultsMessage?attrs.noResultsMessage:"NO DATA FOUND"},options.change=attrs.ngChange?function(t){var e=this.dataItem();scope.safeApply(()=>{var t={selected:e,selectedKey:e?e[options.dataValueField]:"",selectedValue:e?e[options.dataTextField]:""};scope.$eval(attrs.ngChange,t)})}:void 0,options.close=attrs.ngClose?function(){scope.$eval(attrs.ngClose)}:void 0,options.dataBound=function(){scope.$$phase||scope.$root.$$phase||_compileAngular(scope,combobox.element[0])},options.filtering=attrs.ngFiltering?function(){scope.$eval(attrs.ngFiltering)}:void 0,options.open=function(t){const e=combobox.close;combobox.close=()=>{},setTimeout(()=>{combobox.close=e},500),dataSourceScreen.fetched&&dataSourceScreen.lastLoadedTime===combobox.dataSource.lastLoadedTime||(combobox.options.firstLazyRead=!0,combobox.dataSource.read(),combobox.dataSource.lastLoadedTime=dataSourceScreen.lastLoadedTime);let n={[combobox.options.dataValueField]:"",[combobox.options.dataTextField]:""};combobox.dataSource.data().some(e=>""===e[combobox.options.dataValueField])||combobox.dataSource.add(n),forceEmptyLineSelected()},options.select=attrs.ngSelect?function(t){scope.safeApply(()=>{var e={selected:t.dataItem,selectedKey:t.dataItem[options.dataValueField],selectedValue:t.dataItem[options.dataTextField]};scope.$eval(attrs.ngSelect,e)})}:void 0;var parent=element.parent(),id=attrs.id?" id=\""+attrs.id+"\"":"",name=attrs.name?" name=\""+attrs.name+"\"":"",validationmessage=attrs.validationmessage?" validationmessage=\""+attrs.validationmessage+"\"":"",inputSelect=$("<input style=\"width: 100%;\""+id+name+validationmessage+" class=\"cronDynamicSelect\" ng-model=\""+attrs.ngModel+"\"/>");attrs.$observe("required",function(e){inputSelect.prop("required",e)}),$(parent).append(inputSelect);var $element=$(parent).find("input.cronDynamicSelect");dataSourceScreen&&(dataSourceScreen.__ignoreFirstFetch=!0);var combobox=$element.kendoDropDownList(options).data("kendoDropDownList");combobox.isEvaluating=!1;var scrolling=!1;combobox.bind("open",function(){scrolling||(scrolling=!0,setTimeout(()=>{scrolling=!1},300),forceEmptyLineSelected())}),combobox.bind("change",function(){if(!combobox.isEvaluating){combobox.isEvaluating=!0;try{let e=combobox.dataItem();e&&""===e[options.dataValueField]?(modelSetter(scope,""),modelTextFieldSetter(scope,"")):(modelSetter(scope,e[options.dataValueField]),modelTextFieldSetter(scope,e[options.dataTextField])),forceEmptyLineSelected()}finally{combobox.isEvaluating=!1}}}),options.combobox=combobox,$(combobox.element[0]).attr("tabindex","-1"),null!=dataSourceScreen&&null!=dataSourceScreen&&$(combobox).data("dataSourceScreen",dataSourceScreen),(attrs.ngRequired||attrs.required)&&($(combobox.element[0]).attr("style",""),$(combobox.element[0]).attr("class","cron-select-offscreen")),$(combobox.wrapper).children(".k-dropdown-wrap").children(".k-select").before(inputSelect),this.toComboType(attrs,parent,select,combobox);let forcedRefreshModelAt,canRefresh=()=>{let e=performance.now();return!forcedRefreshModelAt||2e3<e-forcedRefreshModelAt};var forceChangeModel=async function(e){$log.debug("forceChangeModel | "+attrs.id+" | "+e),void 0===e&&(e=null);let t=combobox.value();t=void 0!==t&&null!==t?t.trim():t;let n=void 0!==e&&null!==e?(""+e).trim():e;n!==t&&(await combobox.value(e)),select.changeCursor&&scope.safeApply(()=>{null==e||null==e?(dataSourceScreen.active={},dataSourceScreen.cursor=-1,modelSetter(_scope,null)):_goTo(_scope,combobox,combobox.dataItem())})};let returnTypedValue=e=>{if(dataSourceScreen.schema){let t=dataSourceScreen.schema.find(e=>e.name===options.dataValueField);t&&"String"!==t.type&&(e=parseFloat(e)||e)}return e};var defineInitialValue=function(){if(!combobox.definingInitialValue&&!combobox.isEvaluating){var e=combobox.value(),t=null;e&&""!==e||(t="",modelSetter(scope,t),forceEmptyLineSelected())}},_ngModelCtrl=ngModelCtrl;null!=dataSourceScreen&&null!=dataSourceScreen&&dataSourceScreen.addDataSourceEvents({overRideRefresh:function(){dataSourceScreen.fetched=!1,dataSourceScreen.cleanup(),canRefresh()&&defineInitialValue()}});var _isDefaultEntity=this.isDefaultEntity;if($element.on("change",function(e){let t=function(){return combobox.isEvaluating?void setTimeout(t,100):void _scope.$apply(function(){let e=combobox.dataItem();e&&""!==e[select.dataValueField]?(modelSetter(_scope,e[select.dataValueField]),modelTextFieldSetter(_scope,e[select.dataTextField])):(combobox.value(""),modelSetter(_scope,""),modelTextFieldSetter(_scope,"")),_compileAngular(scope,options.combobox.element[0]),options?.combobox?.span&&_compileAngular(scope,options.combobox.span)})};t()}),ngModelCtrl&&(ngModelCtrl.$formatters.push(function(e){return $log.debug("$formatters | "+attrs.id+" | "+e),(void 0===e||""===e&&void 0===select.optionLabelValue)&&(e="",modelSetter(scope,e)),forceChangeModel(e),e}),ngModelCtrl.$parsers.push(function(e){return e&&""!==e?e:""}),ngModelCtrl.$parsers.push(function(e){if($log.debug("$parsers | "+attrs.id+" | "+e),"boolean"==typeof e||e)if(!0===combobox.options.valuePrimitive){if("string"==typeof e)return e;if("boolean"==typeof e[select.dataValueField]||e[select.dataValueField])return e[select.dataValueField]}else try{return objectClone(e,combobox.dataSource.options.schema.model.fields)}catch(t){}return null})),!select.initValue)select.initValue=null;else if(select.initValue.startsWith("params.")){var type=combobox.dataSource.options.schema.model.fields[select.dataValueField].type;select.initValue=scope.$eval(select.initValue),"string"!=type&&(select.initValue=dataSourceScreen.normalizeValue(select.initValue,!0))}else select.initValue=scope.$eval(select.initValue);null!==select.initValue&&""!==select.initValue&&select.initValue||(combobox.value(""),modelSetter(_scope,"")),combobox.dataSource.transport&&combobox.dataSource.transport.options&&(combobox.dataSource.transport.options.combobox=combobox,combobox.dataSource.transport.options.$compile=$compile,combobox.dataSource.transport.options.scope=scope,combobox.dataSource.transport.options.ngModelCtrl=ngModelCtrl,combobox.dataSource.transport.options.initRead=!0,null!=select.initValue&&null!=select.initValue?(setTimeout(()=>{modelSetter(_scope,select.initValue)},0),combobox.options.lazyFirstInitialValue=!0):select.firstValue&&defineInitialValue()),$(combobox.span).on("DOMSubtreeModified",function(t){_compileAngular(scope,t.target)}),$(combobox.ul).on("DOMSubtreeModified",function(t){$timeout(function(){_compileAngular(scope,t.target)})}),_compileAngular(scope,combobox.span),_compileAngular(scope,combobox.ul),$(element).remove(),scope.$watch(attrs.cronDisabled,function(e){combobox.enable(!e)}),$("[aria-owns='"+`${attrs.id}_listbox`+"']").attr("aria-label",$translate.instant("template.crud.search")),ngModelCtrl.$modelValue&&(_scope.cronapi.internal.forceRefreshNgModel(attrs.ngModel,ngModelCtrl.$modelValue),forcedRefreshModelAt=performance.now())}}}]).directive("cronMultiSelect",["$compile","$parse",function($compile,$parse){return{restrict:"E",require:"ngModel",link:async function(scope,element,attrs,ngModelCtrl){var modelGetter=$parse(attrs.ngModel),modelSetter=modelGetter.assign,model=attrs.ngModel;let jumpThread=()=>new Promise(e=>{let t=setInterval(()=>{clearInterval(t),e()})});var _self=this,select={};try{select=JSON.parse(attrs.options)}catch(e){console.log("MultiSelect invalid configuration! "+e)}var _scope=scope,_ngModelCtrl=ngModelCtrl;if(null!=select.relationDataSource)try{eval(select.relationDataSource.name)}catch(t){await jumpThread()}var relactionDS={relationDataSource:null==select.relationDataSource?null:eval(select.relationDataSource.name),relationField:null==select.relationField?"":select.relationField},options=void 0;try{eval(select.dataSourceScreen.name),options=await app.kendoHelper.getConfigCombobox(select,scope)}catch(t){await jumpThread(),options=await app.kendoHelper.getConfigCombobox(select,scope)}try{delete options.dataSource.schema.model.id}catch(t){}var parent=element.parent(),id=attrs.id?" id=\""+attrs.id+"\"":"",name=attrs.name?" name=\""+attrs.name+"\"":"";let required=attrs.ngRequired&&eval(attrs.ngRequired)?`required="required"`:"";$(parent).append(`<div style="width: 100%;"> <input style="width: 100%;" ${id} ${name} ${required} class="cronMultiSelect" ng-model="${attrs.ngModel}"/> </div>`),$(parent).find("label").attr("for",attrs.id);let $inp=$(`${attrs.id}`);$compile($inp)(scope);var $element=$(parent).find("input.cronMultiSelect");$(element).remove();var evtSelect,deselect;options.deselect=function(e){var dataItem=e.dataItem,relation=this.relationDataSource,dataValueField=e.sender.options.dataValueField,selectItem=null;if(relation&&relation.data&&dataItem[dataValueField]){for(key in relation.data){var item=relation.data[key];if(item[this.relationField]&&item[this.relationField]==dataItem[dataValueField]){selectItem=item;break}}null!=selectItem&&($(combobox).data("silent",!0),this.relationDataSource.removeSilent(selectItem,null,null))}else model&&_scope.$apply(function(){try{var data=eval("_scope."+model);data=data.filter(e=>"object"==typeof e?e[dataValueField]!==dataItem[dataValueField]:e!==dataItem[dataValueField]),$(combobox).data("silent",!0),modelSetter(_scope,data)}catch(t){}});deselect&&deselect()}.bind(relactionDS),options.select=function(e){var dataItem=e.dataItem,dataValueField=e.sender.options.dataValueField,combobox=e.sender;if(this.relationDataSource&&dataItem[dataValueField]){var obj={};obj[this.relationField]=dataItem[dataValueField],$(combobox).data("silent",!0),this.relationDataSource.startInserting(obj,function(e){this.postSilent()}.bind(this.relationDataSource))}else model&&_scope.$apply(function(){try{var data=eval("_scope."+model);if(data||(data=[]),select.fieldType&&"key"===select.fieldType){var keyValues=combobox.dataSource.options.transport.options.cronappDatasource.getKeyValues(dataItem),keys=Object.keys(keyValues);1===keys.length&&(keyValues=keyValues[keys]),data.push(keyValues)}else data.push(objectClone(dataItem,combobox.dataSource.options.schema.model.fields));$(combobox).data("silent",!0),modelSetter(_scope,data)}catch(t){}});evtSelect&&evtSelect()}.bind(relactionDS);var hideSelectedItem="true"==attrs.crnHideSelectedItem,onSelectedItem=()=>{hideSelectedItem&&combobox.list&&0<combobox.list.length&&(combobox.list.find(".k-item").show(),combobox.list.find(".k-item.k-state-selected").hide())};options.change=attrs.ngChange?function(){_scope.$eval(attrs.ngChange)}:void 0,options.close=attrs.ngClose?function(){_scope.$eval(attrs.ngClose)}:void 0,options.dataBound=attrs.ngDatabound?function(){_scope.$eval(attrs.ngDatabound)}:void 0,options.filtering=attrs.ngFiltering?function(){_scope.$eval(attrs.ngFiltering)}:void 0,options.open=attrs.ngOpen?function(){_scope.$eval(attrs.ngOpen),onSelectedItem()}:onSelectedItem,options.cascade=attrs.ngCascade?function(){_scope.$eval(attrs.ngCascade)}:void 0,evtSelect=attrs.ngSelect?function(){_scope.$eval(attrs.ngSelect)}:void 0,deselect=attrs.ngDeselect?function(){_scope.$eval(attrs.ngDeselect)}:void 0;var combobox=$element.kendoMultiSelect(options).data("kendoMultiSelect");scope.$watch(attrs.cronDisabled,function(e){combobox.enable(!e)}),app.kendoHelper.receivePushData(combobox),$("[aria-describedby='"+`${attrs.id}_taglist`+"']").attr("id",`${attrs.id}-container`),attrs.crnReadonly&&_scope.$watch(attrs.crnReadonly,(e,t)=>{combobox.readonly(_scope.$eval(attrs.crnReadonly))});var convertArray=function(e){var t=[];if(e)for(var n in e)t.push(e[n][relactionDS.relationField]);return t};scope.$watchCollection(function(){return ngModelCtrl.$modelValue},function(value,old){var silent=$(combobox).data("silent");value&&0===value.length?($(`#${attrs.id}`).addClass("ng-empty"),attrs.ngRequired&&eval(attrs.ngRequired)&&$(`#${attrs.id}`).attr("required","required")):($(`#${attrs.id}`).removeClass("ng-empty"),$(`#${attrs.id}`).removeAttr("required")),$(combobox).data("silent",!1),silent||JSON.stringify(value)===JSON.stringify(old)||(relactionDS.relationDataSource&&relactionDS.relationField?combobox.value(convertArray(value)):combobox.value(value))})}}}]).directive("cronAutoComplete",["$compile",function(e){return{restrict:"E",require:"ngModel",link:async function(t,n,a,i){var o={};try{o=JSON.parse(a.options)}catch(e){console.log("AutoComplete invalid configuration! "+e)}try{delete d.dataSource.schema.model.id}catch(t){}var d=await app.kendoHelper.getConfigCombobox(o,t);d.change=a.ngChange?function(){t.$eval(a.ngChange)}:void 0,d.close=a.ngClose?function(){t.$eval(a.ngClose)}:void 0,d.dataBound=a.ngDataBound?function(){t.$eval(a.ngDataBound)}:void 0,d.filtering=a.ngFiltering?function(){t.$eval(a.ngFiltering)}:void 0,d.select=a.ngSelect?function(){t.$eval(a.ngSelect)}:void 0;var r=n.parent(),l=a.id?" id=\""+a.id+"\"":"",e=a.name?" name=\""+a.name+"\"":"",s=a.validationmessage?" validationmessage=\""+a.validationmessage+"\"":"",c="";(a.ngRequired||a.required)&&(c=" required "),$(r).append("<input style=\"width: 100%;\" "+l+e+c+s+" class=\"cronAutoComplete\" ng-model=\""+a.ngModel+"\"/>");var p=$(r).find("input.cronAutoComplete");$(n).remove(),d.change=function(n){t.$apply(function(){i.$setViewValue(p.val())})},"true"==a.autoExpand&&p.on("focus",function(t){u.search()}),d.messages={noData:a.noResultsMessage?a.noResultsMessage:"NO DATA FOUND"},"false"==a.firstOptionOnBlur&&(d.suggest=!1);var u=p.kendoAutoComplete(d).data("kendoAutoComplete");t.$watch(a.cronDisabled,function(e){u.enable(!e)}),i&&(i.$formatters.push(function(e){return u.value(e),e}),i.$parsers.push(function(e){if(e){if("string"==typeof e)return e;if(e[o.dataTextField])return e[o.dataTextField]}return null}))}}}]).directive("cronDate",["$compile","$translate","$window",function(e,t,n){return{restrict:"AE",require:"?ngModel",link:function(n,a,i,o){var d={},r={};try{if(i.options)r=JSON.parse(i.options);else{var l=window.buildElementOptions(a);r=JSON.parse(l)}r.format||(r.format=parseMaskType(r.type,t)),d=app.kendoHelper.getConfigDate(t,r)}catch(e){console.log("AutoComplete invalid configuration! "+e)}var s="date"==d.type||"datetime"==d.type||"time"==d.type;window.fixedTimeZone||(s=!1);var c=$(a);if(!c.data("alreadycompiled")){if(c.data("alreadycompiled",!0),c.data("$compile",e),i.fromGrid)c=$(a);else{var p=a.parent(),u=$("<input style=\"width: 100%;\" class=\"cronDate\" ng-model=\""+i.ngModel+"\"/>");$(p).append(u),c=$(p).find("input.cronDate"),c.data("type",d.type),c.attr("type","date")}var m=app.kendoHelper.buildKendoMomentPicker(c,d,n,o);i.fromGrid||(o&&(o.$formatters.push(function(e){var t=null;if(e){var n=null;n=s?moment(e).utcOffset(window.timeZoneOffset):moment(e),t=n.format(d.momentFormat)}return m.value(t),t}),o.$parsers.push(function(e){if(e){var t=null;return t=s?moment(m._oldText,d.momentFormat).utcOffset(window.timeZoneOffset):moment(m._oldText,d.momentFormat),t.toDate()}return null})),$(a).remove())}}}}]).directive("cronSlider",["$compile",function(e){return{restrict:"E",require:"ngModel",getActive:function(e,t){if(e&&e.indexOf(".active."))try{return t.$eval(e.substr(0,e.indexOf(".active.")))}catch(t){}},link:function(t,n,a,i){var o={};try{o=JSON.parse(a.options)}catch(e){console.log("Slider invalid configuration! "+e)}var d=app.kendoHelper.getConfigSlider(o),r=this.getActive(a.ngModel,t);d.change=function(){t.$apply(function(){var e=$(n).val();r&&(e=r.normalizeValue(e,!0)),i.$setViewValue(e),a.ngChange&&t.$eval(a.ngChange)})},d.slide=a.ngSlide?function(){t.$eval(a.ngSlide)}:void 0;var o=$(n).kendoSlider(d).data("kendoSlider");o._drag.element[0].title=d.dragHandleTitle,o._drag.element[1].title=d.dragHandleTitle;const l=new ResizeObserver(e=>{o.resize()});if(l.observe(o.wrapper[0]),"true"===a.ngRequired||a.required){var s=a.id?" id=\"input"+app.common.generateId()+"\"":"",c=a.name?" name=\"input"+app.common.generateId()+"\"":"",p=n.parent();$(p).append("<input aria-label=\"slider\" autocomplete=\"off\" tabindex=\"-1\" style=\"width: 100%;\""+s+c+" required class=\"cronSlider cron-select-offscreen\" ng-model=\""+a.ngModel+"\"/>");var u=$(p).find("input.cronSlider");e(u)(n.scope())}t.$watch(function(){return i.$modelValue},function(e,t){e!==t&&(e?o.value(e):o.value(o.min()))}),i&&(i.$formatters.push(function(e){var t=null;return!e&&o.min?t=o.min:e&&(t=e),o.value(t),t}),i.$parsers.push(function(e){return e?e:null}))}}}]).directive("cronSwitch",["$compile",function(e){return{restrict:"E",require:"ngModel",link:function(t,n,a,i){var o={};try{var d=window.buildElementOptions(n);o=JSON.parse(d)}catch(e){console.log("Switch invalid configuration! "+e)}var r=app.kendoHelper.getConfigSwitch(o),l=n.parent();$(l).append("<input style=\"width: 100%;\" class=\"cronSwitch\" ng-model=\""+a.ngModel+"\"/>");var s=$(l).find("input.cronSwitch"),c=function(n){t.$apply(function(){i.$setViewValue(this.value())}.bind(this))};r.change=c;var p=s.kendoMobileSwitch(r).data("kendoMobileSwitch");$(n).remove(),i&&(i.$formatters.push(function(e){var t=!1;return null!=e&&(t=e),p.value(t),t}),i.$parsers.push(function(e){return null!=e&&e}))}}}]).directive("cronBarcode",["$compile",function(e){return{restrict:"E",require:"ngModel",link:function(e,t,n,a){var i={};try{var o=window.buildElementOptions(t);i=JSON.parse(o)}catch(e){console.log("Barcode invalid configuration! "+e)}var d=app.kendoHelper.getConfigBarcode(i),r=t.parent();$(r).append("<span class=\"cronBarcode\" ng-model=\""+n.ngModel+"\"></span>");var l=$(r).find("span.cronBarcode"),s=l.kendoBarcode(d).data("kendoBarcode");$(t).remove(),e.$watch(function(){return a.$modelValue},function(e,t){var n="";e!==t&&(n=e),d.value=n,s.setOptions(d)})}}}]).directive("cronQrcode",["$compile",function(e){return{restrict:"E",require:"ngModel",link:function(e,t,n,a){var i={};try{var o=window.buildElementOptions(t);i=JSON.parse(o)}catch(e){console.log("Qrcode invalid configuration! "+e)}var d=app.kendoHelper.getConfigQrcode(i),r=t.parent();$(r).append("<span class=\"cronQrcode\" ng-model=\""+n.ngModel+"\"></span>");var l=$(r).find("span.cronQrcode"),s=l.kendoQRCode().data("kendoQRCode");$(t).remove(),e.$watch(function(){return a.$modelValue},function(e,t){var n="";e!==t&&(n=e),d.value=n,s.setOptions(d)})}}}]).directive("cronappRating",function(){"use strict";return{restrict:"E",require:"ngModel",link:function(e,t,n,a){function o(e){for(var t=1;5>=t;t++)c[t-1].removeClass(n.iconOff||"fa fa-star-o"),c[t-1].removeClass(n.classElem),c[t-1].removeClass(n.iconTheme),t<=e?c[t-1].addClass(n.classElem):(c[t-1].addClass(n.iconOff||"fa fa-star-o"),c[t-1].addClass(n.theme),c[t-1].addClass(n.iconSize));return e}n.theme=$(t).find("i").attr("icon-theme"),n.classElem=$(t).find("i").attr("class"),n.iconSize=$(t).find("i").attr("icon-size"),n.iconOn=$(t).find("i").attr("class");var d=$(t),r=[];n.xattrDefaultValue&&(a.$viewValue=0,a.$commitViewValue());for(var l=1;5>=l;l++)r.push($(t).find("i").get(l-1)),$(r[l-1]).addClass(n.iconOff||"fa fa-star-o");d.html("");for(var s,c=[],l=1;5>=l;l++)s=$(r[l-1]).clone(),d.append(s),s.attr("idx",l),s.click(function(){e.$apply(function(){let e=parseInt($(this).attr("idx"));a.$viewValue=a.$viewValue===e?0:e,a.$commitViewValue()}.bind(this))}),c.push(s);a.$parsers.push(o),a.$formatters.push(o)}}}).directive("cronDynamicMenu",["$compile","$translate",function(e,t){"use strict";const n=e=>{var a="";return e&&0<e.length&&Array.isArray(e)&&(e.forEach(function(e){var i=e.security&&null!=e.security?` cronapp-security="${e.security}" `:"",o=e.action&&null!=e.action?` ng-click="cronapi.internal.lastCronappMenuClick('${e.id}');${e.action}" `:"",d=e.hide&&null!=e.hide?` ng-hide="${e.hide}" `:"",r=e.iconClass&&null!=e.iconClass?`<i class="${e.iconClass}" id="menu-tag-i-${e.id}"></i>&nbsp;`:"",l=`<span id="menu-tag-span-${e.id}"></span>`,s=e.menuItems&&Array.isArray(e.menuItems)&&0<e.menuItems.length?`<span class="caret submenu" id="menu-tag-span-sub-${e.id}"></span>`:"";e.title&&(l=`<span id="menu-tag-span-${e.id}">${t.instant(e.title)}</span>`),a+=0<e.menuItems.length?`
42
+ </ul>`);t.html(i),t.append(c),$compile(i)(t.scope());let p=$(`#${r}`).kendoContextMenu({target:i,filter:"td",close:t=>{closeContextMenu||t.preventDefault()},open:t=>{let e=t.target,n=$(e).parent()[0],a=i.data("kendoGrid"),o=t.item.id,d=e.innerText;if(d.length&&"\u200B"!==d)$(t.item).find(`#${l}`).val(d),closeContextMenu=!1;else{let e=()=>new Promise((e,t)=>{let n=setInterval(()=>{$(`#${r}`).is(":visible")&&(clearInterval(n),$(`#${r}`).hide())})});e()}}}).data("kendoContextMenu");$(`#${s}`).on("click",t=>{closeContextMenu=!0,p.close()})}}}]).directive("src",["$compile",function(e){return{restrict:"A",link:function(e,t,n,a){"IMG"===t[0].tagName&&cronapi.internal.isBase64(n.src)&&setTimeout(()=>$(t[0]).attr("src","data:image/png;base64,"+n.src))}}}]).directive("crnSkin",["$compile","$http",function(e,t){return{restrict:"A",link:function(e,n,a,i){a.crnSkin&&t.get(a.crnSkin,{cache:!0}).then(e=>{if(e.data){let t=e.data;t.startsWith(":root{")&&(t=t.substring(6)),t.endsWith("}")&&(t=t.substring(0,t.length-2)),$element=$(n);let a=$element.find("[data-role=\"grid\"]");a.length&&($element=a);let i=$element.attr("style")||"";i&&(i+=", "),i+=t,$element.attr("style",i)}})}}}]).directive("cronTreeView",["$compile","$translate",function($compile,$translate){return{restrict:"E",replace:!0,require:"ngModel",scope:!0,getDataSource:function(options,scope,ngModelCtrl){let id=options.dataSourceScreen.schema.filter(e=>!0===e.key)[0].name,schema={model:{id:id,hasChildren:function(e){return e.hasChildren}}},getAllParent=function(e,t,n,a,i){t[schema.model.id]&&n.push(t[schema.model.id]);let o=`${e.entity}?$filter=${schema.model.id} eq '${t[options.selfRelationshipField]}'&$format=json&$inlinecount=allpages`;t[options.selfRelationshipField]?$.ajax({url:o,success:t=>{getAllParent(e,t.d.results[0],n,a,i)},beforeSend:e=>{window.isUsingCookie()||e.setRequestHeader("X-AUTH-TOKEN",cronapi.util.getUserToken())},error:()=>i(),type:"GET"}):a(n)},reloadAndExpand=function(e){let t=()=>{let t=new Promise((t,n)=>{getAllParent(this.options.cronappDatasource,e,[],t,n)});t.then(e=>{this.options.kendoObj.expandPath(e.reverse())})};this.options.kendoObj.dataSource.bind("requestEnd",t),this.options.kendoObj.dataSource.read()},helperDirective=this,waitingPromise=!1,datasource=new kendo.data.HierarchicalDataSource({transport:{push:async function(e){let t=await this.options.cronappDatasource();!helperDirective.dataSourceEventsPush&&t&&(helperDirective.dataSourceEventsPush={create:function(e){reloadAndExpand.bind(this)(e)}.bind(this),update:function(e){reloadAndExpand.bind(this)(e)}.bind(this),delete:function(e){reloadAndExpand.bind(this)(e),ngModelCtrl.$setViewValue(null)}.bind(this),overRideRefresh:function(e){this.options.fromRefresh=!0,this.options.kendoObj.dataSource.read(),ngModelCtrl.$setViewValue(null)}.bind(this),read:function(e){waitingPromise||(this.options.kendoObj.dataSource.read(),ngModelCtrl.$setViewValue(null))}.bind(this)},t.addDataSourceEvents(helperDirective.dataSourceEventsPush))},read:async function(e){let cronappDatasource=await this.options.cronappDatasource(),conditionIsEmpty=e=>{let t=!0;if(e){let n=JSON.parse(e);n.expression&&n.expression.args&&n.expression.args.forEach(e=>{""!==e.right&&"''"!==e.right&&e.right!==void 0&&(t=!1)})}return t};for(key in e.data)null==e.data[key]&&delete e.data[key];let logicFilter={filter:{logic:"and",filters:[]}};for(let t in e.data){let n={field:options.selfRelationshipField,operator:"eq",value:e.data[t]};logicFilter.filter.filters.push(n)}let condition=cronappDatasource.condition,conditionEmpty=conditionIsEmpty(condition),paramsOData={$inlinecount:"allpages",$format:"json",$filter:`${options.selfRelationshipField} eq null`};logicFilter.filter.filters.length?(cronappDatasource.condition="",paramsOData=kendo.data.transports.odata.parameterMap(logicFilter,"read")):this.options.fromRefresh&&(this.options.fromRefresh=!1,!conditionEmpty&&(cronappDatasource.cleanup(),paramsOData={$inlinecount:"allpages",$format:"json"})),cronappDatasource.rowsPerPage=e.data.pageSize,cronappDatasource.offset=e.data.page-1;let fetchData={};fetchData.params=paramsOData,helperKendoDs=this,cronappDatasource.fetch(fetchData,{success:function(data){let all=data.map(item=>{let odataUrl=`${this.entity}/$count?$filter=${options.selfRelationshipField} eq '${item[schema.model.id]}'`;return new Promise((resolve,reject)=>{$.ajax({url:odataUrl,success:count=>{item.hasChildren=0<eval(count),resolve()},beforeSend:e=>{window.isUsingCookie()||e.setRequestHeader("X-AUTH-TOKEN",cronapi.util.getUserToken())},error:()=>reject(),type:"GET"})})});waitingPromise=!0,Promise.all(all).then(()=>{e.success(data),waitingPromise=!1})},canceled:function(t){e.error("canceled","canceled","canceled")}},!0),condition&&(cronappDatasource.condition=condition)},options:{fromRead:!1,cronappDatasource:async()=>await app.kendoHelper.getCorrectlyDSPromise(options.dataSourceScreen.name,scope)}},schema:schema});return datasource},link:function(t,n,a,i){let o=$("<div></div>"),d=JSON.parse(a.options),r=this,l=function(e,t){t=e.getKeyValues(t);var n=Object.keys(t);return 1===n.length&&(t=t[n]),t},s=o.kendoTreeView({dataSource:r.getDataSource(d,t,i),dataTextField:d.textField,dataImageUrlField:d.imageUrlField,change:async function(n){let e=this.dataItem(this.select()),a=await this.dataSource.transport.options.cronappDatasource();t.safeApply(a.goTo(e)),d.fieldType&&"key"===d.fieldType&&(a.active=l(a,a.active)),i.$setViewValue(a.active)}}).data("kendoTreeView");s.dataSource.transport.options.kendoObj=s,n.html(o),$compile(o)(n.scope())}}}]).directive("cronSelect",["$compile",function(e){return{restrict:"E",replace:!0,require:"ngModel",link:async function(t,n,a,i){var o={};try{o=JSON.parse(a.options)}catch(e){console.log("ComboBox invalid configuration! "+e)}var d=a.id?" id=\""+a.id+"\"":"",e=a.name?" name=\""+a.name+"\"":"",r=n.parent();$(r).append("<input style=\"width: 100%;\" "+d+e+" class=\"cronSelect\"/>");var l=$(r).find("input.cronSelect"),s=await app.kendoHelper.getConfigCombobox(o,t);s.close=a.ngClose?function(){t.$eval(a.ngClose)}:void 0,s.dataBound=a.ngDataBound?function(){t.$eval(a.ngDataBound)}:void 0,s.filtering=a.ngFiltering?function(){t.$eval(a.ngFiltering)}:void 0,s.select=a.ngSelect?function(n){t.safeApply(()=>{var e={selected:n.dataItem,selectedKey:n.dataItem[s.dataValueField],selectedValue:n.dataItem[s.dataTextField]};t.$eval(a.ngSelect,e)})}:void 0,s.change=a.ngChange?function(n){var e=this.dataItem();t.safeApply(()=>{a.ngModel&&g.$$parse(a.ngModel).assign(t,this.value(),a.ngModel.split("."));var n={selected:e,selectedKey:e[s.dataValueField],selectedValue:e[s.dataTextField]};t.$eval(a.ngChange,n)})}:function(n){t.safeApply(()=>{a.ngModel&&g.$$parse(a.ngModel).assign(t,this.value(),a.ngModel.split("."))})},s.messages={noData:a.noResultsMessage?a.noResultsMessage:"NO DATA FOUND"};var c;if(!0===o.dontAllowOutsideList){c=l.kendoDropDownList(s).data("kendoDropDownList");let e=r.find("span").first();e.on("focus",()=>cronapi.internal.selectContent(e.find(".k-input")[0]))}else c=l.kendoComboBox(s).data("kendoComboBox");$(n).remove();let p,u=()=>{if(p=$(r).find(".k-input.cronSelect"),p.length){p.attr("ng-required",a.ngRequired),"true"===a.ngRequired&&p.attr("required","required"),p.attr("ng-model",a.ngModel),p.attr("id",a.id),p.attr("validationmessage",a.validationmessage);let e=p.parent();p.on("change",()=>{"true"===a.ngRequired&&(0==p.val().length?(e.addClass("ng-invalid-required"),p.addClass("ng-invalid-required")):(e.removeClass("ng-invalid-required"),p.removeClass("ng-invalid-required")))})}else setTimeout(()=>u())};u(),t.$watch(a.cronDisabled,function(e){c.enable(!e)});var m=t,g=i;i&&(i.$formatters.push(function(e){var t="";return("boolean"==typeof e||e)&&(t=e),c.value(t),t}),i.$parsers.push(function(e){return p&&p.trigger("change"),"boolean"==typeof e||e?e:null}))}}}]).directive("cronDynamicSelect",["$compile","$timeout","$parse","$translate","$log",function($compile,$timeout,$parse,$translate,$log){return{restrict:"E",replace:!0,require:"?ngModel",goTo:function(e,t,n){if(dataSourceScreen=$(t).data("dataSourceScreen"),null!=dataSourceScreen)return dataSourceScreen.goTo(n,!0)},compileAngular:function(e,t){var n=$(t),a=angular.element(n);$compile(a)(e)},getActive:function(active){if(active&&active.indexOf(".active."))try{return eval(active.substr(0,active.indexOf(".active.")))}catch(t){}return null},getFieldText:function(e,t){if(e&&e.indexOf(".active.")&&t.dataTextField)try{var n=e.substr(e.indexOf(".active.")+8);return n+"_"+t.dataTextField}catch(t){}return null},isDefaultEntity:function(e){if(e&&e.entity){var t=e.entity.split("/");if(t&&0<t.length)return-1==t.pop().indexOf("query")}return!1},getModelParent:function(e){if("string"==typeof e&&9<e.length&&0<e.indexOf("|raw}}")){e=e.trim();var t=e.substr(e.indexOf("{{")+2);return t=t.substr(0,t.indexOf("|raw}}")),t.trim()}return null},toComboType:function(e,t,n,a){let i=t.find("span").first();switch(i.on("focus",()=>cronapi.internal.selectContent(i.find("span.ng-scope")[0])),n.type){case"autoComplete":let t=["Tab","Shift","CapsLock","Control","Alt","Escape","PageDown","PageUp","Backspace","ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Delete","Insert","Enter"," "],o=["Tab","Shift","CapsLock","Control","Alt","Escape","PageDown","PageUp","ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Insert"];i.attr("contenteditable","true");let d=$(`input[aria-owns=${e.id}_listbox]`),r=d.parent(),l=$(`#${e.id}-list`);r.hide(),i.on("keyup",n=>{document.activeElement!==i[0]||o.includes(n.originalEvent.key)||d.val(i.find("span.ng-scope").text()),i.hasClass("k-state-border-down")||t.includes(n.originalEvent.key)||i.trigger("click")}),i.on("focusout",()=>{l.is(":visible")||s()}),i.on("click",()=>c());let s=()=>{i.find("span.ng-scope").text(a.dataItem()[n.dataTextField]),a.search()},c=()=>{let e=setInterval(()=>{l.is(":visible")||(clearInterval(e),document.activeElement!==i[0]&&s())})};break;default:i.on("keydown",t=>{if("ArrowDown"===t.originalEvent.key||"ArrowUp"===t.originalEvent.key)return t.stopImmediatePropagation(),void i.trigger("click")})}},link:async function(scope,element,attrs,ngModelCtrl){function forceEmptyLineSelected(){var e=combobox.list.find(".k-list-optionlabel");e&&e.length&&e.addClass("k-state-selected k-state-focused"),$log.debug("Linha vazia marcada como ativa:",e)}await cronapi.internal.skipIterationLoop();var modelGetter=$parse(attrs.ngModel),modelSetter=(e,t)=>{$log.debug("modelSetter | "+attrs.id+" | "+t),modelGetter.assign(e,t)},select={},self=this,parentDS={},textField=null;try{select=JSON.parse(attrs.options),parentDS=this.getActive(attrs.ngModel),textField=this.getFieldText(attrs.ngModel,select)}catch(e){console.log("DynamicComboBox invalid configuration! "+e)}let lastFieldInModel=attrs.ngModel.split(".");lastFieldInModel=lastFieldInModel[lastFieldInModel.length-1];let modelForTextField=attrs.ngModel.replace(lastFieldInModel,textField),modelTextFieldGetter=$parse(modelForTextField),modelTextFieldSetter=modelTextFieldGetter.assign;var options=await app.kendoHelper.getConfigCombobox(select,scope);options.autoBind=!0;var dataSourceScreen=null;try{delete options.dataSource.schema.model.id,dataSourceScreen=eval(select.dataSourceScreen.name),dataSourceScreen.rowsPerPage=dataSourceScreen.rowsPerPage?dataSourceScreen.rowsPerPage:100,options.dataSource.transport.origin="combobox"}catch(t){}var _scope=scope,_goTo=this.goTo,_compileAngular=this.compileAngular;options.virtual={},options.virtual.itemHeight=26;let lastValueMapper;if(options.dataSource.pageSize&&0<options.dataSource.pageSize){options.height=options.dataSource.pageSize*options.virtual.itemHeight/4,options.virtual.mapValueTo="dataItem";var _options=options;let e=()=>new Promise(e=>{let t;_options.combobox?e():t=setInterval(()=>{_options.combobox&&(clearInterval(t),e())})});options.virtual.valueMapper=async function(t){await e(),$log.debug(`valueMapper | ${attrs.id} | ${t.value}`),lastValueMapper&&!1===lastValueMapper.completed&&(lastValueMapper.canceled=!0),lastValueMapper=t;const{optionLabel:n,dataValueField:a}=_options.combobox.options,i=_options.dataSource.transport.options.cronappDatasource;return t.canceled||!t.value||n[a]&&""===t.value?t.success(null):void(_options.combobox.isEvaluating=!0,i.findObj([t.value],!1,e=>{t.canceled||(t.success(Array.isArray(e)?e[0]:e),$log.debug(`valueMapper.success | ${attrs.id} | ${e}`))},()=>t.success(null),[a]),t.completed=_options.combobox.isEvaluating=!1)}}options.messages={noData:attrs.noResultsMessage?attrs.noResultsMessage:"NO DATA FOUND"},options.change=attrs.ngChange?function(t){var e=this.dataItem();scope.safeApply(()=>{var t={selected:e,selectedKey:e?e[options.dataValueField]:"",selectedValue:e?e[options.dataTextField]:""};scope.$eval(attrs.ngChange,t)})}:void 0,options.close=attrs.ngClose?function(){scope.$eval(attrs.ngClose)}:void 0,options.dataBound=function(){scope.$$phase||scope.$root.$$phase||_compileAngular(scope,combobox.element[0])},options.filtering=attrs.ngFiltering?function(){scope.$eval(attrs.ngFiltering)}:void 0,options.open=function(t){combobox._originalClose||(combobox._originalClose=combobox.close),combobox.close=()=>{},setTimeout(()=>{combobox.close=combobox._originalClose},500),dataSourceScreen.fetched&&dataSourceScreen.lastLoadedTime===combobox.dataSource.lastLoadedTime||(combobox.options.firstLazyRead=!0,combobox.dataSource.read(),combobox.dataSource.lastLoadedTime=dataSourceScreen.lastLoadedTime);let e={[combobox.options.dataValueField]:"",[combobox.options.dataTextField]:""};combobox.dataSource.data().some(e=>""===e[combobox.options.dataValueField])||combobox.dataSource.add(e),forceEmptyLineSelected()},options.select=attrs.ngSelect?function(t){scope.safeApply(()=>{var e={selected:t.dataItem,selectedKey:t.dataItem[options.dataValueField],selectedValue:t.dataItem[options.dataTextField]};scope.$eval(attrs.ngSelect,e)})}:void 0;var parent=element.parent(),id=attrs.id?" id=\""+attrs.id+"\"":"",name=attrs.name?" name=\""+attrs.name+"\"":"",validationmessage=attrs.validationmessage?" validationmessage=\""+attrs.validationmessage+"\"":"",inputSelect=$("<input style=\"width: 100%;\""+id+name+validationmessage+" class=\"cronDynamicSelect\" ng-model=\""+attrs.ngModel+"\"/>");attrs.$observe("required",function(e){inputSelect.prop("required",e)}),$(parent).append(inputSelect);var $element=$(parent).find("input.cronDynamicSelect");dataSourceScreen&&(dataSourceScreen.__ignoreFirstFetch=!0);var combobox=$element.kendoDropDownList(options).data("kendoDropDownList");combobox.isEvaluating=!1;var scrolling=!1;combobox.bind("open",function(){scrolling||(scrolling=!0,setTimeout(()=>{scrolling=!1},300),forceEmptyLineSelected())}),combobox.bind("change",function(){if(!combobox.isEvaluating){combobox.isEvaluating=!0;try{let e=combobox.dataItem();e&&""===e[options.dataValueField]?(modelSetter(scope,""),modelTextFieldSetter(scope,"")):(modelSetter(scope,e[options.dataValueField]),modelTextFieldSetter(scope,e[options.dataTextField])),forceEmptyLineSelected()}finally{combobox.isEvaluating=!1}}}),options.combobox=combobox,$(combobox.element[0]).attr("tabindex","-1"),null!=dataSourceScreen&&null!=dataSourceScreen&&$(combobox).data("dataSourceScreen",dataSourceScreen),(attrs.ngRequired||attrs.required)&&($(combobox.element[0]).attr("style",""),$(combobox.element[0]).attr("class","cron-select-offscreen")),$(combobox.wrapper).children(".k-dropdown-wrap").children(".k-select").before(inputSelect),this.toComboType(attrs,parent,select,combobox);let forcedRefreshModelAt,canRefresh=()=>{let e=performance.now();return!forcedRefreshModelAt||2e3<e-forcedRefreshModelAt};var forceChangeModel=async function(e){$log.debug("forceChangeModel | "+attrs.id+" | "+e),void 0===e&&(e=null);let t=combobox.value();t=void 0!==t&&null!==t?t.trim():t;let n=void 0!==e&&null!==e?(""+e).trim():e;n!==t&&(await combobox.value(e)),select.changeCursor&&scope.safeApply(()=>{null==e||null==e?(dataSourceScreen.active={},dataSourceScreen.cursor=-1,modelSetter(_scope,null)):_goTo(_scope,combobox,combobox.dataItem())})};let returnTypedValue=e=>{if(dataSourceScreen.schema){let t=dataSourceScreen.schema.find(e=>e.name===options.dataValueField);t&&"String"!==t.type&&(e=parseFloat(e)||e)}return e};var defineInitialValue=function(){if(!combobox.definingInitialValue&&!combobox.isEvaluating){var e=combobox.value(),t=null;e&&""!==e||(t="",modelSetter(scope,t),forceEmptyLineSelected())}},_ngModelCtrl=ngModelCtrl;null!=dataSourceScreen&&null!=dataSourceScreen&&dataSourceScreen.addDataSourceEvents({overRideRefresh:function(){dataSourceScreen.fetched=!1,dataSourceScreen.cleanup(),canRefresh()&&defineInitialValue()}});var _isDefaultEntity=this.isDefaultEntity;if($element.on("change",function(e){let t=function(){return combobox.isEvaluating?void setTimeout(t,100):void _scope.$apply(function(){let e=combobox.dataItem();e&&""!==e[select.dataValueField]?(modelSetter(_scope,e[select.dataValueField]),modelTextFieldSetter(_scope,e[select.dataTextField])):(combobox.value(""),modelSetter(_scope,""),modelTextFieldSetter(_scope,"")),_compileAngular(scope,options.combobox.element[0]),options?.combobox?.span&&_compileAngular(scope,options.combobox.span)})};t()}),ngModelCtrl&&(ngModelCtrl.$formatters.push(function(e){return $log.debug("$formatters | "+attrs.id+" | "+e),(void 0===e||""===e&&void 0===select.optionLabelValue)&&(e="",modelSetter(scope,e)),forceChangeModel(e),e}),ngModelCtrl.$parsers.push(function(e){return e&&""!==e?e:""}),ngModelCtrl.$parsers.push(function(e){if($log.debug("$parsers | "+attrs.id+" | "+e),"boolean"==typeof e||e)if(!0===combobox.options.valuePrimitive){if("string"==typeof e)return e;if("boolean"==typeof e[select.dataValueField]||e[select.dataValueField])return e[select.dataValueField]}else try{return objectClone(e,combobox.dataSource.options.schema.model.fields)}catch(t){}return null})),!select.initValue)select.initValue=null;else if(select.initValue.startsWith("params.")){var type=combobox.dataSource.options.schema.model.fields[select.dataValueField].type;select.initValue=scope.$eval(select.initValue),"string"!=type&&(select.initValue=dataSourceScreen.normalizeValue(select.initValue,!0))}else select.initValue=scope.$eval(select.initValue);null!==select.initValue&&""!==select.initValue&&select.initValue||(combobox.value(""),modelSetter(_scope,"")),combobox.dataSource.transport&&combobox.dataSource.transport.options&&(combobox.dataSource.transport.options.combobox=combobox,combobox.dataSource.transport.options.$compile=$compile,combobox.dataSource.transport.options.scope=scope,combobox.dataSource.transport.options.ngModelCtrl=ngModelCtrl,combobox.dataSource.transport.options.initRead=!0,null!=select.initValue&&null!=select.initValue?(setTimeout(()=>{modelSetter(_scope,select.initValue)},0),combobox.options.lazyFirstInitialValue=!0):select.firstValue&&defineInitialValue()),$(combobox.span).on("DOMSubtreeModified",function(t){_compileAngular(scope,t.target)}),$(combobox.ul).on("DOMSubtreeModified",function(t){$timeout(function(){_compileAngular(scope,t.target)})}),_compileAngular(scope,combobox.span),_compileAngular(scope,combobox.ul),$(element).remove(),scope.$watch(attrs.cronDisabled,function(e){combobox.enable(!e)}),$("[aria-owns='"+`${attrs.id}_listbox`+"']").attr("aria-label",$translate.instant("template.crud.search")),ngModelCtrl.$modelValue&&(_scope.cronapi.internal.forceRefreshNgModel(attrs.ngModel,ngModelCtrl.$modelValue),forcedRefreshModelAt=performance.now())}}}]).directive("cronMultiSelect",["$compile","$parse",function($compile,$parse){return{restrict:"E",require:"ngModel",link:async function(scope,element,attrs,ngModelCtrl){var modelGetter=$parse(attrs.ngModel),modelSetter=modelGetter.assign,model=attrs.ngModel;let jumpThread=()=>new Promise(e=>{let t=setInterval(()=>{clearInterval(t),e()})});var _self=this,select={};try{select=JSON.parse(attrs.options)}catch(e){console.log("MultiSelect invalid configuration! "+e)}var _scope=scope,_ngModelCtrl=ngModelCtrl;if(null!=select.relationDataSource)try{eval(select.relationDataSource.name)}catch(t){await jumpThread()}var relactionDS={relationDataSource:null==select.relationDataSource?null:eval(select.relationDataSource.name),relationField:null==select.relationField?"":select.relationField},options=void 0;try{eval(select.dataSourceScreen.name),options=await app.kendoHelper.getConfigCombobox(select,scope)}catch(t){await jumpThread(),options=await app.kendoHelper.getConfigCombobox(select,scope)}try{delete options.dataSource.schema.model.id}catch(t){}var parent=element.parent(),id=attrs.id?" id=\""+attrs.id+"\"":"",name=attrs.name?" name=\""+attrs.name+"\"":"";let required=attrs.ngRequired&&eval(attrs.ngRequired)?`required="required"`:"";$(parent).append(`<div style="width: 100%;"> <input style="width: 100%;" ${id} ${name} ${required} class="cronMultiSelect" ng-model="${attrs.ngModel}"/> </div>`),$(parent).find("label").attr("for",attrs.id);let $inp=$(`${attrs.id}`);$compile($inp)(scope);var $element=$(parent).find("input.cronMultiSelect");$(element).remove();var evtSelect,deselect;options.deselect=function(e){var dataItem=e.dataItem,relation=this.relationDataSource,dataValueField=e.sender.options.dataValueField,selectItem=null;if(relation&&relation.data&&dataItem[dataValueField]){for(key in relation.data){var item=relation.data[key];if(item[this.relationField]&&item[this.relationField]==dataItem[dataValueField]){selectItem=item;break}}null!=selectItem&&($(combobox).data("silent",!0),this.relationDataSource.removeSilent(selectItem,null,null))}else model&&_scope.$apply(function(){try{var data=eval("_scope."+model);data=data.filter(e=>"object"==typeof e?e[dataValueField]!==dataItem[dataValueField]:e!==dataItem[dataValueField]),$(combobox).data("silent",!0),modelSetter(_scope,data)}catch(t){}});deselect&&deselect()}.bind(relactionDS),options.select=function(e){var dataItem=e.dataItem,dataValueField=e.sender.options.dataValueField,combobox=e.sender;if(this.relationDataSource&&dataItem[dataValueField]){var obj={};obj[this.relationField]=dataItem[dataValueField],$(combobox).data("silent",!0),this.relationDataSource.startInserting(obj,function(e){this.postSilent()}.bind(this.relationDataSource))}else model&&_scope.$apply(function(){try{var data=eval("_scope."+model);if(data||(data=[]),select.fieldType&&"key"===select.fieldType){var keyValues=combobox.dataSource.options.transport.options.cronappDatasource.getKeyValues(dataItem),keys=Object.keys(keyValues);1===keys.length&&(keyValues=keyValues[keys]),data.push(keyValues)}else data.push(objectClone(dataItem,combobox.dataSource.options.schema.model.fields));$(combobox).data("silent",!0),modelSetter(_scope,data)}catch(t){}});evtSelect&&evtSelect()}.bind(relactionDS);var hideSelectedItem="true"==attrs.crnHideSelectedItem,onSelectedItem=()=>{hideSelectedItem&&combobox.list&&0<combobox.list.length&&(combobox.list.find(".k-item").show(),combobox.list.find(".k-item.k-state-selected").hide())};options.change=attrs.ngChange?function(){_scope.$eval(attrs.ngChange)}:void 0,options.close=attrs.ngClose?function(){_scope.$eval(attrs.ngClose)}:void 0,options.dataBound=attrs.ngDatabound?function(){_scope.$eval(attrs.ngDatabound)}:void 0,options.filtering=attrs.ngFiltering?function(){_scope.$eval(attrs.ngFiltering)}:void 0,options.open=attrs.ngOpen?function(){_scope.$eval(attrs.ngOpen),onSelectedItem()}:onSelectedItem,options.cascade=attrs.ngCascade?function(){_scope.$eval(attrs.ngCascade)}:void 0,evtSelect=attrs.ngSelect?function(){_scope.$eval(attrs.ngSelect)}:void 0,deselect=attrs.ngDeselect?function(){_scope.$eval(attrs.ngDeselect)}:void 0;var combobox=$element.kendoMultiSelect(options).data("kendoMultiSelect");scope.$watch(attrs.cronDisabled,function(e){combobox.enable(!e)}),app.kendoHelper.receivePushData(combobox),$("[aria-describedby='"+`${attrs.id}_taglist`+"']").attr("id",`${attrs.id}-container`),attrs.crnReadonly&&_scope.$watch(attrs.crnReadonly,(e,t)=>{combobox.readonly(_scope.$eval(attrs.crnReadonly))});var convertArray=function(e){var t=[];if(e)for(var n in e)t.push(e[n][relactionDS.relationField]);return t};scope.$watchCollection(function(){return ngModelCtrl.$modelValue},function(value,old){var silent=$(combobox).data("silent");value&&0===value.length?($(`#${attrs.id}`).addClass("ng-empty"),attrs.ngRequired&&eval(attrs.ngRequired)&&$(`#${attrs.id}`).attr("required","required")):($(`#${attrs.id}`).removeClass("ng-empty"),$(`#${attrs.id}`).removeAttr("required")),$(combobox).data("silent",!1),silent||JSON.stringify(value)===JSON.stringify(old)||(relactionDS.relationDataSource&&relactionDS.relationField?combobox.value(convertArray(value)):combobox.value(value))})}}}]).directive("cronAutoComplete",["$compile",function(e){return{restrict:"E",require:"ngModel",link:async function(t,n,a,i){var o={};try{o=JSON.parse(a.options)}catch(e){console.log("AutoComplete invalid configuration! "+e)}try{delete d.dataSource.schema.model.id}catch(t){}var d=await app.kendoHelper.getConfigCombobox(o,t);d.change=a.ngChange?function(){t.$eval(a.ngChange)}:void 0,d.close=a.ngClose?function(){t.$eval(a.ngClose)}:void 0,d.dataBound=a.ngDataBound?function(){t.$eval(a.ngDataBound)}:void 0,d.filtering=a.ngFiltering?function(){t.$eval(a.ngFiltering)}:void 0,d.select=a.ngSelect?function(){t.$eval(a.ngSelect)}:void 0;var r=n.parent(),l=a.id?" id=\""+a.id+"\"":"",e=a.name?" name=\""+a.name+"\"":"",s=a.validationmessage?" validationmessage=\""+a.validationmessage+"\"":"",c="";(a.ngRequired||a.required)&&(c=" required "),$(r).append("<input style=\"width: 100%;\" "+l+e+c+s+" class=\"cronAutoComplete\" ng-model=\""+a.ngModel+"\"/>");var p=$(r).find("input.cronAutoComplete");$(n).remove(),d.change=function(n){t.$apply(function(){i.$setViewValue(p.val())})},"true"==a.autoExpand&&p.on("focus",function(t){u.search()}),d.messages={noData:a.noResultsMessage?a.noResultsMessage:"NO DATA FOUND"},"false"==a.firstOptionOnBlur&&(d.suggest=!1);var u=p.kendoAutoComplete(d).data("kendoAutoComplete");t.$watch(a.cronDisabled,function(e){u.enable(!e)}),i&&(i.$formatters.push(function(e){return u.value(e),e}),i.$parsers.push(function(e){if(e){if("string"==typeof e)return e;if(e[o.dataTextField])return e[o.dataTextField]}return null}))}}}]).directive("cronDate",["$compile","$translate","$window",function(e,t,n){return{restrict:"AE",require:"?ngModel",link:function(n,a,i,o){var d={},r={};try{if(i.options)r=JSON.parse(i.options);else{var l=window.buildElementOptions(a);r=JSON.parse(l)}r.format||(r.format=parseMaskType(r.type,t)),d=app.kendoHelper.getConfigDate(t,r)}catch(e){console.log("AutoComplete invalid configuration! "+e)}var s="date"==d.type||"datetime"==d.type||"time"==d.type;window.fixedTimeZone||(s=!1);var c=$(a);if(!c.data("alreadycompiled")){if(c.data("alreadycompiled",!0),c.data("$compile",e),i.fromGrid)c=$(a);else{var p=a.parent(),u=$("<input style=\"width: 100%;\" class=\"cronDate\" ng-model=\""+i.ngModel+"\"/>");$(p).append(u),c=$(p).find("input.cronDate"),c.data("type",d.type),c.attr("type","date")}var m=app.kendoHelper.buildKendoMomentPicker(c,d,n,o);i.fromGrid||(o&&(o.$formatters.push(function(e){var t=null;if(e){var n=null;n=s?moment(e).utcOffset(window.timeZoneOffset):moment(e),t=n.format(d.momentFormat)}return m.value(t),t}),o.$parsers.push(function(e){if(e){var t=null;return t=s?moment(m._oldText,d.momentFormat).utcOffset(window.timeZoneOffset):moment(m._oldText,d.momentFormat),t.toDate()}return null})),$(a).remove())}}}}]).directive("cronSlider",["$compile",function(e){return{restrict:"E",require:"ngModel",getActive:function(e,t){if(e&&e.indexOf(".active."))try{return t.$eval(e.substr(0,e.indexOf(".active.")))}catch(t){}},link:function(t,n,a,i){var o={};try{o=JSON.parse(a.options)}catch(e){console.log("Slider invalid configuration! "+e)}var d=app.kendoHelper.getConfigSlider(o),r=this.getActive(a.ngModel,t);d.change=function(){t.$apply(function(){var e=$(n).val();r&&(e=r.normalizeValue(e,!0)),i.$setViewValue(e),a.ngChange&&t.$eval(a.ngChange)})},d.slide=a.ngSlide?function(){t.$eval(a.ngSlide)}:void 0;var o=$(n).kendoSlider(d).data("kendoSlider");o._drag.element[0].title=d.dragHandleTitle,o._drag.element[1].title=d.dragHandleTitle;const l=new ResizeObserver(e=>{o.resize()});if(l.observe(o.wrapper[0]),"true"===a.ngRequired||a.required){var s=a.id?" id=\"input"+app.common.generateId()+"\"":"",c=a.name?" name=\"input"+app.common.generateId()+"\"":"",p=n.parent();$(p).append("<input aria-label=\"slider\" autocomplete=\"off\" tabindex=\"-1\" style=\"width: 100%;\""+s+c+" required class=\"cronSlider cron-select-offscreen\" ng-model=\""+a.ngModel+"\"/>");var u=$(p).find("input.cronSlider");e(u)(n.scope())}t.$watch(function(){return i.$modelValue},function(e,t){e!==t&&(e?o.value(e):o.value(o.min()))}),i&&(i.$formatters.push(function(e){var t=null;return!e&&o.min?t=o.min:e&&(t=e),o.value(t),t}),i.$parsers.push(function(e){return e?e:null}))}}}]).directive("cronSwitch",["$compile",function(e){return{restrict:"E",require:"ngModel",link:function(t,n,a,i){var o={};try{var d=window.buildElementOptions(n);o=JSON.parse(d)}catch(e){console.log("Switch invalid configuration! "+e)}var r=app.kendoHelper.getConfigSwitch(o),l=n.parent();$(l).append("<input style=\"width: 100%;\" class=\"cronSwitch\" ng-model=\""+a.ngModel+"\"/>");var s=$(l).find("input.cronSwitch"),c=function(n){t.$apply(function(){i.$setViewValue(this.value())}.bind(this))};r.change=c;var p=s.kendoMobileSwitch(r).data("kendoMobileSwitch");$(n).remove(),i&&(i.$formatters.push(function(e){var t=!1;return null!=e&&(t=e),p.value(t),t}),i.$parsers.push(function(e){return null!=e&&e}))}}}]).directive("cronBarcode",["$compile",function(e){return{restrict:"E",require:"ngModel",link:function(e,t,n,a){var i={};try{var o=window.buildElementOptions(t);i=JSON.parse(o)}catch(e){console.log("Barcode invalid configuration! "+e)}var d=app.kendoHelper.getConfigBarcode(i),r=t.parent();$(r).append("<span class=\"cronBarcode\" ng-model=\""+n.ngModel+"\"></span>");var l=$(r).find("span.cronBarcode"),s=l.kendoBarcode(d).data("kendoBarcode");$(t).remove(),e.$watch(function(){return a.$modelValue},function(e,t){var n="";e!==t&&(n=e),d.value=n,s.setOptions(d)})}}}]).directive("cronQrcode",["$compile",function(e){return{restrict:"E",require:"ngModel",link:function(e,t,n,a){var i={};try{var o=window.buildElementOptions(t);i=JSON.parse(o)}catch(e){console.log("Qrcode invalid configuration! "+e)}var d=app.kendoHelper.getConfigQrcode(i),r=t.parent();$(r).append("<span class=\"cronQrcode\" ng-model=\""+n.ngModel+"\"></span>");var l=$(r).find("span.cronQrcode"),s=l.kendoQRCode().data("kendoQRCode");$(t).remove(),e.$watch(function(){return a.$modelValue},function(e,t){var n="";e!==t&&(n=e),d.value=n,s.setOptions(d)})}}}]).directive("cronappRating",function(){"use strict";return{restrict:"E",require:"ngModel",link:function(e,t,n,a){function o(e){for(var t=1;5>=t;t++)c[t-1].removeClass(n.iconOff||"fa fa-star-o"),c[t-1].removeClass(n.classElem),c[t-1].removeClass(n.iconTheme),t<=e?c[t-1].addClass(n.classElem):(c[t-1].addClass(n.iconOff||"fa fa-star-o"),c[t-1].addClass(n.theme),c[t-1].addClass(n.iconSize));return e}n.theme=$(t).find("i").attr("icon-theme"),n.classElem=$(t).find("i").attr("class"),n.iconSize=$(t).find("i").attr("icon-size"),n.iconOn=$(t).find("i").attr("class");var d=$(t),r=[];n.xattrDefaultValue&&(a.$viewValue=0,a.$commitViewValue());for(var l=1;5>=l;l++)r.push($(t).find("i").get(l-1)),$(r[l-1]).addClass(n.iconOff||"fa fa-star-o");d.html("");for(var s,c=[],l=1;5>=l;l++)s=$(r[l-1]).clone(),d.append(s),s.attr("idx",l),s.click(function(){e.$apply(function(){let e=parseInt($(this).attr("idx"));a.$viewValue=a.$viewValue===e?0:e,a.$commitViewValue()}.bind(this))}),c.push(s);a.$parsers.push(o),a.$formatters.push(o)}}}).directive("cronDynamicMenu",["$compile","$translate",function(e,t){"use strict";const n=e=>{var a="";return e&&0<e.length&&Array.isArray(e)&&(e.forEach(function(e){var i=e.security&&null!=e.security?` cronapp-security="${e.security}" `:"",o=e.action&&null!=e.action?` ng-click="cronapi.internal.lastCronappMenuClick('${e.id}');${e.action}" `:"",d=e.hide&&null!=e.hide?` ng-hide="${e.hide}" `:"",r=e.iconClass&&null!=e.iconClass?`<i class="${e.iconClass}" id="menu-tag-i-${e.id}"></i>&nbsp;`:"",l=`<span id="menu-tag-span-${e.id}"></span>`,s=e.menuItems&&Array.isArray(e.menuItems)&&0<e.menuItems.length?`<span class="caret submenu" id="menu-tag-span-sub-${e.id}"></span>`:"";e.title&&(l=`<span id="menu-tag-span-${e.id}">${t.instant(e.title)}</span>`),a+=0<e.menuItems.length?`
43
43
  <li class="dropdown-submenu" ${i}${d} id="menu-tag-li-sub-${e.id}"> \
44
44
  <a href="" ${o} id="menu-tag-a-sub-${e.id}" class="dropdown-item dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> ${r} ${l} ${s} </a> \
45
45
  ${n(e.menuItems)}\
package/js/directives.js CHANGED
@@ -4278,20 +4278,20 @@
4278
4278
  _compileAngular(scope, combobox.element[0]);
4279
4279
  }
4280
4280
  };
4281
-
4282
4281
 
4283
4282
  options.filtering = attrs.ngFiltering ? function () {
4284
4283
  scope.$eval(attrs.ngFiltering);
4285
4284
  } : undefined;
4286
4285
 
4287
4286
  options.open = function (e) {
4288
- const originalClose = combobox.close;
4287
+ if (!combobox._originalClose) {
4288
+ combobox._originalClose = combobox.close;
4289
+ }
4289
4290
  combobox.close = () => {};
4290
-
4291
4291
  setTimeout(() => {
4292
- combobox.close = originalClose;
4292
+ combobox.close = combobox._originalClose;
4293
4293
  }, 500);
4294
-
4294
+
4295
4295
  if (!dataSourceScreen.fetched || (dataSourceScreen.lastLoadedTime !== combobox.dataSource.lastLoadedTime)) {
4296
4296
  combobox.options.firstLazyRead = true;
4297
4297
  combobox.dataSource.read();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cronapp-framework-js",
3
- "version": "3.2.0-SP.4",
3
+ "version": "3.2.0-SP.5",
4
4
  "description": "Javascript library for CronApp's projects",
5
5
  "main": "cronapp.framework.js",
6
6
  "scripts": {