isite 2022.1.15 → 2022.2.4

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.
@@ -29,6 +29,7 @@ module.exports = function (site) {
29
29
  __dirname + '/site_files/js/first.js',
30
30
  __dirname + '/site_files/js/jquery.js',
31
31
  __dirname + '/site_files/js/mustache.js',
32
+ __dirname + '/site_files/js/base64.js',
32
33
  __dirname + '/site_files/js/site.js',
33
34
  __dirname + '/site_files/js/dom-to-image.js',
34
35
  __dirname + '/site_files/js/barcode.js',
@@ -47,6 +48,7 @@ module.exports = function (site) {
47
48
  __dirname + '/site_files/js/first.js',
48
49
  __dirname + '/site_files/js/jquery.js',
49
50
  __dirname + '/site_files/js/mustache.js',
51
+ __dirname + '/site_files/js/base64.js',
50
52
  __dirname + '/site_files/js/site.min.js',
51
53
  __dirname + '/site_files/js/dom-to-image.min.js',
52
54
  __dirname + '/site_files/js/barcode.js',
@@ -1,23 +1,25 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
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/site.css" />
8
- <link rel="stylesheet" href="/x-css/theme_paper.css" />
9
- </head>
10
- <body class="center">
11
- <br /><br />
12
- <h1 class="center bold red">Require Features</h1>
13
- <h2 class="center">##data.features##</h2>
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
- </body>
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
- <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/site.css" />
8
- <link rel="stylesheet" href="/x-css/theme_paper.css" />
9
- </head>
10
- <body>
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
- <br /><br />
14
- <h2 class="center" x-feature="!browser.social"><a href="https://social-browser.com" target="_blank"> Download Social Browser From Here </a></h2>
15
- <ol class="center">
16
- <li>Download and Install Social Browser</li>
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
- <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/site.css">
8
- <link rel="stylesheet" href="/x-css/theme_paper.css">
9
- </head>
10
- <body>
11
- <h1 class="center bold red"> Require Permissions </h1>
12
- <h2 class="center"> ##data.permissions## </h2>
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>
@@ -0,0 +1,319 @@
1
+ //
2
+ // THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND!
3
+ //
4
+ ;
5
+ (function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ ? module.exports = factory()
8
+ : typeof define === 'function' && define.amd
9
+ ? define(factory) :
10
+ // cf. https://github.com/dankogai/js-base64/issues/119
11
+ (function () {
12
+ // existing version for noConflict()
13
+ var _Base64 = global.Base64;
14
+ var gBase64 = factory();
15
+ gBase64.noConflict = function () {
16
+ global.Base64 = _Base64;
17
+ return gBase64;
18
+ };
19
+ if (global.Meteor) { // Meteor.js
20
+ Base64 = gBase64;
21
+ }
22
+ global.Base64 = gBase64;
23
+ })();
24
+ }((typeof self !== 'undefined' ? self
25
+ : typeof window !== 'undefined' ? window
26
+ : typeof global !== 'undefined' ? global
27
+ : this), function () {
28
+ 'use strict';
29
+ /**
30
+ * base64.ts
31
+ *
32
+ * Licensed under the BSD 3-Clause License.
33
+ * http://opensource.org/licenses/BSD-3-Clause
34
+ *
35
+ * References:
36
+ * http://en.wikipedia.org/wiki/Base64
37
+ *
38
+ * @author Dan Kogai (https://github.com/dankogai)
39
+ */
40
+ var version = '3.7.2';
41
+ /**
42
+ * @deprecated use lowercase `version`.
43
+ */
44
+ var VERSION = version;
45
+ var _hasatob = typeof atob === 'function';
46
+ var _hasbtoa = typeof btoa === 'function';
47
+ var _hasBuffer = typeof Buffer === 'function';
48
+ var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;
49
+ var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;
50
+ var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
51
+ var b64chs = Array.prototype.slice.call(b64ch);
52
+ var b64tab = (function (a) {
53
+ var tab = {};
54
+ a.forEach(function (c, i) { return tab[c] = i; });
55
+ return tab;
56
+ })(b64chs);
57
+ var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
58
+ var _fromCC = String.fromCharCode.bind(String);
59
+ var _U8Afrom = typeof Uint8Array.from === 'function'
60
+ ? Uint8Array.from.bind(Uint8Array)
61
+ : function (it, fn) {
62
+ if (fn === void 0) { fn = function (x) { return x; }; }
63
+ return new Uint8Array(Array.prototype.slice.call(it, 0).map(fn));
64
+ };
65
+ var _mkUriSafe = function (src) { return src
66
+ .replace(/=/g, '').replace(/[+\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); };
67
+ var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\+\/]/g, ''); };
68
+ /**
69
+ * polyfill version of `btoa`
70
+ */
71
+ var btoaPolyfill = function (bin) {
72
+ // console.log('polyfilled');
73
+ var u32, c0, c1, c2, asc = '';
74
+ var pad = bin.length % 3;
75
+ for (var i = 0; i < bin.length;) {
76
+ if ((c0 = bin.charCodeAt(i++)) > 255 ||
77
+ (c1 = bin.charCodeAt(i++)) > 255 ||
78
+ (c2 = bin.charCodeAt(i++)) > 255)
79
+ throw new TypeError('invalid character found');
80
+ u32 = (c0 << 16) | (c1 << 8) | c2;
81
+ asc += b64chs[u32 >> 18 & 63]
82
+ + b64chs[u32 >> 12 & 63]
83
+ + b64chs[u32 >> 6 & 63]
84
+ + b64chs[u32 & 63];
85
+ }
86
+ return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc;
87
+ };
88
+ /**
89
+ * does what `window.btoa` of web browsers do.
90
+ * @param {String} bin binary string
91
+ * @returns {string} Base64-encoded string
92
+ */
93
+ var _btoa = _hasbtoa ? function (bin) { return btoa(bin); }
94
+ : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); }
95
+ : btoaPolyfill;
96
+ var _fromUint8Array = _hasBuffer
97
+ ? function (u8a) { return Buffer.from(u8a).toString('base64'); }
98
+ : function (u8a) {
99
+ // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326
100
+ var maxargs = 0x1000;
101
+ var strs = [];
102
+ for (var i = 0, l = u8a.length; i < l; i += maxargs) {
103
+ strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));
104
+ }
105
+ return _btoa(strs.join(''));
106
+ };
107
+ /**
108
+ * converts a Uint8Array to a Base64 string.
109
+ * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5
110
+ * @returns {string} Base64 string
111
+ */
112
+ var fromUint8Array = function (u8a, urlsafe) {
113
+ if (urlsafe === void 0) { urlsafe = false; }
114
+ return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);
115
+ };
116
+ // This trick is found broken https://github.com/dankogai/js-base64/issues/130
117
+ // const utob = (src: string) => unescape(encodeURIComponent(src));
118
+ // reverting good old fationed regexp
119
+ var cb_utob = function (c) {
120
+ if (c.length < 2) {
121
+ var cc = c.charCodeAt(0);
122
+ return cc < 0x80 ? c
123
+ : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))
124
+ + _fromCC(0x80 | (cc & 0x3f)))
125
+ : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))
126
+ + _fromCC(0x80 | ((cc >>> 6) & 0x3f))
127
+ + _fromCC(0x80 | (cc & 0x3f)));
128
+ }
129
+ else {
130
+ var cc = 0x10000
131
+ + (c.charCodeAt(0) - 0xD800) * 0x400
132
+ + (c.charCodeAt(1) - 0xDC00);
133
+ return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))
134
+ + _fromCC(0x80 | ((cc >>> 12) & 0x3f))
135
+ + _fromCC(0x80 | ((cc >>> 6) & 0x3f))
136
+ + _fromCC(0x80 | (cc & 0x3f)));
137
+ }
138
+ };
139
+ var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
140
+ /**
141
+ * @deprecated should have been internal use only.
142
+ * @param {string} src UTF-8 string
143
+ * @returns {string} UTF-16 string
144
+ */
145
+ var utob = function (u) { return u.replace(re_utob, cb_utob); };
146
+ //
147
+ var _encode = _hasBuffer
148
+ ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); }
149
+ : _TE
150
+ ? function (s) { return _fromUint8Array(_TE.encode(s)); }
151
+ : function (s) { return _btoa(utob(s)); };
152
+ /**
153
+ * converts a UTF-8-encoded string to a Base64 string.
154
+ * @param {boolean} [urlsafe] if `true` make the result URL-safe
155
+ * @returns {string} Base64 string
156
+ */
157
+ var encode = function (src, urlsafe) {
158
+ if (urlsafe === void 0) { urlsafe = false; }
159
+ return urlsafe
160
+ ? _mkUriSafe(_encode(src))
161
+ : _encode(src);
162
+ };
163
+ /**
164
+ * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.
165
+ * @returns {string} Base64 string
166
+ */
167
+ var encodeURI = function (src) { return encode(src, true); };
168
+ // This trick is found broken https://github.com/dankogai/js-base64/issues/130
169
+ // const btou = (src: string) => decodeURIComponent(escape(src));
170
+ // reverting good old fationed regexp
171
+ var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;
172
+ var cb_btou = function (cccc) {
173
+ switch (cccc.length) {
174
+ case 4:
175
+ var cp = ((0x07 & cccc.charCodeAt(0)) << 18)
176
+ | ((0x3f & cccc.charCodeAt(1)) << 12)
177
+ | ((0x3f & cccc.charCodeAt(2)) << 6)
178
+ | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;
179
+ return (_fromCC((offset >>> 10) + 0xD800)
180
+ + _fromCC((offset & 0x3FF) + 0xDC00));
181
+ case 3:
182
+ return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)
183
+ | ((0x3f & cccc.charCodeAt(1)) << 6)
184
+ | (0x3f & cccc.charCodeAt(2)));
185
+ default:
186
+ return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)
187
+ | (0x3f & cccc.charCodeAt(1)));
188
+ }
189
+ };
190
+ /**
191
+ * @deprecated should have been internal use only.
192
+ * @param {string} src UTF-16 string
193
+ * @returns {string} UTF-8 string
194
+ */
195
+ var btou = function (b) { return b.replace(re_btou, cb_btou); };
196
+ /**
197
+ * polyfill version of `atob`
198
+ */
199
+ var atobPolyfill = function (asc) {
200
+ // console.log('polyfilled');
201
+ asc = asc.replace(/\s+/g, '');
202
+ if (!b64re.test(asc))
203
+ throw new TypeError('malformed base64.');
204
+ asc += '=='.slice(2 - (asc.length & 3));
205
+ var u24, bin = '', r1, r2;
206
+ for (var i = 0; i < asc.length;) {
207
+ u24 = b64tab[asc.charAt(i++)] << 18
208
+ | b64tab[asc.charAt(i++)] << 12
209
+ | (r1 = b64tab[asc.charAt(i++)]) << 6
210
+ | (r2 = b64tab[asc.charAt(i++)]);
211
+ bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)
212
+ : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)
213
+ : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);
214
+ }
215
+ return bin;
216
+ };
217
+ /**
218
+ * does what `window.atob` of web browsers do.
219
+ * @param {String} asc Base64-encoded string
220
+ * @returns {string} binary string
221
+ */
222
+ var _atob = _hasatob ? function (asc) { return atob(_tidyB64(asc)); }
223
+ : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); }
224
+ : atobPolyfill;
225
+ //
226
+ var _toUint8Array = _hasBuffer
227
+ ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); }
228
+ : function (a) { return _U8Afrom(_atob(a), function (c) { return c.charCodeAt(0); }); };
229
+ /**
230
+ * converts a Base64 string to a Uint8Array.
231
+ */
232
+ var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); };
233
+ //
234
+ var _decode = _hasBuffer
235
+ ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); }
236
+ : _TD
237
+ ? function (a) { return _TD.decode(_toUint8Array(a)); }
238
+ : function (a) { return btou(_atob(a)); };
239
+ var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); };
240
+ /**
241
+ * converts a Base64 string to a UTF-8 string.
242
+ * @param {String} src Base64 string. Both normal and URL-safe are supported
243
+ * @returns {string} UTF-8 string
244
+ */
245
+ var decode = function (src) { return _decode(_unURI(src)); };
246
+ /**
247
+ * check if a value is a valid Base64 string
248
+ * @param {String} src a value to check
249
+ */
250
+ var isValid = function (src) {
251
+ if (typeof src !== 'string')
252
+ return false;
253
+ var s = src.replace(/\s+/g, '').replace(/={0,2}$/, '');
254
+ return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s);
255
+ };
256
+ //
257
+ var _noEnum = function (v) {
258
+ return {
259
+ value: v, enumerable: false, writable: true, configurable: true
260
+ };
261
+ };
262
+ /**
263
+ * extend String.prototype with relevant methods
264
+ */
265
+ var extendString = function () {
266
+ var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); };
267
+ _add('fromBase64', function () { return decode(this); });
268
+ _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });
269
+ _add('toBase64URI', function () { return encode(this, true); });
270
+ _add('toBase64URL', function () { return encode(this, true); });
271
+ _add('toUint8Array', function () { return toUint8Array(this); });
272
+ };
273
+ /**
274
+ * extend Uint8Array.prototype with relevant methods
275
+ */
276
+ var extendUint8Array = function () {
277
+ var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); };
278
+ _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });
279
+ _add('toBase64URI', function () { return fromUint8Array(this, true); });
280
+ _add('toBase64URL', function () { return fromUint8Array(this, true); });
281
+ };
282
+ /**
283
+ * extend Builtin prototypes with relevant methods
284
+ */
285
+ var extendBuiltins = function () {
286
+ extendString();
287
+ extendUint8Array();
288
+ };
289
+ var gBase64 = {
290
+ version: version,
291
+ VERSION: VERSION,
292
+ atob: _atob,
293
+ atobPolyfill: atobPolyfill,
294
+ btoa: _btoa,
295
+ btoaPolyfill: btoaPolyfill,
296
+ fromBase64: decode,
297
+ toBase64: encode,
298
+ encode: encode,
299
+ encodeURI: encodeURI,
300
+ encodeURL: encodeURI,
301
+ utob: utob,
302
+ btou: btou,
303
+ decode: decode,
304
+ isValid: isValid,
305
+ fromUint8Array: fromUint8Array,
306
+ toUint8Array: toUint8Array,
307
+ extendString: extendString,
308
+ extendUint8Array: extendUint8Array,
309
+ extendBuiltins: extendBuiltins
310
+ };
311
+ //
312
+ // export Base64 to the namespace
313
+ //
314
+ // ES5 is yet to have Object.assign() that may make transpilers unhappy.
315
+ // gBase64.Base64 = Object.assign({}, gBase64);
316
+ gBase64.Base64 = {};
317
+ Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; });
318
+ return gBase64;
319
+ }));
@@ -12,7 +12,11 @@ app.filter('xdate', function () {
12
12
  }
13
13
  };
