zettapi_client
Version:
Client side CRUD operations in angular to use with zettapi_server rest api to get started quickly in any CMS project
2 lines • 44 kB
JavaScript
function dlKeyCode(){return{restrict:"A",link:function(t,e,n){e.bind("keypress",function(e){var r=e.which||e.keyCode;r==n.code&&t.$apply(function(){t.$eval(n.dlKeyCode,{$event:e})})})}}}var app=angular.module("zapi",["ngSanitize","ngAnimate","ui.bootstrap","blockUI","inform","chart.js","btford.socket-io","ngCsv","ngTable","selector","angularUtils.directives.dirPagination","angularMoment","ngIdle","pascalprecht.translate"]).config(["TitleProvider",function(t){t.enabled(!1)}]).provider("zapi",["apiEntityMap",function(t){var e={},n=!1;return{getRoutes:function(t){if("undefined"==typeof e[t.entity])return"client/entity/entity.notfound.html";if("undefined"==typeof e[t.entity][t.action])return"client/entity/entity.notfound.html";switch(t.action){case"edit":return"client/entity/entity.edit.html";case"view":return"undefined"==typeof t.id?"client/entity/entity.notfound.html":"client/entity/entity.view.html";case"list":return"undefined"!=typeof t.id?"client/entity/entity.notfound.html":"client/entity/entity.list.html";default:return"client/entity/entity.notfound.html"}},setMap:function(n){e=t;for(var r in n)e[r]=n[r]},setIdle:function(t){n=t},$get:function(){return{entityMap:e,idle:n}}}}]);app.controller("entityCtrl",["$entity","zapi","ErrorSvc","$page","mySocket","$window","$routeParams","$controller","$location","$scope","$uibModal","blockUI","inform","$route","NgTableParams","$translate",function($entity,zapi,ErrorSvc,$page,mySocket,$window,$routeParams,$controller,$location,$scope,$uibModal,blockUI,inform,$route,NgTableParams,$translate){function get(t,e,n){$translate("api.entity.getData").then(function(t){blockUI.start(t)}),getLookups($scope.lookup,function(r,i){return r?($translate("api.entity.errorData").then(function(t){inform.add(t,{ttl:2e3,type:"danger"})}),blockUI.stop(),n(r)):($scope.lookup=i,$routeParams.id||"edit"!==$routeParams.action?void $entity.get(t,e).then(function(t){e?$scope.item=t.data:($scope.items=t.data,$scope.table.params=new NgTableParams({},{dataset:$scope.items}))}).catch(function(t){$translate("api.entity.errorData").then(function(t){inform.add(t,{ttl:2e3,type:"danger"})})}).finally(function(){blockUI.stop(),n()}):(blockUI.stop(),n()))})}function getLookups(t,e){return t&&t.length?e(null,t):void $entity.getLookups($routeParams.entity,function(t,n){return t?e(t):void e(null,n)})}function setEdit(t){t?$scope.item=angular.copy(t):$scope.item="function"==typeof $scope.blank?$scope.blank():{}}function loadFinished(){try{$controller($routeParams.entity+"Ctrl",{$scope:$scope})}catch(t){console.log(t)}var websocket;websocket="undefined"==typeof zapi.entityMap[$routeParams.entity].websocket?$routeParams.entity:eval(zapi.entityMap[$routeParams.entity].websocket)+"."+$routeParams.entity,mySocket.on(websocket+".remove",onThisEntityRemove),mySocket.on(websocket+".new",onThisEntityAdd),mySocket.on(websocket+".edit",onThisEntityEdit)}function onThisEntityAdd(t){switch($routeParams.action){case"list":$scope.items.unshift(t),$scope.table.params.reload()}}function onThisEntityEdit(t){switch($routeParams.action){case"list":for(var e=0;e<$scope.items.length;e++)if($scope.items[e]._id===t._id){$scope.items[e]=t,$scope.table.params.reload();break}break;case"view":case"edit":$scope.item._id===t._id&&($scope.item=t,$scope.table.params.reload())}}function onThisEntityRemove(t){switch($routeParams.action){case"list":for(var e=0;e<$scope.items.length;e++)if($scope.items[e]._id===t){$scope.items.splice(e,1),$scope.table.params.reload();break}break;case"view":case"edit":$scope.item._id===t._id&&$location.path("/"+$routeParams.entity+"/list")}}function initialize(t){if($translate("api.entity.whereyougo").then(function(t){$page.setTitle(t)}),$scope.entity=zapi.entityMap[$routeParams.entity],$scope.entity)switch($routeParams.action){case"edit":$routeParams.id?($translate([$scope.entity.title,"api.entity.editRecord"]).then(function(t){$page.setTitle(t[$scope.entity.title]+"-"+t["api.entity.editRecord"])}),get($routeParams.entity,$routeParams.id,t)):($translate([$scope.entity.title,"api.entity.newRecord"]).then(function(t){$page.setTitle(t[$scope.entity.title]+"-"+t["api.entity.newRecord"])}),get($routeParams.entity,null,t));break;case"view":if(!$routeParams.id)return;$translate([$scope.entity.title,"api.entity.viewRecord"]).then(function(t){$page.setTitle(t[$scope.entity.title]+"-"+t["api.entity.viewRecord"])}),get($routeParams.entity,$routeParams.id,t);break;case"list":if($routeParams.id)return;$translate($scope.entity.title).then(function(t){$page.setTitle(t)}),get($routeParams.entity,null,t);break;default:return}}function skip(t){t()}$scope.table={params:null},$scope.console=null,$scope.entities=zapi.entityMap,$scope.entityName=$routeParams.entity,$scope.lookup={},$scope.items=[],$scope.item={},$scope.newFile={},$scope.add=function(t,e,n){$translate("api.entity.sendData").then(function(t){blockUI.start(t)});var r="function"==typeof e?e:skip;r(function(e){return e?inform.add(e,{ttl:2e3,type:"danger"}):void $entity.add($routeParams.entity,t).then(function(e){$translate([$scope.entity.title,"api.entity.newRecordSuccess","api.entity.editRecordSuccess"]).then(function(e){t._id?inform.add(e[$scope.entity.title]+e["api.entity.newRecordSuccess"],{ttl:2e3,type:"info"}):inform.add(e[$scope.entity.title]+e["api.entity.editRecordSuccess"],{ttl:2e3,type:"info"})}),"function"==typeof n&&n()}).catch(function(t){inform.add(t.data,{ttl:2e3,type:"danger"}),"function"==typeof n&&n(t.data)}).finally(function(){blockUI.stop()})})},$scope.remove=function(t){$translate("api.entity.checkRemove").then(function(t){blockUI.start(t)}),$entity.remove($routeParams.entity,t).then(function(t){$translate([$scope.entity.title,"api.entity.deleteRecordSuccess"]).then(function(t){inform.add(t[$scope.entity.title]+t["api.entity.deleteRecordSuccess"],{ttl:2e3,type:"info"})})}).catch(function(t){inform.add(t.error?t.error:t.data,{ttl:2e3,type:"danger"})}).finally(function(){blockUI.stop()})},$scope.openEdit=function(t){if(!$scope.entity.modal){var e=$location.path();return e=e.substring(0,e.lastIndexOf("/"))+"/edit",t?$location.path(e+"/"+t._id):$location.path(e)}setEdit(t);var n=$uibModal.open({animation:!0,templateUrl:"client/entity/entity.modal.html",controller:"entityModalCtrl",size:"lg",backdrop:"static",scope:$scope});n.result.then(function(t){},function(){$translate("api.entity.cancelRecord").then(function(t){inform.add(t,{ttl:2e3,type:"info"})}),$scope.item={}})},$scope.validate=function(){if("function"==typeof $scope.getError){var t=$scope.getError($scope.item,$scope.items);if(t.disabled)return $scope.console=t.tooltip,!0}return $scope.console=null,!1},$scope.unflattenArray=$entity.unflattenArray,$scope.flattenArray=$entity.flattenArray,$scope.applySearch=function(t){var e=angular.copy(t.text);t.inverted&&(e="!"+e),$scope.table.params.filter({$:e})},initialize(loadFinished)}]),app.controller("entityModalCtrl",["$uibModalInstance","$scope",function(t,e){e.ok=function(){e.add(e.item,e.onBeforeSave,function(t){t||e.$close(e.item)})},e.cancel=function(){e.$dismiss("cancel")}}]),app.controller("activityCtrl",["$scope",function(t){}]),app.controller("alertCtrl",function(){}),app.controller("countryCtrl",["$scope",function(t){}]),app.controller("errorCtrl",["$scope","$modal",function(t,e){t.openModal=e._open}]),app.controller("holidayCtrl",["ErrorSvc","$scope","$holiday",function(ErrorSvc,$scope,$holiday){$scope.getError=function(holiday,holidays){if($scope.nextOccurrence=null,!holiday)return ErrorSvc.validationArgs(!0);if(!holiday.name)return ErrorSvc.validationArgs(!0,"Introduza um nome do feriado");if(""===holiday.name.trim())return ErrorSvc.validationArgs(!0,"Introduza um nome do feriado");for(var i=0;i<holidays.length;i++)if(holidays[i].name==holiday.name&&holiday._id!=holidays[i]._id)return ErrorSvc.validationArgs(!0,"Feriado já existente");if(!holiday.date&&!holiday.formula)return ErrorSvc.validationArgs(!0,"Impossivel calcular próxima ocorrência para este feriado");if(holiday.date){var pattern=/^(?:(?:[12][0-9]|0[1-9])\/(02)|(?:30|[12][0-9]|0[1-9])\/(?:(?:0[469]|11))|(?:3[01]|[12][0-9]|0[1-9])\/(?:(?:0[13578]|1[02])))$/;if(!pattern.test(holiday.date))return ErrorSvc.validationArgs(!0,"A data deve ser no formato dd/mm")}else if(holiday.formula)try{var currentYear=(new Date).getFullYear();eval("my_function = "+holiday.formula);var d=my_function(currentYear);if("[object Date]"!==Object.prototype.toString.call(d))return ErrorSvc.validationArgs(!0,"Data inválida");if(isNaN(d.getTime()))return ErrorSvc.validationArgs(!0,"Data inválida")}catch(t){return ErrorSvc.validationArgs(!0,"A formula que introduziu contém um erro: "+t)}return ErrorSvc.validationArgs(!1)},$scope.items.forEach(function(t){t.next=$holiday.calculateNextOccurrence(t)})}]),app.controller("maintenanceCtrl",function(){}),app.controller("messageCtrl",["$scope","$modal",function(t,e){t.openModal=e._open}]),app.controller("roleCtrl",["ErrorSvc","$scope","$role",function(t,e,n){e.permissions={},n.getPermissions().then(function(t){e.permissions=t.data}),e.togglePermissions=function(t){e.item.permissions||(e.item.permissions={});for(var n in e.permissions){e.item.permissions[n]||(e.item.permissions[n]={});for(var r in e.permissions[n])"label"!==r&&(e.item.permissions[n][r]=t)}},e.getError=function(e,n){if(!e)return t.validationArgs(!0);if(!e.name)return t.validationArgs(!0,"Introduza um nome para o perfil de utilizador");if(""===e.name.trim())return t.validationArgs(!0,"Introduza um nome para o perfil de utilizador");for(var r=0;r<n.length;r++)if(n[r].name==e.name&&n[r]._id!=e._id)return t.validationArgs(!0,"Perfil de utilizador já existente");return t.validationArgs(!1)},e.blank=function(){var t={};for(var n in e.permissions){t[n]={};for(var r in e.permissions[n])"label"!==r&&(t[n][r]=!0)}return{name:"",approvalLevel:0,admin:!1,permissions:t}}}]),app.controller("taskCtrl",["$scope","$date","ErrorSvc","$task","mySocket","blockUI",function(t,e,n,r,i,a){t.taskTypes=[],t.getError=function(t,e){return t?t.name?""===t.name.trim()?n.validationArgs(!0,"Indique um nome para a tarefa"):t.type?t.criteria&&t.criteria.month&&t.criteria.monthday&&t.criteria.weekday&&t.criteria.hour&&t.criteria.minute?n.validationArgs(!1):n.validationArgs(!0,"Complete o critério de periodicidade"):n.validationArgs(!0,"Escolha um tipo de tarefa"):n.validationArgs(!0,"Indique um nome para a tarefa"):n.validationArgs(!0)},t.formatDatetime=e.formatDatetime,t.calculateTimespan=e.calculateTimespan,t.toggleState=r.toggleState,t.run=function(t){r.run(t).then(function(t){a.start("A executar...")}).catch(function(t){swal("Ocorreu um erro ao iniciar a tarefa manualmente.",t.data,"error")})},i.on(t.login._id,function(t){swal("Tarefa executada com sucesso.",null,"success"),a.stop()}),r.getTypes(function(e){t.taskTypes=e})}]),app.controller("userCtrl",["$scope","$http","inform","ErrorSvc",function(t,e,n,r){t.getError=function(t,e){if(!t)return r.validationArgs(!0);if(!t.username)return r.validationArgs(!0,"Introduza um username");if(""===t.username.trim())return r.validationArgs(!0,"Introduza um username");if(!t.email)return r.validationArgs(!0,"Introduza um email");if(""===t.email.trim())return r.validationArgs(!0,"Introduza um email");for(var n=0;n<e.length;n++)if(e[n].username==t.username&&e[n]._id!=t._id)return r.validationArgs(!0,"Utilizador já existente");return r.validationArgs(!1)}}]),app.controller("stackTraceCtrl",["$scope","$uibModalInstance","data",function(t,e,n){t.item=n,t.cancel=function(){e.dismiss({type:t.type})},t.ok=function(){e.close({type:t.type})}}]),app.controller("viewMsgCtrl",["$scope","$uibModalInstance","data",function(t,e,n){t.item=n,t.cancel=function(){e.dismiss({type:t.type})},t.ok=function(){e.close({type:t.type})}}]),app.controller("attachmentsCtrl",function(){}),app.controller("ccCtrl",function(){}),app.controller("emailCtrl",function(){}),app.controller("fromCtrl",function(){}),app.controller("toCtrl",function(){}),app.filter("dateFilter",["moment",function(t){return function(e,n,r){if(!n||!r)return e;n=t(n),r=t(r);for(var i=[],a=0;a<e.length;a++){var o=t(e[a].data_pagamento);o>=n&&o<=r&&i.push(e[a])}return i}}]),app.filter("orderObjectBy",function(){return function(t,e,n){var r=[];return angular.forEach(t,function(t){r.push(t)}),r.sort(function(t,n){return t[e]>n[e]?1:-1}),n&&r.reverse(),r}}),app.directive("zlActivation",["zapiPath",function(t){return{restrict:"E",scope:!0,replace:!1,templateUrl:t+"/directives/activation/activation.html",controller:["$scope","$auth","$location","$routeParams",function(t,e,n,r){t.user=null,e.activateAccount(r.code,function(e,r){return e?n.path("/"):void(t.user=r)}),t.changePassword=function(r,i){e.changePassword(t.user,r,i,function(t){if(!t)return n.path("/")})}}]}}]),app.directive("zlAddress",["zapiPath",function(t){return{restrict:"E",scope:{item:"=",countries:"="},replace:!1,templateUrl:t+"/directives/address/address.html",controller:["$scope","$address","inform",function(t,e,n){t.getAddressPT=function(r){e.getAddressPT(r,function(i,a){return i?(t.item.address="",t.item.city="",t.item.country="",t.item.district="",t.item.county="",t.item.locality="",n.add("Não foi possível completar o arruamento",{ttl:2e3,type:"warning"})):(t.item.address=a.address,t.item.city=a.city,t.item.country=a.country,t.item.district=a.district,t.item.county=a.county,t.item.locality=a.locality,void e.getCoordinates(r,function(e,n){e||(t.item.coords=n)}))})},t.validateZipcode=e.validateZipcode}]}}]),app.directive("apiMenuItem",["zapiPath",function(t){return{restrict:"E",scope:!1,replace:!0,templateUrl:t+"/directives/apiMenuItem/apiMenuItem.html"}}]),app.directive("console",["zapiPath",function(t){return{restrict:"E",scope:!0,replace:!1,templateUrl:t+"/directives/console/console.html"}}]),app.directive("zlContainer",["zapiPath",function(t){return{restrict:"E",replace:!1,templateUrl:t+"/directives/container/container.html",scope:{entity:"@",item:"=",lookup:"=",label:"@",var:"@",key:"@",isVisible:"&?",isMovable:"@",noInsert:"@",removable:"@",approvalMaxLevel:"@"},controller:["$scope","$rootScope","$controller","$timeout",function(t,e,n,r){function i(n,r){var i,a;if(t.item[t.var]||(t.item[t.var]=[]),t.key){var o={property:null,key:null};if(n[t.key])o.key=n[t.key];else for(a in n)if(n[a][t.key]){o.property=a,o.key=n[a][t.key];break}if(o.key)for(i=0;i<t.item[t.var].length;i++){var c=o.property?t.item[t.var][i][o.property]:t.item[t.var][i];if(c[t.key]===o.key)return r("Registo duplicado em "+t.label)}}else for(i=0;i<t.item[t.var].length;i++)if(t.item[t.var][i]===n)return r("Registo duplicado em "+t.label);t.item[t.var].unshift(n),t.approvalMaxLevel&&t.approvalMaxLevel&&(n.approval={level:e.login.role.approvalLevel,maxLevel:t.approvalMaxLevel}),r()}t.key?t.newContainerItem={}:t.newContainerItem="",t.append=function(e){i(e,function(e){return e?swal("Atenção",e,"warning"):void(t.key?t.newContainerItem={}:t.newContainerItem="")})},t.remove=function(e){var n=t.item[t.var].indexOf(e);n!=-1&&t.item[t.var].splice(n,1)},t.validate=function(e){if(!e)return!0;if(t.key&&0===Object.keys(e).length&&JSON.stringify(e)===JSON.stringify({}))return!0;if("function"==typeof t.getError){var n=t.getError(e,t.item[t.var]);if(n.disabled)return t.console=n.tooltip,!0}return t.console=null,!1},t.pushBack=function(e){var n=t.item[t.var].splice(e,1);t.item[t.var].splice(e-1,0,n[0])},t.pushForward=function(e){var n=t.item[t.var].splice(e,1);t.item[t.var].splice(e+1,0,n[0])},r(function(){n(t.var+"Ctrl",{$scope:t})})}]}}]),app.directive("contenteditable",function(){return{require:"ngModel",link:function(t,e,n,r){function i(){r.$setViewValue(e.html())}r.$render=function(){e.html(r.$viewValue||"")},e.bind("blur keyup change",function(){t.$apply(i)})}}}),app.directive("zlCountry",["zapiPath",function(t){return{restrict:"E",scope:{item:"=",var:"@",label:"@",lookup:"="},replace:!1,templateUrl:t+"/directives/country/country.html"}}]),app.directive("zlFile",["zapiPath",function(t){return{restrict:"A",scope:{item:"=",var:"=",docid:"="},replace:!1,link:function(t,e,n){t.docid&&t.docid._id&&(t.docid=t.docid._id)},templateUrl:t+"/directives/document/file.html"}}]),app.directive("fileModel",["$parse",function(t){return{restrict:"A",replace:!1,link:function(e,n,r){var i=t(r.fileModel),a=i.assign;n.bind("change",function(){e.$apply(function(){a(e,n[0].files[0])})})}}}]),app.directive("zlDynamicField",["zapiPath",function(t){return{restrict:"E",scope:{field:"=",value:"="},replace:!1,template:'<div ng-include src="contentUrl" include-replace></div>',controller:["$scope",function(e){function n(n){if(n){var r=e.field.type||"Unknown";"ObjectId"===e.field.type&&"undefined"==typeof e.field.ref&&(r="String"),e.contentUrl=t+"/directives/dynamicField/"+r+".html"}}e.$watch("field.type",n)}]}}]),app.directive("entityEdit",["zapiPath",function(t){return{restrict:"E",scope:!0,replace:!1,link:function(e,n,r){var i=e.entity.custom?"client/entity/":t+"/entity/";e.contentUrl=i+e.entityName+"/"+e.entityName+".edit.html"},template:'<div ng-include="contentUrl"></div>'}}]),app.directive("entityList",["zapiPath",function(t){return{restrict:"E",scope:!0,replace:!1,link:function(e,n,r){var i=e.entity.custom?"client/entity/":t+"/entity/";e.contentUrl=i+e.entityName+"/"+e.entityName+".list.html"},template:'<div ng-include src="contentUrl" include-replace></div>'}}]),app.directive("entityView",["zapiPath",function(t){return{restrict:"E",scope:!0,replace:!1,link:function(e,n,r){var i=e.entity.custom?"client/entity/":t+"entity/";e.contentUrl=i+e.entityName+"/"+e.entityName+".view.html"},template:'<div ng-include="contentUrl"></div>'}}]),app.directive("zlGraph",["zapiPath",function(t){return{restrict:"E",scope:{item:"=",custom:"@?"},replace:!1,templateUrl:t+"/directives/graph/graph.html",controller:["$scope","blockUI","$graph",function(t,e,n){function r(e){t.chart=e,a.stop()}var i=[["bar","doughnut","pie","horizontalBar"],["line","radar"],["bubble","polar-area"]];t.getNext=function(){var e=i[t.item.dimension].indexOf(t.item.type)+1;return i[t.item.dimension][e===i[t.item.dimension].length?0:e]},t.toggle=function(){t.item.type=t.getNext()},t.chart={};var a=e.instances.get("graphBlockUI");if(a.start("A criar gráfico..."),"string"==typeof t.custom){var o=t.custom.split("|");n.custom(o[0],o[1],r)}else n.get(t.item.namespace,t.item.collection,t.item.query,t.item.obj,t.item.seriesKey,t.item.dataKey,t.item.labelsKey,r)}]}}]),app.directive("zlIdle",function(){return{restrict:"A",scope:!0,controller:["$scope","$location","$auth",function(t,e,n){t.$on("IdleStart",function(){swal("Atenção","Devido à sua inactividade irá ser disconectado em 5 segundos","info")}),t.$on("IdleEnd",function(){console.log("IdleEnd")}),t.$on("IdleTimeout",function(){n.logout(),e.path("/")})}]}}),app.directive("zlList",["zapiPath",function(t){return{restrict:"E",scope:{dbs:"=",channel:"@"},replace:!1,templateUrl:t+"/directives/list/list.html",controller:["$scope","$list","NgTableParams","$httpParamSerializer",function(t,e,n,r){t.items=[],t.tableParams=null,t.list={name:"",parameters:[],values:{}},t.selectedDbs=[],e.getMetadata(function(e){t.lists=e}),t.reset=function(){t.items=[],t.tableParams=null},t.get=function(r){e.get(r,t.selectedDbs,t.channel,function(e){var i={},a={dataset:e};r.group&&(i.group=r.group),"undefined"!=typeof r.groupOptions&&(a.groupOptions=r.groupOptions),t.items=e,t.tableParams=new n(i,a)})},t.getExcelUrl=function(e){return"/api/list/values/"+e.name+"?xls=1&"+r({query:e.values,dbs:t.selectedDbs})},t.applySearch=function(e){var n=angular.copy(e.text);e.inverted&&(n="!"+n),t.tableParams.filter({$:n})}}]}}]),app.directive("zlLogin",["zapiPath",function(t){return{restrict:"E",scope:!0,replace:!1,templateUrl:t+"/directives/login/login.html",controller:["blockUI","$auth","$location","$scope","$uibModalStack",function(t,e,n,r,i){function a(){r.username="",r.password=""}r.login=function(){r.validateLogin()||e.login(r.username,r.password,function(t){t?a():(n.path("/profile"),i.dismissAll())})},r.validateLogin=function(){return!r.username||!r.password}}]}}]),app.directive("zlMaintenance",function(){return{restrict:"A",scope:!0,controller:["mySocket","$timeout",function(t,e){t.on("maintenance",function(t){swal("Manutenção Programada",t,"info")})}]}}),app.directive("zlNewsletter",["zapiPath","blockUI","inform","$entity",function(t,e,n,r){return{restrict:"E",scope:!0,replace:!1,templateUrl:t+"/directives/newsletter/newsletter.html",controller:["$scope","$newsletter",function(t,e){t.saveEmail=function(n){e.subscribe(n,function(){t.newsItem={}})}}]}}]),app.directive("asDate",function(){return{require:"^ngModel",restrict:"A",link:function(t,e,n,r){r.$formatters.splice(0,r.$formatters.length),r.$parsers.splice(0,r.$parsers.length),r.$formatters.push(function(t){if(t)return new Date(t).toISOString().slice(0,10)}),r.$parsers.push(function(t){return t})}}}),app.directive("dlKeyCode",dlKeyCode),app.directive("asFloat",function(){return{require:"^ngModel",restrict:"A",link:function(t,e,n,r){r.$formatters.splice(0,r.$formatters.length),r.$parsers.splice(0,r.$parsers.length),r.$formatters.push(function(t){if(t)return parseFloat(t)}),r.$parsers.push(function(t){return t})}}}),app.directive("asInteger",function(){return{require:"^ngModel",restrict:"A",link:function(t,e,n,r){r.$formatters.splice(0,r.$formatters.length),r.$parsers.splice(0,r.$parsers.length),r.$formatters.push(function(t){if(t)return parseInt(t)}),r.$parsers.push(function(t){return t})}}}),app.directive("lettersOnly",function(){return{require:"ngModel",link:function(t,e,n,r){function i(t){if(t){var e=t.replace(/[^A-Za-z]/g,"");return e!==t&&(r.$setViewValue(e),r.$render()),e}}"true"===n.lettersOnly&&r.$parsers.push(i)}}}),app.directive("numbersOnly",function(){return{require:"ngModel",link:function(t,e,n,r){function i(t){if(t){var e=t.replace(/[^0-9]/g,"");return e!==t&&(r.$setViewValue(e),r.$render()),e}}"true"===n.numbersOnly&&r.$parsers.push(i)}}}),app.directive("zlQueryBuilder",["zapiPath",function(t){return{restrict:"E",scope:{field:"=",value:"="},replace:!1,template:'<div ng-include src="contentUrl" include-replace></div>',controller:["$scope",function(e){function n(n){if(n){var r=e.field.type||"Unknown";"ObjectId"===e.field.type&&"undefined"==typeof e.field.ref&&(r="String"),e.contentUrl=t+"/directives/queryBuilder/"+r+".html"}}e.$watch("field.type",n)}]}}]),app.directive("zlReport",["zapiPath",function(t){return{restrict:"E",scope:{field:"=",condition:"="},replace:!1,templateUrl:t+"/directives/report/report.html",controller:["$scope","$report",function(t,e){t.metadata={},t.item={type:"exp",database:"",collection:"",query:[],select:{},limit:0,sort:{},populate:""},t.map={id_animal:"Número SIA",id_eletronico:"Brinco Electrónico",sexo:"Sexo",raca:"Raça",data_nascimento:"Dt. Nascimento",mae:"Mãe",pai:"Pai",tipo:"Aptidão",fenotipo:"Fenotipo"},e.getMetadata(function(e,n){t.metadata=n}),t.appendQuery=function(e,n){t.item.query.push({field:n,fieldName:e})}}]}}]),app.directive("zlReset",["zapiPath",function(t){return{restrict:"E",scope:!0,replace:!1,templateUrl:t+"/directives/reset/reset.html",controller:["$scope","$auth","$location","blockUI",function(t,e,n,r){t.reset=function(r){t.validateReset(r)||e.resetPassword(r.email,r.username,function(t){if(!t)return n.path("/")})},t.validateReset=function(t){return!t||(!t.email||!t.username)}}]}}]),app.directive("zlSignup",["zapiPath",function(t){return{restrict:"E",scope:!0,replace:!1,templateUrl:t+"/directives/signup/signup.html",controller:["$scope","blockUI","$entity","$uibModalStack",function(t,e,n,r){t.signup=function(i){t.validateSignup(i)||(e.start("A reservar conta..."),n.add("user",i).then(function(t){swal("Está quase!","Consulte o seu email para ativar a conta de utilizador","success"),r.dismissAll()}).catch(function(t){swal("Erro",t.data,"error")}).finally(function(){e.stop()}))},t.validateSignup=function(t){if(!t)return!0;if(!t.username)return!0;var e=new RegExp("^[a-zA-Z0-9.-_$@*!]{3,30}$");return!e.test(t.username)||!t.email}}]}}]),app.service("$address",["$http","blockUI",function(t,e){this.getAddressPT=function(n,r){return this.validateZipcode(n)?r("Código postal inválido"):(e.start("A procurar arruamento..."),void t.get("./api/address/pt/"+n).then(function(t){r(null,t.data)}).catch(function(t){r(t)}).finally(function(){e.stop()}))},this.validateZipcode=function(t){if(!t)return!0;"string"!=typeof t&&(t+="");var e=t.split("-");return e.length<1||e.length>2||(!!isNaN(e[0])||!!(e.length>1&&isNaN(e[1])))},this.getCoordinates=function(t,e){try{var n=new google.maps.Geocoder;n.geocode({address:t},function(t,n){n!==google.maps.GeocoderStatus.OK&&e(n),e(null,{lat:t[0].geometry.location.lat(),lng:t[0].geometry.location.lng()})})}catch(t){e(t)}}}]),app.factory("$auth",["$http","$crypto","blockUI","$location","anonymousPages","$rootScope","Idle","zapi","$translate",function(t,e,n,r,i,a,o,c,s){var u={currentUser:null,login:function(r,i,a){return s("api.services.auth.loginLoad",function(t){n.start(t)},function(t){n.start(t)}),t.post("/api/session/login/",{username:r,password:e.md5(i)}).then(function(t){c.idle&&o.watch(),u.currentUser=t.data.user,a()}).catch(function(t){s(["api.services.auth.loginErrorTitle","api.services.auth.loginErrorContent"]).then(function(t){swal(t["api.services.auth.loginErrorTitle"],t["api.services.auth.loginErrorContent"],"error")},function(t){swal(t.api_service_auth_loginerrortitle,t.api_service_auth_loginerrorcontent,"error")}),a(!0)}).finally(function(){n.stop()})},logout:function(){t.get("/api/session/logout").then(function(t){c.idle&&o.unwatch(),u.currentUser=null,a.login={},r.path("/")})},requestCurrentUser:function(e){return u.isAuthenticated()?e(null,u.currentUser):void t.get("/api/session/currentuser").then(function(t){u.currentUser=t.data.user,e(null,u.currentUser)}).catch(function(t){u.currentUser=null,e(t)})},isAuthenticated:function(){return!!u.currentUser},activateAccount:function(e,r){if(!e)return r(!0);var i=e.split("&");return 2!==i.length?r(!0):(s("api.services.auth.activateAccountLoad",function(t){n.start(t)},function(t){n.start(t)}),void t.post("/api/user/activate/",{email:i[0],code:i[1]}).then(function(t){r(null,t.data)}).catch(function(t){s(["api.services.auth.activateAccountErrorTitle","api.services.auth.activateAccountErrorContent"]).then(function(t){swal({title:t["api.services.auth.activateAccountErrorTitle"],text:t["api.services.auth.activateAccountErrorContent"],type:"info",confirmButtonText:"OK"})},function(t){swal({title:t.api_service_auth_activateaccounterrortitle,text:t.api_service_auth_activateaccounterrorcontent,type:"info",confirmButtonText:"OK"})}),r(!0)}).finally(function(){n.stop()}))},resetPassword:function(e,r,i){return s("api.services.auth.resetPasswordLoad",function(t){n.start(t)},function(t){n.start(t)}),t.post("/api/user/resetpassword/",{email:e,username:r}).then(function(t){s(["api.services.auth.resetPasswordSuccessTitle","api.services.auth.resetPasswordSuccessContent"]).then(function(t){swal(t["api.services.auth.resetPasswordSuccessTitle"],t["api.services.auth.resetPasswordSuccessContent"],"success")},function(t){swal(t.api_service_auth_resetpasswordsuccesstitle,t.api_service_auth_resetpasswordsuccesscontent,"success")}),i()}).catch(function(t){s(["api.services.auth.resetPasswordErrorTitle","api.services.auth.resetPasswordErrorContent"]).then(function(t){swal(t["api.services.auth.resetPasswordErrorTitle"],t["api.services.auth.resetPasswordErrorContent"],"error")},function(t){swal(t.api_service_auth_resetpassworderrortitle,t.api_service_auth_resetpassworderrorcontent,"error")}),i(!0)}).finally(function(){n.stop()})},changePassword:function(r,i,a,o){if(i){if(i!==a)return void s(["api.services.auth.changepasswordWrongPasswordTitle","api.services.auth.changepasswordWrongPasswordContent"]).then(function(t){swal(t["api.services.auth.changepasswordWrongPasswordTitle"],t["api.services.auth.changepasswordWrongPasswordContent"],"error")},function(t){swal(t.api_service_auth_changepasswordwrongpasswordtitle,t.api_service_auth_changepasswordwrongpasswordcontent,"error")});r.newPassword=e.md5(i),s("api.services.auth.changepasswordLoad",function(t){n.start(t)},function(t){n.start(t)}),t.post("/api/user/changepassword/",r).then(function(t){s(["api.services.auth.changepasswordSuccessTitle","api.services.auth.changepasswordSuccessContent","api.services.auth.changepasswordSuccessBtnOk"]).then(function(t){swal({title:t["api.services.auth.changepasswordSuccessTitle"],text:t["api.services.auth.changepasswordSuccessContent"],type:"info",confirmButtonText:t["api.services.auth.changepasswordSuccessBtnOk"]})},function(t){swal({title:t.api_service_auth_changepasswordsuccesstitle,text:t.api_service_auth_changepasswordsuccesscontent,type:"info",confirmButtonText:t.api_service_auth_changepasswordsuccessbtnok})}),o()}).catch(function(t){s(["api.services.auth.changepasswordErrorTitle","api.services.auth.changepasswordErrorContent"]).then(function(t){swal(t["api.services.auth.changepasswordErrorTitle"],t["api.services.auth.changepasswordErrorContent"],"error")},function(t){swal(t.api_service_auth_changepassworderrortitle,t.api_service_auth_changepassworderrorcontent,"error")}),o(!0)}).finally(function(){n.stop()})}},isPageAnonymous:function(){var t=r.path().split("/");return i.some(function(e){return e===t[1]})},isAnonymous:function(){return!$auth.isLoggedIn()},isLoggedIn:function(){return!!u.currentUser&&!!u.currentUser._id},isAdmin:function(){return!!u.isLoggedIn()&&u.currentUser.role.admin}};return u}]),app.constant("zapiPath","node_modules/zettapi_client/"),app.constant("apiEntityMap",{activity:{title:"Atividades",list:{admin:!0}},alert:{title:"Alertas",list:{admin:!0},edit:{admin:!0},modal:!0},country:{title:"Países",list:{admin:!0}},error:{title:"Erros",list:{admin:!0}},holiday:{title:"Feriados",lookup:["country"],list:{admin:!0},edit:{admin:!0},modal:!0},maintenance:{title:"Agendamento de Manutenção",list:{admin:!0},edit:{admin:!0},modal:!0},message:{title:"Mensagens Automáticas",list:{admin:!0}},role:{title:"Perfis de Utilizador",list:{admin:!0},edit:{admin:!0},modal:!0},task:{title:"Agendamento de Tarefas",list:{admin:!0},edit:{admin:!0},modal:!0},user:{title:"Utilizadores",lookup:["role"],list:{admin:!1},edit:{admin:!1},modal:!0}}),app.service("$crypto",function(){function t(t,e){var o=t[0],c=t[1],s=t[2],u=t[3];o=n(o,c,s,u,e[0],7,-680876936),u=n(u,o,c,s,e[1],12,-389564586),s=n(s,u,o,c,e[2],17,606105819),c=n(c,s,u,o,e[3],22,-1044525330),o=n(o,c,s,u,e[4],7,-176418897),u=n(u,o,c,s,e[5],12,1200080426),s=n(s,u,o,c,e[6],17,-1473231341),c=n(c,s,u,o,e[7],22,-45705983),o=n(o,c,s,u,e[8],7,1770035416),u=n(u,o,c,s,e[9],12,-1958414417),s=n(s,u,o,c,e[10],17,-42063),c=n(c,s,u,o,e[11],22,-1990404162),o=n(o,c,s,u,e[12],7,1804603682),u=n(u,o,c,s,e[13],12,-40341101),s=n(s,u,o,c,e[14],17,-1502002290),c=n(c,s,u,o,e[15],22,1236535329),o=r(o,c,s,u,e[1],5,-165796510),u=r(u,o,c,s,e[6],9,-1069501632),s=r(s,u,o,c,e[11],14,643717713),c=r(c,s,u,o,e[0],20,-373897302),o=r(o,c,s,u,e[5],5,-701558691),u=r(u,o,c,s,e[10],9,38016083),s=r(s,u,o,c,e[15],14,-660478335),c=r(c,s,u,o,e[4],20,-405537848),o=r(o,c,s,u,e[9],5,568446438),u=r(u,o,c,s,e[14],9,-1019803690),s=r(s,u,o,c,e[3],14,-187363961),c=r(c,s,u,o,e[8],20,1163531501),o=r(o,c,s,u,e[13],5,-1444681467),u=r(u,o,c,s,e[2],9,-51403784),s=r(s,u,o,c,e[7],14,1735328473),c=r(c,s,u,o,e[12],20,-1926607734),o=i(o,c,s,u,e[5],4,-378558),u=i(u,o,c,s,e[8],11,-2022574463),s=i(s,u,o,c,e[11],16,1839030562),c=i(c,s,u,o,e[14],23,-35309556),o=i(o,c,s,u,e[1],4,-1530992060),u=i(u,o,c,s,e[4],11,1272893353),s=i(s,u,o,c,e[7],16,-155497632),c=i(c,s,u,o,e[10],23,-1094730640),o=i(o,c,s,u,e[13],4,681279174),u=i(u,o,c,s,e[0],11,-358537222),s=i(s,u,o,c,e[3],16,-722521979),c=i(c,s,u,o,e[6],23,76029189),o=i(o,c,s,u,e[9],4,-640364487),u=i(u,o,c,s,e[12],11,-421815835),s=i(s,u,o,c,e[15],16,530742520),c=i(c,s,u,o,e[2],23,-995338651),o=a(o,c,s,u,e[0],6,-198630844),u=a(u,o,c,s,e[7],10,1126891415),s=a(s,u,o,c,e[14],15,-1416354905),c=a(c,s,u,o,e[5],21,-57434055),
o=a(o,c,s,u,e[12],6,1700485571),u=a(u,o,c,s,e[3],10,-1894986606),s=a(s,u,o,c,e[10],15,-1051523),c=a(c,s,u,o,e[1],21,-2054922799),o=a(o,c,s,u,e[8],6,1873313359),u=a(u,o,c,s,e[15],10,-30611744),s=a(s,u,o,c,e[6],15,-1560198380),c=a(c,s,u,o,e[13],21,1309151649),o=a(o,c,s,u,e[4],6,-145523070),u=a(u,o,c,s,e[11],10,-1120210379),s=a(s,u,o,c,e[2],15,718787259),c=a(c,s,u,o,e[9],21,-343485551),t[0]=p(o,t[0]),t[1]=p(c,t[1]),t[2]=p(s,t[2]),t[3]=p(u,t[3])}function e(t,e,n,r,i,a){return e=p(p(e,t),p(r,a)),p(e<<i|e>>>32-i,n)}function n(t,n,r,i,a,o,c){return e(n&r|~n&i,t,n,a,o,c)}function r(t,n,r,i,a,o,c){return e(n&i|r&~i,t,n,a,o,c)}function i(t,n,r,i,a,o,c){return e(n^r^i,t,n,a,o,c)}function a(t,n,r,i,a,o,c){return e(r^(n|~i),t,n,a,o,c)}function o(e){txt="";var n,r=e.length,i=[1732584193,-271733879,-1732584194,271733878];for(n=64;n<=e.length;n+=64)t(i,c(e.substring(n-64,n)));e=e.substring(n-64);var a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(n=0;n<e.length;n++)a[n>>2]|=e.charCodeAt(n)<<(n%4<<3);if(a[n>>2]|=128<<(n%4<<3),n>55)for(t(i,a),n=0;n<16;n++)a[n]=0;return a[14]=8*r,t(i,a),i}function c(t){var e,n=[];for(e=0;e<64;e+=4)n[e>>2]=t.charCodeAt(e)+(t.charCodeAt(e+1)<<8)+(t.charCodeAt(e+2)<<16)+(t.charCodeAt(e+3)<<24);return n}function s(t){for(var e="",n=0;n<4;n++)e+=l[t>>8*n+4&15]+l[t>>8*n&15];return e}function u(t){for(var e=0;e<t.length;e++)t[e]=s(t[e]);return t.join("")}var l="0123456789abcdef".split("");this.md5=function(t){return u(o(t))};var p=function(t,e){return t+e&4294967295};"5d41402abc4b2a76b9719d911017c592"!=this.md5("hello")&&(p=function(t,e){var n=(65535&t)+(65535&e),r=(t>>16)+(e>>16)+(n>>16);return r<<16|65535&n})}),app.factory("$date",["moment",function(t){var e={};return e.collisionDetection=function(e,n,r){if(e=t(e).format("YYYY-MM-DD"),n=n?t(n).format("YYYY-MM-DD"):e,n<e)return null;for(var i=0;i<r.length;i++){var a=t(r[i].dateStart).format("YYYY-MM-DD"),o=a;if(r[i].dateEnd&&(o=t(r[i].dateEnd).format("YYYY-MM-DD")),o>e&&o<=n)return!0;if(a>=e&&a<n)return!0;if(a<=e&&o>=n)return!0;if(a>=e&&o<=n)return!0}return!1},e.extractMinutes=function(t){try{return e.pad(t.getHours())+":"+e.pad(t.getMinutes())}catch(n){return t=new Date(t),e.pad(t.getHours())+":"+e.pad(t.getMinutes())}},e.calculateTimespan=function(e,n){var r;r=n?t(n):t();var i=new Date(e),a=t.duration(r.diff(i));return a.asMinutes().toFixed(2)},e.totalMinutes=function(t){var e=t.split(":");1==e.length&&e.push(0);var n=parseInt(e[0]),r=parseInt(e[1]);return 60*n+r},e.pad=function(t,e){var n=t+"";for(e=e||2;n.length<e;)n="0"+n;return n},e.getTotalMinutes=function(t){var e=t.split(":");if(0===e.length||e.length>2)return null;1==e.length&&e.push(0);var n=parseInt(e[0]);if(n<0||n>23)return null;var r=parseInt(e[1]);return r<0||r>59?null:60*n+r},e}]),app.service("$entity",["$http","$q","blockUI","$auth","inform","zapi",function(t,e,n,r,i,a){function o(t){function e(t,r){if(Object(t)!==t)n[r]=t;else if(Array.isArray(t)){for(var i=0,a=t.length;i<a;i++)e(t[i],r+"["+i+"]");0===a&&(n[r]=[])}else{var o=!0;for(var c in t)o=!1,e(t[c],r?r+"."+c:c);o&&r&&(n[r]={})}}var n={};return e(t,""),n}function c(t){if(Object(t)!==t||Array.isArray(t))return t;var e=/\.?([^.\[\]]+)|\[(\d+)\]/g,n={};for(var r in t){for(var i,a=n,o="";i=e.exec(r);)a=a[o]||(a[o]=i[2]?[]:{}),o=i[2]||i[1];a[o]=t[r]}return n[""]||n}var s=this;this.get=function(e,n){return n?t.get("./api/"+e+"/list/"+n):t.get("./api/"+e+"/list")},this.getByKey=function(e,n,r,i){var a="./api/"+e+"/fetch",o={params:n};return"function"==typeof i&&(o.transformResponse=i),"function"!=typeof r?t.get(a,o):void t.get(a,o).then(function(t){r(null,t)}).catch(function(t){r(t)})},this.setFormFiles=function(t,e,n){if(e&&"string"!=typeof e)if(e.length)for(var r=0;r<e.length;r++)s.setFormFiles(t,e[r],n+"["+r+"]");else for(var i in e)if("object"==typeof e[i])if("newFile"===i)for(var a in e[i]){var o=n?n+"."+a:a;t.append(o,e[i][a])}else s.setFormFiles(t,e[i],n?n+"."+i:i)},this.add=function(e,n){var r="./api/"+e+"/add/";n._id&&(r+=n._id);var i=new FormData;return"message"!==e&&s.setFormFiles(i,n),i.append("item",angular.toJson(n)),t.post(r,i,{transformRequest:angular.identity,headers:{"Content-Type":void 0}})},this.getLookups=function(t,n){if(!a.entityMap[t].lookup)return n();if(0===a.entityMap[t].lookup.length)return n();for(var r=[],i=0;i<a.entityMap[t].lookup.length;i++){var o=a.entityMap[t].lookup[i];r.push(s.get(o))}e.all(r).then(function(e){for(var r={},i=0;i<e.length;i++)r[a.entityMap[t].lookup[i]]=e[i].data;n(null,r)},function(t){n(t)})},this.getMany=function(t,n){var r=t,i=[];r.forEach(function(t){i.push(s.get(t))});var a={};e.all(i).then(function(t){t.forEach(function(t,e){a[r[e]]=t.data}),n(null,a)},function(t){n(t)})},this.validate=function(t,e,n){return"function"==typeof a.entityMap[t].service.validate&&a.entityMap[t].service.validate(e,n)},this.remove=function(e,n){var r="./api/"+e+"/remove/"+n._id;return t.get(r)},this.blank=function(t){return"function"!=typeof a.entityMap[t].service.blank?{}:a.entityMap[t].service.blank()},this.flattenArray=function(t){var e,n=[],r=[],i=[];return t.forEach(function(t){var i=o(t);for(e in i)r.indexOf(e)===-1&&r.push(e);n.push(i)}),n.forEach(function(t){for(var n={},a=0;a<r.length;a++)e=r[a],"undefined"==typeof t[e]&&(t[e]=""),n[e]=t[e];i.push(n)}),i},this.unflattenArray=function(t){var e=[];return t.forEach(function(t){e.push(c(t))}),e}}]),app.service("ErrorSvc",function(){this.validationArgs=function(t,e){return{disabled:t,tooltip:e}}}),app.service("$graph",["$http","inform",function(t,e){var n={responsive:!0,responsiveAnimationDuration:1500,tooltip:{enabled:!0},elements:{line:{tension:0,stepped:!0}}};this.get=function(r,i,a,o,c,s,u,l){var p={query:a,obj:o,seriesKey:c,dataKey:s,labelsKey:u};t.post("/api/graph/auto/"+r+"/"+i,p).then(function(t){t.data.options=n,l(t.data)}).catch(function(t){var n;n=t.data?t.data.message||t.data:"O servidor excedeu o tempo limite de processamento, por favor tente novamente mais tarde",e.add(n,{ttl:2e3,type:"danger"}),l()})},this.custom=function(r,i,a){t.get("/api/graph/custom/"+r+"/"+i,{cache:!0}).then(function(t){t.data.options=n,a(t.data)}).catch(function(t){var n;n=t.data?t.data.message||t.data:"O servidor excedeu o tempo limite de processamento, por favor tente novamente mais tarde",e.add(n,{ttl:2e3,type:"danger"}),a()})}}]),app.service("$holiday",function(){function calculateNextOccurrence(holiday){var date,currentYear=(new Date).getFullYear();switch(holiday.format){case"static":var day=holiday.date.split("/")[0],month=holiday.date.split("/")[1];date=new Date(currentYear+"/"+month+"/"+day),new Date>=date&&(date=new Date(currentYear+1+"/"+month+"/"+day));break;case"dynamic":if(eval("my_function = "+holiday.formula),"function"!=typeof my_function)return;date=my_function(currentYear),date<new Date&&(date=my_function(currentYear+1))}return date}this.getDayHolidays=function(t,e){for(var n=[],r=0;r<t.length;r++)this.dayMatch(t[r].holiday,e)&&n.push(t[r].holiday);return n},this.dayMatch=function(t,e){e instanceof Date||(e=new Date(e));var n=e.getDate(),r=e.getMonth()+1,i=calculateNextOccurrence(t);return n===i.getDate()&&r===i.getMonth()+1},this.calculateNextOccurrence=function(t){return moment(calculateNextOccurrence(t)).format("YYYY-MM-DD")}}),app.service("$list",["$http","blockUI","mySocket",function(t,e,n){this.getMetadata=function(n){e.start("A obter listagens disponíveis..."),t.get("/api/list/getall").then(function(t){t.data.forEach(function(t){t.values={}}),n(t.data)}).catch(function(t){console.log(t),swal("Atenção","Não foi possível obter as listagens disponíveis, por favor actualize a página","warning"),n([])}).finally(function(){e.stop()})},this.get=function(r,i,a,o){return 0===i.length?swal("Atenção","Selecione pelo menos uma exploração","warning"):(e.start("A obter listagem..."),void t.get("/api/list/values/"+r.name,{params:{query:r.values,dbs:i}}).then(function(t){n.on(a,function(t){"undefined"!=typeof t.ok?(e.stop(),o(t.ok)):"undefined"!=typeof t.error?(e.stop(),swal("Ocorreu um erro",t.error,"error"),o([])):"undefined"!=typeof t.message&&e.message(t.message)})}).catch(function(t){swal("Atenção",t.data,"warning"),e.stop()}))}}]),app.service("$measure",["$http",function(t){this.getByType=function(e){return t.get("/api/unit/measure/"+e)}}]),app.service("$modal",["zapiPath","$uibModal",function(t,e){this.open=function(t,n,r,i,a){var o=e.open({animation:!0,templateUrl:"./client/modal/"+t+"/"+t+".html",controller:t+"Ctrl",size:n,backdrop:"static",resolve:{data:function(){return r}}});o.result.then(i,a)},this._open=function(n,r,i,a,o){var c=e.open({animation:!0,templateUrl:t+"/modal/"+n+"/"+n+".html",controller:n+"Ctrl",size:r,backdrop:"static",resolve:{data:function(){return i}}});c.result.then(a,o)}}]),app.service("$newsletter",["$entity","inform","blockUI",function(t,e,n){this.subscribe=function(r){r&&(n.start("A gravar email..."),t.add("newsletter",r).then(function(t){e.add("Email gravado com sucesso",{ttl:1e4,type:"info"})}).catch(function(t){e.add("Ocorreu um erro ao gravar o seu email.",{ttl:2e3,type:"warning"})}).finally(function(){callback(),n.stop()}))}}]),app.factory("$page",["projectTitle",function(t){var e=" - "+t,n="";return{title:function(){return n+e},setTitle:function(t){n=t}}}]),app.service("$report",["$http","blockUI",function(t,e){this.getMetadata=function(n){e.start("A obter meta dados..."),t.get("/api/report/metadata").then(function(t){n(null,t.data)}).catch(function(t){n(t)}).finally(function(){e.stop()})}}]),app.service("$role",["$http",function(t){this.getPermissions=function(){return t.get("/api/role/permissions")}}]),app.service("$task",["$http","blockUI","inform","$route",function(t,e,n,r){this.toggleState=function(i){e.start("A executar..."),t.get("./api/task/toggle/"+i._id).then(function(t){r.reload()}).catch(function(t){n.add("Ocorreu um erro ao alternar o estado da tarefa. Erro: "+t.data,{ttl:2e3,type:"danger"})}).finally(function(){e.stop()})},this.run=function(e){return t.get("./api/task/run/"+e._id)},this.getTypes=function(r){e.start("A obter dados..."),t.get("./api/task/types").then(function(t){r(t.data)}).catch(function(t){n.add("Não foi possível atualizar a lista de tarefas neste momento. Tente novamente. Erro: "+t.data,{ttl:2e3,type:"danger"}),r([])}).finally(function(){e.stop()})}}]),app.service("$validate",function(){function t(t){switch(t){case"0":return 0;case"1":return 1;case"2":return 2;case"3":return 3;case"4":return 4;case"5":return 5;case"6":return 6;case"7":return 7;case"8":return 8;case"9":return 9;case"A":return 10;case"B":return 11;case"C":return 12;case"D":return 13;case"E":return 14;case"F":return 15;case"G":return 16;case"H":return 17;case"I":return 18;case"J":return 19;case"K":return 20;case"L":return 21;case"M":return 22;case"N":return 23;case"O":return 24;case"P":return 25;case"Q":return 26;case"R":return 27;case"S":return 28;case"T":return 29;case"U":return 30;case"V":return 31;case"W":return 32;case"X":return 33;case"Y":return 34;case"Z":return 35;default:return-1}}function e(t){return!!t&&("string"==typeof t||t instanceof String)}this.nif=function(t){if(!e(t))return!1;var n=new RegExp("[1,2,5,6,7,8,9]\\d{8}");if(!t.match(n))return!1;var r=0;for(i=0;i<8;i++)r+=parseInt(t[i])*(9-i);var a=11-r%11;return a>=10&&(a=0),a===parseInt(t[8])},this.niss=function(t){if(!e(t))return!1;if(t=t.replace(/\s+/g,""),11!==t.length)return!1;for(var n=[29,23,19,17,13,11,7,5,3,2],r=0,i=0;i<t.length-1;i++)r+=parseInt(t[i]*n[i]);r=9-parseInt(r%10);var a=parseInt(t[t.length-1]);return r===a},this.cc=function(n){if(!e(n))return!1;var r=0,i=!1;if(12!==n.length)return!1;for(var a=n.length-1;a>=0;--a){var o=t(n[a]);if(o===-1)return!1;i&&(o*=2,o>9&&(o-=9)),r+=o,i=!i}return r%10===0},this.nib=function(t){if(!e(t))return!1;var n=new RegExp("^\\d{21}$");if(!t.match(n))return!1;for(var r=0,i=0;i<19;i++)r+=parseInt(t[i]),r*=10,r%=97;return r=98-10*r%97,parseInt(t.substring(19,21))===r}}),app.factory("mySocket",["socketFactory",function(t){return t()}]);