cronapp-framework-js 2.9.6-SP.34 → 2.9.6-SP.35

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.
@@ -18,7 +18,7 @@ maskDirectiveAsDate.$inject=["$compile","$translate","$parse"],maskDirectiveMask
18
18
  <span class="glyphicon glyphicon-facetime-video"></span>
19
19
  <span class="sr-only">{{"Upload.camera" | translate}}</span>
20
20
  </button>
21
- </div>`;var s="";i.maxFileSize&&(s=i.maxFileSize);var c="";c=i.imgAltText?i.imgAltText:"Admin.view.Picture",l=$(l.split("$id$").join(i.id?i.id+"-input":"textinput-picture").split("$idbutton$").join(i.id?i.id+"-button":"textinput-picture-button").split("$ngModel$").join(i.ngModel).split("$required$").join(o).split("$userHtml$").join(d).split("$maxFileSize$").join(s).split("$picture$").join(t.instant(c)));var p="true"==i.readOnly;p&&(l.find(".remove-image-button").remove(),l.find(".start-camera-button-attribute").remove()),n.html(l),e(l)(n.scope())}}}]).directive("dynamicFile",["$compile","$translate",function(e,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(a,n,i){var o=i.ngRequired&&"true"==i.ngRequired?"required":"",d=i.ngModel.split("."),r=d[0],l=d[d.length-1],s=_Mathfloor(1e3*Math.random()+20),c=n.html(),p="",u=i.acceptFile||"'*.*'";i.maxFileSize&&(p=i.maxFileSize);let m=i.fileInfo?`'${i.fileInfo}'`:"undefined";var g=" <div ng-show=\"!$ngModel$\" ngf-drop=\"\" ngf-drag-over-class=\"dragover\"> <input id=\"$id$\" aria-label=\"$userHtml$\" ng-if=\"!$ngModel$\" autocomplete=\"off\" tabindex=\"-1\" class=\"uiSelectRequired ui-select-offscreen\" style=\"top: inherit !important;margin-left: 85px !important;margin-top: 50px !important; display: none;\" type=text ng-model=\"$ngModel$\" $required$> <button id=\"$idbutton$\" class=\"btn\" ngf-drop=\"\" ngf-select=\"\" ngf-change=\"cronapi.internal.uploadFile('$ngModel$', $file, 'uploadprogress$number$', $fileInfo$, $invalidFiles)\" ngf-max-size=\"$maxFileSize$\" ngf-pattern=\"$acceptPattern$\" ngf-accept=\"$acceptFile$\"> $userHtml$ </button> <div class=\"progress\" data-type=\"bootstrapProgress\" id=\"uploadprogress$number$\" style=\"display:none\"> <div class=\"progress-bar\" role=\"progressbar\" aria-valuenow=\"70\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width:0%\"> <span class=\"sr-only\"></span> </div> </div> </div> <div ng-show=\"$ngModel$\" class=\"upload-image-component-attribute\"> <button class=\"btn btn-danger btn-xs ng-scope\" style=\"float:right;\" ng-if=\"$ngModel$\" ng-click=\"$ngModel$=null\"> <span class=\"glyphicon glyphicon-remove\"></span> <span class=\"sr-only\">{{\"Remove\" | translate}}</span> </button> <div> <div ng-bind-html=\"cronapi.internal.generatePreviewDescriptionByte($ngModel$, $fileInfo$)\"></div> <a href=\"javascript:void(0)\" ng-click=\"cronapi.internal.downloadFileEntity($datasource$,'$field$', undefined, $fileInfo$)\">$lblDownload$</a> </div> </div> ";g=$(g.split("$id$").join(i.id?i.id+"-input":"textinput-file").split("$idbutton$").join(i.id?i.id+"-button":"textinput-file-button").split("$ngModel$").join(i.ngModel).split("$datasource$").join(r).split("$field$").join(l).split("$number$").join(s).split("$required$").join(o).split("$userHtml$").join(c).split("$maxFileSize$").join(p).split("$lblDownload$").join(t.instant("download")).split("$fileInfo$").join(m).split("$acceptPattern$").join(u).split("$acceptFile$").join(u)),n.html(g),e(g)(n.scope())}}}]).directive("dynamicFile",["$compile",function(e){return{restrict:"E",replace:!0,scope:{ngModel:"@"},require:"ngModel",template:"<div></div>",init:function(e){e.ngModel||(e.ngModel="")},link:function(t,a,n){this.init(t);var i=t,o=n.ngRequired&&"true"==n.ngRequired?"required":"",d=i.ngModel.split("."),r=d[0],l=d[d.length-1],s=_Mathfloor(1e3*Math.random()+20);a.append(" <div ng-show=\"!$ngModel$\"> <input ng-if=\"!$ngModel$\" autocomplete=\"off\" tabindex=\"-1\" class=\"uiSelectRequired ui-select-offscreen\" style=\"top: inherit !important;margin-left: 85px !important;margin-top: 50px !important;\" type=text ng-model=\"$ngModel$\" $required$> <div class=\"form-group upload-image-component\" ngf-drop=\"\" ngf-drag-over-class=\"dragover\"> <img class=\"ng-scope\" style=\"height: 128px; width: 128px;\" ng-if=\"!$ngModel$\" data-ng-src=\"/plugins/cronapp-framework-js/img/selectFile.png\" ngf-drop=\"\" ngf-select=\"\" ngf-change=\"cronapi.internal.uploadFile('$ngModel$', $file, 'uploadprogress$number$')\" accept=\"*\"> <progress id=\"uploadprogress$number$\" max=\"100\" value=\"0\" style=\"position: absolute; width: 128px; margin-top: -134px;\">0</progress> </div> </div> <div ng-show=\"$ngModel$\" class=\"form-group upload-image-component\"> <div class=\"btn btn-danger btn-xs ng-scope\" style=\"float:right;\" ng-if=\"$ngModel$\" ng-click=\"$ngModel$=null\"> <span class=\"glyphicon glyphicon-remove\"></span> </div> <div> <div ng-bind-html=\"cronapi.internal.generatePreviewDescriptionByte($ngModel$)\"></div> <a href=\"javascript:void(0)\" ng-click=\"cronapi.internal.downloadFileEntity($datasource$,'$field$')\">download</a> </div> </div> ".split("$ngModel$").join(i.ngModel).split("$datasource$").join(r).split("$field$").join(l).split("$number$").join(s).split("$required$").join(o)),e(a)(a.scope())}}}]).directive("pwCheck",[function(){"use strict";return{require:"ngModel",link:function(e,t,a,n){var i="#"+a.pwCheck;t.add(i).on("keyup",function(){e.$apply(function(){var e=t.val()===$(i).val();n.$setValidity("pwmatch",e)})})}}}]).directive("ngClick",[function(){"use strict";return{link:function(scope,elem,attrs,ctrl){if(scope.rowData){var crnDatasource=elem.closest("[crn-datasource]");0<crnDatasource.length&&elem.on("click",function(){scope.$apply(function(){var datasource=eval(crnDatasource.attr("crn-datasource"));datasource.active=scope.rowData})})}}}}]).directive("valid",function(){return{require:"?ngModel",restrict:"A",link:function(e,t,a,n){var i={cpf:CPF,cnpj:CNPJ};if(n)n.$validators[a.valid]=function(e,n){var o=e||n,d=i[a.valid].isValid(o);return d||null===o?t[0].setCustomValidity(""):t.scope().$applyAsync(function(){t[0].setCustomValidity(t[0].dataset.errorMessage)}),d||!o};else{let e=function(){setTimeout(()=>{var e=t.data("rawvalue"),n=i[a.valid].isValid(e);n||null===e?t.removeClass("k-invalid"):t.addClass("k-invalid")})};t.on("keydown",e).on("keyup",e)}}}}).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=[],d=JSON.parse(localStorage.getItem("_u"));d&&d.roles&&(o=d.roles.toLowerCase().split(","));for(var r,l=parsePermission(n.cronappSecurity),s=!1,c=!1,p=!1,u=0;u<o.length;u++)r=o[u].trim(),r&&(l.visible[r]&&(s=!0),l.enabled[r]&&(c=!0),l.render[r]&&(p=!0));for(var r,u=0;u<o.length;u++)r=o[u].trim(),r&&(l.notvisible[r]&&(s=!1),l.notenabled[r]&&(c=!1),l.notrender[r]&&(p=!1));let m=$(a),g=()=>{s||m.hide(),c||m.find("*").addBack().attr("disabled",!0).off("click").on("click",t=>t.preventDefault()),p||m.remove()},f=setInterval(()=>{e.renderFinished&&(g(),clearInterval(f))})}}}]).directive("qr",["$window",function(e){return{restrict:"A",require:"^ngModel",template:"<canvas ng-hide=\"image\"></canvas><img ng-if=\"image\" ng-src=\"{{canvasImage}}\"/>",link:function o(t,a,n,i){t.size===void 0&&n.size&&(t.text=n.size);var d=function(){return t.typeNumber||0},r=function(){var e={L:1,M:0,Q:3,H:2},a=t.correctionLevel||0;return e[a]||0},l=function(){return i.$modelValue||""},s=function(){let e=$(a).outerWidth(),n=$(a).outerHeight(),i=e<n?e:n;return t.size||i},c=function(e){var t=/^[0-9]*$/;return t.test(e)},p=function(e){var t=/^[0-9A-Z $%*+\-./:]*$/;return t.test(e)},u=function(e){for(var t,a=0;a<e.length;a++)if(t=e.charCodeAt(a),255<t)return!1;return!0},m=function(e,t){if("NUMBER"===e&&!c(t))throw new Error("The `NUMBER` input mode is invalid for text.");else if("ALPHA_NUM"===e&&!p(t))throw new Error("The `ALPHA_NUM` input mode is invalid for text.");else if("8bit"===e&&!u(t))throw new Error("The `8bit` input mode is invalid for text.");else if(!u(t))throw new Error("Input mode is invalid for text.");return!0},g=function(e){var a=t.inputMode;return a=a||(c(e)?"NUMBER":void 0),a=a||(p(e)?"ALPHA_NUM":void 0),a=a||(u(e)?"8bit":""),m(a,e)?a:""},f=a.find("canvas")[0],h=!!e.CanvasRenderingContext2D;t.TYPE_NUMBER=d(),t.TEXT=l(),t.CORRECTION=r(),t.SIZE=s(),t.INPUT_MODE=g(t.TEXT),t.canvasImage="";var v=function(e,t,a,n){for(var i=Math.round,o=Math.ceil,d=0;d<a;d++)for(var r=0;r<a;r++){var l=o((r+1)*n)-_Mathfloor(r*n),s=o((d+1)*n)-_Mathfloor(d*n);e.fillStyle=t.isDark(d,r)?"#000":"#fff",e.fillRect(i(r*n),i(d*n),l,s)}},b=function(e,a,n,i,o,d){var r=/^\s+|\s+$/g,l=a.replace(r,""),s=new QRCode(n,i,d);s.addData(l),s.make();var c=e.getContext("2d"),p=s.getModuleCount(),u=o/p;e.width=e.height=o,h&&(v(c,s,p,u),t.canvasImage=e.toDataURL()||"")};t.$watch(function(){return i.$modelValue},function(e,a){(e!==a||e!==t.TEXT)&&(t.text=i.$modelValue,t.TEXT=l(),t.INPUT_MODE=g(t.TEXT),b(f,t.TEXT,t.TYPE_NUMBER,t.CORRECTION,t.SIZE,t.INPUT_MODE))}),b(f,t.TEXT,t.TYPE_NUMBER,t.CORRECTION,t.SIZE,t.INPUT_MODE)}}}]).directive("uiSelect",["$compile",function(e){return{restrict:"E",require:"ngModel",link:function(t,a,n,i){let o=()=>{"$apply"!==t.$$phase&&"$digest"!==t.$$phase?a.find("i").remove():setTimeout(()=>o(),200)};if(o(),null!=n.required||"true"===n.ngRequired){$(a).append("<input autocomplete=\"off\" tabindex=\"-1\" class=\"uiSelectRequired ui-select-offscreen\" style=\"left: 50%!important; top: 100%!important;\" type=text ng-model=\""+n.ngModel+"\" required>");var d=$(a).find("input.uiSelectRequired");e(d)(a.scope())}}}}]).filter("raw",["$translate",function(e){return function(e){return null!=e&&void 0!==e?"number"==typeof e?e+"":"boolean"==typeof e?e+"":e instanceof Date?"datetimeoffset'"+e.toISOString()+"'":10<=e.length&&e.match(ISO_PATTERN)?"datetimeoffset'"+e+"'":"'"+e.replaceAll("'","''")+"'":""}}]).filter("js",["$translate",function(e){return function(e){return null!=e&&void 0!==e?"number"==typeof e||"boolean"==typeof e?e+"":e instanceof Date?cronapi.toDate(e.toISOString()):10<=e.length&&e.match(ISO_PATTERN)?cronapi.toDate(e):"'"+e+"'":"undefined"}}]).filter("mask",["$translate",function(e){return function(t,a,n){if(a=parseMaskType(a,e),!a)return t;var i;if(void 0===n?i=window.fixedTimeZone:(i="date"==n||"datetime"==n||"time"==n,!window.fixedTimeZone&&(i=!1)),0<a.indexOf(";local")&&(i=!1),a=a.replace(";1","").replace(";0","").replace(";local","").trim(),"string"==typeof t&&t.match(isoDate)||t instanceof Date)return i?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 o=$("<input type=\"text\">");return o.mask(a),o.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("mask",maskDirectiveMask).directive("cronappFilter",["$compile",function($compile){return{restrict:"A",require:"?ngModel",setFilterInButton:function(e,t,a){var n=e.closest("fieldset");if(n){var i=n.find("button[cronapp-filter]");if(i){var o=i.data("filters");o||(o=[]);var d=-1,r=e.attr("ng-model");if($(o).each(function(e){this.ngModel==r&&(d=e)}),-1<d&&o.splice(d,1),0<t.length){var l={ngModel:r,bindedFilter:t};o.push(l)}i.data("filters",o)}}},makeAutoPostSearch:function(e,t,a,n){var i=e.closest("fieldset");if(i&&0<i.length){var o=i.find("button[cronapp-filter]");if(o&&0<o.length){var d=o.data("filters");d&&0<d.length&&(t="",$(d).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("fieldset");if(!fieldset)return;var button=fieldset.find("button[cronapp-filter]");if(!button)return;if(!button.attr("crn-datasource"))return;datasource=eval(button.attr("crn-datasource"))}var isOData=datasource.isOData();$(filtersSplited).each(function(){0<this.length&&(""!=filterTemplate&&(isOData?filterTemplate+=" or ":filterTemplate+=";"),isOData?"="==operator&&"text"==typeElement?filterTemplate+="substringof({value.lower}, tolower("+this+"))":"="==operator?filterTemplate+=this+" eq {value}":"!="==operator?filterTemplate+=this+" ne {value}":">"==operator?filterTemplate+=this+" gt {value}":">="==operator?filterTemplate+=this+" ge {value}":"<"==operator?filterTemplate+=this+" lt {value}":"<="==operator&&(filterTemplate+=this+" le {value}"):"text"==typeElement?filterTemplate+=this+"@"+operator+"%{value}%":filterTemplate+=this+operator+"{value}")}),0==filterTemplate.length&&(isOData?filterTemplate="{value}":filterTemplate="%{value}%");var selfDirective=this;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+="M":"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 i=filterTemplate.split("{value}").join(n);if("string"!=typeof n)i=i.split("{value.lower}").join(n);else if(i.startsWith("substringof({")){var o=n.split("'").join("").toLowerCase().trim().split(" "),d="";o.forEach(function(e,t){d+=i.split("{value.lower}").join("'"+e+"'"),t<o.length-1&&(d+=" or ")}),i=d}else i=i.split("{value.lower}").join(n.toLowerCase());0==ngModelCtrl.$viewValue.length&&(i=""),selfDirective.setFilterInButton($element,i,operator),autopost&&selfDirective.makeAutoPostSearch($element,i,datasource,attrs)}}):"text"==typeElement?$element.on("keyup",function(){var datasource=eval(attrs.crnDatasource),value=void 0;value=ngModelCtrl&&null!=ngModelCtrl?ngModelCtrl.$viewValue:this.value;var bindedFilter=filterTemplate.split("{value}").join(value);0==this.value.length&&(bindedFilter=""),selfDirective.setFilterInButton($element,bindedFilter,operator),autopost&&selfDirective.makeAutoPostSearch($element,bindedFilter,datasource,attrs)}):$element.on("change",function(){var datasource=eval(attrs.crnDatasource),value=void 0,typeElement=$(this).attr("type");if(null!=attrs.asDate&&(typeElement="date"),ngModelCtrl&&null!=ngModelCtrl)value=ngModelCtrl.$viewValue;else if("checkbox"==typeElement)value=$(this).is(":checked");else if("date"!=typeElement)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=""),selfDirective.setFilterInButton($element,bindedFilter,operator),autopost&&selfDirective.makeAutoPostSearch($element,bindedFilter,datasource,attrs)})},forceDisableDatasource:function(datasourceName,scope){var disableDatasource=setInterval(function(){try{var datasourceInstance=eval(datasourceName);datasourceInstance&&($(document).ready(function(){var 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)}})},link:function(e,t,a,n){var i=$(t),o=i.data("type")||i.attr("type");a.asDate!=null&&(o="date");var d="=";a.cronappFilterOperator&&0<a.cronappFilterOperator.length&&(d=a.cronappFilterOperator);var r=!0;a.cronappFilterAutopost&&"false"==a.cronappFilterAutopost&&(r=!1),setTimeout(function(){"INPUT"==i[0].tagName?this.inputBehavior(e,t,a,n,i,o,d,r):this.buttonBehavior(e,t,a,n,i,o,d,r)}.bind(this),100)}}}]).directive("cronRichEditor",["$compile",function(e){return{restrict:"E",replace:!0,require:"ngModel",parseToTinyMCEOptions:function(e){var t={allowFullScreen:"fullscreen |",allowPage:"fullpage newdocument code pagebreak |",allowPrint:"preview print |",allowTransferArea:"cut copy paste |",allowDoUndo:"undo redo |",allowSymbol:"charmap |",allowEmbeddedImage:"bdesk_photo |",allowFont:"formatselect fontselect fontsizeselect strikethrough bold italic underline removeformat |",allowLinks:"link unlink anchor |",allowParagraph:"alignleft aligncenter alignright alignjustify numlist bullist outdent indent blockquote hr |",allowFormulas:"tiny_mce_wiris_formulaEditor tiny_mce_wiris_formulaEditorChemistry tiny_mce_wiris_CAS |"},a={menubar:!1,statusbar:!1,plugins:"bdesk_photo advlist anchor autolink autoresize autosave charmap code colorpicker contextmenu directionality emoticons fullpage fullscreen hr image imagetools importcss insertdatetime legacyoutput link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace tabfocus table template toc visualblocks visualchars wordcount tiny_mce_wiris colorpicker textcolor",toolbar:"",content_style:""};for(var n in e)n.startsWith("allow")&&e[n]&&(a.toolbar+=" "+t[n]);return a.toolbar+=" forecolor backcolor ",a.menubar=e.showMenuBar,a.statusbar=e.showStatusBar,a.content_style=e.contentStyle,a.readonly=e.allowReadonly,JSON.stringify(a)},link:function(t,a,n,i){var o=JSON.parse(n.options),d=this.parseToTinyMCEOptions(o),r=" <textarea ui-tinymce=\"$options$\" ng-model=\"$ngModel$\" id=\"$id$\" aria-label=\"cronRichEditor\" ng-cron-click=\"$ngClick$\" ng-cron-dblclick=\"$ngDblclick$\" ng-cron-mousedown=\"$ngMouseDown$\" ng-cron-mouseup=\"$ngMouseUp$\" ng-cron-mousemove=\"$ngMouseMove$\" ng-cron-mouseover=\"$ngMouseOver$\" ng-cron-mouseenter=\"$ngMouseEnter$\" ng-cron-mouseleave=\"$ngMouseLeave$\" ng-cron-keydown=\"$ngKeydown$\" ng-cron-keyup=\"$ngKeyup$\" ng-cron-keypress=\"$ngKeypress$\" ng-context-menu=\"$ngContextMenu$\" ng-cron-paste=\"$ngPaste$\" ng-cron-init=\"$ngInit$\" ng-cron-focus=\"$ngFocus$\" ng-cron-blur=\"$ngBlur$\" ng-before-set-content=\"$ngBeforeSetContent$\" ng-set-content=\"$ngSetContent$\" ng-get-content=\"$ngGetContent$\" ng-pre-process=\"$ngPreProcess$\" ng-post-process\"$ngPostProcess$\" ng-node-change=\"$ngNodeChange$\" ng-cron-undo=\"$ngUndo$\" ng-cron-redo=\"$ngRedo$\" ng-cron-change=\"$ngChange$\" ng-cron-dirty=\"$ngDirty$\" ng-cron-remove=\"$ngRemove$\" ng-exec-command=\"$ngExecCommand$\" ng-paste-pre-process=\"$ngPastePreProcess$\" ng-paste-post-process=\"$ngPastePostProcess$\" ng-add-editor=\"$ngAddEditor$\" ng-remove-editor=\"$ngRemoveEditor$\"> </textarea> ";r=$(r.split("$ngModel$").join(n.ngModel).split("$ngClick$").join(n.ngCronClick||"").split("$ngDblclick$").join(n.ngCronDblclick||"").split("$ngMouseDown$").join(n.ngCronMouseDown||"").split("$ngMouseUp$").join(n.ngCronMouseUp||"").split("$ngMouseMove$").join(n.ngCronMousemove||"").split("$ngMouseOver$").join(n.ngCronMouseOver||"").split("$ngMouseEnter$").join(n.ngCronMouseenter||"").split("$ngMouseLeave$").join(n.ngCronMouseleave||"").split("$ngKeydown$").join(n.ngCronKeydown||"").split("$ngKeyup$").join(n.ngCronKeyup||"").split("$ngKeypress$").join(n.ngCronKeypress||"").split("$ngContextMenu$").join(n.ngContextMenu||"").split("$ngPaste$").join(n.ngCronPaste||"").split("$ngInit$").join(n.ngCronInit||"").split("$ngFocus$").join(n.ngCronFocus||"").split("$ngBlur$").join(n.ngCronBlur||"").split("$ngBeforeSetContent$").join(n.ngBeforeSetContent||"").split("$ngSetContent$").join(n.ngSetContent||"").split("$ngGetContent$").join(n.ngGetContent||"").split("$ngPreProcess$").join(n.ngPreProcess||"").split("$ngPostProcess$").join(n.ngPostProcess||"").split("$ngNodeChange$").join(n.ngNodeChange||"").split("$ngUndo$").join(n.ngCronUndo||"").split("$ngRedo$").join(n.ngCronRedo||"").split("$ngChange$").join(n.ngCronChange||"").split("$ngDirty$").join(n.ngCronDirty||"").split("$ngRemove$").join(n.ngRemove||"").split("$ngExecCommand$").join(n.ngExecCommand||"").split("$ngPastePreProcess$").join(n.ngPastePreProcess||"").split("$ngPastePostProcess$").join(n.ngPastePostProcess||"").split("$ngAddEditor$").join(n.ngAddEditor||"").split("$ngRemoveEditor$").join(n.ngRemoveEditor||"").split("$id$").join(n.id||app.common.generateId()).split("$options$").join(escape(d)));var l=angular.element(r);a.html(""),a.append(l),a.attr("id",null),e(l)(t);let s=$(`cron-rich-editor[ng-model="${n.ngModel}"]`),c=setInterval(()=>{s.find(".mce-container").length&&(s.find("button").each((e,t)=>{let a=$(t),n=a.parent().attr("aria-label")||"";a.attr("aria-label",n)}),clearInterval(c))},100)}}}]).directive("cronDashboardViewer",cronReportViewer).directive("cronReportViewer",cronReportViewer).directive("cronTimeline",["$compile","$parse",function($compile,$parse){"use strict";var defaultAdvancedTemplate="<ul class=\"timeline\">\r\n <timeline-event side=\"\" class=\"ng-scope\" ng-repeat=\"rowData in datasource\">\r\n <li class=\"timeline-event {{rowData[options.fields.field4] == '2' ? 'timeline-inverted' : ''}}\">\r\n <timeline-badge class=\"{{$odd ? 'info' : 'warning'}} bounce-in\">\r\n <div class=\"timeline-badge\">\r\n <i class=\"glyphicon {{rowData[options.fields.field3] ? rowData[options.fields.field3] : 'glyphicon-check'}}\"></i>\r\n </div>\r\n </timeline-badge>\r\n <timeline-panel class=\"info bounce-in\">\r\n <div class=\"timeline-panel\">\r\n <timeline-heading class=\"ng-scope\">\r\n <div class=\"timeline-heading\">\r\n <h4 class=\"ng-binding ng-scope\">{{rowData[options.fields.field0]}}</h4>\r\n <p class=\"ng-scope\">\r\n <small class=\"text-muted ng-binding\"><i class=\"glyphicon glyphicon-time\"></i>{{rowData[options.fields.field1]|mask:options.fields.mask2:options.fields.type1}}</small>\r\n </p>\r\n </div>\r\n </timeline-heading>\r\n <p ng-if=\"rowData[options.fields.field2]\" class=\"ng-binding ng-scope\">{{rowData[options.fields.field2]}}</p>\r\n </div>\r\n </timeline-panel>\r\n </li>\r\n </timeline-event>\r\n</ul>",getExpression=function(e){return"rowData in ".concat(e).concat(".data")};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="";try{optionsList=JSON.parse(attrs.options),dataSourceName=optionsList.dataSourceScreen.name;var dataSource=eval(optionsList.dataSourceScreen.name);scope.options=optionsList,attrs.ngModel&&(scope.changeRowDataField=function(e){e=dataSource.getKeyValues(e);var t=Object.keys(e);return 1===t.length&&(e=e[t]),e}),scope.options=optionsList,scope.options.fields={},scope.options.randomModel=_Mathfloor(9e3*Math.random())+1e3;for(var column,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)}catch(e){console.log("CronTimeline invalid configuration! "+e)}scope.options.fields.image&&"do-not-show"!=scope.options.imageType&&(scope.options.imageClassPosition="item-"+scope.options.imageType+"-"+scope.options.imagePosition),scope.options.advancedTemplate||(scope.options.advancedTemplate="<ul class=\"timeline\">\r\n <timeline-event side=\"\" class=\"ng-scope\" ng-repeat=\"rowData in datasource\">\r\n <li class=\"timeline-event {{rowData[options.fields.field4] == '2' ? 'timeline-inverted' : ''}}\">\r\n <timeline-badge class=\"{{$odd ? 'info' : 'warning'}} bounce-in\">\r\n <div class=\"timeline-badge\">\r\n <i class=\"glyphicon {{rowData[options.fields.field3] ? rowData[options.fields.field3] : 'glyphicon-check'}}\"></i>\r\n </div>\r\n </timeline-badge>\r\n <timeline-panel class=\"info bounce-in\">\r\n <div class=\"timeline-panel\">\r\n <timeline-heading class=\"ng-scope\">\r\n <div class=\"timeline-heading\">\r\n <h4 class=\"ng-binding ng-scope\">{{rowData[options.fields.field0]}}</h4>\r\n <p class=\"ng-scope\">\r\n <small class=\"text-muted ng-binding\"><i class=\"glyphicon glyphicon-time\"></i>{{rowData[options.fields.field1]|mask:options.fields.mask2:options.fields.type1}}</small>\r\n </p>\r\n </div>\r\n </timeline-heading>\r\n <p ng-if=\"rowData[options.fields.field2]\" class=\"ng-binding ng-scope\">{{rowData[options.fields.field2]}}</p>\r\n </div>\r\n </timeline-panel>\r\n </li>\r\n </timeline-event>\r\n</ul>");var 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,$(element).replaceWith(templateDyn);var $element=templateDyn,eventItem=$element.find("timeline-event");"rowData in datasource"===$(eventItem).attr("ng-repeat")&&eventItem.attr("ng-repeat",getExpression(dataSourceName)),$compile(templateDyn,null,9999998)(scope)}}}]).directive("cronScheduler",["$compile","$translate",function($compile,$translate){return{estrict:"E",replace:!0,initCulture:function(){var e=$translate.use();e=e.replace(/_/gm,"-");var t=e.split("-");t[t.length-1]=t[t.length-1].toUpperCase(),e=t.join("-"),kendo.culture(e)},getSchedulerModel:function(e){let t={id:"id",fields:{}};for(let a in e)t.fields[a]={from:e[a].name,validation:{required:!e[a].nullable}};return t},mergeSchedulerEventWithDatasourceActive:(e,t)=>Object.assign(e.active,t),setDatasourceActiveItem:function(e,t,a){if(t){for(let n in e.data){let i=e.data[n][a];if(null!==i&&i===t[a])return e.active=e.copy(e.data[n],{}),e.active}return e.startEditing({}),e.active}},getSchedulerProperties:async function(t,a,n){let i="Expression"===t.initialDateStrategy?await n.$eval(generateBlocklyCall(t.initialDateBlocklyInfo,!0)):t.initialDate,o={start:null,end:null},d=function(e){return!angular.equals(o,e)},r=a=>{let e=a.sender.view(),n=a.sender.element.find(".k-scheduler-header.k-state-default.changed").length;"month"===e.name&&!n&&t.useCustomDaysOfWeek&&(a.sender.element.find(".k-scheduler-header.k-state-default").html(`<div class="k-scheduler-header k-state-default">
21
+ </div>`;var s="";i.maxFileSize&&(s=i.maxFileSize);var c="";c=i.imgAltText?i.imgAltText:"Admin.view.Picture",l=$(l.split("$id$").join(i.id?i.id+"-input":"textinput-picture").split("$idbutton$").join(i.id?i.id+"-button":"textinput-picture-button").split("$ngModel$").join(i.ngModel).split("$required$").join(o).split("$userHtml$").join(d).split("$maxFileSize$").join(s).split("$picture$").join(t.instant(c)));var p="true"==i.readOnly;p&&(l.find(".remove-image-button").remove(),l.find(".start-camera-button-attribute").remove()),n.html(l),e(l)(n.scope())}}}]).directive("dynamicFile",["$compile","$translate",function(e,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(a,n,i){var o=i.ngRequired&&"true"==i.ngRequired?"required":"",d=i.ngModel.split("."),r=d[0],l=d[d.length-1],s=_Mathfloor(1e3*Math.random()+20),c=n.html(),p="",u=i.acceptFile||"'*.*'";i.maxFileSize&&(p=i.maxFileSize);let m=i.fileInfo?`'${i.fileInfo}'`:"undefined";var g=" <div ng-show=\"!$ngModel$\" ngf-drop=\"\" ngf-drag-over-class=\"dragover\"> <input id=\"$id$\" aria-label=\"$userHtml$\" ng-if=\"!$ngModel$\" autocomplete=\"off\" tabindex=\"-1\" class=\"uiSelectRequired ui-select-offscreen\" style=\"top: inherit !important;margin-left: 85px !important;margin-top: 50px !important; display: none;\" type=text ng-model=\"$ngModel$\" $required$> <button id=\"$idbutton$\" class=\"btn\" ngf-drop=\"\" ngf-select=\"\" ngf-change=\"cronapi.internal.uploadFile('$ngModel$', $file, 'uploadprogress$number$', $fileInfo$, $invalidFiles)\" ngf-max-size=\"$maxFileSize$\" ngf-pattern=\"$acceptPattern$\" ngf-accept=\"$acceptFile$\"> $userHtml$ </button> <div class=\"progress\" data-type=\"bootstrapProgress\" id=\"uploadprogress$number$\" style=\"display:none\"> <div class=\"progress-bar\" role=\"progressbar\" aria-valuenow=\"70\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width:0%\"> <span class=\"sr-only\"></span> </div> </div> </div> <div ng-show=\"$ngModel$\" class=\"upload-image-component-attribute\"> <button class=\"btn btn-danger btn-xs ng-scope\" style=\"float:right;\" ng-if=\"$ngModel$\" ng-click=\"$ngModel$=null\"> <span class=\"glyphicon glyphicon-remove\"></span> <span class=\"sr-only\">{{\"Remove\" | translate}}</span> </button> <div> <div ng-bind-html=\"cronapi.internal.generatePreviewDescriptionByte($ngModel$, $fileInfo$)\"></div> <a href=\"javascript:void(0)\" ng-click=\"cronapi.internal.downloadFileEntity($datasource$,'$field$', undefined, $fileInfo$)\">$lblDownload$</a> </div> </div> ";g=$(g.split("$id$").join(i.id?i.id+"-input":"textinput-file").split("$idbutton$").join(i.id?i.id+"-button":"textinput-file-button").split("$ngModel$").join(i.ngModel).split("$datasource$").join(r).split("$field$").join(l).split("$number$").join(s).split("$required$").join(o).split("$userHtml$").join(c).split("$maxFileSize$").join(p).split("$lblDownload$").join(t.instant("download")).split("$fileInfo$").join(m).split("$acceptPattern$").join(u).split("$acceptFile$").join(u)),n.html(g),e(g)(n.scope())}}}]).directive("dynamicFile",["$compile",function(e){return{restrict:"E",replace:!0,scope:{ngModel:"@"},require:"ngModel",template:"<div></div>",init:function(e){e.ngModel||(e.ngModel="")},link:function(t,a,n){this.init(t);var i=t,o=n.ngRequired&&"true"==n.ngRequired?"required":"",d=i.ngModel.split("."),r=d[0],l=d[d.length-1],s=_Mathfloor(1e3*Math.random()+20);a.append(" <div ng-show=\"!$ngModel$\"> <input ng-if=\"!$ngModel$\" autocomplete=\"off\" tabindex=\"-1\" class=\"uiSelectRequired ui-select-offscreen\" style=\"top: inherit !important;margin-left: 85px !important;margin-top: 50px !important;\" type=text ng-model=\"$ngModel$\" $required$> <div class=\"form-group upload-image-component\" ngf-drop=\"\" ngf-drag-over-class=\"dragover\"> <img class=\"ng-scope\" style=\"height: 128px; width: 128px;\" ng-if=\"!$ngModel$\" data-ng-src=\"/plugins/cronapp-framework-js/img/selectFile.png\" ngf-drop=\"\" ngf-select=\"\" ngf-change=\"cronapi.internal.uploadFile('$ngModel$', $file, 'uploadprogress$number$')\" accept=\"*\"> <progress id=\"uploadprogress$number$\" max=\"100\" value=\"0\" style=\"position: absolute; width: 128px; margin-top: -134px;\">0</progress> </div> </div> <div ng-show=\"$ngModel$\" class=\"form-group upload-image-component\"> <div class=\"btn btn-danger btn-xs ng-scope\" style=\"float:right;\" ng-if=\"$ngModel$\" ng-click=\"$ngModel$=null\"> <span class=\"glyphicon glyphicon-remove\"></span> </div> <div> <div ng-bind-html=\"cronapi.internal.generatePreviewDescriptionByte($ngModel$)\"></div> <a href=\"javascript:void(0)\" ng-click=\"cronapi.internal.downloadFileEntity($datasource$,'$field$')\">download</a> </div> </div> ".split("$ngModel$").join(i.ngModel).split("$datasource$").join(r).split("$field$").join(l).split("$number$").join(s).split("$required$").join(o)),e(a)(a.scope())}}}]).directive("pwCheck",[function(){"use strict";return{require:"ngModel",link:function(e,t,a,n){var i="#"+a.pwCheck;t.add(i).on("keyup",function(){e.$apply(function(){var e=t.val()===$(i).val();n.$setValidity("pwmatch",e)})})}}}]).directive("ngClick",[function(){"use strict";return{link:function(scope,elem,attrs,ctrl){if(scope.rowData){var crnDatasource=elem.closest("[crn-datasource]");0<crnDatasource.length&&elem.on("click",function(){scope.$apply(function(){var datasource=eval(crnDatasource.attr("crn-datasource"));datasource.active=scope.rowData})})}}}}]).directive("valid",function(){return{require:"?ngModel",restrict:"A",link:function(e,t,a,n){var i={cpf:CPF,cnpj:CNPJ};if(n)n.$validators[a.valid]=function(e,n){var o=e||n,d=i[a.valid].isValid(o);return d||null===o?t[0].setCustomValidity(""):t.scope().$applyAsync(function(){t[0].setCustomValidity(t[0].dataset.errorMessage)}),d||!o};else{let e=function(){setTimeout(()=>{var e=t.data("rawvalue"),n=i[a.valid].isValid(e);n||null===e?t.removeClass("k-invalid"):t.addClass("k-invalid")})};t.on("keydown",e).on("keyup",e)}}}}).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=[],d=JSON.parse(localStorage.getItem("_u"));d&&d.roles&&(o=d.roles.toLowerCase().split(","));for(var r,l=parsePermission(n.cronappSecurity),s=!1,c=!1,p=!1,u=0;u<o.length;u++)r=o[u].trim(),r&&(l.visible[r]&&(s=!0),l.enabled[r]&&(c=!0),l.render[r]&&(p=!0));for(var r,u=0;u<o.length;u++)r=o[u].trim(),r&&(l.notvisible[r]&&(s=!1),l.notenabled[r]&&(c=!1),l.notrender[r]&&(p=!1));let m=$(a),g=()=>{s||m.hide(),c||m.find("*").addBack().css("pointer-events","none").attr("disabled",!0).off("click").on("click",t=>t.preventDefault()),p||m.remove()},f=setInterval(()=>{e.renderFinished&&(g(),clearInterval(f))})}}}]).directive("qr",["$window",function(e){return{restrict:"A",require:"^ngModel",template:"<canvas ng-hide=\"image\"></canvas><img ng-if=\"image\" ng-src=\"{{canvasImage}}\"/>",link:function o(t,a,n,i){t.size===void 0&&n.size&&(t.text=n.size);var d=function(){return t.typeNumber||0},r=function(){var e={L:1,M:0,Q:3,H:2},a=t.correctionLevel||0;return e[a]||0},l=function(){return i.$modelValue||""},s=function(){let e=$(a).outerWidth(),n=$(a).outerHeight(),i=e<n?e:n;return t.size||i},c=function(e){var t=/^[0-9]*$/;return t.test(e)},p=function(e){var t=/^[0-9A-Z $%*+\-./:]*$/;return t.test(e)},u=function(e){for(var t,a=0;a<e.length;a++)if(t=e.charCodeAt(a),255<t)return!1;return!0},m=function(e,t){if("NUMBER"===e&&!c(t))throw new Error("The `NUMBER` input mode is invalid for text.");else if("ALPHA_NUM"===e&&!p(t))throw new Error("The `ALPHA_NUM` input mode is invalid for text.");else if("8bit"===e&&!u(t))throw new Error("The `8bit` input mode is invalid for text.");else if(!u(t))throw new Error("Input mode is invalid for text.");return!0},g=function(e){var a=t.inputMode;return a=a||(c(e)?"NUMBER":void 0),a=a||(p(e)?"ALPHA_NUM":void 0),a=a||(u(e)?"8bit":""),m(a,e)?a:""},f=a.find("canvas")[0],h=!!e.CanvasRenderingContext2D;t.TYPE_NUMBER=d(),t.TEXT=l(),t.CORRECTION=r(),t.SIZE=s(),t.INPUT_MODE=g(t.TEXT),t.canvasImage="";var v=function(e,t,a,n){for(var i=Math.round,o=Math.ceil,d=0;d<a;d++)for(var r=0;r<a;r++){var l=o((r+1)*n)-_Mathfloor(r*n),s=o((d+1)*n)-_Mathfloor(d*n);e.fillStyle=t.isDark(d,r)?"#000":"#fff",e.fillRect(i(r*n),i(d*n),l,s)}},b=function(e,a,n,i,o,d){var r=/^\s+|\s+$/g,l=a.replace(r,""),s=new QRCode(n,i,d);s.addData(l),s.make();var c=e.getContext("2d"),p=s.getModuleCount(),u=o/p;e.width=e.height=o,h&&(v(c,s,p,u),t.canvasImage=e.toDataURL()||"")};t.$watch(function(){return i.$modelValue},function(e,a){(e!==a||e!==t.TEXT)&&(t.text=i.$modelValue,t.TEXT=l(),t.INPUT_MODE=g(t.TEXT),b(f,t.TEXT,t.TYPE_NUMBER,t.CORRECTION,t.SIZE,t.INPUT_MODE))}),b(f,t.TEXT,t.TYPE_NUMBER,t.CORRECTION,t.SIZE,t.INPUT_MODE)}}}]).directive("uiSelect",["$compile",function(e){return{restrict:"E",require:"ngModel",link:function(t,a,n,i){let o=()=>{"$apply"!==t.$$phase&&"$digest"!==t.$$phase?a.find("i").remove():setTimeout(()=>o(),200)};if(o(),null!=n.required||"true"===n.ngRequired){$(a).append("<input autocomplete=\"off\" tabindex=\"-1\" class=\"uiSelectRequired ui-select-offscreen\" style=\"left: 50%!important; top: 100%!important;\" type=text ng-model=\""+n.ngModel+"\" required>");var d=$(a).find("input.uiSelectRequired");e(d)(a.scope())}}}}]).filter("raw",["$translate",function(e){return function(e){return null!=e&&void 0!==e?"number"==typeof e?e+"":"boolean"==typeof e?e+"":e instanceof Date?"datetimeoffset'"+e.toISOString()+"'":10<=e.length&&e.match(ISO_PATTERN)?"datetimeoffset'"+e+"'":"'"+e.replaceAll("'","''")+"'":""}}]).filter("js",["$translate",function(e){return function(e){return null!=e&&void 0!==e?"number"==typeof e||"boolean"==typeof e?e+"":e instanceof Date?cronapi.toDate(e.toISOString()):10<=e.length&&e.match(ISO_PATTERN)?cronapi.toDate(e):"'"+e+"'":"undefined"}}]).filter("mask",["$translate",function(e){return function(t,a,n){if(a=parseMaskType(a,e),!a)return t;var i;if(void 0===n?i=window.fixedTimeZone:(i="date"==n||"datetime"==n||"time"==n,!window.fixedTimeZone&&(i=!1)),0<a.indexOf(";local")&&(i=!1),a=a.replace(";1","").replace(";0","").replace(";local","").trim(),"string"==typeof t&&t.match(isoDate)||t instanceof Date)return i?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 o=$("<input type=\"text\">");return o.mask(a),o.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("mask",maskDirectiveMask).directive("cronappFilter",["$compile",function($compile){return{restrict:"A",require:"?ngModel",setFilterInButton:function(e,t,a){var n=e.closest("fieldset");if(n){var i=n.find("button[cronapp-filter]");if(i){var o=i.data("filters");o||(o=[]);var d=-1,r=e.attr("ng-model");if($(o).each(function(e){this.ngModel==r&&(d=e)}),-1<d&&o.splice(d,1),0<t.length){var l={ngModel:r,bindedFilter:t};o.push(l)}i.data("filters",o)}}},makeAutoPostSearch:function(e,t,a,n){var i=e.closest("fieldset");if(i&&0<i.length){var o=i.find("button[cronapp-filter]");if(o&&0<o.length){var d=o.data("filters");d&&0<d.length&&(t="",$(d).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("fieldset");if(!fieldset)return;var button=fieldset.find("button[cronapp-filter]");if(!button)return;if(!button.attr("crn-datasource"))return;datasource=eval(button.attr("crn-datasource"))}var isOData=datasource.isOData();$(filtersSplited).each(function(){0<this.length&&(""!=filterTemplate&&(isOData?filterTemplate+=" or ":filterTemplate+=";"),isOData?"="==operator&&"text"==typeElement?filterTemplate+="substringof({value.lower}, tolower("+this+"))":"="==operator?filterTemplate+=this+" eq {value}":"!="==operator?filterTemplate+=this+" ne {value}":">"==operator?filterTemplate+=this+" gt {value}":">="==operator?filterTemplate+=this+" ge {value}":"<"==operator?filterTemplate+=this+" lt {value}":"<="==operator&&(filterTemplate+=this+" le {value}"):"text"==typeElement?filterTemplate+=this+"@"+operator+"%{value}%":filterTemplate+=this+operator+"{value}")}),0==filterTemplate.length&&(isOData?filterTemplate="{value}":filterTemplate="%{value}%");var selfDirective=this;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+="M":"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 i=filterTemplate.split("{value}").join(n);if("string"!=typeof n)i=i.split("{value.lower}").join(n);else if(i.startsWith("substringof({")){var o=n.split("'").join("").toLowerCase().trim().split(" "),d="";o.forEach(function(e,t){d+=i.split("{value.lower}").join("'"+e+"'"),t<o.length-1&&(d+=" or ")}),i=d}else i=i.split("{value.lower}").join(n.toLowerCase());0==ngModelCtrl.$viewValue.length&&(i=""),selfDirective.setFilterInButton($element,i,operator),autopost&&selfDirective.makeAutoPostSearch($element,i,datasource,attrs)}}):"text"==typeElement?$element.on("keyup",function(){var datasource=eval(attrs.crnDatasource),value=void 0;value=ngModelCtrl&&null!=ngModelCtrl?ngModelCtrl.$viewValue:this.value;var bindedFilter=filterTemplate.split("{value}").join(value);0==this.value.length&&(bindedFilter=""),selfDirective.setFilterInButton($element,bindedFilter,operator),autopost&&selfDirective.makeAutoPostSearch($element,bindedFilter,datasource,attrs)}):$element.on("change",function(){var datasource=eval(attrs.crnDatasource),value=void 0,typeElement=$(this).attr("type");if(null!=attrs.asDate&&(typeElement="date"),ngModelCtrl&&null!=ngModelCtrl)value=ngModelCtrl.$viewValue;else if("checkbox"==typeElement)value=$(this).is(":checked");else if("date"!=typeElement)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=""),selfDirective.setFilterInButton($element,bindedFilter,operator),autopost&&selfDirective.makeAutoPostSearch($element,bindedFilter,datasource,attrs)})},forceDisableDatasource:function(datasourceName,scope){var disableDatasource=setInterval(function(){try{var datasourceInstance=eval(datasourceName);datasourceInstance&&($(document).ready(function(){var 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)}})},link:function(e,t,a,n){var i=$(t),o=i.data("type")||i.attr("type");a.asDate!=null&&(o="date");var d="=";a.cronappFilterOperator&&0<a.cronappFilterOperator.length&&(d=a.cronappFilterOperator);var r=!0;a.cronappFilterAutopost&&"false"==a.cronappFilterAutopost&&(r=!1),setTimeout(function(){"INPUT"==i[0].tagName?this.inputBehavior(e,t,a,n,i,o,d,r):this.buttonBehavior(e,t,a,n,i,o,d,r)}.bind(this),100)}}}]).directive("cronRichEditor",["$compile",function(e){return{restrict:"E",replace:!0,require:"ngModel",parseToTinyMCEOptions:function(e){var t={allowFullScreen:"fullscreen |",allowPage:"fullpage newdocument code pagebreak |",allowPrint:"preview print |",allowTransferArea:"cut copy paste |",allowDoUndo:"undo redo |",allowSymbol:"charmap |",allowEmbeddedImage:"bdesk_photo |",allowFont:"formatselect fontselect fontsizeselect strikethrough bold italic underline removeformat |",allowLinks:"link unlink anchor |",allowParagraph:"alignleft aligncenter alignright alignjustify numlist bullist outdent indent blockquote hr |",allowFormulas:"tiny_mce_wiris_formulaEditor tiny_mce_wiris_formulaEditorChemistry tiny_mce_wiris_CAS |"},a={menubar:!1,statusbar:!1,plugins:"bdesk_photo advlist anchor autolink autoresize autosave charmap code colorpicker contextmenu directionality emoticons fullpage fullscreen hr image imagetools importcss insertdatetime legacyoutput link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace tabfocus table template toc visualblocks visualchars wordcount tiny_mce_wiris colorpicker textcolor",toolbar:"",content_style:""};for(var n in e)n.startsWith("allow")&&e[n]&&(a.toolbar+=" "+t[n]);return a.toolbar+=" forecolor backcolor ",a.menubar=e.showMenuBar,a.statusbar=e.showStatusBar,a.content_style=e.contentStyle,a.readonly=e.allowReadonly,JSON.stringify(a)},link:function(t,a,n,i){var o=JSON.parse(n.options),d=this.parseToTinyMCEOptions(o),r=" <textarea ui-tinymce=\"$options$\" ng-model=\"$ngModel$\" id=\"$id$\" aria-label=\"cronRichEditor\" ng-cron-click=\"$ngClick$\" ng-cron-dblclick=\"$ngDblclick$\" ng-cron-mousedown=\"$ngMouseDown$\" ng-cron-mouseup=\"$ngMouseUp$\" ng-cron-mousemove=\"$ngMouseMove$\" ng-cron-mouseover=\"$ngMouseOver$\" ng-cron-mouseenter=\"$ngMouseEnter$\" ng-cron-mouseleave=\"$ngMouseLeave$\" ng-cron-keydown=\"$ngKeydown$\" ng-cron-keyup=\"$ngKeyup$\" ng-cron-keypress=\"$ngKeypress$\" ng-context-menu=\"$ngContextMenu$\" ng-cron-paste=\"$ngPaste$\" ng-cron-init=\"$ngInit$\" ng-cron-focus=\"$ngFocus$\" ng-cron-blur=\"$ngBlur$\" ng-before-set-content=\"$ngBeforeSetContent$\" ng-set-content=\"$ngSetContent$\" ng-get-content=\"$ngGetContent$\" ng-pre-process=\"$ngPreProcess$\" ng-post-process\"$ngPostProcess$\" ng-node-change=\"$ngNodeChange$\" ng-cron-undo=\"$ngUndo$\" ng-cron-redo=\"$ngRedo$\" ng-cron-change=\"$ngChange$\" ng-cron-dirty=\"$ngDirty$\" ng-cron-remove=\"$ngRemove$\" ng-exec-command=\"$ngExecCommand$\" ng-paste-pre-process=\"$ngPastePreProcess$\" ng-paste-post-process=\"$ngPastePostProcess$\" ng-add-editor=\"$ngAddEditor$\" ng-remove-editor=\"$ngRemoveEditor$\"> </textarea> ";r=$(r.split("$ngModel$").join(n.ngModel).split("$ngClick$").join(n.ngCronClick||"").split("$ngDblclick$").join(n.ngCronDblclick||"").split("$ngMouseDown$").join(n.ngCronMouseDown||"").split("$ngMouseUp$").join(n.ngCronMouseUp||"").split("$ngMouseMove$").join(n.ngCronMousemove||"").split("$ngMouseOver$").join(n.ngCronMouseOver||"").split("$ngMouseEnter$").join(n.ngCronMouseenter||"").split("$ngMouseLeave$").join(n.ngCronMouseleave||"").split("$ngKeydown$").join(n.ngCronKeydown||"").split("$ngKeyup$").join(n.ngCronKeyup||"").split("$ngKeypress$").join(n.ngCronKeypress||"").split("$ngContextMenu$").join(n.ngContextMenu||"").split("$ngPaste$").join(n.ngCronPaste||"").split("$ngInit$").join(n.ngCronInit||"").split("$ngFocus$").join(n.ngCronFocus||"").split("$ngBlur$").join(n.ngCronBlur||"").split("$ngBeforeSetContent$").join(n.ngBeforeSetContent||"").split("$ngSetContent$").join(n.ngSetContent||"").split("$ngGetContent$").join(n.ngGetContent||"").split("$ngPreProcess$").join(n.ngPreProcess||"").split("$ngPostProcess$").join(n.ngPostProcess||"").split("$ngNodeChange$").join(n.ngNodeChange||"").split("$ngUndo$").join(n.ngCronUndo||"").split("$ngRedo$").join(n.ngCronRedo||"").split("$ngChange$").join(n.ngCronChange||"").split("$ngDirty$").join(n.ngCronDirty||"").split("$ngRemove$").join(n.ngRemove||"").split("$ngExecCommand$").join(n.ngExecCommand||"").split("$ngPastePreProcess$").join(n.ngPastePreProcess||"").split("$ngPastePostProcess$").join(n.ngPastePostProcess||"").split("$ngAddEditor$").join(n.ngAddEditor||"").split("$ngRemoveEditor$").join(n.ngRemoveEditor||"").split("$id$").join(n.id||app.common.generateId()).split("$options$").join(escape(d)));var l=angular.element(r);a.html(""),a.append(l),a.attr("id",null),e(l)(t);let s=$(`cron-rich-editor[ng-model="${n.ngModel}"]`),c=setInterval(()=>{s.find(".mce-container").length&&(s.find("button").each((e,t)=>{let a=$(t),n=a.parent().attr("aria-label")||"";a.attr("aria-label",n)}),clearInterval(c))},100)}}}]).directive("cronDashboardViewer",cronReportViewer).directive("cronReportViewer",cronReportViewer).directive("cronTimeline",["$compile","$parse",function($compile,$parse){"use strict";var defaultAdvancedTemplate="<ul class=\"timeline\">\r\n <timeline-event side=\"\" class=\"ng-scope\" ng-repeat=\"rowData in datasource\">\r\n <li class=\"timeline-event {{rowData[options.fields.field4] == '2' ? 'timeline-inverted' : ''}}\">\r\n <timeline-badge class=\"{{$odd ? 'info' : 'warning'}} bounce-in\">\r\n <div class=\"timeline-badge\">\r\n <i class=\"glyphicon {{rowData[options.fields.field3] ? rowData[options.fields.field3] : 'glyphicon-check'}}\"></i>\r\n </div>\r\n </timeline-badge>\r\n <timeline-panel class=\"info bounce-in\">\r\n <div class=\"timeline-panel\">\r\n <timeline-heading class=\"ng-scope\">\r\n <div class=\"timeline-heading\">\r\n <h4 class=\"ng-binding ng-scope\">{{rowData[options.fields.field0]}}</h4>\r\n <p class=\"ng-scope\">\r\n <small class=\"text-muted ng-binding\"><i class=\"glyphicon glyphicon-time\"></i>{{rowData[options.fields.field1]|mask:options.fields.mask2:options.fields.type1}}</small>\r\n </p>\r\n </div>\r\n </timeline-heading>\r\n <p ng-if=\"rowData[options.fields.field2]\" class=\"ng-binding ng-scope\">{{rowData[options.fields.field2]}}</p>\r\n </div>\r\n </timeline-panel>\r\n </li>\r\n </timeline-event>\r\n</ul>",getExpression=function(e){return"rowData in ".concat(e).concat(".data")};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="";try{optionsList=JSON.parse(attrs.options),dataSourceName=optionsList.dataSourceScreen.name;var dataSource=eval(optionsList.dataSourceScreen.name);scope.options=optionsList,attrs.ngModel&&(scope.changeRowDataField=function(e){e=dataSource.getKeyValues(e);var t=Object.keys(e);return 1===t.length&&(e=e[t]),e}),scope.options=optionsList,scope.options.fields={},scope.options.randomModel=_Mathfloor(9e3*Math.random())+1e3;for(var column,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)}catch(e){console.log("CronTimeline invalid configuration! "+e)}scope.options.fields.image&&"do-not-show"!=scope.options.imageType&&(scope.options.imageClassPosition="item-"+scope.options.imageType+"-"+scope.options.imagePosition),scope.options.advancedTemplate||(scope.options.advancedTemplate="<ul class=\"timeline\">\r\n <timeline-event side=\"\" class=\"ng-scope\" ng-repeat=\"rowData in datasource\">\r\n <li class=\"timeline-event {{rowData[options.fields.field4] == '2' ? 'timeline-inverted' : ''}}\">\r\n <timeline-badge class=\"{{$odd ? 'info' : 'warning'}} bounce-in\">\r\n <div class=\"timeline-badge\">\r\n <i class=\"glyphicon {{rowData[options.fields.field3] ? rowData[options.fields.field3] : 'glyphicon-check'}}\"></i>\r\n </div>\r\n </timeline-badge>\r\n <timeline-panel class=\"info bounce-in\">\r\n <div class=\"timeline-panel\">\r\n <timeline-heading class=\"ng-scope\">\r\n <div class=\"timeline-heading\">\r\n <h4 class=\"ng-binding ng-scope\">{{rowData[options.fields.field0]}}</h4>\r\n <p class=\"ng-scope\">\r\n <small class=\"text-muted ng-binding\"><i class=\"glyphicon glyphicon-time\"></i>{{rowData[options.fields.field1]|mask:options.fields.mask2:options.fields.type1}}</small>\r\n </p>\r\n </div>\r\n </timeline-heading>\r\n <p ng-if=\"rowData[options.fields.field2]\" class=\"ng-binding ng-scope\">{{rowData[options.fields.field2]}}</p>\r\n </div>\r\n </timeline-panel>\r\n </li>\r\n </timeline-event>\r\n</ul>");var 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,$(element).replaceWith(templateDyn);var $element=templateDyn,eventItem=$element.find("timeline-event");"rowData in datasource"===$(eventItem).attr("ng-repeat")&&eventItem.attr("ng-repeat",getExpression(dataSourceName)),$compile(templateDyn,null,9999998)(scope)}}}]).directive("cronScheduler",["$compile","$translate",function($compile,$translate){return{estrict:"E",replace:!0,initCulture:function(){var e=$translate.use();e=e.replace(/_/gm,"-");var t=e.split("-");t[t.length-1]=t[t.length-1].toUpperCase(),e=t.join("-"),kendo.culture(e)},getSchedulerModel:function(e){let t={id:"id",fields:{}};for(let a in e)t.fields[a]={from:e[a].name,validation:{required:!e[a].nullable}};return t},mergeSchedulerEventWithDatasourceActive:(e,t)=>Object.assign(e.active,t),setDatasourceActiveItem:function(e,t,a){if(t){for(let n in e.data){let i=e.data[n][a];if(null!==i&&i===t[a])return e.active=e.copy(e.data[n],{}),e.active}return e.startEditing({}),e.active}},getSchedulerProperties:async function(t,a,n){let i="Expression"===t.initialDateStrategy?await n.$eval(generateBlocklyCall(t.initialDateBlocklyInfo,!0)):t.initialDate,o={start:null,end:null},d=function(e){return!angular.equals(o,e)},r=a=>{let e=a.sender.view(),n=a.sender.element.find(".k-scheduler-header.k-state-default.changed").length;"month"===e.name&&!n&&t.useCustomDaysOfWeek&&(a.sender.element.find(".k-scheduler-header.k-state-default").html(`<div class="k-scheduler-header k-state-default">
22
22
  <div class="k-scheduler-header-wrap">
23
23
  <table class="k-scheduler-table">
24
24
  <tbody>
package/js/directives.js CHANGED
@@ -656,7 +656,12 @@
656
656
  $element.hide();
657
657
  }
658
658
  if (!enabled) {
659
- $element.find('*').addBack().attr('disabled', true).off('click').on('click', e => e.preventDefault());
659
+ $element.find('*')
660
+ .addBack()
661
+ .css('pointer-events', 'none')
662
+ .attr('disabled', true)
663
+ .off('click')
664
+ .on('click', e => e.preventDefault());
660
665
  }
661
666
  if (!render) {
662
667
  $element.remove();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cronapp-framework-js",
3
- "version": "2.9.6-SP.34",
3
+ "version": "2.9.6-SP.35",
4
4
  "description": "Javascript library for CronApp's projects",
5
5
  "main": "cronapp.framework.js",
6
6
  "scripts": {