isite 2022.1.16 → 2022.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/client-side/site_files/html/require_features.html +22 -20
- package/apps/client-side/site_files/html/require_payments.html +12 -19
- package/apps/client-side/site_files/html/require_permissions.html +11 -22
- package/apps/client-side/site_files/js/directive.js +5 -1
- package/apps/client-side/site_files/js/directive.min.js +2 -2
- package/apps/client-side/site_files/js/site.js +15 -10
- package/apps/client-side/site_files/js/site.min.js +1 -1
- package/index.js +0 -2
- package/lib/routing.js +1 -1
- package/lib/storage.js +15 -6
- package/object-options/index.js +3 -1
- package/object-options/lib/safty.js +4 -10
- package/{lib → object-options/lib}/strings.js +0 -0
- package/package.json +1 -1
- package/push.bat +1 -1
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Require Features</title>
|
|
7
|
+
<link rel="stylesheet" href="/x-css/all.css" />
|
|
8
|
+
</head>
|
|
9
|
+
<body class="center">
|
|
10
|
+
<br /><br />
|
|
11
|
+
<h1 class="center bold red">Require Features</h1>
|
|
12
|
+
<h2 class="center">##data.features##</h2>
|
|
13
|
+
<br /><br />
|
|
14
|
+
<div x-feature="!browser.social">
|
|
15
|
+
<h2 class="center"><a href="https://social-browser.com" target="_blank"> Download Social Browser From Here </a></h2>
|
|
16
|
+
<ol class="center">
|
|
17
|
+
<li>Download and Install Social Browser</li>
|
|
18
|
+
<li>open Browser Setting</li>
|
|
19
|
+
<li>click top right corner and select show setting</li>
|
|
20
|
+
<li>Check or click on ( i'm Using Social Browser ) and Save</li>
|
|
21
|
+
<li>re-open current page in Social Browser</li>
|
|
22
|
+
</ol>
|
|
23
|
+
</div>
|
|
24
|
+
</body>
|
|
23
25
|
</html>
|
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
<h1 class="center bold red">Require Payments</h1>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Require Payments</title>
|
|
7
|
+
<link rel="stylesheet" href="/x-css/all.css" />
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<h1 class="center bold red">Require Payments</h1>
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<li>goto Browser Setting</li>
|
|
18
|
-
<li>goto Basic Tab And Check (Send Browser ID)</li>
|
|
19
|
-
<li>Open Site in Social Browser</li>
|
|
20
|
-
</ol>
|
|
21
|
-
|
|
22
|
-
</body>
|
|
12
|
+
<br /><br />
|
|
13
|
+
<p>call us on facebook <a href="https://www.facebook.com/SmartCodeCompany"> Smart Code Company Page </a></p>
|
|
14
|
+
<p>call us on what's up ( +201090061266 )</p>
|
|
15
|
+
</body>
|
|
23
16
|
</html>
|
|
@@ -1,24 +1,13 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<br /><br />
|
|
15
|
-
<h2 class="center" x-feature="!browser.social"><a href="https://social-browser.com" target="_blank"> Download Social Browser From Here </a></h2>
|
|
16
|
-
<ol class="center">
|
|
17
|
-
<li>Download and Install Social Browser</li>
|
|
18
|
-
<li>goto Browser Setting</li>
|
|
19
|
-
<li>goto Basic Tab And Check (Send Browser ID)</li>
|
|
20
|
-
<li>Open Site in Social Browser</li>
|
|
21
|
-
</ol>
|
|
22
|
-
|
|
23
|
-
</body>
|
|
24
|
-
</html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Require Permissions</title>
|
|
7
|
+
<link rel="stylesheet" href="/x-css/all.css" />
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<h1 class="center bold red">Require Permissions</h1>
|
|
11
|
+
<h2 class="center">##data.permissions##</h2>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var app=app||angular.module("myApp",[]);window.$=window.jQuery,app.filter("xdate",function(){return function(e){if(e)return e.day2?`${e.day} - ${e.month+1} - ${e.year} -- ${e.day2} - ${e.month2+1} - ${e.year2}`:`${e.day} - ${e.month+1} - ${e.year}`}}),app.service("isite",["$http",function(e){this.getValue=function(e,n){if(!e||!n)return null;if("_"==n)return e;let l=n.split(".");return 1===l.length?e[l[0]]:2===l.length?e[l[0]][l[1]]:3===l.length?e[l[0]][l[1]][l[2]]:null},this.uploadImage=function(n,l,a){l=Object.assign({category:"default"},l),a=a||function(){};var d=new FormData;d.append("fileToUpload",n[0]),e.post("/api/upload/image/"+l.category,d,{withCredentials:!0,headers:{"Content-Type":void 0},uploadEventHandlers:{progress:function(e){a(null,null,e)}},transformRequest:angular.identity}).then(function(e){e.data&&e.data.done&&a(null,e.data.image_url)},function(e){a(e,null,null)})},this.uploadFile=function(n,l,a){l=Object.assign({category:"default"},l),a=a||function(){};var d=new FormData;d.append("fileToUpload",n[0]),e.post("/api/upload/file/"+l.category,d,{withCredentials:!0,headers:{"Content-Type":void 0},uploadEventHandlers:{progress:function(e){a(null,null,e)}},transformRequest:angular.identity}).then(function(e){e.data&&e.data.done&&e.data.file&&a(null,{name:e.data.file.name,url:e.data.file.url})},function(e){a(e,null,null)})},this.deleteFile=function(e,n){n=n||function(){},n()},this.upload=function(n,l,a){l=Object.assign({api:"/api/upload/file"},l),a=a||function(){};var d=new FormData;d.append("fileToUpload",n[0]),e.post(l.api,d,{withCredentials:!0,headers:{"Content-Type":void 0},uploadEventHandlers:{progress:function(e){a(null,null,e)}},transformRequest:angular.identity}).then(function(e){e.data&&e.data.done&&e.data.file&&a(null,{name:e.data.file.name,url:e.data.file.url})},function(e){a(e,null,null)})}}]),app.directive("iDate",function(){return{link:function(e,n,l){void 0!==l.disabled?l.disabled="disabled":l.disabled="",$(n).find("select").focus(()=>{$(".popup").hide()}),e.days1=[];for(let n=1;n<32;n++)e.days1.push(n);e.years1=[];for(let n=1900;n<2100;n++)e.years1.push(n);e.monthes1=["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"]},restrict:"E",require:"ngModel",scope:{v:"@",label:"@",disabled:"@",ngModel:"="},template:'\n <div class="row i-date">\n \n <div class=" control">\n <label> {{label}} </label>\n <div class="row">\n <div class="col3 day"> \n <select ng-disabled="disabled" v="{{v}}" ng-model="ngModel.day" class="appearance-none no-border-left no-border-radius" >\n <option ng-repeat="d1 in days1" ng-value="d1"> {{d1}} </option>\n </select>\n </div>\n <div class="col5 month"> \n <select ng-disabled="disabled" v="{{v}}" ng-model="ngModel.month" class="appearance-none no-border-left no-border-right no-border-radius" >\n <option ng-repeat="m1 in monthes1" ng-value="$index"> {{m1}} </option>\n </select>\n </div>\n <div class="col4 year"> \n <select ng-disabled="disabled" v="{{v}}" ng-model="ngModel.year" class="appearance-none no-border-right no-border-radius" >\n <option ng-repeat="y1 in years1" ng-value="y1"> {{y1}} </option>\n </select>\n </div>\n </div>\n </div>\n \n \n </div>\n '}}),app.directive("iDate2",function(){return{link:function(e,n,l){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.days1=[];for(let n=1;n<32;n++)e.days1.push(n);e.years1=[];for(let n=1900;n<2100;n++)e.years1.push(n);e.monthes1=["يناير / Jan","فبراير / Feb","مارس / Mar","ابريل / Aper","مايو / May","يونيو / June","يوليو / Jule","اغسطس / Aug","سبتمبر / Sep","اكتوبر / Oct","نوفمبر / Nov","ديسمبر / Des"],e.monthes0=["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],e.model=null,$(n).find("select").focus(()=>{$(".popup").hide()}),e.$watch("ngModel",function(n){n?(n=new Date(n),e.model=e.model||{},e.model.day=n.getDate(),e.model.month=n.getMonth(),e.model.year=n.getFullYear()):(e.model=e.model||{},e.model.day=0,e.model.month=-1,e.model.year=0)}),e.updateDate=function(){e.model&&e.model.year&&e.model.day?e.ngModel=new Date(e.model.year,e.model.month,e.model.day,0,0,0):delete e.ngModel}},restrict:"E",require:"ngModel",scope:{v:"@",disabled:"@",label:"@",ngModel:"="},template:'\n <div class="row i-date2">\n \n <div class=" control">\n <label> {{label}} </label>\n <div class="row">\n <div class="col3 day"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.day" ng-change="updateDate()" class="appearance-none no-border-left no-border-radius" >\n <option ng-repeat="d1 in days1" ng-value="d1"> {{d1}} </option>\n </select>\n </div>\n <div class="col5 month"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.month" ng-change="updateDate()" class="appearance-none no-border-left no-border-right no-border-radius" >\n <option ng-repeat="m1 in monthes1" ng-value="$index"> {{m1}} </option>\n </select>\n </div>\n <div class="col4 year"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.year" ng-change="updateDate()" class="appearance-none no-border-right no-border-radius" >\n <option ng-repeat="y1 in years1" ng-value="y1"> {{y1}} </option>\n </select>\n </div>\n </div>\n </div>\n \n \n </div>\n '}}),app.directive("iTime",function(){return{link:function(e,n,l){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.model={},e.hours=[];for(let n=1;n<25;n++)e.hours.push(n);e.minutes=[];for(let n=0;n<60;n++)e.minutes.push(n);$(n).find("select").focus(()=>{$(".popup").hide()}),e.$watch("ngModel",function(n){n?(n.date=new Date(n.date),e.model=e.model||{},e.model.hour=n.hour,e.model.minute=n.minute):(e.model=e.model||{},e.model.hour=0,e.model.minute=0)}),e.updateTime=function(){e.model?(e.ngModel=e.ngModel||{},e.ngModel.hour=e.model.hour,e.ngModel.minute=e.model.minute,e.ngModel.date=new Date(null,null,null,e.model.hour,e.model.minute,null)):delete e.ngModel}},restrict:"E",require:"ngModel",scope:{v:"@",disabled:"@",label:"@",ngModel:"="},template:'\n <div class="row i-time">\n <div class=" control ">\n <label class="text-center"> {{label}} </label>\n <div class="row">\n <div class="col6 right">\n <div class="row">\n <div class="col2"></div>\n <div class="col8">\n <select ng-disabled="disabled" ng-model="model.minute" ng-change="updateTime()" class="small appearance-none no-border-left no-border-radius" >\n <option ng-repeat="m in minutes" ng-value="m"> {{m}}</option>\n </select>\n </div>\n <div class="col2"></div>\n </div>\n \n </div>\n <div class="col6">\n <div class="row">\n <div class="col2 space right">\n <span> : </span>\n </div>\n <div class="col8">\n <select ng-disabled="disabled" ng-model="model.hour" ng-change="updateTime()" class="large blue appearance-none no-border-left no-border-radius" >\n <option ng-repeat="h in hours" ng-value="h"> {{h}} </option>\n </select>\n </div>\n \n </div>\n \n </div>\n </div>\n </div>\n '}}),app.directive("iDatetime2",function(){return{link:function(e,n,l){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.hour1=[];for(let n=1;n<25;n++)e.hour1.push(n);e.minute_list=[];for(let n=1;n<60;n++)e.minute_list.push({name:n});e.days1=[];for(let n=1;n<32;n++)e.days1.push(n);e.years1=[];for(let n=1900;n<2100;n++)e.years1.push(n);e.monthes1=["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],e.model=null,$(n).find("select").focus(()=>{$(".popup").hide()}),e.$watch("ngModel",function(n){n?(n=new Date(n),e.model=e.model||{},e.model.hour=n.getHours(),e.model.minute=n.getMinutes(),e.model.day=n.getDate(),e.model.month=n.getMonth(),e.model.year=n.getFullYear()):(e.model=e.model||{},e.model.hour=0,e.model.minute=0,e.model.day=0,e.model.month=-1,e.model.year=0)}),e.updateDate=function(){e.model&&e.model.year&&e.model.day?e.ngModel=new Date(e.model.year,e.model.month,e.model.day,e.model.hour,e.model.minute):delete e.ngModel}},restrict:"E",require:"ngModel",scope:{v:"@",disabled:"@",label:"@",ngModel:"="},template:'\n <div class="row i-datetime2">\n \n <div class=" control">\n <label> {{label}} </label>\n <div class="row">\n\n <div class="col2 day"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.day" ng-change="updateDate()" class="appearance-none no-border-left no-border-radius" >\n <option ng-repeat="d1 in days1" ng-value="d1"> {{d1}} </option>\n </select>\n </div>\n <div class="col5 month"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.month" ng-change="updateDate()" class="appearance-none no-border-left no-border-right no-border-radius" >\n <option ng-repeat="m1 in monthes1" ng-value="$index"> {{m1}} </option>\n </select>\n </div>\n <div class="col3 year"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.year" ng-change="updateDate()" class="appearance-none no-border-right no-border-radius" >\n <option ng-repeat="y1 in years1" ng-value="y1"> {{y1}} </option>\n </select>\n </div>\n\n <div class="col1 hour"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.hour" ng-change="updateDate()" class="appearance-none no-border-radius" >\n <option ng-repeat="h1 in hour1" ng-value="h1"> {{h1}} </option>\n </select>\n </div>\n <div class="col1 minute"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.minute" ng-change="updateDate()" class="green appearance-none no-border-right no-border-radius" >\n <option ng-repeat="m1 in minute_list" ng-value="m1.name" class="green"> {{m1.name}} </option>\n </select>\n </div>\n\n </div>\n </div>\n \n \n </div>\n '}}),app.directive("iMonth2",function(){return{link:function(e,n,l){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.years=[];for(let n=1900;n<2100;n++)e.years.push(n);e.monthes=["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],e.model=null,$(n).find("select").focus(()=>{$(".popup").hide()}),e.$watch("ngModel",function(n){n?(n=new Date(n),e.model=e.model||{},e.model.day=1,e.model.month=n.getMonth(),e.model.year=n.getFullYear()):(e.model=e.model||{},e.model.day=0,e.model.month=-1,e.model.year=0)}),e.updateDate=function(){e.model&&e.model.year?e.ngModel=new Date(e.model.year,e.model.month,1):delete e.ngModel}},restrict:"E",require:"ngModel",scope:{v:"@",label:"@",disabled:"@",ngModel:"="},template:'\n <div class="row i-date2">\n \n <div class=" control">\n <label> {{label}} </label>\n <div class="row">\n \n <div class="col7 month"> \n <select ng-disabled="disabled" v="{{v}}" ng-model="model.month" ng-change="updateDate()" class="appearance-none no-border-left no-border-radius" >\n <option ng-repeat="m1 in monthes" ng-value="$index"> {{m1}} </option>\n </select>\n </div>\n\n <div class="col5 year"> \n <select ng-disabled="disabled" v="{{v}}" ng-model="model.year" ng-change="updateDate()" class="appearance-none no-border-right no-border-radius" >\n <option ng-repeat="y1 in years" ng-value="y1"> {{y1}} </option>\n </select>\n </div>\n\n </div>\n </div>\n \n \n </div>\n '}}),app.directive("iFulldate",["$http",function(e){return{link:function(n,l,a,d){let t=!1;void 0!==a.disabled?a.disabled="disabled":a.disabled="",$(l).find("select").focus(()=>{$(".popup").hide()}),n.days1=[];for(let e=1;e<32;e++)n.days1.push(e);n.years1=[];for(let e=1950;e<2030;e++)n.years1.push(e);n.monthes1=["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],n.days2=[];for(let e=1;e<31;e++)n.days2.push(e);n.years2=[];for(let e=1370;e<1450;e++)n.years2.push(e);n.monthes2=["محرم","صفر","ربيع اول","ربيع ثان","جمادى اول","جمادى ثان","رجب","شعبان","رمضان","شوال","ذى القعدة","ذى الحجة"],n.model={},n.$watch("ngModel",function(e){n.model=e||{}}),n.$watch("ngModel.date",function(e){e&&("string"==typeof e&&(e=new Date(e)),n.model=n.model||{},n.model.date=e,n.model.day=e.getDate(),n.model.month=e.getMonth(),n.model.year=e.getFullYear(),n.get_hijri_date())}),n.get_hijri_date=function(){if(n.model&&n.model.year&&n.model.day){if(d.$setViewValue(n.model),t)return;t=!0,n.model.date=new Date(n.model.year,n.model.month,n.model.day),e({method:"POST",url:"/api/get_hijri_date",data:{date:n.model.year+"/"+(n.model.month+1)+"/"+n.model.day}}).then(e=>{e.data.done&&(n.model.hijri=e.data.hijri,n.model.day2=parseInt(n.model.hijri.split("/")[2]),n.model.month2=parseInt(n.model.hijri.split("/")[1])-1,n.model.year2=parseInt(n.model.hijri.split("/")[0]),d.$setViewValue(n.model),t=!1)}).catch(()=>{t=!1})}},n.get_normal_date=function(){if(n.model&&n.model.year2&&n.model.day2){if(d.$setViewValue(n.model),t)return;t=!0,e({method:"POST",url:"/api/get_normal_date",data:{hijri:n.model.year2+"/"+(n.model.month2+1)+"/"+n.model.day2}}).then(e=>{e.data.done&&(n.model.date=new Date(e.data.date),n.model.day=parseInt(e.data.date.split("/")[2]),n.model.month=parseInt(e.data.date.split("/")[1])-1,n.model.year=parseInt(e.data.date.split("/")[0]),d.$setViewValue(n.model),t=!1)}).catch(()=>{t=!1})}}},restrict:"E",require:"ngModel",scope:{v:"@",label1:"@",label2:"@",disabled:"@",ngModel:"=",ngChange:"&"},template:'\n <div class="row i-date">\n \n <div class="col6 control">\n <label> {{label1}} </label>\n <div class="row">\n <div class="col3 day"> \n <select ng-change="get_hijri_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.day" class="appearance-none no-border-left no-border-radius">\n <option ng-repeat="d1 in days1" ng-value="d1"> {{d1}} </option>\n </select>\n </div>\n <div class="col5 month"> \n <select ng-change="get_hijri_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.month" class="appearance-none no-border-left no-border-right no-border-radius">\n <option ng-repeat="m1 in monthes1" ng-value="$index"> {{m1}} </option>\n </select>\n </div>\n <div class="col4 year"> \n <select ng-change="get_hijri_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.year" class="appearance-none no-border-right no-border-radius">\n <option ng-repeat="y1 in years1" ng-value="y1"> {{y1}} </option>\n </select>\n </div>\n </div>\n </div>\n \n <div class="col6 control">\n <label> {{label2}} </label>\n <div class="row">\n <div class="col3 day"> \n <select ng-change="get_normal_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.day2" class="appearance-none no-border-left no-border-radius">\n <option ng-repeat="d2 in days2" ng-value="d2"> {{d2}} </option>\n </select>\n </div>\n <div class="col5 month"> \n <select ng-change="get_normal_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.month2" class="appearance-none no-border-left no-border-right no-border-radius">\n <option ng-repeat="m2 in monthes2" ng-value="$index"> {{m2}} </option>\n </select>\n </div>\n <div class="col4 year"> \n <select ng-change="get_normal_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.year2" class="appearance-none no-border-right no-border-radius">\n <option ng-repeat="y2 in years2" ng-value="y2"> {{y2}} </option>\n </select>\n </div>\n </div>\n </div>\n \n </div>\n '}}]),app.directive("iControl",function(){return{restrict:"E",require:"ngModel",scope:{v:"@",id2:"@",label:"@",type:"@",disabled:"@",ngModel:"=",ngChange:"&",ngKeydown:"&"},link:function(e,n,l,a){l.type=l.type||"text",void 0!==l.disabled?l.disabled="disabled":l.disabled="",$(n).find("input").focus(()=>{$(".popup").hide()}),e.$watch(l.ngModel,function(e){})},template:'\n <div class="control">\n <label> {{label}} </label>\n <input id="{{id2}}" ng-disabled="disabled" autofocus v="{{v}}" type="{{type}}" ng-model="ngModel" ng-change="ngChange()" ngKeydown="ngKeydown()">\n </div>\n '}}),app.directive("iTextarea",function(){return{restrict:"E",require:"ngModel",scope:{v:"@",label:"@",disabled:"@",rows:"@",ngModel:"=",ngChange:"&"},link:function(e,n,l,a){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.rows=e.rows||4,$(n).find("textarea").focus(()=>{$(".popup").hide()})},template:'\n <div class="control">\n <label> {{label}} </label>\n <textarea ng-disabled="disabled" rows="{{rows}}" v="{{v}}" ng-model="ngModel" ng-change="ngChange()"></textarea>\n </div>\n '}}),app.directive("iCheckbox",function(){return{restrict:"E",require:"ngModel",scope:{label:"@",ngModel:"=",ngChange:"&"},link:function(e,n,l,a){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.updateModal=function(n){return"disabled"!=l.disabled&&(e.ngModel=!n,!0)}},template:'\n <div class="selector" ng-class="{\'selected\' : ngModel , \'un-selected\' : !ngModel }" ng-click="updateModal(ngModel);ngChange($event , ngModel)">\n <i ng-show="!ngModel" class="fa fa-square"></i> <i ng-show="ngModel" class="fa fa-check"></i> {{label}}\n </div>\n '}}),app.directive("iCheckbox2",function(){return{restrict:"E",require:"ngModel",scope:{label:"@",ngModel:"="},link:function(e,n,l,a){},template:'\n <div class="control">\n <label class="checkbox">\n <span class="title"> {{label}} </span>\n <input type="checkbox" ng-model="ngModel" >\n <span class="checkmark"></span>\n </label>\n </div>\n '}}),app.directive("iRadio",function(){return{restrict:"E",require:"ngModel",scope:{label:"@",ngValue:"@",group:"@",ngModel:"="},link:function(e,n,l,a){l.group||(l.group=l.ngModel),e.changeModal=function(n){e.ngModel=n},e.$watch("ngModel",n=>{n&&e.ngValue}),e.$watch("ngValue",n=>{n&&e.ngModel})},template:'\n <div group="{{group}}" class="selector" ng-class="{\'selected\' : ngModel == ngValue , \'un-selected\' : ngModel != ngValue }" ng-click="changeModal(ngValue);ngChange($event , ngModel , ngValue)">\n <i ng-show="ngModel != ngValue" class="fa fa-circle"></i> <i ng-show="ngModel == ngValue" class="fa fa-circle"></i> {{label}}\n </div>\n '}}),app.directive("iRadio2",function(){return{restrict:"E",require:"ngModel",scope:{label:"@",ngValue:"@",group:"@",ngModel:"="},link:function(e,n,l,a){l.group||(l.group=l.ngModel);let d=$(n).find("input");e.$watch("ngModel",n=>{n&&(e.ngModel=n,n==e.ngValue&&d.prop("checked",!0))}),e.$watch("ngValue",n=>{n&&n==e.ngModel&&d.prop("checked",!0)})},template:'\n <div class="control">\n <label class="radio">\n <span > {{label}} </span>\n <input name="{{group}}" ng-value="ngValue" type="radio" ng-model="ngModel" >\n <span class="checkmark"></span>\n </label>\n </div>\n '}}),app.directive("iButton",function(){return{restrict:"E",scope:{label:"@",type:"@",click:"@",fa:"@"},link:function(e,n,l,a){!l.fa&&l.type&&(l.type.like("*exit*")||l.type.like("*close*")?l.fa="times":l.type.like("*view*")||l.type.like("*details*")?l.fa="file":l.type.like("*add*")||l.type.like("*new*")?l.fa="plus-circle":l.type.like("*update*")||l.type.like("*edit*")?l.fa="pencil":l.type.like("*save*")?l.fa="save":l.type.like("*delete*")||l.type.like("*remove*")?l.fa="trash":l.type.like("*print*")?l.fa="print":l.type.like("*search*")?l.fa="search":(l.type.like("*export*")||l.type.like("*excel*"))&&(l.fa="table"))},template:'\n <a class="btn {{type}}">\n {{label}}\n <i ng-show="fa" class="fa fa-{{fa}}" aria-hidden="true"></i> </a>\n '}}),app.directive("iList",["$interval","$timeout","isite",function(e,n,l){return{restrict:"E",require:"ngModel",scope:{v:"@",label:"@",display:"@",display2:"@",disabled:"@",css:"@",space:"@",primary:"@",ngValue:"@",ngModel:"=",ngSearch:"=",ngChange:"&",ngAdd:"&",items:"="},link:function(e,a,d,t){function i(){let e=$(s).closest(".modal-body"),n=$(s).parent(),l=n.parent(),a=n.width(),d=l.offset(),t=parseFloat($("body").css("margin-right").replace("px","")),i=parseFloat($("body").css("margin-left").replace("px","")),o=$(document).width()-d.left-a+t+i;$(s).css("width",a),$(s).css("right",o);let r=0,c=n.offset().top,p=0,g=$(window).scrollTop();e.length>0&&(p=e.scrollTop()),g?r=c-g+80:c&&(r=c+80),$(s).css("top",r)}e.display=d.display=d.display||"name",e.primary=d.primary=d.primary||"id",d.space=d.space||" ",d.ngValue=d.ngValue||"",void 0!==d.disabled?d.disabled="disabled":d.disabled="",void 0===d.ngAdd?e.fa_add="fa-search":e.fa_add="fa-plus",void 0===d.ngSearch?e.showSearch=!1:e.showSearch=!0;let o=$(a).find("input"),s=$(a).find(".popup");$(a).find(".search");$(window).scroll(function(){i()}),$(".modal-body").scroll(function(){i()}),$(".modal").scroll(function(){i()}),$(s).closest("table").closest("div").scroll(function(){i()}),$(s).hide(),$(o).focus(()=>{$(".popup").hide(),$(s).show(),i(),$(s).focus()}),e.hide=function(){$(s).hide()},e.getValue=function(n){let a=l.getValue(n,e.display);return a||""},e.getValue2=function(n){return e.display2&&l.getValue(n,e.display2)||""},e.getNgModelValue=function(n){return n&&e.display&&e.ngValue?l.getValue(n,e.display.replace(e.ngValue+".",""))||"":n&&e.display&&l.getValue(n,e.display)||""},e.getNgModelValue2=function(n){return n&&e.display2&&e.ngValue?l.getValue(n,e.display2.replace(e.ngValue+".",""))||"":n&&e.display2&&l.getValue(n,e.display2)||""},e.getNgValue=function(n){return n&&e.ngValue?l.getValue(n,e.ngValue):n},e.$watch("items",n=>{o.val(""),n&&n.forEach(n=>{n.$display=e.getValue(n)+d.space+e.getValue2(n)}),n&&e.ngModel&&n.forEach(n=>{l.getValue(n,e.primary)==l.getValue(e.ngModel,e.primary)&&(e.ngModel=n,n.$display=e.getValue(n)+d.space+e.getValue2(n),o.val(n.$display))})}),e.$watch("ngModel",n=>{o.val(""),e.ngModel=n,n&&o.val(" "+e.getNgModelValue(n)+d.space+e.getNgModelValue2(n))}),e.updateModel=function(l){e.ngModel=e.getNgValue(l,e.ngValue),o.val(e.getNgModelValue(e.ngModel)+d.space+e.getNgModelValue2(e.ngModel)),$(s).hide(),$(o).show(),n(()=>{e.ngChange()})}},template:"/*##client-side/sub/i-list.content.html*/"}}]),app.directive("iChecklist",["$interval",function(e){return{restrict:"E",required:"ngModel",scope:{label:"@",primary:"@",display:"@",ngModel:"=",items:"=",like:"&"},link:function(e,n,l,a){l.primary=l.primary||"id",e.selectedItems=[],e.$watch("ngModel",n=>{e.reload()}),e.reload=function(){e.selectedItems=[],e.ngModel&&(e.ngModel.forEach(n=>{e.selectedItems.push(n)}),e.items&&e.items.forEach(n=>{let l=!1;e.selectedItems.forEach(a=>{n[e.primary]===a[e.primary]&&(l=!0)}),n.$selected=!!l})),e.ngModel||(e.selectedItems=[],e.items&&e.items.forEach(e=>{e.$selected=!1}))},e.change=function(n){if(n.$selected=!n.$selected,n.$selected){let l=!1;e.selectedItems.forEach(a=>{a[e.primary]===n[e.primary]&&(l=!0)}),l||e.selectedItems.push(n)}else e.selectedItems.forEach((l,a)=>{l[e.primary]===n[e.primary]&&e.selectedItems.splice(a,1)});e.ngModel=e.selectedItems}},template:'\n <div class="row padding check-list">\n <label class="title"> {{label}} </label>\n <div ng-repeat="item in items" ng-click="change(item);ngChange($event , item);" class="selector" ng-class="{\'selected\' : item.$selected , \'un-selected\' : !item.$selected }" >\n <i ng-show="!item.$selected" class="fa fa-square"></i> <i ng-show="item.$selected" class="fa fa-check"></i> {{item[display]}}\n </div>\n </div>\n '}}]),app.directive("iChecklist2",["$interval",function(e){return{restrict:"E",required:"ngModel",scope:{label:"@",primary:"@",display:"@",ngModel:"=",items:"=",like:"&"},link:function(e,n,l,a){l.primary=l.primary||"id",e.selectedItems=[],e.$watch("ngModel",n=>{e.reload()}),e.reload=function(){e.selectedItems=[],e.ngModel&&(e.ngModel.forEach(n=>{e.selectedItems.push(n)}),e.items&&e.items.forEach(n=>{let l=!1;e.selectedItems.forEach(a=>{n[e.primary]===a[e.primary]&&(l=!0)}),n.$selected=!!l})),e.ngModel||(e.selectedItems=[],e.items&&e.items.forEach(e=>{e.$selected=!1}))},e.change=function(n){if(n.$selected){let l=!1;e.selectedItems.forEach(a=>{a[e.primary]===n[e.primary]&&(l=!0)}),l||e.selectedItems.push(n)}else e.selectedItems.forEach((l,a)=>{l[e.primary]===n[e.primary]&&e.selectedItems.splice(a,1)});e.ngModel=e.selectedItems}},template:'\n <div class="row padding check-list">\n <label class="title"> {{label}} </label>\n <div class="control" ng-repeat="item in items">\n <label class="checkbox" >\n <span > {{item[display]}} </span>\n <input type="checkbox" ng-model="item.$selected" ng-change="change(item)" >\n <span class="checkmark"></span>\n </label>\n </div>\n </div>\n '}}]),app.directive("iRadiolist",["$interval",function(e){return{restrict:"E",required:"ngModel",scope:{label:"@",display:"@",ngModel:"=",items:"="},link:function(e,n,l){e.model=e.ngModel,e.code="radio_"+Math.random(),e.change=function(n){e.ngModel=n},e.isChecked=function(n){return!(!n||!e.ngModel||e.ngModel.id!==n.id)}},template:'\n <div class="row padding radio-list">\n <label class="title"> {{label}} </label>\n <div class="control" ng-repeat="item in items">\n <label class="radio" >\n <span > {{item[display]}} </span>\n <input name="{{code}}" type="radio" ng-model="model" ng-checked="isChecked(item)" ng-click="change(item)" ng-change="change(item)" >\n <span class="checkmark"></span>\n </label>\n </div>\n </div>\n '}}]),app.directive("iFile",["$interval","isite",function(e,n){return{restrict:"E",required:"ngModel",scope:{label:"@",type:"@",ngModel:"=",ngClick:"&",onSelected:"&"},link:function(e,n,l,a){e.type=e.type||"bg-green";let d=$(n).find("input")[0],t=$(n).find("a")[0];""!==l.view&&t.addEventListener("click",function(){d.click()}),d.addEventListener("change",function(){e.ngModel=this.files[0].path,e.onSelected(this.files[0].path),e.$applyAsync()}),e.$watch("ngModel",e=>{e&&t.setAttribute("url",e)})},template:'\n <form class="form text-center pointer">\n <input class="hidden" type="file" name="file" />\n <a class="btn {{type}}" ngClick="ngClick()" url="{{ngModel}}"> {{label}} </a>\n </form>\n '}}]),app.directive("iImage",["$interval","isite",function(e,n){return{restrict:"E",required:"ngModel",scope:{category:"@",ngModel:"=",ngClick:"&"},link:function(e,l,a,d){e.category=e.category||"default";let t=$(l).find("input")[0],i=$(l).find("img")[0],o=$(l).find("progress")[0];$(o).hide(),""!==a.view&&i.addEventListener("click",function(){t.click()}),t.addEventListener("change",function(){n.uploadImage(this.files,{category:e.category},(n,l,a)=>{a&&($(o).show(),o.value=a.loaded,o.max=a.total),l&&(e.ngModel=l)})}),e.$watch("ngModel",e=>{e&&i.setAttribute("src",e)})},template:'\n <form class="form text-center pointer">\n <input class="hidden" type="file" name="file" />\n <img class="bg-white" ng-src="{{ngModel}}" ngClick="ngClick()" onerror="this.src=\'/images/no.jpg\'" />\n <progress class="row"></progress>\n </form>\n '}}]),app.directive("iUpload",["$interval","isite",function(e,n){return{restrict:"E",required:"ngModel",scope:{label:"@",api:"@",type:"@",ngModel:"=",ngClick:"&",onUploaded:"&"},link:function(e,l,a,d){e.type=e.type||"bg-green";let t=$(l).find("input")[0],i=$(l).find("a")[0],o=$(l).find("progress")[0];$(o).hide(),""!==a.view&&i.addEventListener("click",function(){t.click()}),t.addEventListener("change",function(){n.upload(this.files,{api:e.api},(n,l,a)=>{a&&($(o).show(),o.value=a.loaded,o.max=a.total),l&&(e.ngModel=l,e.onUploaded())})}),e.$watch("ngModel",e=>{e&&i.setAttribute("url",e)})},template:'\n <form class="form text-center pointer">\n <input class="hidden" type="file" name="file" />\n <a class="btn {{type}}" ngClick="ngClick()" url="{{ngModel}}"> {{label}} </a>\n <progress class="row"></progress>\n </form>\n '}}]),app.directive("iFiles",["$interval","isite",function(e,n){return{restrict:"E",required:"ngModel",scope:{category:"@",label:"@",ngModel:"="},link:function(l,a,d,t){""===d.view&&(l.viewOnly=!0);let i=$(a).find("progress")[0];l.category=l.category||"default",l.id=Math.random().toString().replace(".","_"),l.deleteFile=function(e){n.deleteFile(e,()=>{for(let n=0;n<l.ngModel.length;n++){let a=l.ngModel[n];if(a.url===e.url)return void l.ngModel.splice(n,1)}})};let o=!1;e(()=>{if(!o)if(""!==d.view){let e=document.querySelector("#btn_"+l.id);e&&(o=!0,e.addEventListener("click",function(){document.querySelector("#input_"+l.id).click()}));let a=document.querySelector("#input_"+l.id);a&&a.addEventListener("change",function(){n.uploadFile(this.files,{category:l.category},(e,n,a)=>{a&&($(i).show(),i.value=a.loaded,i.max=a.total),n&&(void 0===l.ngModel&&(l.ngModel=[]),l.ngModel.push(n))})})}else o=!0},500)},template:'\n <div class="files">\n <label> {{label}} </label>\n <form ng-if="viewOnly !== !0" id="img_{{id}}" class="form text-center pointer">\n <input id="input_{{id}}" class="hidden" type="file" name="file" />\n <a id="btn_{{id}}" class="btn bg-green"> <i class="fa fa-upload white"></i> </a>\n </form>\n <progress class="row"></progress>\n <div class="padding">\n \n <div class="row padding" ng-repeat="f in ngModel">\n <h2> \n <a class="btn default bg-blue" href="{{f.url}}"> <i class="fa fa-2x fa-download white"></i> </a>\n <a ng-if="viewOnly !== !0" class="btn default bg-red" ng-click="deleteFile(f)"> <i class="fa fa-trash white"></i> </a>\n <span> {{f.name}} </span>\n </h2> \n </div>\n </div>\n </div>\n \n '}}]),app.directive("iDrag",["$document",function(e){return function(n,l,a){function d(e){r=e.screenY-o,s=e.screenX-i,l.css({top:r+"px",left:s+"px"})}function t(){e.off("mousemove",d),e.off("mouseup",t)}var i=0,o=0,s=0,r=0;l.css({position:"relative"}),l.on("mousedown",function(n){n.preventDefault(),i=n.screenX-s,o=n.screenY-r,e.on("mousemove",d),e.on("mouseup",t)})}}]),
|
|
2
|
-
|
|
1
|
+
var app=app||angular.module("myApp",[]);window.$=window.jQuery,app.filter("xdate",function(){return function(e){if(e)return e.day2?`${e.day} - ${e.month+1} - ${e.year} -- ${e.day2} - ${e.month2+1} - ${e.year2}`:`${e.day} - ${e.month+1} - ${e.year}`}}),app.filter("xmoney",function(){return function(e){return site.toMoney(e,!1)}}),app.service("isite",["$http",function(e){this.getValue=function(e,n){if(!e||!n)return null;if("_"==n)return e;let l=n.split(".");return 1===l.length?e[l[0]]:2===l.length?e[l[0]][l[1]]:3===l.length?e[l[0]][l[1]][l[2]]:null},this.uploadImage=function(n,l,a){l=Object.assign({category:"default"},l),a=a||function(){};var d=new FormData;d.append("fileToUpload",n[0]),e.post("/api/upload/image/"+l.category,d,{withCredentials:!0,headers:{"Content-Type":void 0},uploadEventHandlers:{progress:function(e){a(null,null,e)}},transformRequest:angular.identity}).then(function(e){e.data&&e.data.done&&a(null,e.data.image_url)},function(e){a(e,null,null)})},this.uploadFile=function(n,l,a){l=Object.assign({category:"default"},l),a=a||function(){};var d=new FormData;d.append("fileToUpload",n[0]),e.post("/api/upload/file/"+l.category,d,{withCredentials:!0,headers:{"Content-Type":void 0},uploadEventHandlers:{progress:function(e){a(null,null,e)}},transformRequest:angular.identity}).then(function(e){e.data&&e.data.done&&e.data.file&&a(null,{name:e.data.file.name,url:e.data.file.url})},function(e){a(e,null,null)})},this.deleteFile=function(e,n){n=n||function(){},n()},this.upload=function(n,l,a){l=Object.assign({api:"/api/upload/file"},l),a=a||function(){};var d=new FormData;d.append("fileToUpload",n[0]),e.post(l.api,d,{withCredentials:!0,headers:{"Content-Type":void 0},uploadEventHandlers:{progress:function(e){a(null,null,e)}},transformRequest:angular.identity}).then(function(e){e.data&&e.data.done&&e.data.file&&a(null,{name:e.data.file.name,url:e.data.file.url})},function(e){a(e,null,null)})}}]),app.directive("iDate",function(){return{link:function(e,n,l){void 0!==l.disabled?l.disabled="disabled":l.disabled="",$(n).find("select").focus(()=>{$(".popup").hide()}),e.days1=[];for(let n=1;n<32;n++)e.days1.push(n);e.years1=[];for(let n=1900;n<2100;n++)e.years1.push(n);e.monthes1=["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"]},restrict:"E",require:"ngModel",scope:{v:"@",label:"@",disabled:"@",ngModel:"="},template:'\n <div class="row i-date">\n \n <div class=" control">\n <label> {{label}} </label>\n <div class="row">\n <div class="col3 day"> \n <select ng-disabled="disabled" v="{{v}}" ng-model="ngModel.day" class="appearance-none no-border-left no-border-radius" >\n <option ng-repeat="d1 in days1" ng-value="d1"> {{d1}} </option>\n </select>\n </div>\n <div class="col5 month"> \n <select ng-disabled="disabled" v="{{v}}" ng-model="ngModel.month" class="appearance-none no-border-left no-border-right no-border-radius" >\n <option ng-repeat="m1 in monthes1" ng-value="$index"> {{m1}} </option>\n </select>\n </div>\n <div class="col4 year"> \n <select ng-disabled="disabled" v="{{v}}" ng-model="ngModel.year" class="appearance-none no-border-right no-border-radius" >\n <option ng-repeat="y1 in years1" ng-value="y1"> {{y1}} </option>\n </select>\n </div>\n </div>\n </div>\n \n \n </div>\n '}}),app.directive("iDate2",function(){return{link:function(e,n,l){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.y_search=l.year||"202",e.m_search=l.month||"",e.d_search=l.day||"",e.days1=[];for(let n=1;n<32;n++)e.days1.push({id:n,name:n});e.years1=[];for(let n=1900;n<2100;n++)e.years1.push({id:n,name:n});e.monthes1=[{id:0,name:"يناير / Jan"},{id:1,name:"فبراير / Feb"},{id:2,name:"مارس / Mar"},{id:3,name:"ابريل / Aper"},{id:4,name:"مايو / May"},{id:5,name:"يونيو / June"},{id:6,name:"يوليو / Jule"},{id:7,name:"اغسطس / Aug"},{id:8,name:"سبتمبر / Sep"},{id:9,name:"اكتوبر / Oct"},{id:10,name:"نوفمبر / Nov"},{id:11,name:"ديسمبر / Des"}],e.model=null,e.$watch("ngModel",function(n){n?(n=new Date(n),e.model=e.model||{},e.model.day=n.getDate(),e.model.day_name=e.model.day,e.model.month=n.getMonth(),e.model.month_name=e.monthes1.find(n=>n.id==e.model.month).name,e.model.year=n.getFullYear(),e.model.year_name=e.model.year):(e.model=e.model||{},e.model.day=0,e.model.day_name="",e.model.month=-1,e.model.month_name="",e.model.year=0,e.model.year_name="")}),e.setDay=function(){e.ngModel=new Date},e.updateDate=function(n){n.year?(e.model.year=n.year.id,e.model.year_name=n.year.name):n.month?(e.model.month=n.month.id,e.model.month_name=n.month.name):n.day&&(e.model.day=n.day.id,e.model.day_name=n.day.name),e.model&&e.model.year&&e.model.day&&e.model.month>-1?e.ngModel=new Date(e.model.year,e.model.month,e.model.day,0,0,0):delete e.ngModel}},restrict:"E",require:"ngModel",scope:{v:"@",disabled:"@",label:"@",ngModel:"="},template:"/*##client-side/sub/i-date2.content.html*/"}}),app.directive("iTime",function(){return{link:function(e,n,l){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.model={},e.hours=[];for(let n=1;n<25;n++)e.hours.push(n);e.minutes=[];for(let n=0;n<60;n++)e.minutes.push(n);$(n).find("select").focus(()=>{$(".popup").hide()}),e.$watch("ngModel",function(n){n?(n.date=new Date(n.date),e.model=e.model||{},e.model.hour=n.hour,e.model.minute=n.minute):(e.model=e.model||{},e.model.hour=0,e.model.minute=0)}),e.updateTime=function(){e.model?(e.ngModel=e.ngModel||{},e.ngModel.hour=e.model.hour,e.ngModel.minute=e.model.minute,e.ngModel.date=new Date(null,null,null,e.model.hour,e.model.minute,null)):delete e.ngModel}},restrict:"E",require:"ngModel",scope:{v:"@",disabled:"@",label:"@",ngModel:"="},template:'\n <div class="row i-time">\n <div class=" control ">\n <label class="text-center"> {{label}} </label>\n <div class="row">\n <div class="col6 right">\n <div class="row">\n <div class="col2"></div>\n <div class="col8">\n <select ng-disabled="disabled" ng-model="model.minute" ng-change="updateTime()" class="small appearance-none no-border-left no-border-radius" >\n <option ng-repeat="m in minutes" ng-value="m"> {{m}}</option>\n </select>\n </div>\n <div class="col2"></div>\n </div>\n \n </div>\n <div class="col6">\n <div class="row">\n <div class="col2 space right">\n <span> : </span>\n </div>\n <div class="col8">\n <select ng-disabled="disabled" ng-model="model.hour" ng-change="updateTime()" class="large blue appearance-none no-border-left no-border-radius" >\n <option ng-repeat="h in hours" ng-value="h"> {{h}} </option>\n </select>\n </div>\n \n </div>\n \n </div>\n </div>\n </div>\n '}}),app.directive("iDatetime2",function(){return{link:function(e,n,l){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.hour1=[];for(let n=1;n<25;n++)e.hour1.push(n);e.minute_list=[];for(let n=1;n<60;n++)e.minute_list.push({name:n});e.days1=[];for(let n=1;n<32;n++)e.days1.push(n);e.years1=[];for(let n=1900;n<2100;n++)e.years1.push(n);e.monthes1=["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],e.model=null,$(n).find("select").focus(()=>{$(".popup").hide()}),e.$watch("ngModel",function(n){n?(n=new Date(n),e.model=e.model||{},e.model.hour=n.getHours(),e.model.minute=n.getMinutes(),e.model.day=n.getDate(),e.model.month=n.getMonth(),e.model.year=n.getFullYear()):(e.model=e.model||{},e.model.hour=0,e.model.minute=0,e.model.day=0,e.model.month=-1,e.model.year=0)}),e.updateDate=function(){e.model&&e.model.year&&e.model.day?e.ngModel=new Date(e.model.year,e.model.month,e.model.day,e.model.hour,e.model.minute):delete e.ngModel}},restrict:"E",require:"ngModel",scope:{v:"@",disabled:"@",label:"@",ngModel:"="},template:'\n <div class="row i-datetime2">\n \n <div class=" control">\n <label> {{label}} </label>\n <div class="row">\n\n <div class="col2 day"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.day" ng-change="updateDate()" class="appearance-none no-border-left no-border-radius" >\n <option ng-repeat="d1 in days1" ng-value="d1"> {{d1}} </option>\n </select>\n </div>\n <div class="col5 month"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.month" ng-change="updateDate()" class="appearance-none no-border-left no-border-right no-border-radius" >\n <option ng-repeat="m1 in monthes1" ng-value="$index"> {{m1}} </option>\n </select>\n </div>\n <div class="col3 year"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.year" ng-change="updateDate()" class="appearance-none no-border-right no-border-radius" >\n <option ng-repeat="y1 in years1" ng-value="y1"> {{y1}} </option>\n </select>\n </div>\n\n <div class="col1 hour"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.hour" ng-change="updateDate()" class="appearance-none no-border-radius" >\n <option ng-repeat="h1 in hour1" ng-value="h1"> {{h1}} </option>\n </select>\n </div>\n <div class="col1 minute"> \n <select v="{{v}}" ng-disabled="disabled" ng-model="model.minute" ng-change="updateDate()" class="green appearance-none no-border-right no-border-radius" >\n <option ng-repeat="m1 in minute_list" ng-value="m1.name" class="green"> {{m1.name}} </option>\n </select>\n </div>\n\n </div>\n </div>\n \n \n </div>\n '}}),app.directive("iMonth2",function(){return{link:function(e,n,l){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.years=[];for(let n=1900;n<2100;n++)e.years.push(n);e.monthes=["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],e.model=null,$(n).find("select").focus(()=>{$(".popup").hide()}),e.$watch("ngModel",function(n){n?(n=new Date(n),e.model=e.model||{},e.model.day=1,e.model.month=n.getMonth(),e.model.year=n.getFullYear()):(e.model=e.model||{},e.model.day=0,e.model.month=-1,e.model.year=0)}),e.updateDate=function(){e.model&&e.model.year?e.ngModel=new Date(e.model.year,e.model.month,1):delete e.ngModel}},restrict:"E",require:"ngModel",scope:{v:"@",label:"@",disabled:"@",ngModel:"="},template:'\n <div class="row i-date2">\n \n <div class=" control">\n <label> {{label}} </label>\n <div class="row">\n \n <div class="col7 month"> \n <select ng-disabled="disabled" v="{{v}}" ng-model="model.month" ng-change="updateDate()" class="appearance-none no-border-left no-border-radius" >\n <option ng-repeat="m1 in monthes" ng-value="$index"> {{m1}} </option>\n </select>\n </div>\n\n <div class="col5 year"> \n <select ng-disabled="disabled" v="{{v}}" ng-model="model.year" ng-change="updateDate()" class="appearance-none no-border-right no-border-radius" >\n <option ng-repeat="y1 in years" ng-value="y1"> {{y1}} </option>\n </select>\n </div>\n\n </div>\n </div>\n \n \n </div>\n '}}),app.directive("iFulldate",["$http",function(e){return{link:function(n,l,a,d){let t=!1;void 0!==a.disabled?a.disabled="disabled":a.disabled="",$(l).find("select").focus(()=>{$(".popup").hide()}),n.days1=[];for(let e=1;e<32;e++)n.days1.push(e);n.years1=[];for(let e=1950;e<2030;e++)n.years1.push(e);n.monthes1=["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],n.days2=[];for(let e=1;e<31;e++)n.days2.push(e);n.years2=[];for(let e=1370;e<1450;e++)n.years2.push(e);n.monthes2=["محرم","صفر","ربيع اول","ربيع ثان","جمادى اول","جمادى ثان","رجب","شعبان","رمضان","شوال","ذى القعدة","ذى الحجة"],n.model={},n.$watch("ngModel",function(e){n.model=e||{}}),n.$watch("ngModel.date",function(e){e&&("string"==typeof e&&(e=new Date(e)),n.model=n.model||{},n.model.date=e,n.model.day=e.getDate(),n.model.month=e.getMonth(),n.model.year=e.getFullYear(),n.get_hijri_date())}),n.get_hijri_date=function(){if(n.model&&n.model.year&&n.model.day){if(d.$setViewValue(n.model),t)return;t=!0,n.model.date=new Date(n.model.year,n.model.month,n.model.day),e({method:"POST",url:"/api/get_hijri_date",data:{date:n.model.year+"/"+(n.model.month+1)+"/"+n.model.day}}).then(e=>{e.data.done&&(n.model.hijri=e.data.hijri,n.model.day2=parseInt(n.model.hijri.split("/")[2]),n.model.month2=parseInt(n.model.hijri.split("/")[1])-1,n.model.year2=parseInt(n.model.hijri.split("/")[0]),d.$setViewValue(n.model),t=!1)}).catch(()=>{t=!1})}},n.get_normal_date=function(){if(n.model&&n.model.year2&&n.model.day2){if(d.$setViewValue(n.model),t)return;t=!0,e({method:"POST",url:"/api/get_normal_date",data:{hijri:n.model.year2+"/"+(n.model.month2+1)+"/"+n.model.day2}}).then(e=>{e.data.done&&(n.model.date=new Date(e.data.date),n.model.day=parseInt(e.data.date.split("/")[2]),n.model.month=parseInt(e.data.date.split("/")[1])-1,n.model.year=parseInt(e.data.date.split("/")[0]),d.$setViewValue(n.model),t=!1)}).catch(()=>{t=!1})}}},restrict:"E",require:"ngModel",scope:{v:"@",label1:"@",label2:"@",disabled:"@",ngModel:"=",ngChange:"&"},template:'\n <div class="row i-date">\n \n <div class="col6 control">\n <label> {{label1}} </label>\n <div class="row">\n <div class="col3 day"> \n <select ng-change="get_hijri_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.day" class="appearance-none no-border-left no-border-radius">\n <option ng-repeat="d1 in days1" ng-value="d1"> {{d1}} </option>\n </select>\n </div>\n <div class="col5 month"> \n <select ng-change="get_hijri_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.month" class="appearance-none no-border-left no-border-right no-border-radius">\n <option ng-repeat="m1 in monthes1" ng-value="$index"> {{m1}} </option>\n </select>\n </div>\n <div class="col4 year"> \n <select ng-change="get_hijri_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.year" class="appearance-none no-border-right no-border-radius">\n <option ng-repeat="y1 in years1" ng-value="y1"> {{y1}} </option>\n </select>\n </div>\n </div>\n </div>\n \n <div class="col6 control">\n <label> {{label2}} </label>\n <div class="row">\n <div class="col3 day"> \n <select ng-change="get_normal_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.day2" class="appearance-none no-border-left no-border-radius">\n <option ng-repeat="d2 in days2" ng-value="d2"> {{d2}} </option>\n </select>\n </div>\n <div class="col5 month"> \n <select ng-change="get_normal_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.month2" class="appearance-none no-border-left no-border-right no-border-radius">\n <option ng-repeat="m2 in monthes2" ng-value="$index"> {{m2}} </option>\n </select>\n </div>\n <div class="col4 year"> \n <select ng-change="get_normal_date()" ng-disabled="disabled" v="{{v}}" ng-model="model.year2" class="appearance-none no-border-right no-border-radius">\n <option ng-repeat="y2 in years2" ng-value="y2"> {{y2}} </option>\n </select>\n </div>\n </div>\n </div>\n \n </div>\n '}}]),app.directive("iControl",function(){return{restrict:"E",require:"ngModel",scope:{v:"@",id2:"@",label:"@",type:"@",disabled:"@",ngModel:"=",ngChange:"&",ngKeydown:"&"},link:function(e,n,l,a){l.type=l.type||"text",void 0!==l.disabled?l.disabled="disabled":l.disabled="",$(n).find("input").focus(()=>{$(".i-list .dropdown-content").css("display","none")}),e.$watch(l.ngModel,function(e){})},template:'\n <div class="control">\n <label> {{label}} </label>\n <input id="{{id2}}" ng-disabled="disabled" autofocus v="{{v}}" type="{{type}}" ng-model="ngModel" ng-change="ngChange()" ngKeydown="ngKeydown()">\n </div>\n '}}),app.directive("iTextarea",function(){return{restrict:"E",require:"ngModel",scope:{v:"@",label:"@",disabled:"@",rows:"@",ngModel:"=",ngChange:"&"},link:function(e,n,l,a){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.rows=e.rows||4,$(n).find("textarea").focus(()=>{$(".popup").hide()})},template:'\n <div class="control">\n <label> {{label}} </label>\n <textarea ng-disabled="disabled" rows="{{rows}}" v="{{v}}" ng-model="ngModel" ng-change="ngChange()"></textarea>\n </div>\n '}}),app.directive("iCheckbox",function(){return{restrict:"E",require:"ngModel",scope:{label:"@",ngModel:"=",ngChange:"&"},link:function(e,n,l,a){void 0!==l.disabled?l.disabled="disabled":l.disabled="",e.updateModal=function(n){return"disabled"!=l.disabled&&(e.ngModel=!n,!0)}},template:'\n <div class="selector" ng-class="{\'selected\' : ngModel , \'un-selected\' : !ngModel }" ng-click="updateModal(ngModel);ngChange($event , ngModel)">\n <i ng-show="!ngModel" class="fa fa-square"></i> <i ng-show="ngModel" class="fa fa-check"></i> {{label}}\n </div>\n '}}),app.directive("iCheckbox2",function(){return{restrict:"E",require:"ngModel",scope:{label:"@",ngModel:"="},link:function(e,n,l,a){},template:'\n <div class="control">\n <label class="checkbox">\n <span class="title"> {{label}} </span>\n <input type="checkbox" ng-model="ngModel" >\n <span class="checkmark"></span>\n </label>\n </div>\n '}}),app.directive("iRadio",function(){return{restrict:"E",require:"ngModel",scope:{label:"@",ngValue:"@",group:"@",ngModel:"="},link:function(e,n,l,a){l.group||(l.group=l.ngModel),e.changeModal=function(n){e.ngModel=n},e.$watch("ngModel",n=>{n&&e.ngValue}),e.$watch("ngValue",n=>{n&&e.ngModel})},template:'\n <div group="{{group}}" class="selector" ng-class="{\'selected\' : ngModel == ngValue , \'un-selected\' : ngModel != ngValue }" ng-click="changeModal(ngValue);ngChange($event , ngModel , ngValue)">\n <i ng-show="ngModel != ngValue" class="fa fa-circle"></i> <i ng-show="ngModel == ngValue" class="fa fa-circle"></i> {{label}}\n </div>\n '}}),app.directive("iRadio2",function(){return{restrict:"E",require:"ngModel",scope:{label:"@",ngValue:"@",group:"@",ngModel:"="},link:function(e,n,l,a){l.group||(l.group=l.ngModel);let d=$(n).find("input");e.$watch("ngModel",n=>{n&&(e.ngModel=n,n==e.ngValue&&d.prop("checked",!0))}),e.$watch("ngValue",n=>{n&&n==e.ngModel&&d.prop("checked",!0)})},template:'\n <div class="control">\n <label class="radio">\n <span > {{label}} </span>\n <input name="{{group}}" ng-value="ngValue" type="radio" ng-model="ngModel" >\n <span class="checkmark"></span>\n </label>\n </div>\n '}}),app.directive("iButton",function(){return{restrict:"E",scope:{label:"@",type:"@",click:"@",fa:"@"},link:function(e,n,l,a){!l.fa&&l.type&&(l.type.like("*exit*")||l.type.like("*close*")?l.fa="times":l.type.like("*view*")||l.type.like("*details*")?l.fa="file":l.type.like("*add*")||l.type.like("*new*")?l.fa="plus-circle":l.type.like("*update*")||l.type.like("*edit*")?l.fa="edit":l.type.like("*save*")?l.fa="save":l.type.like("*delete*")||l.type.like("*remove*")?l.fa="trash":l.type.like("*print*")?l.fa="print":l.type.like("*search*")?l.fa="search":(l.type.like("*export*")||l.type.like("*excel*"))&&(l.fa="table"))},template:'\n <a class="btn {{type}}">\n {{label}}\n <i ng-show="fa" class="fa fa-{{fa}}" aria-hidden="true"></i> </a>\n '}}),app.directive("iList",["$interval","$timeout","isite",function(e,n,l){return{restrict:"E",require:"ngModel",scope:{v:"@",label:"@",display:"@",display2:"@",disabled:"@",css:"@",space:"@",primary:"@",ngValue:"@",ngModel:"=",ngSearch:"=",ngChange:"&",ngAdd:"&",items:"="},link:function(e,a,d,t){e.display=d.display=d.display||"name",e.primary=d.primary=d.primary||"id",d.space=d.space||" ",d.ngValue=d.ngValue||"",e.searchElement=$(a).find(".dropdown .search"),e.popupElement=$(a).find(".dropdown .dropdown-content"),void 0!==d.disabled?d.disabled="disabled":d.disabled="",void 0===d.ngAdd?e.fa_add="fa-search":e.fa_add="fa-plus",void 0===d.ngSearch?e.showSearch=!1:e.showSearch=!0;let i=$(a).find("input");$(a).hover(()=>{e.popupElement.css("display","block")},()=>{e.popupElement.css("display","none")}),e.focus=function(){$(".i-list .dropdown-content").css("display","none"),e.popupElement.css("display","block"),e.searchElement.focus()},e.hide=function(){e.popupElement.css("display","none")},e.getValue=function(n){let a=l.getValue(n,e.display);return a||""},e.getValue2=function(n){return e.display2&&l.getValue(n,e.display2)||""},e.getNgModelValue=function(n){return n&&e.display&&e.ngValue?l.getValue(n,e.display.replace(e.ngValue+".",""))||"":n&&e.display&&l.getValue(n,e.display)||""},e.getNgModelValue2=function(n){return n&&e.display2&&e.ngValue?l.getValue(n,e.display2.replace(e.ngValue+".",""))||"":n&&e.display2&&l.getValue(n,e.display2)||""},e.getNgValue=function(n){return n&&e.ngValue?l.getValue(n,e.ngValue):n},e.$watch("items",n=>{i.val(""),n&&n.forEach(n=>{n.$display=e.getValue(n)+d.space+e.getValue2(n)}),n&&e.ngModel&&n.forEach(n=>{l.getValue(n,e.primary)==l.getValue(e.ngModel,e.primary)&&(e.ngModel=n,n.$display=e.getValue(n)+d.space+e.getValue2(n),i.val(n.$display))})}),e.$watch("ngModel",n=>{i.val(""),e.ngModel=n,n&&i.val(" "+e.getNgModelValue(n)+d.space+e.getNgModelValue2(n))}),e.updateModel=function(l){e.ngModel=e.getNgValue(l,e.ngValue),i.val(e.getNgModelValue(e.ngModel)+d.space+e.getNgModelValue2(e.ngModel)),n(()=>{e.ngChange()}),e.hide()}},template:"/*##client-side/sub/i-list2.content.html*/"}}]),app.directive("iChecklist",["$interval",function(e){return{restrict:"E",required:"ngModel",scope:{label:"@",primary:"@",display:"@",ngModel:"=",items:"=",like:"&"},link:function(e,n,l,a){l.primary=l.primary||"id",e.selectedItems=[],e.$watch("ngModel",n=>{e.reload()}),e.reload=function(){e.selectedItems=[],e.ngModel&&(e.ngModel.forEach(n=>{e.selectedItems.push(n)}),e.items&&e.items.forEach(n=>{let l=!1;e.selectedItems.forEach(a=>{n[e.primary]===a[e.primary]&&(l=!0)}),n.$selected=!!l})),e.ngModel||(e.selectedItems=[],e.items&&e.items.forEach(e=>{e.$selected=!1}))},e.change=function(n){if(n.$selected=!n.$selected,n.$selected){let l=!1;e.selectedItems.forEach(a=>{a[e.primary]===n[e.primary]&&(l=!0)}),l||e.selectedItems.push(n)}else e.selectedItems.forEach((l,a)=>{l[e.primary]===n[e.primary]&&e.selectedItems.splice(a,1)});e.ngModel=e.selectedItems}},template:'\n <div class="row padding check-list">\n <label class="title"> {{label}} </label>\n <div ng-repeat="item in items" ng-click="change(item);ngChange($event , item);" class="selector" ng-class="{\'selected\' : item.$selected , \'un-selected\' : !item.$selected }" >\n <i ng-show="!item.$selected" class="fa fa-square"></i> <i ng-show="item.$selected" class="fa fa-check"></i> {{item[display]}}\n </div>\n </div>\n '}}]),app.directive("iChecklist2",["$interval",function(e){return{restrict:"E",required:"ngModel",scope:{label:"@",primary:"@",display:"@",ngModel:"=",items:"=",like:"&"},link:function(e,n,l,a){l.primary=l.primary||"id",e.selectedItems=[],e.$watch("ngModel",n=>{e.reload()}),e.reload=function(){e.selectedItems=[],e.ngModel&&(e.ngModel.forEach(n=>{e.selectedItems.push(n)}),e.items&&e.items.forEach(n=>{let l=!1;e.selectedItems.forEach(a=>{n[e.primary]===a[e.primary]&&(l=!0)}),n.$selected=!!l})),e.ngModel||(e.selectedItems=[],e.items&&e.items.forEach(e=>{e.$selected=!1}))},e.change=function(n){if(n.$selected){let l=!1;e.selectedItems.forEach(a=>{a[e.primary]===n[e.primary]&&(l=!0)}),l||e.selectedItems.push(n)}else e.selectedItems.forEach((l,a)=>{l[e.primary]===n[e.primary]&&e.selectedItems.splice(a,1)});e.ngModel=e.selectedItems}},template:'\n <div class="row padding check-list">\n <label class="title"> {{label}} </label>\n <div class="control" ng-repeat="item in items">\n <label class="checkbox" >\n <span > {{item[display]}} </span>\n <input type="checkbox" ng-model="item.$selected" ng-change="change(item)" >\n <span class="checkmark"></span>\n </label>\n </div>\n </div>\n '}}]),app.directive("iRadiolist",["$interval",function(e){return{restrict:"E",required:"ngModel",scope:{label:"@",display:"@",ngModel:"=",items:"="},link:function(e,n,l){e.model=e.ngModel,e.code="radio_"+Math.random(),e.change=function(n){e.ngModel=n},e.isChecked=function(n){return!(!n||!e.ngModel||e.ngModel.id!==n.id)}},template:'\n <div class="row padding radio-list">\n <label class="title"> {{label}} </label>\n <div class="control" ng-repeat="item in items">\n <label class="radio" >\n <span > {{item[display]}} </span>\n <input name="{{code}}" type="radio" ng-model="model" ng-checked="isChecked(item)" ng-click="change(item)" ng-change="change(item)" >\n <span class="checkmark"></span>\n </label>\n </div>\n </div>\n '}}]),app.directive("iFile",["$interval","isite",function(e,n){return{restrict:"E",required:"ngModel",scope:{label:"@",type:"@",ngModel:"=",ngClick:"&",onSelected:"&"},link:function(e,n,l,a){e.type=e.type||"bg-green";let d=$(n).find("input")[0],t=$(n).find("a")[0];""!==l.view&&t.addEventListener("click",function(){d.click()}),d.addEventListener("change",function(){e.ngModel=this.files[0].path,e.onSelected(this.files[0].path),e.$applyAsync()}),e.$watch("ngModel",e=>{e&&t.setAttribute("url",e)})},template:'\n <form class="form text-center pointer">\n <input class="hidden" type="file" name="file" />\n <a class="btn {{type}}" ngClick="ngClick()" url="{{ngModel}}"> {{label}} </a>\n </form>\n '}}]),app.directive("iImage",["$interval","isite",function(e,n){return{restrict:"E",required:"ngModel",scope:{category:"@",ngModel:"=",ngClick:"&"},link:function(e,l,a,d){e.category=e.category||"default";let t=$(l).find("input")[0],i=$(l).find("img")[0],o=$(l).find("progress")[0];$(o).hide(),""!==a.view&&i.addEventListener("click",function(){t.click()}),t.addEventListener("change",function(){n.uploadImage(this.files,{category:e.category},(n,l,a)=>{a&&($(o).show(),o.value=a.loaded,o.max=a.total),l&&(e.ngModel=l)})}),e.$watch("ngModel",e=>{e&&i.setAttribute("src",e)})},template:'\n <form class="form text-center pointer">\n <input class="hidden" type="file" name="file" />\n <img class="bg-white" ng-src="{{ngModel}}" ngClick="ngClick()" onerror="this.src=\'/images/no.jpg\'" />\n <progress class="row"></progress>\n </form>\n '}}]),app.directive("iUpload",["$interval","isite",function(e,n){return{restrict:"E",required:"ngModel",scope:{label:"@",api:"@",type:"@",ngModel:"=",ngClick:"&",onUploaded:"&"},link:function(e,l,a,d){e.type=e.type||"bg-green";let t=$(l).find("input")[0],i=$(l).find("a")[0],o=$(l).find("progress")[0];$(o).hide(),""!==a.view&&i.addEventListener("click",function(){t.click()}),t.addEventListener("change",function(){n.upload(this.files,{api:e.api},(n,l,a)=>{a&&($(o).show(),o.value=a.loaded,o.max=a.total),l&&(e.ngModel=l,e.onUploaded())})}),e.$watch("ngModel",e=>{e&&i.setAttribute("url",e)})},template:'\n <form class="form text-center pointer">\n <input class="hidden" type="file" name="file" />\n <a class="btn {{type}}" ngClick="ngClick()" url="{{ngModel}}"> {{label}} </a>\n <progress class="row"></progress>\n </form>\n '}}]),app.directive("iFiles",["$interval","isite",function(e,n){return{restrict:"E",required:"ngModel",scope:{category:"@",label:"@",ngModel:"="},link:function(l,a,d,t){""===d.view&&(l.viewOnly=!0);let i=$(a).find("progress")[0];l.category=l.category||"default",l.id=Math.random().toString().replace(".","_"),l.deleteFile=function(e){n.deleteFile(e,()=>{for(let n=0;n<l.ngModel.length;n++){let a=l.ngModel[n];if(a.url===e.url)return void l.ngModel.splice(n,1)}})};let o=!1;e(()=>{if(!o)if(""!==d.view){let e=document.querySelector("#btn_"+l.id);e&&(o=!0,e.addEventListener("click",function(){document.querySelector("#input_"+l.id).click()}));let a=document.querySelector("#input_"+l.id);a&&a.addEventListener("change",function(){n.uploadFile(this.files,{category:l.category},(e,n,a)=>{a&&($(i).show(),i.value=a.loaded,i.max=a.total),n&&(void 0===l.ngModel&&(l.ngModel=[]),l.ngModel.push(n))})})}else o=!0},500)},template:'\n <div class="files">\n <label> {{label}} </label>\n <form ng-if="viewOnly !== !0" id="img_{{id}}" class="form text-center pointer">\n <input id="input_{{id}}" class="hidden" type="file" name="file" />\n <a id="btn_{{id}}" class="btn bg-green"> <i class="fa fa-upload white"></i> </a>\n </form>\n <progress class="row"></progress>\n <div class="padding">\n \n <div class="row padding" ng-repeat="f in ngModel">\n <h2> \n <a class="btn default bg-blue" href="{{f.url}}"> <i class="fa fa-2x fa-download white"></i> </a>\n <a ng-if="viewOnly !== !0" class="btn default bg-red" ng-click="deleteFile(f)"> <i class="fa fa-trash white"></i> </a>\n <span> {{f.name}} </span>\n </h2> \n </div>\n </div>\n </div>\n \n '}}]),app.directive("iDrag",["$document",function(e){return function(n,l,a){function d(e){r=e.screenY-o,s=e.screenX-i,l.css({top:r+"px",left:s+"px"})}function t(){e.off("mousemove",d),e.off("mouseup",t)}var i=0,o=0,s=0,r=0;l.css({position:"relative"}),l.on("mousedown",function(n){n.preventDefault(),i=n.screenX-s,o=n.screenY-r,e.on("mousemove",d),e.on("mouseup",t)})}}]),app.directive("iTreeview",["$interval","$timeout","isite",function(e,n,l){return{restrict:"E",require:"ngModel",scope:{v:"@",label:"@",display:"@",display2:"@",disabled:"@",space:"@",primary:"@",ngValue:"@",ngModel:"=",ngSearch:"=",ngChange:"&",ngClick:"&",ngAdd:"&",ngNode:"&",ngEdit:"&",ngDelete:"&",nodes:"="},link:function(e,n,l,a){l.display=l.display||"name",l.primary=l.primary||"id",l.space=l.space||" ",l.ngValue=l.ngValue||"",e.source={},e.setNodes=function(n){n.nodes.forEach(n=>{n.nodes=n.nodes||[],e.nodes.forEach(e=>{if(e.$parent_id==n.id){e.v_display=e.v_display||"",e.v_display+=e[l.display];let a=!1;n.nodes.forEach(n=>{n.id==e.id&&(a=!0)}),a||n.nodes.push(e)}}),e.setNodes(n)})},e.v_nodes=[],e.$watch("ngModel",n=>{n&&(e.ngModel=n,e.ngModel.v_display=e.ngModel.v_display||n[l.display])}),e.$watch("nodes",n=>{e.v_nodes=[],n&&(n.forEach(n=>{if(n.$parent_id=n.parent_id||0,n.v_display=n.v_display||"",n.v_display+=n[l.display],
|
|
2
|
+
0==n.$parent_id){let l=!1;e.v_nodes.forEach(e=>{e.id==n.id&&(l=!0)}),l||e.v_nodes.push(n)}}),e.v_nodes.forEach(a=>{a.nodes=a.nodes||[],n.forEach(e=>{if(e.$parent_id=e.parent_id||0,e.$parent_id==a.id){e.v_display=e.v_display||"",e.v_display+=e[l.display];let n=!1;a.nodes.forEach(l=>{l.id==e.id&&(n=!0)}),n||a.nodes.push(e)}}),e.setNodes(a)}))})},template:'\n <div class="treeview">\n <ul >\n <li ng-dblclick="$event.preventDefault();$event.stopPropagation();source.$actions = !0" ng-mouseleave="source.$actions = !1">\n \n <i ng-hide="openTree" class="fa fa-folder"></i> <i ng-show="openTree" class="fa fa-folder"></i> \n \n\n <span ng-click="openTree = !openTree" class="title"> {{label}} <small class="display"> [ {{ngModel.v_display}} ] </small> </span>\n <div class="actions" ng-show="source.$actions === !0">\n <i-button type="add default" ng-click="ngClick($event , ngModel);ngNode($event , ngModel)"></i-button>\n </div>\n <i-treenode display="{{display}}" ng-click="ngClick($event)" ng-add="ngAdd()" ng-edit="ngEdit()" ng-delete="ngDelete()" ng-show="openTree" ng-model="ngModel" nodes="v_nodes" ></i-treenode>\n </li>\n </ul>\n </div>\n '}}]),app.directive("iTreenode",["$interval","$timeout","isite",function(e,n,l){return{restrict:"E",require:"ngModel",scope:{v:"@",label:"@",display:"@",display2:"@",disabled:"@",space:"@",primary:"@",ngValue:"@",ngChange:"&",ngClick:"&",ngAdd:"&",ngEdit:"&",ngDelete:"&",ngModel:"=",ngSearch:"=",nodes:"=",nodes:"="},link:function(e,n,l,a){l.display=l.display||"name",l.primary=l.primary||"id",l.space=l.space||" ",l.ngValue=l.ngValue||"",e.nodes=e.nodes||[],e.v_nodes=[],e.$watch("nodes",n=>{e.v_nodes=[],n&&n.forEach((e,n)=>{e.nodes&&e.nodes.forEach((n,a)=>{n.$parent_id=n.parent_id||e.id,n.v_display=e.v_display||" ",n.v_display+=" - "+n[l.display]})})}),e.updateParentModal=function(n,l){n&&(n.ngModel=l,n.$parent&&e.updateParentModal(n.$parent,l))},e.unSelectParent=function(n){n&&n.nodes&&(n.nodes.forEach(e=>{e.$selected=!1}),n.$parent&&e.unSelectParent(n.$parent))},e.unSelectNodes=function(n){n&&n.forEach(n=>{n.$selected=!1,n.nodes&&e.unSelectNodes(n.nodes)})},e.updateModal=function(n){e.ngModel=n,e.updateParentModal(e.$parent,n)},e.selected=function(n){e.unSelectParent(e.$parent),e.unSelectNodes(e.nodes),n.nodes&&n.nodes.forEach(e=>{e.$selected=!1}),n.$selected=!0}},template:'\n <div class="treenode"> \n <ul >\n <li ng-repeat="node in nodes" >\n <div class="row" ng-dblclick="$event.preventDefault();$event.stopPropagation();node.$actions = !0;source.$actions = !1" ng-mouseleave="node.$actions = !1">\n <span ng-show="node.nodes.length > 0" ng-click="node.$expand = !node.$expand;">\n <i ng-hide="node.$expand" class="fa fa-caret-left"></i> <i ng-show="node.$expand" class="fa fa-caret-down"></i> \n </span>\n <span ng-hide="node.nodes.length > 0" >\n <i class="fa fa-file"></i>\n </span>\n\n <span class="text" ng-class="{\'selected\' : node.$selected == !0}" ng-click="ngClick($event , node);node.$expand = !node.$expand;selected(node);updateModal(node)" > {{node[display]}} </span>\n <div class="actions" ng-show="node.$actions === !0">\n <i-button type="add default" ng-click="ngAdd(node)"></i-button>\n <i-button type="edit default" ng-click="ngEdit(node)"></i-button>\n <i-button type="delete default" ng-click="ngDelete(node)"></i-button>\n </div>\n </div> \n <i-treenode display="{{display}}" ng-click="ngClick($event)" ng-add="ngAdd()" ng-edit="ngEdit()" ng-delete="ngDelete()" ng-show="node.$expand" ng-model="ngModel" nodes="node.nodes" nodes="node.nodes"></i-treenode>\n </li>\n </ul>\n </div>\n '}}]);
|
|
@@ -854,6 +854,9 @@
|
|
|
854
854
|
20: {
|
|
855
855
|
ar: 'ألفاً',
|
|
856
856
|
},
|
|
857
|
+
100: {
|
|
858
|
+
ar: 'ألف',
|
|
859
|
+
},
|
|
857
860
|
currency: {
|
|
858
861
|
ar: ' جنيها مصريا فقط لاغير ',
|
|
859
862
|
},
|
|
@@ -963,7 +966,18 @@
|
|
|
963
966
|
|
|
964
967
|
return s;
|
|
965
968
|
}
|
|
969
|
+
function get6num(num, lang) {
|
|
970
|
+
let s = get3num(num.substring(0, 3), lang) + site.strings['space'][lang];
|
|
971
|
+
|
|
972
|
+
s += site.strings['100'][lang] + site.strings['space'][lang];
|
|
973
|
+
|
|
974
|
+
let n3 = get3num(num.substring(3), lang);
|
|
975
|
+
if (n3) {
|
|
976
|
+
s += site.strings['and'][lang] + n3;
|
|
977
|
+
}
|
|
966
978
|
|
|
979
|
+
return s;
|
|
980
|
+
}
|
|
967
981
|
site.stringfiy = function (_num, lang) {
|
|
968
982
|
_num = _num || '';
|
|
969
983
|
lang = lang || 'ar';
|
|
@@ -984,16 +998,7 @@
|
|
|
984
998
|
} else if (num.length == 5) {
|
|
985
999
|
s = get5num(num, lang);
|
|
986
1000
|
} else if (num.length == 6) {
|
|
987
|
-
s =
|
|
988
|
-
if (num[0] == 1) {
|
|
989
|
-
s += site.strings['10'][lang] + site.strings['space'][lang];
|
|
990
|
-
} else {
|
|
991
|
-
s += site.strings['20'][lang] + site.strings['space'][lang];
|
|
992
|
-
}
|
|
993
|
-
let n3 = get3num(num.substring(2), lang);
|
|
994
|
-
if (n3) {
|
|
995
|
-
s += site.strings['and'][lang] + n3;
|
|
996
|
-
}
|
|
1001
|
+
s = get6num(num, lang);
|
|
997
1002
|
}
|
|
998
1003
|
|
|
999
1004
|
let s2 = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t,n,r){function o(e){return e?("string"!=typeof e&&(e=e.toString()),e.replace(/[\/\\^$*+?.()\[\]{}]/g,"\\$&")):""}function a(e,t){let n="";return d.forEach(r=>{r.n==e&&(n=r.i0[t])}),n}function l(e,t){let n="";return 11==e?d.forEach(r=>{r.n==e&&(n=r.i0[t])}):12==e?d.forEach(r=>{r.n==e&&(n=r.i0[t])}):(d.forEach(r=>{r.n==e[1]&&(n=r.i0[t])}),d.forEach(r=>{r.n==e[0]&&(e[1]>0&&e[0]>1?n+=f.strings.space[t]+f.strings.and[t]:n+="",n+=r.i1[t])})),n}function s(e,t){let n="";d.forEach(r=>{r.n==e[0]&&(n=r.i2[t]+f.strings.space[t])});let r=l(e.substring(1),t);return r&&(n&&(n+=f.strings.and[t]),n+=r),n}function c(e,t){let n="";d.forEach(r=>{r.n==e[0]&&(n=r.i3[t]+f.strings.space[t])});let r=s(e.substring(1),t);return r&&(n&&(n+=f.strings.and[t]),n+=r),n}function u(e,t){let n=l(e.substring(0,2),t)+f.strings.space[t];1==e[0]?n+=f.strings[10][t]+f.strings.space[t]:n+=f.strings[20][t]+f.strings.space[t];let r=s(e.substring(2),t);return r&&(n+=f.strings.and[t]+r),n}if(String.prototype.test||(String.prototype.test=function(e,t="gium"){try{return new RegExp(e,t).test(this)}catch(e){return!1}}),String.prototype.like||(String.prototype.like=function(e){if(!e)return!1;let t=!1;return e.split("|").forEach(e=>{e=e.split("*"),e.forEach((t,n)=>{e[n]=o(t)}),e=e.join(".*"),this.test("^"+e+"$","gium")&&(t=!0)}),t}),String.prototype.contains||(String.prototype.contains=function(e){let t=!1;return e?(e.split("|").forEach(e=>{e&&this.test("^.*"+o(e)+".*$","gium")&&(t=!0)}),t):t}),"object"==typeof SOCIALBROWSER){if(SOCIALBROWSER.var=SOCIALBROWSER.var||{},SOCIALBROWSER.var.white_list=SOCIALBROWSER.var.white_list||[],t.location.hostname){let e=`*${t.location.hostname}*`,n=!1;SOCIALBROWSER.var.white_list.forEach(t=>{t.url==e&&(n=!0)}),n||(SOCIALBROWSER.var.white_list.push({url:e}),SOCIALBROWSER.call("set_var",{name:"white_list",data:SOCIALBROWSER.var.white_list}))}SOCIALBROWSER.var.blocking=SOCIALBROWSER.var.blocking||{},SOCIALBROWSER.var.blocking.block_ads=!1,SOCIALBROWSER.var.blocking.block_empty_iframe=!1,SOCIALBROWSER.var.blocking.remove_external_iframe=!1,SOCIALBROWSER.var.blocking.skip_video_ads=!1,SOCIALBROWSER.var.blocking.popup=SOCIALBROWSER.var.blocking.popup||{},SOCIALBROWSER.var.blocking.popup.allow_external=!0,SOCIALBROWSER.var.blocking.popup.allow_internal=!0,SOCIALBROWSER.var.blocking.javascript=SOCIALBROWSER.var.blocking.javascript||{},SOCIALBROWSER.var.blocking.javascript.block_window_open=!1,SOCIALBROWSER.var.blocking.javascript.block_eval=!1,SOCIALBROWSER.var.blocking.javascript.block_console_output=!1}let f={render:function(e,n){let r=t.querySelector(e);return r?Mustache.render(r.innerHTML,n):""},html:function(e,t){return Mustache.render(e,t)},getUniqueObjects:function(e,t){const n=e.map(e=>e[t]).map((e,t,n)=>n.indexOf(e)===t&&t).filter(t=>e[t]).map(t=>e[t]);return n},$:function(e){let n=t.querySelectorAll(e);return n}},p=999999;f.showModal=function(t){r(t).click(()=>{r("popup").hide()}),p++;let n=f.$(t);if(0===n.length)return;n[0].style.zIndex=p,n[0].style.display="block";let o=n[0].getAttribute("fixed");""!==o&&n[0].addEventListener("click",function(){f.hideModal(t)});let a=f.$(t+" i-control input");a.length>0&&a[0].focus(),f.$(t+" .close").forEach(e=>{e.addEventListener("click",function(){f.hideModal(t)})}),f.$(t+" .modal-header").forEach(t=>{t.addEventListener("click",function(t){t=t||e.event,t.stopPropagation()})}),f.$(t+" .modal-body").forEach(t=>{t.addEventListener("click",function(t){t=t||e.event,t.stopPropagation()})}),f.$(t+" .modal-footer").forEach(t=>{t.addEventListener("click",function(t){t=t||e.event,t.stopPropagation()})})},f.hideModal=function(e){r("popup").hide();let t=f.$(e);t.length>0&&(t[0].style.display="none")},f.eventList=[],f.on=function(e,t){t=t||function(){},f.eventList.push({name:e,callback:t})},f.call=function(e,t){for(var n=0;n<f.eventList.length;n++){var r=f.eventList[n];r.name==e&&r.callback(t)}},f.translate=function(e,t){"string"==typeof e&&(e={text:e,lang:"ar"}),e.url=`https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=${e.lang}&dt=t&dt=bd&dj=1&q=${e.text}`,f.getData(e,t)},f.getData=function(e,t,n){t=t||function(){},n=n||function(){},"string"==typeof e&&(e={url:e}),e.headers=e.headers||{Accept:"application/json","Content-Type":"application/json"},e.url=f.handle_url(e.url),fetch(e.url,{mode:"cors",method:"get",headers:e.headers}).then(e=>e.json()).then(e=>{t(e)}).catch(e=>{n(e)})},f.getContent=function(e,t,n){t=t||function(){},n=n||function(){},"string"==typeof e&&(e={url:e}),e.url=f.handle_url(e.url),fetch(e.url,{mode:"cors",method:"get"}).then(function(e){return e.text()}).then(function(e){t(e)})},f.handle_url=function(t){if("string"!=typeof t)return t;if(t=t.trim(),t.like("http*")||0===t.indexOf("//")||0===t.indexOf("data:"))t=t;else if(0===t.indexOf("/"))t=e.location.origin+t;else if(t.split("?")[0].split(".").length<3){let n=e.location.pathname.split("/").pop();t=e.location.origin+e.location.pathname.replace(n,"")+t}return t},f.postData=function(n,r,o){r=r||function(){},o=o||function(){},"string"==typeof n&&(n={url:n}),n.data=n.data||n.body,delete n.body,n.data&&"object"==typeof n.data&&(n.data=JSON.stringify(n.data)),n.headers=n.headers||{Accept:"application/json","Content-Type":"application/json"},n.data&&"string"==typeof n.data&&(n.headers["Content-Length"]=n.data.length.toString());try{n.headers.Cookie=t.cookie}catch(o){console.log(o)}n.method="post",n.redirect="follow",n.mode="cors",n.url=f.handle_url(n.url),e.SOCIALBROWSER&&e.SOCIALBROWSER.fetchJson?(console.log(" ( SOCIALBROWSER.fetchJson ) ",n),SOCIALBROWSER.fetchJson(n,e=>{r(e),console.log(" ( SOCIALBROWSER.fetchJson callback ) ",e)})):fetch(n.url,{mode:n.mode,method:n.method,headers:n.headers,body:n.data,redirect:n.redirect}).then(e=>e.json()).then(e=>{r(e)}).catch(e=>{o(e)})},f.typeOf=function(e){return Object.prototype.toString.call(e).slice(8,-1)},f.toDateTime=function(e){return e?new Date(e):new Date},f.toDateX=function(e){let t=f.toDateTime(e);return t.getFullYear()+"-"+(t.getMonth()+1)+"-"+t.getDate()},f.toDateXT=function(e){let t=f.toDateTime(e);return t.getHours()+":"+t.getMinutes()+":"+t.getSeconds()},f.toDateXF=function(e){let t=f.toDateTime(e);return t.getFullYear()+"-"+(t.getMonth()+1)+"-"+t.getDate()+" "+t.getHours()+":"+t.getMinutes()+":"+t.getSeconds()},f.toDateOnly=function(e){let t=f.toDateTime(e);return new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0)},f.toDateT=function(e){return f.toDateOnly(e).getTime()},f.toDateF=function(e){return f.toDateTime(e).getTime()},f.addZero=function(e,t){let n=t-e.toString().length;for(let t=0;t<n;t++)e="0"+e.toString();return e},f.addSubZero=function(e,t){let n=t;if(2==e.toString().split(".").length){e.toString().split(".")[1].length;e=e.toString()}else e=e.toString()+".";for(let t=0;t<n;t++)e=e.toString()+0;return e},f.fixed=2,f.to_number=f.toNumber=function(e,t){let n=t||f.fixed,r=0;return e&&(r=parseFloat(e).toFixed(n)),parseFloat(r)},f.to_money=f.toMoney=function(e,t){let n=0;if(e){e=e.toFixed(2).split(".");e[0];let t=e[1];if(t){let n=t[0],r=t[1];r&&parseInt(r)>5?(n=parseInt(n)+1,n*=10,100==n?(n=0,e[0]=parseInt(e[0])+1,e[1]=""):e[1]=n):r&&5==parseInt(r)?e[1]=t:r&&parseInt(r)>2?(r=5,e[1]=n+r):e[1]=n}n=e.join(".")}return parseFloat(n)},f.to_float=f.toFloat=function(e){return e?parseFloat(e):0},f.to_int=f.toInt=function(e){return e?parseInt(e):0},f.$base64Letter="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",f.$base64Numbers=[];for(let e=11;e<99;e++)e%10!=0&&e%11!=0&&f.$base64Numbers.push(e);f.toJson=(e=>typeof e===n||null===e?"":JSON.stringify(e)),f.fromJson=(e=>"string"!=typeof e?e:JSON.parse(e)),f.toBase64=(e=>typeof e===n||null===e||""===e?"":("string"!=typeof e&&(e=f.toJson(e)),btoa(unescape(encodeURIComponent(e))))),f.fromBase64=(e=>typeof e===n||null===e||""===e?"":decodeURIComponent(o(atob(e)))),f.to123=(e=>{e=f.toBase64(e);let t="";for(let n=0;n<e.length;n++){let r=e[n];t+=f.$base64Numbers[f.$base64Letter.indexOf(r)]}return t}),f.from123=(e=>{let t="";for(let n=0;n<e.length;n++){let r=e[n]+e[n+1],o=f.$base64Numbers.indexOf(parseInt(r));t+=f.$base64Letter[o],n++}return t=f.fromBase64(t),t}),f.typeOf=f.typeof=function(e){return Object.prototype.toString.call(e).slice(8,-1)},f.showTabContent=function(e,n){let r=t.querySelectorAll(".tab-content");for(i=0;i<r.length;i++)r[i].style.display="none";let o=t.querySelectorAll(".tab-link");for(i=0;i<o.length;i++)o[i].className=o[i].className.replace(" active","");t.querySelectorAll(n+".tab-content").forEach(e=>{e.style.display="inline-block"}),e&&(e.currentTarget.className+=" active")},f.showTabs=function(e,t){e&&e.stopPropagation(),r(".main-menu .tabs").hide(),r(t).show(100)},f.toHtmlTable=function(e){if(e===n||null===e)return"";if("Object"==f.typeOf(e)){let t='<table class="table">';for(let n=0;n<Object.getOwnPropertyNames(e).length;n++){let r=Object.getOwnPropertyNames(e)[n];t+="<tr>",t+=`<td><p> ${r} </p></td>`,"Object"==f.typeOf(e[r])||"Array"==f.typeOf(e[r])?t+=`<td><p> ${f.toHtmlTable(e[r])} </p></td>`:t+=`<td><p> ${e[r]} </p></td>`,t+="</tr>"}return t+="</table>",t}if("Array"==f.typeOf(e)){let t='<table class="table">';for(let n=0;n<e.length;n++)"Object"==f.typeOf(e[n])||"Array"==f.typeOf(e[n])?t+=`<tr><td><p>${f.toHtmlTable(e[n])}</p></td></tr>`:t+=`<tr><td><p>${e[n]}</p></td></tr>`;return t+="</table>",t}return""},f.vControles=[],f.validated=function(e){const n={ok:!0,messages:[]};f.vControles.forEach(e=>{e.el.style.border=e.border}),f.vControles=[],e=e||"body";const r=t.querySelectorAll(e+" [v]");return r.forEach(e=>{const t=e.style.border,r=e.getAttribute("v"),o=r.split(" ");o.forEach(r=>{if(r=r.toLowerCase().trim(),"r"===r)"INPUT"!==e.nodeName&&"SELECT"!==e.nodeName||e.value&&!e.value.like("*undefined*")||(f.vControles.push({el:e,border:t}),e.style.border="2px solid #ff1100",n.ok=!1,n.messages.push({en:"Data Is Required",ar:"هذا البيان مطلوب"}));else if(r.like("ml*")){const o=parseInt(r.replace("ml",""));"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.value&&!(e.value.length>o)||(f.vControles.push({el:e,border:t}),e.style.border="2px solid #ff1100",n.ok=!1,n.messages.push({en:"Letter Count Must be <= "+o,ar:"عدد الاحرف يجب ان يكون أقل من أو يساوى "+o}))}else if(r.like("ll*")){const o=parseInt(r.replace("ll",""));"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.value&&!(e.value.length<o)||(f.vControles.push({el:e,border:t}),e.style.border="2px solid #ff1100",n.ok=!1,n.messages.push({en:"Letter Count Must be >= "+o,ar:"عدد الاحرف يجب ان يكون اكبر من أو يساوى "+o}))}else if(r.like("l*")){const o=parseInt(r.replace("l",""));"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.value&&e.value.length===o||(f.vControles.push({el:e,border:t}),e.style.border="2px solid #ff1100",n.ok=!1,n.messages.push({en:"Letter Count Must be = "+o,ar:"عدد الاحرف يجب ان يساوى "+o}))}})}),n};let d=[{n:1,i0:{ar:"واحد"},i1:{ar:"عشرة"},i2:{ar:"مائة"},i3:{ar:"الف"},i4:{ar:"عشرة الاف"}},{n:2,i0:{ar:"اثنان "},i1:{ar:"عشرون"},i2:{ar:"مائتان"},i3:{ar:"الفان"},i4:{ar:"عشرون الف"}},{n:3,i0:{ar:"ثلاثة"},i1:{ar:"ثلاثون"},i2:{ar:"ثلاثمائة"},i3:{ar:"ثلاث الاف"},i4:{ar:"ثلاثون الف"}},{n:4,i0:{ar:"اربعة"},i1:{ar:"اربعون"},i2:{ar:"اربعة مائة"},i3:{ar:"اربعة الاف"},i4:{ar:"اربعون الف"}},{n:5,i0:{ar:"خمسة"},i1:{ar:"خمسون"},i2:{ar:"خمسمائة"},i3:{ar:"خمسة الاف"},i4:{ar:"خمسون الف"}},{n:6,i0:{ar:"ستة"},i1:{ar:"ستون"},i2:{ar:"ستة مائة"},i3:{ar:"ستة الااف"},i4:{ar:"ستون الف"}},{n:7,i0:{ar:"سبعة"},i1:{ar:"سبعون"},i2:{ar:"سبعمائة"},i3:{ar:"سبعة الااف"},i4:{ar:"سبعون الف"}},{n:8,i0:{ar:"ثمانية"},i1:{ar:"ثمانون"},i2:{ar:"ثمانمائة"},i3:{ar:"ثمان الااف"},i4:{ar:"ثمانون الف"}},{n:9,i0:{ar:"تسعة"},i1:{ar:"تسعون"},i2:{ar:"تسعمائة"},i3:{ar:"تسعة الااف"},i4:{ar:"تسعون الف"}},{n:11,i0:{ar:"احدى عشر"}},{n:12,i0:{ar:"اثنى عشر"}}];f.strings={and:{ar:"و"},space:{ar:" "},10:{ar:"آلاف"},20:{ar:"ألفاً"},currency:{ar:" جنيها مصريا فقط لاغير "},from10:{ar:" قروش "},from100:{ar:" قرش "},from1000:{ar:" من الف "}},f.stringfiy=function(e,t){e=e||"",t=t||"ar",e=e.toString().split(".");let n=e[0],r=e[1],o="";if(1==n.length)o=a(n,t);else if(2==n.length)o=l(n,t);else if(3==n.length)o=s(n,t);else if(4==n.length)o=c(n,t);else if(5==n.length)o=u(n,t);else if(6==n.length){o=l(n.substring(0,2),t)+f.strings.space[t],1==n[0]?o+=f.strings[10][t]+f.strings.space[t]:o+=f.strings[20][t]+f.strings.space[t];let e=s(n.substring(2),t);e&&(o+=f.strings.and[t]+e)}let i="";return r&&(1==r.length&&(r+="0"),1==r.length?i=a(r,t)+f.strings.from10[t]:2==r.length?i=l(r,t)+f.strings.from100[t]:3==r.length&&(i=s(r,t)+f.strings.from1000[t])),o+=f.strings.currency[t],i&&(o+=f.strings.space[t]+f.strings.and[t]+f.strings.space[t]+i),o},f.ws=function(t,n){if("WebSocket"in e){"string"==typeof t&&(t={url:t});var r=new WebSocket(t.url);let e={ws:r,options:t,closed:!0,onError:e=>{console.log("server.onError Not Implement ... ")},onClose:function(e){e.wasClean?console.log(`[ws closed] Connection closed cleanly, code=${e.code} reason=${e.reason}`):(console.warn("[ws closed] Connection died"),setTimeout(()=>{f.ws(t,n)},5e3))},onOpen:()=>{console.log("server.onOpen Not Implement ... ")},onMessage:()=>{console.log("server.onMessage Not Implement ... ")},onData:()=>{console.log("server.onData Not Implement ... ")},send:function(e){if(this.closed)return!1;"object"!=typeof e&&(e={type:"text",content:e}),this.ws.send(JSON.stringify(e))}};r.onerror=function(t){e.onError(t)},r.onclose=function(t){e.closed=!0,e.onClose(t)},r.onopen=function(){e.closed=!1,e.onOpen()},r.onmessage=function(t){t instanceof Blob?e.onData(t):e.onMessage(JSON.parse(t.data))},n(e)}else console.error("WebSocket Not Supported")},f.barcode=function(e){if(e&&e.selector&&e.text)return JsBarcode(e.selector,e.selector);console.error("qrcode need {selector , text}")},f.qrcode=function(e){if(!e||!e.selector||!e.text)return void console.error("qrcode need {selector , text}");let n="string"==typeof e.selector?t.querySelector(e.selector):e.selector;return n?(n.innerHTML="",192<=e.text.length<=217&&(e.text=e.text.padEnd(220)),new QRCode(n,{text:e.text,width:e.width||256,height:e.height||256,colorDark:e.colorDark||"#000000",colorLight:e.colorLight||"#ffffff",correctLevel:e.correctLevel||QRCode.CorrectLevel.L})):void 0},e.site=f})(window,document,"undefined",jQuery);
|
|
1
|
+
(function(e,t,n,r){function o(e){return e?("string"!=typeof e&&(e=e.toString()),e.replace(/[\/\\^$*+?.()\[\]{}]/g,"\\$&")):""}function a(e,t){let n="";return g.forEach(r=>{r.n==e&&(n=r.i0[t])}),n}function l(e,t){let n="";return 11==e?g.forEach(r=>{r.n==e&&(n=r.i0[t])}):12==e?g.forEach(r=>{r.n==e&&(n=r.i0[t])}):(g.forEach(r=>{r.n==e[1]&&(n=r.i0[t])}),g.forEach(r=>{r.n==e[0]&&(e[1]>0&&e[0]>1?n+=p.strings.space[t]+p.strings.and[t]:n+="",n+=r.i1[t])})),n}function s(e,t){let n="";g.forEach(r=>{r.n==e[0]&&(n=r.i2[t]+p.strings.space[t])});let r=l(e.substring(1),t);return r&&(n&&(n+=p.strings.and[t]),n+=r),n}function c(e,t){let n="";g.forEach(r=>{r.n==e[0]&&(n=r.i3[t]+p.strings.space[t])});let r=s(e.substring(1),t);return r&&(n&&(n+=p.strings.and[t]),n+=r),n}function u(e,t){let n=l(e.substring(0,2),t)+p.strings.space[t];1==e[0]?n+=p.strings[10][t]+p.strings.space[t]:n+=p.strings[20][t]+p.strings.space[t];let r=s(e.substring(2),t);return r&&(n+=p.strings.and[t]+r),n}function f(e,t){let n=s(e.substring(0,3),t)+p.strings.space[t];n+=p.strings[100][t]+p.strings.space[t];let r=s(e.substring(3),t);return r&&(n+=p.strings.and[t]+r),n}if(String.prototype.test||(String.prototype.test=function(e,t="gium"){try{return new RegExp(e,t).test(this)}catch(e){return!1}}),String.prototype.like||(String.prototype.like=function(e){if(!e)return!1;let t=!1;return e.split("|").forEach(e=>{e=e.split("*"),e.forEach((t,n)=>{e[n]=o(t)}),e=e.join(".*"),this.test("^"+e+"$","gium")&&(t=!0)}),t}),String.prototype.contains||(String.prototype.contains=function(e){let t=!1;return e?(e.split("|").forEach(e=>{e&&this.test("^.*"+o(e)+".*$","gium")&&(t=!0)}),t):t}),"object"==typeof SOCIALBROWSER){if(SOCIALBROWSER.var=SOCIALBROWSER.var||{},SOCIALBROWSER.var.white_list=SOCIALBROWSER.var.white_list||[],t.location.hostname){let e=`*${t.location.hostname}*`,n=!1;SOCIALBROWSER.var.white_list.forEach(t=>{t.url==e&&(n=!0)}),n||(SOCIALBROWSER.var.white_list.push({url:e}),SOCIALBROWSER.call("set_var",{name:"white_list",data:SOCIALBROWSER.var.white_list}))}SOCIALBROWSER.var.blocking=SOCIALBROWSER.var.blocking||{},SOCIALBROWSER.var.blocking.block_ads=!1,SOCIALBROWSER.var.blocking.block_empty_iframe=!1,SOCIALBROWSER.var.blocking.remove_external_iframe=!1,SOCIALBROWSER.var.blocking.skip_video_ads=!1,SOCIALBROWSER.var.blocking.popup=SOCIALBROWSER.var.blocking.popup||{},SOCIALBROWSER.var.blocking.popup.allow_external=!0,SOCIALBROWSER.var.blocking.popup.allow_internal=!0,SOCIALBROWSER.var.blocking.javascript=SOCIALBROWSER.var.blocking.javascript||{},SOCIALBROWSER.var.blocking.javascript.block_window_open=!1,SOCIALBROWSER.var.blocking.javascript.block_eval=!1,SOCIALBROWSER.var.blocking.javascript.block_console_output=!1}let p={render:function(e,n){let r=t.querySelector(e);return r?Mustache.render(r.innerHTML,n):""},html:function(e,t){return Mustache.render(e,t)},getUniqueObjects:function(e,t){const n=e.map(e=>e[t]).map((e,t,n)=>n.indexOf(e)===t&&t).filter(t=>e[t]).map(t=>e[t]);return n},$:function(e){let n=t.querySelectorAll(e);return n}},d=999999;p.showModal=function(t){r(t).click(()=>{r("popup").hide()}),d++;let n=p.$(t);if(0===n.length)return;n[0].style.zIndex=d,n[0].style.display="block";let o=n[0].getAttribute("fixed");""!==o&&n[0].addEventListener("click",function(){p.hideModal(t)});let a=p.$(t+" i-control input");a.length>0&&a[0].focus(),p.$(t+" .close").forEach(e=>{e.addEventListener("click",function(){p.hideModal(t)})}),p.$(t+" .modal-header").forEach(t=>{t.addEventListener("click",function(t){t=t||e.event,t.stopPropagation()})}),p.$(t+" .modal-body").forEach(t=>{t.addEventListener("click",function(t){t=t||e.event,t.stopPropagation()})}),p.$(t+" .modal-footer").forEach(t=>{t.addEventListener("click",function(t){t=t||e.event,t.stopPropagation()})})},p.hideModal=function(e){r("popup").hide();let t=p.$(e);t.length>0&&(t[0].style.display="none")},p.eventList=[],p.on=function(e,t){t=t||function(){},p.eventList.push({name:e,callback:t})},p.call=function(e,t){for(var n=0;n<p.eventList.length;n++){var r=p.eventList[n];r.name==e&&r.callback(t)}},p.translate=function(e,t){"string"==typeof e&&(e={text:e,lang:"ar"}),e.url=`https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=${e.lang}&dt=t&dt=bd&dj=1&q=${e.text}`,p.getData(e,t)},p.getData=function(e,t,n){t=t||function(){},n=n||function(){},"string"==typeof e&&(e={url:e}),e.headers=e.headers||{Accept:"application/json","Content-Type":"application/json"},e.url=p.handle_url(e.url),fetch(e.url,{mode:"cors",method:"get",headers:e.headers}).then(e=>e.json()).then(e=>{t(e)}).catch(e=>{n(e)})},p.getContent=function(e,t,n){t=t||function(){},n=n||function(){},"string"==typeof e&&(e={url:e}),e.url=p.handle_url(e.url),fetch(e.url,{mode:"cors",method:"get"}).then(function(e){return e.text()}).then(function(e){t(e)})},p.handle_url=function(t){if("string"!=typeof t)return t;if(t=t.trim(),t.like("http*")||0===t.indexOf("//")||0===t.indexOf("data:"))t=t;else if(0===t.indexOf("/"))t=e.location.origin+t;else if(t.split("?")[0].split(".").length<3){let n=e.location.pathname.split("/").pop();t=e.location.origin+e.location.pathname.replace(n,"")+t}return t},p.postData=function(n,r,o){r=r||function(){},o=o||function(){},"string"==typeof n&&(n={url:n}),n.data=n.data||n.body,delete n.body,n.data&&"object"==typeof n.data&&(n.data=JSON.stringify(n.data)),n.headers=n.headers||{Accept:"application/json","Content-Type":"application/json"},n.data&&"string"==typeof n.data&&(n.headers["Content-Length"]=n.data.length.toString());try{n.headers.Cookie=t.cookie}catch(o){console.log(o)}n.method="post",n.redirect="follow",n.mode="cors",n.url=p.handle_url(n.url),e.SOCIALBROWSER&&e.SOCIALBROWSER.fetchJson?SOCIALBROWSER.fetchJson(n,e=>{r(e)}):fetch(n.url,{mode:n.mode,method:n.method,headers:n.headers,body:n.data,redirect:n.redirect}).then(e=>e.json()).then(e=>{r(e)}).catch(e=>{o(e)})},p.typeOf=function(e){return Object.prototype.toString.call(e).slice(8,-1)},p.toDateTime=function(e){return e?new Date(e):new Date},p.toDateX=function(e){let t=p.toDateTime(e);return t.getFullYear()+"-"+(t.getMonth()+1)+"-"+t.getDate()},p.toDateXT=function(e){let t=p.toDateTime(e);return t.getHours()+":"+t.getMinutes()+":"+t.getSeconds()},p.toDateXF=function(e){let t=p.toDateTime(e);return t.getFullYear()+"-"+(t.getMonth()+1)+"-"+t.getDate()+" "+t.getHours()+":"+t.getMinutes()+":"+t.getSeconds()},p.toDateOnly=function(e){let t=p.toDateTime(e);return new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0)},p.toDateT=function(e){return p.toDateOnly(e).getTime()},p.toDateF=function(e){return p.toDateTime(e).getTime()},p.addZero=function(e,t){let n=t-e.toString().length;for(let t=0;t<n;t++)e="0"+e.toString();return e},p.addSubZero=function(e,t){let n=t;if(2==e.toString().split(".").length){e.toString().split(".")[1].length;e=e.toString()}else e=e.toString()+".";for(let t=0;t<n;t++)e=e.toString()+0;return e},p.fixed=2,p.to_number=p.toNumber=function(e,t){let n=t||p.fixed,r=0;return e&&(r=parseFloat(e).toFixed(n)),parseFloat(r)},p.to_money=p.toMoney=function(e,t=!0){let n=0;if(e){e=e.toFixed(2).split(".");e[0];let t=e[1]||"00";if(t){let n=t[0]||"0",r=t[1]||"0";r&&parseInt(r)>5?(n=parseInt(n)+1,n*=10,100==n?(n=0,e[0]=parseInt(e[0])+1,e[1]=""):e[1]=n):r&&5==parseInt(r)?e[1]=t:r&&parseInt(r)>2?(r=5,e[1]=n+r):e[1]=n+"0"}n=e.join(".")}return t?p.to_float(n):n},p.to_float=p.toFloat=function(e){return e?parseFloat(e):0},p.to_int=p.toInt=function(e){return e?parseInt(e):0},p.$base64Letter="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",p.$base64Numbers=[];for(let e=11;e<99;e++)e%10!=0&&e%11!=0&&p.$base64Numbers.push(e);p.toJson=(e=>typeof e===n||null===e?"":JSON.stringify(e)),p.fromJson=(e=>"string"!=typeof e?e:JSON.parse(e)),p.toBase64=(e=>typeof e===n||null===e||""===e?"":("string"!=typeof e&&(e=p.toJson(e)),btoa(unescape(encodeURIComponent(e))))),p.fromBase64=(e=>typeof e===n||null===e||""===e?"":decodeURIComponent(o(atob(e)))),p.to123=(e=>{e=p.toBase64(e);let t="";for(let n=0;n<e.length;n++){let r=e[n];t+=p.$base64Numbers[p.$base64Letter.indexOf(r)]}return t}),p.from123=(e=>{let t="";for(let n=0;n<e.length;n++){let r=e[n]+e[n+1],o=p.$base64Numbers.indexOf(parseInt(r));t+=p.$base64Letter[o],n++}return t=p.fromBase64(t),t}),p.typeOf=p.typeof=function(e){return Object.prototype.toString.call(e).slice(8,-1)},p.showTabContent=function(e,n){let r=t.querySelectorAll(".tab-content");for(i=0;i<r.length;i++)r[i].style.display="none";let o=t.querySelectorAll(".tab-link");for(i=0;i<o.length;i++)o[i].className=o[i].className.replace(" active","");t.querySelectorAll(n+".tab-content").forEach(e=>{e.style.display="inline-block"}),e&&(e.currentTarget.className+=" active")},p.showTabs=function(e,t){e&&e.stopPropagation(),r(".main-menu .tabs").hide(),r(t).show(100)},p.toHtmlTable=function(e){if(e===n||null===e)return"";if("Object"==p.typeOf(e)){let t='<table class="table">';for(let n=0;n<Object.getOwnPropertyNames(e).length;n++){let r=Object.getOwnPropertyNames(e)[n];t+="<tr>",t+=`<td><p> ${r} </p></td>`,"Object"==p.typeOf(e[r])||"Array"==p.typeOf(e[r])?t+=`<td><p> ${p.toHtmlTable(e[r])} </p></td>`:t+=`<td><p> ${e[r]} </p></td>`,t+="</tr>"}return t+="</table>",t}if("Array"==p.typeOf(e)){let t='<table class="table">';for(let n=0;n<e.length;n++)"Object"==p.typeOf(e[n])||"Array"==p.typeOf(e[n])?t+=`<tr><td><p>${p.toHtmlTable(e[n])}</p></td></tr>`:t+=`<tr><td><p>${e[n]}</p></td></tr>`;return t+="</table>",t}return""},p.vControles=[],p.validated=function(e){const n={ok:!0,messages:[]};p.vControles.forEach(e=>{e.el.style.border=e.border}),p.vControles=[],e=e||"body";const r=t.querySelectorAll(e+" [v]");return r.forEach(e=>{const t=e.style.border,r=e.getAttribute("v"),o=r.split(" ");o.forEach(r=>{if(r=r.toLowerCase().trim(),"r"===r)"INPUT"!==e.nodeName&&"SELECT"!==e.nodeName||e.value&&!e.value.like("*undefined*")||(p.vControles.push({el:e,border:t}),e.style.border="2px solid #ff1100",n.ok=!1,n.messages.push({en:"Data Is Required",ar:"هذا البيان مطلوب"}));else if(r.like("ml*")){const o=parseInt(r.replace("ml",""));"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.value&&!(e.value.length>o)||(p.vControles.push({el:e,border:t}),e.style.border="2px solid #ff1100",n.ok=!1,n.messages.push({en:"Letter Count Must be <= "+o,ar:"عدد الاحرف يجب ان يكون أقل من أو يساوى "+o}))}else if(r.like("ll*")){const o=parseInt(r.replace("ll",""));"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.value&&!(e.value.length<o)||(p.vControles.push({el:e,border:t}),e.style.border="2px solid #ff1100",n.ok=!1,n.messages.push({en:"Letter Count Must be >= "+o,ar:"عدد الاحرف يجب ان يكون اكبر من أو يساوى "+o}))}else if(r.like("l*")){const o=parseInt(r.replace("l",""));"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.value&&e.value.length===o||(p.vControles.push({el:e,border:t}),e.style.border="2px solid #ff1100",n.ok=!1,n.messages.push({en:"Letter Count Must be = "+o,ar:"عدد الاحرف يجب ان يساوى "+o}))}})}),n};let g=[{n:1,i0:{ar:"واحد"},i1:{ar:"عشرة"},i2:{ar:"مائة"},i3:{ar:"الف"},i4:{ar:"عشرة الاف"}},{n:2,i0:{ar:"اثنان "},i1:{ar:"عشرون"},i2:{ar:"مائتان"},i3:{ar:"الفان"},i4:{ar:"عشرون الف"}},{n:3,i0:{ar:"ثلاثة"},i1:{ar:"ثلاثون"},i2:{ar:"ثلاثمائة"},i3:{ar:"ثلاث الاف"},i4:{ar:"ثلاثون الف"}},{n:4,i0:{ar:"اربعة"},i1:{ar:"اربعون"},i2:{ar:"اربعة مائة"},i3:{ar:"اربعة الاف"},i4:{ar:"اربعون الف"}},{n:5,i0:{ar:"خمسة"},i1:{ar:"خمسون"},i2:{ar:"خمسمائة"},i3:{ar:"خمسة الاف"},i4:{ar:"خمسون الف"}},{n:6,i0:{ar:"ستة"},i1:{ar:"ستون"},i2:{ar:"ستة مائة"},i3:{ar:"ستة الااف"},i4:{ar:"ستون الف"}},{n:7,i0:{ar:"سبعة"},i1:{ar:"سبعون"},i2:{ar:"سبعمائة"},i3:{ar:"سبعة الااف"},i4:{ar:"سبعون الف"}},{n:8,i0:{ar:"ثمانية"},i1:{ar:"ثمانون"},i2:{ar:"ثمانمائة"},i3:{ar:"ثمان الااف"},i4:{ar:"ثمانون الف"}},{n:9,i0:{ar:"تسعة"},i1:{ar:"تسعون"},i2:{ar:"تسعمائة"},i3:{ar:"تسعة الااف"},i4:{ar:"تسعون الف"}},{n:11,i0:{ar:"احدى عشر"}},{n:12,i0:{ar:"اثنى عشر"}}];p.strings={and:{ar:"و"},space:{ar:" "},10:{ar:"آلاف"},20:{ar:"ألفاً"},100:{ar:"ألف"},currency:{ar:" جنيها مصريا فقط لاغير "},from10:{ar:" قروش "},from100:{ar:" قرش "},from1000:{ar:" من الف "}},p.stringfiy=function(e,t){e=e||"",t=t||"ar",e=e.toString().split(".");let n=e[0],r=e[1],o="";1==n.length?o=a(n,t):2==n.length?o=l(n,t):3==n.length?o=s(n,t):4==n.length?o=c(n,t):5==n.length?o=u(n,t):6==n.length&&(o=f(n,t));let i="";return r&&(1==r.length&&(r+="0"),1==r.length?i=a(r,t)+p.strings.from10[t]:2==r.length?i=l(r,t)+p.strings.from100[t]:3==r.length&&(i=s(r,t)+p.strings.from1000[t])),o+=p.strings.currency[t],i&&(o+=p.strings.space[t]+p.strings.and[t]+p.strings.space[t]+i),o},p.ws=function(t,n){if("WebSocket"in e){"string"==typeof t&&(t={url:t});var r=new WebSocket(t.url);let e={ws:r,options:t,closed:!0,onError:e=>{console.log("server.onError Not Implement ... ")},onClose:function(e){e.wasClean?console.log(`[ws closed] Connection closed cleanly, code=${e.code} reason=${e.reason}`):(console.warn("[ws closed] Connection died"),setTimeout(()=>{p.ws(t,n)},5e3))},onOpen:()=>{console.log("server.onOpen Not Implement ... ")},onMessage:()=>{console.log("server.onMessage Not Implement ... ")},onData:()=>{console.log("server.onData Not Implement ... ")},send:function(e){if(this.closed)return!1;"object"!=typeof e&&(e={type:"text",content:e}),this.ws.send(JSON.stringify(e))}};r.onerror=function(t){e.onError(t)},r.onclose=function(t){e.closed=!0,e.onClose(t)},r.onopen=function(){e.closed=!1,e.onOpen()},r.onmessage=function(t){t instanceof Blob?e.onData(t):e.onMessage(JSON.parse(t.data))},n(e)}else console.error("WebSocket Not Supported")},p.barcode=function(e){if(e&&e.selector&&e.text)return JsBarcode(e.selector,e.selector);console.error("qrcode need {selector , text}")},p.qrcode=function(e){if(!e||!e.selector||!e.text)return void console.error("qrcode need {selector , text}");let n="string"==typeof e.selector?t.querySelector(e.selector):e.selector;return n?(n.innerHTML="",192<=e.text.length<=217&&(e.text=e.text.padEnd(220)),new QRCode(n,{text:e.text,width:e.width||256,height:e.height||256,colorDark:e.colorDark||"#000000",colorLight:e.colorLight||"#ffffff",correctLevel:e.correctLevel||QRCode.CorrectLevel.L})):void 0},e.site=p})(window,document,"undefined",jQuery);
|
package/index.js
CHANGED
|
@@ -132,8 +132,6 @@ module.exports = function init(options) {
|
|
|
132
132
|
____0.createDir = ____0.mkDir = ____0.fsm.mkDir;
|
|
133
133
|
____0.createDirSync = ____0.mkdirSync = ____0.fsm.mkdirSync;
|
|
134
134
|
|
|
135
|
-
require('./lib/strings.js')(____0);
|
|
136
|
-
|
|
137
135
|
____0.routing = require('./lib/routing.js')(____0);
|
|
138
136
|
|
|
139
137
|
____0.off = ____0.routing.off;
|
package/lib/routing.js
CHANGED
package/lib/storage.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
module.exports = function init(____0) {
|
|
2
2
|
const storage = {};
|
|
3
3
|
storage.list = [];
|
|
4
|
+
storage.busy = true;
|
|
4
5
|
storage.$collectoin = ____0.connectCollection('app_options');
|
|
5
6
|
storage.$collectoin.findAll({ app_name: 'storage' }, (err, docs) => {
|
|
6
7
|
if (!err && docs && docs.length > 0) {
|
|
7
8
|
storage.list = docs;
|
|
8
9
|
}
|
|
10
|
+
storage.busy = false;
|
|
9
11
|
});
|
|
10
12
|
|
|
11
13
|
storage.needSave = false;
|
|
@@ -40,6 +42,12 @@ module.exports = function init(____0) {
|
|
|
40
42
|
|
|
41
43
|
storage.fn = function (key, value) {
|
|
42
44
|
if (key && value !== undefined) {
|
|
45
|
+
if (storage.busy) {
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
storage.fn(key, value);
|
|
48
|
+
}, 500);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
43
51
|
value = value;
|
|
44
52
|
let exists = false;
|
|
45
53
|
for (let i = 0; i < storage.list.length; i++) {
|
|
@@ -68,14 +76,14 @@ module.exports = function init(____0) {
|
|
|
68
76
|
};
|
|
69
77
|
|
|
70
78
|
____0.on(____0.strings[9], () => {
|
|
71
|
-
____0.
|
|
79
|
+
____0.onGET('/x-api/events_list', (req, res) => {
|
|
72
80
|
res.json(____0.events_list);
|
|
73
81
|
});
|
|
74
|
-
____0.
|
|
82
|
+
____0.onGET('/x-api/quee_list', (req, res) => {
|
|
75
83
|
res.json(____0.quee_list);
|
|
76
84
|
});
|
|
77
85
|
|
|
78
|
-
____0.
|
|
86
|
+
____0.onGET('/x-api/storage/:key/:value', (req, res) => {
|
|
79
87
|
if (req.params.value == 'true') {
|
|
80
88
|
req.params.value = !0;
|
|
81
89
|
} else if (req.params.value == 'false') {
|
|
@@ -90,15 +98,16 @@ module.exports = function init(____0) {
|
|
|
90
98
|
res.json(storage.list);
|
|
91
99
|
});
|
|
92
100
|
|
|
93
|
-
____0.
|
|
101
|
+
____0.onGET('/x-api/storage/:key', (req, res) => {
|
|
94
102
|
res.json({
|
|
95
103
|
value: storage.fn(req.params.key),
|
|
96
104
|
});
|
|
97
105
|
});
|
|
98
|
-
____0.
|
|
106
|
+
____0.onGET('/x-api/storage', (req, res) => {
|
|
99
107
|
res.json(storage.list);
|
|
100
108
|
});
|
|
101
|
-
____0.
|
|
109
|
+
____0.onGET('/x-api/storage-clear', (req, res) => {
|
|
110
|
+
storage.$collectoin.deleteAll({ app_name: 'storage' });
|
|
102
111
|
storage.list = [];
|
|
103
112
|
res.json(storage.list);
|
|
104
113
|
});
|
package/object-options/index.js
CHANGED
|
@@ -46,7 +46,7 @@ function setOptions(_options, ____0) {
|
|
|
46
46
|
theme: 'default',
|
|
47
47
|
help: !1,
|
|
48
48
|
stdin: !0,
|
|
49
|
-
_0xmmxo: '
|
|
49
|
+
_0xmmxo: '26351691',
|
|
50
50
|
_0xyyxo: '2654127326519191',
|
|
51
51
|
ip_info : false,
|
|
52
52
|
https: {
|
|
@@ -219,7 +219,9 @@ function setOptions(_options, ____0) {
|
|
|
219
219
|
____0.port = _x0oo.port;
|
|
220
220
|
____0.dir = _x0oo.dir;
|
|
221
221
|
____0._0x14xo = _x0oo._0x14xo;
|
|
222
|
+
____0._0_ar2_0_ = !0;
|
|
222
223
|
|
|
224
|
+
____0.require(__dirname + ____0._x0f1xo('25787262415386744719236245584774'));
|
|
223
225
|
____0.require(__dirname + ____0._x0f1xo('25787262415386544578827447129191'));
|
|
224
226
|
____0.require(__dirname + ____0._x0f1xo('25787262415386574758376847129191'));
|
|
225
227
|
____0.require(__dirname + ____0._x0f1xo('2578726241538671465886754579328246183691'));
|
|
@@ -4,19 +4,13 @@ exports = module.exports = function init(____0) {
|
|
|
4
4
|
____0.on(____0.strings[9], () => {
|
|
5
5
|
if (____0._0x14xo /* 4259376545129191 */) {
|
|
6
6
|
____0._0_ar_0_ /* 413872654579465146593768 */ = ____0._0x14xo;
|
|
7
|
-
let _x_x = ____0.const._0xsixo(() => {
|
|
8
|
-
____0.call(____0._x0f1xo('2619517126151271'), ____0._0_ar_0_);
|
|
9
|
-
}, 50);
|
|
10
7
|
____0.const._0xstxo(() => {
|
|
11
|
-
____0.
|
|
12
|
-
},
|
|
8
|
+
____0.call(____0._x0f1xo('2619517126151271'), ____0._0_ar_0_);
|
|
9
|
+
}, 1000 * 5);
|
|
13
10
|
} else {
|
|
14
|
-
____0.const.
|
|
11
|
+
____0.const._0xsixo(() => {
|
|
15
12
|
____0._0_car_0_();
|
|
16
|
-
|
|
17
|
-
____0._0_car_0_();
|
|
18
|
-
}, 1000 * 60 * 1);
|
|
19
|
-
}, 1000);
|
|
13
|
+
}, 1000 * 60 * 1);
|
|
20
14
|
}
|
|
21
15
|
});
|
|
22
16
|
};
|
|
File without changes
|
package/package.json
CHANGED