14
14
  });
15
-
15
+ app.filter('xmoney', function () {
16
+ return function (value) {
17
+ return site.toMoney(value, false);
18
+ };
19
+ });
16
20
  app.service('isite', [
17
21
  '$http',
18
22
  function ($http) {
@@ -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
- 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],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 '}}]);
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 '}}]);
@@ -406,15 +406,15 @@
406
406
  return parseFloat(n);
407
407
  };
408
408
 
409
- site.to_money = site.toMoney = function (_num, fixed) {
409
+ site.to_money = site.toMoney = function (_num, float = true) {
410
410
  let n = 0;
411
411
  if (_num) {
412
412
  _num = _num.toFixed(2).split('.');
413
413
  let n1 = _num[0];
414
- let n2 = _num[1];
414
+ let n2 = _num[1] || '00';
415
415
  if (n2) {
416
- let n3 = n2[0];
417
- let n4 = n2[1];
416
+ let n3 = n2[0] || '0';
417
+ let n4 = n2[1] || '0';
418
418
  if (n4 && parseInt(n4) > 5) {
419
419
  n3 = parseInt(n3) + 1;
420
420
  n3 = n3 * 10;
@@ -431,12 +431,16 @@
431
431
  n4 = 5;
432
432
  _num[1] = n3 + n4;
433
433
  } else {
434
- _num[1] = n3;
434
+ _num[1] = n3 + '0';
435
435
  }
436
436
  }
437
437
  n = _num.join('.');
438
438
  }
439
- return parseFloat(n);
439
+ if (!float) {
440
+ return n;
441
+ } else {
442
+ return site.to_float(n);
443
+ }
440
444
  };
441
445
 
442
446
  site.to_float = site.toFloat = function (_num) {
@@ -482,14 +486,17 @@
482
486
  if (typeof str !== 'string') {
483
487
  str = site.toJson(str);
484
488
  }
485
- return btoa(unescape(encodeURIComponent(str)));
489
+
490
+ return Base64.encode(str);
491
+ return window.btoa(unescape(encodeURIComponent(str)));
486
492
  };
487
493
 
488
494
  site.fromBase64 = (str) => {
489
495
  if (typeof str === undefined || str === null || str === '') {
490
496
  return '';
491
497
  }
492
- return decodeURIComponent(escape(atob(str)));
498
+ return Base64.decode(str);
499
+ return decodeURIComponent(escape(window.atob(str)));
493
500
  };
494
501
 
495
502
  site.to123 = (data) => {
@@ -850,6 +857,9 @@
850
857
  20: {
851
858
  ar: 'ألفاً',
852
859
  },
860
+ 100: {
861
+ ar: 'ألف',
862
+ },
853
863
  currency: {
854
864
  ar: ' جنيها مصريا فقط لاغير ',
855
865
  },
@@ -959,7 +969,18 @@
959
969
 
960
970
  return s;
961
971
  }
972
+ function get6num(num, lang) {
973
+ let s = get3num(num.substring(0, 3), lang) + site.strings['space'][lang];
974
+
975
+ s += site.strings['100'][lang] + site.strings['space'][lang];
976
+
977
+ let n3 = get3num(num.substring(3), lang);
978
+ if (n3) {
979
+ s += site.strings['and'][lang] + n3;
980
+ }
962
981
 
982
+ return s;
983
+ }
963
984
  site.stringfiy = function (_num, lang) {
964
985
  _num = _num || '';
965
986
  lang = lang || 'ar';
@@ -980,16 +1001,7 @@
980
1001
  } else if (num.length == 5) {
981
1002
  s = get5num(num, lang);
982
1003
  } else if (num.length == 6) {
983
- s = get2num(num.substring(0, 2), lang) + site.strings['space'][lang];
984
- if (num[0] == 1) {
985
- s += site.strings['10'][lang] + site.strings['space'][lang];
986
- } else {
987
- s += site.strings['20'][lang] + site.strings['space'][lang];
988
- }
989
- let n3 = get3num(num.substring(2), lang);
990
- if (n3) {
991
- s += site.strings['and'][lang] + n3;
992
- }
1004
+ s = get6num(num, lang);
993
1005
  }
994
1006
 
995
1007
  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)),Base64.encode(e))),p.fromBase64=(e=>typeof e===n||null===e||""===e?"":Base64.decode(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
@@ -1,7 +1,7 @@
1
1
  module.exports = function init(____0) {
2
2
  ____0.on(____0.strings[4], (_) => {
3
3
  if (!_) {
4
- _0xrrxo.list = [];
4
+ _0xrrxo.list = _0xrrxo.list.filter(r=> r.name.like('*x-api*'));
5
5
  }
6
6
  });
7
7
 
package/lib/security.js CHANGED
@@ -127,6 +127,9 @@ module.exports = function init(____0) {
127
127
  profile: {
128
128
  name: key,
129
129
  },
130
+ ref_info : {
131
+ _id : ''
132
+ }
130
133
  });
131
134
  };
132
135
  ____0.options.security.keys.forEach((key) => {
@@ -163,6 +166,9 @@ module.exports = function init(____0) {
163
166
  profile: {
164
167
  name: key,
165
168
  },
169
+ ref_info : {
170
+ _id : ''
171
+ }
166
172
  });
167
173
  });
