lemonldap-ng/lemonldap-ng-manager/site/htdocs/static/js/notifications.min.js
2018-06-22 21:52:25 +02:00

2 lines
6.9 KiB
JavaScript

(function(){var llapp,menu,scheme;scheme=[function(v){return"groupBy=substr(uid,1)"},function(v){return"uid="+v+"*&groupBy=uid"},function(v){return"uid="+v}];menu={actives:[{title:"markAsDone",icon:"check"}],done:[{title:"deleteNotification",icon:"trash"}],new:[{title:"save",icon:"save"}],home:[]};llapp=angular.module("llngNotificationsExplorer",["ui.tree","ui.bootstrap","llApp"]);llapp.controller("NotificationsExplorerCtrl",["$scope","$translator","$location","$q","$http","$uibModal",function($scope,$translator,$location,$q,$http,$uibModal){var autoId,c,dateToString;$scope.links=links;$scope.menulinks=menulinks;$scope.staticPrefix=staticPrefix;$scope.scriptname=scriptname;$scope.formPrefix=formPrefix;$scope.availableLanguages=availableLanguages;$scope.waiting=true;$scope.showM=false;$scope.showT=true;$scope.showForm=false;$scope.data=[];$scope.form={};$scope.formPost={};$scope.currentScope=null;$scope.currentNotification=null;$scope.menu=menu;$scope.translateP=$translator.translateP;$scope.translate=$translator.translate;$scope.translateTitle=function(node){return $translator.translateField(node,"title")};$scope.menuClick=function(button){if(button.popup){window.open(button.popup)}else{button.action||(button.action=button.title);switch(typeof button.action){case"function":button.action($scope.currentNode,$scope);break;case"string":$scope[button.action]();break;default:console.log(typeof button.action)}}return $scope.showM=false};$scope.markAsDone=function(){$scope.waiting=true;return $http.put(scriptname+"notifications/"+$scope.type+"/"+$scope.currentNotification.uid+"_"+$scope.currentNotification.reference,{done:1}).then(function(response){$scope.currentNotification=null;$scope.currentScope.remove();$scope.message={title:"notificationDeleted"};$scope.showModal("alert.html");$scope.waiting=false;return $scope.init()},function(response){$scope.message={title:"notificationNotDeleted",message:response.statusText};$scope.showModal("alert.html");$scope.waiting=false;return $scope.init()})};$scope.deleteNotification=function(){$scope.waiting=true;return $http["delete"](scriptname+"notifications/"+$scope.type+"/"+$scope.currentNotification.uid+"_"+$scope.currentNotification.reference+"_"+$scope.currentNotification.done).then(function(response){$scope.currentNotification=null;$scope.currentScope.remove();$scope.message={title:"notificationPurged"};$scope.showModal("alert.html");$scope.waiting=false;return $scope.init()},function(response){$scope.message={title:"notificationNotPurged",message:response.statusText};$scope.showModal("alert.html");$scope.waiting=false;return $scope.init()})};$scope.stoggle=function(scope){var node;node=scope.$modelValue;if(node.nodes.length===0){$scope.updateTree(node.value,node.nodes,node.level,node.query);return scope.toggle()}};$scope.notifDate=function(s){var d;if(s!=null){if(s.match(/(\d{4})-(\d{2})-(\d{2})/)){s=s.substr(0,4)+s.substr(5,2)+s.substr(8,2)}d=new Date(s.substr(0,4),s.substr(4,2)-1,s.substr(6,2));return d.toLocaleDateString()}return""};$scope.getLanguage=function(lang){$scope.lang=lang;$scope.form="white";$scope.init();return $scope.showM=false};$scope.$on("$locationChangeSuccess",function(event,next,current){var n;n=next.match(/#!?\/(\w+)/);$scope.type=n!=null?n[1]:"actives";if($scope.type==="new"){return $scope.displayCreateForm()}else{$scope.showForm=false;return $scope.init()}});autoId=0;$scope.updateTree=function(value,node,level,currentQuery){var query;$scope.waiting=true;query=scheme[level](value,currentQuery);return $http.get(scriptname+"notifications/"+$scope.type+"?"+query).then(function(response){var data,i,len,n,ref;data=response.data;if(data.result){ref=data.values;for(i=0,len=ref.length;i<len;i++){n=ref[i];autoId++;n.id="node"+autoId;if(level<scheme.length-1){n.nodes=[];n.level=level+1;n.query=query}node.push(n)}}return $scope.waiting=false},function(resp){return $scope.waiting=false})};$scope.displayNotification=function(scope){var node,notificationId;$scope.waiting=true;$scope.currentScope=scope;node=scope.$modelValue;notificationId=node.notification;if($scope.type==="actives"){notificationId=node.uid+"_"+node.reference}$http.get(scriptname+"notifications/"+$scope.type+"/"+notificationId).then(function(response){$scope.currentNotification={uid:node.uid,reference:node.reference,condition:node.condition};if($scope.type==="actives"){$scope.currentNotification.notifications=response.data.notifications}else{$scope.currentNotification.done=response.data.done}return $scope.waiting=false},function(resp){return $scope.waiting=false});return $scope.showT=false};$scope.showModal=function(tpl,init){var d,modalInstance;modalInstance=$uibModal.open({templateUrl:tpl,controller:"ModalInstanceCtrl",size:"lg",resolve:{elem:function(){return function(s){return $scope[s]}},set:function(){return function(f,s){return $scope[f]=s}},init:function(){return init}}});d=$q.defer();return modalInstance.result.then(function(msgok){$scope.message={title:"",message:""};return d.resolve(msgok)},function(msgnok){$scope.message={title:"",message:""};return d.reject(msgnok)})};$scope.save=function(){if($scope.form.uid&&$scope.form.reference&&$scope.form.xml){$scope.waiting=true;$scope.formPost.uid=$scope.form.uid;if($scope.form.date){$scope.formPost.date=dateToString($scope.form.date)}$scope.formPost.reference=$scope.form.reference;$scope.formPost.condition=$scope.form.condition;$scope.formPost.xml=$scope.form.xml;return $http.post("notifications/actives",$scope.formPost).then(function(response){var data;data=response.data;$scope.form={};if(data.result===1){$scope.message={title:"notificationCreated"}}else{$scope.message={title:"notificationNotCreated",message:data.error}}$scope.showModal("alert.html");return $scope.waiting=false},function(response){$scope.message={title:"notificationNotCreated",message:response.statusText};$scope.showModal("alert.html");return $scope.waiting=false})}else{$scope.message={title:"incompleteForm"};return $scope.showModal("alert.html")}};$scope.init=function(){$scope.waiting=true;$scope.showM=false;$scope.showT=false;$scope.data=[];$scope.currentScope=null;$scope.currentNotification=null;$q.all([$translator.init($scope.lang),$scope.updateTree("",$scope.data,0)]).then(function(){return $scope.waiting=false},function(resp){return $scope.waiting=false});$scope.activeModule="notifications";return $scope.myStyle={color:"#ffb84d"}};$scope.displayCreateForm=function(){$scope.waiting=true;return $translator.init($scope.lang).then(function(){$scope.currentNotification=null;$scope.showForm=true;$scope.data=[];$scope.waiting=false;return $scope.form.date=new Date})};c=$location.path().match(/^\/(\w+)/);$scope.type=c?c[1]:"actives";$scope.popupopen=function(){return $scope.popup.opened=true};$scope.dateOptions={startingDay:1,minDate:new Date};$scope.popup={opened:false};return dateToString=function(dt){var day,month,year;year=dt.getFullYear();month=dt.getMonth()+1;if(month<10){month="0"+month}day=dt.getDate();if(day<10){day="0"+day}return year+"-"+month+"-"+day}}])}).call(this);