cronapp-framework-mobile-js 3.2.1 → 4.0.0
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/components/templates/button.template.html +2 -2
- package/css/themes/custom/theme-general/button.css +7 -1
- package/dist/components/js/format.min.js +1 -1
- package/dist/components/js/jquery.inputmask.bundle.js +1 -3
- package/dist/components/js/jquery.mask.min.js +1 -1
- package/dist/components/js/pouchdb.cordova-sqlite.js +1 -2
- package/dist/components/js/qrcode.js +1 -1
- package/dist/components/templates/anchor.template.html +1 -1
- package/dist/components/templates/button.template.html +1 -1
- package/dist/components/templates/combobox.designtime.html +1 -1
- package/dist/components/templates/combobox.template.html +1 -1
- package/dist/components/templates/crn-frame.designtime.html +1 -1
- package/dist/components/templates/crn-signature-pad.designtime.html +1 -1
- package/dist/components/templates/cron-combobox.designtime.html +1 -1
- package/dist/components/templates/dynamic-combobox.template.html +1 -1
- package/dist/components/templates/evaluation.designtime.html +1 -1
- package/dist/components/templates/image.template.html +1 -1
- package/dist/components/templates/ion-footer-bar.template.html +1 -1
- package/dist/components/templates/ion-header-bar.template.html +1 -1
- package/dist/components/templates/ion-tab-item.designtime.html +1 -1
- package/dist/components/templates/item.icon.template.html +1 -1
- package/dist/components/templates/item.slider.template.html +1 -1
- package/dist/components/templates/kendo-chat.designtime.html +1 -1
- package/dist/components/templates/kendo-chat.template.html +1 -1
- package/dist/components/templates/list.swipe.template.html +1 -1
- package/dist/components/templates/maps.designtime.html +1 -1
- package/dist/components/templates/multiselect.template.html +1 -1
- package/dist/components/templates/slider.template.html +1 -1
- package/dist/components/templates/textarea.template.html +1 -1
- package/dist/components/templates/views/public/home.view.html +1 -1
- package/dist/components/templates/views/public/menu.view.html +1 -1
- package/dist/css/themes/custom/theme-general/button.css +1 -1
- package/dist/js/LanguageSelectDirective.js +1 -1
- package/dist/js/LocaleService.js +1 -1
- package/dist/js/app.authentication.js +1 -1
- package/dist/js/app.js +1 -1
- package/dist/js/controllers.authentication.js +1 -1
- package/dist/js/controllers.js +1 -1
- package/dist/js/custom.controllers.js +1 -1
- package/dist/js/customStateProvider.js +105 -0
- package/dist/js/directives.js +1 -17
- package/dist/js/filters.js +1 -1
- package/dist/js/local-dateformat.directive.js +1 -1
- package/dist/js/reports/parameters.controller.js +1 -1
- package/dist/js/reports/reports.service.js +1 -1
- package/dist/js/services.js +1 -1
- package/dist/js/upload.service.js +1 -1
- package/gulpfile.js +24 -39
- package/js/app.authentication.js +10 -1
- package/js/controllers.authentication.js +54 -26
- package/package.json +21 -19
- package/dist/img/cron-icon/crn-QRCode.svg +0 -1
- package/dist/img/cron-icon/crn-anchor.svg +0 -1
- package/dist/img/cron-icon/crn-button-bar.svg +0 -1
- package/dist/img/cron-icon/crn-button.svg +0 -1
- package/dist/img/cron-icon/crn-card.svg +0 -1
- package/dist/img/cron-icon/crn-carousel.svg +0 -1
- package/dist/img/cron-icon/crn-chart.svg +0 -1
- package/dist/img/cron-icon/crn-checkbox.svg +0 -1
- package/dist/img/cron-icon/crn-component.svg +0 -1
- package/dist/img/cron-icon/crn-container.svg +0 -1
- package/dist/img/cron-icon/crn-cron-crud.svg +0 -1
- package/dist/img/cron-icon/crn-datasource.svg +0 -1
- package/dist/img/cron-icon/crn-dynamic-file.svg +0 -1
- package/dist/img/cron-icon/crn-dynamic-image.svg +0 -1
- package/dist/img/cron-icon/crn-enterprise-combobox.svg +0 -1
- package/dist/img/cron-icon/crn-enterprise-dynamic-combobox.svg +0 -1
- package/dist/img/cron-icon/crn-evaluation.svg +0 -1
- package/dist/img/cron-icon/crn-form.svg +0 -1
- package/dist/img/cron-icon/crn-frame.svg +0 -1
- package/dist/img/cron-icon/crn-header.svg +0 -1
- package/dist/img/cron-icon/crn-icon.svg +0 -1
- package/dist/img/cron-icon/crn-image.svg +0 -1
- package/dist/img/cron-icon/crn-infinite-scroll.svg +0 -1
- package/dist/img/cron-icon/crn-input-floating.svg +0 -1
- package/dist/img/cron-icon/crn-input-inline.svg +0 -1
- package/dist/img/cron-icon/crn-ion-footer-bar.svg +0 -1
- package/dist/img/cron-icon/crn-ion-list.svg +0 -1
- package/dist/img/cron-icon/crn-item-swipe.svg +0 -1
- package/dist/img/cron-icon/crn-kendo-chat.svg +0 -1
- package/dist/img/cron-icon/crn-label.svg +0 -1
- package/dist/img/cron-icon/crn-list-avatar.svg +0 -1
- package/dist/img/cron-icon/crn-list-icon.svg +0 -1
- package/dist/img/cron-icon/crn-list-item-avatar.svg +0 -1
- package/dist/img/cron-icon/crn-list-item-icon.svg +0 -1
- package/dist/img/cron-icon/crn-list-item-thumbnail.svg +0 -1
- package/dist/img/cron-icon/crn-list-item.svg +0 -1
- package/dist/img/cron-icon/crn-list-swipe.svg +0 -1
- package/dist/img/cron-icon/crn-list-thumbnail.svg +0 -1
- package/dist/img/cron-icon/crn-list.svg +0 -1
- package/dist/img/cron-icon/crn-map.svg +0 -1
- package/dist/img/cron-icon/crn-multiselect.svg +0 -1
- package/dist/img/cron-icon/crn-paragraph.svg +0 -1
- package/dist/img/cron-icon/crn-plugin.svg +0 -1
- package/dist/img/cron-icon/crn-radio.svg +0 -1
- package/dist/img/cron-icon/crn-radiogroup.svg +0 -1
- package/dist/img/cron-icon/crn-range.svg +0 -1
- package/dist/img/cron-icon/crn-rating.svg +0 -1
- package/dist/img/cron-icon/crn-select.svg +0 -1
- package/dist/img/cron-icon/crn-signature-pad.svg +0 -1
- package/dist/img/cron-icon/crn-spacer.svg +0 -1
- package/dist/img/cron-icon/crn-tabs-icon-only.svg +0 -1
- package/dist/img/cron-icon/crn-tabs.svg +0 -1
- package/dist/img/cron-icon/crn-text-component.svg +0 -1
- package/dist/img/cron-icon/crn-textarea.svg +0 -1
- package/dist/img/cron-icon/crn-textinput.svg +0 -1
- package/dist/img/cron-icon/crn-textinputbutton.svg +0 -1
- package/dist/img/cron-icon/crn-textinputicon.svg +0 -1
- package/dist/img/cron-icon/crn-toggle.svg +0 -1
- package/dist/img/cron-icon/crn-video.svg +0 -1
- package/dist/img/logo.svg +0 -1
- package/dist/img/placehold-100x100.png +0 -0
- package/dist/img/placehold-300x200.png +0 -0
- package/dist/img/placehold-900x500.png +0 -0
- package/dist/img/qr-code.png +0 -0
- package/dist/img/svg-charts.svg +0 -1
- package/dist/img/user.svg +0 -1
- package/dist/img/web.png +0 -0
package/dist/js/directives.js
CHANGED
|
@@ -1,17 +1 @@
|
|
|
1
|
-
maskDirectiveAsDate.$inject=["$compile","$translate","$parse"],maskDirectiveMask.$inject=["$compile","$translate","$parse"],cronFrame.$inject=["$compile","$sce","$parse"],window.addEventListener("message",function(e){"reload"==e.data?window.location.reload():"reload(true)"==e.data&&window.location.reload(!0)}),function($app){var _Mathfloor=Math.floor;app.common={generateId:function(){var e=_Mathfloor(65536*(1+Math.random())).toString(16).substring(1);return-1<"0123456789".indexOf(e.substr(0,1))?this.generateId():e}};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))/,patternFormat=function(e){return e?$(e).attr("format")||"DD/MM/YYYY":"DD/MM/YYYY"},parsePermission=function(e){var t={visible:{public:!0},enabled:{public:!0},render:{public:!0},notvisible:{public:!1},notenabled:{public:!1},notrender:{public:!1}};if(e)for(var a,n=e.toLowerCase().trim().split(","),o=0;o<n.length;o++)if(a=n[o].trim(),a){var r=a.split(":");if(2==r.length){var l=r[0].trim(),s=r[1].trim();if(s){for(var d,c=s.split(";"),u={},m=0;m<c.length;m++)d=c[m].trim(),d&&(u[d]=!0);t[l]=u}}}return t};app.directive("updateLanguage",["$rootScope",function(e){return{link:function(t,a){e.$on("$translateChangeSuccess",function(e,t){let n=t.language?t.language.split("_")[0]:null;a.attr("lang",n||"en")})}}}]),app.directive("asDate",maskDirectiveAsDate),app.directive("input",transformText),app.directive("textarea",transformText).directive("ngDestroy",function(){return{restrict:"A",link:function(scope,element,attrs,ctrl){element.on("$destroy",function(){attrs.ngDestroy&&0<attrs.ngDestroy.length&&(-1<attrs.ngDestroy.indexOf("app.")||-1<attrs.ngDestroy.indexOf("blockly.")?scope.$eval(attrs.ngDestroy):eval(attrs.ngDestroy))})}}}).filter("mask",["$translate",function(e){return function(t,a,n){if(a=parseMaskType(a,e),!a)return t;var o;if(void 0===n?o=window.fixedTimeZone:(o="date"==n||"datetime"==n||"time"==n,!window.fixedTimeZone&&(o=!1)),0<a.indexOf(";local")&&(o=!1),a=a.replace(";1","").replace(";0","").replace(";local","").trim(),"string"==typeof t&&t.match(isoDate)||t instanceof Date)return o?moment(t).utcOffset(window.timeZoneOffset).format(a):moment(t).format(a);if("number"==typeof t)return format(a,t);if(null!=t&&null!=t&&""!=t&&""!=a){var r=$("<input type=\"text\">");return r.mask(a),r.masked(t)}return t}}]).directive("screenParams",[function(){"use strict";return{link:function(scope,elem,attrs,ctrl){var screenParams=eval(attrs.screenParams);screenParams&&screenParams.length&&screenParams.forEach(function(e){scope.params&&!scope.params[e.key]&&(scope.params[e.key]=e.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 e=>{if(scope.vars&&!scope.vars[e.key]){let t=e.value||"";"blockly"===e.type?t=await scope.$eval(t.replace(".run(",".toPromise().run(")):"expression"===e.type&&(t.startsWith("params")?t=scope.params[t.replace("params.","")]:t.startsWith("vars")?t=scope.vars[t.replace("vars.","")]:t=await scope.$eval(t)),scope.vars[e.key]=t}})}}}]).directive("mask",maskDirectiveMask).directive("dynamicImage",["$compile","$translate",function(e,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(a,n,o){let r="<div ngf-drop=\"\" ngf-drag-over-class=\"dragover\" class=\"dynamicImage\" > <img role=\"img\" alt=\"$altText$\" style=\"width: 100%;\" ng-if=\"$ngModel$\" data-ng-src=\"{{$ngModel$.startsWith('http') || ($ngModel$.startsWith('/') && $ngModel$.length < 1000)? $ngModel$ : 'data:image/png;base64,' + $ngModel$}}\"> <div class=\"btn action-button-border\" ng-if=\"!$ngModel$\" ngf-drop=\"\" ngf-select=\"\" ngf-change=\"cronapi.internal.setFile('$ngModel$', $file)\" ngf-pattern=\"'image/*'\" ngf-max-size=\"$maxFileSize$\"> $userHtml$ </div> <div aria-label=\"$closeAriaText$\" class=\"remove-image-button button button-assertive\" ng-if=\"$ngModel$\" ng-click=\"$ngModel$=null\"> <span class=\"icon ion-android-close\"></span> </div> <div aria-label=\"$videocamAriaText$\" class=\"button button-default buttomImage\" ng-if=\"!$ngModel$\" ng-click=\"cronapi.internal.startCamera('$ngModel$','$quality$','$allowEdit$','$targetWidth$','$targetHeight$')\"> <span class=\"icon ion-ios-videocam\"></span> </div> </div>";const l=o.quality||$(n).closest("[data-component=\"crn-dynamic-image\"]").attr("quality")||"60",s={ngModel:o.ngModel,required:o.ngRequired&&"true"==o.ngRequired?"required":"",content:n.html(),altText:o.alt?o.alt:t.instant("Users.view.Picture"),closeAriaText:t.instant("Home.view.Close"),videocamAriaText:t.instant("OpenCamera"),maxFileSize:o.maxFileSize?o.maxFileSize:"",quality:l,allowEdit:o.allowEdit?o.allowEdit:"false",targetWidth:o.targetWidth?o.targetWidth:"640",targetHeight:o.targetHeight?o.targetHeight:"480"};r=$(r.split("$ngModel$").join(s.ngModel).split("$required$").join(s.required).split("$userHtml$").join(s.content).split("$maxFileSize$").join(s.maxFileSize).split("$altText$").join(s.altText).split("$closeAriaText$").join(s.closeAriaText).split("$videocamAriaText$").join(s.videocamAriaText).split("$quality$").join(s.quality).split("$allowEdit$").join(s.allowEdit).split("$targetWidth$").join(s.targetWidth).split("$targetHeight$").join(s.targetHeight)),$(n).html(r),e(r)(n.scope())}}}]).directive("dynamicFile",["$compile","$translate",function(e,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(a,n,o){var r=o.ngRequired&&"true"==o.ngRequired?"required":"",l=t.instant("Home.view.Close"),s=o.ngModel.split("."),d=s[0],c=s[s.length-1],p=_Mathfloor(1e3*Math.random()+20),u=n.html(),m="",g=o.acceptFile||"'*.*'";o.maxFileSize&&(m=o.maxFileSize);var f=o.fileInfo?`'${o.fileInfo}'`:"undefined",h=" <div ng-show=\"!$ngModel$\" ngf-drop=\"\" ngf-drag-over-class=\"dragover\"> <div class=\"btn action-button-border\" ngf-drop=\"\" ngf-select=\"\" ngf-change=\"cronapi.internal.uploadFile('$ngModel$', $file, 'uploadprogress$number$', $fileInfo$)\" ngf-max-size=\"$maxFileSize$\" ngf-pattern=\"$acceptPattern$\" ngf-accept=\"$acceptFile$\"> $userHtml$ </div> <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\"> <div aria-label=\"$closeAriaText$\" class=\"button button-assertive\" style=\"float:right;\" ng-if=\"$ngModel$\" ng-click=\"$ngModel$=null\"> <span role=\"img\" alt=\"$closeAriaText$\" class=\"icon ion-android-close\"></span> </div> <div> <div ng-bind-html=\"cronapi.internal.generatePreviewDescriptionByte($ngModel$, $fileInfo$)\"></div> <div aria-label=\"Download\" class=\"button button-positive\" ng-click=\"cronapi.internal.downloadFileEntityMobile($datasource$,'$field$', undefined, $fileInfo$)\">$lblDownload$</div> </div> </div> ";h=$(h.split("$ngModel$").join(o.ngModel).split("$datasource$").join(d).split("$field$").join(c).split("$number$").join(p).split("$required$").join(r).split("$userHtml$").join(u).split("$maxFileSize$").join(m).split("$closeAriaText$").join(l).split("$lblDownload$").join(t.instant("download")).split("$fileInfo$").join(f).split("$acceptPattern$").join(g).split("$acceptFile$").join(g)),$(n).html(h),e(h)(n.scope())}}}]).directive("pwCheck",[function(){"use strict";return{require:"ngModel",link:function(e,t,a,n){var o="#"+a.pwCheck;t.add(o).on("keyup",function(){e.$apply(function(){var e=t.val()===$(o).val();n.$setValidity("pwmatch",e)})})}}}]).directive("qr",["$window",function(e){return{restrict:"EA",require:"^ngModel",template:"<canvas ng-hide=\"image\"></canvas><img alt=\"qr-code\" ng-if=\"image\" ng-src=\"{{canvasImage}}\"/>",link:function(t,a,n,o){t.size===void 0&&n.size&&(t.text=n.size);var r=function(){return o.$modelValue||""},l=function(e){return /^[0-9]*$/.test(e)},s=function(e){return /^[0-9A-Z $%*+\-./:]*$/.test(e)},d=function(e){for(var t,a=0;a<e.length;a++)if(t=e.charCodeAt(a),255<t)return!1;return!0},c=function(e,t){if("NUMBER"===e&&!l(t))throw new Error("The `NUMBER` input mode is invalid for text.");else if("ALPHA_NUM"===e&&!s(t))throw new Error("The `ALPHA_NUM` input mode is invalid for text.");else if("8bit"===e&&!d(t))throw new Error("The `8bit` input mode is invalid for text.");else if(!d(t))throw new Error("Input mode is invalid for text.");return!0},p=function(e){var a=t.inputMode;return a=a||(l(e)?"NUMBER":void 0),a=a||(s(e)?"ALPHA_NUM":void 0),a=a||(d(e)?"8bit":""),c(a,e)?a:""},u=a.find("canvas")[0],m=!!e.CanvasRenderingContext2D;t.TYPE_NUMBER=function(){return t.typeNumber||0}(),t.TEXT=r(),t.CORRECTION=function(){var e=t.correctionLevel||0;return{L:1,M:0,Q:3,H:2}[e]||0}(),t.SIZE=function(){return t.size||$(a).outerWidth()}(),t.INPUT_MODE=p(t.TEXT),t.canvasImage="";var g=function(e,t,a,n){for(var o=Math.round,r=Math.ceil,l=0;l<a;l++)for(var s=0;s<a;s++){var d=r((s+1)*n)-_Mathfloor(s*n),c=r((l+1)*n)-_Mathfloor(l*n);e.fillStyle=t.isDark(l,s)?"#000":"#fff",e.fillRect(o(s*n),o(l*n),d,c)}},f=function(e,a,n,o,r,l){var s=a.replace(/^\s+|\s+$/g,""),d=new QRCode(n,o,l);d.addData(s),d.make();var c=e.getContext("2d"),p=d.getModuleCount();e.width=e.height=r,m&&(g(c,d,p,r/p),t.canvasImage=e.toDataURL()||"")};t.$watch(function(){return o.$modelValue},function(e,a){(e!==a||e!==t.TEXT)&&(t.text=o.$modelValue,t.TEXT=r(),t.INPUT_MODE=p(t.TEXT),f(u,t.TEXT,t.TYPE_NUMBER,t.CORRECTION,t.SIZE,t.INPUT_MODE))}),f(u,t.TEXT,t.TYPE_NUMBER,t.CORRECTION,t.SIZE,t.INPUT_MODE)}}}]).directive("valid",function(){return{require:"^ngModel",restrict:"A",link:function(e,t,a,n){var o={cpf:CPF,cnpj:CNPJ};n.$validators[a.valid]=function(e,n){var r=e||n,l=o[a.valid].isValid(r);return l?t[0].setCustomValidity(""):t.scope().$applyAsync(function(){t[0].setCustomValidity(t[0].dataset.errorMessage)}),l||!r}}}}).directive("cronappSecurity",["$rootScope",function(e){return{restrict:"A",priority:Number.MIN_SAFE_INTEGER,link:function(t,a,n){if(""==n.cronappSecurity||null==n.cronappSecurity||null==n.cronappSecurity)return;var o=[],r=JSON.parse(localStorage.getItem("_u"));r&&r.roles&&(o=r.roles.toLowerCase().split(","));for(var l,s=parsePermission(n.cronappSecurity),d=!1,c=!1,p=!1,u=0;u<o.length;u++)l=o[u].trim(),l&&(s.visible[l]&&(d=!0),s.enabled[l]&&(c=!0),s.render[l]&&(p=!0));for(var l,u=0;u<o.length;u++)l=o[u].trim(),l&&(s.notvisible[l]&&(d=!1),s.notenabled[l]&&(c=!1),s.notrender[l]&&(p=!1));let m=$(a),g=()=>{d||m.hide(),c||m.find("*").addBack().attr("disabled",!0).off("click").on("click",t=>t.preventDefault()),p||m.remove()},f=setInterval(()=>{"$apply"!==e.$$phase&&"$digest"!==e.$$phase&&(g(),clearInterval(f))})}}}]).directive("cronappStars",[function(){"use strict";return{restrict:"A",require:"ngModel",link:function(e,t,a,n){function o(e){for(var t=1;5>=t;t++)d[t-1].removeClass("ion-android-star-outline"),d[t-1].removeClass("ion-android-star"),t<=e?d[t-1].addClass("ion-android-star"):d[t-1].addClass("ion-android-star-outline");return e}var r=$(t),l=$("<i style=\"font-size: 200%\" class=\"component-holder ion ion-android-star-outline\" style=\"\" xattr-size=\"\" data-component=\"crn-icon\"></i>");r.html("");for(var s,d=[],c=1;5>=c;c++)s=l.clone(),r.append(s),s.attr("idx",c),s.click(function(){e.$apply(function(){n.$viewValue=parseInt($(this).attr("idx")),n.$commitViewValue()}.bind(this))}),d.push(s);n.$parsers.push(o),n.$formatters.push(o)}}}]).directive("cronappRating",[function(){"use strict";return{restrict:"E",require:"ngModel",link:function(e,t,a,n){function o(e){for(var t=1;5>=t;t++)c[t-1].removeClass(a.iconOff||"ion ion-android-star-outline"),c[t-1].removeClass(a.iconOn),c[t-1].removeClass(a.theme),t<=e?(c[t-1].addClass(a.iconOn),c[t-1].addClass(a.theme)):(c[t-1].addClass(a.iconOff||"ion ion-android-star-outline"),c[t-1].addClass(a.theme),c[t-1].addClass(a.iconSize));return e}a.theme=$(t).find("i").attr("xattr-theme"),a.iconOn=$(t).find("i").attr("class"),a.iconSize=$(t).find("i").attr("icon-size");var r=$(t),l=[];a.xattrDefaultValue&&(n.$viewValue=0,n.$commitViewValue());for(var s=1;5>=s;s++)l.push($(t).find("i").get(s-1)),$(l[s-1]).addClass(a.iconOff||"ion ion-android-star-outline");r.html("");for(var d,c=[],s=1;5>=s;s++)d=$(l[s-1]).clone(),r.append(d),d.attr("idx",s),d.click(function(){e.$apply(function(){let e=parseInt($(this).attr("idx"));n.$viewValue=n.$viewValue===e?0:e,n.$commitViewValue()}.bind(this))}),c.push(d);n.$parsers.push(o),n.$formatters.push(o)}}}]).directive("ngInitialValue",["$parse",function(e){return{restrict:"A",require:"ngModel",link:function(t,a,n,o){if(n.ngInitialValue){var r,l=e(n.ngModel),s=l.assign;try{r=t.$eval(n.ngInitialValue)}catch(t){r=n.ngInitialValue}"checkbox"==a[0].type&&r&&(r="true"==(""+r).toLowerCase()),s(t,r)}}}}]).directive("crnAllowNullValues",[function(){return{restrict:"A",require:"?ngModel",link:function(t,a,e,n){n.$formatters=[],n.$parsers=[];let o=!!e.ngFalseValue&&e.ngFalseValue.split("'").join(""),r=!e.ngTrueValue||e.ngTrueValue.split("'").join(""),l=e=>"true"===e||void 0===e||null===e||0==e.length;n.$render=l(e.crnAllowNullValues)?function(){let e=n.$viewValue;a.data("checked",e),!0===e||e===r?(a.prop("indeterminate",!1),setTimeout(()=>a.prop("checked",!0)),e=r):!1===e||e===o?(a.prop("indeterminate",!1),setTimeout(()=>a.prop("checked",!1)),e=o):(e=null,a.prop("indeterminate",!0)),setTimeout(()=>n.$setViewValue(e))}:function(){let l=n.$viewValue;if((void 0===n.$viewValue||null===n.$viewValue)&&(n.$setViewValue(!1),l=!1),l===o){let n=e.ngFalseValue?`${a.attr("ng-model")}=${e.ngFalseValue}`:`${a.attr("ng-model")}=${o}`;t.$eval(n)}switch(a.data("checked",l),l){case!0:case r:a.prop("indeterminate",!1),setTimeout(()=>a.prop("checked",!0)),l=r;break;default:a.prop("indeterminate",!1),setTimeout(()=>a.prop("checked",!1)),l=o;}setTimeout(()=>n.$setViewValue(l))},a.bind("click",function(l){let s;switch(a.data("checked")){case!1:case o:s=!e.ngTrueValue||r;break;default:s=!!e.ngFalseValue&&o;}n.$setViewValue(s),t.$apply(n.$render),l.preventDefault()})}}}]).directive("cronappFilter",["$compile",function($compile){var setFilterInButton=function(e,t,a){var n=e.closest("div");if(n){var o=n.find("button[cronapp-filter]");if(o){var r=o.data("filters");r||(r=[]);var l=-1,s=e.attr("ng-model");if($(r).each(function(e){this.ngModel==s&&(l=e)}),-1<l&&r.splice(l,1),0<t.length){var d={ngModel:s,bindedFilter:t};r.push(d)}o.data("filters",r)}}},makeAutoPostSearch=function(e,t,a,n){var o=e.closest("div");if(o&&0<o.length){var r=o.find("button[cronapp-filter]");if(r&&0<r.length){var l=r.data("filters");l&&0<l.length&&(t="",$(l).each(function(){t+=this.bindedFilter+";"}))}}a.search(t,"true"==n.cronappFilterCaseinsensitive)},inputBehavior=function(scope,element,attrs,ngModelCtrl,$element,typeElement,operator,autopost){var datasource,filterTemplate="",filtersSplited=attrs.cronappFilter.split(";");if(attrs.crnDatasource)datasource=eval(attrs.crnDatasource);else{var fieldset=$element.closest("div");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(){0<this.length&&(""!=filterTemplate&&(isOData?filterTemplate+=" or ":filterTemplate+=";"),isOData?"="==operator&&"text"==typeElement&&""==filterTemplate?filterTemplate="substringof({value.lower}, tolower("+this+"))":"="==operator?filterTemplate+=" substringof({value.lower},tolower("+this+"))":"!="==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}"):"text"==typeElement?filterTemplate+=this+"@"+operator+"%{value}%":filterTemplate+=this+operator+"{value}")}),0==filterTemplate.length&&(isOData?filterTemplate="{value}":filterTemplate="%{value}%"),ngModelCtrl?scope.$watch(attrs.ngModel,function(e,t){if(!angular.equals(e,t)){var a=$element.data("type")||$element.attr("type"),n=ngModelCtrl.$modelValue;isOData?n instanceof Date?"datetime-local"==a?n="datetimeoffset'"+n.toISOString()+"'":n="datetime'"+n.toISOString().substring(0,23)+"'":"number"==typeof n?n=n:"boolean"==typeof n?n=n:n="'"+n+"'":n instanceof Date?(n=n.toISOString(),n+="date"==a?"@@date":"time"==a||"time-local"==a?"@@time":"@@datetime"):"number"==typeof n?n+="@@number":"boolean"==typeof n&&(n+="@@boolean");var o=filterTemplate.split("{value}").join(n);o="string"==typeof n?o.split("{value.lower}").join(n.toLowerCase()):o.split("{value.lower}").join(n),0==ngModelCtrl.$viewValue.length&&(o=""),setFilterInButton($element,o,operator),autopost&&makeAutoPostSearch($element,o,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=""),setFilterInButton($element,bindedFilter,operator),autopost&&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)value=this.value;else if(value=this.value,0<this.value.length){var momentDate=moment(this.value,patternFormat(this));value=momentDate.toDate().toISOString()}var bindedFilter=filterTemplate.split("{value}").join(value);0==value.toString().length&&(bindedFilter=""),setFilterInButton($element,bindedFilter,operator),autopost&&makeAutoPostSearch($element,bindedFilter,datasource,attrs)})},forceDisableDatasource=function(datasourceName,scope){var disableDatasource=setInterval(function(){try{var datasourceInstance=eval(datasourceName);datasourceInstance&&($(document).ready(function(){var e=0,t=setInterval(function(){10>e?(scope.$apply(function(){datasourceInstance.enabled=!1,datasourceInstance.data=[]}),e++):clearInterval(t)},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&&0<datasourceName.length&&filters){var bindedFilter="";$(filters).each(function(){""!=bindedFilter&&(bindedFilter+=isOData?" and ":";"),bindedFilter+=this.bindedFilter});var datasourceToFilter=eval(datasourceName);requiredFilter?(datasourceToFilter.enabled=0<bindedFilter.length,datasourceToFilter.enabled?datasourceToFilter.search(bindedFilter,"true"==attrs.cronappFilterCaseinsensitive):scope.$apply(function(){datasourceToFilter.data=[]})):datasourceToFilter.search(bindedFilter,"true"==attrs.cronappFilterCaseinsensitive)}})};return{restrict:"A",require:"?ngModel",link:function(e,t,a,n){var o=$(t),r=o.data("type")||o.attr("type");a.asDate!=null&&(r="date");var l="=";a.cronappFilterOperator&&0<a.cronappFilterOperator.length&&(l=a.cronappFilterOperator);var s=!0;a.cronappFilterAutopost&&"false"==a.cronappFilterAutopost&&(s=!1),setTimeout(function(){"INPUT"==o[0].tagName?inputBehavior(e,t,a,n,o,r,l,s):buttonBehavior(e,t,a,n,o,r,l,s)},100)}}}]).directive("cronList",["$compile","$parse",function($compile,$parse){"use strict";const defaultAdvancedTemplate=`<ion-list type="" can-swipe="listCanSwipe">
|
|
2
|
-
<ion-item ng-class="{'cron-list-selected' : isChecked(rowData)}" class="item {{options.editableButtonClass}} {{options.iconClassPosition}} {{options.imageClassPosition}}" ng-repeat="rowData in datasource">
|
|
3
|
-
<ul ng-if="options.allowMultiselect" class="checkbox-group component-holder {{'cron-list-multiselect-' + options.imageType}}" data-component="crn-checkbox"><label class="checkbox"><input ng-checked="isChecked(rowData);" type="checkbox"></label></ul>
|
|
4
|
-
<img alt='Thumbnail' ng-if="options.imageType !== 'do-not-show' && rowData[options.fields.image]"
|
|
5
|
-
ng-src="{{options.isImageFromDropbox ? '' : 'data:image/png;base64,'}}{{rowData[options.fields.image]}}" class="{{options.imageToClassPosition}}">
|
|
6
|
-
<div class="{{options.xattrTextPosition}} {{options.textToClassPosition}}">
|
|
7
|
-
<h2 ng-if="rowData[options.fields.field0]">{{rowData[options.fields.field0]|mask:options.fields.mask0:options.fields.type0}}</h2>
|
|
8
|
-
<p class="dark" ng-if="hasValue(rowData[options.fields.field1])">{{rowData[options.fields.field1]|mask:options.fields.mask1:options.fields.type1}}</p>
|
|
9
|
-
<p class="dark" ng-if="hasValue(rowData[options.fields.field2])">{{rowData[options.fields.field2]|mask:options.fields.mask2:options.fields.type2}}</p>
|
|
10
|
-
<p class="dark" ng-if="hasValue(rowData[options.fields.field3])">{{rowData[options.fields.field3]|mask:options.fields.mask3:options.fields.type3}}</p>
|
|
11
|
-
<p class="dark" ng-if="hasValue(rowData[options.fields.field4])">{{rowData[options.fields.field4]|mask:options.fields.mask4:options.fields.type4}}</p>
|
|
12
|
-
<p class="dark" ng-if="hasValue(rowData[options.fields.field5])">{{rowData[options.fields.field5]|mask:options.fields.mask5:options.fields.type5}}</p>
|
|
13
|
-
<i ng-if="options.icon" class="{{options.icon}}" xattr-theme="dark"></i>
|
|
14
|
-
</div>
|
|
15
|
-
</ion-item>
|
|
16
|
-
</ion-list>
|
|
17
|
-
<ion-infinite-scroll></ion-infinite-scroll>`,defaultSearchTemplate="<div class=\"item item-input-inset\">\n <div class=\"item-input-wrapper\">\n <i class=\"icon ion-search placeholder-icon\"></i>\n <input aria-label=\"{{'template.crud.search' | translate}}\" type=\"text\" ng-model=\"vars.searchableList[options.randomModel]\" cronapp-filter=\"{{options.filterFields}}\" cronapp-filter-operator=\"\" cronapp-filter-caseinsensitive=\"false\"\n cronapp-filter-autopost=\"true\" crn-datasource=\"{{options.dataSourceScreen.name}}\" placeholder=\"{{'template.crud.search' | translate}}\">\n </div>\n <button ng-if=\"showButton()\" ng-click=\"limparSelecao()\"\n class=\"button-small cron-list-button-clean button button-inline button-positive component-holder\">\n <span cron-list-button-text>Limpar Sele\xE7\xE3o</span></button>\n</div>";var getExpression=function(e){return"rowData in ".concat(e).concat(".data")},buildFormat=function(e){var t="";return t=" | mask: \""+e.type+"\"",e.format&&(t=" | mask: \""+e.format+"\":\""+e.type+"\""),t},getEditCommand=function(e){return e+".startEditing(rowData)"},getCronappSecurity=function(e){return e.security?`cronapp-security="${e.security}"`:""},addDefaultButton=function(e,t){const a="<ion-option-button "+getCronappSecurity(t)+" class=\"button-positive ion-edit button-edit\" ng-click=\""+getEditCommand(e)+"\"><span> {{\"Permission.view.Edit\" | translate}}</span></ion-option-button>",n="<ion-option-button "+getCronappSecurity(t)+" class=\"button-assertive ion-trash-a button-delete\" ng-click=\""+e+".remove(rowData)\"><span> {{\"Permission.view.Remove\" | translate}}</span></ion-option-button>";if("edit|destroy"==t.command)return a.concat(n);return"edit"==t.command?a:"destroy"==t.command?n:void 0},encodeHTML=function(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},generateBlocklyCall=function(e){var t;if("client"==e.type){var a=e.blocklyClass.split("/"),n=a[a.length-1];t="blockly.js.blockly."+n,t+="."+e.blocklyMethod;var o="()";0<e.blocklyParams.length&&(o="(",e.blocklyParams.forEach(function(e){o+=(e.value?encodeHTML(e.value):"''")+","}.bind(this)),o=o.substr(0,o.length-1),o+=")"),t+=o}else if("server"==e.type){var n=e.blocklyClass+":"+e.blocklyMethod;t="cronapi.util.makeCallServerBlocklyAsync('"+n+"',null,null,",0<e.blocklyParams.length&&e.blocklyParams.forEach(function(e){t+=(e.value?encodeHTML(e.value):"''")+","}.bind(this)),t=t.substr(0,t.length-1),t+=")"}return t},addBlockly=function(e){return"<ion-option-button class=\"button-dark "+getCronappSecurity(e)+" ion-navigate\" ng-click=\""+generateBlocklyCall(e.blocklyInfo)+"\"></ion-option-button>"},isImage=function(e,t){for(var a,n=0;n<t.length;n++)if(a=t[n],e==a.name)return"Binary"==a.type;return!1},addCustomButton=function(e){return`<ion-option-button ${getCronappSecurity(e)} class="button-dark ${e.iconClass}" ng-click="listButtonClick($index, rowData, '${window.stringToJs(e.execute)}', $event)">${e.label}</ion-option-button> `};return{restrict:"E",require:"?ngModel",scope:!0,priority:9999998,terminal:!0,link:function(scope,element,attrs,ngModelCtrl){scope.hasValue=e=>null!==e&&e!==void 0;var optionsList={},dataSourceName="",buttons="";try{optionsList=JSON.parse(attrs.options),dataSourceName=optionsList.dataSourceScreen.name;var dataSource=eval(optionsList.dataSourceScreen.name),imageDirection=optionsList.imagePosition?optionsList.imagePosition:"left",iconDirection=optionsList.iconPosition?optionsList.iconPosition:"right",bothDirection="left"===imageDirection&&"left"===iconDirection?"left":"right"===imageDirection&&"right"===iconDirection?"right":"",checkboxTemplate="",modelArrayToInsert=[],isKey=!1;if(scope.options=optionsList,attrs.ngModel){var modelGetter=$parse(attrs.ngModel),modelSetter=modelGetter.assign;optionsList.allowMultiselect?(scope.verifyIsKey=function(e){return isKey=!1,optionsList.fieldType&&"key"===optionsList.fieldType&&(e=this.changeRowDataField(e),isKey=!0),e},scope.limparSelecao=function(){modelSetter(scope,[])},scope.isChecked=function(e){let t=!1;return modelArrayToInsert=modelGetter(scope),e=scope.verifyIsKey(e),t=scope.hasObjectChecked(isKey,e,null,event),scope.isSelected=t,t},scope.hasObjectChecked=function(e,t,a,n){let o=!1;return Array.isArray(modelArrayToInsert)&&(e&&"object"!=typeof t?modelArrayToInsert.forEach((e,a)=>{t===e&&(o=!0)}):modelArrayToInsert.forEach((e,a)=>{dataSource.objectIsEquals(t,e)&&(o=!0)})),o},scope.checkboxButtonClick=function(e,t,a,n){let o=!1,r=$(n.currentTarget),l=r.find("input[type=checkbox]:checked").length;modelArrayToInsert=modelGetter(scope),Array.isArray(modelArrayToInsert)||(modelArrayToInsert=[]),$(n.target).is("input[type=checkbox]")||a||(0<l?r.find("input[type=checkbox]").prop("checked",!1):r.find("input[type=checkbox]").prop("checked",!0));let s=$(n.currentTarget).find("input[type=checkbox]");t=scope.verifyIsKey(t),$(s).is(":checked")?(o=scope.hasObjectChecked(isKey,t,a,n),!o&&modelArrayToInsert.push(t)):isKey&&"object"!=typeof t?modelArrayToInsert.forEach((e,a)=>{t===e&&modelArrayToInsert.splice(a,1)}):modelArrayToInsert.forEach((e,a)=>{dataSource.objectIsEquals(t,e)&&modelArrayToInsert.splice(a,1)}),modelSetter(scope,modelArrayToInsert),n.stopPropagation()}):scope.setRowDataModel=function(e,t,a,n){optionsList.fieldType&&"key"===optionsList.fieldType&&(t=this.changeRowDataField(t)),modelSetter(scope,t)},scope.changeRowDataField=function(e){e=dataSource.getKeyValues(e);var t=Object.keys(e);return 1===t.length&&(e=e[t]),e}}scope.listButtonClick=function(e,t,a,n){if("INPUT"!=n.target.tagName){dataSource.goTo(t);var o={item:t,index:e},r={currentData:dataSource.data,datasource:dataSource,selectedIndex:e,index:e,selectedRow:t,consolidated:o,item:t,selectedKeys:dataSource.getKeyValues(dataSource.active,!0)};scope.$eval(a,r),n.preventDefault(),n.stopPropagation()}};var searchableField=null,isNativeEdit=!1,addedImage=!1;scope.options=optionsList,scope.options.fields={},scope.options.isImageFromDropbox=!1,scope.options.editableButtonClass="",scope.options.itemContentClass="",scope.options.itemSimple="",scope.options.filterFields="",scope.options.randomModel=_Mathfloor(9e3*Math.random())+1e3,optionsList.imagePosition||(scope.options.imagePosition="left"),optionsList.iconPosition||(scope.options.iconPosition="right"),optionsList.imageType||(scope.options.imageType="avatar");for(var column,imageDirection=optionsList.imagePosition?optionsList.imagePosition:"left",iconDirection=optionsList.iconPosition?optionsList.iconPosition:"right",bothDirection="left"===imageDirection&&"left"===iconDirection?"left":"right"===imageDirection&&"right"===iconDirection?"right":"",visibleColumns=[],i=0;i<optionsList.columns.length;i++)column=optionsList.columns[i],column.visible&&visibleColumns.push(optionsList.columns[i]);for(var column,i=0;i<visibleColumns.length;i++)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,!addedImage&&isImage(column.field,optionsList.dataSourceScreen.entityDataSource.schemaFields)&&"do-not-show"!==optionsList.imageType?(scope.options.fields.image=column.field,delete scope.options.fields["field"+i],addedImage=!0,scope.options.isImageFromDropbox=!1):addedImage||"image"!=column.type?column.filterable&&(searchableField=null==searchableField?column.field:searchableField+";"+column.field):(scope.options.fields.image=column.field,delete scope.options.fields["field"+i],addedImage=!0,scope.options.isImageFromDropbox=!0)):("Command"==column.dataType||"Blockly"==column.dataType||"Customized"==column.dataType)&&(scope.options.editableButtonClass="item-complex item-right-editable","Command"==column.dataType?(scope.options.fields["field"+i]=column.field,buttons=buttons.concat(addDefaultButton(dataSourceName,column)),("edit"==column.command||"edit|destroy"==column.command)&&(isNativeEdit=!0)):"Blockly"==column.dataType?buttons=buttons.concat(addBlockly(column)):"Customized"==column.dataType&&(buttons=buttons.concat(addCustomButton(column))))}catch(e){console.log("CronList invalid configuration! "+e)}scope.options.editableButtonClass||addedImage?!scope.options.editableButtonClass&&addedImage&&(scope.options.itemContentClass="item-content",scope.options.editableButtonClass="item-complex",scope.options.itemSimple=""):(scope.options.itemContentClass="item-content",scope.options.itemSimple="item-simple"),scope.options.fields.image&&"do-not-show"!=scope.options.imageType&&(scope.options.imageClassPosition="item-"+scope.options.imageType+"-"+scope.options.imagePosition),addedImage||(scope.options.imageType="do-not-show"),scope.options.icon&&scope.options.iconPosition&&scope.options.imageType&&(scope.options.iconClassPosition="item-icon-"+scope.options.iconPosition),bothDirection&&scope.options.icon&&scope.options.imagePosition&&scope.options.imageType&&(scope.options.imageToClassPosition="image-to-"+scope.options.imagePosition+"-"+scope.options.imageType,scope.options.textToClassPosition="text-to-"+scope.options.iconPosition+"-"+scope.options.imageType),scope.options.advancedTemplate||(scope.options.advancedTemplate=defaultAdvancedTemplate),scope.options.searchTemplate||(scope.options.searchTemplate=defaultSearchTemplate);var templateDyn=null;searchableField?(scope.options.filterFields=searchableField,templateDyn=scope.options.searchTemplate+scope.options.advancedTemplate):templateDyn=scope.options.advancedTemplate;for(let e,t=0;t<visibleColumns.length;t++)if(e=visibleColumns[t],e.field&&"Database"===e.dataType&&scope.options.fields[`security${t}`]){let e=`ng-if="rowData[options.fields.field${t}]"`,a=`${e} cronapp-security="${scope.options.fields["security"+t]}"`;templateDyn=templateDyn.replace(e,a)}templateDyn=$(templateDyn),scope.options.xattrTextPosition=attrs.xattrTextPosition,templateDyn.attr("type",optionsList.listType),$(element).replaceWith(templateDyn);var $element=templateDyn,ionItem=$element.find("ion-item");"rowData in datasource"===$(ionItem).attr("ng-repeat")&&ionItem.attr("ng-repeat",getExpression(dataSourceName)),isNativeEdit&&ionItem.attr("ng-click",getEditCommand(dataSourceName));var ngClickAttrTemplate="",ngClickAttrTemplateCheckbox="";optionsList.allowMultiselect?(attrs.ngModel&&(ngClickAttrTemplateCheckbox="checkboxButtonClick($index, rowData, '"+window.stringToJs(attrs.ngClick)+"', $event);"),checkboxTemplate=$element.find("ul"),attrs.ngClick&&(checkboxTemplate=$(checkboxTemplate).attr("ng-click",ngClickAttrTemplateCheckbox).get(0).outerHTML,ngClickAttrTemplate=ngClickAttrTemplate+"listButtonClick($index, rowData, '"+window.stringToJs(attrs.ngClick)+"', $event);"),ionItem.attr("ng-click",ngClickAttrTemplateCheckbox+ngClickAttrTemplate)):(attrs.ngModel&&(ngClickAttrTemplate="setRowDataModel($index, rowData, '"+window.stringToJs(attrs.ngClick)+"', $event);"),attrs.ngClick&&(ngClickAttrTemplate=ngClickAttrTemplate+"listButtonClick($index, rowData, '"+window.stringToJs(attrs.ngClick)+"', $event);"),ionItem.attr("ng-click",ngClickAttrTemplate)),attrs.onDoubleTap&&ionItem.attr("on-double-tap",attrs.onDoubleTap),attrs.onHold&&ionItem.attr("on-hold",attrs.onHold),attrs.onTap&&ionItem.attr("on-tap",attrs.onTap),attrs.onSwipe&&ionItem.attr("on-swipe",attrs.onSwipe);const attrsExcludeds=["options","ng-repeat","ng-click"],filteredItems=Object.values(attrs.$attr).filter(function(e){return!attrsExcludeds.includes(e)});for(let e in filteredItems)ionItem.attr(filteredItems[e],attrs[e]);ionItem.append(buttons);var firstScroll=!0;scope.nextPageInfinite=function(){return $element.find("ion-item").length<dataSource.data.length||0==dataSource.data.length?void scope.$broadcast("scroll.infiniteScrollComplete"):void(($element.find("ion-item").length==dataSource.data.length||dataSource.isOfflineMode())&&(firstScroll?(scope.$broadcast("scroll.infiniteScrollComplete"),firstScroll=!1):dataSource.nextPage(function(){scope.$broadcast("scroll.infiniteScrollComplete")})))};var infiniteScroll=$element.filter(function(e){return $(this).is("ion-infinite-scroll")});infiniteScroll.attr("on-infinite","nextPageInfinite()"),infiniteScroll.attr("distance","1%"),scope.showButton=function(){if(optionsList.allowMultiselect){var e=modelGetter(scope);if(null!==e&&e!==void 0)return 0<e.length}return!1},$compile(templateDyn,null,9999998)(scope)}}}]).directive("cronInfiniteScroll",["$compile",function($compile){"use strict";return{restrict:"EA",link:function(scope,element,attrs){var dataSource=attrs.cronInfiniteScroll?eval(attrs.cronInfiniteScroll):attrs.crnDatasource?eval(attrs.crnDatasource):void 0;if(dataSource){scope.nextPageInfinite=function(){dataSource.nextPage(),scope.$broadcast("scroll.infiniteScrollComplete")};var templateDyn=$("<ion-infinite-scroll></ion-infinite-scroll>");$(element).html(templateDyn);var infiniteScroll=$(element).find("ion-infinite-scroll");infiniteScroll.attr("on-infinite","nextPageInfinite()"),infiniteScroll.attr("distance","1%"),$compile(templateDyn)(element.scope())}}}}]).filter("raw",["$translate",function(e){return function(e){if(null!=e&&e!==void 0){if("number"==typeof e)return e+"";if("boolean"==typeof e)return e+"";if(e instanceof Date)var t="datetimeoffset'"+e.toISOString()+"'";else return 10<=e.length&&e.match(ISO_PATTERN)?"datetimeoffset'"+e+"'":"'"+e.replaceAll("'","''")+"'"}else return""}}]).directive("xkeyField",["$compile",function(e){"use strict";return{restrict:"A",link:function(t,a,n){if(n.xkeyField&&n.xdisplayField){var o="";n.crnDatasource&&(o=n.crnDatasource),a.removeAttr("xkey-field"),a.removeAttr("xdisplay-field"),a.append("<option ng-repeat=\"opt in "+o+".data\" value=\"{{opt."+n.xkeyField+"}}\">{{opt."+n.xdisplayField+"}}</option>"),e($(a))(t)}}}}]).directive("cronMobileMenu",["$compile","$translate",function(e,t){"use strict";var a=function(e){var a="";return e&&null!=e&&e.subMenuOptions&&null!=e.subMenuOptions&&Array.isArray(e.subMenuOptions)&&e.subMenuOptions.forEach(function(e){var n=e.security&&null!=e.security?" cronapp-security=\""+e.security+"\" ":"",o=e.action&&null!=e.action?" ng-click=\""+e.action+"\" ":"",r=e.hide&&null!=e.hide?" ng-hide=\""+e.hide+"\" ":"",l=e.iconClass&&null!=e.iconClass?e.iconClass:"",s=e.imagePosition&&null!=e.imagePosition?"item-icon-"+e.imagePosition:"",d=e.textPosition&&null!=e.textPosition?"text-"+e.textPosition:"",c=e.contentTheme&&null!=e.contentTheme?e.contentTheme:"",p=e.iconTheme&&null!=e.iconTheme?e.iconTheme:"",u=t.instant(e.title);a=a+" <a menu-close=\"\" class=\"item "+s+"\" "+o+n+r+"> <i class=\""+l+" "+p+"\" style=\"font-size: 150%\"></i> <div class=\"item-content "+d+"\"> <h2 class=\""+c+"\">"+u+"</h2> </div> </a> "}),a};return{restrict:"EA",link:function(t,n,o){o.$observe("options",function(o){var r="<ul class=\"nav navbar-nav\" style=\"float:none\"></ul>",l={};try{l=JSON.parse(o)}catch(t){console.log("CronMobileMenu: Invalid configuration!")}var s=$("<ul class=\"nav navbar-nav\" style=\"float:none\"></ul>"),d=a(l);s.append(d);var c=angular.element(s);n.html(""),n.append(s),n.attr("id",null),e(c)(t)})}}}]).directive("srcLazy",["$compile",function(e){"use strict";return{restrict:"A",link:function(e,t,a){var n=$(t);setTimeout(function(){return n.is(":appeared")?void t.attr("src",a.srcLazy):void(a.srcLazyPreview?n.attr("src",a.srcLazyPreview):n.css("visibility","hidden"),n.appear(),n.on("appear",function(e,t){n.attr("src-lazy")&&(!a.srcLazyPreview&&n.css("visibility","visible"),console.log(a.srcLazy),n.attr("src",a.srcLazy),n.attr("src-lazy",""))}))},100),e.$on("$destroy",function(){n.appearStop()})}}}]).directive("crnSkin",["$compile","$http",function(e,t){return{restrict:"A",link:function(e,a,n,o){n.crnSkin&&t.get(n.crnSkin,{cache:!0}).then(e=>{if(e.data){let t=e.data;t.startsWith(":root{")&&(t=t.substring(6)),t.endsWith("}")&&(t=t.substring(0,t.length-2)),$element=$(a);let n=$element.attr("style")||"";n&&(n+=", "),n+=t,$element.attr("style",n)}})}}}]).directive("cronMap",["$compile",function(e){return{restrict:"AE",replace:!0,link:function(t,a,n){var o=a.find(".cronMap")[0];e(o)(a.scope());var r=a.find(".cronMapIframe")[0];e(r)(a.scope());var l="",s=n.src,d=n.width,c=n.height;l=`<iframe class="cronMapIframe" src="${s}" width="${d}" height="${c}" style="border:0;" allowfullscreen="" loading="lazy"></iframe>`,a.html(l),e(l)(a.scope())}}}]).directive("signaturePad",["$compile","$window",function(e,t){"use strict";var a,n,o=null;return{restrict:"E",require:"ngModel",scope:!0,replace:!0,transclude:!0,template:"<div style=\"height: 200px; 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=\"button button-block button-medium filled button-energized col-xs-3\" ng-click=\"clear()\"> <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 a=()=>{let e=t.signaturePad.toDataURL();return e&&(e=e.split(",")[1]),e};t.mouseup=function(n){t.signaturePad.isEmpty()||(t.ngModel=a())},t.$watch("ngModel",function(e,n){e!==n&&(a()!==e&&t.signaturePad.fromDataURL("data:image/png;base64,"+e,{ratio:1}),t.ngModel=e)},!0),t.clear=function(){t.signaturePad.clear(),t.ngModel=null}}],link:function(n,o,r,l,s){a=o.find("canvas")[0],n.onResize=function(){var e=Math.max(t.devicePixelRatio||1,1),a=o.find("canvas")[0],n=document.createElement("canvas");n.width=a.width,n.height=a.height;var r=n.getContext("2d");0!=a.width&&0!=a.height&&r.drawImage(a,0,0),a.width=a.offsetWidth*e,a.height=a.offsetHeight*e,0!=n.width&&0!=n.height&&a.getContext("2d").drawImage(n,0,0),a.getContext("2d").scale(e,e)},n.onResize(),n.signaturePad=new SignaturePad(a),angular.element(t).on("resize",function(){n.onResize()}),e(o)(o.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,s(()=>angular.element(a).triggerHandler("mouseup")))})}}}]).directive("cronFrame",cronFrame).directive("crnFrame",cronFrame).directive("crnComponent",cronFrame).directive("cronVideo",["$compile",function(e){return{restrict:"AE",replace:!0,link:function(t,a,n){var o=a.find(".cronVideo")[0];e(o)(a.scope());var r=a.find(".cronVideoIframe")[0];e(r)(a.scope());var l="",s=n.src,d=n.width,c=n.height,p=n.title;l=`<iframe class="cronVideoIframe" src="${s}" width="${d}" height="${c}" title="${p}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen> </iframe>`,a.html(l),e(l)(a.scope())}}}]).directive("cronSelect",["$compile",function(e){return{restrict:"E",replace:!0,require:"ngModel",link:async function(e,t,a,n){let o={};try{o=JSON.parse(a.options)}catch(e){console.error("ComboBox invalid configuration! "+e)}let r=a.id?" id=\""+a.id+"\"":"",l=a.name?" name=\""+a.name+"\"":"",s=t.parent();$(s).append("<input style=\"width: 100%;\" "+r+l+" class=\"cronSelect\"/>");let d=$(s).find("input.cronSelect"),c=a.cronDisabled,p=await app.kendoHelper.getConfigCombobox(o,e);p.close=a.ngClose?function(){e.$eval(a.ngClose)}:void 0,p.dataBound=a.ngDataBound?function(){e.$eval(a.ngDataBound)}:void 0,p.filtering=a.ngFiltering?function(){e.$eval(a.ngFiltering)}:void 0,p.select=a.ngSelect?function(){e.$eval(a.ngSelect)}:void 0,p.change=function(){f.$apply(function(){h.$setViewValue(this.value())}.bind(u))},p.messages={noData:a.noResultsMessage?a.noResultsMessage:"NO DATA FOUND"};let u;u=!0===o.dontAllowOutsideList?d.kendoDropDownList(p).data("kendoDropDownList"):d.kendoComboBox(p).data("kendoComboBox"),$(t).remove();let m,g=()=>{if(m=$(s).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 e=m.parent();m.on("change",()=>{"true"===a.ngRequired&&(0==m.val().length?(e.addClass("ng-invalid-required"),m.addClass("ng-invalid-required")):(e.removeClass("ng-invalid-required"),m.removeClass("ng-invalid-required")))})}else setTimeout(()=>g())};g(),c?u.enable(!1):u.enable(!0);let f=e,h=n,v=!0;n&&(n.$formatters.push(function(t){let n="";return("boolean"==typeof t||t)&&(n=t),u.value(n),!v&&a.ngChange&&e.$eval(a.ngChange),v=!1,u.value(n),n}),n.$parsers.push(function(e){return m&&m.trigger("change"),"boolean"==typeof e||e?e:null}))}}}]),app.directive("kendoChat",["$compile","$timeout",function(e,t){return{restrict:"E",link:function(e,a,n){function o(){let e=$(".k-chat");e.height($(window).height()-e.offset().top)}let r=n.ngOnPostMessage,l=n.ngOnSendMessage,s=n.ngOnTypingEnd,d=n.ngOnTypingStart,c=n.ngOnActionClick,p=n.chatUserId,u=n.chatUsername,m=n.chatUserImage,g=n.chatPlaceholder,f=localStorage.getItem("_u")===void 0?null:JSON.parse(localStorage.getItem("_u")),h=window.navigator.userAgent,v="";f&&f.user&&(v=f.user.name);let y=$("<div></div>");y.kendoChat({messages:{placeholder:g},user:{id:p||h,name:u||v,iconUrl:m}}),chat=y.data("kendoChat"),chat.bind("post",t=>{if(r)try{let a={chatMessage:t};e.$eval(r,a)}catch(t){console.error(t)}}),chat.bind("sendMessage",t=>{if(l)try{let a={chatMessage:t};e.$eval(l,a)}catch(t){console.error(t)}}),chat.bind("typingStart",t=>{if(d)try{let a={chatMessage:t};e.$eval(d,a)}catch(t){console.error(t)}}),chat.bind("typingEnd",t=>{if(s)try{let a={chatMessage:t};e.$eval(s,a)}catch(t){console.error(t)}}),chat.bind("actionClick",t=>{if(c)try{let a={chatMessage:t};e.$eval(c,a)}catch(t){console.error(t)}}),a.empty().append(y),$(window).resize(()=>{o()}),t(()=>{o()})}}}])}(app),function(e){function t(){return e(this).is(":appeared")}function a(){return!e(this).data("_appear_triggered")}function n(){l=!1;for(var n,o=0,s=r.length;o<s;o++){if(n=e(r[o]).filter(t),n.filter(a).data("_appear_triggered",!0).trigger("appear",[n]),c[o]){var d=c[o].not(n);d.data("_appear_triggered",!1).trigger("disappear",[d])}c[o]=n}}function o(e){r.push(e),c.push()}var r=[],l=!1,s={interval:250,force_process:!1},d=e(window),c=[];e.expr.pseudos.appeared=e.expr.createPseudo(function(t){return function(t){var a=e(t),n=d.scrollLeft(),o=d.scrollTop(),r=a.offset(),l=r.left,s=r.top;return!!(s+a.height()>=o&&s-(a.data("appear-top-offset")||0)<=o+d.height()&&l+a.width()>=n&&l-(a.data("appear-left-offset")||0)<=n+d.width())}}),e.fn.extend({appear:function(t,a){return e.appear(this,a),this}}),e.fn.extend({appearStop:function(t,a){return e.appearStop(this,a),this}}),e.extend({appearStop:function(e,t){var a=-1;for(i=0;i<r.length;i++)if(r[i].get(0)==e.get(0)){a=i;break}-1!=a&&r.splice(a)},appear:function(t,a){var r=e.extend({},s,a||{}),d=e("ion-content");if(d.length){if(!d.get(0).checkBinded){var c=function(){l||(l=!0,setTimeout(n,r.interval))};d.scroll(c).resize(c),d.get(0).checkBinded=!0}r.force_process&&setTimeout(n,r.interval),o(t)}}})}(function(){return"undefined"==typeof module?jQuery:require("jquery")}());function maskDirectiveAsDate(e,t,a){return maskDirective(e,t,"as-date",a)}function maskDirectiveMask(e,t,a){return maskDirective(e,t,"mask",a)}function maskDirective(e,t,a,n){return{restrict:"A",require:"?ngModel",link:function(e,o,r,l){var s=n(r.ngModel),d=s.assign;if("as-date"!=a||void 0===r.mask){var c=$(o),p=c.attr("type");if("checkbox"!=p&&"password"!=p){c.data("type",p),c.attr("type","text"),l&&(l.$formatters=[],l.$parsers=[]),void 0!==r.asDate&&"text"==p&&(p="date");var u=!0,m=!1,g=r.mask||r.format;g=g?parseMaskType(g,t):parseMaskType(p,t),g.endsWith(";0")&&(m=!0);var f=g.replace(";1","").replace(";0","").replace(";local","").trim(),h=r.keyboard,v=t.instant("keyboardDecimalChar")&&1==t.instant("keyboardDecimalChar").length?t.instant("keyboardDecimalChar"):",";if(h&&parseKeyboardType(h,v,c),null!=f&&0!=f.length){if("date"==p||"datetime"==p||"datetime-local"==p||"month"==p||"time"==p||"time-local"==p||"week"==p){var y="date"==p||"datetime"==p||"time"==p;window.fixedTimeZone||(y=!1),"date"==p?(f=moment.HTML5_FMT.DATE,c.attr("type","date")):"month"==p?(f=moment.HTML5_FMT.MONTH,c.attr("type","month")):"week"==p?(f=moment.HTML5_FMT.WEEK,c.attr("type","week")):"datetime"==p||"datetime-local"==p?(f=moment.HTML5_FMT.DATETIME_LOCAL,c.attr("type","datetime-local")):("time"==p||"time-local"==p)&&(f=moment.HTML5_FMT.TIME,c.attr("type","time")),l&&(l.$formatters.push(function(e){return e?y?moment(e).utcOffset(window.timeZoneOffset).format(f):moment(e).format(f):null}),l.$parsers.push(function(e){return e?y?moment(e,f).utcOffset(window.timeZoneOffset,!0).toDate():moment(e,f).toDate():new Date(e)}))}else if("number"==p||"money"==p||"integer"==p||"money-decimal"==p){m=!0,u=!1;var b=f.trim().replace(/\./g,"").replace(/\,/g,"").replace(/#/g,"").replace(/0/g,"").replace(/9/g,"");h||("integer"==p||"money-decimal"==p?h="integer":h="number");var k="",x="",T="",M=",",w=0;f.startsWith(b)?k=b:f.endsWith(b)&&(x=b);var C=f.trim().replace(k,"").replace(x,"").trim();C.startsWith("#.")?T=".":C.startsWith("#,")&&(T=",");var S=null;if(-1==C.indexOf(",0")?-1!=C.indexOf(".0")&&(M=".",S=".0"):(M=",",S=",0"),null!=S){var D=C.substring(C.indexOf(S)+1);w=D.length}var F="numeric";0==w&&(F="integer");var P={rightAlign:"money"==p||"money-decimal"==p,unmaskAsNumber:!0,allowMinus:"money"!=p&&"money-decimal"!=p,prefix:k,suffix:x,radixPoint:M,digits:w,numericInput:"money-decimal"==p};T&&(P.autoGroup=!0,P.groupSeparator=T),"money-decimal"==p&&(F="currency"),$(o).inputmask(F,P),useInputMaskPlugin(o,l,e,d,f)}else"text"==p||"tel"==p?(h||"tel"!=p||(h="tel"),r.maskPlaceholder?(options={},options.placeholder=r.maskPlaceholder,$(o).inputmask(f,options),$(o).off("keypress"),m&&useInputMaskPlugin(o,l,e,d,f)):(c.mask(f),useMaskPlugin(o,l,e,d,m))):("email"==p||"password"==p||"search"==p)&&(h||(h=p));h&&parseKeyboardType(h,v,c)}}}}}}function useInputMaskPlugin(e,t,a,n,o){var r=$(e),l=function(t){var o=$(this).inputmask("unmaskedvalue");$(this).data("rawvalue",o),e._ignoreFormatter=!0,a.safeApply(function(){n(a,o)})};$(e).off("keypress"),$(e).on("keyup",l),t&&(t.$formatters.push(function(t){return e._ignoreFormatter?(e._ignoreFormatter=!1,$(e).val()):(e._ignoreFormatter=!1,null!=t&&null!=t&&""!==t?format(o,t):null)}),t.$parsers.push(function(e){if(e!=null&&null!=e&&""!==e){var t=r.inputmask("unmaskedvalue");if(""!==t)return t}return null}))}function useMaskPlugin(e,t,a,n,o){var r=$(e),l=function(){o&&$(this).data("rawvalue",$(this).cleanVal())};$(e).on("keydown",l).on("keyup",l),o&&t&&(t.$formatters.push(function(e){return e?r.masked(e):null}),t.$parsers.push(function(e){return e?r.cleanVal():null}))}function parseKeyboardType(e,t,a){("integer"==e||"number"==e||"tel"==e)&&(a.attr("pattern","\\d*"),a.attr("inputmode","decimal")),("tel"==e||"email"==e||"search"==e||"password"==e)&&a.attr("type",e),"ios"===cordova.platformId&&"number"==e&&(a.attr("decimal","true"),a.attr("allow-multiple-decimals","true"),a.attr("decimal-char",t))}function parseMaskType(e,t){return"datetime"==e||"datetime-local"==e?(e=t.instant("Format.DateTime"),"Format.DateTime"==e&&(e="DD/MM/YYYY HH:mm:ss")):"date"==e?(e=t.instant("Format.Date"),"Format.Date"==e&&(e="DD/MM/YYYY")):"time"==e||"time-local"==e?(e=t.instant("Format.Hour"),"Format.Hour"==e&&(e="HH:mm:ss")):"month"==e?e="MMMM":"number"==e?(e=t.instant("Format.Decimal"),"Format.Decimal"==e&&(e="0,00")):"money"==e||"money-decimal"==e?(e=t.instant("Format.Money"),"Format.Money"==e&&(e="#.#00,00")):"integer"==e?e="0":"week"==e?e="dddd":"tel"==e?e="(99) 99999-9999;0":"text"==e?e="":"string"==e&&(e=""),e}function transformText(){return{restrict:"E",require:"?ngModel",link:function(e,t,a,n){let o=function(e,t){if(e&&t&&("string"==typeof t||t instanceof String)){if("uppercase"===e.css("text-transform"))return t.toUpperCase();if("lowercase"===e.css("text-transform"))return t.toLowerCase()}return t};n&&(n.$formatters.push(function(e){return o(t,e)}),n.$parsers.push(function(e){return o(t,e)}))}}}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 e in params){let t=params[e];"expression"==t.type?scope.$watch(t.value,function(e){framentMap[t.key]=e;var a=$(str);a.attr("onload",`params = ${JSON.stringify(framentMap)}`);var n=$compile(a)(scope);element.html(n)}):framentMap[t.key]=t.value}template.attr("onload",`params = ${JSON.stringify(framentMap)}`)}catch(e){console.error(e)}}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>`)}let html=angular.element(template);html=$compile(html)(scope),element.html(""),element.append(html)})}}}app.kendoHelper={parseOptionsCronToConfigKendo:function(e,t,a){let n=!1;e.dynamic&&"false"!=e.dynamic?e.dataSourceScreen&&e.dataSourceScreen.entityDataSource&&(e.dataSourceScreen.entityDataSource.append=!0,t=app.kendoHelper.getDataSource(e.dataSourceScreen.entityDataSource,a,!0,e.dataSourceScreen.rowsPerPage),t.transport.read=app.kendoHelper.getEventReadCombo,n=!0):(n=!0,e.dataValueField=e.dataValueField||"value",e.dataTextField=e.dataTextField||"key"),e.dataValueField&&""!=e.dataValueField.trim()||(e.dataValueField=null==e.dataTextField?void 0:e.dataTextField);var o=function(t){var a=e.dataSourceScreen.entityDataSource.schemaFields;for(count=0;count<a.length;count++)if(t==a[count].name){return a[count].type.toLowerCase();break}return null},r=function(e){var t=["date","time","datetime"];return-1<t.indexOf(e)?e:null};!e.customTemplate&&e.dataSourceScreen&&e.dataSourceScreen.entityDataSource&&e.dataSourceScreen.entityDataSource.schemaFields&&(e.format||r(o(e.dataTextField)))&&(e.template="#= useMask("+e.dataTextField+",'"+e.format+"','"+o(e.dataTextField)+"') #",e.valueTemplate="#= useMask("+e.dataTextField+",'"+e.format+"','"+o(e.dataTextField)+"') #");var l={dataTextField:null==e.dataTextField?void 0:e.dataTextField,dataValueField:null==e.dataValueField?void 0:e.dataValueField,dataSource:t,headerTemplate:null==e.headerTemplate?void 0:e.headerTemplate,template:null==e.template?void 0:e.template,placeholder:null==e.placeholder?void 0:e.placeholder,footerTemplate:null==e.footerTemplate?void 0:e.footerTemplate,filter:null==e.filter?void 0:e.filter,valuePrimitive:n,valueTemplate:null==e.valueTemplate?void 0:e.valueTemplate,suggest:!0};return e.optionLabel&&(e.optionLabelText=e.optionLabel,e.optionLabelValue=""),l.optionLabel={},l.optionLabel[l.dataTextField]=void 0===e.optionLabelText?"":e.optionLabelText,l.optionLabel[l.dataValueField]=void 0===e.optionLabelValue?null:e.optionLabelValue,l},getConfigCombobox:async function(e,t){let a={};if(e){if(!e.dynamic||"false"==e.dynamic){a.data=null==e.staticDataSource?void 0:e.staticDataSource;for(let n=0;n<a.data.length;n++)try{a.data[n].key&&a.data[n].key.startsWith("cronapi.server(")&&(a.data[n].key=a.data[n].key.replace(".run(",".toPromise().run("));let e=await t.$eval(a.data[n].key);a.data[n].key=void 0!==e&&null!==e?e:a.data[n].key}catch(t){a.data[n].key=a.data[n].key}}return config=this.parseOptionsCronToConfigKendo(e,a,t),config}return{}}};
|
|
1
|
+
function maskDirectiveAsDate(e,t,a){return maskDirective(e,t,"as-date",a)}function maskDirectiveMask(e,t,a){return maskDirective(e,t,"mask",a)}function maskDirective(e,t,a,n){return{restrict:"A",require:"?ngModel",link:function(e,o,r,l){var s=n(r.ngModel).assign;if("as-date"!=a||void 0===r.mask){var c=$(o),d=c.attr("type");if("checkbox"!=d&&"password"!=d){c.data("type",d),c.attr("type","text"),l&&(l.$formatters=[],l.$parsers=[]),void 0!==r.asDate&&"text"==d&&(d="date");var p=!1,u=r.mask||r.format;(u=parseMaskType(u||d,t)).endsWith(";0")&&(p=!0);var m=u.replace(";1","").replace(";0","").replace(";local","").trim(),f=r.keyboard,g=t.instant("keyboardDecimalChar")&&1==t.instant("keyboardDecimalChar").length?t.instant("keyboardDecimalChar"):",";if(f&&parseKeyboardType(f,g,c),null!=m&&0!=m.length){if("date"==d||"datetime"==d||"datetime-local"==d||"month"==d||"time"==d||"time-local"==d||"week"==d){var v="date"==d||"datetime"==d||"time"==d;window.fixedTimeZone||(v=!1),"date"==d?(m=moment.HTML5_FMT.DATE,c.attr("type","date")):"month"==d?(m=moment.HTML5_FMT.MONTH,c.attr("type","month")):"week"==d?(m=moment.HTML5_FMT.WEEK,c.attr("type","week")):"datetime"==d||"datetime-local"==d?(m=moment.HTML5_FMT.DATETIME_LOCAL,c.attr("type","datetime-local")):"time"!=d&&"time-local"!=d||(m=moment.HTML5_FMT.TIME,c.attr("type","time")),l&&(l.$formatters.push((function(e){return e?v?moment(e).utcOffset(window.timeZoneOffset).format(m):moment(e).format(m):null})),l.$parsers.push((function(e){return e?v?moment(e,m).utcOffset(window.timeZoneOffset,!0).toDate():moment(e,m).toDate():new Date(e)})))}else if("number"==d||"money"==d||"integer"==d||"money-decimal"==d){p=!0;var h=m.trim().replace(/\./g,"").replace(/\,/g,"").replace(/#/g,"").replace(/0/g,"").replace(/9/g,"");f||(f="integer"==d||"money-decimal"==d?"integer":"number");var y="",b="",k="",T=",",w=0;m.startsWith(h)?y=h:m.endsWith(h)&&(b=h);var D=m.trim().replace(y,"").replace(b,"").trim();D.startsWith("#.")?k=".":D.startsWith("#,")&&(k=",");var C=null;if(-1!=D.indexOf(",0")?(T=",",C=",0"):-1!=D.indexOf(".0")&&(T=".",C=".0"),null!=C)w=D.substring(D.indexOf(C)+1).length;var M="numeric";0==w&&(M="integer");var x={rightAlign:"money"==d||"money-decimal"==d,unmaskAsNumber:!0,allowMinus:"money"!=d&&"money-decimal"!=d,prefix:y,suffix:b,radixPoint:T,digits:w,numericInput:"money-decimal"==d};k&&(x.autoGroup=!0,x.groupSeparator=k),"money-decimal"==d&&(M="currency"),$(o).inputmask(M,x),useInputMaskPlugin(o,l,e,s,m)}else"text"==d||"tel"==d?(f||"tel"==d&&(f="tel"),r.maskPlaceholder?(options={},options.placeholder=r.maskPlaceholder,$(o).inputmask(m,options),$(o).off("keypress"),p&&useInputMaskPlugin(o,l,e,s,m)):(c.mask(m),useMaskPlugin(o,l,e,s,p))):"email"!=d&&"password"!=d&&"search"!=d||f||(f=d);f&&parseKeyboardType(f,g,c)}}}}}}function useInputMaskPlugin(e,t,a,n,o){var r=$(e);$(e).off("keypress"),$(e).on("keyup",(function(t){var o=$(this).inputmask("unmaskedvalue");$(this).data("rawvalue",o),e._ignoreFormatter=!0,a.safeApply((function(){n(a,o)}))})),t&&(t.$formatters.push((function(t){return e._ignoreFormatter?(e._ignoreFormatter=!1,$(e).val()):(e._ignoreFormatter=!1,null!=t&&null!=t&&""!==t?format(o,t):null)})),t.$parsers.push((function(e){if(null!=e&&null!=e&&""!==e){var t=r.inputmask("unmaskedvalue");if(""!==t)return t}return null})))}function useMaskPlugin(e,t,a,n,o){var r=$(e),l=function(){o&&$(this).data("rawvalue",$(this).cleanVal())};$(e).on("keydown",l).on("keyup",l),o&&t&&(t.$formatters.push((function(e){return e?r.masked(e):null})),t.$parsers.push((function(e){return e?r.cleanVal():null})))}function parseKeyboardType(e,t,a){"integer"!=e&&"number"!=e&&"tel"!=e||(a.attr("pattern","\\d*"),a.attr("inputmode","decimal")),"tel"!=e&&"email"!=e&&"search"!=e&&"password"!=e||a.attr("type",e),"ios"===cordova.platformId&&"number"==e&&(a.attr("decimal","true"),a.attr("allow-multiple-decimals","true"),a.attr("decimal-char",t))}function parseMaskType(e,t){return"datetime"==e||"datetime-local"==e?"Format.DateTime"==(e=t.instant("Format.DateTime"))&&(e="DD/MM/YYYY HH:mm:ss"):"date"==e?"Format.Date"==(e=t.instant("Format.Date"))&&(e="DD/MM/YYYY"):"time"==e||"time-local"==e?"Format.Hour"==(e=t.instant("Format.Hour"))&&(e="HH:mm:ss"):"month"==e?e="MMMM":"number"==e?"Format.Decimal"==(e=t.instant("Format.Decimal"))&&(e="0,00"):"money"==e||"money-decimal"==e?"Format.Money"==(e=t.instant("Format.Money"))&&(e="#.#00,00"):"integer"==e?e="0":"week"==e?e="dddd":"tel"==e?e="(99) 99999-9999;0":("text"==e||"string"==e)&&(e=""),e}function transformText(){return{restrict:"E",require:"?ngModel",link:function(e,t,a,n){let o=function(e,t){if(e&&t&&("string"==typeof t||t instanceof String)){if("uppercase"===e.css("text-transform"))return t.toUpperCase();if("lowercase"===e.css("text-transform"))return t.toLowerCase()}return t};n&&(n.$formatters.push((function(e){return o(t,e)})),n.$parsers.push((function(e){return o(t,e)})))}}}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 e in params){let t=params[e];"expression"==t.type?scope.$watch(t.value,(function(e){framentMap[t.key]=e;var a=$(str);a.attr("onload",`params = ${JSON.stringify(framentMap)}`);var n=$compile(a)(scope);element.html(n)})):framentMap[t.key]=t.value}template.attr("onload",`params = ${JSON.stringify(framentMap)}`)}catch(e){console.error(e)}}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>`)}let html=angular.element(template);html=$compile(html)(scope),element.html(""),element.append(html)}))}}}maskDirectiveAsDate.$inject=["$compile","$translate","$parse"],maskDirectiveMask.$inject=["$compile","$translate","$parse"],cronFrame.$inject=["$compile","$sce","$parse"],window.addEventListener("message",(function(e){"reload"==e.data?window.location.reload():"reload(true)"==e.data&&window.location.reload(!0)})),function($app){app.common={generateId:function(){var e=Math.floor(65536*(1+Math.random())).toString(16).substring(1);return"0123456789".indexOf(e.substr(0,1))>-1?this.generateId():e}};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))/,patternFormat=function(e){return e&&$(e).attr("format")||"DD/MM/YYYY"},parsePermission=function(e){var t={visible:{public:!0},enabled:{public:!0},render:{public:!0},notvisible:{public:!1},notenabled:{public:!1},notrender:{public:!1}};if(e)for(var a=e.toLowerCase().trim().split(","),n=0;n<a.length;n++){var o=a[n].trim();if(o){var r=o.split(":");if(2==r.length){var l=r[0].trim(),s=r[1].trim();if(s){for(var c=s.split(";"),d={},p=0;p<c.length;p++){var u=c[p].trim();u&&(d[u]=!0)}t[l]=d}}}}return t};app.directive("updateLanguage",["$rootScope",function(e){return{link:function(t,a){e.$on("$translateChangeSuccess",(function(e,t){let n=t.language?t.language.split("_")[0]:null;a.attr("lang",n||"en")}))}}}]),app.directive("asDate",maskDirectiveAsDate),app.directive("input",transformText),app.directive("textarea",transformText).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))}))}}})).filter("mask",["$translate",function(e){return function(t,a,n){if(!(a=parseMaskType(a,e)))return t;var o;if(void 0!==n?(o="date"==n||"datetime"==n||"time"==n,window.fixedTimeZone||(o=!1)):o=window.fixedTimeZone,a.indexOf(";local")>0&&(o=!1),a=a.replace(";1","").replace(";0","").replace(";local","").trim(),"string"==typeof t&&t.match(isoDate)||t instanceof Date)return o?moment(t).utcOffset(window.timeZoneOffset).format(a):moment(t).format(a);if("number"==typeof t)return format(a,t);if(null!=t&&null!=t&&""!=t&&""!=a){var r=$('<input type="text">');return r.mask(a),r.masked(t)}return t}}]).directive("screenParams",[function(){"use strict";return{link:function(scope,elem,attrs,ctrl){var screenParams=eval(attrs.screenParams);screenParams&&screenParams.length&&screenParams.forEach((function(e){scope.params&&!scope.params[e.key]&&(scope.params[e.key]=e.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 e=>{if(scope.vars&&!scope.vars[e.key]){let t=e.value||"";"blockly"===e.type?t=await scope.$eval(t.replace(".run(",".toPromise().run(")):"expression"===e.type&&(t=t.startsWith("params")?scope.params[t.replace("params.","")]:t.startsWith("vars")?scope.vars[t.replace("vars.","")]:await scope.$eval(t)),scope.vars[e.key]=t}}))}}}]).directive("mask",maskDirectiveMask).directive("dynamicImage",["$compile","$translate",function(e,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(a,n,o){let r='<div ngf-drop="" ngf-drag-over-class="dragover" class="dynamicImage" > <img role="img" alt="$altText$" style="width: 100%;" ng-if="$ngModel$" data-ng-src="{{$ngModel$.startsWith(\'http\') || ($ngModel$.startsWith(\'/\') && $ngModel$.length < 1000)? $ngModel$ : \'data:image/png;base64,\' + $ngModel$}}"> <div class="btn action-button-border" ng-if="!$ngModel$" ngf-drop="" ngf-select="" ngf-change="cronapi.internal.setFile(\'$ngModel$\', $file)" ngf-pattern="\'image/*\'" ngf-max-size="$maxFileSize$"> $userHtml$ </div> <div aria-label="$closeAriaText$" class="remove-image-button button button-assertive" ng-if="$ngModel$" ng-click="$ngModel$=null"> <span class="icon ion-android-close"></span> </div> <div aria-label="$videocamAriaText$" class="button button-default buttomImage" ng-if="!$ngModel$" ng-click="cronapi.internal.startCamera(\'$ngModel$\',\'$quality$\',\'$allowEdit$\',\'$targetWidth$\',\'$targetHeight$\')"> <span class="icon ion-ios-videocam"></span> </div> </div>';const l=o.quality||$(n).closest('[data-component="crn-dynamic-image"]').attr("quality")||"60",s={ngModel:o.ngModel,required:o.ngRequired&&"true"==o.ngRequired?"required":"",content:n.html(),altText:o.alt?o.alt:t.instant("Users.view.Picture"),closeAriaText:t.instant("Home.view.Close"),videocamAriaText:t.instant("OpenCamera"),maxFileSize:o.maxFileSize?o.maxFileSize:"",quality:l,allowEdit:o.allowEdit?o.allowEdit:"false",targetWidth:o.targetWidth?o.targetWidth:"640",targetHeight:o.targetHeight?o.targetHeight:"480"};r=$(r.split("$ngModel$").join(s.ngModel).split("$required$").join(s.required).split("$userHtml$").join(s.content).split("$maxFileSize$").join(s.maxFileSize).split("$altText$").join(s.altText).split("$closeAriaText$").join(s.closeAriaText).split("$videocamAriaText$").join(s.videocamAriaText).split("$quality$").join(s.quality).split("$allowEdit$").join(s.allowEdit).split("$targetWidth$").join(s.targetWidth).split("$targetHeight$").join(s.targetHeight)),$(n).html(r),e(r)(n.scope())}}}]).directive("dynamicFile",["$compile","$translate",function(e,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(a,n,o){var r=o.ngRequired&&"true"==o.ngRequired?"required":"",l=t.instant("Home.view.Close"),s=o.ngModel.split("."),c=s[0],d=s[s.length-1],p=Math.floor(1e3*Math.random()+20),u=n.html(),m="",f=o.acceptFile||"'*.*'";o.maxFileSize&&(m=o.maxFileSize);var g=o.fileInfo?`'${o.fileInfo}'`:"undefined",v=' <div ng-show="!$ngModel$" ngf-drop="" ngf-drag-over-class="dragover"> <div class="btn action-button-border" ngf-drop="" ngf-select="" ngf-change="cronapi.internal.uploadFile(\'$ngModel$\', $file, \'uploadprogress$number$\', $fileInfo$)" ngf-max-size="$maxFileSize$" ngf-pattern="$acceptPattern$" ngf-accept="$acceptFile$"> $userHtml$ </div> <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"> <div aria-label="$closeAriaText$" class="button button-assertive" style="float:right;" ng-if="$ngModel$" ng-click="$ngModel$=null"> <span role="img" alt="$closeAriaText$" class="icon ion-android-close"></span> </div> <div> <div ng-bind-html="cronapi.internal.generatePreviewDescriptionByte($ngModel$, $fileInfo$)"></div> <div aria-label="Download" class="button button-positive" ng-click="cronapi.internal.downloadFileEntityMobile($datasource$,\'$field$\', undefined, $fileInfo$)">$lblDownload$</div> </div> </div> ';v=$(v.split("$ngModel$").join(o.ngModel).split("$datasource$").join(c).split("$field$").join(d).split("$number$").join(p).split("$required$").join(r).split("$userHtml$").join(u).split("$maxFileSize$").join(m).split("$closeAriaText$").join(l).split("$lblDownload$").join(t.instant("download")).split("$fileInfo$").join(g).split("$acceptPattern$").join(f).split("$acceptFile$").join(f)),$(n).html(v),e(v)(n.scope())}}}]).directive("pwCheck",[function(){"use strict";return{require:"ngModel",link:function(e,t,a,n){var o="#"+a.pwCheck;t.add(o).on("keyup",(function(){e.$apply((function(){var e=t.val()===$(o).val();n.$setValidity("pwmatch",e)}))}))}}}]).directive("qr",["$window",function(e){return{restrict:"EA",require:"^ngModel",template:'<canvas ng-hide="image"></canvas><img alt="qr-code" ng-if="image" ng-src="{{canvasImage}}"/>',link:function(t,a,n,o){void 0===t.size&&n.size&&(t.text=n.size);var r=function(){return o.$modelValue||""},l=function(e){return/^[0-9]*$/.test(e)},s=function(e){return/^[0-9A-Z $%*+\-./:]*$/.test(e)},c=function(e){for(var t=0;t<e.length;t++){if(e.charCodeAt(t)>255)return!1}return!0},d=function(e){var a=t.inputMode;return function(e,t){if("NUMBER"===e&&!l(t))throw new Error("The `NUMBER` input mode is invalid for text.");if("ALPHA_NUM"===e&&!s(t))throw new Error("The `ALPHA_NUM` input mode is invalid for text.");if("8bit"===e&&!c(t))throw new Error("The `8bit` input mode is invalid for text.");if(!c(t))throw new Error("Input mode is invalid for text.");return!0}(a=(a=(a=a||(l(e)?"NUMBER":void 0))||(s(e)?"ALPHA_NUM":void 0))||(c(e)?"8bit":""),e)?a:""},p=a.find("canvas")[0],u=!!e.CanvasRenderingContext2D;t.TYPE_NUMBER=t.typeNumber||0,t.TEXT=r(),t.CORRECTION={L:1,M:0,Q:3,H:2}[t.correctionLevel||0]||0,t.SIZE=t.size||$(a).outerWidth(),t.INPUT_MODE=d(t.TEXT),t.canvasImage="";var m=function(e,a,n,o,r,l){var s=a.replace(/^\s+|\s+$/g,""),c=new QRCode(n,o,l);c.addData(s),c.make();var d=e.getContext("2d"),p=c.getModuleCount(),m=r/p;e.width=e.height=r,u&&(!function(e,t,a,n){for(var o=0;o<a;o++)for(var r=0;r<a;r++){var l=Math.ceil((r+1)*n)-Math.floor(r*n),s=Math.ceil((o+1)*n)-Math.floor(o*n);e.fillStyle=t.isDark(o,r)?"#000":"#fff",e.fillRect(Math.round(r*n),Math.round(o*n),l,s)}}(d,c,p,m),t.canvasImage=e.toDataURL()||"")};t.$watch((function(){return o.$modelValue}),(function(e,a){e===a&&e===t.TEXT||(t.text=o.$modelValue,t.TEXT=r(),t.INPUT_MODE=d(t.TEXT),m(p,t.TEXT,t.TYPE_NUMBER,t.CORRECTION,t.SIZE,t.INPUT_MODE))})),m(p,t.TEXT,t.TYPE_NUMBER,t.CORRECTION,t.SIZE,t.INPUT_MODE)}}}]).directive("valid",(function(){return{require:"^ngModel",restrict:"A",link:function(e,t,a,n){var o={cpf:CPF,cnpj:CNPJ};n.$validators[a.valid]=function(e,n){var r=e||n,l=o[a.valid].isValid(r);return l?t[0].setCustomValidity(""):t.scope().$applyAsync((function(){t[0].setCustomValidity(t[0].dataset.errorMessage)})),l||!r}}}})).directive("cronappSecurity",["$rootScope",function(e){return{restrict:"A",priority:Number.MIN_SAFE_INTEGER,link:function(t,a,n){if(""==n.cronappSecurity||null==n.cronappSecurity||null==n.cronappSecurity)return;var o=[],r=JSON.parse(localStorage.getItem("_u"));r&&r.roles&&(o=r.roles.toLowerCase().split(","));for(var l=parsePermission(n.cronappSecurity),s=!1,c=!1,d=!1,p=0;p<o.length;p++){(u=o[p].trim())&&(l.visible[u]&&(s=!0),l.enabled[u]&&(c=!0),l.render[u]&&(d=!0))}for(p=0;p<o.length;p++){var u;(u=o[p].trim())&&(l.notvisible[u]&&(s=!1),l.notenabled[u]&&(c=!1),l.notrender[u]&&(d=!1))}let m=$(a),f=setInterval((()=>{"$apply"!==e.$$phase&&"$digest"!==e.$$phase&&(s||m.hide(),c||m.find("*").addBack().attr("disabled",!0).off("click").on("click",(e=>e.preventDefault())),d||m.remove(),clearInterval(f))}))}}}]).directive("cronappStars",[function(){"use strict";return{restrict:"A",require:"ngModel",link:function(e,t,a,n){var o=$(t),r=$('<i style="font-size: 200%" class="component-holder ion ion-android-star-outline" style="" xattr-size="" data-component="crn-icon"></i>');o.html("");for(var l=[],s=1;s<=5;s++){var c=r.clone();o.append(c),c.attr("idx",s),c.click((function(){e.$apply(function(){n.$viewValue=parseInt($(this).attr("idx")),n.$commitViewValue()}.bind(this))})),l.push(c)}function d(e){for(var t=1;t<=5;t++)l[t-1].removeClass("ion-android-star-outline"),l[t-1].removeClass("ion-android-star"),t<=e?l[t-1].addClass("ion-android-star"):l[t-1].addClass("ion-android-star-outline");return e}n.$parsers.push(d),n.$formatters.push(d)}}}]).directive("cronappRating",[function(){"use strict";return{restrict:"E",require:"ngModel",link:function(e,t,a,n){a.theme=$(t).find("i").attr("xattr-theme"),a.iconOn=$(t).find("i").attr("class"),a.iconSize=$(t).find("i").attr("icon-size");var o=$(t),r=[];a.xattrDefaultValue&&(n.$viewValue=0,n.$commitViewValue());for(var l=1;l<=5;l++)r.push($(t).find("i").get(l-1)),$(r[l-1]).addClass(a.iconOff||"ion ion-android-star-outline");o.html("");var s=[];for(l=1;l<=5;l++){var c=$(r[l-1]).clone();o.append(c),c.attr("idx",l),c.click((function(){e.$apply(function(){let e=parseInt($(this).attr("idx"));n.$viewValue=n.$viewValue!==e?e:0,n.$commitViewValue()}.bind(this))})),s.push(c)}function d(e){for(var t=1;t<=5;t++)s[t-1].removeClass(a.iconOff||"ion ion-android-star-outline"),s[t-1].removeClass(a.iconOn),s[t-1].removeClass(a.theme),t<=e?(s[t-1].addClass(a.iconOn),s[t-1].addClass(a.theme)):(s[t-1].addClass(a.iconOff||"ion ion-android-star-outline"),s[t-1].addClass(a.theme),s[t-1].addClass(a.iconSize));return e}n.$parsers.push(d),n.$formatters.push(d)}}}]).directive("ngInitialValue",["$parse",function(e){return{restrict:"A",require:"ngModel",link:function(t,a,n,o){if(n.ngInitialValue){var r,l=e(n.ngModel).assign;try{r=t.$eval(n.ngInitialValue)}catch(e){r=n.ngInitialValue}"checkbox"==a[0].type&&r&&(r="true"==(""+r).toLowerCase()),l(t,r)}}}}]).directive("crnAllowNullValues",[function(){return{restrict:"A",require:"?ngModel",link:function(e,t,a,n){n.$formatters=[],n.$parsers=[];let o=!!a.ngFalseValue&&a.ngFalseValue.split("'").join(""),r=!a.ngTrueValue||a.ngTrueValue.split("'").join("");var l;"true"===(l=a.crnAllowNullValues)||null==l||0==l.length?n.$render=function(){let e=n.$viewValue;switch(t.data("checked",e),e){case!0:case r:t.prop("indeterminate",!1),setTimeout((()=>t.prop("checked",!0))),e=r;break;case!1:case o:t.prop("indeterminate",!1),setTimeout((()=>t.prop("checked",!1))),e=o;break;default:e=null,t.prop("indeterminate",!0)}setTimeout((()=>n.$setViewValue(e)))}:n.$render=function(){let l=n.$viewValue;if(void 0!==n.$viewValue&&null!==n.$viewValue||(n.$setViewValue(!1),l=!1),l===o){let n=a.ngFalseValue?`${t.attr("ng-model")}=${a.ngFalseValue}`:`${t.attr("ng-model")}=${o}`;e.$eval(n)}switch(t.data("checked",l),l){case!0:case r:t.prop("indeterminate",!1),setTimeout((()=>t.prop("checked",!0))),l=r;break;default:t.prop("indeterminate",!1),setTimeout((()=>t.prop("checked",!1))),l=o}setTimeout((()=>n.$setViewValue(l)))},t.bind("click",(function(l){let s;switch(t.data("checked")){case!1:case o:s=!a.ngTrueValue||r;break;default:s=!!a.ngFalseValue&&o}n.$setViewValue(s),e.$apply(n.$render),l.preventDefault()}))}}}]).directive("cronappFilter",["$compile",function($compile){var setFilterInButton=function(e,t,a){var n=e.closest("div");if(n){var o=n.find("button[cronapp-filter]");if(o){var r=o.data("filters");r||(r=[]);var l=-1,s=e.attr("ng-model");if($(r).each((function(e){this.ngModel==s&&(l=e)})),l>-1&&r.splice(l,1),t.length>0){var c={ngModel:s,bindedFilter:t};r.push(c)}o.data("filters",r)}}},makeAutoPostSearch=function(e,t,a,n){var o=e.closest("div");if(o&&o.length>0){var r=o.find("button[cronapp-filter]");if(r&&r.length>0){var l=r.data("filters");l&&l.length>0&&(t="",$(l).each((function(){t+=this.bindedFilter+";"})))}}a.search(t,"true"==n.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("div");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?filterTemplate="substringof({value.lower}, tolower("+this+"))":"="==operator?filterTemplate+=" substringof({value.lower},tolower("+this+"))":"!="==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}%"),ngModelCtrl?scope.$watch(attrs.ngModel,(function(e,t){if(!angular.equals(e,t)){var a=$element.data("type")||$element.attr("type"),n=ngModelCtrl.$modelValue;isOData?n instanceof Date?n="datetime-local"==a?"datetimeoffset'"+n.toISOString()+"'":"datetime'"+n.toISOString().substring(0,23)+"'":"number"==typeof n||"boolean"==typeof n||(n="'"+n+"'"):n instanceof Date?(n=n.toISOString(),n+="date"==a?"@@date":"time"==a||"time-local"==a?"@@time":"@@datetime"):"number"==typeof n?n+="@@number":"boolean"==typeof n&&(n+="@@boolean");var o=filterTemplate.split("{value}").join(n);o="string"==typeof n?o.split("{value.lower}").join(n.toLowerCase()):o.split("{value.lower}").join(n),0==ngModelCtrl.$viewValue.length&&(o=""),setFilterInButton($element,o,operator),autopost&&makeAutoPostSearch($element,o,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=""),setFilterInButton($element,bindedFilter,operator),autopost&&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=""),setFilterInButton($element,bindedFilter,operator),autopost&&makeAutoPostSearch($element,bindedFilter,datasource,attrs)}))},forceDisableDatasource=function(datasourceName,scope){var disableDatasource=setInterval((function(){try{var datasourceInstance=eval(datasourceName);datasourceInstance&&($(document).ready((function(){var e=0,t=setInterval((function(){e<10?(scope.$apply((function(){datasourceInstance.enabled=!1,datasourceInstance.data=[]})),e++):clearInterval(t)}),20)})),clearInterval(disableDatasource))}catch(e){}}),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)}}))};return{restrict:"A",require:"?ngModel",link:function(e,t,a,n){var o=$(t),r=o.data("type")||o.attr("type");null!=a.asDate&&(r="date");var l="=";a.cronappFilterOperator&&a.cronappFilterOperator.length>0&&(l=a.cronappFilterOperator);var s=!0;a.cronappFilterAutopost&&"false"==a.cronappFilterAutopost&&(s=!1),setTimeout((function(){"INPUT"==o[0].tagName?inputBehavior(e,t,a,n,o,r,l,s):buttonBehavior(e,t,a,n,o,r,l,s)}),100)}}}]).directive("cronList",["$compile","$parse",function($compile,$parse){"use strict";const defaultAdvancedTemplate='<ion-list type="" can-swipe="listCanSwipe">\n <ion-item ng-class="{\'cron-list-selected\' : isChecked(rowData)}" class="item {{options.editableButtonClass}} {{options.iconClassPosition}} {{options.imageClassPosition}}" ng-repeat="rowData in datasource">\n <ul ng-if="options.allowMultiselect" class="checkbox-group component-holder {{\'cron-list-multiselect-\' + options.imageType}}" data-component="crn-checkbox"><label class="checkbox"><input ng-checked="isChecked(rowData);" type="checkbox"></label></ul>\n \t <img alt=\'Thumbnail\' ng-if="options.imageType !== \'do-not-show\' && rowData[options.fields.image]" \n ng-src="{{options.isImageFromDropbox ? \'\' : \'data:image/png;base64,\'}}{{rowData[options.fields.image]}}" class="{{options.imageToClassPosition}}">\n \t\t<div class="{{options.xattrTextPosition}} {{options.textToClassPosition}}">\n \t\t\t<h2 ng-if="rowData[options.fields.field0]">{{rowData[options.fields.field0]|mask:options.fields.mask0:options.fields.type0}}</h2>\n \t\t\t<p class="dark" ng-if="hasValue(rowData[options.fields.field1])">{{rowData[options.fields.field1]|mask:options.fields.mask1:options.fields.type1}}</p>\n \t\t\t<p class="dark" ng-if="hasValue(rowData[options.fields.field2])">{{rowData[options.fields.field2]|mask:options.fields.mask2:options.fields.type2}}</p>\n \t\t\t<p class="dark" ng-if="hasValue(rowData[options.fields.field3])">{{rowData[options.fields.field3]|mask:options.fields.mask3:options.fields.type3}}</p>\n \t\t\t<p class="dark" ng-if="hasValue(rowData[options.fields.field4])">{{rowData[options.fields.field4]|mask:options.fields.mask4:options.fields.type4}}</p>\n \t\t\t<p class="dark" ng-if="hasValue(rowData[options.fields.field5])">{{rowData[options.fields.field5]|mask:options.fields.mask5:options.fields.type5}}</p>\n \t\t\t<i ng-if="options.icon" class="{{options.icon}}" xattr-theme="dark"></i>\n \t\t</div>\n </ion-item>\n </ion-list>\n <ion-infinite-scroll></ion-infinite-scroll>',defaultSearchTemplate='<div class="item item-input-inset">\n <div class="item-input-wrapper">\n <i class="icon ion-search placeholder-icon"></i>\n <input aria-label="{{\'template.crud.search\' | translate}}" type="text" ng-model="vars.searchableList[options.randomModel]" cronapp-filter="{{options.filterFields}}" cronapp-filter-operator="" cronapp-filter-caseinsensitive="false"\n cronapp-filter-autopost="true" crn-datasource="{{options.dataSourceScreen.name}}" placeholder="{{\'template.crud.search\' | translate}}">\n </div>\n <button ng-if="showButton()" ng-click="limparSelecao()"\n class="button-small cron-list-button-clean button button-inline button-positive component-holder">\n <span cron-list-button-text>Limpar Seleção</span></button>\n</div>';var getExpression=function(e){return"rowData in ".concat(e).concat(".data")},buildFormat=function(e){var t="";return t=' | mask: "'+e.type+'"',e.format&&(t=' | mask: "'+e.format+'":"'+e.type+'"'),t},getEditCommand=function(e){return e+".startEditing(rowData)"},getCronappSecurity=function(e){return e.security?`cronapp-security="${e.security}"`:""},addDefaultButton=function(e,t){const a="<ion-option-button "+getCronappSecurity(t)+' class="button-positive ion-edit button-edit" ng-click="'+getEditCommand(e)+'"><span> {{"Permission.view.Edit" | translate}}</span></ion-option-button>',n="<ion-option-button "+getCronappSecurity(t)+' class="button-assertive ion-trash-a button-delete" ng-click="'+e+'.remove(rowData)"><span> {{"Permission.view.Remove" | translate}}</span></ion-option-button>';return"edit|destroy"==t.command?a.concat(n):"edit"==t.command?a:"destroy"==t.command?n:void 0},encodeHTML=function(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},generateBlocklyCall=function(e){var t;if("client"==e.type){var a=e.blocklyClass.split("/"),n=a[a.length-1];t="blockly.js.blockly."+n,t+="."+e.blocklyMethod;var o="()";e.blocklyParams.length>0&&(o="(",e.blocklyParams.forEach(function(e){o+=(e.value?encodeHTML(e.value):"''")+","}.bind(this)),o=o.substr(0,o.length-1),o+=")"),t+=o}else if("server"==e.type){n=e.blocklyClass+":"+e.blocklyMethod;t="cronapi.util.makeCallServerBlocklyAsync('"+n+"',null,null,",e.blocklyParams.length>0&&e.blocklyParams.forEach(function(e){t+=(e.value?encodeHTML(e.value):"''")+","}.bind(this)),t=t.substr(0,t.length-1),t+=")"}return t},addBlockly=function(e){return'<ion-option-button class="button-dark '+getCronappSecurity(e)+' ion-navigate" ng-click="'+generateBlocklyCall(e.blocklyInfo)+'"></ion-option-button>'},isImage=function(e,t){for(var a=0;a<t.length;a++){var n=t[a];if(e==n.name)return"Binary"==n.type}return!1},addCustomButton=function(e){return`<ion-option-button ${getCronappSecurity(e)} class="button-dark ${e.iconClass}" ng-click="listButtonClick($index, rowData, '${window.stringToJs(e.execute)}', $event)">${e.label}</ion-option-button> `};return{restrict:"E",require:"?ngModel",scope:!0,priority:9999998,terminal:!0,link:function(scope,element,attrs,ngModelCtrl){scope.hasValue=e=>null!=e;var optionsList={},dataSourceName="",buttons="";try{optionsList=JSON.parse(attrs.options),dataSourceName=optionsList.dataSourceScreen.name;var dataSource=eval(optionsList.dataSourceScreen.name),imageDirection=optionsList.imagePosition?optionsList.imagePosition:"left",iconDirection=optionsList.iconPosition?optionsList.iconPosition:"right",bothDirection="left"===imageDirection&&"left"===iconDirection?"left":"right"===imageDirection&&"right"===iconDirection?"right":"",checkboxTemplate="",modelArrayToInsert=[],isKey=!1;if(scope.options=optionsList,attrs.ngModel){var modelGetter=$parse(attrs.ngModel),modelSetter=modelGetter.assign;optionsList.allowMultiselect?(scope.verifyIsKey=function(e){return isKey=!1,optionsList.fieldType&&"key"===optionsList.fieldType&&(e=this.changeRowDataField(e),isKey=!0),e},scope.limparSelecao=function(){modelSetter(scope,[])},scope.isChecked=function(e){let t=!1;return modelArrayToInsert=modelGetter(scope),e=scope.verifyIsKey(e),t=scope.hasObjectChecked(isKey,e,null,event),scope.isSelected=t,t},scope.hasObjectChecked=function(e,t,a,n){let o=!1;return Array.isArray(modelArrayToInsert)&&(e&&"object"!=typeof t?modelArrayToInsert.forEach(((e,a)=>{t===e&&(o=!0)})):modelArrayToInsert.forEach(((e,a)=>{dataSource.objectIsEquals(t,e)&&(o=!0)}))),o},scope.checkboxButtonClick=function(e,t,a,n){let o=!1,r=$(n.currentTarget),l=r.find("input[type=checkbox]:checked").length;modelArrayToInsert=modelGetter(scope),Array.isArray(modelArrayToInsert)||(modelArrayToInsert=[]),$(n.target).is("input[type=checkbox]")||a||(l>0?r.find("input[type=checkbox]").prop("checked",!1):r.find("input[type=checkbox]").prop("checked",!0));let s=$(n.currentTarget).find("input[type=checkbox]");t=scope.verifyIsKey(t),$(s).is(":checked")?(o=scope.hasObjectChecked(isKey,t,a,n),o||modelArrayToInsert.push(t)):isKey&&"object"!=typeof t?modelArrayToInsert.forEach(((e,a)=>{t===e&&modelArrayToInsert.splice(a,1)})):modelArrayToInsert.forEach(((e,a)=>{dataSource.objectIsEquals(t,e)&&modelArrayToInsert.splice(a,1)})),modelSetter(scope,modelArrayToInsert),n.stopPropagation()}):scope.setRowDataModel=function(e,t,a,n){optionsList.fieldType&&"key"===optionsList.fieldType&&(t=this.changeRowDataField(t)),modelSetter(scope,t)},scope.changeRowDataField=function(e){e=dataSource.getKeyValues(e);var t=Object.keys(e);return 1===t.length&&(e=e[t]),e}}scope.listButtonClick=function(e,t,a,n){if("INPUT"!=n.target.tagName){dataSource.goTo(t);var o={item:t,index:e},r={currentData:dataSource.data,datasource:dataSource,selectedIndex:e,index:e,selectedRow:t,consolidated:o,item:t,selectedKeys:dataSource.getKeyValues(dataSource.active,!0)};scope.$eval(a,r),n.preventDefault(),n.stopPropagation()}};var searchableField=null,isNativeEdit=!1,addedImage=!1;scope.options=optionsList,scope.options.fields={},scope.options.isImageFromDropbox=!1,scope.options.editableButtonClass="",scope.options.itemContentClass="",scope.options.itemSimple="",scope.options.filterFields="",scope.options.randomModel=Math.floor(9e3*Math.random())+1e3,optionsList.imagePosition||(scope.options.imagePosition="left"),optionsList.iconPosition||(scope.options.iconPosition="right"),optionsList.imageType||(scope.options.imageType="avatar");for(var imageDirection=optionsList.imagePosition?optionsList.imagePosition:"left",iconDirection=optionsList.iconPosition?optionsList.iconPosition:"right",bothDirection="left"===imageDirection&&"left"===iconDirection?"left":"right"===imageDirection&&"right"===iconDirection?"right":"",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,!addedImage&&isImage(column.field,optionsList.dataSourceScreen.entityDataSource.schemaFields)&&"do-not-show"!==optionsList.imageType?(scope.options.fields.image=column.field,delete scope.options.fields["field"+i],addedImage=!0,scope.options.isImageFromDropbox=!1):addedImage||"image"!=column.type?column.filterable&&(searchableField=null!=searchableField?searchableField+";"+column.field:column.field):(scope.options.fields.image=column.field,delete scope.options.fields["field"+i],addedImage=!0,scope.options.isImageFromDropbox=!0)):"Command"!=column.dataType&&"Blockly"!=column.dataType&&"Customized"!=column.dataType||(scope.options.editableButtonClass="item-complex item-right-editable","Command"==column.dataType?(scope.options.fields["field"+i]=column.field,buttons=buttons.concat(addDefaultButton(dataSourceName,column)),"edit"!=column.command&&"edit|destroy"!=column.command||(isNativeEdit=!0)):"Blockly"==column.dataType?buttons=buttons.concat(addBlockly(column)):"Customized"==column.dataType&&(buttons=buttons.concat(addCustomButton(column))))}}catch(e){console.log("CronList invalid configuration! "+e)}scope.options.editableButtonClass||addedImage?!scope.options.editableButtonClass&&addedImage&&(scope.options.itemContentClass="item-content",scope.options.editableButtonClass="item-complex",scope.options.itemSimple=""):(scope.options.itemContentClass="item-content",scope.options.itemSimple="item-simple"),scope.options.fields.image&&"do-not-show"!=scope.options.imageType&&(scope.options.imageClassPosition="item-"+scope.options.imageType+"-"+scope.options.imagePosition),addedImage||(scope.options.imageType="do-not-show"),scope.options.icon&&scope.options.iconPosition&&scope.options.imageType&&(scope.options.iconClassPosition="item-icon-"+scope.options.iconPosition),bothDirection&&scope.options.icon&&scope.options.imagePosition&&scope.options.imageType&&(scope.options.imageToClassPosition="image-to-"+scope.options.imagePosition+"-"+scope.options.imageType,scope.options.textToClassPosition="text-to-"+scope.options.iconPosition+"-"+scope.options.imageType),scope.options.advancedTemplate||(scope.options.advancedTemplate=defaultAdvancedTemplate),scope.options.searchTemplate||(scope.options.searchTemplate=defaultSearchTemplate);var templateDyn=null;searchableField?(scope.options.filterFields=searchableField,templateDyn=scope.options.searchTemplate+scope.options.advancedTemplate):templateDyn=scope.options.advancedTemplate;for(let e=0;e<visibleColumns.length;e++){let t=visibleColumns[e];if(t.field&&"Database"===t.dataType&&scope.options.fields[`security${e}`]){let t=`ng-if="rowData[options.fields.field${e}]"`,a=`${t} cronapp-security="${scope.options.fields["security"+e]}"`;templateDyn=templateDyn.replace(t,a)}}templateDyn=$(templateDyn),scope.options.xattrTextPosition=attrs.xattrTextPosition,templateDyn.attr("type",optionsList.listType),$(element).replaceWith(templateDyn);var $element=templateDyn,ionItem=$element.find("ion-item");"rowData in datasource"===$(ionItem).attr("ng-repeat")&&ionItem.attr("ng-repeat",getExpression(dataSourceName)),isNativeEdit&&ionItem.attr("ng-click",getEditCommand(dataSourceName));var ngClickAttrTemplate="",ngClickAttrTemplateCheckbox="";optionsList.allowMultiselect?(attrs.ngModel&&(ngClickAttrTemplateCheckbox="checkboxButtonClick($index, rowData, '"+window.stringToJs(attrs.ngClick)+"', $event);"),checkboxTemplate=$element.find("ul"),attrs.ngClick&&(checkboxTemplate=$(checkboxTemplate).attr("ng-click",ngClickAttrTemplateCheckbox).get(0).outerHTML,ngClickAttrTemplate=ngClickAttrTemplate+"listButtonClick($index, rowData, '"+window.stringToJs(attrs.ngClick)+"', $event);"),ionItem.attr("ng-click",ngClickAttrTemplateCheckbox+ngClickAttrTemplate)):(attrs.ngModel&&(ngClickAttrTemplate="setRowDataModel($index, rowData, '"+window.stringToJs(attrs.ngClick)+"', $event);"),attrs.ngClick&&(ngClickAttrTemplate=ngClickAttrTemplate+"listButtonClick($index, rowData, '"+window.stringToJs(attrs.ngClick)+"', $event);"),ionItem.attr("ng-click",ngClickAttrTemplate)),attrs.onDoubleTap&&ionItem.attr("on-double-tap",attrs.onDoubleTap),attrs.onHold&&ionItem.attr("on-hold",attrs.onHold),attrs.onTap&&ionItem.attr("on-tap",attrs.onTap),attrs.onSwipe&&ionItem.attr("on-swipe",attrs.onSwipe);const attrsExcludeds=["options","ng-repeat","ng-click"],filteredItems=Object.values(attrs.$attr).filter((function(e){return!attrsExcludeds.includes(e)}));for(let e in filteredItems)ionItem.attr(filteredItems[e],attrs[e]);ionItem.append(buttons);var firstScroll=!0;scope.nextPageInfinite=function(){$element.find("ion-item").length<dataSource.data.length||0==dataSource.data.length?scope.$broadcast("scroll.infiniteScrollComplete"):($element.find("ion-item").length==dataSource.data.length||dataSource.isOfflineMode())&&(firstScroll?(scope.$broadcast("scroll.infiniteScrollComplete"),firstScroll=!1):dataSource.nextPage((function(){scope.$broadcast("scroll.infiniteScrollComplete")})))};var infiniteScroll=$element.filter((function(e){return $(this).is("ion-infinite-scroll")}));infiniteScroll.attr("on-infinite","nextPageInfinite()"),infiniteScroll.attr("distance","1%"),scope.showButton=function(){if(optionsList.allowMultiselect){var e=modelGetter(scope);if(null!=e)return e.length>0}return!1},$compile(templateDyn,null,9999998)(scope)}}}]).directive("cronInfiniteScroll",["$compile",function($compile){"use strict";return{restrict:"EA",link:function(scope,element,attrs){var dataSource=attrs.cronInfiniteScroll?eval(attrs.cronInfiniteScroll):attrs.crnDatasource?eval(attrs.crnDatasource):void 0;if(dataSource){scope.nextPageInfinite=function(){dataSource.nextPage(),scope.$broadcast("scroll.infiniteScrollComplete")};var templateDyn=$("<ion-infinite-scroll></ion-infinite-scroll>");$(element).html(templateDyn);var infiniteScroll=$(element).find("ion-infinite-scroll");infiniteScroll.attr("on-infinite","nextPageInfinite()"),infiniteScroll.attr("distance","1%"),$compile(templateDyn)(element.scope())}}}}]).filter("raw",["$translate",function(e){return function(e){if(null==e||void 0===e)return"";if("number"==typeof e)return e+"";if("boolean"==typeof e)return e+"";if(!(e instanceof Date))return e.length>=10&&e.match(ISO_PATTERN)?"datetimeoffset'"+e+"'":"'"+e.replaceAll("'","''")+"'";e.toISOString()}}]).directive("xkeyField",["$compile",function(e){"use strict";return{restrict:"A",link:function(t,a,n){if(n.xkeyField&&n.xdisplayField){var o="";n.crnDatasource&&(o=n.crnDatasource),a.removeAttr("xkey-field"),a.removeAttr("xdisplay-field"),a.append('<option ng-repeat="opt in '+o+'.data" value="{{opt.'+n.xkeyField+'}}">{{opt.'+n.xdisplayField+"}}</option>"),e($(a))(t)}}}}]).directive("cronMobileMenu",["$compile","$translate",function(e,t){"use strict";return{restrict:"EA",link:function(a,n,o){o.$observe("options",(function(o){var r={};try{r=JSON.parse(o)}catch(e){console.log("CronMobileMenu: Invalid configuration!")}var l,s,c=$('<ul class="nav navbar-nav" style="float:none"></ul>'),d=(s="",(l=r)&&null!=l&&l.subMenuOptions&&null!=l.subMenuOptions&&Array.isArray(l.subMenuOptions)&&l.subMenuOptions.forEach((function(e){var a=e.security&&null!=e.security?' cronapp-security="'+e.security+'" ':"",n=e.action&&null!=e.action?' ng-click="'+e.action+'" ':"",o=e.hide&&null!=e.hide?' ng-hide="'+e.hide+'" ':"",r=e.iconClass&&null!=e.iconClass?e.iconClass:"",l=e.imagePosition&&null!=e.imagePosition?"item-icon-"+e.imagePosition:"",c=e.textPosition&&null!=e.textPosition?"text-"+e.textPosition:"",d=e.contentTheme&&null!=e.contentTheme?e.contentTheme:"",p=e.iconTheme&&null!=e.iconTheme?e.iconTheme:"",u=t.instant(e.title);s=s+' <a menu-close="" class="item '+l+'" '+n+a+o+'> <i class="'+r+" "+p+'" style="font-size: 150%"></i> <div class="item-content '+c+'"> <h2 class="'+d+'">'+u+"</h2> </div> </a> "})),s);c.append(d);var p=angular.element(c);n.html(""),n.append(c),n.attr("id",null),e(p)(a)}))}}}]).directive("srcLazy",["$compile",function(e){"use strict";return{restrict:"A",link:function(e,t,a){var n=$(t);setTimeout((function(){n.is(":appeared")?t.attr("src",a.srcLazy):(a.srcLazyPreview?n.attr("src",a.srcLazyPreview):n.css("visibility","hidden"),n.appear(),n.on("appear",(function(e,t){n.attr("src-lazy")&&(a.srcLazyPreview||n.css("visibility","visible"),console.log(a.srcLazy),n.attr("src",a.srcLazy),n.attr("src-lazy",""))})))}),100),e.$on("$destroy",(function(){n.appearStop()}))}}}]).directive("crnSkin",["$compile","$http",function(e,t){return{restrict:"A",link:function(e,a,n,o){n.crnSkin&&t.get(n.crnSkin,{cache:!0}).then((e=>{if(e.data){let t=e.data;t.startsWith(":root{")&&(t=t.substring(6)),t.endsWith("}")&&(t=t.substring(0,t.length-2)),$element=$(a);let n=$element.attr("style")||"";n&&(n+=", "),n+=t,$element.attr("style",n)}}))}}}]).directive("cronMap",["$compile",function(e){return{restrict:"AE",replace:!0,link:function(t,a,n){var o=a.find(".cronMap")[0];e(o)(a.scope());var r=a.find(".cronMapIframe")[0];e(r)(a.scope());var l;l=`<iframe class="cronMapIframe" src="${n.src}" width="${n.width}" height="${n.height}" style="border:0;" allowfullscreen="" loading="lazy"></iframe>`,a.html(l),e(l)(a.scope())}}}]).directive("signaturePad",["$compile","$window",function(e,t){"use strict";var a;return{restrict:"E",require:"ngModel",scope:!0,replace:!0,transclude:!0,template:'<div style="height: 200px; 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="button button-block button-medium filled button-energized col-xs-3" ng-click="clear()"> <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(e){let t=()=>{let t=e.signaturePad.toDataURL();return t&&(t=t.split(",")[1]),t};e.mouseup=function(a){e.signaturePad.isEmpty()||(e.ngModel=t())},e.$watch("ngModel",(function(a,n){a!==n&&(t()!==a&&e.signaturePad.fromDataURL("data:image/png;base64,"+a,{ratio:1}),e.ngModel=a)}),!0),e.clear=function(){e.signaturePad.clear(),e.ngModel=null}}],link:function(n,o,r,l,s){a=o.find("canvas")[0],n.onResize=function(){var e=Math.max(t.devicePixelRatio||1,1),a=o.find("canvas")[0],n=document.createElement("canvas");n.width=a.width,n.height=a.height;var r=n.getContext("2d");0!=a.width&&0!=a.height&&r.drawImage(a,0,0),a.width=a.offsetWidth*e,a.height=a.offsetHeight*e,0!=n.width&&0!=n.height&&a.getContext("2d").drawImage(n,0,0),a.getContext("2d").scale(e,e)},n.onResize(),n.signaturePad=new SignaturePad(a),angular.element(t).on("resize",(function(){n.onResize()})),e(o)(o.scope());let c=!1;$(a).on("pointerdown",(e=>{1===e.which&&(c=!0),e.preventDefault()})),$(a).on("pointerup",(e=>{1===e.which&&c&&(c=!1,s((()=>angular.element(a).triggerHandler("mouseup"))))}))}}}]).directive("cronFrame",cronFrame).directive("crnFrame",cronFrame).directive("crnComponent",cronFrame).directive("cronVideo",["$compile",function(e){return{restrict:"AE",replace:!0,link:function(t,a,n){var o=a.find(".cronVideo")[0];e(o)(a.scope());var r=a.find(".cronVideoIframe")[0];e(r)(a.scope());var l;l=`<iframe class="cronVideoIframe" src="${n.src}" width="${n.width}" height="${n.height}" title="${n.title}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen> </iframe>`,a.html(l),e(l)(a.scope())}}}]).directive("cronSelect",["$compile",function(e){return{restrict:"E",replace:!0,require:"ngModel",link:async function(e,t,a,n){let o={};try{o=JSON.parse(a.options)}catch(e){console.error("ComboBox invalid configuration! "+e)}let r=a.id?' id="'+a.id+'"':"",l=a.name?' name="'+a.name+'"':"",s=t.parent();$(s).append('<input style="width: 100%;" '+r+l+' class="cronSelect"/>');let c,d,p=$(s).find("input.cronSelect"),u=a.cronDisabled,m=await app.kendoHelper.getConfigCombobox(o,e);m.close=a.ngClose?function(){e.$eval(a.ngClose)}:void 0,m.dataBound=a.ngDataBound?function(){e.$eval(a.ngDataBound)}:void 0,m.filtering=a.ngFiltering?function(){e.$eval(a.ngFiltering)}:void 0,m.select=a.ngSelect?function(){e.$eval(a.ngSelect)}:void 0,m.change=function(){g.$apply(function(){v.$setViewValue(this.value())}.bind(c))},m.messages={noData:a.noResultsMessage?a.noResultsMessage:"NO DATA FOUND"},c=!0===o.dontAllowOutsideList?p.kendoDropDownList(m).data("kendoDropDownList"):p.kendoComboBox(m).data("kendoComboBox"),$(t).remove();let f=()=>{if(d=$(s).find(".k-input.cronSelect"),d.length){d.attr("ng-required",a.ngRequired),"true"===a.ngRequired&&d.attr("required","required"),d.attr("ng-model",a.ngModel),d.attr("id",a.id),d.attr("validationmessage",a.validationmessage);let e=d.parent();d.on("change",(()=>{"true"===a.ngRequired&&(0==d.val().length?(e.addClass("ng-invalid-required"),d.addClass("ng-invalid-required")):(e.removeClass("ng-invalid-required"),d.removeClass("ng-invalid-required")))}))}else setTimeout((()=>f()))};f(),u?c.enable(!1):c.enable(!0);let g=e,v=n,h=!0;n&&(n.$formatters.push((function(t){let n="";return("boolean"==typeof t||t)&&(n=t),c.value(n),h||a.ngChange&&e.$eval(a.ngChange),h=!1,c.value(n),n})),n.$parsers.push((function(e){return d&&d.trigger("change"),"boolean"==typeof e||e?e:null})))}}}]),app.directive("kendoChat",["$compile","$timeout",function(e,t){return{restrict:"E",link:function(e,a,n){let o=n.ngOnPostMessage,r=n.ngOnSendMessage,l=n.ngOnTypingEnd,s=n.ngOnTypingStart,c=n.ngOnActionClick,d=n.chatUserId,p=n.chatUsername,u=n.chatUserImage,m=n.chatPlaceholder,f=void 0!==localStorage.getItem("_u")?JSON.parse(localStorage.getItem("_u")):null,g=window.navigator.userAgent,v="";f&&f.user&&(v=f.user.name);let h=$("<div></div>");function y(){let e=$(".k-chat");e.height($(window).height()-e.offset().top)}h.kendoChat({messages:{placeholder:m},user:{id:d||g,name:p||v,iconUrl:u}}),chat=h.data("kendoChat"),chat.bind("post",(t=>{if(o)try{let a={chatMessage:t};e.$eval(o,a)}catch(e){console.error(e)}})),chat.bind("sendMessage",(t=>{if(r)try{let a={chatMessage:t};e.$eval(r,a)}catch(e){console.error(e)}})),chat.bind("typingStart",(t=>{if(s)try{let a={chatMessage:t};e.$eval(s,a)}catch(e){console.error(e)}})),chat.bind("typingEnd",(t=>{if(l)try{let a={chatMessage:t};e.$eval(l,a)}catch(e){console.error(e)}})),chat.bind("actionClick",(t=>{if(c)try{let a={chatMessage:t};e.$eval(c,a)}catch(e){console.error(e)}})),a.empty().append(h),$(window).resize((()=>{y()})),t((()=>{y()}))}}}])}(app),function(e){var t=[],a=!1,n={interval:250,force_process:!1},o=e(window),r=[];function l(){return e(this).is(":appeared")}function s(){return!e(this).data("_appear_triggered")}function c(){a=!1;for(var n=0,o=t.length;n<o;n++){var c=e(t[n]).filter(l);if(c.filter(s).data("_appear_triggered",!0).trigger("appear",[c]),r[n]){var d=r[n].not(c);d.data("_appear_triggered",!1).trigger("disappear",[d])}r[n]=c}}e.expr.pseudos.appeared=e.expr.createPseudo((function(t){return function(t){var a=e(t),n=o.scrollLeft(),r=o.scrollTop(),l=a.offset(),s=l.left,c=l.top;return c+a.height()>=r&&c-(a.data("appear-top-offset")||0)<=r+o.height()&&s+a.width()>=n&&s-(a.data("appear-left-offset")||0)<=n+o.width()}})),e.fn.extend({appear:function(t,a){return e.appear(this,a),this}}),e.fn.extend({appearStop:function(t,a){return e.appearStop(this,a),this}}),e.extend({appearStop:function(e,a){var n=-1;for(i=0;i<t.length;i++)if(t[i].get(0)==e.get(0)){n=i;break}-1!=n&&t.splice(n)},appear:function(o,l){var s=e.extend({},n,l||{}),d=e("ion-content");if(d.length){if(!d.get(0).checkBinded){var p=function(){a||(a=!0,setTimeout(c,s.interval))};d.scroll(p).resize(p),d.get(0).checkBinded=!0}s.force_process&&setTimeout(c,s.interval),function(e){t.push(e),r.push()}(o)}}})}("undefined"!=typeof module?require("jquery"):jQuery),app.kendoHelper={parseOptionsCronToConfigKendo:function(e,t,a){let n=!1;e.dynamic&&"false"!=e.dynamic?e.dataSourceScreen&&e.dataSourceScreen.entityDataSource&&(e.dataSourceScreen.entityDataSource.append=!0,(t=app.kendoHelper.getDataSource(e.dataSourceScreen.entityDataSource,a,!0,e.dataSourceScreen.rowsPerPage)).transport.read=app.kendoHelper.getEventReadCombo,n=!0):(n=!0,e.dataValueField=e.dataValueField||"value",e.dataTextField=e.dataTextField||"key"),e.dataValueField&&""!=e.dataValueField.trim()||(e.dataValueField=null==e.dataTextField?void 0:e.dataTextField);var o,r=function(t){var a=e.dataSourceScreen.entityDataSource.schemaFields;for(count=0;count<a.length;count++)if(t==a[count].name)return a[count].type.toLowerCase();return null};e.customTemplate||e.dataSourceScreen&&e.dataSourceScreen.entityDataSource&&e.dataSourceScreen.entityDataSource.schemaFields&&(e.format||(o=r(e.dataTextField),["date","time","datetime"].indexOf(o)>-1&&o))&&(e.template="#= useMask("+e.dataTextField+",'"+e.format+"','"+r(e.dataTextField)+"') #",e.valueTemplate="#= useMask("+e.dataTextField+",'"+e.format+"','"+r(e.dataTextField)+"') #");var l={dataTextField:null==e.dataTextField?void 0:e.dataTextField,dataValueField:null==e.dataValueField?void 0:e.dataValueField,dataSource:t,headerTemplate:null==e.headerTemplate?void 0:e.headerTemplate,template:null==e.template?void 0:e.template,placeholder:null==e.placeholder?void 0:e.placeholder,footerTemplate:null==e.footerTemplate?void 0:e.footerTemplate,filter:null==e.filter?void 0:e.filter,valuePrimitive:n,valueTemplate:null==e.valueTemplate?void 0:e.valueTemplate,suggest:!0};return e.optionLabel&&(e.optionLabelText=e.optionLabel,e.optionLabelValue=""),l.optionLabel={},l.optionLabel[l.dataTextField]=void 0===e.optionLabelText?"":e.optionLabelText,l.optionLabel[l.dataValueField]=void 0===e.optionLabelValue?null:e.optionLabelValue,l},getConfigCombobox:async function(e,t){let a={};if(e){if(!e.dynamic||"false"==e.dynamic){a.data=null==e.staticDataSource?void 0:e.staticDataSource;for(let e=0;e<a.data.length;e++)try{a.data[e].key&&a.data[e].key.startsWith("cronapi.server(")&&(a.data[e].key=a.data[e].key.replace(".run(",".toPromise().run("));let n=await t.$eval(a.data[e].key);a.data[e].key=null!=n?n:a.data[e].key}catch(t){a.data[e].key=a.data[e].key}}return config=this.parseOptionsCronToConfigKendo(e,a,t),config}return{}}};
|
package/dist/js/filters.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
!function(e){e.filter("tel",(function(){return function(e){var n=e+"";return n=11===(n=n.replace(/\D/g,"")).length?n.replace(/^(\d{2})(\d{5})(\d{4})/,"($1) $2-$3"):n.replace(/^(\d{2})(\d{4})(\d{4})/,"($1) $2-$3")}})),e.filter("cep",(function(){return function(e){var n=e+"";return n=(n=n.replace(/\D/g,"")).replace(/^(\d{2})(\d{3})(\d)/,"$1.$2-$3")}})),e.filter("cnpj",(function(){return function(e){var n=e+"";return n=(n=(n=(n=(n=n.replace(/\D/g,"")).replace(/^(\d{2})(\d)/,"$1.$2")).replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3")).replace(/\.(\d{3})(\d)/,".$1/$2")).replace(/(\d{4})(\d)/,"$1-$2")}})),e.filter("encodeURIComponent",(function(){return function(e){return encodeURIComponent(e)}}))}(app);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
angular.module("MyApp").directive("dateFormat",function(){return{require:"ngModel",link:function(
|
|
1
|
+
angular.module("MyApp").directive("dateFormat",(function(){return{require:"ngModel",link:function(n,e,r,t){t.$formatters.push((function(n){return n?new Date(n):null}))}}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
!function(){"use strict";function e(e,t,r,n,o){t.getDescription=function(e){var t=e.name;return e.description&&(t=e.description).indexOf("{{")>-1&&t.indexOf("}}")>-1&&(t=t.replace("{{","").replace("}}",""),t=window.cronapi.i18n.translate(t,[])),t},t.cloneElement=function(e){return angular.copy(e)},t.isVisibleParam=function(e){return"DATA_LIMIT"!==e.name&&(""===e.value||""===e.value)};var i=n.reportName.match(/\/(.*?)(.*?)(\.jrxml|\.report)/);function c(e){r.openURLContent(e.data)}t.report=n,t.report.name=i[2],t.htmlParameters=o,t.onPrint=function(){t.report.reportName.endsWith(".report")?r.openStimulsoftReport(t.report.contentData,t.report.parameters,t.report.datasourcesInBand):r.getPDFAsFile(t.report).then(c)},t.onCancel=function(){e.dismiss("cancel")}}angular.module("custom.controllers").controller("ParameterController",e).filter("trusted",["$sce",function(e){return function(t){return e.trustAsHtml(t)}}]).directive("compile",["$compile","$timeout",function(e,t){return{restrict:"A",link:function(r,n){t((function(){e(n.contents())(r)}))}}}]).directive("formatDate",(function(){return{require:"ngModel",link:function(e,t,r,n){n.$formatters.push((function(e){return e?new Date(e):null}))}}})),e.$inject=["$modalInstance","$scope","ReportService","report","htmlParameters"]}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
app,angular.module("report.services",[]).service("ReportService",["$http","$compile","$modal","$translate","$window","$rootScope","$ionicModal","$ionicLoading",function(t,e,a,r,o,n,i,s){var c=$("body"),l=angular.element(c.get(0)).scope(),p=["node_modules/cronapp-lib-js/dist/js/stimulsoft/stimulsoft-all.js","node_modules/cronapp-lib-js/dist/js/stimulsoft/stimulsoft-helper.js"],u=[];this.getReport=function(e){var a={url:window.hostApp+"api/rest/report",method:"POST",data:angular.toJson({reportName:e})};return t(a)},this.getPDFAsFile=function(e){var a={url:window.hostApp+"api/rest/report/pdfasfile",method:"POST",data:angular.toJson(e)};return t(a)},this.getContentAsString=function(e){var a={url:window.hostApp+"api/rest/report/contentasstring",method:"POST",data:angular.toJson(e)};return t(a)},this.getDataSourcesParams=function(e){var a={url:window.hostApp+"api/rest/report/getdatasourcesparams",method:"POST",data:angular.toJson(e)};return t(a)},this.openURLContent=function(t){!function(t){window.open(t,"_system")}(t)},this.initializeStimulsoft=function(t){if(!Stimulsoft.Base.StiLicense.Key){stimulsoftHelper.setLanguage(t);var e=stimulsoftHelper.getLocalization();Stimulsoft.Base.Localization.StiLocalization.loadLocalization(e.xml),Stimulsoft.Base.Localization.StiLocalization.cultureName=e.cultureName,Stimulsoft.Base.StiLicense.Key=stimulsoftHelper.getKey()}},this.openStimulsoftReport=function(t,e,a,o,n){var i=new Stimulsoft.Report.StiReport;i.load(t),a||(a=stimulsoftHelper.getDatasourcesInBand(i)),e&&e.forEach((function(t){a.datasources.forEach((function(e){for(var a=0;a<e.fieldParams.length;a++)if(e.fieldParams[a].param==t.originalName){e.fieldParams[a].value=t.value;break}}))})),stimulsoftHelper.setParamsInFilter(i.dictionary.dataSources,a.datasources);var s=new Stimulsoft.Report.Export.StiPdfExportSettings,c=new Stimulsoft.Report.Export.StiPdfExportService,p=new Stimulsoft.System.IO.MemoryStream;i.renderAsync((function(){c.exportToAsync((function(){var e=p.toArray(),a=new Blob([new Uint8Array(e)],{type:"application/pdf"});window.resolveLocalFileSystemURL?function(t,e){try{window.resolveLocalFileSystemURL(cordova.file.externalApplicationStorageDirectory,(function(a){n&&n(),a.getFile(t,{create:!0},(function(a){a.createWriter((function(a){a.onwriteend=function(e){cordova.plugins.fileOpener2.open(cordova.file.externalApplicationStorageDirectory+t,"application/pdf",{error:function(t){l.Notification.error(r.instant("General.ErrorNotSpecified"),t.message),console.log("Error status: "+t.status+" - Error message: "+t.message)}})},a.onerror=function(t){alert(t)};var o=new Blob([e],{type:"application/pdf"});a.write(o)}),(function(t){alert(t)}))}),(function(t){alert(t)}))}),(function(t){n&&n(),alert(t)}))}catch(t){n&&n(),alert(t)}}(t.ReportAlias+".pdf",a):(n&&n(),window.open(URL.createObjectURL(a)))}),i,p,s)}),!1)},this.showParameters=function(t){var e=t.parameters,a=[],r=0,o=function(){if(r<e.length){var n=e[r++];$.get("node_modules/cronapp-framework-mobile-js/components/reports/"+n.type+".parameter.html").done((function(t){var e,r,i;a.push((e=t,r="_field_",i=n.name,e.replace(new RegExp(function(t){return t.replace(/([.*+?^=!:()|\[\]\/\\])/g,"\\$1")}(r),"g"),i))),o()}))}else if(a.length>0){l.report=t,l.htmlParameters=a,l.getDescription=function(t){var e=t.name;return t.description&&(e=t.description).indexOf("{{")>-1&&e.indexOf("}}")>-1&&(e=e.replace("{{","").replace("}}",""),e=window.cronapi.i18n.translate(e,[])),e},l.cloneElement=function(t){return angular.copy(t)},l.isVisibleParam=function(t){return"DATA_LIMIT"!==t.name&&(""===t.value||""===t.value)};var c=t.reportName.match(/\/(.*?)(.*?)(\.jrxml|\.report)/);l.report.name=c[2];var p=this;l.onPrint=function(){l.report.reportName.endsWith(".report")&&(s.show({content:"Loading",animation:"fade-in",showBackdrop:!0,maxWidth:200,showDelay:0}),p.openStimulsoftReport(l.report.contentData,l.report.parameters,l.report.datasourcesInBand,void 0,l.onCancel))},l.onCancel=function(){l.ionicModal.remove(),s.hide()},i.fromTemplateUrl("node_modules/cronapp-framework-mobile-js/components/reports/reports.parameters.html",{scope:l,animation:"slide-in-up"}).then((function(t){t.scope.$parent.ionicModal=t,t.show(),$(".modal-backdrop-bg").css("opacity","0")}))}}.bind(this);o()},this.mergeParam=function(t,e){var a=function(t,e){for(var a in Object.keys(e))if(t==Object.keys(e[a])[0])return Object.values(e[a])[0]};for(var r in Object.keys(t)){var o=t[r].name,n=(t[r].value,a(o,e));n&&(t[r].value=n)}return t},this.setVariablesBasedOnParams=function(t,e){for(var a in e){var r=Object.keys(e[a])[0],o=e[a][r];for(var n in t)if(t[n]&&t[n].Name&&t[n].Name===r){t[n].Value=o;break}}},this.hasParameterWithOutValue=function(t){for(var e in Object.keys(t))if(!t[e].value)return!0;return!1},this.getDatasourcesInBand=function(t){var e=new Stimulsoft.Report.StiReport;return e.load(t),stimulsoftHelper.getDatasourcesInBand(e)},this.loadSriptsStimulsoft=function(t){var e=!0,a=p.length,r=0;Pace.options.initialRate=.7,Pace.options.minTime=1750,Pace.options.maxProgressPerFrame=1,Pace.options.ghostTime=12e4,Pace.restart(),p.forEach(function(o,n){this.loadScript(o,(function(o){r++,o||(e=!1),r==a&&(Pace.options.initialRate=.03,Pace.options.minTime=250,Pace.options.maxProgressPerFrame=20,Pace.options.ghostTime=10,Pace.stop(),t(e))}))}.bind(this))},this.loadScript=function(t,e){if($.inArray(t,u)>=0)e&&e(!0);else if(-1!=t.indexOf(".css")){var a=document.createElement("link");a.rel="stylesheet",a.type="text/css",a.href=t,a.media="all",a.onload=function(){u.push(t),e&&e(!0)},a.onerror=function(){e&&e(!1)};try{document.getElementsByTagName("head")[0].appendChild(a)}catch(t){console.log(t)}}else{var r=document.createElement("script");r.type="text/javascript",r.readyState?r.onreadystatechange=function(){"loaded"!=r.readyState&&"complete"!=r.readyState||(r.onreadystatechange=null,u.push(t),e&&e(!0))}:r.onload=function(){u.push(t),e&&e(!0)},r.src=t,document.getElementsByTagName("head")[0].appendChild(r)}},this.openReport=function(t,e,a){this.getReport(t).then(function(t){t&&t.data&&(t.data.reportName.endsWith(".report")?this.loadSriptsStimulsoft(function(o){o?(this.initializeStimulsoft(r.use()),this.getContentAsString(t.data).then(function(o){var n=this.getDatasourcesInBand(o.data);this.getDataSourcesParams(n).then(function(i){n=i.data,t.data.parameters=stimulsoftHelper.parseToGroupedParam(n.datasources),t.data.contentData=o.data,t.data.datasourcesInBand=n,e&&(t.data.parameters=this.mergeParam(t.data.parameters,e),t.data.contentData.Dictionary=t.data.contentData.Dictionary||{},this.setVariablesBasedOnParams(t.data.contentData.Dictionary.Variables,e)),this.hasParameterWithOutValue(t.data.parameters)&&!a?(t.data.parameters.forEach((function(t){t.name=r.instant(t.name)})),this.showParameters(JSON.parse(JSON.stringify(t.data)))):this.openStimulsoftReport(o.data,t.data.parameters,t.data.datasourcesInBand,a)}.bind(this))}.bind(this),function(t){var e=cronapi.internal.getErrorMessage(t,t.statusText);l.Notification.error(e)}.bind(this))):l.Notification.error("Error loading report script")}.bind(this)):0==t.data.parameters.length||1==t.data.parameters.length&&"DATA_LIMIT"==t.data.parameters[0].name?this.getPDFAsFile(t.data.reportName).then(function(t){this.openURLContent(t.data)}.bind(this),function(t){var e=cronapi.internal.getErrorMessage(t,t.statusText);l.Notification.error(e)}.bind(this)):(e&&(t.data.parameters=this.mergeParam(t.data.parameters,e)),this.hasParameterWithOutValue(t.data.parameters)?this.showParameters(JSON.parse(JSON.stringify(t.data))):this.getPDFAsFile(t.data).then(function(t){this.openURLContent(t.data)}.bind(this))))}.bind(this))}}]);
|
package/dist/js/services.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
app,angular.module("custom.services",[]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
app,angular.module("upload.services",[]).service("UploadService",["$http","$compile","$ionicModal",function(t,e,a){let o=$("body"),n=angular.element(o.get(0)).scope();this.upload=function(t){n.data=t,a.fromTemplateUrl("node_modules/cronapp-framework-mobile-js/components/upload/upload.html",{scope:n,animation:"slide-in-up",resolve:{data:function(){return t}}}).then((function(t){n.modal=t,n.modal.show()}))}.bind(this)}]),angular.module("custom.controllers").controller("UploadController",["$scope","$translate","$stateParams","$location","$http","Upload","$timeout",function(t,e,a,o,n,i,l){app.registerEventsCronapi(t,e),t.params=a,t.$http=n;let s=o.search();for(let e in s)s.hasOwnProperty(e)&&(t.params[e]=s[e]);t.uploading=!1,t.uploaded=!0,t.progress=0,t.message=e.instant("Upload.oneFile");var r=$("ion-header-bar:visible").attr("class");t.headerClass=r,t.buttonClass="button-positive",-1!=r.indexOf("-assertive")?t.buttonClass="button-assertive":-1!=r.indexOf("-balanced")?t.buttonClass="button-balanced":-1!=r.indexOf("-energized")?t.buttonClass="button-energized":-1!=r.indexOf("-light")?t.buttonClass="button-light":-1!=r.indexOf("-stable")?t.buttonClass="button-stable":-1!=r.indexOf("-calm")?t.buttonClass="button-calm":-1!=r.indexOf("-royal")?t.buttonClass="button-royal":-1!=r.indexOf("-dark")&&(t.buttonClass="button-dark"),"true"===t.data.multiple&&(t.message=e.instant("Upload.multipleFile")),t.data.description&&(t.message=t.data.description),t.safeApply=safeApply,t.imagesSelected=function(e){t.files=e,e&&e.length&&i.upload({url:"/upload_image",method:"POST",data:{files:e}}).then((function(e){l((function(){t.result=e.data}))}),(function(e){e.status>0&&(t.errorMsg=e.status+": "+e.data)}),(function(e){t.progress=Math.min(100,parseInt(100*e.loaded/e.total))}))},t.uploadFile=function(a){let o=t.data.scope,i="api/cronapi/upload/"+t.data.id,l=new FormData;if(0===a.length)this.Notification.error(function(t){let e=[].slice.call(arguments,1),a=0;return t.replace(/%s/g,(()=>e[a++]))}(e.instant("Upload.errorValidation"),t.data.maxSize,t.data.filter));else{for(let t=0;t<a.length;t++)l.append("file",a[t]);let e=JSON.parse(localStorage.getItem("_u")),s=window.isUsingCookie()?{"Content-Type":void 0}:{"Content-Type":void 0,"X-AUTH-TOKEN":e?e.token:""};this.$promise=n({method:"POST",url:(window.hostApp||"")+i,data:l,headers:s,onProgress:function(e){this.safeApply((function(){if(e.lengthComputable){let a=e.loaded/e.total*100|0;t.progress=a}t.uploading=!0}))}.bind(this)}).success(function(e,a,n,i){o.cronapi.evalInContext(JSON.stringify(e)).then((e=>{t.uploaded=!0,t.uploading=!1,t.close()}))}.bind(this)).error(function(e,a,o){this.Notification.error(e.error),t.uploading=!1,t.close()}.bind(this))}}.bind(t),t.close=function(){t.modal.hide()}}]);
|
package/gulpfile.js
CHANGED
|
@@ -1,54 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
mangle: {
|
|
17
|
-
keepClassName: true
|
|
18
|
-
}
|
|
19
|
-
}))
|
|
1
|
+
import gulp from 'gulp';
|
|
2
|
+
import uglify from 'gulp-uglify';
|
|
3
|
+
import uglifycss from 'gulp-uglifycss';
|
|
4
|
+
import htmlmin from 'gulp-htmlmin';
|
|
5
|
+
import ngAnnotate from 'gulp-ng-annotate-patched';
|
|
6
|
+
import terser from 'gulp-terser';
|
|
7
|
+
|
|
8
|
+
gulp.task('minify-js', function () {
|
|
9
|
+
return gulp.src(['js/**/*.js'])
|
|
10
|
+
.pipe(ngAnnotate())
|
|
11
|
+
.pipe(terser({
|
|
12
|
+
mangle: {
|
|
13
|
+
keep_classnames: true
|
|
14
|
+
}
|
|
15
|
+
}))
|
|
20
16
|
.pipe(gulp.dest('dist/js/'));
|
|
21
17
|
});
|
|
22
18
|
|
|
23
|
-
gulp.task('minify-css', function() {
|
|
24
|
-
return gulp.src(['css/**/*', '!css/fonts/**'])
|
|
19
|
+
gulp.task('minify-css', function () {
|
|
20
|
+
return gulp.src(['css/**/*', '!css/fonts/**'])
|
|
25
21
|
.pipe(uglifycss())
|
|
26
22
|
.pipe(gulp.dest('dist/css/'));
|
|
27
23
|
});
|
|
28
24
|
|
|
29
|
-
gulp.task('minify-
|
|
30
|
-
return gulp.src('img/**')
|
|
31
|
-
.pipe(imagemin({
|
|
32
|
-
optimizationLevel: 5,
|
|
33
|
-
progressive: true,
|
|
34
|
-
interlaced: true
|
|
35
|
-
}))
|
|
36
|
-
.pipe(gulp.dest('dist/img/'));
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
gulp.task('minify-components-css', function() {
|
|
25
|
+
gulp.task('minify-components-css', function () {
|
|
40
26
|
return gulp.src(['components/css/**'])
|
|
41
27
|
.pipe(uglifycss())
|
|
42
28
|
.pipe(gulp.dest('dist/components/css/'));
|
|
43
29
|
});
|
|
44
30
|
|
|
45
|
-
gulp.task('minify-components-js', function() {
|
|
31
|
+
gulp.task('minify-components-js', function () {
|
|
46
32
|
return gulp.src(['components/js/**'])
|
|
47
33
|
.pipe(uglify())
|
|
48
34
|
.pipe(gulp.dest('dist/components/js/'));
|
|
49
35
|
});
|
|
50
36
|
|
|
51
|
-
gulp.task('minify-components-templates', function() {
|
|
37
|
+
gulp.task('minify-components-templates', function () {
|
|
52
38
|
return gulp.src(['components/templates/**', '!components/templates/blockly/**', '!components/templates/blockly'])
|
|
53
39
|
.pipe(htmlmin({
|
|
54
40
|
collapseWhitespace: true
|
|
@@ -56,18 +42,17 @@ gulp.task('minify-components-templates', function() {
|
|
|
56
42
|
.pipe(gulp.dest('dist/components/templates/'));
|
|
57
43
|
});
|
|
58
44
|
|
|
59
|
-
gulp.task('i18n', function() {
|
|
45
|
+
gulp.task('i18n', function () {
|
|
60
46
|
return gulp.src('i18n/**').pipe(gulp.dest('dist/i18n/'));
|
|
61
47
|
});
|
|
62
48
|
|
|
63
|
-
gulp.task('build',
|
|
49
|
+
gulp.task('build', gulp.series(
|
|
64
50
|
'minify-js',
|
|
65
51
|
'minify-css',
|
|
66
|
-
'minify-img',
|
|
67
52
|
'minify-components-css',
|
|
68
53
|
'minify-components-js',
|
|
69
54
|
'minify-components-templates',
|
|
70
55
|
'i18n'
|
|
71
|
-
|
|
56
|
+
));
|
|
72
57
|
|
|
73
|
-
gulp.task('default',
|
|
58
|
+
gulp.task('default', gulp.series('build'));
|
package/js/app.authentication.js
CHANGED
|
@@ -93,6 +93,7 @@ var app = (function() {
|
|
|
93
93
|
config.headers['X-AUTH-TOKEN'] = _u.token;
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
+
config.headers['X-Requested-With'] = 'XMLHttpRequest';
|
|
96
97
|
return config;
|
|
97
98
|
},
|
|
98
99
|
responseError: function (error) {
|
|
@@ -369,7 +370,7 @@ var app = (function() {
|
|
|
369
370
|
let $http = $injector.get('$http');
|
|
370
371
|
let Notification = $injector.get('Notification');
|
|
371
372
|
app.isPublicRoute(currentRoute) || window.refreshToken(Notification, $http, ()=>{}, (e)=>{
|
|
372
|
-
if (e.status !== 404) {
|
|
373
|
+
if (e && e.status !== 404) {
|
|
373
374
|
localStorage.removeItem("_u");
|
|
374
375
|
$state.go("login");
|
|
375
376
|
}
|
|
@@ -553,6 +554,14 @@ app.factory('customTranslateLoader', function ($http, $q) {
|
|
|
553
554
|
|
|
554
555
|
});
|
|
555
556
|
|
|
557
|
+
var getRequestData = data => {
|
|
558
|
+
let result = data || {};
|
|
559
|
+
if (data.data && typeof data.data === 'object') {
|
|
560
|
+
result = data.data;
|
|
561
|
+
}
|
|
562
|
+
return result;
|
|
563
|
+
};
|
|
564
|
+
|
|
556
565
|
window.safeApply = function(fn) {
|
|
557
566
|
var phase = this.$root.$$phase;
|
|
558
567
|
if (phase == '$apply' || phase == '$digest') {
|