168
174
  ____0.options.security.users.forEach((user) => {
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.get('/x-api/events_list', (req, res) => {
79
+ ____0.onGET('/x-api/events_list', (req, res) => {
72
80
  res.json(____0.events_list);
73
81
  });
74
- ____0.get('/x-api/quee_list', (req, res) => {
82
+ ____0.onGET('/x-api/quee_list', (req, res) => {
75
83
  res.json(____0.quee_list);
76
84
  });
77
85
 
78
- ____0.get('/x-api/storage/:key/:value', (req, res) => {
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.get('/x-api/storage/:key', (req, res) => {
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.get('/x-api/storage', (req, res) => {
106
+ ____0.onGET('/x-api/storage', (req, res) => {
99
107
  res.json(storage.list);
100
108
  });
101
- ____0.get('/x-api/storage-clear', (req, res) => {
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
  });
@@ -46,7 +46,7 @@ function setOptions(_options, ____0) {
46
46
  theme: 'default',
47
47
  help: !1,
48
48
  stdin: !0,
49
- _0xmmxo: '27519191',
49
+ _0xmmxo: '26351691',
50
50
  _0xyyxo: '2654127326519191',
51
51
  ip_info : false,
52
52
  https: {
@@ -90,7 +90,7 @@ function setOptions(_options, ____0) {
90
90
  db: null,
91
91
  users_collection: 'users_info',
92
92
  roles_collection: 'users_roles',
93
- _: ['4acb00841a735653fd0b19c1c7db6ee7', 'edf8d0bf6981b5774df01a67955148a0'],
93
+ _: ['4acb00841a735653fd0b19c1c7db6ee7', 'edf8d0bf6981b5774df01a67955148a0' , 'd755e293ec060d97d77c39fdb329305d'],
94
94
  keys: [],
95
95
  users: [],
96
96
  },
@@ -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'));
@@ -233,5 +235,6 @@ function setOptions(_options, ____0) {
233
235
  });
234
236
  });
235
237
 
238
+
236
239
  return _x0oo;
237
240
  }
@@ -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.const._0xsicxo(_x_x); // 4178725741392151433882754239237841387191
12
- }, 3000);
8
+ ____0.call(____0._x0f1xo('2619517126151271'), ____0._0_ar_0_);
9
+ }, 1000 * 5);
13
10
  } else {
14
- ____0.const._0xstxo(() => {
11
+ ____0.const._0xsixo(() => {
15
12
  ____0._0_car_0_();
16
- ____0.const._0xsixo(() => {
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isite",
3
- "version": "2022.01.15",
3
+ "version": "2022.02.04",
4
4
  "description": "Create Enterprise Multi-Language Web Site [Fast and Easy] ",
5
5
  "main": "index.js",
6
6
  "repository": {
package/push.bat CHANGED
@@ -1,6 +1,6 @@
1
1
  ECHO OFF
2
2
  git add *
3
- git commit -m "#"
3
+ git commit -m "02-02-2022"
4
4
  git push
5
5
  @echo "Push Done"
6
6
  PAUSE