cronapp-framework-js 4.0.1 → 4.0.2
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.
- package/dist/js/app.js +1 -1
- package/dist/js/directives.js +1 -1
- package/js/app.js +33 -0
- package/js/directives.js +18 -4
- package/package.json +2 -2
package/dist/js/app.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var cronappModules=["ui.router","ui-select-infinity","ui.select","ngResource","ngSanitize","custom.controllers","custom.services","datasourcejs","chart.js","pascalprecht.translate","tmh.dynamicLocale","ui-notification","ui.bootstrap","ngFileUpload","report.services","dashboard.services","upload.services","ui.tinymce","ngCookies","kendo.directives","sync.service"];window.customModules&&(cronappModules=cronappModules.concat(window.customModules));var onloadCallback=function(){window.grecaptcha.render("loginRecaptcha"),window.grecaptcha.reset()},getRequestData=e=>{let t=e||{};return e.data&&"object"==typeof e.data&&(t=e.data),t},customizeRoute=()=>{window.mainRoute="views/login.view.html";var e=$.get({url:"cronapp.json",async:!1}).responseJSON["cronapp.framework.web.mainroute"];e&&(window.mainRoute=e)},app=(window,customizeRoute(),angular.module("MyApp",cronappModules).constant("LOCALES",{locales:{pt_br:"Portugues (Brasil)",en_us:"English"},preferredLocale:"pt_br",urlPrefix:""}).config(["$locationProvider",function(e){e.hashPrefix("")}]).config(["$httpProvider",function(e){e.defaults.headers.common["X-Requested-With"]="XMLHttpRequest"}]).config(["$compileProvider",function(e){e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|javascript|chrome-extension):/)}]).config(["$stateProvider","$urlRouterProvider","NotificationProvider",function(e,t,o){o.setOptions({delay:5e3,startTop:20,startRight:10,verticalSpacing:20,horizontalSpacing:20,positionX:"right",positionY:"top",templateUrl:"node_modules/cronapp-framework-js/components/templates/angular-ui-notification.template.html"}),window.NotificationProviderOptions=o.options,window.stateProviderDefine.handle(e),t.otherwise("/error/404")}]).factory("originPath",["$location",function(e){return{request:function(t){return t.headers["origin-path"]=e.path(),t}}}]).config(["$logProvider",function(e){e.debugEnabled(!1)}]).config(["$httpProvider",function(e){e.interceptors.push("originPath")}]).config(["$translateProvider","tmhDynamicLocaleProvider",function(e,t){e.uniformLanguageTag("bcp47"),e.useLoader("customTranslateLoader",{files:[{prefix:"i18n/locale_",suffix:".json"},{prefix:"node_modules/cronapp-framework-js/i18n/locale_",suffix:".json"},{prefix:"node_modules/cronapi-js/i18n/locale_",suffix:".json"}]}),e.registerAvailableLanguageKeys(window.translations.localesKeys,window.translations.localesRef).determinePreferredLanguage();var o=(window.navigator.userLanguage||window.navigator.language).replace("-","_").toLowerCase();e.use(o),e.preferredLanguage(o),e.fallbackLanguage("en_us"),e.useSanitizeValueStrategy("escaped"),t.localeLocationPattern("node_modules/angular-i18n/angular-locale_{{locale}}.js"),moment&&moment.locale(o)}]).config(["$sceProvider",function(e){e.enabled(!1)}]).directive("crnValue",["$parse",function(e){return{restrict:"A",require:"^ngModel",link:function(t,o,n,
|
|
1
|
+
var cronappModules=["ui.router","ui-select-infinity","ui.select","ngResource","ngSanitize","custom.controllers","custom.services","datasourcejs","chart.js","pascalprecht.translate","tmh.dynamicLocale","ui-notification","ui.bootstrap","ngFileUpload","report.services","dashboard.services","upload.services","ui.tinymce","ngCookies","kendo.directives","sync.service"];window.customModules&&(cronappModules=cronappModules.concat(window.customModules));var onloadCallback=function(){window.grecaptcha.render("loginRecaptcha"),window.grecaptcha.reset()},getRequestData=e=>{let t=e||{};return e.data&&"object"==typeof e.data&&(t=e.data),t},customizeRoute=()=>{window.mainRoute="views/login.view.html";var e=$.get({url:"cronapp.json",async:!1}).responseJSON["cronapp.framework.web.mainroute"];e&&(window.mainRoute=e)},app=(window,customizeRoute(),angular.module("MyApp",cronappModules).constant("LOCALES",{locales:{pt_br:"Portugues (Brasil)",en_us:"English"},preferredLocale:"pt_br",urlPrefix:""}).config(["$locationProvider",function(e){e.hashPrefix("")}]).config(["$httpProvider",function(e){e.defaults.headers.common["X-Requested-With"]="XMLHttpRequest"}]).config(["$compileProvider",function(e){e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|javascript|chrome-extension):/)}]).config(["$stateProvider","$urlRouterProvider","NotificationProvider",function(e,t,o){o.setOptions({delay:5e3,startTop:20,startRight:10,verticalSpacing:20,horizontalSpacing:20,positionX:"right",positionY:"top",templateUrl:"node_modules/cronapp-framework-js/components/templates/angular-ui-notification.template.html"}),window.NotificationProviderOptions=o.options,window.stateProviderDefine.handle(e),t.otherwise("/error/404")}]).factory("originPath",["$location",function(e){return{request:function(t){return t.headers["origin-path"]=e.path(),t}}}]).config(["$logProvider",function(e){e.debugEnabled(!1)}]).config(["$httpProvider",function(e){e.interceptors.push("originPath")}]).config(["$translateProvider","tmhDynamicLocaleProvider",function(e,t){e.uniformLanguageTag("bcp47"),e.useLoader("customTranslateLoader",{files:[{prefix:"i18n/locale_",suffix:".json"},{prefix:"node_modules/cronapp-framework-js/i18n/locale_",suffix:".json"},{prefix:"node_modules/cronapi-js/i18n/locale_",suffix:".json"}]}),e.registerAvailableLanguageKeys(window.translations.localesKeys,window.translations.localesRef).determinePreferredLanguage();var o=(window.navigator.userLanguage||window.navigator.language).replace("-","_").toLowerCase();e.use(o),e.preferredLanguage(o),e.fallbackLanguage("en_us"),e.useSanitizeValueStrategy("escaped"),t.localeLocationPattern("node_modules/angular-i18n/angular-locale_{{locale}}.js"),moment&&moment.locale(o)}]).config(["$sceProvider",function(e){e.enabled(!1)}]).directive("crnValue",["$parse",function(e){return{restrict:"A",require:"^ngModel",link:function(t,o,n,r){var a;a=n.value?n.value:e(n.crnValue)(t),o.attr("data-evaluated",JSON.stringify(a)),o.bind("click",(function(e){t.$apply(function(){r.$setViewValue(a),$(o).data("changed",!0)}.bind(o))})),t.$watch((function(){return r.$modelValue}),(function(e,t){if(e!==t){var n=o.attr("data-evaluated"),r=$(o).data("changed");$(o).data("changed",!1),r||(e&&JSON.stringify(""+e)===n?$(o)[0].checked=!0:$(o)[0].checked=!1)}}))}}}]).decorator("$xhrFactory",["$delegate","$injector",function(e,t){return function(o,n){var r=e(o,n),a=t.get("$http"),i=a.pendingRequests[a.pendingRequests.length-1];return angular.isFunction(i.onProgress)&&r.upload.addEventListener("progress",i.onProgress),r}}]).controller("PageController",["$controller","$scope","$stateParams","$location","$http","$rootScope","$translate","Notification","UploadService","$timeout","$state","ReportService","DashboardService",function(e,t,o,n,r,a,i,s,c,l,u,p,f){t.params=o,t.$http=r,t.Notification=s,t.UploadService=c,t.$state=u,app.registerEventsCronapi(t,i,n),$("form").kendoValidator({errorTemplate:'<span class="k-widget k-tooltip-validation k-x-invalid-msg-block">#=message#</span>',messages:{required:""}}),a.getReport=function(e,t,o){p.openReport(e,t,o)},a.getDashboard=function(e,t,o){f.openDashboard(e,t,o)};var d=n.search();for(var g in d)d.hasOwnProperty(g)&&(t.params[g]=d[g]);try{var h=e("AfterPageController",{$scope:t});app.copyContext(h,this,"AfterPageController")}catch(e){}l((function(){t.blockly&&t.blockly.events&&t.blockly.events.afterPageRender&&t.blockly.events.afterPageRender instanceof Function&&t.blockly.events.afterPageRender()}))}]).run(["$rootScope","$state","$stateParams","$timeout","$transitions",function(e,t,o,n,r){e.$state=t,e.$stateParams=o,r.onSuccess({},(t=>{return o=t.to(),void n((()=>{let t,n=$("#projectName").length?$("#projectName").val():$("h1:first").length&&$("h1:first").text().trim().length?$("h1:first").text().trim():"",r=window.location.hash;null!==(m=/\/(?:.(?!\/))+$/gm.exec(r))?m.forEach((e=>t=e)):t=o.name;let a=$("form[crn-datasource]").length,i=window.camelCaseToSentenceCase(window.toCamelCase(t.split("?")[0].replace("/","")));a&&($("h1.title").length?i=$("h1.title").text():$("h2.title").length&&(i=$("h2.title").text()));let s="";s=i+(n.length?" - "+n:""),e.viewTitle=s||o.name,e.viewTitleOnly=i||o.name,e.systemName=n;let c=$(".main-nav-link");if(c&&c.length&&$($(".main-nav-link").get(0)).is(":visible"))$(".main-access").focus();else{let e=$("[role=main]").find("input");if(e&&e.length){let t=["date","datetime","time"],o=$(e[0]);t.includes(o.data("type"))||o.focus()}}e.renderFinished=!0,registerComponentScripts()}));var o})),t.defaultErrorHandler((e=>function(e){if(e){const o=e.toString();6===e.type&&e.detail.config.url.includes("=_.view.html")?t.go("login"):o.includes("=404")?t.go("404"):o.includes("=403")?t.go("403"):o.includes("=401")?(localStorage.removeItem("_u"),t.go("loginReturnUrl",{returnUrl:window.location.hash})):t.go("404")}else t.go("404")}(e)))}]).config(["$httpProvider",function(e){e.interceptors.push((function(){return{request:function(e){const t=localStorage.getItem("csrfToken")||"";return t&&(e.headers["X-CSRF-TOKEN"]=t),e},response:function(e){const t=e.headers("X-CSRF-TOKEN");return t&&localStorage.setItem("csrfToken",t),e},responseError:function(e){const t=e.headers("X-CSRF-TOKEN");return t&&localStorage.setItem("csrfToken",t),Promise.reject(e)}}}))}]));app.userEvents={},app.config={},app.config.datasourceApiVersion=2,app.bindScope=function(e,t){var o={};for(var n in t)"string"==typeof t[n]||"boolean"==typeof t[n]?o[n]=t[n]:"function"==typeof t[n]?o[n]=t[n].bind(e):o[n]=app.bindScope(e,t[n]);return o},app.registerEventsCronapi=function(e,t,o){let n=e.params||{},r=o&&o.search()||{};e.params={};let a=(e,t)=>{for(let o in e)e.hasOwnProperty(o)&&(t[o]=e[o])};for(var i in a(n,e.params),a(r,e.params),app.userEvents)e[i]=app.userEvents[i].bind(e);e.vars={},e.$evt=$evt;try{cronapi&&(e.cronapi=app.bindScope(e,cronapi),e.cronapi.$scope=e,e.safeApply=safeApply,t&&(e.cronapi.$translate=t))}catch(e){console.info("Not loaded cronapi functions"),console.info(e)}try{blockly&&(blockly.cronapi=cronapi,e.blockly=app.bindScope(e,blockly))}catch(e){console.info("Not loaded blockly functions"),console.info(e)}},app.copyContext=function(e,t,o){if(e)for(var n in e)t[n]?t[n+o]=e[n]:t[n]=e[n]},app.factory("customTranslateLoader",["$http","$q",function(e,t){return function(o){if(!(o&&(angular.isArray(o.files)||angular.isString(o.prefix)&&angular.isString(o.suffix))))throw new Error("Couldn't load static files, no files and prefix or suffix specified!");o.files||(o.files=[{prefix:o.prefix,suffix:o.suffix}]);for(var n=function(n){if(!n||!angular.isString(n.prefix)||!angular.isString(n.suffix))throw new Error("Couldn't load static file, no prefix or suffix specified!");var r=t.defer();return e(angular.extend({url:[n.prefix,o.key,n.suffix].join(""),method:"GET",params:""},o.$http)).then((function(e){r.resolve(getRequestData(e))})).catch((function(){r.resolve({})})),r.promise},r=t.defer(),a=[],i=o.files.length,s=0;s<i;s++)a.push(n({prefix:o.files[s].prefix,key:o.key,suffix:o.files[s].suffix}));return t.all(a).then((function(e){for(var t=e.length,o={},n=0;n<t;n++)for(var a in e[n])o[a]=e[n][a];r.resolve(o)}),(function(e){r.reject(e)})),r.promise}}]),window.safeApply=function(e){var t=this.$root.$$phase;"$apply"===t||"$digest"===t?e&&"function"==typeof e&&e():this.$apply(e)},window.toCamelCase=function(e){return null!==e?e.toLowerCase().replace(/[-_\.]+/g," ").replace(/[^\w\s]/g,"").replace(/ (.)/g,(function(e){return e.toUpperCase()})).replace(/ /g,""):e},window.camelCaseToSentenceCase=function(e){if(null!==e){let t=e.replace(/([A-Z])/g," $1");return t.charAt(0).toUpperCase()+t.slice(1)}return e};const keyCodeFormActions={initialize:()=>$(document).on("keypress","form[crn-datasource]",keyCodeFormActions.handle),handle:e=>!keyCodeFormActions[e.keyCode||e.which]||keyCodeFormActions[e.keyCode||e.which](e),13:e=>{e.target&&"textarea"===e.target.type||e.preventDefault()}};keyCodeFormActions.initialize();var registerComponentScripts=function(){$(".carousel-indicators li").on("click",(function(){var e="#"+$(this).parent().parent().parent().attr("id"),t=$(e+" .carousel-indicators li").index(this);$(e+" > div").carousel(t)}))};
|
package/dist/js/directives.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function maskDirectiveAsDate(t,n,a){return maskDirective(t,n,a,"as-date")}function maskDirectiveMask(t,n,a){return maskDirective(t,n,a,"mask")}function maskDirective(t,n,a,o){return{restrict:"A",require:"?ngModel",link:function(r,l,s,c){if("as-date"==o&&void 0!==s.mask)return;var d=a(s.ngModel).assign,u=$(l);if(u.data("alreadycompiled"))return;u.data("alreadycompiled",!0),u.data("$compile",t);var p=u.attr("type");if("email"===p){u.inputmask("email").attr("novalidate","novalidate"),u.next(".k-tooltip-validation").remove();return void new MutationObserver((()=>{const t=u.next(".k-tooltip-validation");t.length&&t.remove()})).observe(u[0].parentNode,{childList:!0,subtree:!0})}if(["week","date","time","datetime-local","month","datetime","time-local"].includes(p)){const t=["week","dat","month","datetime-local","datetime"].includes(p)?"fa fa-calendar-o":"fa fa-clock-o",n=document.createElement("span");n.className="input-icon-wrapper",n.innerHTML=`<i class="${t}" style="cursor: pointer; font-weight: 600;"></i>`;const a=document.createElement("input");a.type=p,a.style.position="absolute",a.style.opacity="0",a.style.pointerEvents="none",u.after(n),n.appendChild(a),n.addEventListener("click",(()=>{a.focus()})),a.addEventListener("change",(()=>{u.val(a.value),u.trigger("input")})),r.$watch((()=>u.attr("exibir-icone")),(t=>{n.style.display="true"===t?"inline-block":"none"}))}if(["checkbox","password","url","color","range"].includes(p))return void(["color","range"].includes(p)&&u[0].classList.remove("form-control","k-textbox"));["color","range","checkbox"].includes(p)||(u.data("type",p),u.attr("type","text")),c&&(c.$formatters=[],c.$parsers=[]);var m=(s.mask||s.format||parseMaskType(p,n)).replace(";1","").replace(";0","").trim();if(!m)return;const f=function(t,n){switch(t){case"week":return"Semana --, ----";case"month":return"-------- de ----";case"time":case"time-local":return"--:--";case"datetime-local":case"datetime":return"dd/mm/aaaa --:--";case"date":return"dd/mm/aaaa";default:return n.replace(/D/g,"d").replace(/M/g,"m").replace(/Y/g,"a").replace(/H/g,"h").replace(/m/g,"m").replace(/s/g,"s").replace(/-/g,"-").replace(/:/g,":").replace(/\//g,"/")}}(p,m);if(u.attr("placeholder",f),["week","date","time","datetime-local","month","datetime","time-local"].includes(p)&&u.addClass("dark-placeholder"),u.on("input blur",(function(){u.val()?u.attr("placeholder",""):u.attr("placeholder",f)})),["date","datetime-local","datetime","time","time-local"].includes(p)?u.datetimepicker({format:m,locale:n.use()}):["number","money","integer"].includes(p)?u.inputmask("numeric",{prefix:"",rightAlign:!1}):u.mask(m),["date","datetime","datetime-local","month","time","week"].includes(p)){var g={format:m,locale:n.use(),showTodayButton:!0,useStrict:!0,tooltips:{today:n.instant("DatePicker.today"),clear:n.instant("DatePicker.clear"),close:n.instant("DatePicker.close"),selectMonth:n.instant("DatePicker.selectMonth"),prevMonth:n.instant("DatePicker.prevMonth"),nextMonth:n.instant("DatePicker.nextMonth"),selectYear:n.instant("DatePicker.selectYear"),prevYear:n.instant("DatePicker.prevYear"),nextYear:n.instant("DatePicker.nextYear"),selectDecade:n.instant("DatePicker.selectDecade"),prevDecade:n.instant("DatePicker.prevDecade"),nextDecade:n.instant("DatePicker.nextDecade"),prevCentury:n.instant("DatePicker.prevCentury"),nextCentury:n.instant("DatePicker.nextCentury")}};if(u.attr("from-grid")){var h=function(){var t=$(this).offset(),n=!0,a=$(this).parent().find(".bootstrap-datetimepicker-widget.dropdown-menu");if(a.length||(n=!1,a=$(this).parent().find(".bootstrap-datetimepicker-widget.dropdown-menu.top")),$(a).offset()){a.appendTo("body");var o=n?t.top+u.outerHeight():t.top-a.outerHeight();a.css({top:o,left:t.left,zIndex:999999})}};u.on("click",h),u.on("focus",(function(){setTimeout(h.bind(this),100)}))}if(u.datetimepicker(g),u.attr("from-grid")){h=function(){var t=$(this).offset(),n=!0,a=$(this).parent().find(".bootstrap-datetimepicker-widget.dropdown-menu.usetwentyfour.bottom");if(a.length||(n=!1,a=$(this).parent().find(".bootstrap-datetimepicker-widget.dropdown-menu.usetwentyfour.top")),$(a).offset()){var o=$(a).offset().left,r=$("body");a.appendTo(r);var l=0;l=n?t.top+35:t.top-($(a).height()+15),a.css("top",l),a.css("bottom","auto"),a.css("left",o),a.css("z-index",999999)}};if(u.on("click",h),u.on("focus",(function(){setTimeout(h.bind(this),100)})),u.on("dp.change",(function(){r.safeApply((function(){var t=null;t=useUTC?moment(u.val(),m).utcOffset(window.timeZoneOffset,!0):moment(u.val(),m),"time"!=p&&"time-local"!=p||(t=t.year(1970).dayOfYear(1).month(0)),t.isValid()&&c&&d(r,t.toDate())}))})),u.data("initial-value")){var v=u.data("initial-value"),b=null;b=useUTC?moment(v).utcOffset(window.timeZoneOffset):moment(v),u.val(b.format(m)),u.data("initial-value",null)}}else u.wrap('<div style="position:relative"></div>');u.datetimepicker(g),"true"!==s.fromGrid&&u.on("dp.change",(function(){$(this).is(":visible")&&($(this).trigger("change"),r.safeApply((function(){var t=u.val(),n=null;n=useUTC?moment(t,m).utcOffset(window.timeZoneOffset,!0):moment(t,m),"time"!=p&&"time-local"!=p||(n=n.year(1970).dayOfYear(1).month(0)),n.isValid()&&c&&d(r,n.toDate())})))})),c&&(c.$formatters.push((t=>t?moment(t).format(m):null)),c.$parsers.push((t=>{var n=moment(t,m);return n.isValid()?n.toDate():null})),u.on("dp.change",(function(){r.$apply((()=>{var t=u.val(),n=moment(t,m);n.isValid()&&c.$setViewValue(n.toDate())}))})))}else if("number"==p||"money"==p||"integer"==p||"money-decimal"==p){removeMask=!0;var y=m.trim().replace(/\./g,"").replace(/\,/g,"").replace(/#/g,"").replace(/0/g,"").replace(/9/g,""),k="",w="",S="",C=",",D=0;m.startsWith(y)?k=y:m.endsWith(y)&&(w=y);var T=m.trim().replace(k,"").replace(w,"").trim();T.startsWith("#.")?S=".":T.startsWith("#,")&&(S=",");var x=null;if(-1!=T.indexOf(",0")?(C=",",x=",0"):-1!=T.indexOf(".0")&&(C=".",x=".0"),null!=x)D=T.substring(T.indexOf(x)+1).length;var M="numeric";0==D&&(M="integer"),"money-decimal"==p&&(M="currency");var I={rightAlign:["money","money-decimal"].includes(p),allowMinus:!0,prefix:k,suffix:w,radixPoint:C,digits:D,groupSeparator:S,autoGroup:!!S};u.inputmask(M,I),useInputMaskPlugin(u,c,r,d,m)}else{let t=["D","M","Y","H","m","s"],n=n=>(t.forEach((t=>n=n.replaceAll(t,"9"))),n);if(m=n(m),s.maskPlaceholder){g={placeholder:s.maskPlaceholder};u.inputmask(m,g),useInputMaskPlugin(u,c,r,d,m)}else u.mask(m),useMaskPlugin(u,c,r,d,!1)}}}}function useInputMaskPlugin(t,n,a,o,r){var l=$(t),s=function(){$(this).data("rawvalue",$(this).inputmask("unmaskedvalue"))};$(t).on("keydown",s).on("keyup",s),n&&(n.$formatters.push((function(t){return null!=t&&null!=t&&""!==t?format(r,t):null})),n.$parsers.push((function(t){if(null!=t&&null!=t&&""!==t){var n=l.inputmask("unmaskedvalue");if(""!==n){let t=l.data("type");return"number"==t||"money"==t||"integer"==t||"money-decimal"==t?Number(n.replace(",",".")):n}}return null})))}function useMaskPlugin(t,n,a,o,r){var l=$(t),s=function(){r&&$(this).data("rawvalue",$(this).cleanVal())};$(t).on("keydown",s).on("keyup",s),r&&n&&(n.$formatters.push((function(t){return t?l.masked(t):null})),n.$parsers.push((function(t){return t?l.cleanVal():null})))}function parseMaskType(t,n){return"datetime"==t||"datetime-local"==t?"Format.DateTime"==(t=n.instant("Format.DateTime"))&&(t="DD/MM/YYYY HH:mm:ss"):"date"==t?"Format.Date"==(t=n.instant("Format.Date"))&&(t="DD/MM/YYYY"):"time"==t||"time-local"==t?"Format.Hour"==(t=n.instant("Format.Hour"))&&(t="HH:mm:ss"):"month"==t?t="MMMM":"number"==t?"Format.Decimal"==(t=n.instant("Format.Decimal"))&&(t="#.#00,00"):"money"==t||"money-decimal"==t?"Format.Money"==(t=n.instant("Format.Money"))&&(t="#.#00,00"):"integer"==t?"Format.Integer"==(t=n.instant("Format.Integer"))&&(t="#,##0.####"):"week"==t?t="dddd":"tel"==t?t="(00) 00000-0000;0":("text"==t||"string"==t)&&(t=""),t}function transformText(){return{restrict:"E",require:"?ngModel",link:function(t,n,a,o){var r=function(t,n){if(t){if(null!=n){if("uppercase"===t.css("text-transform"))return n.toUpperCase();if("lowercase"===t.css("text-transform"))return n.toLowerCase()}return n}};o&&(o.$formatters.push((function(t){return r(n,t)})),o.$parsers.push((function(t){return r(n,t)})))}}}function cronFrame($compile,$sce,$parse){"use strict";return{restrict:"AE",link:function(scope,element,attrs,ngModelCtrl){scope.fragment=scope.fragment||{};var framentMap=scope.fragment[element.parent.id]||{};scope.$watch((function(){return attrs.origin}),(function(newVal){let template="",style=attrs.style||"",clazz=attrs.class||"";if(attrs.origin)if(attrs.type||(attrs.type="include"),"include"==attrs.type){let str=`<div style="${style}" class="${clazz}" ng-include="'${attrs.origin}'" ng-if="true"></div>`;if(template=$(str),attrs.params)try{let params=eval(attrs.params);for(let t in params){let n=params[t];"expression"==n.type?scope.$watch(n.value,(function(t){framentMap[n.key]=t;var a=$(str);a.attr("onload",`params = ${JSON.stringify(framentMap)}`);var o=$compile(a)(scope);element.html(o)})):framentMap[n.key]=n.value}template.attr("onload",`params = ${JSON.stringify(framentMap)}`)}catch(t){console.error(t)}}else if("frame"==attrs.type){var url=$sce.trustAsResourceUrl(attrs.origin);template=$(`<iframe style="${style}" class="${clazz}" ng-src="${url}" width="100%" height="100%" loading="lazy"></iframe>`)}element.html(template),$compile(template)(scope)}))}}}function cronReportViewer(t){return{restrict:"E",replace:!0,require:"ngModel",link:function(t,n,a,o){function r(a){var o=JSON.parse(a),r={element:n};t.$eval(o.reportCommand||o.dashboardCommand,r)}r(a.options);let l=n[0].parentElement;for(;l;)if("BODY"===l.tagName)l=null;else{if(l.classList.contains("tab-pane"))break;l=l.parentElement}if(l&&!l.classList.contains("active")){new MutationObserver((function(t,n){for(let o of t)if("class"===o.attributeName&&o.target.classList.contains("active")){r(a.options),n.disconnect();break}})).observe(l,{attributes:!0})}var s=null;t.$watch((function(){return a.options}),(function(t,n){t!==n&&(s&&(clearInterval(s),s=null),s=setTimeout(function(){r(t)}.bind(this),500))}))}}}maskDirectiveAsDate.$inject=["$compile","$translate","$parse"],maskDirectiveMask.$inject=["$compile","$translate","$parse"],cronReportViewer.$inject=["$compile"],cronFrame.$inject=["$compile","$sce","$parse"],function($app){app.common={generateId:function(){var t=Math.floor(65536*(1+Math.random())).toString(16).substring(1);return"0123456789".indexOf(t.substr(0,1))>-1?this.generateId():t}};var isoDate=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,ISO_PATTERN=new RegExp("(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))");Number.MAX_SAFE_INTEGER_32=2147483647;var patternFormat=function(t){return t&&$(t).attr("format")||"DD/MM/YYYY"},parsePermission=function(t){var n={visible:{public:!0},enabled:{public:!0},render:{public:!0},notvisible:{public:!1},notenabled:{public:!1},notrender:{public:!1}};if(t)for(var a=t.toLowerCase().trim().split(","),o=0;o<a.length;o++){var r=a[o].trim();if(r){var l=r.split(":");if(2==l.length){var s=l[0].trim(),c=l[1].trim();if(c){for(var d=c.split(";"),u={},p=0;p<d.length;p++){var m=d[p].trim();m&&(u[m]=!0)}n[s]=u}}}}return n};app.directive("cronCalendar",["$timeout",function(t){return{restrict:"E",link:async function(t,n,a,o){let r={};try{r=JSON.parse(a.options)}catch(t){console.error(t)}const l=$(n),s=navigator.language||navigator.userLanguage,c=r.expressionInitialDate,d=r.expressionSelectDates,u=r.expressionDisableDates,p=r.expressionMinDate,m=r.expressionMaxDate,f=r.expressionOnChange,g=r.expressionOnNavigate,h=c?await t.$eval(generateBlocklyCall(c,!0)):new Date,v=d&&r.isSelectableMultiple?await t.$eval(generateBlocklyCall(d,!0)):[],b=u?await t.$eval(generateBlocklyCall(u,!0)):null,y=p?await t.$eval(generateBlocklyCall(p,!0)):new Date(1900,0,1),k=m?await t.$eval(generateBlocklyCall(m),!0):new Date(2099,11,31);l.kendoCalendar({culture:s.startsWith("pt")?"pt-BR":"en-US",componentType:r.isClassicType?"classic":"modern",selectable:r.isSelectableSingle?"single":"multiple",weekNumber:r.showWeekNumbers,value:h,selectDates:v,disableDates:b,min:y,max:k,start:r.startView});let w=l.data("kendoCalendar");w.bind("change",(function(){this.value();f&&t.$eval(generateBlocklyCall(f))})),w.bind("navigate",(function(){this.view(),this.current();f&&t.$eval(generateBlocklyCall(g))}))}}}]),app.directive("justGage",["$timeout",function(t){return{restrict:"EA",scope:{id:"@",class:"@",min:"=",max:"=",title:"@",label:"@",value:"@",options:"="},template:'<div id="{{id}}-justgage" class="{{class}}"></div>',link:function(n,a,o){t((function(){var t={id:n.id+"-justgage",min:n.min||0,max:n.max||100,title:n.title,label:n.label||"",value:n.value};if(n.options)for(var a in n.options)t[a]=n.options[a];var o=new JustGage(t);n.$watch("max",(function(t){void 0!==t&&o.refresh(n.value,t)}),!0),n.$watch("value",(function(t){void 0!==t&&o.refresh(t)}),!0)}))}}}]),app.directive("crnAnchor",["$rootScope","$location","$anchorScroll",function(t,n,a){return{restrict:"A",link:function(t,n,o){n.bind("click",(function(){let t=o.crnAnchor;a(t),$("#"+t).get(0).focus()}))}}}]),app.directive("crnTooltip",(function(){return{restrict:"A",link:function(t,n,a){if(a.crnTooltip&&a.crnTooltip.toString()&&a.crnTooltip.toString().trim().length>0)try{let t=JSON.parse(a.crnTooltip.toString());t.content&&t.content.toString()&&a.crnTooltip.toString().trim().length>0&&$(n).kendoTooltip(t).data("kendoTooltip")}catch(t){console.error("Formato do atributo tooltip deve ser um json."),console.error("Valor atual: "+a.crnTooltip),console.error("Error ocorrido: "+t)}}}})),app.directive("input",transformText),app.directive("textarea",transformText);var generateBlocklyCall=function(t,n){var a="";if(!t)return a;if("client"==t.type){a="cronapi.client('"+t.blocklyClass+"."+t.blocklyMethod+"')";var o="";t.blocklyParams.forEach((function(t){o.length>0&&(o+=", "),o+=t.value?t.value:"null"})),a+=".run("+o+")"}else if("server"==t.type){a="cronapi.server('"+(t.blocklyClass+"."+t.blocklyMethod)+"')"+(n?".toPromise()":"");o="";t.blocklyParams.forEach((function(t){o.length>0&&(o+=", "),o+=t.value?t.value:"null"})),a+=".run("+o+")"}return a};app.directive("asDate",maskDirectiveAsDate).directive("ngDestroy",(function(){return{restrict:"A",link:function(scope,element,attrs,ctrl){element.on("$destroy",(function(){attrs.ngDestroy&&attrs.ngDestroy.length>0&&(attrs.ngDestroy.indexOf("app.")>-1||attrs.ngDestroy.indexOf("blockly.")>-1?scope.$eval(attrs.ngDestroy):eval(attrs.ngDestroy))}))}}})).directive("dynamicImage",["$compile",function(t){return{restrict:"E",replace:!0,scope:{ngModel:"@",width:"@",height:"@",style:"@",class:"@"},require:"ngModel",template:"<div></div>",init:function(t){t.ngModel||(t.ngModel=""),t.width||(t.width="128"),t.height||(t.height="128"),t.style||(t.style=""),t.class||(t.class=""),this.containsLetter(t.width)||(t.width+="px"),this.containsLetter(t.height)||(t.height+="px")},containsLetter:function(t){for(var n,a=0;a<t.length;a++){n=!0;for(var o=0;o<10;o++)parseInt(t[a])==o&&(n=!1);if(n)break}return n},link:function(n,a,o){this.init(n);var r=n,l=o.ngRequired&&"true"==o.ngRequired?"required":"";a.append('<div class="form-group upload-image-component" ngf-drop="" ngf-drag-over-class="dragover"> <img class="$class$" style="$style$; height: $height$; width: $width$;" ng-if="$ngModel$" data-ng-src="{{$ngModel$.startsWith(\'http\') || ($ngModel$.startsWith(\'/\') && $ngModel$.length < 1000)? $ngModel$ : \'data:image/png;base64,\' + $ngModel$}}"> <img class="$class$" style="$style$; height: $height$; width: $width$;" ng-if="!$ngModel$" data-ng-src="/plugins/cronapp-framework-js/img/selectImg.svg" class="btn" ng-if="!$ngModel$" ngf-drop="" ngf-select="" ngf-change="cronapi.internal.setFile(\'$ngModel$\', $file)" accept="image/*;capture=camera"> <button class="remove btn btn-danger btn-xs" ng-if="$ngModel$" ng-click="$ngModel$=null"> <span class="glyphicon glyphicon-remove"></span> <span class="sr-only">{{"Remove" | translate}}</span> </button> <button class="btn btn-info btn-xs start-camera-button" ng-if="!$ngModel$" ng-click="cronapi.internal.startCamera(\'$ngModel$\')"> <span class="glyphicon glyphicon-facetime-video"></span> <span class="sr-only">{{"Upload.camera" | translate}}</span> </button> <input ng-if="!$ngModel$" autocomplete="off" tabindex="-1" class="uiSelectRequired ui-select-offscreen" style="top: inherit !important; margin-left: 85px !important;margin-top: 50px !important;" type=text ng-model="$ngModel$" $required$> </div>'.split("$height$").join(r.height).split("$width$").join(r.width).split("$ngModel$").join(r.ngModel).split("$style$").join(r.style).split("$class$").join(r.class).split("$required$").join(l)),t(a)(a.scope())}}}]).directive("dynamicImage",["$compile","$translate",function(t,n){return{restrict:"A",scope:!0,require:"ngModel",link:function(a,o,r){var l=r.ngRequired&&"true"==r.ngRequired?"required":"",s=o.html();let c=`<div ngf-drop="" ngf-drag-over-class="dragover" style="display: flex; justify-content: center; width: 100%; height: 100%; position: relative; ">\n <img alt="$picture$" style="width: 100%; object-fit: ${r.objectFit||"unset"}" ng-if="$ngModel$"\n data-ng-src="{{$ngModel$.startsWith('http') || ($ngModel$.startsWith('/') && $ngModel$.length < 1000)? $ngModel$ : 'data:image/png;base64,' + $ngModel$}}">\n <input id="$id$" aria-label="$userHtml$" ng-if="!$ngModel$" autocomplete="off" tabindex="-1"\n class="uiSelectRequired ui-select-offscreen"\n style="top: inherit !important; margin-left: 85px !important;margin-top: 50px !important; display: none;" type=text\n ng-model="$ngModel$" $required$>\n <button id="$idbutton$" class="btn" ng-if="!$ngModel$" ngf-drop="" ngf-select=""\n ngf-change="cronapi.internal.setFile('$ngModel$', $file)" ngf-pattern="'image/*'" ngf-max-size="$maxFileSize$">\n $userHtml$ \n </button>\n <button class="remove-image-button btn btn-danger btn-xs" ng-if="$ngModel$" ng-click="$ngModel$=null">\n <span class="glyphicon glyphicon-remove"></span>\n <span class="sr-only">{{"Remove" | translate}}</span>\n </button>\n <button class="btn btn-info btn-xs start-camera-button-attribute" ng-if="!$ngModel$"\n ng-click="cronapi.internal.startCamera('$ngModel$')">\n <span class="glyphicon glyphicon-facetime-video"></span>\n <span class="sr-only">{{"Upload.camera" | translate}}</span>\n </button>\n </div>`;var d="";r.maxFileSize&&(d=r.maxFileSize);var u="";u=r.imgAltText?r.imgAltText:"Admin.view.Picture",c=$(c.split("$id$").join(r.id?r.id+"-input":"textinput-picture").split("$idbutton$").join(r.id?r.id+"-button":"textinput-picture-button").split("$ngModel$").join(r.ngModel).split("$required$").join(l).split("$userHtml$").join(s).split("$maxFileSize$").join(d).split("$picture$").join(n.instant(u))),"true"==r.readOnly&&(c.find(".remove-image-button").remove(),c.find(".start-camera-button-attribute").remove()),o.html(c),t(c)(o.scope())}}}]).directive("dynamicFile",["$compile","$translate",function(t,n){return{restrict:"A",scope:!0,require:"ngModel",link:function(a,o,r){var l=r.ngRequired&&"true"==r.ngRequired?"required":"",s=r.ngModel.split("."),c=s[0],d=s[s.length-1],u=Math.floor(1e3*Math.random()+20),p=o.html(),m="",f=r.acceptFile||"'*.*'";r.maxFileSize&&(m=r.maxFileSize);let g=r.fileInfo?`'${r.fileInfo}'`:"undefined";var h=' <div ng-show="!$ngModel$" ngf-drop="" ngf-drag-over-class="dragover"> <input id="$id$" aria-label="$userHtml$" ng-if="!$ngModel$" autocomplete="off" tabindex="-1" class="uiSelectRequired ui-select-offscreen" style="top: inherit !important;margin-left: 85px !important;margin-top: 50px !important; display: none;" type=text ng-model="$ngModel$" $required$> <button id="$idbutton$" class="btn" ngf-drop="" ngf-select="" ngf-change="cronapi.internal.uploadFile(\'$ngModel$\', $file, \'uploadprogress$number$\', $fileInfo$, $invalidFiles)" ngf-max-size="$maxFileSize$" ngf-pattern="$acceptPattern$" ngf-accept="$acceptFile$"> $userHtml$ </button> <div class="progress" data-type="bootstrapProgress" id="uploadprogress$number$" style="display:none"> <div class="progress-bar" role="progressbar" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100" style="width:0%"> <span class="sr-only"></span> </div> </div> </div> <div ng-show="$ngModel$" class="upload-image-component-attribute"> <button class="btn btn-danger btn-xs ng-scope" style="float:right;" ng-if="$ngModel$" ng-click="$ngModel$=null"> <span class="glyphicon glyphicon-remove"></span> <span class="sr-only">{{"Remove" | translate}}</span> </button> <div> <div ng-bind-html="cronapi.internal.generatePreviewDescriptionByte($ngModel$, $fileInfo$)"></div> <a href="javascript:void(0)" ng-click="cronapi.internal.downloadFileEntity($datasource$,\'$field$\', undefined, $fileInfo$)">$lblDownload$</a> </div> </div> ';h=$(h.split("$id$").join(r.id?r.id+"-input":"textinput-file").split("$idbutton$").join(r.id?r.id+"-button":"textinput-file-button").split("$ngModel$").join(r.ngModel).split("$datasource$").join(c).split("$field$").join(d).split("$number$").join(u).split("$required$").join(l).split("$userHtml$").join(p).split("$maxFileSize$").join(m).split("$lblDownload$").join(n.instant("download")).split("$fileInfo$").join(g).split("$acceptPattern$").join(f).split("$acceptFile$").join(f)),o.html(h),t(h)(o.scope())}}}]).directive("dynamicFile",["$compile",function(t){return{restrict:"E",replace:!0,scope:{ngModel:"@"},require:"ngModel",template:"<div></div>",init:function(t){t.ngModel||(t.ngModel="")},link:function(n,a,o){this.init(n);var r=n,l=o.ngRequired&&"true"==o.ngRequired?"required":"",s=r.ngModel.split("."),c=s[0],d=s[s.length-1],u=Math.floor(1e3*Math.random()+20);a.append(' <div ng-show="!$ngModel$"> <input ng-if="!$ngModel$" autocomplete="off" tabindex="-1" class="uiSelectRequired ui-select-offscreen" style="top: inherit !important;margin-left: 85px !important;margin-top: 50px !important;" type=text ng-model="$ngModel$" $required$> <div class="form-group upload-image-component" ngf-drop="" ngf-drag-over-class="dragover"> <img class="ng-scope" style="height: 128px; width: 128px;" ng-if="!$ngModel$" data-ng-src="/plugins/cronapp-framework-js/img/selectFile.png" ngf-drop="" ngf-select="" ngf-change="cronapi.internal.uploadFile(\'$ngModel$\', $file, \'uploadprogress$number$\')" accept="*"> <progress id="uploadprogress$number$" max="100" value="0" style="position: absolute; width: 128px; margin-top: -134px;">0</progress> </div> </div> <div ng-show="$ngModel$" class="form-group upload-image-component"> <div class="btn btn-danger btn-xs ng-scope" style="float:right;" ng-if="$ngModel$" ng-click="$ngModel$=null"> <span class="glyphicon glyphicon-remove"></span> </div> <div> <div ng-bind-html="cronapi.internal.generatePreviewDescriptionByte($ngModel$)"></div> <a href="javascript:void(0)" ng-click="cronapi.internal.downloadFileEntity($datasource$,\'$field$\')">download</a> </div> </div> '.split("$ngModel$").join(r.ngModel).split("$datasource$").join(c).split("$field$").join(d).split("$number$").join(u).split("$required$").join(l)),t(a)(a.scope())}}}]).directive("pwCheck",[function(){"use strict";return{require:"ngModel",link:function(t,n,a,o){var r="#"+a.pwCheck;n.add(r).on("keyup",(function(){t.$apply((function(){var t=n.val()===$(r).val();o.$setValidity("pwmatch",t)}))}))}}}]).directive("ngClick",[function(){"use strict";return{link:function(scope,elem,attrs,ctrl){if(scope.rowData){var crnDatasource=elem.closest("[crn-datasource]");crnDatasource.length>0&&elem.on("click",(function(){scope.$apply((function(){var datasource=eval(crnDatasource.attr("crn-datasource"));datasource.active=scope.rowData}))}))}}}}]).directive("valid",(function(){return{require:"?ngModel",restrict:"A",link:function(t,n,a,o){var r={cpf:CPF,cnpj:CNPJ};if(o)o.$validators[a.valid]=function(t,o){var l=t||o,s=r[a.valid].isValid(l);return s||null===l?n[0].setCustomValidity(""):n.scope().$applyAsync((function(){n[0].setCustomValidity(n[0].dataset.errorMessage)})),s||!l};else{let t=function(){setTimeout((()=>{var t=n.data("rawvalue");r[a.valid].isValid(t)||null===t?n.removeClass("k-invalid"):n.addClass("k-invalid")}))};n.on("keydown",t).on("keyup",t)}}}})).directive("cronappSecurity",["$rootScope",function(t){return{restrict:"A",priority:Number.MIN_SAFE_INTEGER,link:function(n,a,o){if(""==o.cronappSecurity||null==o.cronappSecurity||null==o.cronappSecurity)return;var r=[],l=JSON.parse(localStorage.getItem("_u"));l&&l.roles&&(r=l.roles.toLowerCase().split(","));for(var s=parsePermission(o.cronappSecurity),c=!1,d=!1,u=!1,p=0;p<r.length;p++){(m=r[p].trim())&&(s.visible[m]&&(c=!0),s.enabled[m]&&(d=!0),s.render[m]&&(u=!0))}for(p=0;p<r.length;p++){var m;(m=r[p].trim())&&(s.notvisible[m]&&(c=!1),s.notenabled[m]&&(d=!1),s.notrender[m]&&(u=!1))}let f=$(a),g=setInterval((()=>{t.renderFinished&&(c||f.hide(),d||f.find("*").addBack().css("pointer-events","none").attr("disabled",!0).off("click").on("click",(t=>t.preventDefault())),u||f.remove(),clearInterval(g))}))}}}]).directive("qr",["$window",function(t){return{restrict:"A",require:"^ngModel",template:'<canvas ng-hide="image"></canvas><img ng-if="image" ng-src="{{canvasImage}}"/>',link:function(n,a,o,r){void 0===n.size&&o.size&&(n.text=o.size);var l=function(){return r.$modelValue||""},s=function(t){return/^[0-9]*$/.test(t)},c=function(t){return/^[0-9A-Z $%*+\-./:]*$/.test(t)},d=function(t){for(var n=0;n<t.length;n++){if(t.charCodeAt(n)>255)return!1}return!0},u=function(t){var a=n.inputMode;return function(t,n){if("NUMBER"===t&&!s(n))throw new Error("The `NUMBER` input mode is invalid for text.");if("ALPHA_NUM"===t&&!c(n))throw new Error("The `ALPHA_NUM` input mode is invalid for text.");if("8bit"===t&&!d(n))throw new Error("The `8bit` input mode is invalid for text.");if(!d(n))throw new Error("Input mode is invalid for text.");return!0}(a=(a=(a=a||(s(t)?"NUMBER":void 0))||(c(t)?"ALPHA_NUM":void 0))||(d(t)?"8bit":""),t)?a:""},p=a.find("canvas")[0],m=!!t.CanvasRenderingContext2D;n.TYPE_NUMBER=n.typeNumber||0,n.TEXT=l(),n.CORRECTION={L:1,M:0,Q:3,H:2}[n.correctionLevel||0]||0,n.SIZE=function(){let t=$(a).outerWidth(),o=$(a).outerHeight(),r=t<o?t:o;return n.size||r}(),n.INPUT_MODE=u(n.TEXT),n.canvasImage="";var f=function(t,a,o,r,l,s){var c=a.replace(/^\s+|\s+$/g,""),d=new QRCode(o,r,s);d.addData(c),d.make();var u=t.getContext("2d"),p=d.getModuleCount(),f=l/p;t.width=t.height=l,m&&(!function(t,n,a,o){for(var r=0;r<a;r++)for(var l=0;l<a;l++){var s=Math.ceil((l+1)*o)-Math.floor(l*o),c=Math.ceil((r+1)*o)-Math.floor(r*o);t.fillStyle=n.isDark(r,l)?"#000":"#fff",t.fillRect(Math.round(l*o),Math.round(r*o),s,c)}}(u,d,p,f),n.canvasImage=t.toDataURL()||"")};n.$watch((function(){return r.$modelValue}),(function(t,a){t===a&&t===n.TEXT||(n.text=r.$modelValue,n.TEXT=l(),n.INPUT_MODE=u(n.TEXT),f(p,n.TEXT,n.TYPE_NUMBER,n.CORRECTION,n.SIZE,n.INPUT_MODE))})),f(p,n.TEXT,n.TYPE_NUMBER,n.CORRECTION,n.SIZE,n.INPUT_MODE)}}}]).directive("uiSelect",["$compile",function(t){return{restrict:"E",require:"ngModel",link:function(n,a,o,r){let l=()=>{"$apply"!==n.$$phase&&"$digest"!==n.$$phase?a.find("i").remove():setTimeout((()=>l()),200)};if(l(),null!=o.required||"true"===o.ngRequired){$(a).append('<input autocomplete="off" tabindex="-1" class="uiSelectRequired ui-select-offscreen" style="left: 50%!important; top: 100%!important;" type=text ng-model="'+o.ngModel+'" required>');var s=$(a).find("input.uiSelectRequired");t(s)(a.scope())}}}}]).filter("raw",["$translate",function(t){return function(t){return null!=t&&void 0!==t?"number"==typeof t||"boolean"==typeof t?t+"":t instanceof Date?"datetimeoffset'"+t.toISOString()+"'":t.length>=10&&t.match(ISO_PATTERN)?"datetimeoffset'"+t+"'":"'"+t.replaceAll("'","''")+"'":""}}]).filter("js",["$translate",function(t){return function(t){return null!=t&&void 0!==t?"number"==typeof t||"boolean"==typeof t?t+"":t instanceof Date?cronapi.toDate(t.toISOString()):t.length>=10&&t.match(ISO_PATTERN)?cronapi.toDate(t):"'"+t+"'":"undefined"}}]).filter("mask",["$translate",function(t){return function(n,a,o){if(!(a=parseMaskType(a,t)))return n;var r;if(void 0!==o?(r="date"==o||"datetime"==o||"time"==o,window.fixedTimeZone||(r=!1)):r=window.fixedTimeZone,a.indexOf(";local")>0&&(r=!1),a=a.replace(";1","").replace(";0","").replace(";local","").trim(),"string"==typeof n&&n.match(isoDate)||n instanceof Date)return r?moment(n).utcOffset(window.timeZoneOffset).format(a):moment(n).format(a);if("number"==typeof n)return format(a,n);if(null!=n&&null!=n&&""!=n&&""!=a){var l=$('<input type="text">');return l.mask(a),l.masked(n)}return n}}]).directive("screenParams",[function(){"use strict";return{link:function(scope,elem,attrs,ctrl){var screenParams=eval(attrs.screenParams);screenParams&&screenParams.length&&screenParams.forEach((function(t){scope.params&&!scope.params[t.key]&&(scope.params[t.key]=t.value||"")}))}}}]).directive("screenVariables",[function(){"use strict";return{link:async function(scope,elem,attrs,ctrl){let screenVariables=eval(attrs.screenVariables);screenVariables&&screenVariables.length&&screenVariables.forEach((async t=>{if(scope.vars&&!scope.vars[t.key]){let n=t.value||"";"blockly"===t.type?n=await scope.$eval(n.replace(".run(",".toPromise().run(")):"expression"===t.type&&(n=n.startsWith("params")?scope.params[n.replace("params.","")]:n.startsWith("vars")?scope.vars[n.replace("vars.","")]:await scope.$eval(n)),scope.vars[t.key]=n}}))}}}]).directive("mask",maskDirectiveMask).directive("cronappFilter",["$compile",function($compile){return{restrict:"A",require:"?ngModel",setFilterInButton:function(t,n,a){var o=t.closest("fieldset");if(o){var r=o.find("button[cronapp-filter]");if(r){var l=r.data("filters");l||(l=[]);var s=-1,c=t.attr("ng-model");if($(l).each((function(t){this.ngModel==c&&(s=t)})),s>-1&&l.splice(s,1),n.length>0){var d={ngModel:c,bindedFilter:n};l.push(d)}r.data("filters",l)}}},makeAutoPostSearch:function(t,n,a,o){var r=t.closest("fieldset");if(r&&r.length>0){var l=r.find("button[cronapp-filter]");if(l&&l.length>0){var s=l.data("filters");s&&s.length>0&&(n="",$(s).each((function(){n+=this.bindedFilter+";"})))}}a.search(n,"true"==o.cronappFilterCaseinsensitive)},inputBehavior:function(scope,element,attrs,ngModelCtrl,$element,typeElement,operator,autopost){var filterTemplate="",filtersSplited=attrs.cronappFilter.split(";"),datasource;if(attrs.crnDatasource)datasource=eval(attrs.crnDatasource);else{var fieldset=$element.closest("fieldset");if(!fieldset)return;var button=fieldset.find("button[cronapp-filter]");if(!button)return;if(!button.attr("crn-datasource"))return;datasource=eval(button.attr("crn-datasource"))}var isOData=datasource.isOData();$(filtersSplited).each((function(){this.length>0&&(""!=filterTemplate&&(filterTemplate+=isOData?" or ":";"),isOData?"="==operator&&"text"==typeElement?filterTemplate+="substringof({value.lower}, tolower("+this+"))":"="==operator?filterTemplate+=this+" eq {value}":"!="==operator?filterTemplate+=this+" ne {value}":">"==operator?filterTemplate+=this+" gt {value}":">="==operator?filterTemplate+=this+" ge {value}":"<"==operator?filterTemplate+=this+" lt {value}":"<="==operator&&(filterTemplate+=this+" le {value}"):filterTemplate+="text"==typeElement?this+"@"+operator+"%{value}%":this+operator+"{value}")})),0==filterTemplate.length&&(filterTemplate=isOData?"{value}":"%{value}%");var selfDirective=this;ngModelCtrl?scope.$watch(attrs.ngModel,(function(t,n){if(!angular.equals(t,n)){var a=$element.data("type")||$element.attr("type"),o=ngModelCtrl.$modelValue;isOData?o instanceof Date?o="datetime-local"==a?"datetimeoffset'"+o.toISOString()+"'":"datetime'"+o.toISOString().substring(0,23)+"'":"number"==typeof o?o+="M":"boolean"==typeof o||(o="'"+o+"'"):o instanceof Date?(o=o.toISOString(),o+="date"==a?"@@date":"time"==a||"time-local"==a?"@@time":"@@datetime"):"number"==typeof o?o+="@@number":"boolean"==typeof o&&(o+="@@boolean");var r=filterTemplate.split("{value}").join(o);if("string"==typeof o)if(r.startsWith("substringof({")){var l=o.split("'").join("").toLowerCase().trim().split(" "),s="";l.forEach((function(t,n){s+=r.split("{value.lower}").join("'"+t+"'"),n<l.length-1&&(s+=" or ")})),r=s}else r=r.split("{value.lower}").join(o.toLowerCase());else r=r.split("{value.lower}").join(o);0==ngModelCtrl.$viewValue.length&&(r=""),selfDirective.setFilterInButton($element,r,operator),autopost&&selfDirective.makeAutoPostSearch($element,r,datasource,attrs)}})):"text"==typeElement?$element.on("keyup",(function(){var datasource=eval(attrs.crnDatasource),value=void 0;value=ngModelCtrl&&null!=ngModelCtrl?ngModelCtrl.$viewValue:this.value;var bindedFilter=filterTemplate.split("{value}").join(value);0==this.value.length&&(bindedFilter=""),selfDirective.setFilterInButton($element,bindedFilter,operator),autopost&&selfDirective.makeAutoPostSearch($element,bindedFilter,datasource,attrs)})):$element.on("change",(function(){var datasource=eval(attrs.crnDatasource),value=void 0,typeElement=$(this).attr("type");if(null!=attrs.asDate&&(typeElement="date"),ngModelCtrl&&null!=ngModelCtrl)value=ngModelCtrl.$viewValue;else if("checkbox"==typeElement)value=$(this).is(":checked");else if("date"==typeElement){if(value=this.value,this.value.length>0){var momentDate=moment(this.value,patternFormat(this));value=momentDate.toDate().toISOString()}}else value=this.value;var bindedFilter=filterTemplate.split("{value}").join(value);0==value.toString().length&&(bindedFilter=""),selfDirective.setFilterInButton($element,bindedFilter,operator),autopost&&selfDirective.makeAutoPostSearch($element,bindedFilter,datasource,attrs)}))},forceDisableDatasource:function(datasourceName,scope){var disableDatasource=setInterval((function(){try{var datasourceInstance=eval(datasourceName);datasourceInstance&&($(document).ready((function(){var t=0,n=setInterval((function(){t<10?(scope.$apply((function(){datasourceInstance.enabled=!1,datasourceInstance.data=[]})),t++):clearInterval(n)}),20)})),clearInterval(disableDatasource))}catch(t){}}),10)},buttonBehavior:function(scope,element,attrs,ngModelCtrl,$element,typeElement,operator,autopost){var datasourceName="";datasourceName=attrs.crnDatasource?attrs.crnDatasource:$element.parent().attr("crn-datasource");var datasource=eval(datasourceName),isOData=datasource.isOData(),requiredFilter=attrs.requiredFilter&&"true"==attrs.requiredFilter.toString();requiredFilter&&this.forceDisableDatasource(datasourceName,scope),$element.on("click",(function(){var $this=$(this),filters=$this.data("filters");if(datasourceName&&datasourceName.length>0&&filters){var bindedFilter="";$(filters).each((function(){""!=bindedFilter&&(bindedFilter+=isOData?" and ":";"),bindedFilter+=this.bindedFilter}));var datasourceToFilter=eval(datasourceName);requiredFilter?(datasourceToFilter.enabled=bindedFilter.length>0,datasourceToFilter.enabled?datasourceToFilter.search(bindedFilter,"true"==attrs.cronappFilterCaseinsensitive):scope.$apply((function(){datasourceToFilter.data=[]}))):datasourceToFilter.search(bindedFilter,"true"==attrs.cronappFilterCaseinsensitive)}}))},link:function(t,n,a,o){var r=$(n),l=r.data("type")||r.attr("type");null!=a.asDate&&(l="date");var s="=";a.cronappFilterOperator&&a.cronappFilterOperator.length>0&&(s=a.cronappFilterOperator);var c=!0;a.cronappFilterAutopost&&"false"==a.cronappFilterAutopost&&(c=!1),setTimeout(function(){"INPUT"==r[0].tagName?this.inputBehavior(t,n,a,o,r,l,s,c):this.buttonBehavior(t,n,a,o,r,l,s,c)}.bind(this),100)}}}]).directive("cronRichEditor",["$compile",function(t){return{restrict:"E",replace:!0,require:"ngModel",parseToTinyMCEOptions:function(t){var n={allowFullScreen:"fullscreen |",allowPage:"fullpage newdocument code pagebreak |",allowPrint:"preview print |",allowTransferArea:"cut copy paste |",allowDoUndo:"undo redo |",allowSymbol:"charmap |",allowEmbeddedImage:"bdesk_photo |",allowFont:"formatselect fontselect fontsizeselect strikethrough bold italic underline removeformat |",allowLinks:"link unlink anchor |",allowParagraph:"alignleft aligncenter alignright alignjustify numlist bullist outdent indent blockquote hr |",allowFormulas:"tiny_mce_wiris_formulaEditor tiny_mce_wiris_formulaEditorChemistry tiny_mce_wiris_CAS |"},a={menubar:!1,statusbar:!1,plugins:"bdesk_photo advlist anchor autolink autoresize autosave charmap code colorpicker contextmenu directionality emoticons fullpage fullscreen hr image imagetools importcss insertdatetime legacyoutput link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace tabfocus table template toc visualblocks visualchars wordcount tiny_mce_wiris colorpicker textcolor",toolbar:"",content_style:""};for(var o in t)o.startsWith("allow")&&t[o]&&(a.toolbar+=" "+n[o]);return a.toolbar+=" forecolor backcolor ",a.menubar=t.showMenuBar,a.statusbar=t.showStatusBar,a.content_style=t.contentStyle,a.readonly=t.allowReadonly,JSON.stringify(a)},link:function(n,a,o,r){var l=JSON.parse(o.options),s=this.parseToTinyMCEOptions(l),c=' <textarea ui-tinymce="$options$" ng-model="$ngModel$" id="$id$" aria-label="cronRichEditor" ng-cron-click="$ngClick$" ng-cron-dblclick="$ngDblclick$" ng-cron-mousedown="$ngMouseDown$" ng-cron-mouseup="$ngMouseUp$" ng-cron-mousemove="$ngMouseMove$" ng-cron-mouseover="$ngMouseOver$" ng-cron-mouseenter="$ngMouseEnter$" ng-cron-mouseleave="$ngMouseLeave$" ng-cron-keydown="$ngKeydown$" ng-cron-keyup="$ngKeyup$" ng-cron-keypress="$ngKeypress$" ng-context-menu="$ngContextMenu$" ng-cron-paste="$ngPaste$" ng-cron-init="$ngInit$" ng-cron-focus="$ngFocus$" ng-cron-blur="$ngBlur$" ng-before-set-content="$ngBeforeSetContent$" ng-set-content="$ngSetContent$" ng-get-content="$ngGetContent$" ng-pre-process="$ngPreProcess$" ng-post-process"$ngPostProcess$" ng-node-change="$ngNodeChange$" ng-cron-undo="$ngUndo$" ng-cron-redo="$ngRedo$" ng-cron-change="$ngChange$" ng-cron-dirty="$ngDirty$" ng-cron-remove="$ngRemove$" ng-exec-command="$ngExecCommand$" ng-paste-pre-process="$ngPastePreProcess$" ng-paste-post-process="$ngPastePostProcess$" ng-add-editor="$ngAddEditor$" ng-remove-editor="$ngRemoveEditor$"> </textarea> ';c=$(c.split("$ngModel$").join(o.ngModel).split("$ngClick$").join(o.ngCronClick||"").split("$ngDblclick$").join(o.ngCronDblclick||"").split("$ngMouseDown$").join(o.ngCronMouseDown||"").split("$ngMouseUp$").join(o.ngCronMouseUp||"").split("$ngMouseMove$").join(o.ngCronMousemove||"").split("$ngMouseOver$").join(o.ngCronMouseOver||"").split("$ngMouseEnter$").join(o.ngCronMouseenter||"").split("$ngMouseLeave$").join(o.ngCronMouseleave||"").split("$ngKeydown$").join(o.ngCronKeydown||"").split("$ngKeyup$").join(o.ngCronKeyup||"").split("$ngKeypress$").join(o.ngCronKeypress||"").split("$ngContextMenu$").join(o.ngContextMenu||"").split("$ngPaste$").join(o.ngCronPaste||"").split("$ngInit$").join(o.ngCronInit||"").split("$ngFocus$").join(o.ngCronFocus||"").split("$ngBlur$").join(o.ngCronBlur||"").split("$ngBeforeSetContent$").join(o.ngBeforeSetContent||"").split("$ngSetContent$").join(o.ngSetContent||"").split("$ngGetContent$").join(o.ngGetContent||"").split("$ngPreProcess$").join(o.ngPreProcess||"").split("$ngPostProcess$").join(o.ngPostProcess||"").split("$ngNodeChange$").join(o.ngNodeChange||"").split("$ngUndo$").join(o.ngCronUndo||"").split("$ngRedo$").join(o.ngCronRedo||"").split("$ngChange$").join(o.ngCronChange||"").split("$ngDirty$").join(o.ngCronDirty||"").split("$ngRemove$").join(o.ngRemove||"").split("$ngExecCommand$").join(o.ngExecCommand||"").split("$ngPastePreProcess$").join(o.ngPastePreProcess||"").split("$ngPastePostProcess$").join(o.ngPastePostProcess||"").split("$ngAddEditor$").join(o.ngAddEditor||"").split("$ngRemoveEditor$").join(o.ngRemoveEditor||"").split("$id$").join(o.id||app.common.generateId()).split("$options$").join(escape(s)));var d=angular.element(c);a.html(""),a.append(d),a.attr("id",null),t(d)(n);let u=$(`cron-rich-editor[ng-model="${o.ngModel}"]`),p=setInterval((()=>{u.find(".mce-container").length&&(u.find("button").each(((t,n)=>{let a=$(n),o=a.parent().attr("aria-label")||"";a.attr("aria-label",o)})),clearInterval(p))}),100)}}}]).directive("cronDashboardViewer",cronReportViewer).directive("cronReportViewer",cronReportViewer).directive("cronTimeline",["$compile","$parse",function($compile,$parse){"use strict";var defaultAdvancedTemplate='<ul class="timeline">\r\n <timeline-event side="" class="ng-scope" ng-repeat="rowData in datasource">\r\n <li class="timeline-event {{rowData[options.fields.field4] == \'2\' ? \'timeline-inverted\' : \'\'}}">\r\n <timeline-badge class="{{$odd ? \'info\' : \'warning\'}} bounce-in">\r\n <div class="timeline-badge">\r\n <i class="glyphicon {{rowData[options.fields.field3] ? rowData[options.fields.field3] : \'glyphicon-check\'}}"></i>\r\n </div>\r\n </timeline-badge>\r\n <timeline-panel class="info bounce-in">\r\n <div class="timeline-panel">\r\n <timeline-heading class="ng-scope">\r\n <div class="timeline-heading">\r\n <h4 class="ng-binding ng-scope">{{rowData[options.fields.field0]}}</h4>\r\n <p class="ng-scope">\r\n <small class="text-muted ng-binding"><i class="glyphicon glyphicon-time"></i>{{rowData[options.fields.field1]|mask:options.fields.mask2:options.fields.type1}}</small>\r\n </p>\r\n </div>\r\n </timeline-heading>\r\n <p ng-if="rowData[options.fields.field2]" class="ng-binding ng-scope">{{rowData[options.fields.field2]}}</p>\r\n </div>\r\n </timeline-panel>\r\n </li>\r\n </timeline-event>\r\n</ul>',getExpression=function(t){return"rowData in ".concat(t).concat(".data")};return{restrict:"E",require:"?ngModel",scope:!0,priority:9999998,terminal:!0,link:function(scope,element,attrs,ngModelCtrl){scope.hasValue=t=>null!=t;var optionsList={},dataSourceName="";try{optionsList=JSON.parse(attrs.options),dataSourceName=optionsList.dataSourceScreen.name;var dataSource=eval(optionsList.dataSourceScreen.name);scope.options=optionsList,attrs.ngModel&&(scope.changeRowDataField=function(t){t=dataSource.getKeyValues(t);var n=Object.keys(t);return 1===n.length&&(t=t[n]),t}),scope.options=optionsList,scope.options.fields={},scope.options.randomModel=Math.floor(9e3*Math.random())+1e3;for(var visibleColumns=[],i=0;i<optionsList.columns.length;i++){var column=optionsList.columns[i];column.visible&&visibleColumns.push(optionsList.columns[i])}for(var i=0;i<visibleColumns.length;i++){var column=visibleColumns[i];column.field&&"Database"==column.dataType&&(scope.options.fields["security"+i]=column.security,scope.options.fields["field"+i]=column.field,scope.options.fields["type"+i]=column.type,scope.options.fields["mask"+i]=column.format)}}catch(t){console.log("CronTimeline invalid configuration! "+t)}scope.options.fields.image&&"do-not-show"!=scope.options.imageType&&(scope.options.imageClassPosition="item-"+scope.options.imageType+"-"+scope.options.imagePosition),scope.options.advancedTemplate||(scope.options.advancedTemplate=defaultAdvancedTemplate);var templateDyn=scope.options.advancedTemplate;for(let t=0;t<visibleColumns.length;t++){let n=visibleColumns[t];if(n.field&&"Database"===n.dataType&&scope.options.fields[`security${t}`]){let n=`ng-if="rowData[options.fields.field${t}]"`,a=`${n} cronapp-security="${scope.options.fields["security"+t]}"`;templateDyn=templateDyn.replace(n,a)}}templateDyn=$(templateDyn),scope.options.xattrTextPosition=attrs.xattrTextPosition,$(element).replaceWith(templateDyn);var $element=templateDyn,eventItem=$element.find("timeline-event");"rowData in datasource"===$(eventItem).attr("ng-repeat")&&eventItem.attr("ng-repeat",getExpression(dataSourceName)),$compile(templateDyn,null,9999998)(scope)}}}]).directive("cronScheduler",["$compile","$translate",function($compile,$translate){return{estrict:"E",replace:!0,initCulture:function(){var t=$translate.use(),n=(t=t.replace(/_/gm,"-")).split("-");n[n.length-1]=n[n.length-1].toUpperCase(),t=n.join("-"),kendo.culture(t)},getSchedulerModel:function(t){let n={id:"id",fields:{}};for(let a in t)n.fields[a]={from:t[a].name,validation:{required:!t[a].nullable}};return n},mergeSchedulerEventWithDatasourceActive:(t,n)=>Object.assign(t.active,n),setDatasourceActiveItem:function(t,n,a){if(n){for(let o in t.data){let r=t.data[o][a];if(null!==r&&r===n[a])return t.active=t.copy(t.data[o],{}),t.active}return t.startEditing({}),t.active}},getSchedulerProperties:async function(t,n,a){let o="Expression"===t.initialDateStrategy?await a.$eval(generateBlocklyCall(t.initialDateBlocklyInfo,!0)):t.initialDate,r={start:null,end:null},l=(t,n)=>new Promise((a=>{let o=setInterval((()=>{let r=$(`[data-id="${t}"]`);if(r.length){clearInterval(o);let t="click";$(".km-pane-wrapper").length&&(t="touchstart"),r.off(t),r.on(t,(t=>{n(t),t.stopImmediatePropagation()})),a()}}),100)})),s=[];if(t.views)for(let n in t.views){let a=t.views[n];a.visible&&s.push(a)}else t.showDayTab&&s.push("day"),t.showAgendaTab&&s.push("agenda"),t.showMonthTab&&s.push("month"),t.showTimelineTab&&s.push("timeline"),t.showWeekTab&&s.push("week"),t.showWorkWeekTab&&s.push("workWeek");let c={dateHeaderTemplate:kendo.template(`#=kendo.toString(date, ${kendo.culture().name.toLowerCase().includes("pt")?"'ddd dd/M'":"'ddd M/dd'"})#`),showWorkHours:t.showWorkHours,selectable:!0,date:o,mobile:!1,allDaySlot:t.allDaySlot,messages:{editor:{timezone:$translate.instant("TimezoneEvent")}},currentTimeMarker:t.currentTimeMarker?{updateInterval:1e4,useLocalTimezone:!1}:t.currentTimeMarker,views:s,navigate:function(t){t.sender.view()},dataBound:function(n){n.sender.view();(n=>{let a=n.sender.view(),o=n.sender.element.find(".k-scheduler-header.k-state-default.changed").length;"month"===a.name&&!o&&t.useCustomDaysOfWeek&&(n.sender.element.find(".k-scheduler-header.k-state-default").html(`<div class="k-scheduler-header k-state-default">\n <div class="k-scheduler-header-wrap">\n <table class="k-scheduler-table">\n <tbody>\n <tr>\n <th colspan="1" class="">${t.daysOfWeek.sunday}</th>\n <th colspan="1" class="">${t.daysOfWeek.monday}</th>\n <th colspan="1" class="">${t.daysOfWeek.tuesday}</th>\n <th colspan="1" class="">${t.daysOfWeek.wednesday}</th>\n <th colspan="1" class="">${t.daysOfWeek.thursday}</th>\n <th colspan="1" class="">${t.daysOfWeek.friday}</th>\n <th colspan="1" class="">${t.daysOfWeek.saturday}</th>\n </tr>\n </tbody>\n </table>\n </div>\n </div>`),n.sender.element.find(".k-scheduler-header.k-state-default").addClass("changed"))})(n),(n=>{if(!n.sender.element.find(".k-more-events.k-button.hooked").length){let o=n.sender.view(),r=t.views.find((t=>t.type===o.name)),s=app.common.generateId();n.sender.element.find(".k-more-events.k-button").attr("data-id",s);let c=generateBlocklyCall(r.moreEventsBlockly);c&&l(s,(n=>{let o=$(n.currentTarget).prev().data("uid"),r={scheduleData:{type:"seeAll",selectedDate:t.refComponent.dataItems().find((t=>t.uid==o)).start}};a.$eval(c,r)})),n.sender.element.find(".k-more-events.k-button").addClass("hooked")}})(n)},eventTemplate:n=>{let o={scheduleData:n},r=t=>n.description?(t?" - ":"")+n.description:"",s=app.common.generateId(),c=t.refComponent.view().name,d=t.views.find((t=>t.type===c)),u=[];u.push(`<div class='k-event-template' data-id='${s}'>`),"agenda"!==c?u.push(`<div class='k-event-title'>${n.title}${d.showDescription?r(!0):""} </div>`):(u.push(`<div class='k-event-title'>${n.title}</div>`),!d.showDescription||u.push(`<div class='k-event-description'>${r(!1)}</div>`)),u.push("</div>");let p=generateBlocklyCall(d.blockly);return p&&l(s,(()=>{a.$eval(p,o)})),u.join("")},change:t=>{t&&t.events&&t.events.length?this.setDatasourceActiveItem(n,t.events[0],"id"):n.startInserting({}),console.log("Active: ",n.active)},edit:function(n){if(t&&t.allowCustomAction){let o=n.container,r=t.customActionLabel?t.customActionLabel:$translate.instant("Details"),l=$('<a class="k-button">'+r+"</a>");l.click((function(n){a.safeApply((()=>{a.$eval(generateBlocklyCall(t.customActionBlockly))}))})),o.find(".k-edit-buttons").append(l)}},dataSource:{batch:!1,transport:{isComponentInDocument:function(t){return!!t&&$(document).has(t.element[0]).length},getCurrentCallbackForPush:function(t,n){return t||n},pushAction:function(a,o){return r=>{if(this.isComponentInDocument(t.refComponent)){let n=this.getCurrentCallbackForPush(o,t.refComponent)[a];n?n(r):(t.fromRead="read"===a,t.refComponent.dataSource.read())}else["read","memorydelete","overRideRefresh"].includes(a)||n.removeDataSourceEvents(this.options.dataSourceEventsPush)}},push:function(t){!this.dataSourceEventsPush&&n&&(this.dataSourceEventsPush={create:this.pushAction.bind(this)("pushUpdate",t),update:this.pushAction.bind(this)("pushUpdate",t),delete:this.pushAction.bind(this)("pushDestroy",t),read:this.pushAction.bind(this)("read",t),memorycreate:this.pushAction.bind(this)("pushUpdate",t),memoryupdate:this.pushAction.bind(this)("pushUpdate",t),memorydelete:this.pushAction.bind(this)("pushDestroy",t)},n.addDataSourceEvents(this.dataSourceEventsPush))},read:function(a){a.data=a.data||{};let l=!1;try{t.kendoCallback?t.fromRead?t.isReading?a.error():(t.isReading=!0,t.kendoCallback.success(n.data)):l=!0:(t.kendoCallback=a,l=!0)}finally{t.fromRead=!1,t.isReading=!1}if(l)if(s=a.data,angular.equals(r,s))a.error();else{r=a.data,jQuery.isEmptyObject(a.data)&&(a.data[t.schedulerDataModel.start.name]=o);let l=kendo.data.transports.odata.parameterMap(a.data,"read"),s={};s.params=l,n.fetch(s,{success:function(t){a.success(angular.copy(t))},canceled:function(t){a.error(angular.copy(t))}},!1)}var s}.bind(this),update:a=>{let o=this.parseToDatasourceSchema(n,a.data,t);n.startEditing(n.active),this.mergeSchedulerEventWithDatasourceActive(n,o),n.update(n.active,(t=>{let o=angular.copy(t);a.success(o),n.fetch({},{success:t=>{this.setDatasourceActiveItem(n,o,"id")},canceled:t=>{}},!1)}),(t=>{a.error(angular.copy(t))}))},create:a=>{let o=this.parseToDatasourceSchema(n,a.data,t);this.mergeSchedulerEventWithDatasourceActive(n,o),n.insert(n.active,(t=>{let o=angular.copy(t);a.success(o),n.fetch({},{success:t=>{this.setDatasourceActiveItem(n,o,"id")},canceled:function(t){}},!1)}),(t=>{a.error(angular.copy(t))}))},destroy:function(a){n.removeSilent(this.parseToDatasourceSchema(n,a.data,t),(function(t){a.success(angular.copy(t))}),(function(t){a.error(angular.copy(t))}))}.bind(this)},schema:{model:this.getSchedulerModel(t.schedulerDataModel)}}};return t.views||(c.editable=t.editable),window.fixedTimeZone&&window.timeZone&&(c.timezone=window.timeZone),c},showError:function(t,n,a){let o={message:a,title:n,delay:null};t.Notification.error(o)},parseToDatasourceSchema:function(t,n,a){let o={};for(let a in t.schema){let r=t.schema[a].name;o[r]=n[r]}return o[a.schedulerDataModel.isAllDay.name]=!0===o[a.schedulerDataModel.isAllDay.name],o[a.schedulerDataModel.id.name]||delete o[a.schedulerDataModel.id.name],o},link:function(scope,element,attrs,ngModelCtrl){let schedulerElement=$("<div></div>"),options=JSON.parse(attrs.options||"{}"),datasource;if(options.dataSourceScreen&&options.dataSourceScreen.entityDataSource&&(datasource=eval(options.dataSourceScreen.entityDataSource.name)),!datasource){let t={};return void $translate("DatasourceNotFoundMessage").then((n=>(t.message=n,$translate("Scheduler")))).then((n=>(t.component=n,$translate("DatasourceNotFoundTitle")))).then((n=>{t.title=n,this.showError(scope,t.title,t.message.replace("{0}",t.component))}))}if(jQuery.isEmptyObject(options.schedulerDataModel))return;let baseUrl="node_modules/cronapp-lib-js/dist/js/kendo-ui/js/messages/kendo.messages.";"pt_br"===$translate.use()?baseUrl+="pt-BR.min.js":baseUrl+="en-US.min.js",this.initCulture(),$.getScript(baseUrl,async function(){app.kendoHelper.getDataSource(options.dataSourceScreen.entityDataSource,scope,!0,options.dataSourceScreen.rowsPerPage);let t=await this.getSchedulerProperties(options,datasource,scope);schedulerElement.kendoScheduler(t);let n=schedulerElement.data("kendoScheduler");options.refComponent=n,n.bind("navigate",(function(t){n._previousView=t.sender.view()})),n.bind("dataBound",(function(t){if(n._currentView=t.sender.view(),n._previousView){if(!function(t,n){if(!t||!n)return;let a;return t.forEach(((t,o)=>n.forEach((n=>{a=t.getTime()===n.getTime()})))),a}(n._previousView._dates,n._currentView._dates)){let t={};t[options.schedulerDataModel.start.name]=n._currentView._startDate,t[options.schedulerDataModel.end.name]=n._currentView._endDate,n.dataSource.read(t),n._previousView=n._currentView}}}))}.bind(this)),element.html(schedulerElement),$compile(schedulerElement)(element.scope())}}}]).directive("cronGrid",["$compile","$translate",function($compile,$translate){return{restrict:"E",replace:!0,require:"ngModel",initCulture:function(){var t=$translate.use(),n=(t=t.replace(/_/gm,"-")).split("-");n[n.length-1]=n[n.length-1].toUpperCase(),t=n.join("-"),kendo.culture(t)},changeObjectField:function(t,n){n=t.getKeyValues(n);var a=Object.keys(n);return 1===a.length&&(n=n[a]),n},removeSpecialChar:function(t){return t.replace(/[^a-zA-Z0-9]/g,"").toLowerCase()},getModelName:function(t){return t?this.removeSpecialChar(t.ngModel):"subgrid"},generateToolbarButtonCall:function(toolbarButton,scope,options,attrs){var buttonCall,generateObjTemplate=function(t,n,a){return{template:function(){return createTemplateButton(t,n,a)}.bind(this)}}.bind(this),createTemplateButton=function(functionToCall,title,iconClass){var template="";let security=toolbarButton.security?`cronapp-security="${toolbarButton.security}"`:"",modelName=this.getModelName(attrs),buttonType=this.removeSpecialChar(toolbarButton.type),buttonDesc=toolbarButton.title?this.removeSpecialChar(toolbarButton.title):this.removeSpecialChar(toolbarButton.iconClass),buttonId=`${modelName}-${buttonType}-${buttonDesc}`;"SaveOrCancelChanges"==toolbarButton.type?template=toolbarButton.saveButton?'<a #SECURITY# role="button" class="saveorcancelchanges k-button k-button-icontext k-grid-save-changes" data-id="#BUTTONID#" href="javascript:void(0)"><span class="k-icon k-i-check"></span>#TITLE#</a>':'<a #SECURITY# role="button" class="saveorcancelchanges k-button k-button-icontext k-grid-cancel-changes" data-id="#BUTTONID#" href="javascript:void(0)"><span class="k-icon k-i-cancel" ></span>#TITLE#</a>':"Blockly"==toolbarButton.type||"Customized"==toolbarButton.type?template='<a #SECURITY# class="k-button k-grid-custom" data-id="#BUTTONID#" href="javascript:void(0)"><span class="#ICONCLASS#" ></span>#TITLE#</a>':"Native"==toolbarButton.type&&"create"==toolbarButton.title?template='<a #SECURITY# role="button" data-id="#BUTTONID#" class="k-button k-button-icontext k-grid-add" href="javascript:void(0)"><span class="k-icon k-i-plus"></span>{{"Add" | translate}}</a>':"Native"==toolbarButton.type&&"excel"==toolbarButton.title?template='<a #SECURITY# role="button" data-id="#BUTTONID#" class="k-button k-button-icontext k-grid-excel" href="javascript:void(0)"><span class="k-icon k-i-file-excel"></span>{{"exportExcel" | translate}}</a>':"Native"==toolbarButton.type&&"pdf"==toolbarButton.title&&(template='<a #SECURITY# role="button" data-id="#BUTTONID#" class="k-button k-button-icontext k-grid-pdf" href="javascript:void(0)"><span class="k-icon k-i-file-pdf"></span>{{"exportPDF" | translate}}</a>'),template=template.split("#BUTTONID#").join(buttonId).split("#FUNCTIONCALL#").join(this.encodeHTML(functionToCall)).split("#TITLE#").join(title).split("#ICONCLASS#").join(iconClass).split("#SECURITY#").join(security);var cronappDatasource=eval(options.dataSourceScreen.entityDataSource.name),waitRender=setInterval(function(){$(`[data-id=${buttonId}]`).length>0&&(scope.safeApply((function(){var t=angular.element($(`[data-id=${buttonId}]`));$compile(t)(scope),$(`[data-id=${buttonId}]`).attr("id",buttonId)})),$(`[data-id=${buttonId}]`).click(function(){var t=options.refComponent,n=[];t.select().each((function(){var a=t.dataItem(this);cronappDatasource.data.forEach((function(t){t.__$id==a.__$id&&n.push(t)}))}));var a={item:n.length?cronappDatasource.active:null,index:n.length?cronappDatasource.cursor:null};let o=[];options.fieldType&&"key"===options.fieldType?n.forEach((t=>{o.push(this.changeObjectField(cronappDatasource,cronappDatasource.findObjInDs(t)))})):o=n;var r={currentData:cronappDatasource.data,datasource:cronappDatasource.copyWithoutAngularObj(),selectedIndex:n.length?cronappDatasource.cursor:null,index:n.length?cronappDatasource.cursor:null,selectedRow:n.length?cronappDatasource.active:null,consolidated:a,item:n.length?cronappDatasource.active:null,selectedKeys:n.length?cronappDatasource.getKeyValues(cronappDatasource.findObjInDs(n[0]),!0):null,selectedRows:o};scope.$eval(functionToCall,r)}.bind(this)),clearInterval(waitRender))}.bind(this),200);return template}.bind(this),call="";call="Customized"==toolbarButton.type?toolbarButton.execute:toolbarButton.methodCall?toolbarButton.methodCall:generateBlocklyCall(toolbarButton.blocklyInfo);var title=null==toolbarButton.title?"":toolbarButton.title;return buttonCall=generateObjTemplate(call,title,toolbarButton.iconClass),buttonCall},generateModalSaveOrCancelButtonCall:function(t,n,a,o,r){var l=app.common.generateId();return buttonCall=function(t,n,a,o){var s;s=(s="save"==t?'<button id="#BUTTONID#" aria-label="#ARIALABELSAVE#" class="btn btn-primary btn-fab ng-binding grid-save-button-modal k-button" data-component="crn-button" ng-click="#FUNCTIONCALL#" onclick="(!#DATASOURCENAME#.missingRequiredField(true)?$(\'##MODALID#\').modal(\'hide\'):void(0))"><span class="k-icon k-i-check"></span></button>':"saveAdd"==t?'<button id="#BUTTONID#" aria-label="#ARIALABELSAVEADD#" class="btn btn-primary btn-fab ng-binding grid-save-add-button-modal k-button" data-component="crn-button" ng-click="#FUNCTIONCALL#"><span class="k-icon k-i-plus"></span></button>':'<button id="#BUTTONID#" aria-label="#ARIALABELCANCEL#" type="button" class="btn btn-default btn-fab ng-binding k-button" data-component="crn-button" data-dismiss="modal"><span class="k-icon k-i-cancel"></span></button>').split("#BUTTONID#").join(l).split("#FUNCTIONCALL#").join(n).split("#DATASOURCENAME#").join(a).split("#ARIALABELSAVE#").join($translate.instant("SaveChanges")).split("#ARIALABELSAVEADD#").join($translate.instant("SaveAddChanges")).split("#ARIALABELCANCEL#").join($translate.instant("CancelChanges")).split("#MODALID#").join(o);var c=setInterval((function(){$("#"+l).length>0&&r.safeApply((function(){var t=angular.element($("#"+l));$compile(t)(r),clearInterval(c)}))}),200);return s}(t,n,a,o),buttonCall},addButtonsInModal:function(t,n,a,o){var r=$("#"+t).find(".modal-footer");if(!r.find(".grid-save-button-modal").length){var l=n+".post();",s=this.generateModalSaveOrCancelButtonCall("save",l,n,t,a);if(r.append(s),o){let o=this.generateModalSaveOrCancelButtonCall("saveAdd",l+n+".startInserting();",n,t,a);r.append(o)}var c=this.generateModalSaveOrCancelButtonCall("cancel",null,null,null,a);r.append(c)}},getObjectId:function(t){if(t){if(t instanceof Date){var n=moment.utc(t);t=new Date(n.format("YYYY-MM-DDTHH:mm:ss"))}else if("object"==typeof t)if(t.id)t=t.id;else for(var a in t){t=t[a];break}}else t="";return t},encodeHTML:function(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},decodeHTML:function(t){return t.replace(/'/g,"'").replace(/"/g,'"').replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&")},getColumnByField:function(t,n){var a=null;return t.columns.forEach((function(t){t.field==n&&(a=t)})),a},resizeGridUsingWidthForDevice:function(t){for(let n=0;n<t.columns.length;n++){let a=this.getWidthForDevice(t.columns[n]);t.columns[n].width=a.width,a.visible?t.showColumn(n):t.hideColumn(n)}if(t.options.hasSecurity){$(t.element.find("col")).last().css("width","0px")}},getWidthForDevice:function(t){let n=$(window).width(),a=function(n){let o;return t.widthDevices.forEach((t=>{t.device===n&&(o=t)})),void 0===o&&(o="deviceSmall"===n?a("deviceMedium"):"deviceMedium"===n?a("deviceDesktop"):"deviceDesktop"===n?a("deviceBig"):t.widthDevices[0]),o},o={width:t.width};return void 0!==t.visible&&null!==t.visible?o.visible=t.visible:o.visible=!t.hidden,null!==t.widthDevices&&void 0!==t.widthDevices&&t.widthDevices.length>0&&(o=a(n>=1210?"deviceBig":n>=1002&&n<1210?"deviceDesktop":n>=778&&n<1002?"deviceMedium":"deviceSmall")),o},getColumns:function(options,datasource,scope,tooltips,attrs){var helperDirective=this;function getTemplate(column){var template="#=showTreatedValue("+column.field+")#";return"switch"==column.inputType?template='<span class="k-switch km-switch k-widget km-widget k-switch-off km-switch-off" style="width: 100%"> <span class="k-switch-wrapper km-switch-wrapper"> <span class="k-switch-background km-switch-background" style="margin-left: #='+column.field+' ? "80%": "0%" #"></span> </span> <span class="k-switch-container km-switch-container"> <span class="k-switch-handle km-switch-handle" style=#='+column.field+' ? "float:right;margin-right:-1px": "margin-left:0%" #> </span> </span> </span>':"checkbox"==column.inputType||"boolean"==column.type?template="<input crn-set-indeterminate=#="+column.field+"# type='checkbox' class='k-checkbox' #="+column.field+" ? \"checked='checked'\": '' # /><label class='k-checkbox-label k-no-text'></label>":column.displayField&&column.displayField.length>0?template=hasMask(column.type)||column.format&&"null"!=column.format?"#= useMask("+column.displayField+",'"+column.format+"','"+column.type+"') #":"#="+column.displayField+"#":hasMask(column.type)||column.format&&"null"!=column.format?template="#= useMask("+column.field+",'"+column.format+"','"+column.type+"') #":column.showAsImage&&(template=column.showAsImageTemplate?column.showAsImageTemplate:"<img src='#:${column.field}#'/>",template=eval("`"+template+"`")),template}function hasMask(t){return!(!t||"string"!=typeof t)&&(t.startsWith("date")||t.startsWith("month")||t.startsWith("time")||t.startsWith("week")||t.startsWith("money")||t.startsWith("number")||t.startsWith("tel")||t.startsWith("integer"))}function getFormat(t){if(!hasMask(t.type))return t.format}function isRequired(t){var n=!1,a=null;return datasource.schema.model.fields[t]&&(a=datasource.schema.model.fields[t]),a&&(n=!a.nullable),n}function getEditor(t){return editor.bind(this)}async function editor(t,n){let a=t=>{t!==n.model[n.field]&&(n.model[n.field]=t,n.model.dirty=!0,n.model.dirtyFields[n.field]=!0)};var o=this.getColumnByField(options,n.field),r=null==o.visibleCrud||o.visibleCrud;r||o.visible||(t.parent().find(".k-edit-label [for="+o.field+"]").parent().remove(),t.remove());var l=isRequired(n.field)?"required":"",s=app.common.generateId();let c=`${options.dataSourceScreen.name}.active.${n.field}`;var d,u=$(`<input ${l} name="${n.field}" id="${s}" from-grid=true ng-model="${c}" />`);if(u.data("change-grid-model",a),u.data("column-type",o.type),r)if("dynamicComboBox"==o.inputType||"comboBox"==o.inputType){(p=app.kendoHelper.getConfigComboboxSync(o.comboboxOptions,scope)).autoBind=!0,p.optionLabel=void 0,o.displayField&&(p.change=function(t){n.model.set(o.displayField,this.text()),n.model.dirty=!0,n.model.dirtyFields[o.displayField]=!0});let a=u.appendTo(t).kendoDropDownList(p,scope).data("kendoDropDownList");u.data("kendoDropDownList",a)}else if("slider"==o.inputType){(p=app.kendoHelper.getConfigSlider(o.sliderOptions)).change=t=>scope.$apply((()=>scope.$eval(`${c}=${t.value}`)));let n=u.appendTo(t).kendoSlider(p,scope).data("kendoSlider");u.data("kendoSlider",n)}else if("switch"==o.inputType){var p=app.kendoHelper.getConfigSwitch(o.switchOptions);u.appendTo(t).kendoMobileSwitch(p,scope)}else"checkbox"==o.inputType||"boolean"==o.type?((u=$(`<input id="${s}" name="${n.field}" ng-false-value="false" ng-true-value="true" crn-allow-null-values="${!l}" class="k-checkbox" type="checkbox" from-grid=true ng-model="${c}"><label class="k-checkbox-label" for="${s}"></label>`)).data("change-grid-model",a),u.appendTo(t)):"date"==o.inputType?(u.attr("cron-date",""),u.attr("options",JSON.stringify(o.dateOptions)),u.data("initial-date",n.model[n.field]),u.attr("type","datetime"),u.appendTo(t).off("change")):(u.attr("type",o.type),u.attr("mask",o.format?o.format:""),"999.999.999-99;0"!==o.format&&"99.999.999/9999-99;0"!==o.format||(u.attr("valid","999.999.999-99;0"===o.format?"cpf":"cnpj"),u.attr("data-"+o.field.toLocaleLowerCase()+"validation-msg",$translate.instant("invalid."+u.attr("valid")))),u.css("text-align",o.alignment),u.attr("class","k-input k-textbox"),u.data("initial-value",n.model[n.field]),u.appendTo(t));else{var m=scope.$eval(`${c}`);m&&t.text(m)}(d=s,new Promise(((t,n)=>{let a=setInterval((function(){let n=$("#"+d);if(n.length>0){let o=n.closest("td"),r=angular.element(o||n);$compile(r)(scope),clearInterval(a),t(d)}}),10)}))).then((t=>{$(`#${t}`).data("alreadycompiled",!0),$(`#${t}`).data("$compile",$compile),$(`#${t}`).data("ref-component",options.refComponent)}))}function setIdCommandButton(t,n){let a=setInterval((()=>{if($(`.k-grid-${t}`).is(":visible")){clearInterval(a);var o=options.refComponent;$(`.k-grid-${t}`).each(((t,a)=>{let r=$(a);if(!r.attr("id")){let t=o.dataItem(r.closest("tr")),a=this.getModelName(attrs),l=t._objectKey,s=`${a}-${n}-${l}`;r.attr("id",s)}}))}}),200)}function getCommandForEditButtonDatabase(t,n,a){var o;let r=app.common.generateId(),l=`<a href class='k-button k-grid-edit k-grid-${r}' aria-label='${$translate.instant("Edit")}'><span class='${a||"k-icon k-i-edit"}'></span></a>`;return o="popupCustom"==t.editable||"datasource"==t.editable?{name:r,template:l,click:function(n){n.preventDefault();var a=$(n.target).closest("tr"),o=(a.closest("table"),this.dataItem(a)),r=this.dataSource.transport.options.cronappDatasource;scope.safeApply((function(){options.hideModalButtons||helperDirective.addButtonsInModal(options.popupEdit,r.name,scope,!1);var n=r.goTo(o);r.startEditing(n,(function(t){})),"datasource"!=t.editable?cronapi.screen.showModal(options.popupEdit):cronapi.internal.focusFormInput()}))}}:{name:n,template:l,text:{edit:" ",update:" ",cancel:" "}},setIdCommandButton.bind(this)(r,n),o}function getCommandForRemoveButtonDatabase(t,n,a){var o;let r=app.common.generateId(),l=`<a href class='k-button k-grid-delete k-grid-${r}' aria-label='${$translate.instant("Remove")}'><span class='${a||"k-icon k-i-close"}'></span></a>`;return o="popupCustom"==t.editable||"datasource"==t.editable?{name:r,template:l,click:function(t){t.preventDefault();var n=$(t.target).closest("tr"),a=this.dataItem(n),o=this.dataSource.transport.options.cronappDatasource;scope.safeApply((function(){var t=o.goTo(a);o.remove(t)}))}}:{name:n,template:l},setIdCommandButton.bind(this)(r,n),o}function getAggregate(t){if(t&&t.aggregates){var n=[];if(t.aggregates.forEach((function(t){n.push(t.type)})),n.length>0)return n}}function getAggregateFooter(t,n){if(t&&t.aggregates){var a=[];return t.aggregates.forEach((function(o){var r="#=data."+t.field+" ? data."+t.field+"."+o.type+" : 0 #";"average"!=o.type&&"sum"!=o.type||(r="#=useMask(data."+t.field+" ? data."+t.field+"."+o.type+" : 0,'"+t.format+"','"+t.type+"')#");var l=n?o.groupFooterTemplate:o.footerTemplate;l?l+=": ":l="";var s=l+r;t.alignment&&(s="right"!==t.alignment||n?'<div style="text-align: '+t.alignment+'">'+s+"</div>":'<div style="text-align: '+t.alignment+'" class="k-fix-margin">'+s+"</div>"),a.push(s)})),a.join("<br/>")}}function getAggregateHeader(t){if(hasMask(t.type)||t.format&&"null"!=t.format)return t.headerText+": #=useMask(value,'"+t.format+"','"+t.type+"')#"}function getAttributes(t){let n={};return t&&(t.alignment&&(n.style="text-align: "+t.alignment+";"),t.security&&(n["cronapp-security"]=t.security)),n}function commandClick(t,n){t.preventDefault();let a,o=$(t.target).closest("tr"),r=o.closest("table"),l=this.dataItem(o),s=this.dataItem(o),c=$(r.find("tbody")[0]).children().index(o);a="Customized"==n.dataType||"CustomizedLink"==n.dataType||"GroupedButtons"==n.dataType?n.execute:generateBlocklyCall(n.blocklyInfo);let d=this.dataSource.transport.options.cronappDatasource,u=options.refComponent,p=[];if(u.select().each((function(){let t=u.dataItem(this);d.data.forEach((function(n){n.__$id==t.__$id&&p.push(n)}))})),!d.inserting&&!d.editing){let n=t.currentTarget.parentElement.parentElement;this.select(n)}let m=[];options.fieldType&&"key"===options.fieldType?(s=helperDirective.changeObjectField(d,d.findObjInDs(s)),p.forEach((t=>{m.push(helperDirective.changeObjectField(d,d.findObjInDs(t)))}))):m=p;let f={item:s,index:c},g={currentData:d.data,datasource:d.copyWithoutAngularObj(),selectedIndex:c,index:c,selectedRow:s,consolidated:f,item:s,selectedKeys:d.getKeyValues(d.findObjInDs(l),!0),selectedRows:m};d.goTo(l),scope.$eval(a,g)}var columns=[];return options.columns&&options.columns.forEach(function(t){let n=this.getWidthForDevice(t);if("Database"==t.dataType)(r={field:t.field,title:t.headerText,type:t.type,width:n.width,sortable:t.sortable,filterable:t.filterable,hidden:!n.visible}).template=getTemplate(t),r.format=getFormat(t),r.editor=getEditor.bind(this)(t),r.aggregates=getAggregate(t),r.footerTemplate=getAggregateFooter(t,!1),r.groupFooterTemplate=getAggregateFooter(t,!0),r.groupHeaderTemplate=getAggregateHeader(t),r.attributes=getAttributes(t),r.headerAttributes=r.attributes,r.widthDevices=t.widthDevices,columns.push(r);else if("Command"==t.dataType){if("no"!=options.editable){var a=t.command.split("|"),o=[];a.forEach(function(n){var a;a="edit"==n?getCommandForEditButtonDatabase.bind(this)(options,n,t.iconEditClass):getCommandForRemoveButtonDatabase.bind(this)(options,n,t.iconDeleteClass),o.push(a)}.bind(this));var r={command:o,title:t.headerText,width:n.width?n.width:155,hidden:!n.visible,attributes:getAttributes(t)};columns.push(r)}}else if("Blockly"==t.dataType||"Customized"==t.dataType||"CustomizedLink"==t.dataType){var l=null==t.label?"":t.label;t.iconClass&&l&&(l=" "+l);var s="";s="CustomizedLink"==t.dataType?"k-custom-link":"k-custom-command"+(l?" k-button-with-label":""),t.theme&&(s+=" btn "+t.theme);var c="";if(t.tooltip&&t.tooltip.length&&(c=t.tooltip),c){var d=app.common.generateId();tooltips[d]=c,s+=" "+d}let a=t.width;a&&(a+="px");let o=app.common.generateId();r={command:[{name:o,template:`<a href class='k-button ${s} k-grid-${o}' aria-label='${c||l||o}' style='width:${a}'><span class='${t.iconClass}'></span>${l}</a>`,click:function(n){commandClick.bind(this)(n,t)}}],width:n.width,title:t.headerText?t.headerText:"",hidden:!n.visible,attributes:getAttributes(t)};columns.push(r),setIdCommandButton.bind(this)(o,t.dataType)}else if("GroupedButtons"==t.dataType){if(t.buttonColumns&&t.buttonColumns.length){let a=[];t.buttonColumns.forEach((function(n){let o=null==n.label?"":n.label;n.iconClass&&o&&(o=" "+o);let r="k-custom-command"+(o?" k-button-with-label":"");n.theme&&(r+=" btn "+n.theme);let l="";if(n.tooltip&&n.tooltip.length&&(l=n.tooltip),l){let t=app.common.generateId();tooltips[t]=l,r+=" "+t}let s=n.width;s&&(s+="px");let c=app.common.generateId(),d={name:c,template:`<a href class='k-button ${r} k-grid-${c}' aria-label='${l||o||c}' style='width:${s}'><span class='${n.iconClass}'></span>${o}</a>`,click:function(a){n.dataType=t.dataType,commandClick.bind(this)(a,n)}};a.push(d)}));r={command:a,width:n.width,title:t.headerText?t.headerText:"",hidden:!n.visible,attributes:getAttributes(t)};columns.push(r),setIdCommandButton.bind(this)(app.common.generateId(),t.dataType)}}else if("Selectable"==t.dataType){var u={selectable:!0,attributes:getAttributes(t)};columns.push(u)}}.bind(this)),columns},getPageAble:function(t){var n={refresh:t.allowRefreshGrid,pageSizes:t.allowSelectionTotalPageToShow,buttonCount:5};return t.allowPaging||(n=t.allowPaging),n},getToolbar:function(t,n,a){var o=[];return t.toolBarButtons.forEach(function(r){if("Native"==r.type)if("no"!=t.editable)if("datasource"!=t.editable&&"popupCustom"!=t.editable||"create"!=r.title){let l=this.generateToolbarButtonCall(r,n,t,a);o.push(l)}else{var l=t.dataSourceScreen.name,s=t.popupInsert;r.methodCall=l+".startInserting();","popupCustom"==t.editable?r.methodCall=r.methodCall+" cronapi.screen.showModal('"+s+"');":r.methodCall+="cronapi.internal.focusFormInput();";var c=this.generateToolbarButtonCall(r,n,t,a);o.push(c),t.hideModalButtons||this.addButtonsInModal(s,l,n,t.enableModalSaveAdd)}else"pdf"!=r.title&&"excel"!=r.title||o.push(r.title);else if("Blockly"==r.type||"Customized"==r.type){var d=this.generateToolbarButtonCall(r,n,t,a);o.push(d)}else if("SaveOrCancelChanges"==r.type){if("no"!=t.editable){var u=this.generateToolbarButtonCall(r,n,t,a);o.push(u)}}else if("Template"==r.type||"Title"==r.type){let t=function(t){let n=t.security?`cronapp-security="${t.security}" class`:"class";return t.template&&(t.template=t.template.split("class").join(n)),{template:t.template}}(r);o.push(t)}}.bind(this)),0==o.length&&(o=void 0),o},getEditable:function(t){var n={mode:t.editable,confirmation:!1};return"batch"==t.editable?n=!0:"no"!=t.editable&&"popupCustom"!=t.editable&&"datasource"!=t.editable||(n=!1),n},getTooltipsDefault:function(){return{k_grid_edit:$translate.instant("Edit"),k_grid_delete:$translate.instant("Remove"),k_grid_update:$translate.instant("Save"),k_grid_cancel:$translate.instant("Cancel")}},setTooltips:function(t,n){for(var a in n){var o="."+a.replace(/_/g,"-");t.kendoTooltip({filter:o,content:function(t){var a=t.sender.options.filter.substr(1).replace(/-/g,"_");return n[a]}})}},generateKendoGridInit:function(t,n,a,o,r){var l=this;var s=function(t,n,a){t.table.find(".k-master-row").each((function(){null!=a&&this==a[0]||t.collapseRow(this)})),t.table.find(".k-detail-row").each((function(){null!=n&&this==n[0]||$(this).remove()}))},c=function(t,n,a){t.table.find(".k-master-row").each((function(){null==a&&this!=a[0]||t.collapseRow(this)})),t.table.find(".k-detail-row").each((function(){null==n&&this!=n[0]||$(this).remove()}))},d=function(t){var a=this.dataSource.transport.options.cronappDatasource;a.inserting||a.editing||n.safeApply(a.goTo(t))},u=function(a){if(a.sender.tbody&&a.sender.tbody.length){var o=a.sender.tbody;$(a.sender.tbody).find(".k-grid-edit-row").length?o=$(a.sender.tbody).find("tr:not(.k-grid-edit-row)"):o.parent()&&o.parent().parent()&&o.parent().parent().parent()&&(o=o.parent().parent().parent()),n.safeApply((function(){var a=$(o),r=angular.element(a);$compile(r)(n),t.refComponent&&l.resizeGridUsingWidthForDevice(t.refComponent)}))}},p=function(n){var a,o=0;return t.columns.forEach((function(t){"Database"==t.dataType&&(o==n&&t.visible&&(a=t),t.visible&&o++)})),a},m=app.kendoHelper.getDataSource(t.dataSourceScreen.entityDataSource,n,t.allowPaging,t.pageCount,t.columns,t.groupings),f=this.getColumns(t,m,n,r,o),g=this.getPageAble(t),h=this.getToolbar(t,n,o),v=this.getEditable(t),b=(function(t){var n=!1;if(t.columns)for(var a=0;a<t.columns.length;a++)if("Database"==t.columns[a].dataType&&t.columns[a].filterable){n=!0;break}}(t),{hasSecurity:t.columns.filter((t=>t.security)).length,toolbar:h,pdf:{allPages:!0,avoidLinks:!0,paperSize:"A4",margin:{top:"2cm",left:"1cm",right:"1cm",bottom:"1cm"},landscape:!0,repeatHeaders:!0,scale:.8},dataSource:m,editable:v,height:t.height,groupable:t.allowGrouping,sortable:t.allowSorting,filterable:!0,pageable:g,columns:f,selectable:t.allowSelectionRow,detailInit:t.details&&t.details.length>0?function(a){if(a.masterRow.find("a").hasClass("k-i-expand"))c(this,a.detailRow,a.masterRow);else{var o=this.dataSource.transport.options.cronappDatasource;o.inserting||o.editing?s(this,null,null):(this.selectable?(d.bind(this)(a.data),this.select(a.masterRow),void 0!==t.columns.find((t=>"Selectable"==t.dataType))&&s(this,a.detailRow,a.masterRow)):(d.bind(this)(a.data),s(this,a.detailRow,a.masterRow)),a.sender.options.listCurrentOptions.forEach((function(t){var o=l.generateKendoGridInit(t,n,void 0,void 0,r),s=$("<div/>"),c=s.appendTo(a.detailCell).kendoGrid(o).data("kendoGrid");app.kendoHelper.receivePushData(c),t.refComponent=c,window.addEventListener("resize",(()=>{l.resizeGridUsingWidthForDevice(c)})),l.setTooltips(s,r)})))}}:void 0,listCurrentOptions:t.details&&t.details.length>0?t.details:void 0,excelExport:function(t){let a=t.workbook.sheets[0],o=new RegExp("{{(.*?)}}");for(let t=1;t<a.rows.length;t++){let r=a.rows[t];for(let t=0;t<r.cells.length;t++){let a=p(t);if(a&&r.cells[t].value instanceof Date){let n=new Date(r.cells[t].value.getTime());n.setMinutes(n.getMinutes()+n.getTimezoneOffset()),n.setSeconds(n.getSeconds()),r.cells[t].value=n,"time"==a.type?r.cells[t].format="[$-x-systime]hh:mm:ss":"datetime"==a.type&&(r.cells[t].format="dd/mm/yyyy hh:mm:ss;@")}if(("footer"===r.type||"group-footer"===r.type)&&r.cells[t].value){let a=r.cells[t].value,l=$(a)[0].innerHTML,s=o.exec(l);if(s&&s.length>1){l=l.replace(s[0],"");let a=n.$eval(s[1]);r.cells[t].value=`${l}${a}`}}}}},edit:function(t){this.dataSource.transport.options.disableAndSelect(t);var a=t.container,r=this.dataSource.transport.options.cronappDatasource;if(t.model.isNew()){var l=t.model;r.startInserting(null,(function(t){for(var n in t)if(l.fields[n]){if(l.fields[n].validation&&l.fields[n].validation.required){var o=a.find("input[name='"+n+"']");o.length&&o.val(t[n]).trigger("change")}l.set(n,t[n])}}))}else t.model.isNew()||t.model.dirty||n.safeApply((function(){var n=r.goTo(t.model);r.startEditing(n,(function(t){}))}));o&&o.ngEdit&&n.$eval(o.ngEdit),u(t)},change:function(r){var c=this.dataItem(this.select());(t.details&&0==t.details.length||!cronapi.internal.hasMethodInCallStack("detailInit"))&&d.bind(this)(c);var p=this.dataSource.transport.options.cronappDatasource;t.fieldType&&"key"===t.fieldType&&(p.active=l.changeObjectField(p,p.active));let m=this.select().next(),f=this.select();if(a)if("multiple"===t.allowSelectionRowType){let n=[];m=[],f=[],this.select().each(((a,o)=>{let r=this.dataItem(o),s=p.findObjInDs(r,!1);t.fieldType&&"key"===t.fieldType&&(s=l.changeObjectField(p,s)),null!==s&&n.push(s),r._objectKey===p.active._objectKey&&(f.push(this.select()[a]),m.push(this.select().next()[a]))})),a.$setViewValue(n)}else c?a.$setViewValue(p.active):a.$setViewValue(null);s(this,m,f),o&&o.ngChange&&n.$eval(o.ngChange),u(r),$(".k-command-cell a[class*='k-grid-']").each(((t,n)=>{let a=$(n);if(!a.attr("id")){let t=this.dataItem(a.closest("tr")),n="destroy";a.hasClass("k-grid-update")?n="update":a.hasClass("k-grid-cancel")?n="cancel":a.hasClass("k-grid-edit")&&(n="edit");let r=l.getModelName(o);if(t&&t._objectKey){let o=`${r}-${n}-${t._objectKey}`;a.attr("id",o)}}}))},cancel:function(t){var a=this.dataSource.transport.options.cronappDatasource;n.safeApply(a.cancel()),this.dataSource.transport.options.enableAndSelect(t),setTimeout(function(){o&&o.ngCancel&&n.$eval(o.ngCancel),u(t)}.bind(this))},dataBound:function(a){setTimeout((()=>this.dataSource.transport.options.selectActiveInGrid()),100),o&&o.ngDataBound&&n.$eval(o.ngDataBound);for(let n=0;n<this.columns.length;n++){l.getColumnByField(t,this.columns[n].field).visible&&this.showColumn(n)}0==$("div.k-grouping-header").length?t.groupings&&t.groupings.forEach((t=>this.hideColumn(t.field))):$("div.k-group-indicator").each(((t,n)=>{this.hideColumn($(n).data("field"))}));let r=this;setTimeout((function(){r.pager&&r.pager.element.find("a").not(".k-state-disabled").attr("tabindex","0")})),u(a)}});return b.selectable&&"multiple"==t.allowSelectionRowType&&(b.selectable="multiple"),b.originalSelectable=b.selectable,o&&o.ngBeforeEdit&&(b.beforeEdit=function(t){n.$eval(o.ngBeforeEdit)}),o&&o.ngDataBinding&&(b.dataBinding=function(t){n.$eval(o.ngDataBinding)}),o&&o.ngSave&&(b.save=function(t){n.$eval(o.ngSave)}),o&&o.ngSaveChanges&&(b.saveChanges=function(t){n.$eval(o.ngSaveChanges)}),o&&o.ngRemove&&(b.remove=function(t){n.$eval(o.ngRemove)}),b},link:function(t,n,a,o){if(n.children().length)return;var r=$("<div></div>"),l="node_modules/cronapp-lib-js/dist/js/kendo-ui/js/messages/kendo.messages.";"pt_br"==$translate.use()?l+="pt-BR.min.js":l+="en-US.min.js",this.initCulture();var s=this;$.getScript(l,(function(){var n=JSON.parse(a.options||"{}");app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t).batchPost=!1,(null==n.batchMode||n.batchMode)&&"datasource"!=n.editable&&app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t)&&!app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t).dependentLazyPost&&(app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t).batchPost=!0,n.toolBarButtons=n.toolBarButtons||[],n.toolBarButtons.push({type:"SaveOrCancelChanges",title:$translate.instant("SaveChanges"),methodCall:n.dataSourceScreen.entityDataSource.name+".postBatchData()",saveButton:!0}),n.toolBarButtons.push({type:"SaveOrCancelChanges",title:$translate.instant("CancelChanges"),methodCall:n.dataSourceScreen.entityDataSource.name+".cancelBatchData()",saveButton:!1}));var l=s.getTooltipsDefault(),c=s.generateKendoGridInit(n,t,o,a,l);c.scrollable="true"===a.scrollable;var d=r.kendoGrid(c).data("kendoGrid");app.kendoHelper.receivePushData(d),n.refComponent=d,window.addEventListener("resize",(()=>{s.resizeGridUsingWidthForDevice(d)})),s.setTooltips(r,l),t.safeApply((function(){app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t)&&(r.find(".k-filter-row").show(),r.find(".k-pager-sizes").show(),r.find(".k-pager-nav").show(),r.find(".k-pager-numbers").show(),r.find(".k-pager-refresh.k-link").show(),r.find(".saveorcancelchanges").hide(),app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t).addDataSourceEvents({pendingchanges:function(t){t?(r.find(".k-filter-row").hide(),r.find(".k-pager-sizes").hide(),r.find(".k-pager-nav").hide(),r.find(".k-pager-numbers").hide(),r.find(".k-pager-refresh.k-link").hide(),r.find(".saveorcancelchanges").show()):(r.find(".k-filter-row").show(),r.find(".k-pager-sizes").show(),r.find(".k-pager-nav").show(),r.find(".k-pager-numbers").show(),r.find(".k-pager-refresh.k-link").show(),r.find(".saveorcancelchanges").hide())}}),app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t).addDataSourceEvents({afterchanges:function(t){}}))})),d.selectable.userEvents.unbind("select")}));let c=app.common.generateId(),d=app.common.generateId(),u=app.common.generateId(),p=$(`<ul id="${c}">\n <li id="copyText">\n <input id="${d}">\n <span id="${u}" class="k-icon k-i-close" style="margin-left: 5px;"></span>\n </li>\n </ul>`);n.html(r),n.append(p),$compile(r)(n.scope());let m=$(`#${c}`).kendoContextMenu({target:r,filter:"td",close:t=>{closeContextMenu||t.preventDefault()},open:t=>{let n=t.target,a=($(n).parent()[0],r.data("kendoGrid"),t.item.id,n.innerText);if(a.length&&""!==a)$(t.item).find(`#${d}`).val(a),closeContextMenu=!1;else{(()=>new Promise(((t,n)=>{let a=setInterval((()=>{$(`#${c}`).is(":visible")&&(clearInterval(a),$(`#${c}`).hide())}))})))()}}}).data("kendoContextMenu");$(`#${u}`).on("click",(t=>{closeContextMenu=!0,m.close()}))}}}]).directive("src",["$compile",function(t){return{restrict:"A",link:function(t,n,a,o){"IMG"===n[0].tagName&&cronapi.internal.isBase64(a.src)&&setTimeout((()=>$(n[0]).attr("src","data:image/png;base64,"+a.src)))}}}]).directive("crnSkin",["$compile","$http",function(t,n){return{restrict:"A",link:function(t,a,o,r){o.crnSkin&&n.get(o.crnSkin,{cache:!0}).then((t=>{if(t.data){let n=t.data;n.startsWith(":root{")&&(n=n.substring(6)),n.endsWith("}")&&(n=n.substring(0,n.length-2)),$element=$(a);let o=$element.find('[data-role="grid"]');o.length&&($element=o);let r=$element.attr("style")||"";r&&(r+=", "),r+=n,$element.attr("style",r)}}))}}}]).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((t=>!0===t.key))[0].name,schema={model:{id:id,hasChildren:function(t){return t.hasChildren}}},getAllParent=function(t,n,a,o,r){n[schema.model.id]&&a.push(n[schema.model.id]);let l=`${t.entity}?$filter=${schema.model.id} eq '${n[options.selfRelationshipField]}'&$format=json&$inlinecount=allpages`;n[options.selfRelationshipField]?$.ajax({url:l,success:n=>{getAllParent(t,n.d.results[0],a,o,r)},beforeSend:t=>{window.isUsingCookie()||t.setRequestHeader("X-AUTH-TOKEN",cronapi.util.getUserToken());const n=document.cookie.match(new RegExp("(^| )XSRF-TOKEN=([^;]+)"));n&&t.setRequestHeader("X-XSRF-TOKEN",n[2])},error:()=>r(),type:"GET"}):o(a)},reloadAndExpand=function(t){this.options.kendoObj.dataSource.bind("requestEnd",(()=>{new Promise(((n,a)=>{getAllParent(this.options.cronappDatasource,t,[],n,a)})).then((t=>{this.options.kendoObj.expandPath(t.reverse())}))})),this.options.kendoObj.dataSource.read()},helperDirective=this,waitingPromise=!1,datasource=new kendo.data.HierarchicalDataSource({transport:{push:async function(t){let n=await this.options.cronappDatasource();!helperDirective.dataSourceEventsPush&&n&&(helperDirective.dataSourceEventsPush={create:function(t){reloadAndExpand.bind(this)(t)}.bind(this),update:function(t){reloadAndExpand.bind(this)(t)}.bind(this),delete:function(t){reloadAndExpand.bind(this)(t),ngModelCtrl.$setViewValue(null)}.bind(this),overRideRefresh:function(t){this.options.fromRefresh=!0,this.options.kendoObj.dataSource.read(),ngModelCtrl.$setViewValue(null)}.bind(this),read:function(t){waitingPromise||(this.options.kendoObj.dataSource.read(),ngModelCtrl.$setViewValue(null))}.bind(this)},n.addDataSourceEvents(helperDirective.dataSourceEventsPush))},read:async function(e){let cronappDatasource=await this.options.cronappDatasource(),conditionIsEmpty=t=>{let n=!0;if(t){let a=JSON.parse(t);a.expression&&a.expression.args&&a.expression.args.forEach((t=>{""!==t.right&&"''"!==t.right&&void 0!==t.right&&(n=!1)}))}return n};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=eval(count)>0,resolve()},beforeSend:t=>{window.isUsingCookie()||t.setRequestHeader("X-AUTH-TOKEN",cronapi.util.getUserToken());const n=document.cookie.match(new RegExp("(^| )XSRF-TOKEN=([^;]+)"));n&&t.setRequestHeader("X-XSRF-TOKEN",n[2])},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,o){let r=JSON.parse(a.options),l=$('<div class="k-widget k-treeview k-treeview-lines"></div>');new kendo.data.HierarchicalDataSource({transport:{read:async n=>(await app.kendoHelper.getCorrectlyDSPromise(r.dataSourceScreen.name,t)).fetch({},n)},schema:{model:{id:r.keys,hasChildren:t=>t.hasChildren}}}),l.kendoTreeView({dataSource:this.getDataSource(r,t,o),dataTextField:r.textField,change:async function(){let n=this.dataItem(this.select()),a=await this.dataSource.transport.options.cronappDatasource();t.safeApply((()=>{a.goTo(n),"key"===r.fieldType&&o.$setViewValue(a.active=n)}))}}).data("kendoTreeView");n.html(l),$compile(l)(t),setTimeout((()=>{let a=n.closest(".component-holder");if(!a.length)return;const o=()=>{let t=(a.attr("class")||"").match(/col-(lg|md|sm|xs)-\d+/g)?.find((t=>t.includes("col-md-")))||"col-md-12";a.attr("class",a.attr("class").replace(/col-(lg|md|sm|xs)-\d+/g,"").trim()+` ${t}`)};o();const r=new MutationObserver(o);r.observe(a[0],{attributes:!0,attributeFilter:["class"]}),t.$on("$destroy",(()=>{r&&r.disconnect()}))}),1e3)}}}]).directive("cronSelect",["$compile",function(t){return{restrict:"E",replace:!0,require:"ngModel",link:async function(t,n,a,o){var r={};try{r=JSON.parse(a.options)}catch(t){console.log("ComboBox invalid configuration! "+t)}var l=a.id?' id="'+a.id+'"':"",s=a.name?' name="'+a.name+'"':"",c=n.parent();$(c).append('<input style="width: 100%;" '+l+s+' class="cronSelect"/>');var d,u=$(c).find("input.cronSelect"),p=await app.kendoHelper.getConfigCombobox(r,t);if(p.close=a.ngClose?function(){t.$eval(a.ngClose)}:void 0,p.dataBound=a.ngDataBound?function(){t.$eval(a.ngDataBound)}:void 0,p.filtering=a.ngFiltering?function(){t.$eval(a.ngFiltering)}:void 0,p.select=a.ngSelect?function(n){t.safeApply((()=>{var o={selected:n.dataItem,selectedKey:n.dataItem[p.dataValueField],selectedValue:n.dataItem[p.dataTextField]};t.$eval(a.ngSelect,o)}))}:void 0,p.change=a.ngChange?function(n){var o=this.dataItem();t.safeApply((()=>{a.ngModel&&g.$$parse(a.ngModel).assign(t,this.value(),a.ngModel.split("."));var n={selected:o,selectedKey:o[p.dataValueField],selectedValue:o[p.dataTextField]};t.$eval(a.ngChange,n)}))}:function(n){t.safeApply((()=>{a.ngModel&&g.$$parse(a.ngModel).assign(t,this.value(),a.ngModel.split("."))}))},p.messages={noData:a.noResultsMessage?a.noResultsMessage:"NO DATA FOUND"},!0===r.dontAllowOutsideList){d=u.kendoDropDownList(p).data("kendoDropDownList");let t=c.find("span").first();t.on("focus",(()=>cronapi.internal.selectContent(t.find(".k-input")[0])))}else d=u.kendoComboBox(p).data("kendoComboBox");let m;$(n).remove();let f=()=>{if(m=$(c).find(".k-input.cronSelect"),m.length){m.attr("ng-required",a.ngRequired),"true"===a.ngRequired&&m.attr("required","required"),m.attr("ng-model",a.ngModel),m.attr("id",a.id),m.attr("validationmessage",a.validationmessage);let t=m.parent();m.on("change",(()=>{"true"===a.ngRequired&&(0==m.val().length?(t.addClass("ng-invalid-required"),m.addClass("ng-invalid-required")):(t.removeClass("ng-invalid-required"),m.removeClass("ng-invalid-required")))}))}else setTimeout((()=>f()))};f(),t.$watch(a.cronDisabled,(function(t){d.enable(!t)}));var g=o;o&&(o.$formatters.push((function(t){var n="";return("boolean"==typeof t||t)&&(n=t),d.value(n),n})),o.$parsers.push((function(t){return m&&m.trigger("change"),"boolean"==typeof t||t?t:null})))}}}]).directive("cronDynamicSelect",["$compile","$timeout","$parse","$translate","$log",function($compile,$timeout,$parse,$translate,$log){return{restrict:"E",replace:!0,require:"?ngModel",goTo:function(t,n,a){if(dataSourceScreen=$(n).data("dataSourceScreen"),null!=dataSourceScreen)return dataSourceScreen.goTo(a,!0)},compileAngular:function(t,n){var a=$(n),o=angular.element(a);$compile(o)(t)},getActive:function(active){if(active&&active.indexOf(".active."))try{return eval(active.substr(0,active.indexOf(".active.")))}catch(t){}return null},getFieldText:function(t,n){if(t&&t.indexOf(".active.")&&n.dataTextField)try{return t.substr(t.indexOf(".active.")+8)+"_"+n.dataTextField}catch(t){}return null},isDefaultEntity:function(t){if(t&&t.entity){var n=t.entity.split("/");if(n&&n.length>0)return-1==n.pop().indexOf("query")}return!1},getModelParent:function(t){if("string"==typeof t&&t.length>9&&t.indexOf("|raw}}")>0){var n=(t=t.trim()).substr(t.indexOf("{{")+2);return(n=n.substr(0,n.indexOf("|raw}}"))).trim()}return null},toComboType:function(t,n,a,o){let r=n.find("span").first();if(r.on("focus",(()=>cronapi.internal.selectContent(r.find("span.ng-scope")[0]))),"autoComplete"===a.type){let n=["Tab","Shift","CapsLock","Control","Alt","Escape","PageDown","PageUp","Backspace","ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Delete","Insert","Enter"," "],l=["Tab","Shift","CapsLock","Control","Alt","Escape","PageDown","PageUp","ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Insert"];r.attr("contenteditable","true");let s=$(`input[aria-owns=${t.id}_listbox]`),c=s.parent(),d=$(`#${t.id}-list`);c.hide(),r.on("keyup",(t=>{document.activeElement!==r[0]||l.includes(t.originalEvent.key)||s.val(r.find("span.ng-scope").text()),r.hasClass("k-state-border-down")||n.includes(t.originalEvent.key)||r.trigger("click")})),r.on("focusout",(()=>{d.is(":visible")||u()})),r.on("click",(()=>p()));let u=()=>{r.find("span.ng-scope").text(o.dataItem()[a.dataTextField]),o.search()},p=()=>{let t=setInterval((()=>{d.is(":visible")||(clearInterval(t),document.activeElement!==r[0]&&u())}))}}else r.on("keydown",(t=>{if("ArrowDown"===t.originalEvent.key||"ArrowUp"===t.originalEvent.key)return t.stopImmediatePropagation(),void r.trigger("click")}))},link:async function(scope,element,attrs,ngModelCtrl){await cronapi.internal.skipIterationLoop();var modelGetter=$parse(attrs.ngModel),modelSetter=(t,n)=>{$log.debug("modelSetter | "+attrs.id+" | "+n),modelGetter.assign(t,n)},select={},self=this,parentDS={},textField=null;try{select=JSON.parse(attrs.options),parentDS=this.getActive(attrs.ngModel),textField=this.getFieldText(attrs.ngModel,select)}catch(t){console.log("DynamicComboBox invalid configuration! "+t)}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;let lastValueMapper;if(options.virtual={},options.virtual.itemHeight=26,options.dataSource.pageSize&&options.dataSource.pageSize>0){options.height=options.dataSource.pageSize*options.virtual.itemHeight/4,options.virtual.mapValueTo="dataItem";var _options=options;let t=()=>new Promise((t=>{let n;_options.combobox?t():n=setInterval((()=>{_options.combobox&&(clearInterval(n),t())}))}));options.virtual.valueMapper=async function(n){await t(),$log.debug(`valueMapper | ${attrs.id} | ${n.value}`),lastValueMapper&&!1===lastValueMapper.completed&&(lastValueMapper.canceled=!0),lastValueMapper=n;const{optionLabel:a,dataValueField:o}=_options.combobox.options,r=_options.dataSource.transport.options.cronappDatasource;if(n.canceled||!n.value||a[o]&&""===n.value)return n.success(null);_options.combobox.isEvaluating=!0,r.findObj([n.value],!1,(t=>{n.canceled||(n.success(Array.isArray(t)?t[0]:t),$log.debug(`valueMapper.success | ${attrs.id} | ${t}`))}),(()=>n.success(null)),[o]),n.completed=_options.combobox.isEvaluating=!1}}options.messages={noData:attrs.noResultsMessage?attrs.noResultsMessage:"NO DATA FOUND"},options.change=attrs.ngChange?function(t){var n=this.dataItem();scope.safeApply((()=>{var t={selected:n,selectedKey:n?n[options.dataValueField]:"",selectedValue:n?n[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 n={[combobox.options.dataValueField]:"",[combobox.options.dataTextField]:""};combobox.dataSource.data().some((t=>""===t[combobox.options.dataValueField]))||combobox.dataSource.add(n),forceEmptyLineSelected()},options.select=attrs.ngSelect?function(t){scope.safeApply((()=>{var n={selected:t.dataItem,selectedKey:t.dataItem[options.dataValueField],selectedValue:t.dataItem[options.dataTextField]};scope.$eval(attrs.ngSelect,n)}))}: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(t){inputSelect.prop("required",t)})),$(parent).append(inputSelect);var $element=$(parent).find("input.cronDynamicSelect");dataSourceScreen&&(dataSourceScreen.__ignoreFirstFetch=!0);var combobox=$element.kendoDropDownList(options).data("kendoDropDownList");function forceEmptyLineSelected(){var t=combobox.list.find(".k-list-optionlabel");t&&t.length&&t.addClass("k-state-selected k-state-focused"),$log.debug("Linha vazia marcada como ativa:",t)}combobox.isEvaluating=!1;var scrolling=!1;let forcedRefreshModelAt;combobox.bind("open",(function(){scrolling||(scrolling=!0,setTimeout((()=>{scrolling=!1}),300),forceEmptyLineSelected())})),combobox.bind("change",(function(){if(!combobox.isEvaluating){combobox.isEvaluating=!0;try{let t=combobox.dataItem();t&&""===t[options.dataValueField]?(modelSetter(scope,""),modelTextFieldSetter(scope,"")):(modelSetter(scope,t[options.dataValueField]),modelTextFieldSetter(scope,t[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 canRefresh=()=>{let t=performance.now();return!forcedRefreshModelAt||t-forcedRefreshModelAt>2e3};var forceChangeModel=async function(t){$log.debug("forceChangeModel | "+attrs.id+" | "+t),void 0===t&&(t=null);let n=combobox.value();n=null!=n?n.trim():n,(null!=t?(""+t).trim():t)!==n&&await combobox.value(t),select.changeCursor&&scope.safeApply((()=>{null==t||null==t?(dataSourceScreen.active={},dataSourceScreen.cursor=-1,modelSetter(_scope,null)):_goTo(_scope,combobox,combobox.dataItem())}))};let returnTypedValue=t=>{if(dataSourceScreen.schema){let n=dataSourceScreen.schema.find((t=>t.name===options.dataValueField));n&&"String"!==n.type&&(t=parseFloat(t)||t)}return t};var defineInitialValue=function(){if(!combobox.definingInitialValue&&!combobox.isEvaluating){var t=combobox.value();t&&""!==t||(modelSetter(scope,""),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(t){let n=function(){combobox.isEvaluating?setTimeout(n,100):_scope.$apply((function(){let t=combobox.dataItem();t&&""!==t[select.dataValueField]?(modelSetter(_scope,t[select.dataValueField]),modelTextFieldSetter(_scope,t[select.dataTextField])):(combobox.value(""),modelSetter(_scope,""),modelTextFieldSetter(_scope,"")),_compileAngular(scope,options.combobox.element[0]),options?.combobox?.span&&_compileAngular(scope,options.combobox.span)}))};n()})),ngModelCtrl&&(ngModelCtrl.$formatters.push((function(t){return $log.debug("$formatters | "+attrs.id+" | "+t),(void 0===t||""===t&&void 0===select.optionLabelValue)&&modelSetter(scope,t=""),forceChangeModel(t),t})),ngModelCtrl.$parsers.push((function(t){return t&&""!==t?t:""})),ngModelCtrl.$parsers.push((function(t){if($log.debug("$parsers | "+attrs.id+" | "+t),"boolean"==typeof t||t)if(!0===combobox.options.valuePrimitive){if("string"==typeof t)return t;if("boolean"==typeof t[select.dataValueField]||t[select.dataValueField])return t[select.dataValueField]}else try{return objectClone(t,combobox.dataSource.options.schema.model.fields)}catch(t){}return null}))),select.initValue)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);else select.initValue=null;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(t){combobox.enable(!t)})),$(`[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((t=>{let n=setInterval((()=>{clearInterval(n),t()}))}));var _self=this,select={};try{select=JSON.parse(attrs.options)}catch(t){console.log("MultiSelect invalid configuration! "+t)}var _scope=scope,_ngModelCtrl=ngModelCtrl;if(null!=select.relationDataSource)try{eval(select.relationDataSource.name)}catch(t){await jumpThread()}var relactionDS={relationDataSource:null!=select.relationDataSource?eval(select.relationDataSource.name):null,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"),evtSelect,deselect;$(element).remove(),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((t=>"object"==typeof t?t[dataValueField]!==dataItem[dataValueField]:t!==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(t){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&&combobox.list.length>0&&(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(t){combobox.enable(!t)})),app.kendoHelper.receivePushData(combobox),$(`[aria-describedby='${attrs.id}_taglist']`).attr("id",`${attrs.id}-container`),attrs.crnReadonly&&_scope.$watch(attrs.crnReadonly,((t,n)=>{combobox.readonly(_scope.$eval(attrs.crnReadonly))}));var convertArray=function(t){var n=[];if(t)for(var a in t)n.push(t[a][relactionDS.relationField]);return n};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(t){return{restrict:"E",require:"ngModel",link:async function(t,n,a,o){var r={};try{r=JSON.parse(a.options)}catch(t){console.log("AutoComplete invalid configuration! "+t)}try{delete l.dataSource.schema.model.id}catch(t){}var l=await app.kendoHelper.getConfigCombobox(r,t);l.change=a.ngChange?function(){t.$eval(a.ngChange)}:void 0,l.close=a.ngClose?function(){t.$eval(a.ngClose)}:void 0,l.dataBound=a.ngDataBound?function(){t.$eval(a.ngDataBound)}:void 0,l.filtering=a.ngFiltering?function(){t.$eval(a.ngFiltering)}:void 0,l.select=a.ngSelect?function(){t.$eval(a.ngSelect)}:void 0;var s=n.parent(),c=a.id?' id="'+a.id+'"':"",d=a.name?' name="'+a.name+'"':"",u=a.validationmessage?' validationmessage="'+a.validationmessage+'"':"",p="";(a.ngRequired||a.required)&&(p=" required "),$(s).append('<input style="width: 100%;" '+c+d+p+u+' class="cronAutoComplete" ng-model="'+a.ngModel+'"/>');var m=$(s).find("input.cronAutoComplete");$(n).remove(),l.change=function(n){t.$apply((function(){o.$setViewValue(m.val())}))},"true"==a.autoExpand&&m.on("focus",(function(t){f.search()})),l.messages={noData:a.noResultsMessage?a.noResultsMessage:"NO DATA FOUND"},"false"==a.firstOptionOnBlur&&(l.suggest=!1);var f=m.kendoAutoComplete(l).data("kendoAutoComplete");t.$watch(a.cronDisabled,(function(t){f.enable(!t)})),o&&(o.$formatters.push((function(t){return f.value(t),t})),o.$parsers.push((function(t){if(t){if("string"==typeof t)return t;if(t[r.dataTextField])return t[r.dataTextField]}return null})))}}}]).directive("cronDate",["$compile","$translate","$window",function(t,n,a){return{restrict:"AE",require:"?ngModel",link:function(a,o,r,l){var s={},c={};try{if(r.options)c=JSON.parse(r.options);else{var d=window.buildElementOptions(o);c=JSON.parse(d)}c.format||(c.format=parseMaskType(c.type,n)),s=app.kendoHelper.getConfigDate(n,c)}catch(t){console.log("AutoComplete invalid configuration! "+t)}var u="date"==s.type||"datetime"==s.type||"time"==s.type;window.fixedTimeZone||(u=!1);var p=$(o);if(!p.data("alreadycompiled")){if(p.data("alreadycompiled",!0),p.data("$compile",t),r.fromGrid)p=$(o);else{var m=o.parent(),f=$('<input style="width: 100%;" class="cronDate" ng-model="'+r.ngModel+'"/>');$(m).append(f),(p=$(m).find("input.cronDate")).data("type",s.type),p.attr("type","date")}var g=app.kendoHelper.buildKendoMomentPicker(p,s,a,l);r.fromGrid||(l&&(l.$formatters.push((function(t){var n=null;if(t){n=(u?moment(t).utcOffset(window.timeZoneOffset):moment(t)).format(s.momentFormat)}return g.value(n),n})),l.$parsers.push((function(t){if(t){return(u?moment(g._oldText,s.momentFormat).utcOffset(window.timeZoneOffset):moment(g._oldText,s.momentFormat)).toDate()}return null}))),$(o).remove())}}}}]).directive("cronSlider",["$compile",function(t){return{restrict:"E",require:"ngModel",getActive:function(t,n){if(t&&t.indexOf(".active."))try{return n.$eval(t.substr(0,t.indexOf(".active.")))}catch(t){}},link:function(n,a,o,r){var l={};try{l=JSON.parse(o.options)}catch(t){console.log("Slider invalid configuration! "+t)}var s=app.kendoHelper.getConfigSlider(l),c=this.getActive(o.ngModel,n);s.change=function(){n.$apply((function(){var t=$(a).val();c&&(t=c.normalizeValue(t,!0)),r.$setViewValue(t),o.ngChange&&n.$eval(o.ngChange)}))},s.slide=o.ngSlide?function(){n.$eval(o.ngSlide)}:void 0,(l=$(a).kendoSlider(s).data("kendoSlider"))._drag.element[0].title=s.dragHandleTitle,l._drag.element[1].title=s.dragHandleTitle;if(new ResizeObserver((t=>{l.resize()})).observe(l.wrapper[0]),"true"===o.ngRequired||o.required){var d=o.id?' id="input'+app.common.generateId()+'"':"",u=o.name?' name="input'+app.common.generateId()+'"':"",p=a.parent();$(p).append('<input aria-label="slider" autocomplete="off" tabindex="-1" style="width: 100%;"'+d+u+' required class="cronSlider cron-select-offscreen" ng-model="'+o.ngModel+'"/>');var m=$(p).find("input.cronSlider");t(m)(a.scope())}n.$watch((function(){return r.$modelValue}),(function(t,n){t!==n&&(t?l.value(t):l.value(l.min()))})),r&&(r.$formatters.push((function(t){var n=null;return!t&&l.min?n=l.min:t&&(n=t),l.value(n),n})),r.$parsers.push((function(t){return t||null})))}}}]).directive("cronSwitch",["$compile",function(t){return{restrict:"E",require:"ngModel",link:function(t,n,a,o){var r={};try{var l=window.buildElementOptions(n);r=JSON.parse(l)}catch(t){console.log("Switch invalid configuration! "+t)}var s=app.kendoHelper.getConfigSwitch(r),c=n.parent();$(c).append('<input style="width: 100%;" class="cronSwitch" ng-model="'+a.ngModel+'"/>');var d=$(c).find("input.cronSwitch");s.change=function(n){t.$apply(function(){o.$setViewValue(this.value())}.bind(this))};var u=d.kendoMobileSwitch(s).data("kendoMobileSwitch");$(n).remove(),o&&(o.$formatters.push((function(t){var n=!1;return null!=t&&(n=t),u.value(n),n})),o.$parsers.push((function(t){return null!=t&&t})))}}}]).directive("cronBarcode",["$compile",function(t){return{restrict:"E",require:"ngModel",link:function(t,n,a,o){var r={};try{var l=window.buildElementOptions(n);r=JSON.parse(l)}catch(t){console.log("Barcode invalid configuration! "+t)}var s=app.kendoHelper.getConfigBarcode(r),c=n.parent();$(c).append('<span class="cronBarcode" ng-model="'+a.ngModel+'"></span>');var d=$(c).find("span.cronBarcode").kendoBarcode(s).data("kendoBarcode");$(n).remove(),t.$watch((function(){return o.$modelValue}),(function(t,n){var a="";t!==n&&(a=t),s.value=a,d.setOptions(s)}))}}}]).directive("cronQrcode",["$compile",function(t){return{restrict:"E",require:"ngModel",link:function(t,n,a,o){var r={};try{var l=window.buildElementOptions(n);r=JSON.parse(l)}catch(t){console.log("Qrcode invalid configuration! "+t)}var s=app.kendoHelper.getConfigQrcode(r),c=n.parent();$(c).append('<span class="cronQrcode" ng-model="'+a.ngModel+'"></span>');var d=$(c).find("span.cronQrcode").kendoQRCode().data("kendoQRCode");$(n).remove(),t.$watch((function(){return o.$modelValue}),(function(t,n){var a="";t!==n&&(a=t),s.value=a,d.setOptions(s)}))}}}]).directive("cronappRating",(function(){"use strict";return{restrict:"E",require:"ngModel",link:function(t,n,a,o){a.theme=$(n).find("i").attr("icon-theme"),a.classElem=$(n).find("i").attr("class"),a.iconSize=$(n).find("i").attr("icon-size"),a.iconOn=$(n).find("i").attr("class");var r=$(n),l=[];a.xattrDefaultValue&&(o.$viewValue=0,o.$commitViewValue());for(var s=1;s<=5;s++)l.push($(n).find("i").get(s-1)),$(l[s-1]).addClass(a.iconOff||"fa fa-star-o");r.html("");var c=[];for(s=1;s<=5;s++){var d=$(l[s-1]).clone();r.append(d),d.attr("idx",s),d.click((function(){t.$apply(function(){let t=parseInt($(this).attr("idx"));o.$viewValue=o.$viewValue!==t?t:0,o.$commitViewValue()}.bind(this))})),c.push(d)}function u(t){for(var n=1;n<=5;n++)c[n-1].removeClass(a.iconOff||"fa fa-star-o"),c[n-1].removeClass(a.classElem),c[n-1].removeClass(a.iconTheme),n<=t?c[n-1].addClass(a.classElem):(c[n-1].addClass(a.iconOff||"fa fa-star-o"),c[n-1].addClass(a.theme),c[n-1].addClass(a.iconSize));return t}o.$parsers.push(u),o.$formatters.push(u)}}})).directive("cronDynamicMenu",["$compile","$translate",function(t,n){"use strict";const a=t=>{var o="";return t&&t.length>0&&Array.isArray(t)&&(t.forEach((function(t){var r=t.security&&null!=t.security?` cronapp-security="${t.security}" `:"",l=t.action&&null!=t.action?` ng-click="cronapi.internal.lastCronappMenuClick('${t.id}');${t.action}" `:"",s=t.hide&&null!=t.hide?` ng-hide="${t.hide}" `:"",c=t.iconClass&&null!=t.iconClass?`<i class="${t.iconClass}" id="menu-tag-i-${t.id}"></i> `:"",d=`<span id="menu-tag-span-${t.id}"></span>`,u=t.menuItems&&Array.isArray(t.menuItems)&&t.menuItems.length>0?`<span class="caret submenu" id="menu-tag-span-sub-${t.id}"></span>`:"";t.title&&(d=`<span id="menu-tag-span-${t.id}">${n.instant(t.title)}</span>`),t.menuItems.length>0?o+=`\n <li class="dropdown-submenu" ${r}${s} id="menu-tag-li-sub-${t.id}"> <a href="" ${l} id="menu-tag-a-sub-${t.id}" class="dropdown-item dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> ${c} ${d} ${u} </a> ${a(t.menuItems)} </li>`:o+=`\n <li class="dropdown-submenu" ${r} ${s} id="menu-tag-li-${t.id}"> <a href="" ${l} id="menu-tag-a-${t.id}" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">${c} ${d} ${u} </a> \n </li>`})),""!=o&&(o=`<ul class="dropdown-menu" id="menu-tag-ul-${t[0].id}">${o}</ul>`)),o};return{restrict:"EA",populateMenu:function(t,o){var r="";return t&&null!=t&&t.subMenuOptions&&null!=t.subMenuOptions&&Array.isArray(t.subMenuOptions)&&t.subMenuOptions.forEach((function(t){var l=t.security&&null!=t.security?` cronapp-security="${t.security}" `:"",s=t.action&&null!=t.action?` ng-click="${t.action}" `:"",c=t.menuItems&&Array.isArray(t.menuItems)&&t.menuItems.length>0?`<span class="caret" id="menu-tag-span-sub-${t.id}"></span>`:"",d=t.hide&&null!=t.hide?` ng-hide="${t.hide}" `:"",u=t.iconClass&&null!=t.iconClass?`<i class="${t.iconClass}"></i> `:"",p=`<span id="menu-tag-span-${t.id}"></span>`;t.title&&(p=`<span id="menu-tag-span-${t.id}">${n.instant(t.title)}</span>`),r+=`\n <li class="dropdown nav-item ${o?"col-md-12 padding-0":""}" ${l} ${d} id="menu-tag-li-sub-${t.id}">\n <a href="" ${s} id="menu-tag-a-sub-${t.id}" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> ${u} ${p} ${c}\n </a>\n ${a(t.menuItems)}\n </li>`})),r},link:function(a,o,r){var l=this.populateMenu;r.$observe("options",(function(s){n.onReady((()=>{let n=o.closest(".crn-navigator-vertical").length;var c={};try{c=JSON.parse(s)}catch(t){console.log("CronDynamicMenu: Invalid configuration!")}let d=c&&c.subMenuOptions&&c.subMenuOptions.length?c.subMenuOptions[0].id:"first";var u=$(`<ul id="menu-tag-ul-base-${d}" class="nav navbar-nav ${n?"col-md-12 padding-0":""}" ></ul>`);u.attr("id",r.id);var p=l(c,n);u.append(p),n&&u.append($("#navbar2 li:first").addClass("col-md-12 padding-0"));var m=angular.element(u);o.html(""),o.append(u),o.attr("id",null),t(m)(a);var f=r.multilevelAction;"hover"===f&&($(".dropdown-menu .dropdown-submenu").on("mouseover",(function(){$(this).children("ul.dropdown-menu").addClass("displayBlock")})),$(".dropdown-menu .dropdown-submenu").on("mouseout",(function(){$(this).children("ul.dropdown-menu").removeClass("displayBlock")}))),"click"===f&&$(".dropdown-menu a.dropdown-toggle").on("click",(function(t){return $(this).next().hasClass("show")||$(this).parents(".dropdown-menu").first().find(".show").removeClass("show"),$(this).next(".dropdown-menu").toggleClass("show"),$(this).parents("li.nav-item.dropdown").on("hidden.bs.dropdown",(function(t){$(".dropdown-submenu .show").removeClass("show")})),!1})),$("#checkCollapsibleMenu").on("click",(function(){var t=document.getElementById("main-view");this.checked?t.classList.remove("main-view-retratil"):t.classList.add("main-view-retratil")}));let g=o.closest("nav");if(g&&g.length){let t=!g.hasClass("submenu-click"),n=g.attr("id");if(n||(n=app.common.generateId(),g.attr("id",n)),t){$(`#${n} .dropdown-submenu`).data("hooked")||($(`#${n} .dropdown-submenu`).on("mouseenter",(function(t){$(this).children(".dropdown-menu").addClass("show")})).on("mouseleave",(function(t){$(this).children(".dropdown-menu").removeClass("show")})),$(`#${n} .dropdown-submenu`).data("hooked",!0))}else{$(`#${n} .dropdown-menu a.dropdown-toggle`).data("hooked")||($(`#${n} .dropdown-menu a.dropdown-toggle`).on("click",(function(t){$(this).next().hasClass("show")||$(this).parents(".dropdown-menu").first().find(".show").removeClass("show");var n=$(this).next(".dropdown-menu");if(n.toggleClass("show"),$(this).parents("li.nav-item.dropdown.show").on("hidden.bs.dropdown",(function(t){$(".dropdown-submenu .show").removeClass("show")})),n.length)return!1;$(".dropdown-menu").removeClass("show")})),$(`#${n} .dropdown-menu a.dropdown-toggle`).data("hooked",!0)),$(`#${n} .dropdown.nav-item`).data("hooked")||($(`#${n} .dropdown.nav-item`).on("hidden.bs.dropdown",(function(t){$(".dropdown-submenu .show").removeClass("show"),$(".dropdown-menu .show").removeClass("show")})),$(`#${n} .dropdown.nav-item`).data("hooked",!0))}}else{let t=$(o).find("ul:first").attr("id");$(`#${t} .dropdown-submenu`).data("hooked")||($(`#${t} .dropdown-submenu`).on("mouseenter",(function(t){$(this).children(".dropdown-menu").addClass("show")})).on("mouseleave",(function(t){$(this).children(".dropdown-menu").removeClass("show")})),$(`#${t} .dropdown-submenu`).data("hooked",!0))}}))}))}}}]).directive("cronBreadcrumbs",["$rootScope",function(t){"use strict";return{restrict:"E",replace:!0,link:function(t,n,a){let o=a.ngInit?a.ngInit:null,r=[];const l=a.crnDelimiterIcon,s=a.typeMenu,c=a.idMenu?a.idMenu:null,d=a.id,u=(a.breadcrumbIcon&&a.breadcrumbIcon,()=>{const t=$(`#${d}`);t.data("kendoBreadcrumb")&&(t.data("kendoBreadcrumb").destroy(),t.empty())}),p=t=>t?t.replace("cronapi.screen.changeView('","").replace("', [])",""):"#/home";o&&"idBloco"===s?(async()=>{const n=o.replace("cronapi.client('js.","blockly.js.");o=n.replace("').run()",""),o=t.$eval(o),r=await o(),u(),$(`#${d}`).kendoBreadcrumb({items:r,delimiterIcon:l,navigational:!0,click:async t=>{t.item.action&&t.item.action()}})})():new MutationObserver(((t,n)=>{const a=$(`#${c}`).parent().attr("options");if(a){n.disconnect();const t=JSON.parse(a),s=document.location.hash||"home",c=(t,n,a=[])=>{for(let r=0;r<t.length;r++){var o=t[r];if(o.action=p(o.action),o.action===n)return[...a,o];if(o.menuItems){const t=c(o.menuItems,n,[...a,o]);if(t)return t}}return null},m=c(t.subMenuOptions,s);if(m){for(var o in r=[],m){const t=m[o];r.push({type:0==o?"rootitem":"item",href:t.action,text:t.title,showText:!0,showIcon:!1})}u(),$(`#${d}`).kendoBreadcrumb({items:r,delimiterIcon:l,navigational:!0})}}})).observe(document.body,{childList:!0,attributes:!0,subtree:!0})}}}]).directive("ngInitialValue",["$parse",function(t){return{restrict:"A",require:"ngModel",link:async function(n,a,o,r){if(o.ngInitialValue){var l,s=t(o.ngModel).assign;try{if(-1!=o.ngInitialValue.indexOf("cronapi.client('js.")){let t=o.ngInitialValue.replace("cronapi.client('js.","blockly.js."),a=t.split("').names")[0];a=a.split("').attr()")[0];let r=t.split(".run")[1];l=await n.$eval(a+r)}else l=n.$eval(o.ngInitialValue)||o.ngInitialValue}catch(t){l=o.ngInitialValue}"checkbox"==a[0].type&&l&&(l="true"==(""+l).toLowerCase()),s(n,l)}}}}]).directive("crnSetIndeterminate",["$parse",function($parse){return{restrict:"A",link:function(scope,element,attrs){let value=eval(attrs.crnSetIndeterminate);null===value&&$(element).prop("indeterminate",!0)}}}]).directive("crnAllowNullValues",[function(){return{restrict:"A",require:"?ngModel",link:function(t,n,a,o){o.$formatters=[],o.$parsers=[];let r=t=>(t&&-1===t.indexOf("'")&&(t=`'${t}'`),t);a.ngFalseValue=r(a.ngFalseValue),a.ngTrueValue=r(a.ngTrueValue);let l=!!a.ngFalseValue&&a.ngFalseValue.split("'").join(""),s=!a.ngTrueValue||a.ngTrueValue.split("'").join("");var c;"true"===(c=a.crnAllowNullValues)||null==c||0==c.length?o.$render=function(){let t=o.$viewValue;switch(n.data("checked",t),t){case!0:case s:n.prop("indeterminate",!1),n.prop("checked",!0),t=s;break;case!1:case l:n.prop("indeterminate",!1),n.prop("checked",!1),t=l;break;default:t=null,n.prop("indeterminate",!0)}setTimeout((()=>o.$setViewValue(t)))}:o.$render=function(){let r=o.$viewValue;if(void 0!==o.$viewValue&&null!==o.$viewValue||(o.$setViewValue(!1),r=!1),r===l){let o=a.ngFalseValue?`${n.attr("ng-model")}=${a.ngFalseValue}`:`${n.attr("ng-model")}=${l}`;t.$eval(o)}switch(n.data("checked",r),r){case!0:case s:n.prop("indeterminate",!1),n.prop("checked",!0),r=s;break;default:n.prop("indeterminate",!1),n.prop("checked",!1),r=l}setTimeout((()=>o.$setViewValue(r)))},n.bind("click",(function(){let r;switch(n.data("checked")){case!1:case l:r=!a.ngTrueValue||s;break;default:r=!!a.ngFalseValue&&l}o.$setViewValue(r),t.$apply(o.$render)}))}}}]).directive("signaturePad",["$compile","$window",function(t,n){"use strict";var a;return{restrict:"E",require:"ngModel",scope:!0,replace:!0,transclude:!0,template:'<div style="height: 100%; width: 100%;"> <canvas style="width:100%; height: 100%;" ng-click="mouseup()" ng-mouseup="mouseup()"></canvas> <div class="component-holder ng-scope col-md-2" style="bottom: 0; position: absolute; padding-left: 5px;" data-component="crn-button"> <button class="btn k-button btn-warning" ng-click="clear()" xattr-fullsize="" xattr-theme="btn-warning" xattr-disabled=""> <i class="glyphicon glyphicon-erase" icon-theme=""></i> <span class="" text-theme="">{{\'clear\'|translate}}</span> </button> </div> </div>',scope:{dataurl:"=",ngClick:"@",ngModel:"="},controller:["$scope",function(t){let n=()=>{let n=t.signaturePad.toDataURL();return n&&(n=n.split(",")[1]),n};t.mouseup=function(a){t.signaturePad.isEmpty()||(t.ngModel=n())},t.$watch("ngModel",(function(a,o){a!==o&&(n()!==a&&t.signaturePad.fromDataURL("data:image/png;base64,"+a,{ratio:1}),t.ngModel=a)}),!0),t.clear=function(){t.signaturePad.clear(),t.ngModel=null}}],link:function(o,r,l,s,c){a=r.find("canvas")[0],o.onResize=function(){var t=Math.max(n.devicePixelRatio||1,1),a=r.find("canvas")[0],o=document.createElement("canvas");o.width=a.width,o.height=a.height,o.getContext("2d").drawImage(a,0,0),a.width=a.offsetWidth*t,a.height=a.offsetHeight*t,a.getContext("2d").drawImage(o,0,0),a.getContext("2d").scale(t,t)},o.onResize(),o.signaturePad=new SignaturePad(a),angular.element(n).on("resize",(function(){o.onResize()})),t(r)(r.scope());let d=!1;$(a).on("pointerdown",(t=>{1===t.which&&(d=!0),t.preventDefault()})),$(a).on("pointerup",(t=>{1===t.which&&d&&(d=!1,c((()=>angular.element(a).triggerHandler("mouseup"))))}))}}}]).directive("cronChat",["$compile","$translate",function(t,n){return{restrict:"E",replace:!0,link:function(t,n,a,o){var r=JSON.parse(a.options||"{}");if(r.token&&r.urlCronchat){var l=r.urlCronchat.endsWith("/")?r.urlCronchat:r.urlCronchat+"/",s=r.token,c=$(`<script src="${l}get-chat?token=${s}" type="text/javascript"><\/script>`);n.html(c)}}}}]).directive("updateLanguage",["$rootScope",function(t){return{link:function(n,a){t.$on("$translateChangeSuccess",(function(t,n){var o=n.language;"pt_br"===o?o="pt-br":o.startsWith("en")&&(o="en"),a.attr("lang",o||"en")}))}}}]).directive("cronFrame",cronFrame).directive("crnComponent",cronFrame).directive("fromGrid",["$compile",t=>({restrict:"A",priority:-999999,exist:t=>{let n=t.attr("id");return $(`#${n}`).length},isFromGrid:t=>"true"===t.fromGrid,isCompiled:t=>t.data("alreadycompiled"),getDateAs:function(t,n,a){let o=t.data("mask"),r=t.data("useUTC");return formatWithMomentAs(o,r,n,a)},prepareValue:function(t,n){return(t.data("column-type")||"").startsWith("date")&&(n=this.getDateAs(t,n,"date")),n},formatComponent:function(t,n){let a=t.data("kendoDropDownList")||t.data("kendoSlider");(t.data("column-type")||"").startsWith("date")?t.val(this.getDateAs(t,n,"string")):a&&a.value(n)},compileGridListing:function(n,a){let o=n.data("ref-component");if(o&&o.tbody&&o.tbody.length&&!$(o.tbody).find(".k-grid-edit-row").length){var r=o.tbody;setTimeout((()=>{a.safeApply((()=>{var n=$(r),o=angular.element(n);t(o)(a)}))}))}},link:function(t,n,a){t.$watch(a.ngModel,(o=>{this.isFromGrid(a)&&this.exist(n)&&this.isCompiled(n)&&(o=this.prepareValue(n,o),this.formatComponent(n,o),this.compileGridListing(n,t),call=n.data("change-grid-model"),call&&call(o))}))}})]).directive("cronOrderedList",["$compile","$sce","$parse",function(t,n,a){"use strict";return{restrict:"EA",replace:!0,link:function(n,a,o,r){let l=o.attributeValue,s=o.orderedAttributeValue,c=o.listType,d=a[0].children[0].children;d=$(d);let u="",p="";switch($.each(d,(function(t,n){p+=n.outerHTML})),c){case"numbered-list":u=`<ol style="list-style-type: ${l}">${p}</ol>`;break;case"ordered-list":u=`<ul style="list-style-type: ${s}">${p}</ul>`}u=$(u),$(a).replaceWith(u),t(u)(n)}}}]).directive("crnInfiniteScroll",["$compile",function(t){"use strict";return{restrict:"EA",link:function(t,n,a){let o={isFirstTime:!0,isRunning:!1,datasource:void 0,isVisible:function(){var t=n.offset().top,a=n.offset().top+n.outerHeight(),o=$(window).scrollTop()+$(window).innerHeight(),r=$(window).scrollTop();return o>t&&r<a},loadNextPage:function(){return void 0===o.datasource&&(o.datasource=a.crnInfiniteScroll?t.$eval(a.crnInfiniteScroll):a.crnDatasource?t.$eval(a.crnDatasource):void 0),!!(o.datasource&&o.datasource.loaded&&o.datasource.loadedFinish)&&(o.datasource.nextPage(),!0)},setStopped:function(){o.isRunning=!1,o.isFirstTime&&(o.isFirstTime=!1,$(window).scroll(o.executeInfinityScroll))},executeInfinityScroll:function(){if(!o.isRunning){o.isRunning=!0;let t=0,n=setInterval((function(){o.isVisible()?o.loadNextPage()?o.isVisible()?t=0:(o.setStopped(),clearInterval(n)):t<5&&o.isVisible()?t+=1:(o.setStopped(),clearInterval(n)):o.setStopped()}),250)}}};$(window).ready(o.executeInfinityScroll)}}}])}(app),app.kendoHelper={getCorrectlyDS:(t,n)=>{if(n[t]&&n[t].apiVersion)return n[t];{let a=n.$parent[t];return n[t]=a,a}},getCorrectlyDSPromise:async(t,n)=>new Promise(((a,o)=>{let r=()=>{let l=null;if(n[t]&&n[t].apiVersion)l=n[t];else{let a=n.$parent[t];n[t]=a,l=a}l?a(l):$(`datasource[name="${t}"]`).length?setTimeout((()=>r()),100):o(null)};r()})),receivePushData:t=>!t||!t.dataSource||(t.dataSource.transport.options.refComponent=t),getSchema:function(t){var n=[{kendoType:"string",entityType:["string","character","uuid","guid"]},{kendoType:"number",entityType:["integer","long","double","int","float","bigdecimal","single","int32","int64","decimal","byte"]},{kendoType:"date",entityType:["date","time","datetime"]},{kendoType:"boolean",entityType:["boolean"]}],a=function(t){for(var a=0;a<n.length;a++)if(n[a].entityType.includes(t.toLocaleLowerCase()))return n[a].kendoType;return"string"},o={model:{id:"__$id",fields:{}}};return t&&t.schemaFields&&(t.schemaFields.forEach((function(t){o.model.fields[t.name]={type:a(t.type),editable:!0,nullable:t.nullable,validation:{required:!t.nullable}}})),o.model.fields.__$id={type:"string",editable:!0,nullable:!0,validation:{required:!1}}),o},getDataSource:function(t,n,a,o,r,l){var s=this.getSchema(t);r&&r.forEach((function(t){for(var n in s.model.fields)if("Database"==t.dataType&&t.field==n){if(s.model.fields[n].nullable=!t.required,s.model.fields[n].validation.required=t.required,"999.999.999-99;0"===t.format||"99.999.999/9999-99;0"===t.format){let a="999.999.999-99;0"===t.format?"cpf":"cnpj",o={cpf:CPF,cnpj:CNPJ},r=n.toLocaleLowerCase()+"validation";s.model.fields[n].validation[r]=function(t){return!t.is("[name='"+n+"']")||""==t.val()||o[a].isValid(t.val())}}break}}));var c=10;app.kendoHelper.getCorrectlyDS(t.name,n)&&(c=app.kendoHelper.getCorrectlyDS(t.name,n).rowsPerPage);var d=6e4*(new Date).getTimezoneOffset();function u(t){for(var n=0;n<t.length;n++)r&&r.forEach((function(a){"Database"==a.dataType&&(("datetime-local"==a.type||"month"==a.type||"time-local"==a.type||"week"==a.type)&&t[n][a.field]&&(t[n][a.field]=t[n][a.field].replace(/\d+/,(function(t){return parseInt(t)+d}))))}))}var p=app.common.generateId(),m={transport:{setActiveAndPost:function(t){var a=this.options.cronappDatasource;n.safeApply(a.updateActive(function(t){for(var n in t)if(s.model.fields.hasOwnProperty(n)){var a=s.model.fields[n];"string"==a.type&&null!=t[n]?t[n]=t[n]+"":"number"==a.type&&null!=t[n]?t[n]=parseFloat(t[n]):"date"==a.type&&null!=t[n]?t[n]="/Date("+t[n].getTime()+")/":"boolean"==a.type&&(null==t[n]?t[n]=!1:t[n]="true"==t[n].toString().toLowerCase()),s.model.id==n&&null!=t[n]&&0==t[n].toString().length&&delete t[n]}return t}(t.data))),a.active.__sender=p,a.postSilent(function(n){this.options.enableAndSelect(t),t.success(n),this.options.refComponent.dataSource._pristineTotal=this.options.refComponent.dataSource._pristineData.push(n)}.bind(this),function(n){this.options.enableAndSelect(t),t.error(n,n,n)}.bind(this))},pushAction:function(t,n){return a=>{if(this.options.isComponentInDocument(this.options.refComponent)){let o=this.options.getCurrentCallbackForPush(n,this.options.refComponent)[t];o?o(a):(this.options.fromRead="read"===t,this.options.cronappDatasource.reloadedFromCronapi&&(this.options.fromRead=!1,delete this.options.cronappDatasource.reloadedFromCronapi),"overRideRefresh"===t&&(this.options.refComponent.dataSource._page=1,this.options.refComponent.dataSource._skip=0),this.options.refComponent.dataSource.read())}else["read","memorydelete","overRideRefresh"].includes(t)||this.options.cronappDatasource.removeDataSourceEvents(this.options.dataSourceEventsPush)}},push:function(t){!this.options.dataSourceEventsPush&&this.options.cronappDatasource&&(this.options.dataSourceEventsPush={create:this.pushAction.bind(this)("pushUpdate",t),update:this.pushAction.bind(this)("pushUpdate",t),delete:this.pushAction.bind(this)("pushDestroy",t),overRideRefresh:this.pushAction.bind(this)("overRideRefresh",t),read:this.pushAction.bind(this)("read",t),memorycreate:this.pushAction.bind(this)("pushUpdate",t),memoryupdate:this.pushAction.bind(this)("pushUpdate",t),memorydelete:this.pushAction.bind(this)("pushDestroy",t)},"combobox"==this.origin&&delete this.options.dataSourceEventsPush.overRideRefresh,this.options.cronappDatasource.addDataSourceEvents(this.options.dataSourceEventsPush))},read:function(n){var a=!1;try{var o=this.options.cronappDatasource;this.options.kendoCallback?this.options.fromRead?this.options.kendoCallback.success(o.data):a=!0:(this.options.kendoCallback=n,a=!0)}finally{this.options.fromRead=!1}if(a){for(key in n.data)null==n.data[key]&&delete n.data[key];var r=kendo.data.transports.odata.parameterMap(n.data,"read"),l="";if(this.options.refComponent&&this.options.refComponent.dataSource.group().forEach((function(t){l+=t.field+" "+t.dir+","})),l.length>0&&(l=l.substr(0,l.length-1),r.$orderby?r.$orderby=l+","+r.$orderby:r.$orderby=l),(o=this.options.cronappDatasource).rowsPerPage=n.data.pageSize,o.offset=n.data.page-1,!n.data.pageSize&&(o.rowsPerPage=Number.MAX_SAFE_INTEGER_32,o.offset=void 0,r.$skip=0,this.options.refComponent&&1!=this.options.refComponent.dataSource.page()))return this.options.refComponent.dataSource.page(1),void n.error("canceled","canceled","canceled");var s={};s.params=r;var c=!1;t.append&&(c=t.append);var d={};"button"===o.loadDataStrategy&&o.data.length>0&&(d.origin=o.loadDataStrategy),o.append=c,o.fetch(s,{success:function(t){n.success(t)},canceled:function(t){n.error("canceled","canceled","canceled")},error:function(t){n.error("canceled","canceled","canceled")}},c,d)}},update:function(t){this.setActiveAndPost(t)},create:function(t){this.setActiveAndPost(t)},destroy:function(t){cronappDatasource=this.options.cronappDatasource,cronappDatasource.removeSilent(t.data,(function(n){t.success(n)}),(function(n){t.error("canceled","canceled","canceled")}))},batch:function(t){},options:{fromRead:!1,disableAndSelect:function(t){this.isComponentInDocument(this.refComponent)&&(this.refComponent.select(t.container),this.refComponent.options.selectable=!1,this.refComponent.selectable&&this.refComponent.selectable.element&&(this.refComponent.selectable.destroy(),this.refComponent.selectable=null))},enableAndSelect:function(t){this.isComponentInDocument(this.refComponent)&&(this.refComponent.options.selectable=this.refComponent.options.originalSelectable,this.refComponent._selectable(),this.refComponent.select(t.container))},selectActiveInGrid:function(t){if(this.isComponentInDocument(this.refComponent)&&this.refComponent.selectable&&this.refComponent.dataItems().length>0&&this.cronappDatasource.active&&this.cronappDatasource.active.__$id){for(var n=this.refComponent.dataItems(),a=-1,o=0;o<n.length;o++)if(this.cronappDatasource.active.__$id==n[o].__$id){a=o;break}a>-1&&!this.refComponent.selectable.options.multiple&&this.refComponent.select(this.refComponent.table.find("tr")[a+1])}},isComponentInDocument:function(t){return!!t&&$(document).has(t.element[0]).length},getCurrentCallbackForPush:function(t,n){return t||n},cronappDatasource:app.kendoHelper.getCorrectlyDS(t.name,n)}},pageSize:c,serverPaging:!0,serverFiltering:!0,serverSorting:!0,batch:!1,schema:s,requestEnd:function(t){if(t.response&&t.response.d){var n=null;n=t.response.d.results?t.response.d.results:[t.response.d],this.group().length?r.forEach((function(t){if("Database"==t.dataType&&("datetime-local"==t.type||"month"==t.type||"time-local"==t.type||"week"==t.type))for(var a=0;a<n.length;a++){var o=n[a];t.field==o.Member&&(o.Key=o.Key.replace(/\d+/,(function(t){return parseInt(t)+d}))),u.bind(this)(o.Items)}})):u.bind(this)(n)}}};return m.aggregate=function(t){var n=[];return t&&t.forEach((function(t){t.aggregates&&t.aggregates.forEach((function(a){n.push({field:t.field,aggregate:a.type})}))})),n}(r),m.schema.total=function(){return m.transport.options.cronappDatasource.getRowsCount()},l&&(m.group=[],l.forEach((function(t){var n={field:t.field,aggregates:m.aggregate};m.group.push(n)}))),m},getEventReadCombo:function(t){var n=this.options.cronappDatasource;if(n){var a;if(this.options.kendoCallback||(this.options.kendoCallback=t),this.options.combobox&&this.options.combobox.options.readData)return t.success(this.options.combobox.options.readData),this.options.combobox.options.readData=null,void(this.options.alreadyLoaded=!0);this.options.combobox?a=!this.options.alreadyLoaded:n.__ignoreFirstFetch?(a=!0,delete n.__ignoreFirstFetch):a=!1,this.options.alreadyLoaded=!0;var o=!0;if(a&&(o=!1,n.lazy?t.success([{}]):t.success([])),(this.options.fromRead||this.options.combobox&&void 0===this.options.combobox.options.firstLazyRead)&&(this.options.fromRead=!1,this.options.kendoCallback.success(n.data),o=!1),o){for(key in t.data)null==t.data[key]&&delete t.data[key];var r=kendo.data.transports.odata.parameterMap(t.data,"read");n.rowsPerPage=t.data.pageSize,n.offset=t.data.page-1;var l=this,s={};s.params=r,l.options.combobox&&(l.options.combobox.options.fromCombo=!0),n.fetch(s,{success:function(n){if(t.success&&(l.options.combobox&&(l.options.combobox.options.expanded=!0),t.success(n),l?.options?.combobox?.span&&l.options.$compile(l.options.combobox.span)(l.options.scope),l.options.kendoCallback=t,l.options&&l.options.combobox&&l.options.combobox.element[0].id)){var a=angular.element($(" .k-animation-container"));l.options.$compile(a)(l.options.scope)}},canceled:function(n){l.options.combobox&&(l.options.combobox.options.fromCombo=!1),t.success&&t.error("canceled","canceled","canceled")},error:function(n){l.options.combobox&&(l.options.combobox.options.fromCombo=!1),t.success&&t.error("error","error","error")}},!1,{ignoreAtive:!0})}}else t.error("canceled","canceled","canceled")},parseOptionsCronToConfigKendo:function(t,n,a){let o=!1;t.dynamic&&"false"!=t.dynamic?t.dataSourceScreen&&t.dataSourceScreen.entityDataSource&&(t.dataSourceScreen.entityDataSource.append=!0,(n=app.kendoHelper.getDataSource(t.dataSourceScreen.entityDataSource,a,!0,t.dataSourceScreen.rowsPerPage)).transport.read=app.kendoHelper.getEventReadCombo,o=!0):(o=!0,t.dataValueField=t.dataValueField||"value",t.dataTextField=t.dataTextField||"key"),t.dataValueField&&""!=t.dataValueField.trim()||(t.dataValueField=null==t.dataTextField?void 0:t.dataTextField);var r,l=function(n){var a=t.dataSourceScreen.entityDataSource.schemaFields;for(count=0;count<a.length;count++)if(n==a[count].name)return a[count].type.toLowerCase();return null};t.customTemplate||t.dataSourceScreen&&t.dataSourceScreen.entityDataSource&&t.dataSourceScreen.entityDataSource.schemaFields&&(t.format||(r=l(t.dataTextField),["date","time","datetime"].indexOf(r)>-1&&r))&&(t.template="#= useMask("+t.dataTextField+",'"+t.format+"','"+l(t.dataTextField)+"') #",t.valueTemplate="#= useMask("+t.dataTextField+",'"+t.format+"','"+l(t.dataTextField)+"') #");var s={dataTextField:null==t.dataTextField?void 0:t.dataTextField,dataValueField:null==t.dataValueField?void 0:t.dataValueField,dataSource:n,headerTemplate:null==t.headerTemplate?void 0:t.headerTemplate,template:null==t.template?void 0:t.template,tagTemplate:null==t.tagTemplate?void 0:t.tagTemplate,placeholder:null==t.placeholder?void 0:t.placeholder,footerTemplate:null==t.footerTemplate?void 0:t.footerTemplate,filter:null==t.filter?void 0:t.filter,valuePrimitive:o,valueTemplate:null==t.valueTemplate?void 0:t.valueTemplate,suggest:!0};return t.optionLabel&&(t.optionLabelText=t.optionLabel,t.optionLabelValue=""),s.optionLabel={},s.optionLabel[s.dataTextField]=void 0===t.optionLabelText?"":t.optionLabelText,s.optionLabel[s.dataValueField]=void 0===t.optionLabelValue?null:t.optionLabelValue,s},getConfigComboboxSync:function(t,n){var a={};if(t){if(!t.dynamic||"false"==t.dynamic){a.data=null==t.staticDataSource?void 0:t.staticDataSource;for(let t=0;t<a.data.length;t++)try{a.data[t].key&&a.data[t].key.startsWith("cronapi.server(")&&(a.data[t].key=a.data[t].key.replace(".run(",".notAsync().run("));let o=n.$eval(a.data[t].key);a.data[t].key=null!=o?o:a.data[t].key}catch(n){a.data[t].key=a.data[t].key}}return config=this.parseOptionsCronToConfigKendo(t,a,n),config}return{}},getConfigCombobox:async function(t,n){var a={};if(t){if(!t.dynamic||"false"==t.dynamic){a.data=null==t.staticDataSource?void 0:t.staticDataSource;for(let t=0;t<a.data.length;t++)try{a.data[t].key&&a.data[t].key.startsWith("cronapi.server(")&&(a.data[t].key=a.data[t].key.replace(".run(",".toPromise().run("));let o=await n.$eval(a.data[t].key);a.data[t].key=null!=o?o:a.data[t].key}catch(n){a.data[t].key=a.data[t].key}}return config=this.parseOptionsCronToConfigKendo(t,a,n),config}return{}},getConfigDate:function(t,n){var a,o,r={};if(r){var l=function(t){return t&&(t=(t=(t=(t=(t=t.replace(/:MM/gm,":mm")).replace(/:M/gm,":m")).replace(/S/gm,"s")).replace(/D/gm,"d")).replace(/Y/gm,"y")),t},s={};if(n.animation)try{s=JSON.parse(n.animation)}catch(t){console.log("DateAnimation invalid configuration! "+t)}var c=(a=n.type,null==(o=n.format)&&(o=parseMaskType(a,t)),o);r={value:null,format:l(c),timeFormat:l(n.timeFormat),momentFormat:c,culture:function(t){var n=(t=t.replace(/_/gm,"-")).split("-");return n[n.length-1]=n[n.length-1].toUpperCase(),n.join("-")}(t.use()),type:null==n.type?void 0:n.type,weekNumber:null==n.weekNumber?void 0:n.weekNumber,dateInput:null==n.dateInput?void 0:n.dateInput,animation:s,footer:null==n.footer?void 0:n.footer,start:null==n.start?void 0:n.start,depth:null==n.start?void 0:n.start}}return r},buildKendoMomentPicker:function(t,n,a,o){var r="date"==n.type||"datetime"==n.type||"time"==n.type;window.fixedTimeZone||(r=!1),t.data("mask",n.momentFormat),t.data("useUTC",r);var l=function(){var a=t.val();if(a&&""!=a.trim()){var l=formatWithMomentAs(n.momentFormat,r,a,"date");o&&(o.$setViewValue(l),t.data("changed",!0))}else o&&o.$setViewValue("")};return n.change=a?function(){a.$apply((function(){l()}))}:l,"date"==n.type?t.kendoDatePicker(n).data("kendoDatePicker"):"datetime"==n.type||"datetime-local"==n.type?t.kendoDateTimePicker(n).data("kendoDateTimePicker"):"time"==n.type||"time-local"==n.type?t.kendoTimePicker(n).data("kendoTimePicker"):void 0},getConfigSlider:function(t){var n={increaseButtonTitle:(t=t||{}).increaseButtonTitle,decreaseButtonTitle:t.decreaseButtonTitle,dragHandleTitle:t.dragHandleTitle};try{n.min=t.min?parseInt(t.min):1,n.max=t.max?parseInt(t.max):1,n.smallStep=t.smallStep?parseInt(t.smallStep):1,n.largeStep=t.largeStep?parseInt(t.largeStep):1}catch(t){console.log("Slider invalid configuration! "+t)}return n},getConfigSwitch:function(t){return{onLabel:null==(t=t||{}).onLabel?void 0:t.onLabel,offLabel:null==t.offLabel?void 0:t.offLabel}},getConfigBarcode:function(t){var n={type:null==t.type?void 0:t.type,width:null==t.width?void 0:parseInt(t.width),height:null==t.height?void 0:parseInt(t.height)};return n.type||(n.type="EAN8"),n},getConfigQrcode:function(t){var n={errorCorrection:null==t.errorCorrection?void 0:t.errorCorrection,size:null==t.size?void 0:parseInt(t.size),color:null==t.color?void 0:t.color};return(t.borderColor||t.borderSize)&&(n.border={size:null==t.size?void 0:parseInt(t.size),color:null==t.color?void 0:t.color}),n}},window.showTreatedValue=function(t){return t||!1===t?t:""},window.useMask=function(t,n,a){var o="",r=t,l=(n="null"==n||"undefined"==n?void 0:n)||a;if(null!=t&&null!=t){if(t instanceof Date)r='"'+moment(t).utcOffset(window.timeZoneOffset).format()+'"';else r="number"==typeof t?t:'"'+t+'"';o="{{ "+r+' | mask:"'+l+'":"'+a+'"}}'}return o},window.formatWithMomentAs=function(t,n,a,o){if(!a)return;let r=null;return r=a instanceof Date||a.startsWith("/Date")?n?moment(a).utcOffset(window.timeZoneOffset):moment(a):n?moment(a,t).utcOffset(window.timeZoneOffset,!0):moment(a,t),"string"===o?r.format(t):r.toDate()};
|
|
1
|
+
function maskDirectiveAsDate(t,n,a){return maskDirective(t,n,a,"as-date")}function maskDirectiveMask(t,n,a){return maskDirective(t,n,a,"mask")}function maskDirective(t,n,a,o){return{restrict:"A",require:"?ngModel",link:function(r,l,s,c){if("as-date"==o&&void 0!==s.mask)return;var d=a(s.ngModel).assign,u=$(l);if(u.data("alreadycompiled"))return;u.data("alreadycompiled",!0),u.data("$compile",t);var p=u.attr("type");if("email"===p){u.inputmask("email").attr("novalidate","novalidate"),u.next(".k-tooltip-validation").remove();return void new MutationObserver((()=>{const t=u.next(".k-tooltip-validation");t.length&&t.remove()})).observe(u[0].parentNode,{childList:!0,subtree:!0})}if(["week","date","time","datetime-local","month","datetime","time-local"].includes(p)){const t=["week","dat","month","datetime-local","datetime"].includes(p)?"fa fa-calendar-o":"fa fa-clock-o",n=document.createElement("span");n.className="input-icon-wrapper",n.innerHTML=`<i class="${t}" style="cursor: pointer; font-weight: 600;"></i>`;const a=document.createElement("input");a.type=p,a.style.position="absolute",a.style.opacity="0",a.style.pointerEvents="none",u.after(n),n.appendChild(a),n.addEventListener("click",(()=>{a.focus()})),a.addEventListener("change",(()=>{u.val(a.value),u.trigger("input")})),r.$watch((()=>u.attr("exibir-icone")),(t=>{n.style.display="true"===t?"inline-block":"none"}))}if(["checkbox","password","url","color","range"].includes(p))return void(["color","range"].includes(p)&&u[0].classList.remove("form-control","k-textbox"));["color","range","checkbox"].includes(p)||(u.data("type",p),u.attr("type","text")),c&&(c.$formatters=[],c.$parsers=[]);var m=(s.mask||s.format||parseMaskType(p,n)).replace(";1","").replace(";0","").trim();if(!m)return;const f=function(t,n){switch(t){case"week":return"Semana --, ----";case"month":return"-------- de ----";case"time":case"time-local":return"--:--";case"datetime-local":case"datetime":return"dd/mm/aaaa --:--";case"date":return"dd/mm/aaaa";default:return n.replace(/D/g,"d").replace(/M/g,"m").replace(/Y/g,"a").replace(/H/g,"h").replace(/m/g,"m").replace(/s/g,"s").replace(/-/g,"-").replace(/:/g,":").replace(/\//g,"/")}}(p,m);if(u.attr("placeholder",f),["week","date","time","datetime-local","month","datetime","time-local"].includes(p)&&u.addClass("dark-placeholder"),u.on("input blur",(function(){u.val()?u.attr("placeholder",""):u.attr("placeholder",f)})),["date","datetime-local","datetime","time","time-local"].includes(p)?u.datetimepicker({format:m,locale:n.use()}):["number","money","integer"].includes(p)?u.inputmask("numeric",{prefix:"",rightAlign:!1}):u.mask(m),["date","datetime","datetime-local","month","time","week"].includes(p)){var g={format:m,locale:n.use(),showTodayButton:!0,useStrict:!0,tooltips:{today:n.instant("DatePicker.today"),clear:n.instant("DatePicker.clear"),close:n.instant("DatePicker.close"),selectMonth:n.instant("DatePicker.selectMonth"),prevMonth:n.instant("DatePicker.prevMonth"),nextMonth:n.instant("DatePicker.nextMonth"),selectYear:n.instant("DatePicker.selectYear"),prevYear:n.instant("DatePicker.prevYear"),nextYear:n.instant("DatePicker.nextYear"),selectDecade:n.instant("DatePicker.selectDecade"),prevDecade:n.instant("DatePicker.prevDecade"),nextDecade:n.instant("DatePicker.nextDecade"),prevCentury:n.instant("DatePicker.prevCentury"),nextCentury:n.instant("DatePicker.nextCentury")}};if(u.attr("from-grid")){var h=function(){var t=$(this).offset(),n=!0,a=$(this).parent().find(".bootstrap-datetimepicker-widget.dropdown-menu");if(a.length||(n=!1,a=$(this).parent().find(".bootstrap-datetimepicker-widget.dropdown-menu.top")),$(a).offset()){a.appendTo("body");var o=n?t.top+u.outerHeight():t.top-a.outerHeight();a.css({top:o,left:t.left,zIndex:999999})}};u.on("click",h),u.on("focus",(function(){setTimeout(h.bind(this),100)}))}if(u.datetimepicker(g),u.attr("from-grid")){h=function(){var t=$(this).offset(),n=!0,a=$(this).parent().find(".bootstrap-datetimepicker-widget.dropdown-menu.usetwentyfour.bottom");if(a.length||(n=!1,a=$(this).parent().find(".bootstrap-datetimepicker-widget.dropdown-menu.usetwentyfour.top")),$(a).offset()){var o=$(a).offset().left,r=$("body");a.appendTo(r);var l=0;l=n?t.top+35:t.top-($(a).height()+15),a.css("top",l),a.css("bottom","auto"),a.css("left",o),a.css("z-index",999999)}};if(u.on("click",h),u.on("focus",(function(){setTimeout(h.bind(this),100)})),u.on("dp.change",(function(){r.safeApply((function(){var t=null;t=useUTC?moment(u.val(),m).utcOffset(window.timeZoneOffset,!0):moment(u.val(),m),"time"!=p&&"time-local"!=p||(t=t.year(1970).dayOfYear(1).month(0)),t.isValid()&&c&&d(r,t.toDate())}))})),u.data("initial-value")){var v=u.data("initial-value"),b=null;b=useUTC?moment(v).utcOffset(window.timeZoneOffset):moment(v),u.val(b.format(m)),u.data("initial-value",null)}}else u.wrap('<div style="position:relative"></div>');u.datetimepicker(g),"true"!==s.fromGrid&&u.on("dp.change",(function(){$(this).is(":visible")&&($(this).trigger("change"),r.safeApply((function(){var t=u.val(),n=null;n=useUTC?moment(t,m).utcOffset(window.timeZoneOffset,!0):moment(t,m),"time"!=p&&"time-local"!=p||(n=n.year(1970).dayOfYear(1).month(0)),n.isValid()&&c&&d(r,n.toDate())})))})),c&&(c.$formatters.push((t=>t?moment(t).format(m):null)),c.$parsers.push((t=>{var n=moment(t,m);return n.isValid()?n.toDate():null})),u.on("dp.change",(function(){r.$apply((()=>{var t=u.val(),n=moment(t,m);n.isValid()&&c.$setViewValue(n.toDate())}))})))}else if("number"==p||"money"==p||"integer"==p||"money-decimal"==p){removeMask=!0;var y=m.trim().replace(/\./g,"").replace(/\,/g,"").replace(/#/g,"").replace(/0/g,"").replace(/9/g,""),k="",w="",S="",C=",",D=0;m.startsWith(y)?k=y:m.endsWith(y)&&(w=y);var T=m.trim().replace(k,"").replace(w,"").trim();T.startsWith("#.")?S=".":T.startsWith("#,")&&(S=",");var x=null;if(-1!=T.indexOf(",0")?(C=",",x=",0"):-1!=T.indexOf(".0")&&(C=".",x=".0"),null!=x)D=T.substring(T.indexOf(x)+1).length;var M="numeric";0==D&&(M="integer"),"money-decimal"==p&&(M="currency");var I={rightAlign:["money","money-decimal"].includes(p),allowMinus:!0,prefix:k,suffix:w,radixPoint:C,digits:D,groupSeparator:S,autoGroup:!!S};u.inputmask(M,I),useInputMaskPlugin(u,c,r,d,m)}else{let t=["D","M","Y","H","m","s"],n=n=>(t.forEach((t=>n=n.replaceAll(t,"9"))),n);if(m=n(m),s.maskPlaceholder){g={placeholder:s.maskPlaceholder};u.inputmask(m,g),useInputMaskPlugin(u,c,r,d,m)}else u.mask(m),useMaskPlugin(u,c,r,d,!1)}}}}function useInputMaskPlugin(t,n,a,o,r){var l=$(t),s=function(){$(this).data("rawvalue",$(this).inputmask("unmaskedvalue"))};$(t).on("keydown",s).on("keyup",s),n&&(n.$formatters.push((function(t){return null!=t&&null!=t&&""!==t?format(r,t):null})),n.$parsers.push((function(t){if(null!=t&&null!=t&&""!==t){var n=l.inputmask("unmaskedvalue");if(""!==n){let t=l.data("type");return"number"==t||"money"==t||"integer"==t||"money-decimal"==t?Number(n.replace(",",".")):n}}return null})))}function useMaskPlugin(t,n,a,o,r){var l=$(t),s=function(){r&&$(this).data("rawvalue",$(this).cleanVal())};$(t).on("keydown",s).on("keyup",s),r&&n&&(n.$formatters.push((function(t){return t?l.masked(t):null})),n.$parsers.push((function(t){return t?l.cleanVal():null})))}function parseMaskType(t,n){return"datetime"==t||"datetime-local"==t?"Format.DateTime"==(t=n.instant("Format.DateTime"))&&(t="DD/MM/YYYY HH:mm:ss"):"date"==t?"Format.Date"==(t=n.instant("Format.Date"))&&(t="DD/MM/YYYY"):"time"==t||"time-local"==t?"Format.Hour"==(t=n.instant("Format.Hour"))&&(t="HH:mm:ss"):"month"==t?t="MMMM":"number"==t?"Format.Decimal"==(t=n.instant("Format.Decimal"))&&(t="#.#00,00"):"money"==t||"money-decimal"==t?"Format.Money"==(t=n.instant("Format.Money"))&&(t="#.#00,00"):"integer"==t?"Format.Integer"==(t=n.instant("Format.Integer"))&&(t="#,##0.####"):"week"==t?t="dddd":"tel"==t?t="(00) 00000-0000;0":("text"==t||"string"==t)&&(t=""),t}function transformText(){return{restrict:"E",require:"?ngModel",link:function(t,n,a,o){var r=function(t,n){if(t){if(null!=n){if("uppercase"===t.css("text-transform"))return n.toUpperCase();if("lowercase"===t.css("text-transform"))return n.toLowerCase()}return n}};o&&(o.$formatters.push((function(t){return r(n,t)})),o.$parsers.push((function(t){return r(n,t)})))}}}function cronFrame($compile,$sce,$parse){"use strict";return{restrict:"AE",link:function(scope,element,attrs,ngModelCtrl){scope.fragment=scope.fragment||{};var framentMap=scope.fragment[element.parent.id]||{};scope.$watch((function(){return attrs.origin}),(function(newVal){let template="",style=attrs.style||"",clazz=attrs.class||"";if(attrs.origin)if(attrs.type||(attrs.type="include"),"include"==attrs.type){let str=`<div style="${style}" class="${clazz}" ng-include="'${attrs.origin}'" ng-if="true"></div>`;if(template=$(str),attrs.params)try{let params=eval(attrs.params);for(let t in params){let n=params[t];"expression"==n.type?scope.$watch(n.value,(function(t){framentMap[n.key]=t;var a=$(str);a.attr("onload",`params = ${JSON.stringify(framentMap)}`);var o=$compile(a)(scope);element.html(o)})):framentMap[n.key]=n.value}template.attr("onload",`params = ${JSON.stringify(framentMap)}`)}catch(t){console.error(t)}}else if("frame"==attrs.type){var url=$sce.trustAsResourceUrl(attrs.origin);template=$(`<iframe style="${style}" class="${clazz}" ng-src="${url}" width="100%" height="100%" loading="lazy"></iframe>`)}element.html(template),$compile(template)(scope)}))}}}function cronReportViewer(t){return{restrict:"E",replace:!0,require:"ngModel",link:function(t,n,a,o){function r(a){var o=JSON.parse(a),r={element:n};t.$eval(o.reportCommand||o.dashboardCommand,r)}r(a.options);let l=n[0].parentElement;for(;l;)if("BODY"===l.tagName)l=null;else{if(l.classList.contains("tab-pane"))break;l=l.parentElement}if(l&&!l.classList.contains("active")){new MutationObserver((function(t,n){for(let o of t)if("class"===o.attributeName&&o.target.classList.contains("active")){r(a.options),n.disconnect();break}})).observe(l,{attributes:!0})}var s=null;t.$watch((function(){return a.options}),(function(t,n){t!==n&&(s&&(clearInterval(s),s=null),s=setTimeout(function(){r(t)}.bind(this),500))}))}}}maskDirectiveAsDate.$inject=["$compile","$translate","$parse"],maskDirectiveMask.$inject=["$compile","$translate","$parse"],cronReportViewer.$inject=["$compile"],cronFrame.$inject=["$compile","$sce","$parse"],function($app){app.common={generateId:function(){var t=Math.floor(65536*(1+Math.random())).toString(16).substring(1);return"0123456789".indexOf(t.substr(0,1))>-1?this.generateId():t}};var isoDate=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,ISO_PATTERN=new RegExp("(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))");Number.MAX_SAFE_INTEGER_32=2147483647;var patternFormat=function(t){return t&&$(t).attr("format")||"DD/MM/YYYY"},parsePermission=function(t){var n={visible:{public:!0},enabled:{public:!0},render:{public:!0},notvisible:{public:!1},notenabled:{public:!1},notrender:{public:!1}};if(t)for(var a=t.toLowerCase().trim().split(","),o=0;o<a.length;o++){var r=a[o].trim();if(r){var l=r.split(":");if(2==l.length){var s=l[0].trim(),c=l[1].trim();if(c){for(var d=c.split(";"),u={},p=0;p<d.length;p++){var m=d[p].trim();m&&(u[m]=!0)}n[s]=u}}}}return n};app.directive("cronCalendar",["$timeout",function(t){return{restrict:"E",link:async function(t,n,a,o){let r={};try{r=JSON.parse(a.options)}catch(t){console.error(t)}const l=$(n),s=navigator.language||navigator.userLanguage,c=r.expressionInitialDate,d=r.expressionSelectDates,u=r.expressionDisableDates,p=r.expressionMinDate,m=r.expressionMaxDate,f=r.expressionOnChange,g=r.expressionOnNavigate,h=c?await t.$eval(generateBlocklyCall(c,!0)):new Date,v=d&&r.isSelectableMultiple?await t.$eval(generateBlocklyCall(d,!0)):[],b=u?await t.$eval(generateBlocklyCall(u,!0)):null,y=p?await t.$eval(generateBlocklyCall(p,!0)):new Date(1900,0,1),k=m?await t.$eval(generateBlocklyCall(m),!0):new Date(2099,11,31);l.kendoCalendar({culture:s.startsWith("pt")?"pt-BR":"en-US",componentType:r.isClassicType?"classic":"modern",selectable:r.isSelectableSingle?"single":"multiple",weekNumber:r.showWeekNumbers,value:h,selectDates:v,disableDates:b,min:y,max:k,start:r.startView});let w=l.data("kendoCalendar");w.bind("change",(function(){this.value();f&&t.$eval(generateBlocklyCall(f))})),w.bind("navigate",(function(){this.view(),this.current();f&&t.$eval(generateBlocklyCall(g))}))}}}]),app.directive("justGage",["$timeout",function(t){return{restrict:"EA",scope:{id:"@",class:"@",min:"=",max:"=",title:"@",label:"@",value:"@",options:"="},template:'<div id="{{id}}-justgage" class="{{class}}"></div>',link:function(n,a,o){t((function(){var t={id:n.id+"-justgage",min:n.min||0,max:n.max||100,title:n.title,label:n.label||"",value:n.value};if(n.options)for(var a in n.options)t[a]=n.options[a];var o=new JustGage(t);n.$watch("max",(function(t){void 0!==t&&o.refresh(n.value,t)}),!0),n.$watch("value",(function(t){void 0!==t&&o.refresh(t)}),!0)}))}}}]),app.directive("crnAnchor",["$rootScope","$location","$anchorScroll",function(t,n,a){return{restrict:"A",link:function(t,n,o){n.bind("click",(function(){let t=o.crnAnchor;a(t),$("#"+t).get(0).focus()}))}}}]),app.directive("crnTooltip",(function(){return{restrict:"A",link:function(t,n,a){if(a.crnTooltip&&a.crnTooltip.toString()&&a.crnTooltip.toString().trim().length>0)try{let t=JSON.parse(a.crnTooltip.toString());t.content&&t.content.toString()&&a.crnTooltip.toString().trim().length>0&&$(n).kendoTooltip(t).data("kendoTooltip")}catch(t){console.error("Formato do atributo tooltip deve ser um json."),console.error("Valor atual: "+a.crnTooltip),console.error("Error ocorrido: "+t)}}}})),app.directive("input",transformText),app.directive("textarea",transformText);var generateBlocklyCall=function(t,n){var a="";if(!t)return a;if("client"==t.type){a="cronapi.client('"+t.blocklyClass+"."+t.blocklyMethod+"')";var o="";t.blocklyParams.forEach((function(t){o.length>0&&(o+=", "),o+=t.value?t.value:"null"})),a+=".run("+o+")"}else if("server"==t.type){a="cronapi.server('"+(t.blocklyClass+"."+t.blocklyMethod)+"')"+(n?".toPromise()":"");o="";t.blocklyParams.forEach((function(t){o.length>0&&(o+=", "),o+=t.value?t.value:"null"})),a+=".run("+o+")"}return a};app.directive("asDate",maskDirectiveAsDate).directive("ngDestroy",(function(){return{restrict:"A",link:function(scope,element,attrs,ctrl){element.on("$destroy",(function(){attrs.ngDestroy&&attrs.ngDestroy.length>0&&(attrs.ngDestroy.indexOf("app.")>-1||attrs.ngDestroy.indexOf("blockly.")>-1?scope.$eval(attrs.ngDestroy):eval(attrs.ngDestroy))}))}}})).directive("dynamicImage",["$compile",function(t){return{restrict:"E",replace:!0,scope:{ngModel:"@",width:"@",height:"@",style:"@",class:"@"},require:"ngModel",template:"<div></div>",init:function(t){t.ngModel||(t.ngModel=""),t.width||(t.width="128"),t.height||(t.height="128"),t.style||(t.style=""),t.class||(t.class=""),this.containsLetter(t.width)||(t.width+="px"),this.containsLetter(t.height)||(t.height+="px")},containsLetter:function(t){for(var n,a=0;a<t.length;a++){n=!0;for(var o=0;o<10;o++)parseInt(t[a])==o&&(n=!1);if(n)break}return n},link:function(n,a,o){this.init(n);var r=n,l=o.ngRequired&&"true"==o.ngRequired?"required":"";a.append('<div class="form-group upload-image-component" ngf-drop="" ngf-drag-over-class="dragover"> <img class="$class$" style="$style$; height: $height$; width: $width$;" ng-if="$ngModel$" data-ng-src="{{$ngModel$.startsWith(\'http\') || ($ngModel$.startsWith(\'/\') && $ngModel$.length < 1000)? $ngModel$ : \'data:image/png;base64,\' + $ngModel$}}"> <img class="$class$" style="$style$; height: $height$; width: $width$;" ng-if="!$ngModel$" data-ng-src="/plugins/cronapp-framework-js/img/selectImg.svg" class="btn" ng-if="!$ngModel$" ngf-drop="" ngf-select="" ngf-change="cronapi.internal.setFile(\'$ngModel$\', $file)" accept="image/*;capture=camera"> <button class="remove btn btn-danger btn-xs" ng-if="$ngModel$" ng-click="$ngModel$=null"> <span class="glyphicon glyphicon-remove"></span> <span class="sr-only">{{"Remove" | translate}}</span> </button> <button class="btn btn-info btn-xs start-camera-button" ng-if="!$ngModel$" ng-click="cronapi.internal.startCamera(\'$ngModel$\')"> <span class="glyphicon glyphicon-facetime-video"></span> <span class="sr-only">{{"Upload.camera" | translate}}</span> </button> <input ng-if="!$ngModel$" autocomplete="off" tabindex="-1" class="uiSelectRequired ui-select-offscreen" style="top: inherit !important; margin-left: 85px !important;margin-top: 50px !important;" type=text ng-model="$ngModel$" $required$> </div>'.split("$height$").join(r.height).split("$width$").join(r.width).split("$ngModel$").join(r.ngModel).split("$style$").join(r.style).split("$class$").join(r.class).split("$required$").join(l)),t(a)(a.scope())}}}]).directive("dynamicImage",["$compile","$translate",function(t,n){return{restrict:"A",scope:!0,require:"ngModel",link:function(a,o,r){var l=r.ngRequired&&"true"==r.ngRequired?"required":"",s=o.html();let c=`<div ngf-drop="" ngf-drag-over-class="dragover" style="display: flex; justify-content: center; width: 100%; height: 100%; position: relative; ">\n <img alt="$picture$" style="width: 100%; object-fit: ${r.objectFit||"unset"}" ng-if="$ngModel$"\n data-ng-src="{{$ngModel$.startsWith('http') || ($ngModel$.startsWith('/') && $ngModel$.length < 1000)? $ngModel$ : 'data:image/png;base64,' + $ngModel$}}">\n <input id="$id$" aria-label="$userHtml$" ng-if="!$ngModel$" autocomplete="off" tabindex="-1"\n class="uiSelectRequired ui-select-offscreen"\n style="top: inherit !important; margin-left: 85px !important;margin-top: 50px !important; display: none;" type=text\n ng-model="$ngModel$" $required$>\n <button id="$idbutton$" class="btn" ng-if="!$ngModel$" ngf-drop="" ngf-select=""\n ngf-change="cronapi.internal.setFile('$ngModel$', $file)" ngf-pattern="'image/*'" ngf-max-size="$maxFileSize$">\n $userHtml$ \n </button>\n <button class="remove-image-button btn btn-danger btn-xs" ng-if="$ngModel$" ng-click="$ngModel$=null">\n <span class="glyphicon glyphicon-remove"></span>\n <span class="sr-only">{{"Remove" | translate}}</span>\n </button>\n <button class="btn btn-info btn-xs start-camera-button-attribute" ng-if="!$ngModel$"\n ng-click="cronapi.internal.startCamera('$ngModel$')">\n <span class="glyphicon glyphicon-facetime-video"></span>\n <span class="sr-only">{{"Upload.camera" | translate}}</span>\n </button>\n </div>`;var d="";r.maxFileSize&&(d=r.maxFileSize);var u="";u=r.imgAltText?r.imgAltText:"Admin.view.Picture",c=$(c.split("$id$").join(r.id?r.id+"-input":"textinput-picture").split("$idbutton$").join(r.id?r.id+"-button":"textinput-picture-button").split("$ngModel$").join(r.ngModel).split("$required$").join(l).split("$userHtml$").join(s).split("$maxFileSize$").join(d).split("$picture$").join(n.instant(u))),"true"==r.readOnly&&(c.find(".remove-image-button").remove(),c.find(".start-camera-button-attribute").remove()),o.html(c),t(c)(o.scope())}}}]).directive("dynamicFile",["$compile","$translate",function(t,n){return{restrict:"A",scope:!0,require:"ngModel",link:function(a,o,r){var l=r.ngRequired&&"true"==r.ngRequired?"required":"",s=r.ngModel.split("."),c=s[0],d=s[s.length-1],u=Math.floor(1e3*Math.random()+20),p=o.html(),m="",f=r.acceptFile||"'*.*'";r.maxFileSize&&(m=r.maxFileSize);let g=r.fileInfo?`'${r.fileInfo}'`:"undefined";var h=' <div ng-show="!$ngModel$" ngf-drop="" ngf-drag-over-class="dragover"> <input id="$id$" aria-label="$userHtml$" ng-if="!$ngModel$" autocomplete="off" tabindex="-1" class="uiSelectRequired ui-select-offscreen" style="top: inherit !important;margin-left: 85px !important;margin-top: 50px !important; display: none;" type=text ng-model="$ngModel$" $required$> <button id="$idbutton$" class="btn" ngf-drop="" ngf-select="" ngf-change="cronapi.internal.uploadFile(\'$ngModel$\', $file, \'uploadprogress$number$\', $fileInfo$, $invalidFiles)" ngf-max-size="$maxFileSize$" ngf-pattern="$acceptPattern$" ngf-accept="$acceptFile$"> $userHtml$ </button> <div class="progress" data-type="bootstrapProgress" id="uploadprogress$number$" style="display:none"> <div class="progress-bar" role="progressbar" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100" style="width:0%"> <span class="sr-only"></span> </div> </div> </div> <div ng-show="$ngModel$" class="upload-image-component-attribute"> <button class="btn btn-danger btn-xs ng-scope" style="float:right;" ng-if="$ngModel$" ng-click="$ngModel$=null"> <span class="glyphicon glyphicon-remove"></span> <span class="sr-only">{{"Remove" | translate}}</span> </button> <div> <div ng-bind-html="cronapi.internal.generatePreviewDescriptionByte($ngModel$, $fileInfo$)"></div> <a href="javascript:void(0)" ng-click="cronapi.internal.downloadFileEntity($datasource$,\'$field$\', undefined, $fileInfo$)">$lblDownload$</a> </div> </div> ';h=$(h.split("$id$").join(r.id?r.id+"-input":"textinput-file").split("$idbutton$").join(r.id?r.id+"-button":"textinput-file-button").split("$ngModel$").join(r.ngModel).split("$datasource$").join(c).split("$field$").join(d).split("$number$").join(u).split("$required$").join(l).split("$userHtml$").join(p).split("$maxFileSize$").join(m).split("$lblDownload$").join(n.instant("download")).split("$fileInfo$").join(g).split("$acceptPattern$").join(f).split("$acceptFile$").join(f)),o.html(h),t(h)(o.scope())}}}]).directive("dynamicFile",["$compile",function(t){return{restrict:"E",replace:!0,scope:{ngModel:"@"},require:"ngModel",template:"<div></div>",init:function(t){t.ngModel||(t.ngModel="")},link:function(n,a,o){this.init(n);var r=n,l=o.ngRequired&&"true"==o.ngRequired?"required":"",s=r.ngModel.split("."),c=s[0],d=s[s.length-1],u=Math.floor(1e3*Math.random()+20);a.append(' <div ng-show="!$ngModel$"> <input ng-if="!$ngModel$" autocomplete="off" tabindex="-1" class="uiSelectRequired ui-select-offscreen" style="top: inherit !important;margin-left: 85px !important;margin-top: 50px !important;" type=text ng-model="$ngModel$" $required$> <div class="form-group upload-image-component" ngf-drop="" ngf-drag-over-class="dragover"> <img class="ng-scope" style="height: 128px; width: 128px;" ng-if="!$ngModel$" data-ng-src="/plugins/cronapp-framework-js/img/selectFile.png" ngf-drop="" ngf-select="" ngf-change="cronapi.internal.uploadFile(\'$ngModel$\', $file, \'uploadprogress$number$\')" accept="*"> <progress id="uploadprogress$number$" max="100" value="0" style="position: absolute; width: 128px; margin-top: -134px;">0</progress> </div> </div> <div ng-show="$ngModel$" class="form-group upload-image-component"> <div class="btn btn-danger btn-xs ng-scope" style="float:right;" ng-if="$ngModel$" ng-click="$ngModel$=null"> <span class="glyphicon glyphicon-remove"></span> </div> <div> <div ng-bind-html="cronapi.internal.generatePreviewDescriptionByte($ngModel$)"></div> <a href="javascript:void(0)" ng-click="cronapi.internal.downloadFileEntity($datasource$,\'$field$\')">download</a> </div> </div> '.split("$ngModel$").join(r.ngModel).split("$datasource$").join(c).split("$field$").join(d).split("$number$").join(u).split("$required$").join(l)),t(a)(a.scope())}}}]).directive("pwCheck",[function(){"use strict";return{require:"ngModel",link:function(t,n,a,o){var r="#"+a.pwCheck;n.add(r).on("keyup",(function(){t.$apply((function(){var t=n.val()===$(r).val();o.$setValidity("pwmatch",t)}))}))}}}]).directive("ngClick",[function(){"use strict";return{link:function(scope,elem,attrs,ctrl){if(scope.rowData){var crnDatasource=elem.closest("[crn-datasource]");crnDatasource.length>0&&elem.on("click",(function(){scope.$apply((function(){var datasource=eval(crnDatasource.attr("crn-datasource"));datasource.active=scope.rowData}))}))}}}}]).directive("valid",(function(){return{require:"?ngModel",restrict:"A",link:function(t,n,a,o){var r={cpf:CPF,cnpj:CNPJ};if(o)o.$validators[a.valid]=function(t,o){var l=t||o,s=r[a.valid].isValid(l);return s||null===l?n[0].setCustomValidity(""):n.scope().$applyAsync((function(){n[0].setCustomValidity(n[0].dataset.errorMessage)})),s||!l};else{let t=function(){setTimeout((()=>{var t=n.data("rawvalue");r[a.valid].isValid(t)||null===t?n.removeClass("k-invalid"):n.addClass("k-invalid")}))};n.on("keydown",t).on("keyup",t)}}}})).directive("cronappSecurity",["$rootScope",function(t){return{restrict:"A",priority:Number.MIN_SAFE_INTEGER,link:function(n,a,o){if(""==o.cronappSecurity||null==o.cronappSecurity||null==o.cronappSecurity)return;var r=[],l=JSON.parse(localStorage.getItem("_u"));l&&l.roles&&(r=l.roles.toLowerCase().split(","));for(var s=parsePermission(o.cronappSecurity),c=!1,d=!1,u=!1,p=0;p<r.length;p++){(m=r[p].trim())&&(s.visible[m]&&(c=!0),s.enabled[m]&&(d=!0),s.render[m]&&(u=!0))}for(p=0;p<r.length;p++){var m;(m=r[p].trim())&&(s.notvisible[m]&&(c=!1),s.notenabled[m]&&(d=!1),s.notrender[m]&&(u=!1))}let f=$(a),g=setInterval((()=>{t.renderFinished&&(c||f.hide(),d||f.find("*").addBack().css("pointer-events","none").attr("disabled",!0).off("click").on("click",(t=>t.preventDefault())),u||f.remove(),clearInterval(g))}))}}}]).directive("qr",["$window",function(t){return{restrict:"A",require:"^ngModel",template:'<canvas ng-hide="image"></canvas><img ng-if="image" ng-src="{{canvasImage}}"/>',link:function(n,a,o,r){void 0===n.size&&o.size&&(n.text=o.size);var l=function(){return r.$modelValue||""},s=function(t){return/^[0-9]*$/.test(t)},c=function(t){return/^[0-9A-Z $%*+\-./:]*$/.test(t)},d=function(t){for(var n=0;n<t.length;n++){if(t.charCodeAt(n)>255)return!1}return!0},u=function(t){var a=n.inputMode;return function(t,n){if("NUMBER"===t&&!s(n))throw new Error("The `NUMBER` input mode is invalid for text.");if("ALPHA_NUM"===t&&!c(n))throw new Error("The `ALPHA_NUM` input mode is invalid for text.");if("8bit"===t&&!d(n))throw new Error("The `8bit` input mode is invalid for text.");if(!d(n))throw new Error("Input mode is invalid for text.");return!0}(a=(a=(a=a||(s(t)?"NUMBER":void 0))||(c(t)?"ALPHA_NUM":void 0))||(d(t)?"8bit":""),t)?a:""},p=a.find("canvas")[0],m=!!t.CanvasRenderingContext2D;n.TYPE_NUMBER=n.typeNumber||0,n.TEXT=l(),n.CORRECTION={L:1,M:0,Q:3,H:2}[n.correctionLevel||0]||0,n.SIZE=function(){let t=$(a).outerWidth(),o=$(a).outerHeight(),r=t<o?t:o;return n.size||r}(),n.INPUT_MODE=u(n.TEXT),n.canvasImage="";var f=function(t,a,o,r,l,s){var c=a.replace(/^\s+|\s+$/g,""),d=new QRCode(o,r,s);d.addData(c),d.make();var u=t.getContext("2d"),p=d.getModuleCount(),f=l/p;t.width=t.height=l,m&&(!function(t,n,a,o){for(var r=0;r<a;r++)for(var l=0;l<a;l++){var s=Math.ceil((l+1)*o)-Math.floor(l*o),c=Math.ceil((r+1)*o)-Math.floor(r*o);t.fillStyle=n.isDark(r,l)?"#000":"#fff",t.fillRect(Math.round(l*o),Math.round(r*o),s,c)}}(u,d,p,f),n.canvasImage=t.toDataURL()||"")};n.$watch((function(){return r.$modelValue}),(function(t,a){t===a&&t===n.TEXT||(n.text=r.$modelValue,n.TEXT=l(),n.INPUT_MODE=u(n.TEXT),f(p,n.TEXT,n.TYPE_NUMBER,n.CORRECTION,n.SIZE,n.INPUT_MODE))})),f(p,n.TEXT,n.TYPE_NUMBER,n.CORRECTION,n.SIZE,n.INPUT_MODE)}}}]).directive("uiSelect",["$compile",function(t){return{restrict:"E",require:"ngModel",link:function(n,a,o,r){let l=()=>{"$apply"!==n.$$phase&&"$digest"!==n.$$phase?a.find("i").remove():setTimeout((()=>l()),200)};if(l(),null!=o.required||"true"===o.ngRequired){$(a).append('<input autocomplete="off" tabindex="-1" class="uiSelectRequired ui-select-offscreen" style="left: 50%!important; top: 100%!important;" type=text ng-model="'+o.ngModel+'" required>');var s=$(a).find("input.uiSelectRequired");t(s)(a.scope())}}}}]).filter("raw",["$translate",function(t){return function(t){return null!=t&&void 0!==t?"number"==typeof t||"boolean"==typeof t?t+"":t instanceof Date?"datetimeoffset'"+t.toISOString()+"'":t.length>=10&&t.match(ISO_PATTERN)?"datetimeoffset'"+t+"'":"'"+t.replaceAll("'","''")+"'":""}}]).filter("js",["$translate",function(t){return function(t){return null!=t&&void 0!==t?"number"==typeof t||"boolean"==typeof t?t+"":t instanceof Date?cronapi.toDate(t.toISOString()):t.length>=10&&t.match(ISO_PATTERN)?cronapi.toDate(t):"'"+t+"'":"undefined"}}]).filter("mask",["$translate",function(t){return function(n,a,o){if(!(a=parseMaskType(a,t)))return n;var r;if(void 0!==o?(r="date"==o||"datetime"==o||"time"==o,window.fixedTimeZone||(r=!1)):r=window.fixedTimeZone,a.indexOf(";local")>0&&(r=!1),a=a.replace(";1","").replace(";0","").replace(";local","").trim(),"string"==typeof n&&n.match(isoDate)||n instanceof Date)return r?moment(n).utcOffset(window.timeZoneOffset).format(a):moment(n).format(a);if("number"==typeof n)return format(a,n);if(null!=n&&null!=n&&""!=n&&""!=a){var l=$('<input type="text">');return l.mask(a),l.masked(n)}return n}}]).directive("screenParams",[function(){"use strict";return{link:function(scope,elem,attrs,ctrl){var screenParams=eval(attrs.screenParams);screenParams&&screenParams.length&&screenParams.forEach((function(t){scope.params&&!scope.params[t.key]&&(scope.params[t.key]=t.value||"")}))}}}]).directive("screenVariables",[function(){"use strict";return{link:async function(scope,elem,attrs,ctrl){let screenVariables=eval(attrs.screenVariables);screenVariables&&screenVariables.length&&screenVariables.forEach((async t=>{if(scope.vars&&!scope.vars[t.key]){let n=t.value||"";"blockly"===t.type?n=await scope.$eval(n.replace(".run(",".toPromise().run(")):"expression"===t.type&&(n=n.startsWith("params")?scope.params[n.replace("params.","")]:n.startsWith("vars")?scope.vars[n.replace("vars.","")]:await scope.$eval(n)),scope.vars[t.key]=n}}))}}}]).directive("mask",maskDirectiveMask).directive("cronappFilter",["$compile",function($compile){return{restrict:"A",require:"?ngModel",setFilterInButton:function(t,n,a){var o=t.closest("fieldset");if(o){var r=o.find("button[cronapp-filter]");if(r){var l=r.data("filters");l||(l=[]);var s=-1,c=t.attr("ng-model");if($(l).each((function(t){this.ngModel==c&&(s=t)})),s>-1&&l.splice(s,1),n.length>0){var d={ngModel:c,bindedFilter:n};l.push(d)}r.data("filters",l)}}},makeAutoPostSearch:function(t,n,a,o){var r=t.closest("fieldset");if(r&&r.length>0){var l=r.find("button[cronapp-filter]");if(l&&l.length>0){var s=l.data("filters");s&&s.length>0&&(n="",$(s).each((function(){n+=this.bindedFilter+";"})))}}a.search(n,"true"==o.cronappFilterCaseinsensitive)},inputBehavior:function(scope,element,attrs,ngModelCtrl,$element,typeElement,operator,autopost){var filterTemplate="",filtersSplited=attrs.cronappFilter.split(";"),datasource;if(attrs.crnDatasource)datasource=eval(attrs.crnDatasource);else{var fieldset=$element.closest("fieldset");if(!fieldset)return;var button=fieldset.find("button[cronapp-filter]");if(!button)return;if(!button.attr("crn-datasource"))return;datasource=eval(button.attr("crn-datasource"))}var isOData=datasource.isOData();$(filtersSplited).each((function(){this.length>0&&(""!=filterTemplate&&(filterTemplate+=isOData?" or ":";"),isOData?"="==operator&&"text"==typeElement?filterTemplate+="substringof({value.lower}, tolower("+this+"))":"="==operator?filterTemplate+=this+" eq {value}":"!="==operator?filterTemplate+=this+" ne {value}":">"==operator?filterTemplate+=this+" gt {value}":">="==operator?filterTemplate+=this+" ge {value}":"<"==operator?filterTemplate+=this+" lt {value}":"<="==operator&&(filterTemplate+=this+" le {value}"):filterTemplate+="text"==typeElement?this+"@"+operator+"%{value}%":this+operator+"{value}")})),0==filterTemplate.length&&(filterTemplate=isOData?"{value}":"%{value}%");var selfDirective=this;ngModelCtrl?scope.$watch(attrs.ngModel,(function(t,n){if(!angular.equals(t,n)){var a=$element.data("type")||$element.attr("type"),o=ngModelCtrl.$modelValue;isOData?o instanceof Date?o="datetime-local"==a?"datetimeoffset'"+o.toISOString()+"'":"datetime'"+o.toISOString().substring(0,23)+"'":"number"==typeof o?o+="M":"boolean"==typeof o||(o="'"+o+"'"):o instanceof Date?(o=o.toISOString(),o+="date"==a?"@@date":"time"==a||"time-local"==a?"@@time":"@@datetime"):"number"==typeof o?o+="@@number":"boolean"==typeof o&&(o+="@@boolean");var r=filterTemplate.split("{value}").join(o);if("string"==typeof o)if(r.startsWith("substringof({")){var l=o.split("'").join("").toLowerCase().trim().split(" "),s="";l.forEach((function(t,n){s+=r.split("{value.lower}").join("'"+t+"'"),n<l.length-1&&(s+=" or ")})),r=s}else r=r.split("{value.lower}").join(o.toLowerCase());else r=r.split("{value.lower}").join(o);0==ngModelCtrl.$viewValue.length&&(r=""),selfDirective.setFilterInButton($element,r,operator),autopost&&selfDirective.makeAutoPostSearch($element,r,datasource,attrs)}})):"text"==typeElement?$element.on("keyup",(function(){var datasource=eval(attrs.crnDatasource),value=void 0;value=ngModelCtrl&&null!=ngModelCtrl?ngModelCtrl.$viewValue:this.value;var bindedFilter=filterTemplate.split("{value}").join(value);0==this.value.length&&(bindedFilter=""),selfDirective.setFilterInButton($element,bindedFilter,operator),autopost&&selfDirective.makeAutoPostSearch($element,bindedFilter,datasource,attrs)})):$element.on("change",(function(){var datasource=eval(attrs.crnDatasource),value=void 0,typeElement=$(this).attr("type");if(null!=attrs.asDate&&(typeElement="date"),ngModelCtrl&&null!=ngModelCtrl)value=ngModelCtrl.$viewValue;else if("checkbox"==typeElement)value=$(this).is(":checked");else if("date"==typeElement){if(value=this.value,this.value.length>0){var momentDate=moment(this.value,patternFormat(this));value=momentDate.toDate().toISOString()}}else value=this.value;var bindedFilter=filterTemplate.split("{value}").join(value);0==value.toString().length&&(bindedFilter=""),selfDirective.setFilterInButton($element,bindedFilter,operator),autopost&&selfDirective.makeAutoPostSearch($element,bindedFilter,datasource,attrs)}))},forceDisableDatasource:function(datasourceName,scope){var disableDatasource=setInterval((function(){try{var datasourceInstance=eval(datasourceName);datasourceInstance&&($(document).ready((function(){var t=0,n=setInterval((function(){t<10?(scope.$apply((function(){datasourceInstance.enabled=!1,datasourceInstance.data=[]})),t++):clearInterval(n)}),20)})),clearInterval(disableDatasource))}catch(t){}}),10)},buttonBehavior:function(scope,element,attrs,ngModelCtrl,$element,typeElement,operator,autopost){var datasourceName="";datasourceName=attrs.crnDatasource?attrs.crnDatasource:$element.parent().attr("crn-datasource");var datasource=eval(datasourceName),isOData=datasource.isOData(),requiredFilter=attrs.requiredFilter&&"true"==attrs.requiredFilter.toString();requiredFilter&&this.forceDisableDatasource(datasourceName,scope),$element.on("click",(function(){var $this=$(this),filters=$this.data("filters");if(datasourceName&&datasourceName.length>0&&filters){var bindedFilter="";$(filters).each((function(){""!=bindedFilter&&(bindedFilter+=isOData?" and ":";"),bindedFilter+=this.bindedFilter}));var datasourceToFilter=eval(datasourceName);requiredFilter?(datasourceToFilter.enabled=bindedFilter.length>0,datasourceToFilter.enabled?datasourceToFilter.search(bindedFilter,"true"==attrs.cronappFilterCaseinsensitive):scope.$apply((function(){datasourceToFilter.data=[]}))):datasourceToFilter.search(bindedFilter,"true"==attrs.cronappFilterCaseinsensitive)}}))},link:function(t,n,a,o){var r=$(n),l=r.data("type")||r.attr("type");null!=a.asDate&&(l="date");var s="=";a.cronappFilterOperator&&a.cronappFilterOperator.length>0&&(s=a.cronappFilterOperator);var c=!0;a.cronappFilterAutopost&&"false"==a.cronappFilterAutopost&&(c=!1),setTimeout(function(){"INPUT"==r[0].tagName?this.inputBehavior(t,n,a,o,r,l,s,c):this.buttonBehavior(t,n,a,o,r,l,s,c)}.bind(this),100)}}}]).directive("cronRichEditor",["$compile",function(t){return{restrict:"E",replace:!0,require:"ngModel",parseToTinyMCEOptions:function(t){var n={allowFullScreen:"fullscreen |",allowPage:"fullpage newdocument code pagebreak |",allowPrint:"preview print |",allowTransferArea:"cut copy paste |",allowDoUndo:"undo redo |",allowSymbol:"charmap |",allowEmbeddedImage:"bdesk_photo |",allowFont:"formatselect fontselect fontsizeselect strikethrough bold italic underline removeformat |",allowLinks:"link unlink anchor |",allowParagraph:"alignleft aligncenter alignright alignjustify numlist bullist outdent indent blockquote hr |",allowFormulas:"tiny_mce_wiris_formulaEditor tiny_mce_wiris_formulaEditorChemistry tiny_mce_wiris_CAS |"},a={menubar:!1,statusbar:!1,plugins:"bdesk_photo advlist anchor autolink autoresize autosave charmap code colorpicker contextmenu directionality emoticons fullpage fullscreen hr image imagetools importcss insertdatetime legacyoutput link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace tabfocus table template toc visualblocks visualchars wordcount tiny_mce_wiris colorpicker textcolor",toolbar:"",content_style:""};for(var o in t)o.startsWith("allow")&&t[o]&&(a.toolbar+=" "+n[o]);return a.toolbar+=" forecolor backcolor ",a.menubar=t.showMenuBar,a.statusbar=t.showStatusBar,a.content_style=t.contentStyle,a.readonly=t.allowReadonly,JSON.stringify(a)},link:function(n,a,o,r){var l=JSON.parse(o.options),s=this.parseToTinyMCEOptions(l),c=' <textarea ui-tinymce="$options$" ng-model="$ngModel$" id="$id$" aria-label="cronRichEditor" ng-cron-click="$ngClick$" ng-cron-dblclick="$ngDblclick$" ng-cron-mousedown="$ngMouseDown$" ng-cron-mouseup="$ngMouseUp$" ng-cron-mousemove="$ngMouseMove$" ng-cron-mouseover="$ngMouseOver$" ng-cron-mouseenter="$ngMouseEnter$" ng-cron-mouseleave="$ngMouseLeave$" ng-cron-keydown="$ngKeydown$" ng-cron-keyup="$ngKeyup$" ng-cron-keypress="$ngKeypress$" ng-context-menu="$ngContextMenu$" ng-cron-paste="$ngPaste$" ng-cron-init="$ngInit$" ng-cron-focus="$ngFocus$" ng-cron-blur="$ngBlur$" ng-before-set-content="$ngBeforeSetContent$" ng-set-content="$ngSetContent$" ng-get-content="$ngGetContent$" ng-pre-process="$ngPreProcess$" ng-post-process"$ngPostProcess$" ng-node-change="$ngNodeChange$" ng-cron-undo="$ngUndo$" ng-cron-redo="$ngRedo$" ng-cron-change="$ngChange$" ng-cron-dirty="$ngDirty$" ng-cron-remove="$ngRemove$" ng-exec-command="$ngExecCommand$" ng-paste-pre-process="$ngPastePreProcess$" ng-paste-post-process="$ngPastePostProcess$" ng-add-editor="$ngAddEditor$" ng-remove-editor="$ngRemoveEditor$"> </textarea> ';c=$(c.split("$ngModel$").join(o.ngModel).split("$ngClick$").join(o.ngCronClick||"").split("$ngDblclick$").join(o.ngCronDblclick||"").split("$ngMouseDown$").join(o.ngCronMouseDown||"").split("$ngMouseUp$").join(o.ngCronMouseUp||"").split("$ngMouseMove$").join(o.ngCronMousemove||"").split("$ngMouseOver$").join(o.ngCronMouseOver||"").split("$ngMouseEnter$").join(o.ngCronMouseenter||"").split("$ngMouseLeave$").join(o.ngCronMouseleave||"").split("$ngKeydown$").join(o.ngCronKeydown||"").split("$ngKeyup$").join(o.ngCronKeyup||"").split("$ngKeypress$").join(o.ngCronKeypress||"").split("$ngContextMenu$").join(o.ngContextMenu||"").split("$ngPaste$").join(o.ngCronPaste||"").split("$ngInit$").join(o.ngCronInit||"").split("$ngFocus$").join(o.ngCronFocus||"").split("$ngBlur$").join(o.ngCronBlur||"").split("$ngBeforeSetContent$").join(o.ngBeforeSetContent||"").split("$ngSetContent$").join(o.ngSetContent||"").split("$ngGetContent$").join(o.ngGetContent||"").split("$ngPreProcess$").join(o.ngPreProcess||"").split("$ngPostProcess$").join(o.ngPostProcess||"").split("$ngNodeChange$").join(o.ngNodeChange||"").split("$ngUndo$").join(o.ngCronUndo||"").split("$ngRedo$").join(o.ngCronRedo||"").split("$ngChange$").join(o.ngCronChange||"").split("$ngDirty$").join(o.ngCronDirty||"").split("$ngRemove$").join(o.ngRemove||"").split("$ngExecCommand$").join(o.ngExecCommand||"").split("$ngPastePreProcess$").join(o.ngPastePreProcess||"").split("$ngPastePostProcess$").join(o.ngPastePostProcess||"").split("$ngAddEditor$").join(o.ngAddEditor||"").split("$ngRemoveEditor$").join(o.ngRemoveEditor||"").split("$id$").join(o.id||app.common.generateId()).split("$options$").join(escape(s)));var d=angular.element(c);a.html(""),a.append(d),a.attr("id",null),t(d)(n);let u=$(`cron-rich-editor[ng-model="${o.ngModel}"]`),p=setInterval((()=>{u.find(".mce-container").length&&(u.find("button").each(((t,n)=>{let a=$(n),o=a.parent().attr("aria-label")||"";a.attr("aria-label",o)})),clearInterval(p))}),100)}}}]).directive("cronDashboardViewer",cronReportViewer).directive("cronReportViewer",cronReportViewer).directive("cronTimeline",["$compile","$parse",function($compile,$parse){"use strict";var defaultAdvancedTemplate='<ul class="timeline">\r\n <timeline-event side="" class="ng-scope" ng-repeat="rowData in datasource">\r\n <li class="timeline-event {{rowData[options.fields.field4] == \'2\' ? \'timeline-inverted\' : \'\'}}">\r\n <timeline-badge class="{{$odd ? \'info\' : \'warning\'}} bounce-in">\r\n <div class="timeline-badge">\r\n <i class="glyphicon {{rowData[options.fields.field3] ? rowData[options.fields.field3] : \'glyphicon-check\'}}"></i>\r\n </div>\r\n </timeline-badge>\r\n <timeline-panel class="info bounce-in">\r\n <div class="timeline-panel">\r\n <timeline-heading class="ng-scope">\r\n <div class="timeline-heading">\r\n <h4 class="ng-binding ng-scope">{{rowData[options.fields.field0]}}</h4>\r\n <p class="ng-scope">\r\n <small class="text-muted ng-binding"><i class="glyphicon glyphicon-time"></i>{{rowData[options.fields.field1]|mask:options.fields.mask2:options.fields.type1}}</small>\r\n </p>\r\n </div>\r\n </timeline-heading>\r\n <p ng-if="rowData[options.fields.field2]" class="ng-binding ng-scope">{{rowData[options.fields.field2]}}</p>\r\n </div>\r\n </timeline-panel>\r\n </li>\r\n </timeline-event>\r\n</ul>',getExpression=function(t){return"rowData in ".concat(t).concat(".data")};return{restrict:"E",require:"?ngModel",scope:!0,priority:9999998,terminal:!0,link:function(scope,element,attrs,ngModelCtrl){scope.hasValue=t=>null!=t;var optionsList={},dataSourceName="";try{optionsList=JSON.parse(attrs.options),dataSourceName=optionsList.dataSourceScreen.name;var dataSource=eval(optionsList.dataSourceScreen.name);scope.options=optionsList,attrs.ngModel&&(scope.changeRowDataField=function(t){t=dataSource.getKeyValues(t);var n=Object.keys(t);return 1===n.length&&(t=t[n]),t}),scope.options=optionsList,scope.options.fields={},scope.options.randomModel=Math.floor(9e3*Math.random())+1e3;for(var visibleColumns=[],i=0;i<optionsList.columns.length;i++){var column=optionsList.columns[i];column.visible&&visibleColumns.push(optionsList.columns[i])}for(var i=0;i<visibleColumns.length;i++){var column=visibleColumns[i];column.field&&"Database"==column.dataType&&(scope.options.fields["security"+i]=column.security,scope.options.fields["field"+i]=column.field,scope.options.fields["type"+i]=column.type,scope.options.fields["mask"+i]=column.format)}}catch(t){console.log("CronTimeline invalid configuration! "+t)}scope.options.fields.image&&"do-not-show"!=scope.options.imageType&&(scope.options.imageClassPosition="item-"+scope.options.imageType+"-"+scope.options.imagePosition),scope.options.advancedTemplate||(scope.options.advancedTemplate=defaultAdvancedTemplate);var templateDyn=scope.options.advancedTemplate;for(let t=0;t<visibleColumns.length;t++){let n=visibleColumns[t];if(n.field&&"Database"===n.dataType&&scope.options.fields[`security${t}`]){let n=`ng-if="rowData[options.fields.field${t}]"`,a=`${n} cronapp-security="${scope.options.fields["security"+t]}"`;templateDyn=templateDyn.replace(n,a)}}templateDyn=$(templateDyn),scope.options.xattrTextPosition=attrs.xattrTextPosition,$(element).replaceWith(templateDyn);var $element=templateDyn,eventItem=$element.find("timeline-event");"rowData in datasource"===$(eventItem).attr("ng-repeat")&&eventItem.attr("ng-repeat",getExpression(dataSourceName)),$compile(templateDyn,null,9999998)(scope)}}}]).directive("cronScheduler",["$compile","$translate",function($compile,$translate){return{estrict:"E",replace:!0,initCulture:function(){var t=$translate.use(),n=(t=t.replace(/_/gm,"-")).split("-");n[n.length-1]=n[n.length-1].toUpperCase(),t=n.join("-"),kendo.culture(t)},getSchedulerModel:function(t){let n={id:"id",fields:{}};for(let a in t)n.fields[a]={from:t[a].name,validation:{required:!t[a].nullable}};return n},mergeSchedulerEventWithDatasourceActive:(t,n)=>Object.assign(t.active,n),setDatasourceActiveItem:function(t,n,a){if(n){for(let o in t.data){let r=t.data[o][a];if(null!==r&&r===n[a])return t.active=t.copy(t.data[o],{}),t.active}return t.startEditing({}),t.active}},getSchedulerProperties:async function(t,n,a){let o="Expression"===t.initialDateStrategy?await a.$eval(generateBlocklyCall(t.initialDateBlocklyInfo,!0)):t.initialDate,r={start:null,end:null},l=(t,n)=>new Promise((a=>{let o=setInterval((()=>{let r=$(`[data-id="${t}"]`);if(r.length){clearInterval(o);let t="click";$(".km-pane-wrapper").length&&(t="touchstart"),r.off(t),r.on(t,(t=>{n(t),t.stopImmediatePropagation()})),a()}}),100)})),s=[];if(t.views)for(let n in t.views){let a=t.views[n];a.visible&&s.push(a)}else t.showDayTab&&s.push("day"),t.showAgendaTab&&s.push("agenda"),t.showMonthTab&&s.push("month"),t.showTimelineTab&&s.push("timeline"),t.showWeekTab&&s.push("week"),t.showWorkWeekTab&&s.push("workWeek");let c={dateHeaderTemplate:kendo.template(`#=kendo.toString(date, ${kendo.culture().name.toLowerCase().includes("pt")?"'ddd dd/M'":"'ddd M/dd'"})#`),showWorkHours:t.showWorkHours,selectable:!0,date:o,mobile:!1,allDaySlot:t.allDaySlot,messages:{editor:{timezone:$translate.instant("TimezoneEvent")}},currentTimeMarker:t.currentTimeMarker?{updateInterval:1e4,useLocalTimezone:!1}:t.currentTimeMarker,views:s,navigate:function(t){t.sender.view()},dataBound:function(n){n.sender.view();(n=>{let a=n.sender.view(),o=n.sender.element.find(".k-scheduler-header.k-state-default.changed").length;"month"===a.name&&!o&&t.useCustomDaysOfWeek&&(n.sender.element.find(".k-scheduler-header.k-state-default").html(`<div class="k-scheduler-header k-state-default">\n <div class="k-scheduler-header-wrap">\n <table class="k-scheduler-table">\n <tbody>\n <tr>\n <th colspan="1" class="">${t.daysOfWeek.sunday}</th>\n <th colspan="1" class="">${t.daysOfWeek.monday}</th>\n <th colspan="1" class="">${t.daysOfWeek.tuesday}</th>\n <th colspan="1" class="">${t.daysOfWeek.wednesday}</th>\n <th colspan="1" class="">${t.daysOfWeek.thursday}</th>\n <th colspan="1" class="">${t.daysOfWeek.friday}</th>\n <th colspan="1" class="">${t.daysOfWeek.saturday}</th>\n </tr>\n </tbody>\n </table>\n </div>\n </div>`),n.sender.element.find(".k-scheduler-header.k-state-default").addClass("changed"))})(n),(n=>{if(!n.sender.element.find(".k-more-events.k-button.hooked").length){let o=n.sender.view(),r=t.views.find((t=>t.type===o.name)),s=app.common.generateId();n.sender.element.find(".k-more-events.k-button").attr("data-id",s);let c=generateBlocklyCall(r.moreEventsBlockly);c&&l(s,(n=>{let o=$(n.currentTarget).prev().data("uid"),r={scheduleData:{type:"seeAll",selectedDate:t.refComponent.dataItems().find((t=>t.uid==o)).start}};a.$eval(c,r)})),n.sender.element.find(".k-more-events.k-button").addClass("hooked")}})(n)},eventTemplate:n=>{let o={scheduleData:n},r=t=>n.description?(t?" - ":"")+n.description:"",s=app.common.generateId(),c=t.refComponent.view().name,d=t.views.find((t=>t.type===c)),u=[];u.push(`<div class='k-event-template' data-id='${s}'>`),"agenda"!==c?u.push(`<div class='k-event-title'>${n.title}${d.showDescription?r(!0):""} </div>`):(u.push(`<div class='k-event-title'>${n.title}</div>`),!d.showDescription||u.push(`<div class='k-event-description'>${r(!1)}</div>`)),u.push("</div>");let p=generateBlocklyCall(d.blockly);return p&&l(s,(()=>{a.$eval(p,o)})),u.join("")},change:t=>{t&&t.events&&t.events.length?this.setDatasourceActiveItem(n,t.events[0],"id"):n.startInserting({}),console.log("Active: ",n.active)},edit:function(n){if(t&&t.allowCustomAction){let o=n.container,r=t.customActionLabel?t.customActionLabel:$translate.instant("Details"),l=$('<a class="k-button">'+r+"</a>");l.click((function(n){a.safeApply((()=>{a.$eval(generateBlocklyCall(t.customActionBlockly))}))})),o.find(".k-edit-buttons").append(l)}},dataSource:{batch:!1,transport:{isComponentInDocument:function(t){return!!t&&$(document).has(t.element[0]).length},getCurrentCallbackForPush:function(t,n){return t||n},pushAction:function(a,o){return r=>{if(this.isComponentInDocument(t.refComponent)){let n=this.getCurrentCallbackForPush(o,t.refComponent)[a];n?n(r):(t.fromRead="read"===a,t.refComponent.dataSource.read())}else["read","memorydelete","overRideRefresh"].includes(a)||n.removeDataSourceEvents(this.options.dataSourceEventsPush)}},push:function(t){!this.dataSourceEventsPush&&n&&(this.dataSourceEventsPush={create:this.pushAction.bind(this)("pushUpdate",t),update:this.pushAction.bind(this)("pushUpdate",t),delete:this.pushAction.bind(this)("pushDestroy",t),read:this.pushAction.bind(this)("read",t),memorycreate:this.pushAction.bind(this)("pushUpdate",t),memoryupdate:this.pushAction.bind(this)("pushUpdate",t),memorydelete:this.pushAction.bind(this)("pushDestroy",t)},n.addDataSourceEvents(this.dataSourceEventsPush))},read:function(a){a.data=a.data||{};let l=!1;try{t.kendoCallback?t.fromRead?t.isReading?a.error():(t.isReading=!0,t.kendoCallback.success(n.data)):l=!0:(t.kendoCallback=a,l=!0)}finally{t.fromRead=!1,t.isReading=!1}if(l)if(s=a.data,angular.equals(r,s))a.error();else{r=a.data,jQuery.isEmptyObject(a.data)&&(a.data[t.schedulerDataModel.start.name]=o);let l=kendo.data.transports.odata.parameterMap(a.data,"read"),s={};s.params=l,n.fetch(s,{success:function(t){a.success(angular.copy(t))},canceled:function(t){a.error(angular.copy(t))}},!1)}var s}.bind(this),update:a=>{let o=this.parseToDatasourceSchema(n,a.data,t);n.startEditing(n.active),this.mergeSchedulerEventWithDatasourceActive(n,o),n.update(n.active,(t=>{let o=angular.copy(t);a.success(o),n.fetch({},{success:t=>{this.setDatasourceActiveItem(n,o,"id")},canceled:t=>{}},!1)}),(t=>{a.error(angular.copy(t))}))},create:a=>{let o=this.parseToDatasourceSchema(n,a.data,t);this.mergeSchedulerEventWithDatasourceActive(n,o),n.insert(n.active,(t=>{let o=angular.copy(t);a.success(o),n.fetch({},{success:t=>{this.setDatasourceActiveItem(n,o,"id")},canceled:function(t){}},!1)}),(t=>{a.error(angular.copy(t))}))},destroy:function(a){n.removeSilent(this.parseToDatasourceSchema(n,a.data,t),(function(t){a.success(angular.copy(t))}),(function(t){a.error(angular.copy(t))}))}.bind(this)},schema:{model:this.getSchedulerModel(t.schedulerDataModel)}}};return t.views||(c.editable=t.editable),window.fixedTimeZone&&window.timeZone&&(c.timezone=window.timeZone),c},showError:function(t,n,a){let o={message:a,title:n,delay:null};t.Notification.error(o)},parseToDatasourceSchema:function(t,n,a){let o={};for(let a in t.schema){let r=t.schema[a].name;o[r]=n[r]}return o[a.schedulerDataModel.isAllDay.name]=!0===o[a.schedulerDataModel.isAllDay.name],o[a.schedulerDataModel.id.name]||delete o[a.schedulerDataModel.id.name],o},link:function(scope,element,attrs,ngModelCtrl){let schedulerElement=$("<div></div>"),options=JSON.parse(attrs.options||"{}"),datasource;if(options.dataSourceScreen&&options.dataSourceScreen.entityDataSource&&(datasource=eval(options.dataSourceScreen.entityDataSource.name)),!datasource){let t={};return void $translate("DatasourceNotFoundMessage").then((n=>(t.message=n,$translate("Scheduler")))).then((n=>(t.component=n,$translate("DatasourceNotFoundTitle")))).then((n=>{t.title=n,this.showError(scope,t.title,t.message.replace("{0}",t.component))}))}if(jQuery.isEmptyObject(options.schedulerDataModel))return;let baseUrl="node_modules/cronapp-lib-js/dist/js/kendo-ui/js/messages/kendo.messages.";"pt_br"===$translate.use()?baseUrl+="pt-BR.min.js":baseUrl+="en-US.min.js",this.initCulture(),$.getScript(baseUrl,async function(){app.kendoHelper.getDataSource(options.dataSourceScreen.entityDataSource,scope,!0,options.dataSourceScreen.rowsPerPage);let t=await this.getSchedulerProperties(options,datasource,scope);schedulerElement.kendoScheduler(t);let n=schedulerElement.data("kendoScheduler");options.refComponent=n,n.bind("navigate",(function(t){n._previousView=t.sender.view()})),n.bind("dataBound",(function(t){if(n._currentView=t.sender.view(),n._previousView){if(!function(t,n){if(!t||!n)return;let a;return t.forEach(((t,o)=>n.forEach((n=>{a=t.getTime()===n.getTime()})))),a}(n._previousView._dates,n._currentView._dates)){let t={};t[options.schedulerDataModel.start.name]=n._currentView._startDate,t[options.schedulerDataModel.end.name]=n._currentView._endDate,n.dataSource.read(t),n._previousView=n._currentView}}}))}.bind(this)),element.html(schedulerElement),$compile(schedulerElement)(element.scope())}}}]).directive("cronGrid",["$compile","$translate",function($compile,$translate){return{restrict:"E",replace:!0,require:"ngModel",initCulture:function(){var t=$translate.use(),n=(t=t.replace(/_/gm,"-")).split("-");n[n.length-1]=n[n.length-1].toUpperCase(),t=n.join("-"),kendo.culture(t)},changeObjectField:function(t,n){n=t.getKeyValues(n);var a=Object.keys(n);return 1===a.length&&(n=n[a]),n},removeSpecialChar:function(t){return t.replace(/[^a-zA-Z0-9]/g,"").toLowerCase()},getModelName:function(t){return t?this.removeSpecialChar(t.ngModel):"subgrid"},generateToolbarButtonCall:function(toolbarButton,scope,options,attrs){var buttonCall,generateObjTemplate=function(t,n,a){return{template:function(){return createTemplateButton(t,n,a)}.bind(this)}}.bind(this),createTemplateButton=function(functionToCall,title,iconClass){var template="";let security=toolbarButton.security?`cronapp-security="${toolbarButton.security}"`:"",modelName=this.getModelName(attrs),buttonType=this.removeSpecialChar(toolbarButton.type),buttonDesc=toolbarButton.title?this.removeSpecialChar(toolbarButton.title):this.removeSpecialChar(toolbarButton.iconClass),buttonId=`${modelName}-${buttonType}-${buttonDesc}`;"SaveOrCancelChanges"==toolbarButton.type?template=toolbarButton.saveButton?'<a #SECURITY# role="button" class="saveorcancelchanges k-button k-button-icontext k-grid-save-changes" data-id="#BUTTONID#" href="javascript:void(0)"><span class="k-icon k-i-check"></span>#TITLE#</a>':'<a #SECURITY# role="button" class="saveorcancelchanges k-button k-button-icontext k-grid-cancel-changes" data-id="#BUTTONID#" href="javascript:void(0)"><span class="k-icon k-i-cancel" ></span>#TITLE#</a>':"Blockly"==toolbarButton.type||"Customized"==toolbarButton.type?template='<a #SECURITY# class="k-button k-grid-custom" data-id="#BUTTONID#" href="javascript:void(0)"><span class="#ICONCLASS#" ></span>#TITLE#</a>':"Native"==toolbarButton.type&&"create"==toolbarButton.title?template='<a #SECURITY# role="button" data-id="#BUTTONID#" class="k-button k-button-icontext k-grid-add" href="javascript:void(0)"><span class="k-icon k-i-plus"></span>{{"Add" | translate}}</a>':"Native"==toolbarButton.type&&"excel"==toolbarButton.title?template='<a #SECURITY# role="button" data-id="#BUTTONID#" class="k-button k-button-icontext k-grid-excel" href="javascript:void(0)"><span class="k-icon k-i-file-excel"></span>{{"exportExcel" | translate}}</a>':"Native"==toolbarButton.type&&"pdf"==toolbarButton.title&&(template='<a #SECURITY# role="button" data-id="#BUTTONID#" class="k-button k-button-icontext k-grid-pdf" href="javascript:void(0)"><span class="k-icon k-i-file-pdf"></span>{{"exportPDF" | translate}}</a>'),template=template.split("#BUTTONID#").join(buttonId).split("#FUNCTIONCALL#").join(this.encodeHTML(functionToCall)).split("#TITLE#").join(title).split("#ICONCLASS#").join(iconClass).split("#SECURITY#").join(security);var cronappDatasource=eval(options.dataSourceScreen.entityDataSource.name),waitRender=setInterval(function(){$(`[data-id=${buttonId}]`).length>0&&(scope.safeApply((function(){var t=angular.element($(`[data-id=${buttonId}]`));$compile(t)(scope),$(`[data-id=${buttonId}]`).attr("id",buttonId)})),$(`[data-id=${buttonId}]`).click(function(){var t=options.refComponent,n=[];t.select().each((function(){var a=t.dataItem(this);cronappDatasource.data.forEach((function(t){t.__$id==a.__$id&&n.push(t)}))}));var a={item:n.length?cronappDatasource.active:null,index:n.length?cronappDatasource.cursor:null};let o=[];options.fieldType&&"key"===options.fieldType?n.forEach((t=>{o.push(this.changeObjectField(cronappDatasource,cronappDatasource.findObjInDs(t)))})):o=n;var r={currentData:cronappDatasource.data,datasource:cronappDatasource.copyWithoutAngularObj(),selectedIndex:n.length?cronappDatasource.cursor:null,index:n.length?cronappDatasource.cursor:null,selectedRow:n.length?cronappDatasource.active:null,consolidated:a,item:n.length?cronappDatasource.active:null,selectedKeys:n.length?cronappDatasource.getKeyValues(cronappDatasource.findObjInDs(n[0]),!0):null,selectedRows:o};scope.$eval(functionToCall,r)}.bind(this)),clearInterval(waitRender))}.bind(this),200);return template}.bind(this),call="";call="Customized"==toolbarButton.type?toolbarButton.execute:toolbarButton.methodCall?toolbarButton.methodCall:generateBlocklyCall(toolbarButton.blocklyInfo);var title=null==toolbarButton.title?"":toolbarButton.title;return buttonCall=generateObjTemplate(call,title,toolbarButton.iconClass),buttonCall},generateModalSaveOrCancelButtonCall:function(t,n,a,o,r){var l=app.common.generateId();return buttonCall=function(t,n,a,o){var s;s=(s="save"==t?'<button id="#BUTTONID#" aria-label="#ARIALABELSAVE#" class="btn btn-primary btn-fab ng-binding grid-save-button-modal k-button" data-component="crn-button" ng-click="#FUNCTIONCALL#" onclick="(!#DATASOURCENAME#.missingRequiredField(true)?$(\'##MODALID#\').modal(\'hide\'):void(0))"><span class="k-icon k-i-check"></span></button>':"saveAdd"==t?'<button id="#BUTTONID#" aria-label="#ARIALABELSAVEADD#" class="btn btn-primary btn-fab ng-binding grid-save-add-button-modal k-button" data-component="crn-button" ng-click="#FUNCTIONCALL#"><span class="k-icon k-i-plus"></span></button>':'<button id="#BUTTONID#" aria-label="#ARIALABELCANCEL#" type="button" class="btn btn-default btn-fab ng-binding k-button" data-component="crn-button" data-dismiss="modal"><span class="k-icon k-i-cancel"></span></button>').split("#BUTTONID#").join(l).split("#FUNCTIONCALL#").join(n).split("#DATASOURCENAME#").join(a).split("#ARIALABELSAVE#").join($translate.instant("SaveChanges")).split("#ARIALABELSAVEADD#").join($translate.instant("SaveAddChanges")).split("#ARIALABELCANCEL#").join($translate.instant("CancelChanges")).split("#MODALID#").join(o);var c=setInterval((function(){$("#"+l).length>0&&r.safeApply((function(){var t=angular.element($("#"+l));$compile(t)(r),clearInterval(c)}))}),200);return s}(t,n,a,o),buttonCall},addButtonsInModal:function(t,n,a,o){var r=$("#"+t).find(".modal-footer");if(!r.find(".grid-save-button-modal").length){var l=n+".post();",s=this.generateModalSaveOrCancelButtonCall("save",l,n,t,a);if(r.append(s),o){let o=this.generateModalSaveOrCancelButtonCall("saveAdd",l+n+".startInserting();",n,t,a);r.append(o)}var c=this.generateModalSaveOrCancelButtonCall("cancel",null,null,null,a);r.append(c)}},getObjectId:function(t){if(t){if(t instanceof Date){var n=moment.utc(t);t=new Date(n.format("YYYY-MM-DDTHH:mm:ss"))}else if("object"==typeof t)if(t.id)t=t.id;else for(var a in t){t=t[a];break}}else t="";return t},encodeHTML:function(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},decodeHTML:function(t){return t.replace(/'/g,"'").replace(/"/g,'"').replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&")},getColumnByField:function(t,n){var a=null;return t.columns.forEach((function(t){t.field==n&&(a=t)})),a},resizeGridUsingWidthForDevice:function(t){for(let n=0;n<t.columns.length;n++){let a=this.getWidthForDevice(t.columns[n]);t.columns[n].width=a.width,a.visible?t.showColumn(n):t.hideColumn(n)}if(t.options.hasSecurity){$(t.element.find("col")).last().css("width","0px")}},getWidthForDevice:function(t){let n=$(window).width(),a=function(n){let o;return t.widthDevices.forEach((t=>{t.device===n&&(o=t)})),void 0===o&&(o="deviceSmall"===n?a("deviceMedium"):"deviceMedium"===n?a("deviceDesktop"):"deviceDesktop"===n?a("deviceBig"):t.widthDevices[0]),o},o={width:t.width};return void 0!==t.visible&&null!==t.visible?o.visible=t.visible:o.visible=!t.hidden,null!==t.widthDevices&&void 0!==t.widthDevices&&t.widthDevices.length>0&&(o=a(n>=1210?"deviceBig":n>=1002&&n<1210?"deviceDesktop":n>=778&&n<1002?"deviceMedium":"deviceSmall")),o},getColumns:function(options,datasource,scope,tooltips,attrs){var helperDirective=this;function getTemplate(column){var template="#=showTreatedValue("+column.field+")#";return"switch"==column.inputType?template='<span class="k-switch km-switch k-widget km-widget k-switch-off km-switch-off" style="width: 100%"> <span class="k-switch-wrapper km-switch-wrapper"> <span class="k-switch-background km-switch-background" style="margin-left: #='+column.field+' ? "80%": "0%" #"></span> </span> <span class="k-switch-container km-switch-container"> <span class="k-switch-handle km-switch-handle" style=#='+column.field+' ? "float:right;margin-right:-1px": "margin-left:0%" #> </span> </span> </span>':"checkbox"==column.inputType||"boolean"==column.type?template="<input crn-set-indeterminate=#="+column.field+"# type='checkbox' class='k-checkbox' #="+column.field+" ? \"checked='checked'\": '' # /><label class='k-checkbox-label k-no-text'></label>":column.displayField&&column.displayField.length>0?template=hasMask(column.type)||column.format&&"null"!=column.format?"#= useMask("+column.displayField+",'"+column.format+"','"+column.type+"') #":"#="+column.displayField+"#":hasMask(column.type)||column.format&&"null"!=column.format?template="#= useMask("+column.field+",'"+column.format+"','"+column.type+"') #":column.showAsImage&&(template=column.showAsImageTemplate?column.showAsImageTemplate:"<img src='#:${column.field}#'/>",template=eval("`"+template+"`")),template}function hasMask(t){return!(!t||"string"!=typeof t)&&(t.startsWith("date")||t.startsWith("month")||t.startsWith("time")||t.startsWith("week")||t.startsWith("money")||t.startsWith("number")||t.startsWith("tel")||t.startsWith("integer"))}function getFormat(t){if(!hasMask(t.type))return t.format}function isRequired(t){var n=!1,a=null;return datasource.schema.model.fields[t]&&(a=datasource.schema.model.fields[t]),a&&(n=!a.nullable),n}function getEditor(t){return editor.bind(this)}async function editor(t,n){let a=t=>{t!==n.model[n.field]&&(n.model[n.field]=t,n.model.dirty=!0,n.model.dirtyFields[n.field]=!0)};var o=this.getColumnByField(options,n.field),r=null==o.visibleCrud||o.visibleCrud;r||o.visible||(t.parent().find(".k-edit-label [for="+o.field+"]").parent().remove(),t.remove());var l=isRequired(n.field)?"required":"",s=app.common.generateId();let c=`${options.dataSourceScreen.name}.active.${n.field}`;var d,u=$(`<input ${l} name="${n.field}" id="${s}" from-grid=true ng-model="${c}" />`);if(u.data("change-grid-model",a),u.data("column-type",o.type),r)if("dynamicComboBox"==o.inputType||"comboBox"==o.inputType){(p=app.kendoHelper.getConfigComboboxSync(o.comboboxOptions,scope)).autoBind=!0,p.optionLabel=void 0,o.displayField&&(p.change=function(t){n.model.set(o.displayField,this.text()),n.model.dirty=!0,n.model.dirtyFields[o.displayField]=!0});let a=u.appendTo(t).kendoDropDownList(p,scope).data("kendoDropDownList");u.data("kendoDropDownList",a)}else if("slider"==o.inputType){(p=app.kendoHelper.getConfigSlider(o.sliderOptions)).change=t=>scope.$apply((()=>scope.$eval(`${c}=${t.value}`)));let n=u.appendTo(t).kendoSlider(p,scope).data("kendoSlider");u.data("kendoSlider",n)}else if("switch"==o.inputType){var p=app.kendoHelper.getConfigSwitch(o.switchOptions);u.appendTo(t).kendoMobileSwitch(p,scope)}else"checkbox"==o.inputType||"boolean"==o.type?((u=$(`<input id="${s}" name="${n.field}" ng-false-value="false" ng-true-value="true" crn-allow-null-values="${!l}" class="k-checkbox" type="checkbox" from-grid=true ng-model="${c}"><label class="k-checkbox-label" for="${s}"></label>`)).data("change-grid-model",a),u.appendTo(t)):"date"==o.inputType?(u.attr("cron-date",""),u.attr("options",JSON.stringify(o.dateOptions)),u.data("initial-date",n.model[n.field]),u.attr("type","datetime"),u.appendTo(t).off("change")):(u.attr("type",o.type),u.attr("mask",o.format?o.format:""),"999.999.999-99;0"!==o.format&&"99.999.999/9999-99;0"!==o.format||(u.attr("valid","999.999.999-99;0"===o.format?"cpf":"cnpj"),u.attr("data-"+o.field.toLocaleLowerCase()+"validation-msg",$translate.instant("invalid."+u.attr("valid")))),u.css("text-align",o.alignment),u.attr("class","k-input k-textbox"),u.data("initial-value",n.model[n.field]),u.appendTo(t));else{var m=scope.$eval(`${c}`);m&&t.text(m)}(d=s,new Promise(((t,n)=>{let a=setInterval((function(){let n=$("#"+d);if(n.length>0){let o=n.closest("td"),r=angular.element(o||n);$compile(r)(scope),clearInterval(a),t(d)}}),10)}))).then((t=>{$(`#${t}`).data("alreadycompiled",!0),$(`#${t}`).data("$compile",$compile),$(`#${t}`).data("ref-component",options.refComponent)}))}function setIdCommandButton(t,n){let a=setInterval((()=>{if($(`.k-grid-${t}`).is(":visible")){clearInterval(a);var o=options.refComponent;$(`.k-grid-${t}`).each(((t,a)=>{let r=$(a);if(!r.attr("id")){let t=o.dataItem(r.closest("tr")),a=this.getModelName(attrs),l=t._objectKey,s=`${a}-${n}-${l}`;r.attr("id",s)}}))}}),200)}function getCommandForEditButtonDatabase(t,n,a){var o;let r=app.common.generateId(),l=`<a href class='k-button k-grid-edit k-grid-${r}' aria-label='${$translate.instant("Edit")}'><span class='${a||"k-icon k-i-edit"}'></span></a>`;return o="popupCustom"==t.editable||"datasource"==t.editable?{name:r,template:l,click:function(n){n.preventDefault();var a=$(n.target).closest("tr"),o=(a.closest("table"),this.dataItem(a)),r=this.dataSource.transport.options.cronappDatasource;scope.safeApply((function(){options.hideModalButtons||helperDirective.addButtonsInModal(options.popupEdit,r.name,scope,!1);var n=r.goTo(o);r.startEditing(n,(function(t){})),"datasource"!=t.editable?cronapi.screen.showModal(options.popupEdit):cronapi.internal.focusFormInput()}))}}:{name:n,template:l,text:{edit:" ",update:" ",cancel:" "}},setIdCommandButton.bind(this)(r,n),o}function getCommandForRemoveButtonDatabase(t,n,a){var o;let r=app.common.generateId(),l=`<a href class='k-button k-grid-delete k-grid-${r}' aria-label='${$translate.instant("Remove")}'><span class='${a||"k-icon k-i-close"}'></span></a>`;return o="popupCustom"==t.editable||"datasource"==t.editable?{name:r,template:l,click:function(t){t.preventDefault();var n=$(t.target).closest("tr"),a=this.dataItem(n),o=this.dataSource.transport.options.cronappDatasource;scope.safeApply((function(){var t=o.goTo(a);o.remove(t)}))}}:{name:n,template:l},setIdCommandButton.bind(this)(r,n),o}function getAggregate(t){if(t&&t.aggregates){var n=[];if(t.aggregates.forEach((function(t){n.push(t.type)})),n.length>0)return n}}function getAggregateFooter(t,n){if(t&&t.aggregates){var a=[];return t.aggregates.forEach((function(o){var r="#=data."+t.field+" ? data."+t.field+"."+o.type+" : 0 #";"average"!=o.type&&"sum"!=o.type||(r="#=useMask(data."+t.field+" ? data."+t.field+"."+o.type+" : 0,'"+t.format+"','"+t.type+"')#");var l=n?o.groupFooterTemplate:o.footerTemplate;l?l+=": ":l="";var s=l+r;t.alignment&&(s="right"!==t.alignment||n?'<div style="text-align: '+t.alignment+'">'+s+"</div>":'<div style="text-align: '+t.alignment+'" class="k-fix-margin">'+s+"</div>"),a.push(s)})),a.join("<br/>")}}function getAggregateHeader(t){if(hasMask(t.type)||t.format&&"null"!=t.format)return t.headerText+": #=useMask(value,'"+t.format+"','"+t.type+"')#"}function getAttributes(t){let n={};return t&&(t.alignment&&(n.style="text-align: "+t.alignment+";"),t.security&&(n["cronapp-security"]=t.security)),n}function commandClick(t,n){t.preventDefault();let a,o=$(t.target).closest("tr"),r=o.closest("table"),l=this.dataItem(o),s=this.dataItem(o),c=$(r.find("tbody")[0]).children().index(o);a="Customized"==n.dataType||"CustomizedLink"==n.dataType||"GroupedButtons"==n.dataType?n.execute:generateBlocklyCall(n.blocklyInfo);let d=this.dataSource.transport.options.cronappDatasource,u=options.refComponent,p=[];if(u.select().each((function(){let t=u.dataItem(this);d.data.forEach((function(n){n.__$id==t.__$id&&p.push(n)}))})),!d.inserting&&!d.editing){let n=t.currentTarget.parentElement.parentElement;this.select(n)}let m=[];options.fieldType&&"key"===options.fieldType?(s=helperDirective.changeObjectField(d,d.findObjInDs(s)),p.forEach((t=>{m.push(helperDirective.changeObjectField(d,d.findObjInDs(t)))}))):m=p;let f={item:s,index:c},g={currentData:d.data,datasource:d.copyWithoutAngularObj(),selectedIndex:c,index:c,selectedRow:s,consolidated:f,item:s,selectedKeys:d.getKeyValues(d.findObjInDs(l),!0),selectedRows:m};d.goTo(l),scope.$eval(a,g)}var columns=[];return options.columns&&options.columns.forEach(function(t){let n=this.getWidthForDevice(t);if("Database"==t.dataType)(r={field:t.field,title:t.headerText,type:t.type,width:n.width,sortable:t.sortable,filterable:t.filterable,hidden:!n.visible}).template=getTemplate(t),r.format=getFormat(t),r.editor=getEditor.bind(this)(t),r.aggregates=getAggregate(t),r.footerTemplate=getAggregateFooter(t,!1),r.groupFooterTemplate=getAggregateFooter(t,!0),r.groupHeaderTemplate=getAggregateHeader(t),r.attributes=getAttributes(t),r.headerAttributes=r.attributes,r.widthDevices=t.widthDevices,columns.push(r);else if("Command"==t.dataType){if("no"!=options.editable){var a=t.command.split("|"),o=[];a.forEach(function(n){var a;a="edit"==n?getCommandForEditButtonDatabase.bind(this)(options,n,t.iconEditClass):getCommandForRemoveButtonDatabase.bind(this)(options,n,t.iconDeleteClass),o.push(a)}.bind(this));var r={command:o,title:t.headerText,width:n.width?n.width:155,hidden:!n.visible,attributes:getAttributes(t)};columns.push(r)}}else if("Blockly"==t.dataType||"Customized"==t.dataType||"CustomizedLink"==t.dataType){var l=null==t.label?"":t.label;t.iconClass&&l&&(l=" "+l);var s="";s="CustomizedLink"==t.dataType?"k-custom-link":"k-custom-command"+(l?" k-button-with-label":""),t.theme&&(s+=" btn "+t.theme);var c="";if(t.tooltip&&t.tooltip.length&&(c=t.tooltip),c){var d=app.common.generateId();tooltips[d]=c,s+=" "+d}let a=t.width;a&&(a+="px");let o=app.common.generateId();r={command:[{name:o,template:`<a href class='k-button ${s} k-grid-${o}' aria-label='${c||l||o}' style='width:${a}'><span class='${t.iconClass}'></span>${l}</a>`,click:function(n){commandClick.bind(this)(n,t)}}],width:n.width,title:t.headerText?t.headerText:"",hidden:!n.visible,attributes:getAttributes(t)};columns.push(r),setIdCommandButton.bind(this)(o,t.dataType)}else if("GroupedButtons"==t.dataType){if(t.buttonColumns&&t.buttonColumns.length){let a=[];t.buttonColumns.forEach((function(n){let o=null==n.label?"":n.label;n.iconClass&&o&&(o=" "+o);let r="k-custom-command"+(o?" k-button-with-label":"");n.theme&&(r+=" btn "+n.theme);let l="";if(n.tooltip&&n.tooltip.length&&(l=n.tooltip),l){let t=app.common.generateId();tooltips[t]=l,r+=" "+t}let s=n.width;s&&(s+="px");let c=app.common.generateId(),d={name:c,template:`<a href class='k-button ${r} k-grid-${c}' aria-label='${l||o||c}' style='width:${s}'><span class='${n.iconClass}'></span>${o}</a>`,click:function(a){n.dataType=t.dataType,commandClick.bind(this)(a,n)}};a.push(d)}));r={command:a,width:n.width,title:t.headerText?t.headerText:"",hidden:!n.visible,attributes:getAttributes(t)};columns.push(r),setIdCommandButton.bind(this)(app.common.generateId(),t.dataType)}}else if("Selectable"==t.dataType){var u={selectable:!0,attributes:getAttributes(t)};columns.push(u)}}.bind(this)),columns},getPageAble:function(t){var n={refresh:t.allowRefreshGrid,pageSizes:t.allowSelectionTotalPageToShow,buttonCount:5};return t.allowPaging||(n=t.allowPaging),n},getToolbar:function(t,n,a){var o=[];return t.toolBarButtons.forEach(function(r){if("Native"==r.type)if("no"!=t.editable)if("datasource"!=t.editable&&"popupCustom"!=t.editable||"create"!=r.title){let l=this.generateToolbarButtonCall(r,n,t,a);o.push(l)}else{var l=t.dataSourceScreen.name,s=t.popupInsert;r.methodCall=l+".startInserting();","popupCustom"==t.editable?r.methodCall=r.methodCall+" cronapi.screen.showModal('"+s+"');":r.methodCall+="cronapi.internal.focusFormInput();";var c=this.generateToolbarButtonCall(r,n,t,a);o.push(c),t.hideModalButtons||this.addButtonsInModal(s,l,n,t.enableModalSaveAdd)}else"pdf"!=r.title&&"excel"!=r.title||o.push(r.title);else if("Blockly"==r.type||"Customized"==r.type){var d=this.generateToolbarButtonCall(r,n,t,a);o.push(d)}else if("SaveOrCancelChanges"==r.type){if("no"!=t.editable){var u=this.generateToolbarButtonCall(r,n,t,a);o.push(u)}}else if("Template"==r.type||"Title"==r.type){let t=function(t){let n=t.security?`cronapp-security="${t.security}" class`:"class";return t.template&&(t.template=t.template.split("class").join(n)),{template:t.template}}(r);o.push(t)}}.bind(this)),0==o.length&&(o=void 0),o},getEditable:function(t){var n={mode:t.editable,confirmation:!1};return"batch"==t.editable?n=!0:"no"!=t.editable&&"popupCustom"!=t.editable&&"datasource"!=t.editable||(n=!1),n},getTooltipsDefault:function(){return{k_grid_edit:$translate.instant("Edit"),k_grid_delete:$translate.instant("Remove"),k_grid_update:$translate.instant("Save"),k_grid_cancel:$translate.instant("Cancel")}},setTooltips:function(t,n){for(var a in n){var o="."+a.replace(/_/g,"-");t.kendoTooltip({filter:o,content:function(t){var a=t.sender.options.filter.substr(1).replace(/-/g,"_");return n[a]}})}},generateKendoGridInit:function(t,n,a,o,r){var l=this;var s=function(t,n,a){t.table.find(".k-master-row").each((function(){null!=a&&this==a[0]||t.collapseRow(this)})),t.table.find(".k-detail-row").each((function(){null!=n&&this==n[0]||$(this).remove()}))},c=function(t,n,a){t.table.find(".k-master-row").each((function(){null==a&&this!=a[0]||t.collapseRow(this)})),t.table.find(".k-detail-row").each((function(){null==n&&this!=n[0]||$(this).remove()}))},d=function(t){var a=this.dataSource.transport.options.cronappDatasource;a.inserting||a.editing||n.safeApply(a.goTo(t))},u=function(a){if(a.sender.tbody&&a.sender.tbody.length){var o=a.sender.tbody;$(a.sender.tbody).find(".k-grid-edit-row").length?o=$(a.sender.tbody).find("tr:not(.k-grid-edit-row)"):o.parent()&&o.parent().parent()&&o.parent().parent().parent()&&(o=o.parent().parent().parent()),n.safeApply((function(){var a=$(o),r=angular.element(a);$compile(r)(n),t.refComponent&&l.resizeGridUsingWidthForDevice(t.refComponent)}))}},p=function(n){var a,o=0;return t.columns.forEach((function(t){"Database"==t.dataType&&(o==n&&t.visible&&(a=t),t.visible&&o++)})),a},m=app.kendoHelper.getDataSource(t.dataSourceScreen.entityDataSource,n,t.allowPaging,t.pageCount,t.columns,t.groupings),f=this.getColumns(t,m,n,r,o),g=this.getPageAble(t),h=this.getToolbar(t,n,o),v=this.getEditable(t),b=(function(t){var n=!1;if(t.columns)for(var a=0;a<t.columns.length;a++)if("Database"==t.columns[a].dataType&&t.columns[a].filterable){n=!0;break}}(t),{hasSecurity:t.columns.filter((t=>t.security)).length,toolbar:h,pdf:{allPages:!0,avoidLinks:!0,paperSize:"A4",margin:{top:"2cm",left:"1cm",right:"1cm",bottom:"1cm"},landscape:!0,repeatHeaders:!0,scale:.8},dataSource:m,editable:v,height:t.height,groupable:t.allowGrouping,sortable:t.allowSorting,filterable:!0,pageable:g,columns:f,selectable:t.allowSelectionRow,detailInit:t.details&&t.details.length>0?function(a){if(a.masterRow.find("a").hasClass("k-i-expand"))c(this,a.detailRow,a.masterRow);else{var o=this.dataSource.transport.options.cronappDatasource;o.inserting||o.editing?s(this,null,null):(this.selectable?(d.bind(this)(a.data),this.select(a.masterRow),void 0!==t.columns.find((t=>"Selectable"==t.dataType))&&s(this,a.detailRow,a.masterRow)):(d.bind(this)(a.data),s(this,a.detailRow,a.masterRow)),a.sender.options.listCurrentOptions.forEach((function(t){var o=l.generateKendoGridInit(t,n,void 0,void 0,r),s=$("<div/>"),c=s.appendTo(a.detailCell).kendoGrid(o).data("kendoGrid");app.kendoHelper.receivePushData(c),t.refComponent=c,window.addEventListener("resize",(()=>{l.resizeGridUsingWidthForDevice(c)})),l.setTooltips(s,r)})))}}:void 0,listCurrentOptions:t.details&&t.details.length>0?t.details:void 0,excelExport:function(t){let a=t.workbook.sheets[0],o=new RegExp("{{(.*?)}}");for(let t=1;t<a.rows.length;t++){let r=a.rows[t];for(let t=0;t<r.cells.length;t++){let a=p(t);if(a&&r.cells[t].value instanceof Date){let n=new Date(r.cells[t].value.getTime());n.setMinutes(n.getMinutes()+n.getTimezoneOffset()),n.setSeconds(n.getSeconds()),r.cells[t].value=n,"time"==a.type?r.cells[t].format="[$-x-systime]hh:mm:ss":"datetime"==a.type&&(r.cells[t].format="dd/mm/yyyy hh:mm:ss;@")}if(("footer"===r.type||"group-footer"===r.type)&&r.cells[t].value){let a=r.cells[t].value,l=$(a)[0].innerHTML,s=o.exec(l);if(s&&s.length>1){l=l.replace(s[0],"");let a=n.$eval(s[1]);r.cells[t].value=`${l}${a}`}}}}},edit:function(t){this.dataSource.transport.options.disableAndSelect(t);var a=t.container,r=this.dataSource.transport.options.cronappDatasource;if(t.model.isNew()){var l=t.model;r.startInserting(null,(function(t){for(var n in t)if(l.fields[n]){if(l.fields[n].validation&&l.fields[n].validation.required){var o=a.find("input[name='"+n+"']");o.length&&o.val(t[n]).trigger("change")}l.set(n,t[n])}}))}else t.model.isNew()||t.model.dirty||n.safeApply((function(){var n=r.goTo(t.model);r.startEditing(n,(function(t){}))}));o&&o.ngEdit&&n.$eval(o.ngEdit),u(t)},change:function(r){var c=this.dataItem(this.select());(t.details&&0==t.details.length||!cronapi.internal.hasMethodInCallStack("detailInit"))&&d.bind(this)(c);var p=this.dataSource.transport.options.cronappDatasource;t.fieldType&&"key"===t.fieldType&&(p.active=l.changeObjectField(p,p.active));let m=this.select().next(),f=this.select();if(a)if("multiple"===t.allowSelectionRowType){let n=[];m=[],f=[],this.select().each(((a,o)=>{let r=this.dataItem(o),s=p.findObjInDs(r,!1);t.fieldType&&"key"===t.fieldType&&(s=l.changeObjectField(p,s)),null!==s&&n.push(s),r._objectKey===p.active._objectKey&&(f.push(this.select()[a]),m.push(this.select().next()[a]))})),a.$setViewValue(n)}else c?a.$setViewValue(p.active):a.$setViewValue(null);s(this,m,f),o&&o.ngChange&&n.$eval(o.ngChange),u(r),$(".k-command-cell a[class*='k-grid-']").each(((t,n)=>{let a=$(n);if(!a.attr("id")){let t=this.dataItem(a.closest("tr")),n="destroy";a.hasClass("k-grid-update")?n="update":a.hasClass("k-grid-cancel")?n="cancel":a.hasClass("k-grid-edit")&&(n="edit");let r=l.getModelName(o);if(t&&t._objectKey){let o=`${r}-${n}-${t._objectKey}`;a.attr("id",o)}}}))},cancel:function(t){var a=this.dataSource.transport.options.cronappDatasource;n.safeApply(a.cancel()),this.dataSource.transport.options.enableAndSelect(t),setTimeout(function(){o&&o.ngCancel&&n.$eval(o.ngCancel),u(t)}.bind(this))},dataBound:function(a){setTimeout((()=>this.dataSource.transport.options.selectActiveInGrid()),100),o&&o.ngDataBound&&n.$eval(o.ngDataBound);for(let n=0;n<this.columns.length;n++){l.getColumnByField(t,this.columns[n].field).visible&&this.showColumn(n)}0==$("div.k-grouping-header").length?t.groupings&&t.groupings.forEach((t=>this.hideColumn(t.field))):$("div.k-group-indicator").each(((t,n)=>{this.hideColumn($(n).data("field"))}));let r=this;setTimeout((function(){r.pager&&r.pager.element.find("a").not(".k-state-disabled").attr("tabindex","0")})),u(a)}});return b.selectable&&"multiple"==t.allowSelectionRowType&&(b.selectable="multiple"),b.originalSelectable=b.selectable,o&&o.ngBeforeEdit&&(b.beforeEdit=function(t){n.$eval(o.ngBeforeEdit)}),o&&o.ngDataBinding&&(b.dataBinding=function(t){n.$eval(o.ngDataBinding)}),o&&o.ngSave&&(b.save=function(t){n.$eval(o.ngSave)}),o&&o.ngSaveChanges&&(b.saveChanges=function(t){n.$eval(o.ngSaveChanges)}),o&&o.ngRemove&&(b.remove=function(t){n.$eval(o.ngRemove)}),b},link:function(t,n,a,o){if(n.children().length)return;var r=$("<div></div>"),l="node_modules/cronapp-lib-js/dist/js/kendo-ui/js/messages/kendo.messages.";"pt_br"==$translate.use()?l+="pt-BR.min.js":l+="en-US.min.js",this.initCulture();var s=this;$.getScript(l,(function(){var n=JSON.parse(a.options||"{}");app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t).batchPost=!1,(null==n.batchMode||n.batchMode)&&"datasource"!=n.editable&&app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t)&&!app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t).dependentLazyPost&&(app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t).batchPost=!0,n.toolBarButtons=n.toolBarButtons||[],n.toolBarButtons.push({type:"SaveOrCancelChanges",title:$translate.instant("SaveChanges"),methodCall:n.dataSourceScreen.entityDataSource.name+".postBatchData()",saveButton:!0}),n.toolBarButtons.push({type:"SaveOrCancelChanges",title:$translate.instant("CancelChanges"),methodCall:n.dataSourceScreen.entityDataSource.name+".cancelBatchData()",saveButton:!1}));var l=s.getTooltipsDefault(),c=s.generateKendoGridInit(n,t,o,a,l);c.scrollable="true"===a.scrollable;var d=r.kendoGrid(c).data("kendoGrid");app.kendoHelper.receivePushData(d),n.refComponent=d,window.addEventListener("resize",(()=>{s.resizeGridUsingWidthForDevice(d)})),s.setTooltips(r,l),t.safeApply((function(){app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t)&&(r.find(".k-filter-row").show(),r.find(".k-pager-sizes").show(),r.find(".k-pager-nav").show(),r.find(".k-pager-numbers").show(),r.find(".k-pager-refresh.k-link").show(),r.find(".saveorcancelchanges").hide(),app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t).addDataSourceEvents({pendingchanges:function(t){t?(r.find(".k-filter-row").hide(),r.find(".k-pager-sizes").hide(),r.find(".k-pager-nav").hide(),r.find(".k-pager-numbers").hide(),r.find(".k-pager-refresh.k-link").hide(),r.find(".saveorcancelchanges").show()):(r.find(".k-filter-row").show(),r.find(".k-pager-sizes").show(),r.find(".k-pager-nav").show(),r.find(".k-pager-numbers").show(),r.find(".k-pager-refresh.k-link").show(),r.find(".saveorcancelchanges").hide())}}),app.kendoHelper.getCorrectlyDS(n.dataSourceScreen.entityDataSource.name,t).addDataSourceEvents({afterchanges:function(t){}}))})),d.selectable.userEvents.unbind("select")}));let c=app.common.generateId(),d=app.common.generateId(),u=app.common.generateId(),p=$(`<ul id="${c}">\n <li id="copyText">\n <input id="${d}">\n <span id="${u}" class="k-icon k-i-close" style="margin-left: 5px;"></span>\n </li>\n </ul>`);n.html(r),n.append(p),$compile(r)(n.scope());let m=$(`#${c}`).kendoContextMenu({target:r,filter:"td",close:t=>{closeContextMenu||t.preventDefault()},open:t=>{let n=t.target,a=($(n).parent()[0],r.data("kendoGrid"),t.item.id,n.innerText);if(a.length&&""!==a)$(t.item).find(`#${d}`).val(a),closeContextMenu=!1;else{(()=>new Promise(((t,n)=>{let a=setInterval((()=>{$(`#${c}`).is(":visible")&&(clearInterval(a),$(`#${c}`).hide())}))})))()}}}).data("kendoContextMenu");$(`#${u}`).on("click",(t=>{closeContextMenu=!0,m.close()}))}}}]).directive("src",["$compile",function(t){return{restrict:"A",link:function(t,n,a,o){"IMG"===n[0].tagName&&cronapi.internal.isBase64(a.src)&&setTimeout((()=>$(n[0]).attr("src","data:image/png;base64,"+a.src)))}}}]).directive("crnSkin",["$compile","$http",function(t,n){return{restrict:"A",link:function(t,a,o,r){o.crnSkin&&n.get(o.crnSkin,{cache:!0}).then((t=>{if(t.data){let n=t.data;n.startsWith(":root{")&&(n=n.substring(6)),n.endsWith("}")&&(n=n.substring(0,n.length-2)),$element=$(a);let o=$element.find('[data-role="grid"]');o.length&&($element=o);let r=$element.attr("style")||"";r&&(r+=", "),r+=n,$element.attr("style",r)}}))}}}]).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((t=>!0===t.key))[0].name,schema={model:{id:id,hasChildren:function(t){return t.hasChildren}}},getAllParent=function(t,n,a,o,r){n[schema.model.id]&&a.push(n[schema.model.id]);let l=`${t.entity}?$filter=${schema.model.id} eq '${n[options.selfRelationshipField]}'&$format=json&$inlinecount=allpages`;n[options.selfRelationshipField]?$.ajax({url:l,success:n=>{getAllParent(t,n.d.results[0],a,o,r)},beforeSend:t=>{window.isUsingCookie()||t.setRequestHeader("X-AUTH-TOKEN",cronapi.util.getUserToken());const n=localStorage.getItem("csrfToken");n&&t.setRequestHeader("X-CSRF-TOKEN",n)},complete:t=>{const n=t.getResponseHeader("X-CSRF-TOKEN");n&&localStorage.setItem("csrfToken",n)},error:()=>r(),type:"GET"}):o(a)},reloadAndExpand=function(t){this.options.kendoObj.dataSource.bind("requestEnd",(()=>{new Promise(((n,a)=>{getAllParent(this.options.cronappDatasource,t,[],n,a)})).then((t=>{this.options.kendoObj.expandPath(t.reverse())}))})),this.options.kendoObj.dataSource.read()},helperDirective=this,waitingPromise=!1,datasource=new kendo.data.HierarchicalDataSource({transport:{push:async function(t){let n=await this.options.cronappDatasource();!helperDirective.dataSourceEventsPush&&n&&(helperDirective.dataSourceEventsPush={create:function(t){reloadAndExpand.bind(this)(t)}.bind(this),update:function(t){reloadAndExpand.bind(this)(t)}.bind(this),delete:function(t){reloadAndExpand.bind(this)(t),ngModelCtrl.$setViewValue(null)}.bind(this),overRideRefresh:function(t){this.options.fromRefresh=!0,this.options.kendoObj.dataSource.read(),ngModelCtrl.$setViewValue(null)}.bind(this),read:function(t){waitingPromise||(this.options.kendoObj.dataSource.read(),ngModelCtrl.$setViewValue(null))}.bind(this)},n.addDataSourceEvents(helperDirective.dataSourceEventsPush))},read:async function(e){let cronappDatasource=await this.options.cronappDatasource(),conditionIsEmpty=t=>{let n=!0;if(t){let a=JSON.parse(t);a.expression&&a.expression.args&&a.expression.args.forEach((t=>{""!==t.right&&"''"!==t.right&&void 0!==t.right&&(n=!1)}))}return n};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=eval(count)>0,resolve()},beforeSend:t=>{window.isUsingCookie()||t.setRequestHeader("X-AUTH-TOKEN",cronapi.util.getUserToken());const n=localStorage.getItem("csrfToken");n&&t.setRequestHeader("X-CSRF-TOKEN",n)},complete:t=>{const n=t.getResponseHeader("X-CSRF-TOKEN");n&&localStorage.setItem("csrfToken",n)},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,o){let r=JSON.parse(a.options),l=$('<div class="k-widget k-treeview k-treeview-lines"></div>');new kendo.data.HierarchicalDataSource({transport:{read:async n=>(await app.kendoHelper.getCorrectlyDSPromise(r.dataSourceScreen.name,t)).fetch({},n)},schema:{model:{id:r.keys,hasChildren:t=>t.hasChildren}}}),l.kendoTreeView({dataSource:this.getDataSource(r,t,o),dataTextField:r.textField,change:async function(){let n=this.dataItem(this.select()),a=await this.dataSource.transport.options.cronappDatasource();t.safeApply((()=>{a.goTo(n),"key"===r.fieldType&&o.$setViewValue(a.active=n)}))}}).data("kendoTreeView");n.html(l),$compile(l)(t),setTimeout((()=>{let a=n.closest(".component-holder");if(!a.length)return;const o=()=>{let t=(a.attr("class")||"").match(/col-(lg|md|sm|xs)-\d+/g)?.find((t=>t.includes("col-md-")))||"col-md-12";a.attr("class",a.attr("class").replace(/col-(lg|md|sm|xs)-\d+/g,"").trim()+` ${t}`)};o();const r=new MutationObserver(o);r.observe(a[0],{attributes:!0,attributeFilter:["class"]}),t.$on("$destroy",(()=>{r&&r.disconnect()}))}),1e3)}}}]).directive("cronSelect",["$compile",function(t){return{restrict:"E",replace:!0,require:"ngModel",link:async function(t,n,a,o){var r={};try{r=JSON.parse(a.options)}catch(t){console.log("ComboBox invalid configuration! "+t)}var l=a.id?' id="'+a.id+'"':"",s=a.name?' name="'+a.name+'"':"",c=n.parent();$(c).append('<input style="width: 100%;" '+l+s+' class="cronSelect"/>');var d,u=$(c).find("input.cronSelect"),p=await app.kendoHelper.getConfigCombobox(r,t);if(p.close=a.ngClose?function(){t.$eval(a.ngClose)}:void 0,p.dataBound=a.ngDataBound?function(){t.$eval(a.ngDataBound)}:void 0,p.filtering=a.ngFiltering?function(){t.$eval(a.ngFiltering)}:void 0,p.select=a.ngSelect?function(n){t.safeApply((()=>{var o={selected:n.dataItem,selectedKey:n.dataItem[p.dataValueField],selectedValue:n.dataItem[p.dataTextField]};t.$eval(a.ngSelect,o)}))}:void 0,p.change=a.ngChange?function(n){var o=this.dataItem();t.safeApply((()=>{a.ngModel&&g.$$parse(a.ngModel).assign(t,this.value(),a.ngModel.split("."));var n={selected:o,selectedKey:o[p.dataValueField],selectedValue:o[p.dataTextField]};t.$eval(a.ngChange,n)}))}:function(n){t.safeApply((()=>{a.ngModel&&g.$$parse(a.ngModel).assign(t,this.value(),a.ngModel.split("."))}))},p.messages={noData:a.noResultsMessage?a.noResultsMessage:"NO DATA FOUND"},!0===r.dontAllowOutsideList){d=u.kendoDropDownList(p).data("kendoDropDownList");let t=c.find("span").first();t.on("focus",(()=>cronapi.internal.selectContent(t.find(".k-input")[0])))}else d=u.kendoComboBox(p).data("kendoComboBox");let m;$(n).remove();let f=()=>{if(m=$(c).find(".k-input.cronSelect"),m.length){m.attr("ng-required",a.ngRequired),"true"===a.ngRequired&&m.attr("required","required"),m.attr("ng-model",a.ngModel),m.attr("id",a.id),m.attr("validationmessage",a.validationmessage);let t=m.parent();m.on("change",(()=>{"true"===a.ngRequired&&(0==m.val().length?(t.addClass("ng-invalid-required"),m.addClass("ng-invalid-required")):(t.removeClass("ng-invalid-required"),m.removeClass("ng-invalid-required")))}))}else setTimeout((()=>f()))};f(),t.$watch(a.cronDisabled,(function(t){d.enable(!t)}));var g=o;o&&(o.$formatters.push((function(t){var n="";return("boolean"==typeof t||t)&&(n=t),d.value(n),n})),o.$parsers.push((function(t){return m&&m.trigger("change"),"boolean"==typeof t||t?t:null})))}}}]).directive("cronDynamicSelect",["$compile","$timeout","$parse","$translate","$log",function($compile,$timeout,$parse,$translate,$log){return{restrict:"E",replace:!0,require:"?ngModel",goTo:function(t,n,a){if(dataSourceScreen=$(n).data("dataSourceScreen"),null!=dataSourceScreen)return dataSourceScreen.goTo(a,!0)},compileAngular:function(t,n){var a=$(n),o=angular.element(a);$compile(o)(t)},getActive:function(active){if(active&&active.indexOf(".active."))try{return eval(active.substr(0,active.indexOf(".active.")))}catch(t){}return null},getFieldText:function(t,n){if(t&&t.indexOf(".active.")&&n.dataTextField)try{return t.substr(t.indexOf(".active.")+8)+"_"+n.dataTextField}catch(t){}return null},isDefaultEntity:function(t){if(t&&t.entity){var n=t.entity.split("/");if(n&&n.length>0)return-1==n.pop().indexOf("query")}return!1},getModelParent:function(t){if("string"==typeof t&&t.length>9&&t.indexOf("|raw}}")>0){var n=(t=t.trim()).substr(t.indexOf("{{")+2);return(n=n.substr(0,n.indexOf("|raw}}"))).trim()}return null},toComboType:function(t,n,a,o){let r=n.find("span").first();if(r.on("focus",(()=>cronapi.internal.selectContent(r.find("span.ng-scope")[0]))),"autoComplete"===a.type){let n=["Tab","Shift","CapsLock","Control","Alt","Escape","PageDown","PageUp","Backspace","ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Delete","Insert","Enter"," "],l=["Tab","Shift","CapsLock","Control","Alt","Escape","PageDown","PageUp","ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Insert"];r.attr("contenteditable","true");let s=$(`input[aria-owns=${t.id}_listbox]`),c=s.parent(),d=$(`#${t.id}-list`);c.hide(),r.on("keyup",(t=>{document.activeElement!==r[0]||l.includes(t.originalEvent.key)||s.val(r.find("span.ng-scope").text()),r.hasClass("k-state-border-down")||n.includes(t.originalEvent.key)||r.trigger("click")})),r.on("focusout",(()=>{d.is(":visible")||u()})),r.on("click",(()=>p()));let u=()=>{r.find("span.ng-scope").text(o.dataItem()[a.dataTextField]),o.search()},p=()=>{let t=setInterval((()=>{d.is(":visible")||(clearInterval(t),document.activeElement!==r[0]&&u())}))}}else r.on("keydown",(t=>{if("ArrowDown"===t.originalEvent.key||"ArrowUp"===t.originalEvent.key)return t.stopImmediatePropagation(),void r.trigger("click")}))},link:async function(scope,element,attrs,ngModelCtrl){await cronapi.internal.skipIterationLoop();var modelGetter=$parse(attrs.ngModel),modelSetter=(t,n)=>{$log.debug("modelSetter | "+attrs.id+" | "+n),modelGetter.assign(t,n)},select={},self=this,parentDS={},textField=null;try{select=JSON.parse(attrs.options),parentDS=this.getActive(attrs.ngModel),textField=this.getFieldText(attrs.ngModel,select)}catch(t){console.log("DynamicComboBox invalid configuration! "+t)}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;let lastValueMapper;if(options.virtual={},options.virtual.itemHeight=26,options.dataSource.pageSize&&options.dataSource.pageSize>0){options.height=options.dataSource.pageSize*options.virtual.itemHeight/4,options.virtual.mapValueTo="dataItem";var _options=options;let t=()=>new Promise((t=>{let n;_options.combobox?t():n=setInterval((()=>{_options.combobox&&(clearInterval(n),t())}))}));options.virtual.valueMapper=async function(n){await t(),$log.debug(`valueMapper | ${attrs.id} | ${n.value}`),lastValueMapper&&!1===lastValueMapper.completed&&(lastValueMapper.canceled=!0),lastValueMapper=n;const{optionLabel:a,dataValueField:o}=_options.combobox.options,r=_options.dataSource.transport.options.cronappDatasource;if(n.canceled||!n.value||a[o]&&""===n.value)return n.success(null);_options.combobox.isEvaluating=!0,r.findObj([n.value],!1,(t=>{n.canceled||(n.success(Array.isArray(t)?t[0]:t),$log.debug(`valueMapper.success | ${attrs.id} | ${t}`))}),(()=>n.success(null)),[o]),n.completed=_options.combobox.isEvaluating=!1}}options.messages={noData:attrs.noResultsMessage?attrs.noResultsMessage:"NO DATA FOUND"},options.change=attrs.ngChange?function(t){var n=this.dataItem();scope.safeApply((()=>{var t={selected:n,selectedKey:n?n[options.dataValueField]:"",selectedValue:n?n[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 n={[combobox.options.dataValueField]:"",[combobox.options.dataTextField]:""};combobox.dataSource.data().some((t=>""===t[combobox.options.dataValueField]))||combobox.dataSource.add(n),forceEmptyLineSelected()},options.select=attrs.ngSelect?function(t){scope.safeApply((()=>{var n={selected:t.dataItem,selectedKey:t.dataItem[options.dataValueField],selectedValue:t.dataItem[options.dataTextField]};scope.$eval(attrs.ngSelect,n)}))}: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(t){inputSelect.prop("required",t)})),$(parent).append(inputSelect);var $element=$(parent).find("input.cronDynamicSelect");dataSourceScreen&&(dataSourceScreen.__ignoreFirstFetch=!0);var combobox=$element.kendoDropDownList(options).data("kendoDropDownList");function forceEmptyLineSelected(){var t=combobox.list.find(".k-list-optionlabel");t&&t.length&&t.addClass("k-state-selected k-state-focused"),$log.debug("Linha vazia marcada como ativa:",t)}combobox.isEvaluating=!1;var scrolling=!1;let forcedRefreshModelAt;combobox.bind("open",(function(){scrolling||(scrolling=!0,setTimeout((()=>{scrolling=!1}),300),forceEmptyLineSelected())})),combobox.bind("change",(function(){if(!combobox.isEvaluating){combobox.isEvaluating=!0;try{let t=combobox.dataItem();t&&""===t[options.dataValueField]?(modelSetter(scope,""),modelTextFieldSetter(scope,"")):(modelSetter(scope,t[options.dataValueField]),modelTextFieldSetter(scope,t[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 canRefresh=()=>{let t=performance.now();return!forcedRefreshModelAt||t-forcedRefreshModelAt>2e3};var forceChangeModel=async function(t){$log.debug("forceChangeModel | "+attrs.id+" | "+t),void 0===t&&(t=null);let n=combobox.value();n=null!=n?n.trim():n,(null!=t?(""+t).trim():t)!==n&&await combobox.value(t),select.changeCursor&&scope.safeApply((()=>{null==t||null==t?(dataSourceScreen.active={},dataSourceScreen.cursor=-1,modelSetter(_scope,null)):_goTo(_scope,combobox,combobox.dataItem())}))};let returnTypedValue=t=>{if(dataSourceScreen.schema){let n=dataSourceScreen.schema.find((t=>t.name===options.dataValueField));n&&"String"!==n.type&&(t=parseFloat(t)||t)}return t};var defineInitialValue=function(){if(!combobox.definingInitialValue&&!combobox.isEvaluating){var t=combobox.value();t&&""!==t||(modelSetter(scope,""),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(t){let n=function(){combobox.isEvaluating?setTimeout(n,100):_scope.$apply((function(){let t=combobox.dataItem();t&&""!==t[select.dataValueField]?(modelSetter(_scope,t[select.dataValueField]),modelTextFieldSetter(_scope,t[select.dataTextField])):(combobox.value(""),modelSetter(_scope,""),modelTextFieldSetter(_scope,"")),_compileAngular(scope,options.combobox.element[0]),options?.combobox?.span&&_compileAngular(scope,options.combobox.span)}))};n()})),ngModelCtrl&&(ngModelCtrl.$formatters.push((function(t){return $log.debug("$formatters | "+attrs.id+" | "+t),(void 0===t||""===t&&void 0===select.optionLabelValue)&&modelSetter(scope,t=""),forceChangeModel(t),t})),ngModelCtrl.$parsers.push((function(t){return t&&""!==t?t:""})),ngModelCtrl.$parsers.push((function(t){if($log.debug("$parsers | "+attrs.id+" | "+t),"boolean"==typeof t||t)if(!0===combobox.options.valuePrimitive){if("string"==typeof t)return t;if("boolean"==typeof t[select.dataValueField]||t[select.dataValueField])return t[select.dataValueField]}else try{return objectClone(t,combobox.dataSource.options.schema.model.fields)}catch(t){}return null}))),select.initValue)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);else select.initValue=null;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(t){combobox.enable(!t)})),$(`[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((t=>{let n=setInterval((()=>{clearInterval(n),t()}))}));var _self=this,select={};try{select=JSON.parse(attrs.options)}catch(t){console.log("MultiSelect invalid configuration! "+t)}var _scope=scope,_ngModelCtrl=ngModelCtrl;if(null!=select.relationDataSource)try{eval(select.relationDataSource.name)}catch(t){await jumpThread()}var relactionDS={relationDataSource:null!=select.relationDataSource?eval(select.relationDataSource.name):null,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"),evtSelect,deselect;$(element).remove(),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((t=>"object"==typeof t?t[dataValueField]!==dataItem[dataValueField]:t!==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(t){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&&combobox.list.length>0&&(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(t){combobox.enable(!t)})),app.kendoHelper.receivePushData(combobox),$(`[aria-describedby='${attrs.id}_taglist']`).attr("id",`${attrs.id}-container`),attrs.crnReadonly&&_scope.$watch(attrs.crnReadonly,((t,n)=>{combobox.readonly(_scope.$eval(attrs.crnReadonly))}));var convertArray=function(t){var n=[];if(t)for(var a in t)n.push(t[a][relactionDS.relationField]);return n};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(t){return{restrict:"E",require:"ngModel",link:async function(t,n,a,o){var r={};try{r=JSON.parse(a.options)}catch(t){console.log("AutoComplete invalid configuration! "+t)}try{delete l.dataSource.schema.model.id}catch(t){}var l=await app.kendoHelper.getConfigCombobox(r,t);l.change=a.ngChange?function(){t.$eval(a.ngChange)}:void 0,l.close=a.ngClose?function(){t.$eval(a.ngClose)}:void 0,l.dataBound=a.ngDataBound?function(){t.$eval(a.ngDataBound)}:void 0,l.filtering=a.ngFiltering?function(){t.$eval(a.ngFiltering)}:void 0,l.select=a.ngSelect?function(){t.$eval(a.ngSelect)}:void 0;var s=n.parent(),c=a.id?' id="'+a.id+'"':"",d=a.name?' name="'+a.name+'"':"",u=a.validationmessage?' validationmessage="'+a.validationmessage+'"':"",p="";(a.ngRequired||a.required)&&(p=" required "),$(s).append('<input style="width: 100%;" '+c+d+p+u+' class="cronAutoComplete" ng-model="'+a.ngModel+'"/>');var m=$(s).find("input.cronAutoComplete");$(n).remove(),l.change=function(n){t.$apply((function(){o.$setViewValue(m.val())}))},"true"==a.autoExpand&&m.on("focus",(function(t){f.search()})),l.messages={noData:a.noResultsMessage?a.noResultsMessage:"NO DATA FOUND"},"false"==a.firstOptionOnBlur&&(l.suggest=!1);var f=m.kendoAutoComplete(l).data("kendoAutoComplete");t.$watch(a.cronDisabled,(function(t){f.enable(!t)})),o&&(o.$formatters.push((function(t){return f.value(t),t})),o.$parsers.push((function(t){if(t){if("string"==typeof t)return t;if(t[r.dataTextField])return t[r.dataTextField]}return null})))}}}]).directive("cronDate",["$compile","$translate","$window",function(t,n,a){return{restrict:"AE",require:"?ngModel",link:function(a,o,r,l){var s={},c={};try{if(r.options)c=JSON.parse(r.options);else{var d=window.buildElementOptions(o);c=JSON.parse(d)}c.format||(c.format=parseMaskType(c.type,n)),s=app.kendoHelper.getConfigDate(n,c)}catch(t){console.log("AutoComplete invalid configuration! "+t)}var u="date"==s.type||"datetime"==s.type||"time"==s.type;window.fixedTimeZone||(u=!1);var p=$(o);if(!p.data("alreadycompiled")){if(p.data("alreadycompiled",!0),p.data("$compile",t),r.fromGrid)p=$(o);else{var m=o.parent(),f=$('<input style="width: 100%;" class="cronDate" ng-model="'+r.ngModel+'"/>');$(m).append(f),(p=$(m).find("input.cronDate")).data("type",s.type),p.attr("type","date")}var g=app.kendoHelper.buildKendoMomentPicker(p,s,a,l);r.fromGrid||(l&&(l.$formatters.push((function(t){var n=null;if(t){n=(u?moment(t).utcOffset(window.timeZoneOffset):moment(t)).format(s.momentFormat)}return g.value(n),n})),l.$parsers.push((function(t){if(t){return(u?moment(g._oldText,s.momentFormat).utcOffset(window.timeZoneOffset):moment(g._oldText,s.momentFormat)).toDate()}return null}))),$(o).remove())}}}}]).directive("cronSlider",["$compile",function(t){return{restrict:"E",require:"ngModel",getActive:function(t,n){if(t&&t.indexOf(".active."))try{return n.$eval(t.substr(0,t.indexOf(".active.")))}catch(t){}},link:function(n,a,o,r){var l={};try{l=JSON.parse(o.options)}catch(t){console.log("Slider invalid configuration! "+t)}var s=app.kendoHelper.getConfigSlider(l),c=this.getActive(o.ngModel,n);s.change=function(){n.$apply((function(){var t=$(a).val();c&&(t=c.normalizeValue(t,!0)),r.$setViewValue(t),o.ngChange&&n.$eval(o.ngChange)}))},s.slide=o.ngSlide?function(){n.$eval(o.ngSlide)}:void 0,(l=$(a).kendoSlider(s).data("kendoSlider"))._drag.element[0].title=s.dragHandleTitle,l._drag.element[1].title=s.dragHandleTitle;if(new ResizeObserver((t=>{l.resize()})).observe(l.wrapper[0]),"true"===o.ngRequired||o.required){var d=o.id?' id="input'+app.common.generateId()+'"':"",u=o.name?' name="input'+app.common.generateId()+'"':"",p=a.parent();$(p).append('<input aria-label="slider" autocomplete="off" tabindex="-1" style="width: 100%;"'+d+u+' required class="cronSlider cron-select-offscreen" ng-model="'+o.ngModel+'"/>');var m=$(p).find("input.cronSlider");t(m)(a.scope())}n.$watch((function(){return r.$modelValue}),(function(t,n){t!==n&&(t?l.value(t):l.value(l.min()))})),r&&(r.$formatters.push((function(t){var n=null;return!t&&l.min?n=l.min:t&&(n=t),l.value(n),n})),r.$parsers.push((function(t){return t||null})))}}}]).directive("cronSwitch",["$compile",function(t){return{restrict:"E",require:"ngModel",link:function(t,n,a,o){var r={};try{var l=window.buildElementOptions(n);r=JSON.parse(l)}catch(t){console.log("Switch invalid configuration! "+t)}var s=app.kendoHelper.getConfigSwitch(r),c=n.parent();$(c).append('<input style="width: 100%;" class="cronSwitch" ng-model="'+a.ngModel+'"/>');var d=$(c).find("input.cronSwitch");s.change=function(n){t.$apply(function(){o.$setViewValue(this.value())}.bind(this))};var u=d.kendoMobileSwitch(s).data("kendoMobileSwitch");$(n).remove(),o&&(o.$formatters.push((function(t){var n=!1;return null!=t&&(n=t),u.value(n),n})),o.$parsers.push((function(t){return null!=t&&t})))}}}]).directive("cronBarcode",["$compile",function(t){return{restrict:"E",require:"ngModel",link:function(t,n,a,o){var r={};try{var l=window.buildElementOptions(n);r=JSON.parse(l)}catch(t){console.log("Barcode invalid configuration! "+t)}var s=app.kendoHelper.getConfigBarcode(r),c=n.parent();$(c).append('<span class="cronBarcode" ng-model="'+a.ngModel+'"></span>');var d=$(c).find("span.cronBarcode").kendoBarcode(s).data("kendoBarcode");$(n).remove(),t.$watch((function(){return o.$modelValue}),(function(t,n){var a="";t!==n&&(a=t),s.value=a,d.setOptions(s)}))}}}]).directive("cronQrcode",["$compile",function(t){return{restrict:"E",require:"ngModel",link:function(t,n,a,o){var r={};try{var l=window.buildElementOptions(n);r=JSON.parse(l)}catch(t){console.log("Qrcode invalid configuration! "+t)}var s=app.kendoHelper.getConfigQrcode(r),c=n.parent();$(c).append('<span class="cronQrcode" ng-model="'+a.ngModel+'"></span>');var d=$(c).find("span.cronQrcode").kendoQRCode().data("kendoQRCode");$(n).remove(),t.$watch((function(){return o.$modelValue}),(function(t,n){var a="";t!==n&&(a=t),s.value=a,d.setOptions(s)}))}}}]).directive("cronappRating",(function(){"use strict";return{restrict:"E",require:"ngModel",link:function(t,n,a,o){a.theme=$(n).find("i").attr("icon-theme"),a.classElem=$(n).find("i").attr("class"),a.iconSize=$(n).find("i").attr("icon-size"),a.iconOn=$(n).find("i").attr("class");var r=$(n),l=[];a.xattrDefaultValue&&(o.$viewValue=0,o.$commitViewValue());for(var s=1;s<=5;s++)l.push($(n).find("i").get(s-1)),$(l[s-1]).addClass(a.iconOff||"fa fa-star-o");r.html("");var c=[];for(s=1;s<=5;s++){var d=$(l[s-1]).clone();r.append(d),d.attr("idx",s),d.click((function(){t.$apply(function(){let t=parseInt($(this).attr("idx"));o.$viewValue=o.$viewValue!==t?t:0,o.$commitViewValue()}.bind(this))})),c.push(d)}function u(t){for(var n=1;n<=5;n++)c[n-1].removeClass(a.iconOff||"fa fa-star-o"),c[n-1].removeClass(a.classElem),c[n-1].removeClass(a.iconTheme),n<=t?c[n-1].addClass(a.classElem):(c[n-1].addClass(a.iconOff||"fa fa-star-o"),c[n-1].addClass(a.theme),c[n-1].addClass(a.iconSize));return t}o.$parsers.push(u),o.$formatters.push(u)}}})).directive("cronDynamicMenu",["$compile","$translate",function(t,n){"use strict";const a=t=>{var o="";return t&&t.length>0&&Array.isArray(t)&&(t.forEach((function(t){var r=t.security&&null!=t.security?` cronapp-security="${t.security}" `:"",l=t.action&&null!=t.action?` ng-click="cronapi.internal.lastCronappMenuClick('${t.id}');${t.action}" `:"",s=t.hide&&null!=t.hide?` ng-hide="${t.hide}" `:"",c=t.iconClass&&null!=t.iconClass?`<i class="${t.iconClass}" id="menu-tag-i-${t.id}"></i> `:"",d=`<span id="menu-tag-span-${t.id}"></span>`,u=t.menuItems&&Array.isArray(t.menuItems)&&t.menuItems.length>0?`<span class="caret submenu" id="menu-tag-span-sub-${t.id}"></span>`:"";t.title&&(d=`<span id="menu-tag-span-${t.id}">${n.instant(t.title)}</span>`),t.menuItems.length>0?o+=`\n <li class="dropdown-submenu" ${r}${s} id="menu-tag-li-sub-${t.id}"> <a href="" ${l} id="menu-tag-a-sub-${t.id}" class="dropdown-item dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> ${c} ${d} ${u} </a> ${a(t.menuItems)} </li>`:o+=`\n <li class="dropdown-submenu" ${r} ${s} id="menu-tag-li-${t.id}"> <a href="" ${l} id="menu-tag-a-${t.id}" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">${c} ${d} ${u} </a> \n </li>`})),""!=o&&(o=`<ul class="dropdown-menu" id="menu-tag-ul-${t[0].id}">${o}</ul>`)),o};return{restrict:"EA",populateMenu:function(t,o){var r="";return t&&null!=t&&t.subMenuOptions&&null!=t.subMenuOptions&&Array.isArray(t.subMenuOptions)&&t.subMenuOptions.forEach((function(t){var l=t.security&&null!=t.security?` cronapp-security="${t.security}" `:"",s=t.action&&null!=t.action?` ng-click="${t.action}" `:"",c=t.menuItems&&Array.isArray(t.menuItems)&&t.menuItems.length>0?`<span class="caret" id="menu-tag-span-sub-${t.id}"></span>`:"",d=t.hide&&null!=t.hide?` ng-hide="${t.hide}" `:"",u=t.iconClass&&null!=t.iconClass?`<i class="${t.iconClass}"></i> `:"",p=`<span id="menu-tag-span-${t.id}"></span>`;t.title&&(p=`<span id="menu-tag-span-${t.id}">${n.instant(t.title)}</span>`),r+=`\n <li class="dropdown nav-item ${o?"col-md-12 padding-0":""}" ${l} ${d} id="menu-tag-li-sub-${t.id}">\n <a href="" ${s} id="menu-tag-a-sub-${t.id}" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> ${u} ${p} ${c}\n </a>\n ${a(t.menuItems)}\n </li>`})),r},link:function(a,o,r){var l=this.populateMenu;r.$observe("options",(function(s){n.onReady((()=>{let n=o.closest(".crn-navigator-vertical").length;var c={};try{c=JSON.parse(s)}catch(t){console.log("CronDynamicMenu: Invalid configuration!")}let d=c&&c.subMenuOptions&&c.subMenuOptions.length?c.subMenuOptions[0].id:"first";var u=$(`<ul id="menu-tag-ul-base-${d}" class="nav navbar-nav ${n?"col-md-12 padding-0":""}" ></ul>`);u.attr("id",r.id);var p=l(c,n);u.append(p),n&&u.append($("#navbar2 li:first").addClass("col-md-12 padding-0"));var m=angular.element(u);o.html(""),o.append(u),o.attr("id",null),t(m)(a);var f=r.multilevelAction;"hover"===f&&($(".dropdown-menu .dropdown-submenu").on("mouseover",(function(){$(this).children("ul.dropdown-menu").addClass("displayBlock")})),$(".dropdown-menu .dropdown-submenu").on("mouseout",(function(){$(this).children("ul.dropdown-menu").removeClass("displayBlock")}))),"click"===f&&$(".dropdown-menu a.dropdown-toggle").on("click",(function(t){return $(this).next().hasClass("show")||$(this).parents(".dropdown-menu").first().find(".show").removeClass("show"),$(this).next(".dropdown-menu").toggleClass("show"),$(this).parents("li.nav-item.dropdown").on("hidden.bs.dropdown",(function(t){$(".dropdown-submenu .show").removeClass("show")})),!1})),$("#checkCollapsibleMenu").on("click",(function(){var t=document.getElementById("main-view");this.checked?t.classList.remove("main-view-retratil"):t.classList.add("main-view-retratil")}));let g=o.closest("nav");if(g&&g.length){let t=!g.hasClass("submenu-click"),n=g.attr("id");if(n||(n=app.common.generateId(),g.attr("id",n)),t){$(`#${n} .dropdown-submenu`).data("hooked")||($(`#${n} .dropdown-submenu`).on("mouseenter",(function(t){$(this).children(".dropdown-menu").addClass("show")})).on("mouseleave",(function(t){$(this).children(".dropdown-menu").removeClass("show")})),$(`#${n} .dropdown-submenu`).data("hooked",!0))}else{$(`#${n} .dropdown-menu a.dropdown-toggle`).data("hooked")||($(`#${n} .dropdown-menu a.dropdown-toggle`).on("click",(function(t){$(this).next().hasClass("show")||$(this).parents(".dropdown-menu").first().find(".show").removeClass("show");var n=$(this).next(".dropdown-menu");if(n.toggleClass("show"),$(this).parents("li.nav-item.dropdown.show").on("hidden.bs.dropdown",(function(t){$(".dropdown-submenu .show").removeClass("show")})),n.length)return!1;$(".dropdown-menu").removeClass("show")})),$(`#${n} .dropdown-menu a.dropdown-toggle`).data("hooked",!0)),$(`#${n} .dropdown.nav-item`).data("hooked")||($(`#${n} .dropdown.nav-item`).on("hidden.bs.dropdown",(function(t){$(".dropdown-submenu .show").removeClass("show"),$(".dropdown-menu .show").removeClass("show")})),$(`#${n} .dropdown.nav-item`).data("hooked",!0))}}else{let t=$(o).find("ul:first").attr("id");$(`#${t} .dropdown-submenu`).data("hooked")||($(`#${t} .dropdown-submenu`).on("mouseenter",(function(t){$(this).children(".dropdown-menu").addClass("show")})).on("mouseleave",(function(t){$(this).children(".dropdown-menu").removeClass("show")})),$(`#${t} .dropdown-submenu`).data("hooked",!0))}}))}))}}}]).directive("cronBreadcrumbs",["$rootScope",function(t){"use strict";return{restrict:"E",replace:!0,link:function(t,n,a){let o=a.ngInit?a.ngInit:null,r=[];const l=a.crnDelimiterIcon,s=a.typeMenu,c=a.idMenu?a.idMenu:null,d=a.id,u=(a.breadcrumbIcon&&a.breadcrumbIcon,()=>{const t=$(`#${d}`);t.data("kendoBreadcrumb")&&(t.data("kendoBreadcrumb").destroy(),t.empty())}),p=t=>t?t.replace("cronapi.screen.changeView('","").replace("', [])",""):"#/home";o&&"idBloco"===s?(async()=>{const n=o.replace("cronapi.client('js.","blockly.js.");o=n.replace("').run()",""),o=t.$eval(o),r=await o(),u(),$(`#${d}`).kendoBreadcrumb({items:r,delimiterIcon:l,navigational:!0,click:async t=>{t.item.action&&t.item.action()}})})():new MutationObserver(((t,n)=>{const a=$(`#${c}`).parent().attr("options");if(a){n.disconnect();const t=JSON.parse(a),s=document.location.hash||"home",c=(t,n,a=[])=>{for(let r=0;r<t.length;r++){var o=t[r];if(o.action=p(o.action),o.action===n)return[...a,o];if(o.menuItems){const t=c(o.menuItems,n,[...a,o]);if(t)return t}}return null},m=c(t.subMenuOptions,s);if(m){for(var o in r=[],m){const t=m[o];r.push({type:0==o?"rootitem":"item",href:t.action,text:t.title,showText:!0,showIcon:!1})}u(),$(`#${d}`).kendoBreadcrumb({items:r,delimiterIcon:l,navigational:!0})}}})).observe(document.body,{childList:!0,attributes:!0,subtree:!0})}}}]).directive("ngInitialValue",["$parse",function(t){return{restrict:"A",require:"ngModel",link:async function(n,a,o,r){if(o.ngInitialValue){var l,s=t(o.ngModel).assign;try{if(-1!=o.ngInitialValue.indexOf("cronapi.client('js.")){let t=o.ngInitialValue.replace("cronapi.client('js.","blockly.js."),a=t.split("').names")[0];a=a.split("').attr()")[0];let r=t.split(".run")[1];l=await n.$eval(a+r)}else l=n.$eval(o.ngInitialValue)||o.ngInitialValue}catch(t){l=o.ngInitialValue}"checkbox"==a[0].type&&l&&(l="true"==(""+l).toLowerCase()),s(n,l)}}}}]).directive("crnSetIndeterminate",["$parse",function($parse){return{restrict:"A",link:function(scope,element,attrs){let value=eval(attrs.crnSetIndeterminate);null===value&&$(element).prop("indeterminate",!0)}}}]).directive("crnAllowNullValues",[function(){return{restrict:"A",require:"?ngModel",link:function(t,n,a,o){o.$formatters=[],o.$parsers=[];let r=t=>(t&&-1===t.indexOf("'")&&(t=`'${t}'`),t);a.ngFalseValue=r(a.ngFalseValue),a.ngTrueValue=r(a.ngTrueValue);let l=!!a.ngFalseValue&&a.ngFalseValue.split("'").join(""),s=!a.ngTrueValue||a.ngTrueValue.split("'").join("");var c;"true"===(c=a.crnAllowNullValues)||null==c||0==c.length?o.$render=function(){let t=o.$viewValue;switch(n.data("checked",t),t){case!0:case s:n.prop("indeterminate",!1),n.prop("checked",!0),t=s;break;case!1:case l:n.prop("indeterminate",!1),n.prop("checked",!1),t=l;break;default:t=null,n.prop("indeterminate",!0)}setTimeout((()=>o.$setViewValue(t)))}:o.$render=function(){let r=o.$viewValue;if(void 0!==o.$viewValue&&null!==o.$viewValue||(o.$setViewValue(!1),r=!1),r===l){let o=a.ngFalseValue?`${n.attr("ng-model")}=${a.ngFalseValue}`:`${n.attr("ng-model")}=${l}`;t.$eval(o)}switch(n.data("checked",r),r){case!0:case s:n.prop("indeterminate",!1),n.prop("checked",!0),r=s;break;default:n.prop("indeterminate",!1),n.prop("checked",!1),r=l}setTimeout((()=>o.$setViewValue(r)))},n.bind("click",(function(){let r;switch(n.data("checked")){case!1:case l:r=!a.ngTrueValue||s;break;default:r=!!a.ngFalseValue&&l}o.$setViewValue(r),t.$apply(o.$render)}))}}}]).directive("signaturePad",["$compile","$window",function(t,n){"use strict";var a;return{restrict:"E",require:"ngModel",scope:!0,replace:!0,transclude:!0,template:'<div style="height: 100%; width: 100%;"> <canvas style="width:100%; height: 100%;" ng-click="mouseup()" ng-mouseup="mouseup()"></canvas> <div class="component-holder ng-scope col-md-2" style="bottom: 0; position: absolute; padding-left: 5px;" data-component="crn-button"> <button class="btn k-button btn-warning" ng-click="clear()" xattr-fullsize="" xattr-theme="btn-warning" xattr-disabled=""> <i class="glyphicon glyphicon-erase" icon-theme=""></i> <span class="" text-theme="">{{\'clear\'|translate}}</span> </button> </div> </div>',scope:{dataurl:"=",ngClick:"@",ngModel:"="},controller:["$scope",function(t){let n=()=>{let n=t.signaturePad.toDataURL();return n&&(n=n.split(",")[1]),n};t.mouseup=function(a){t.signaturePad.isEmpty()||(t.ngModel=n())},t.$watch("ngModel",(function(a,o){a!==o&&(n()!==a&&t.signaturePad.fromDataURL("data:image/png;base64,"+a,{ratio:1}),t.ngModel=a)}),!0),t.clear=function(){t.signaturePad.clear(),t.ngModel=null}}],link:function(o,r,l,s,c){a=r.find("canvas")[0],o.onResize=function(){var t=Math.max(n.devicePixelRatio||1,1),a=r.find("canvas")[0],o=document.createElement("canvas");o.width=a.width,o.height=a.height,o.getContext("2d").drawImage(a,0,0),a.width=a.offsetWidth*t,a.height=a.offsetHeight*t,a.getContext("2d").drawImage(o,0,0),a.getContext("2d").scale(t,t)},o.onResize(),o.signaturePad=new SignaturePad(a),angular.element(n).on("resize",(function(){o.onResize()})),t(r)(r.scope());let d=!1;$(a).on("pointerdown",(t=>{1===t.which&&(d=!0),t.preventDefault()})),$(a).on("pointerup",(t=>{1===t.which&&d&&(d=!1,c((()=>angular.element(a).triggerHandler("mouseup"))))}))}}}]).directive("cronChat",["$compile","$translate",function(t,n){return{restrict:"E",replace:!0,link:function(t,n,a,o){var r=JSON.parse(a.options||"{}");if(r.token&&r.urlCronchat){var l=r.urlCronchat.endsWith("/")?r.urlCronchat:r.urlCronchat+"/",s=r.token,c=$(`<script src="${l}get-chat?token=${s}" type="text/javascript"><\/script>`);n.html(c)}}}}]).directive("updateLanguage",["$rootScope",function(t){return{link:function(n,a){t.$on("$translateChangeSuccess",(function(t,n){var o=n.language;"pt_br"===o?o="pt-br":o.startsWith("en")&&(o="en"),a.attr("lang",o||"en")}))}}}]).directive("cronFrame",cronFrame).directive("crnComponent",cronFrame).directive("fromGrid",["$compile",t=>({restrict:"A",priority:-999999,exist:t=>{let n=t.attr("id");return $(`#${n}`).length},isFromGrid:t=>"true"===t.fromGrid,isCompiled:t=>t.data("alreadycompiled"),getDateAs:function(t,n,a){let o=t.data("mask"),r=t.data("useUTC");return formatWithMomentAs(o,r,n,a)},prepareValue:function(t,n){return(t.data("column-type")||"").startsWith("date")&&(n=this.getDateAs(t,n,"date")),n},formatComponent:function(t,n){let a=t.data("kendoDropDownList")||t.data("kendoSlider");(t.data("column-type")||"").startsWith("date")?t.val(this.getDateAs(t,n,"string")):a&&a.value(n)},compileGridListing:function(n,a){let o=n.data("ref-component");if(o&&o.tbody&&o.tbody.length&&!$(o.tbody).find(".k-grid-edit-row").length){var r=o.tbody;setTimeout((()=>{a.safeApply((()=>{var n=$(r),o=angular.element(n);t(o)(a)}))}))}},link:function(t,n,a){t.$watch(a.ngModel,(o=>{this.isFromGrid(a)&&this.exist(n)&&this.isCompiled(n)&&(o=this.prepareValue(n,o),this.formatComponent(n,o),this.compileGridListing(n,t),call=n.data("change-grid-model"),call&&call(o))}))}})]).directive("cronOrderedList",["$compile","$sce","$parse",function(t,n,a){"use strict";return{restrict:"EA",replace:!0,link:function(n,a,o,r){let l=o.attributeValue,s=o.orderedAttributeValue,c=o.listType,d=a[0].children[0].children;d=$(d);let u="",p="";switch($.each(d,(function(t,n){p+=n.outerHTML})),c){case"numbered-list":u=`<ol style="list-style-type: ${l}">${p}</ol>`;break;case"ordered-list":u=`<ul style="list-style-type: ${s}">${p}</ul>`}u=$(u),$(a).replaceWith(u),t(u)(n)}}}]).directive("crnInfiniteScroll",["$compile",function(t){"use strict";return{restrict:"EA",link:function(t,n,a){let o={isFirstTime:!0,isRunning:!1,datasource:void 0,isVisible:function(){var t=n.offset().top,a=n.offset().top+n.outerHeight(),o=$(window).scrollTop()+$(window).innerHeight(),r=$(window).scrollTop();return o>t&&r<a},loadNextPage:function(){return void 0===o.datasource&&(o.datasource=a.crnInfiniteScroll?t.$eval(a.crnInfiniteScroll):a.crnDatasource?t.$eval(a.crnDatasource):void 0),!!(o.datasource&&o.datasource.loaded&&o.datasource.loadedFinish)&&(o.datasource.nextPage(),!0)},setStopped:function(){o.isRunning=!1,o.isFirstTime&&(o.isFirstTime=!1,$(window).scroll(o.executeInfinityScroll))},executeInfinityScroll:function(){if(!o.isRunning){o.isRunning=!0;let t=0,n=setInterval((function(){o.isVisible()?o.loadNextPage()?o.isVisible()?t=0:(o.setStopped(),clearInterval(n)):t<5&&o.isVisible()?t+=1:(o.setStopped(),clearInterval(n)):o.setStopped()}),250)}}};$(window).ready(o.executeInfinityScroll)}}}])}(app),app.kendoHelper={getCorrectlyDS:(t,n)=>{if(n[t]&&n[t].apiVersion)return n[t];{let a=n.$parent[t];return n[t]=a,a}},getCorrectlyDSPromise:async(t,n)=>new Promise(((a,o)=>{let r=()=>{let l=null;if(n[t]&&n[t].apiVersion)l=n[t];else{let a=n.$parent[t];n[t]=a,l=a}l?a(l):$(`datasource[name="${t}"]`).length?setTimeout((()=>r()),100):o(null)};r()})),receivePushData:t=>!t||!t.dataSource||(t.dataSource.transport.options.refComponent=t),getSchema:function(t){var n=[{kendoType:"string",entityType:["string","character","uuid","guid"]},{kendoType:"number",entityType:["integer","long","double","int","float","bigdecimal","single","int32","int64","decimal","byte"]},{kendoType:"date",entityType:["date","time","datetime"]},{kendoType:"boolean",entityType:["boolean"]}],a=function(t){for(var a=0;a<n.length;a++)if(n[a].entityType.includes(t.toLocaleLowerCase()))return n[a].kendoType;return"string"},o={model:{id:"__$id",fields:{}}};return t&&t.schemaFields&&(t.schemaFields.forEach((function(t){o.model.fields[t.name]={type:a(t.type),editable:!0,nullable:t.nullable,validation:{required:!t.nullable}}})),o.model.fields.__$id={type:"string",editable:!0,nullable:!0,validation:{required:!1}}),o},getDataSource:function(t,n,a,o,r,l){var s=this.getSchema(t);r&&r.forEach((function(t){for(var n in s.model.fields)if("Database"==t.dataType&&t.field==n){if(s.model.fields[n].nullable=!t.required,s.model.fields[n].validation.required=t.required,"999.999.999-99;0"===t.format||"99.999.999/9999-99;0"===t.format){let a="999.999.999-99;0"===t.format?"cpf":"cnpj",o={cpf:CPF,cnpj:CNPJ},r=n.toLocaleLowerCase()+"validation";s.model.fields[n].validation[r]=function(t){return!t.is("[name='"+n+"']")||""==t.val()||o[a].isValid(t.val())}}break}}));var c=10;app.kendoHelper.getCorrectlyDS(t.name,n)&&(c=app.kendoHelper.getCorrectlyDS(t.name,n).rowsPerPage);var d=6e4*(new Date).getTimezoneOffset();function u(t){for(var n=0;n<t.length;n++)r&&r.forEach((function(a){"Database"==a.dataType&&(("datetime-local"==a.type||"month"==a.type||"time-local"==a.type||"week"==a.type)&&t[n][a.field]&&(t[n][a.field]=t[n][a.field].replace(/\d+/,(function(t){return parseInt(t)+d}))))}))}var p=app.common.generateId(),m={transport:{setActiveAndPost:function(t){var a=this.options.cronappDatasource;n.safeApply(a.updateActive(function(t){for(var n in t)if(s.model.fields.hasOwnProperty(n)){var a=s.model.fields[n];"string"==a.type&&null!=t[n]?t[n]=t[n]+"":"number"==a.type&&null!=t[n]?t[n]=parseFloat(t[n]):"date"==a.type&&null!=t[n]?t[n]="/Date("+t[n].getTime()+")/":"boolean"==a.type&&(null==t[n]?t[n]=!1:t[n]="true"==t[n].toString().toLowerCase()),s.model.id==n&&null!=t[n]&&0==t[n].toString().length&&delete t[n]}return t}(t.data))),a.active.__sender=p,a.postSilent(function(n){this.options.enableAndSelect(t),t.success(n),this.options.refComponent.dataSource._pristineTotal=this.options.refComponent.dataSource._pristineData.push(n)}.bind(this),function(n){this.options.enableAndSelect(t),t.error(n,n,n)}.bind(this))},pushAction:function(t,n){return a=>{if(this.options.isComponentInDocument(this.options.refComponent)){let o=this.options.getCurrentCallbackForPush(n,this.options.refComponent)[t];o?o(a):(this.options.fromRead="read"===t,this.options.cronappDatasource.reloadedFromCronapi&&(this.options.fromRead=!1,delete this.options.cronappDatasource.reloadedFromCronapi),"overRideRefresh"===t&&(this.options.refComponent.dataSource._page=1,this.options.refComponent.dataSource._skip=0),this.options.refComponent.dataSource.read())}else["read","memorydelete","overRideRefresh"].includes(t)||this.options.cronappDatasource.removeDataSourceEvents(this.options.dataSourceEventsPush)}},push:function(t){!this.options.dataSourceEventsPush&&this.options.cronappDatasource&&(this.options.dataSourceEventsPush={create:this.pushAction.bind(this)("pushUpdate",t),update:this.pushAction.bind(this)("pushUpdate",t),delete:this.pushAction.bind(this)("pushDestroy",t),overRideRefresh:this.pushAction.bind(this)("overRideRefresh",t),read:this.pushAction.bind(this)("read",t),memorycreate:this.pushAction.bind(this)("pushUpdate",t),memoryupdate:this.pushAction.bind(this)("pushUpdate",t),memorydelete:this.pushAction.bind(this)("pushDestroy",t)},"combobox"==this.origin&&delete this.options.dataSourceEventsPush.overRideRefresh,this.options.cronappDatasource.addDataSourceEvents(this.options.dataSourceEventsPush))},read:function(n){var a=!1;try{var o=this.options.cronappDatasource;this.options.kendoCallback?this.options.fromRead?this.options.kendoCallback.success(o.data):a=!0:(this.options.kendoCallback=n,a=!0)}finally{this.options.fromRead=!1}if(a){for(key in n.data)null==n.data[key]&&delete n.data[key];var r=kendo.data.transports.odata.parameterMap(n.data,"read"),l="";if(this.options.refComponent&&this.options.refComponent.dataSource.group().forEach((function(t){l+=t.field+" "+t.dir+","})),l.length>0&&(l=l.substr(0,l.length-1),r.$orderby?r.$orderby=l+","+r.$orderby:r.$orderby=l),(o=this.options.cronappDatasource).rowsPerPage=n.data.pageSize,o.offset=n.data.page-1,!n.data.pageSize&&(o.rowsPerPage=Number.MAX_SAFE_INTEGER_32,o.offset=void 0,r.$skip=0,this.options.refComponent&&1!=this.options.refComponent.dataSource.page()))return this.options.refComponent.dataSource.page(1),void n.error("canceled","canceled","canceled");var s={};s.params=r;var c=!1;t.append&&(c=t.append);var d={};"button"===o.loadDataStrategy&&o.data.length>0&&(d.origin=o.loadDataStrategy),o.append=c,o.fetch(s,{success:function(t){n.success(t)},canceled:function(t){n.error("canceled","canceled","canceled")},error:function(t){n.error("canceled","canceled","canceled")}},c,d)}},update:function(t){this.setActiveAndPost(t)},create:function(t){this.setActiveAndPost(t)},destroy:function(t){cronappDatasource=this.options.cronappDatasource,cronappDatasource.removeSilent(t.data,(function(n){t.success(n)}),(function(n){t.error("canceled","canceled","canceled")}))},batch:function(t){},options:{fromRead:!1,disableAndSelect:function(t){this.isComponentInDocument(this.refComponent)&&(this.refComponent.select(t.container),this.refComponent.options.selectable=!1,this.refComponent.selectable&&this.refComponent.selectable.element&&(this.refComponent.selectable.destroy(),this.refComponent.selectable=null))},enableAndSelect:function(t){this.isComponentInDocument(this.refComponent)&&(this.refComponent.options.selectable=this.refComponent.options.originalSelectable,this.refComponent._selectable(),this.refComponent.select(t.container))},selectActiveInGrid:function(t){if(this.isComponentInDocument(this.refComponent)&&this.refComponent.selectable&&this.refComponent.dataItems().length>0&&this.cronappDatasource.active&&this.cronappDatasource.active.__$id){for(var n=this.refComponent.dataItems(),a=-1,o=0;o<n.length;o++)if(this.cronappDatasource.active.__$id==n[o].__$id){a=o;break}a>-1&&!this.refComponent.selectable.options.multiple&&this.refComponent.select(this.refComponent.table.find("tr")[a+1])}},isComponentInDocument:function(t){return!!t&&$(document).has(t.element[0]).length},getCurrentCallbackForPush:function(t,n){return t||n},cronappDatasource:app.kendoHelper.getCorrectlyDS(t.name,n)}},pageSize:c,serverPaging:!0,serverFiltering:!0,serverSorting:!0,batch:!1,schema:s,requestEnd:function(t){if(t.response&&t.response.d){var n=null;n=t.response.d.results?t.response.d.results:[t.response.d],this.group().length?r.forEach((function(t){if("Database"==t.dataType&&("datetime-local"==t.type||"month"==t.type||"time-local"==t.type||"week"==t.type))for(var a=0;a<n.length;a++){var o=n[a];t.field==o.Member&&(o.Key=o.Key.replace(/\d+/,(function(t){return parseInt(t)+d}))),u.bind(this)(o.Items)}})):u.bind(this)(n)}}};return m.aggregate=function(t){var n=[];return t&&t.forEach((function(t){t.aggregates&&t.aggregates.forEach((function(a){n.push({field:t.field,aggregate:a.type})}))})),n}(r),m.schema.total=function(){return m.transport.options.cronappDatasource.getRowsCount()},l&&(m.group=[],l.forEach((function(t){var n={field:t.field,aggregates:m.aggregate};m.group.push(n)}))),m},getEventReadCombo:function(t){var n=this.options.cronappDatasource;if(n){var a;if(this.options.kendoCallback||(this.options.kendoCallback=t),this.options.combobox&&this.options.combobox.options.readData)return t.success(this.options.combobox.options.readData),this.options.combobox.options.readData=null,void(this.options.alreadyLoaded=!0);this.options.combobox?a=!this.options.alreadyLoaded:n.__ignoreFirstFetch?(a=!0,delete n.__ignoreFirstFetch):a=!1,this.options.alreadyLoaded=!0;var o=!0;if(a&&(o=!1,n.lazy?t.success([{}]):t.success([])),(this.options.fromRead||this.options.combobox&&void 0===this.options.combobox.options.firstLazyRead)&&(this.options.fromRead=!1,this.options.kendoCallback.success(n.data),o=!1),o){for(key in t.data)null==t.data[key]&&delete t.data[key];var r=kendo.data.transports.odata.parameterMap(t.data,"read");n.rowsPerPage=t.data.pageSize,n.offset=t.data.page-1;var l=this,s={};s.params=r,l.options.combobox&&(l.options.combobox.options.fromCombo=!0),n.fetch(s,{success:function(n){if(t.success&&(l.options.combobox&&(l.options.combobox.options.expanded=!0),t.success(n),l?.options?.combobox?.span&&l.options.$compile(l.options.combobox.span)(l.options.scope),l.options.kendoCallback=t,l.options&&l.options.combobox&&l.options.combobox.element[0].id)){var a=angular.element($(" .k-animation-container"));l.options.$compile(a)(l.options.scope)}},canceled:function(n){l.options.combobox&&(l.options.combobox.options.fromCombo=!1),t.success&&t.error("canceled","canceled","canceled")},error:function(n){l.options.combobox&&(l.options.combobox.options.fromCombo=!1),t.success&&t.error("error","error","error")}},!1,{ignoreAtive:!0})}}else t.error("canceled","canceled","canceled")},parseOptionsCronToConfigKendo:function(t,n,a){let o=!1;t.dynamic&&"false"!=t.dynamic?t.dataSourceScreen&&t.dataSourceScreen.entityDataSource&&(t.dataSourceScreen.entityDataSource.append=!0,(n=app.kendoHelper.getDataSource(t.dataSourceScreen.entityDataSource,a,!0,t.dataSourceScreen.rowsPerPage)).transport.read=app.kendoHelper.getEventReadCombo,o=!0):(o=!0,t.dataValueField=t.dataValueField||"value",t.dataTextField=t.dataTextField||"key"),t.dataValueField&&""!=t.dataValueField.trim()||(t.dataValueField=null==t.dataTextField?void 0:t.dataTextField);var r,l=function(n){var a=t.dataSourceScreen.entityDataSource.schemaFields;for(count=0;count<a.length;count++)if(n==a[count].name)return a[count].type.toLowerCase();return null};t.customTemplate||t.dataSourceScreen&&t.dataSourceScreen.entityDataSource&&t.dataSourceScreen.entityDataSource.schemaFields&&(t.format||(r=l(t.dataTextField),["date","time","datetime"].indexOf(r)>-1&&r))&&(t.template="#= useMask("+t.dataTextField+",'"+t.format+"','"+l(t.dataTextField)+"') #",t.valueTemplate="#= useMask("+t.dataTextField+",'"+t.format+"','"+l(t.dataTextField)+"') #");var s={dataTextField:null==t.dataTextField?void 0:t.dataTextField,dataValueField:null==t.dataValueField?void 0:t.dataValueField,dataSource:n,headerTemplate:null==t.headerTemplate?void 0:t.headerTemplate,template:null==t.template?void 0:t.template,tagTemplate:null==t.tagTemplate?void 0:t.tagTemplate,placeholder:null==t.placeholder?void 0:t.placeholder,footerTemplate:null==t.footerTemplate?void 0:t.footerTemplate,filter:null==t.filter?void 0:t.filter,valuePrimitive:o,valueTemplate:null==t.valueTemplate?void 0:t.valueTemplate,suggest:!0};return t.optionLabel&&(t.optionLabelText=t.optionLabel,t.optionLabelValue=""),s.optionLabel={},s.optionLabel[s.dataTextField]=void 0===t.optionLabelText?"":t.optionLabelText,s.optionLabel[s.dataValueField]=void 0===t.optionLabelValue?null:t.optionLabelValue,s},getConfigComboboxSync:function(t,n){var a={};if(t){if(!t.dynamic||"false"==t.dynamic){a.data=null==t.staticDataSource?void 0:t.staticDataSource;for(let t=0;t<a.data.length;t++)try{a.data[t].key&&a.data[t].key.startsWith("cronapi.server(")&&(a.data[t].key=a.data[t].key.replace(".run(",".notAsync().run("));let o=n.$eval(a.data[t].key);a.data[t].key=null!=o?o:a.data[t].key}catch(n){a.data[t].key=a.data[t].key}}return config=this.parseOptionsCronToConfigKendo(t,a,n),config}return{}},getConfigCombobox:async function(t,n){var a={};if(t){if(!t.dynamic||"false"==t.dynamic){a.data=null==t.staticDataSource?void 0:t.staticDataSource;for(let t=0;t<a.data.length;t++)try{a.data[t].key&&a.data[t].key.startsWith("cronapi.server(")&&(a.data[t].key=a.data[t].key.replace(".run(",".toPromise().run("));let o=await n.$eval(a.data[t].key);a.data[t].key=null!=o?o:a.data[t].key}catch(n){a.data[t].key=a.data[t].key}}return config=this.parseOptionsCronToConfigKendo(t,a,n),config}return{}},getConfigDate:function(t,n){var a,o,r={};if(r){var l=function(t){return t&&(t=(t=(t=(t=(t=t.replace(/:MM/gm,":mm")).replace(/:M/gm,":m")).replace(/S/gm,"s")).replace(/D/gm,"d")).replace(/Y/gm,"y")),t},s={};if(n.animation)try{s=JSON.parse(n.animation)}catch(t){console.log("DateAnimation invalid configuration! "+t)}var c=(a=n.type,null==(o=n.format)&&(o=parseMaskType(a,t)),o);r={value:null,format:l(c),timeFormat:l(n.timeFormat),momentFormat:c,culture:function(t){var n=(t=t.replace(/_/gm,"-")).split("-");return n[n.length-1]=n[n.length-1].toUpperCase(),n.join("-")}(t.use()),type:null==n.type?void 0:n.type,weekNumber:null==n.weekNumber?void 0:n.weekNumber,dateInput:null==n.dateInput?void 0:n.dateInput,animation:s,footer:null==n.footer?void 0:n.footer,start:null==n.start?void 0:n.start,depth:null==n.start?void 0:n.start}}return r},buildKendoMomentPicker:function(t,n,a,o){var r="date"==n.type||"datetime"==n.type||"time"==n.type;window.fixedTimeZone||(r=!1),t.data("mask",n.momentFormat),t.data("useUTC",r);var l=function(){var a=t.val();if(a&&""!=a.trim()){var l=formatWithMomentAs(n.momentFormat,r,a,"date");o&&(o.$setViewValue(l),t.data("changed",!0))}else o&&o.$setViewValue("")};return n.change=a?function(){a.$apply((function(){l()}))}:l,"date"==n.type?t.kendoDatePicker(n).data("kendoDatePicker"):"datetime"==n.type||"datetime-local"==n.type?t.kendoDateTimePicker(n).data("kendoDateTimePicker"):"time"==n.type||"time-local"==n.type?t.kendoTimePicker(n).data("kendoTimePicker"):void 0},getConfigSlider:function(t){var n={increaseButtonTitle:(t=t||{}).increaseButtonTitle,decreaseButtonTitle:t.decreaseButtonTitle,dragHandleTitle:t.dragHandleTitle};try{n.min=t.min?parseInt(t.min):1,n.max=t.max?parseInt(t.max):1,n.smallStep=t.smallStep?parseInt(t.smallStep):1,n.largeStep=t.largeStep?parseInt(t.largeStep):1}catch(t){console.log("Slider invalid configuration! "+t)}return n},getConfigSwitch:function(t){return{onLabel:null==(t=t||{}).onLabel?void 0:t.onLabel,offLabel:null==t.offLabel?void 0:t.offLabel}},getConfigBarcode:function(t){var n={type:null==t.type?void 0:t.type,width:null==t.width?void 0:parseInt(t.width),height:null==t.height?void 0:parseInt(t.height)};return n.type||(n.type="EAN8"),n},getConfigQrcode:function(t){var n={errorCorrection:null==t.errorCorrection?void 0:t.errorCorrection,size:null==t.size?void 0:parseInt(t.size),color:null==t.color?void 0:t.color};return(t.borderColor||t.borderSize)&&(n.border={size:null==t.size?void 0:parseInt(t.size),color:null==t.color?void 0:t.color}),n}},window.showTreatedValue=function(t){return t||!1===t?t:""},window.useMask=function(t,n,a){var o="",r=t,l=(n="null"==n||"undefined"==n?void 0:n)||a;if(null!=t&&null!=t){if(t instanceof Date)r='"'+moment(t).utcOffset(window.timeZoneOffset).format()+'"';else r="number"==typeof t?t:'"'+t+'"';o="{{ "+r+' | mask:"'+l+'":"'+a+'"}}'}return o},window.formatWithMomentAs=function(t,n,a,o){if(!a)return;let r=null;return r=a instanceof Date||a.startsWith("/Date")?n?moment(a).utcOffset(window.timeZoneOffset):moment(a):n?moment(a,t).utcOffset(window.timeZoneOffset,!0):moment(a,t),"string"===o?r.format(t):r.toDate()};
|
package/js/app.js
CHANGED
|
@@ -336,8 +336,41 @@ var app = (function() {
|
|
|
336
336
|
|
|
337
337
|
$transitions.onSuccess({}, (transition) => $stateChangeSuccess(transition.to()));
|
|
338
338
|
$state.defaultErrorHandler(error => $stateChangeError(error));
|
|
339
|
+
})
|
|
340
|
+
.config(function($httpProvider) {
|
|
341
|
+
// Create an interceptor to handle CSRF tokens (consistent with other implementations)
|
|
342
|
+
$httpProvider.interceptors.push(function() {
|
|
343
|
+
return {
|
|
344
|
+
request: function(config) {
|
|
345
|
+
// Get the CSRF token from localStorage
|
|
346
|
+
const csrfToken = localStorage.getItem('csrfToken') || '';
|
|
339
347
|
|
|
348
|
+
// Set the header for all requests
|
|
349
|
+
if (csrfToken) {
|
|
350
|
+
config.headers['X-CSRF-TOKEN'] = csrfToken;
|
|
351
|
+
}
|
|
352
|
+
return config;
|
|
353
|
+
},
|
|
354
|
+
response: function(response) {
|
|
355
|
+
// Check if the response has a new CSRF token
|
|
356
|
+
const newToken = response.headers('X-CSRF-TOKEN');
|
|
357
|
+
if (newToken) {
|
|
358
|
+
// Store it for the next request and sync with Swagger UI
|
|
359
|
+
localStorage.setItem('csrfToken', newToken);
|
|
360
|
+
}
|
|
361
|
+
return response;
|
|
362
|
+
},
|
|
363
|
+
responseError: function(response) {
|
|
364
|
+
// Also check for CSRF token in error responses
|
|
365
|
+
const newToken = response.headers('X-CSRF-TOKEN');
|
|
366
|
+
if (newToken) {
|
|
367
|
+
localStorage.setItem('csrfToken', newToken);
|
|
368
|
+
}
|
|
369
|
+
return Promise.reject(response);
|
|
370
|
+
}
|
|
371
|
+
};
|
|
340
372
|
});
|
|
373
|
+
});
|
|
341
374
|
|
|
342
375
|
}(window));
|
|
343
376
|
|
package/js/directives.js
CHANGED
|
@@ -3720,9 +3720,17 @@
|
|
|
3720
3720
|
if (!window.isUsingCookie()) {
|
|
3721
3721
|
xhr.setRequestHeader ("X-AUTH-TOKEN", cronapi.util.getUserToken());
|
|
3722
3722
|
}
|
|
3723
|
-
|
|
3723
|
+
// Get CSRF token from localStorage (consistent with other implementations)
|
|
3724
|
+
const csrfToken = localStorage.getItem('csrfToken');
|
|
3724
3725
|
if (csrfToken) {
|
|
3725
|
-
xhr.setRequestHeader('X-
|
|
3726
|
+
xhr.setRequestHeader('X-CSRF-TOKEN', csrfToken);
|
|
3727
|
+
}
|
|
3728
|
+
},
|
|
3729
|
+
complete: (xhr) => {
|
|
3730
|
+
// Update CSRF token from localStorage (consistent with other implementations)
|
|
3731
|
+
const newToken = xhr.getResponseHeader('X-CSRF-TOKEN');
|
|
3732
|
+
if (newToken) {
|
|
3733
|
+
localStorage.setItem('csrfToken', newToken);
|
|
3726
3734
|
}
|
|
3727
3735
|
},
|
|
3728
3736
|
error: () => reject(),
|
|
@@ -3866,9 +3874,15 @@
|
|
|
3866
3874
|
if (!window.isUsingCookie()) {
|
|
3867
3875
|
xhr.setRequestHeader ("X-AUTH-TOKEN", cronapi.util.getUserToken());
|
|
3868
3876
|
}
|
|
3869
|
-
const csrfToken =
|
|
3877
|
+
const csrfToken = localStorage.getItem('csrfToken');
|
|
3870
3878
|
if (csrfToken) {
|
|
3871
|
-
xhr.setRequestHeader('X-
|
|
3879
|
+
xhr.setRequestHeader('X-CSRF-TOKEN', csrfToken); // Using consistent header name
|
|
3880
|
+
}
|
|
3881
|
+
},
|
|
3882
|
+
complete: (xhr) => {
|
|
3883
|
+
const newToken = xhr.getResponseHeader('X-CSRF-TOKEN');
|
|
3884
|
+
if (newToken) {
|
|
3885
|
+
localStorage.setItem('csrfToken', newToken);
|
|
3872
3886
|
}
|
|
3873
3887
|
},
|
|
3874
3888
|
error: () => reject(),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cronapp-framework-js",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "Javascript library for CronApp's projects",
|
|
5
5
|
"main": "cronapp.framework.js",
|
|
6
6
|
"type": "module",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"gulp-uglify": "^3.0.2"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@cronapp/cronapp-mvc": "4.0.
|
|
38
|
+
"@cronapp/cronapp-mvc": "4.0.2",
|
|
39
39
|
"cpf_cnpj": "0.2.0",
|
|
40
40
|
"font-awesome": "4.4.0",
|
|
41
41
|
"jquery": "3.5.1",
|