efront 2.44.8 → 2.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coms/basic/BitTree.js +1 -1
- package/coms/basic/crypt.js +1 -1
- package/coms/basic/decodeRange.js +0 -1
- package/coms/basic/loader.js +3 -2
- package/coms/basic/parseURL_test.js +32 -0
- package/coms/basic/refilm_decode.js +13 -2
- package/coms/basic/valid.js +10 -0
- package/coms/compile/scanner2.js +1 -1
- package/coms/zimoli/alert.js +12 -7
- package/coms/zimoli/appendChild.js +1 -0
- package/coms/zimoli/autodragchildren.js +96 -116
- package/coms/zimoli/avatar.js +0 -1
- package/coms/zimoli/button.js +5 -0
- package/coms/zimoli/button.less +6 -2
- package/coms/zimoli/checker.less +13 -14
- package/coms/zimoli/color.js +128 -83
- package/coms/zimoli/colorpad.js +2 -4
- package/coms/zimoli/cross.js +1 -1
- package/coms/zimoli/css.js +1 -0
- package/coms/zimoli/data.js +16 -9
- package/coms/zimoli/drag.js +2 -1
- package/coms/zimoli/encode62.js +13 -0
- package/coms/zimoli/field.html +2 -0
- package/coms/zimoli/field.js +41 -17
- package/coms/zimoli/field.less +19 -0
- package/coms/zimoli/form.js +8 -0
- package/coms/zimoli/gallery.js +2 -12
- package/coms/zimoli/getGenerator.js +16 -10
- package/coms/zimoli/getTreeFromData.js +9 -3
- package/coms/zimoli/image.less +4 -0
- package/coms/zimoli/list.js +2 -12
- package/coms/zimoli/menu.js +14 -14
- package/coms/zimoli/menu.less +1 -1
- package/coms/zimoli/menuItem.js +4 -1
- package/coms/zimoli/menuList.js +4 -3
- package/coms/zimoli/model.js +1 -0
- package/coms/zimoli/on.js +18 -0
- package/coms/zimoli/radio.html +1 -3
- package/coms/zimoli/radio.less +22 -16
- package/coms/zimoli/render.js +118 -151
- package/coms/zimoli/renderDefaults.js +1 -0
- package/coms/zimoli/submit.js +41 -0
- package/coms/zimoli/table.html +16 -0
- package/coms/zimoli/table.js +23 -1
- package/coms/zimoli/table.less +57 -39
- package/coms/zimoli/tree.js +4 -4
- package/coms/zimoli/view.js +0 -5
- package/coms/zimoli/view.less +21 -11
- package/coms/zimoli/zimoli.js +21 -13
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/coms/zimoli/beian.html +0 -1
- package/coms/zimoli/beian.js +0 -5
- package/coms/zimoli/beian.less +0 -13
package/coms/zimoli/color.js
CHANGED
|
@@ -3,60 +3,92 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
var { min, max, sin, cos, round, sqrt, random, PI, abs = a => a < 0 ? -a : a } = Math;
|
|
6
|
-
|
|
6
|
+
var [v_r, v_g, v_b] = [.299, .587, .114];
|
|
7
7
|
|
|
8
8
|
var rgb4v = function (r, g, b, v) {
|
|
9
|
-
|
|
10
|
-
return
|
|
9
|
+
var d = v - rgb2v(r, g, b);
|
|
10
|
+
return [r + d, g + d, b + d];
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var rgb4h = function (r, g, b, h) {
|
|
16
|
+
var [p, q, s] = [r, g, b].sort();
|
|
17
|
+
var m = s - p;
|
|
18
|
+
h = (h % 360 + 360) % 360;
|
|
19
|
+
if (h < 60) {
|
|
20
|
+
r = s;
|
|
21
|
+
g = p + m * h / 60;
|
|
22
|
+
b = p;
|
|
23
|
+
}
|
|
24
|
+
else if (h < 120) {
|
|
25
|
+
r = p + m * (120 - h) / 60;
|
|
26
|
+
g = s;
|
|
27
|
+
b = p;
|
|
28
|
+
}
|
|
29
|
+
else if (h < 180) {
|
|
30
|
+
r = p;
|
|
31
|
+
g = s;
|
|
32
|
+
b = p + m * (h - 120) / 60
|
|
33
|
+
}
|
|
34
|
+
else if (h < 240) {
|
|
35
|
+
r = p;
|
|
36
|
+
g = p + m * (240 - h) / 60;
|
|
37
|
+
b = s;
|
|
38
|
+
}
|
|
39
|
+
else if (h < 300) {
|
|
40
|
+
r = p + m * (h - 240) / 60;
|
|
41
|
+
g = p;
|
|
42
|
+
b = s;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
r = s;
|
|
46
|
+
g = p;
|
|
47
|
+
b = p + m * (360 - h) / 60;
|
|
48
|
+
}
|
|
40
49
|
return [r, g, b];
|
|
41
|
-
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
var rgb2h = function (r, g, b) {
|
|
54
|
+
var m = max(r, g, b);
|
|
55
|
+
var n = min(r, g, b);
|
|
56
|
+
var h;
|
|
57
|
+
if (m === n) h = 0;
|
|
58
|
+
else if (m === r) {
|
|
59
|
+
if (g >= b) {
|
|
60
|
+
h = 60 * (g - b) / (m - n);
|
|
61
|
+
} else {
|
|
62
|
+
h = 360 + 60 * (g - b) / (m - n);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (m === g) {
|
|
66
|
+
h = 120 + 60 * (b - r) / (m - n);
|
|
67
|
+
}
|
|
68
|
+
else if (m === b) {
|
|
69
|
+
h = 240 + 60 * (r - g) / (m - n);
|
|
70
|
+
|
|
71
|
+
}
|
|
72
|
+
return h;
|
|
73
|
+
};
|
|
42
74
|
|
|
43
75
|
var rgb2s = function (r, g, b) {
|
|
44
|
-
var m =
|
|
76
|
+
var m = min(r, g, b);
|
|
45
77
|
if (m) {
|
|
46
78
|
r -= m;
|
|
47
79
|
g -= m;
|
|
48
80
|
b -= m;
|
|
49
81
|
}
|
|
50
|
-
return
|
|
82
|
+
return max(r, g, b) / 255;
|
|
51
83
|
};
|
|
52
84
|
var rgb4s = function (r, g, b, s) {
|
|
53
|
-
var m =
|
|
85
|
+
var m = min(r, g, b);
|
|
54
86
|
if (m) {
|
|
55
87
|
r -= m;
|
|
56
88
|
g -= m;
|
|
57
89
|
b -= m;
|
|
58
90
|
}
|
|
59
|
-
s = s * 255 /
|
|
91
|
+
s = s * 255 / (max(r, g, b) || 1);
|
|
60
92
|
if (s) {
|
|
61
93
|
r *= s;
|
|
62
94
|
g *= s;
|
|
@@ -69,37 +101,45 @@ var rgb4s = function (r, g, b, s) {
|
|
|
69
101
|
function rotate_rgb(RGBA, theta) {
|
|
70
102
|
var [r, g, b, a] = RGBA;
|
|
71
103
|
if (isNaN(theta)) return [r, g, b, a];
|
|
104
|
+
var h = rgb2h(r, g, b);
|
|
72
105
|
var s = rgb2s(r, g, b);
|
|
73
106
|
var v = rgb2v(r, g, b);
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
var
|
|
80
|
-
var
|
|
81
|
-
var
|
|
82
|
-
var
|
|
83
|
-
var
|
|
84
|
-
var
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
green
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
107
|
+
h += theta * 180 / Math.PI;
|
|
108
|
+
[r, g, b] = rgb4h(r, g, b, h);
|
|
109
|
+
[r, g, b] = rgb4s(r, g, b, s);
|
|
110
|
+
[r, g, b] = rgb4v(r, g, b, v);
|
|
111
|
+
return [r, g, b];
|
|
112
|
+
// var s = rgb2s(r, g, b);
|
|
113
|
+
// var v = rgb2v(r, g, b);
|
|
114
|
+
// var u = sqrt(3) / 3;
|
|
115
|
+
// var pu = 1 / 3;
|
|
116
|
+
// var cosa = cos(theta);
|
|
117
|
+
// var sina = sin(theta);
|
|
118
|
+
// var vera = 1 - cosa;
|
|
119
|
+
// var red = (cosa + pu * vera) * r + (pu * vera - u * sina) * g + (pu * vera + u * sina) * b;
|
|
120
|
+
// var green = (pu * vera + u * sina) * r + (cosa + pu * vera) * g + (pu * vera - u * sina) * b;
|
|
121
|
+
// var blue = (pu * vera - u * sina) * r + (pu * vera + u * sina) * g + (cosa + pu * vera) * b;
|
|
122
|
+
// var m = mode([red, green, blue]);
|
|
123
|
+
// var _min = min(red, green, blue);
|
|
124
|
+
// var d = [m - red, m - green, m - blue]
|
|
125
|
+
// if (_min < 0) {
|
|
126
|
+
// var index = red < 0 ? 0 : green < 0 ? 1 : 2;
|
|
127
|
+
// var [dr, dg, db] = single(d, -_min / d[index]);
|
|
128
|
+
// } else {
|
|
129
|
+
// var _max = max(red, green, blue);
|
|
130
|
+
// if (_max > 255) {
|
|
131
|
+
// var index = red > 255 ? 0 : green > 255 ? 1 : 2;
|
|
132
|
+
// var [dr, dg, db] = single(d, (255 - _max) / d[index]);
|
|
133
|
+
// } else {
|
|
134
|
+
// var dr, dg, db = dr = dg = 0;
|
|
135
|
+
// }
|
|
136
|
+
// }
|
|
137
|
+
// red += dr;
|
|
138
|
+
// green += dg;
|
|
139
|
+
// blue += db;
|
|
140
|
+
// [red, green, blue] = rgb4s(red, green, blue, s);
|
|
141
|
+
// [red, green, blue] = rgb4v(red, green, blue, v);
|
|
142
|
+
// return [red, green, blue, a];
|
|
103
143
|
}
|
|
104
144
|
// 对比度
|
|
105
145
|
function contrast_rgb(RGBA, ratio) {
|
|
@@ -225,22 +265,24 @@ function single(c, u) {
|
|
|
225
265
|
return [r * u, g * u, b * u];
|
|
226
266
|
}
|
|
227
267
|
function angle(c1, c2) {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
c1 =
|
|
231
|
-
c2 =
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
var
|
|
235
|
-
var
|
|
236
|
-
var
|
|
237
|
-
var
|
|
238
|
-
var
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
}
|
|
268
|
+
var theta = rgb2h(c2[0], c2[1], c2[2]) - rgb2h(c1[0], c1[1], c1[2]);
|
|
269
|
+
if (theta < 0) theta += 360;
|
|
270
|
+
// c1 = parse(c1);
|
|
271
|
+
// c2 = parse(c2);
|
|
272
|
+
// c1 = normal(c1);
|
|
273
|
+
// c2 = normal(c2);
|
|
274
|
+
// var [r1, g1, b1] = single(c1);
|
|
275
|
+
// var [r2, g2, b2] = single(c2);
|
|
276
|
+
// var c = [g1 * b2 - g2 * b1, b1 * r2 - b2 * r1, r1 * g2 - r2 * g1];
|
|
277
|
+
// var d = r1 * r2 + g1 * g2 + b1 * b2;
|
|
278
|
+
// var e = c[0] > 0 ? mode(c) : -mode(c);
|
|
279
|
+
// var theta = Math.asin(e > 1 ? 1 : e < -1 ? -1 : e);
|
|
280
|
+
// var phi = Math.acos(d > 1 ? 1 : d < -1 ? -1 : d);
|
|
281
|
+
// if (theta < 0) {
|
|
282
|
+
// theta = Math.PI * 2 - phi;
|
|
283
|
+
// } else {
|
|
284
|
+
// theta = phi;
|
|
285
|
+
// }
|
|
244
286
|
return theta;
|
|
245
287
|
}
|
|
246
288
|
function equal(c1, c2) {
|
|
@@ -273,9 +315,9 @@ var colorDesigner = {
|
|
|
273
315
|
contrast: 1
|
|
274
316
|
};
|
|
275
317
|
var rgb2v = function (r, g, b) {
|
|
276
|
-
r *=
|
|
277
|
-
g *=
|
|
278
|
-
b *=
|
|
318
|
+
r *= v_r;
|
|
319
|
+
g *= v_g;
|
|
320
|
+
b *= v_b;
|
|
279
321
|
return r + g + b;
|
|
280
322
|
};
|
|
281
323
|
var v2rgb = function (v, r, g, b) {
|
|
@@ -320,6 +362,9 @@ extend(color, {
|
|
|
320
362
|
contrast(color, ratio) {
|
|
321
363
|
return doWith(contrast_rgb, color, ratio);
|
|
322
364
|
},
|
|
365
|
+
rgb2h,
|
|
366
|
+
rgb4h,
|
|
367
|
+
rgb4s,
|
|
323
368
|
rgb2v,
|
|
324
369
|
rgb4v,
|
|
325
370
|
rgb2s,
|
package/coms/zimoli/colorpad.js
CHANGED
|
@@ -4,9 +4,7 @@ var xy2c = function (a, x, y) {
|
|
|
4
4
|
return a * x * (1 - y) + (.5 + x / 2) * y * 255;
|
|
5
5
|
};
|
|
6
6
|
var z2rgb = function (z) {
|
|
7
|
-
|
|
8
|
-
var [r, g, b] = color.parse(c);
|
|
9
|
-
return color.rgb4s(r, g, b, 1);
|
|
7
|
+
return color.rgb4h(255, 0, 0, z * 360);
|
|
10
8
|
};
|
|
11
9
|
var z2c = function (z) {
|
|
12
10
|
return color.stringify(z2rgb(z));
|
|
@@ -87,7 +85,7 @@ var c2xy = function (c1, c2) {
|
|
|
87
85
|
var getCanvas = function (e) {
|
|
88
86
|
return e.getElementsByTagName('canvas')[0];
|
|
89
87
|
};
|
|
90
|
-
var sample = "#
|
|
88
|
+
var sample = "#ff0000";
|
|
91
89
|
var buildpad = function (pad, c = sample) {
|
|
92
90
|
var canvas = getCanvas(pad);
|
|
93
91
|
canvas.width = 256;
|
package/coms/zimoli/cross.js
CHANGED
|
@@ -323,7 +323,7 @@ function addDirect(a) {
|
|
|
323
323
|
if (typeof a === 'string' || a instanceof RegExp) cors_hosts.push(a);
|
|
324
324
|
}
|
|
325
325
|
function notCross(domain) {
|
|
326
|
-
if (location_host === domain.slice(0, location_host.length)) return true;
|
|
326
|
+
if (location_host === domain.slice(0, location_host.length) || !/^https?\:\/\/|^s?\/\//.test(domain)) return true;
|
|
327
327
|
for (var cx = 0, dx = cors_hosts.length; cx < dx; cx++) {
|
|
328
328
|
var host = cors_hosts[cx];
|
|
329
329
|
if (host instanceof RegExp) {
|
package/coms/zimoli/css.js
CHANGED
|
@@ -166,6 +166,7 @@ function cssTargetStyleSheet(stylesheet, innerCss) {
|
|
|
166
166
|
* @param {|string} oValue
|
|
167
167
|
*/
|
|
168
168
|
var css = function (target, oStyle, oValue) {
|
|
169
|
+
if (!oStyle) return;
|
|
169
170
|
if (isElement(target)) {
|
|
170
171
|
if (/^style$/i.test(target.tagName)) {
|
|
171
172
|
cssTargetStyleSheet(target, oStyle, oValue);
|
package/coms/zimoli/data.js
CHANGED
|
@@ -269,9 +269,9 @@ function parseConfig(api) {
|
|
|
269
269
|
});
|
|
270
270
|
return '';
|
|
271
271
|
});
|
|
272
|
-
url.replace(/[\?\#][\s\S]*$/, '').replace(
|
|
272
|
+
url.replace(/[\?\#][\s\S]*$/, '').replace(/([\:\\]\:|\:\w+)/g, function (p) {
|
|
273
273
|
p = p.slice(1);
|
|
274
|
-
if (!required[p]) {
|
|
274
|
+
if (!required[p] && p !== ':') {
|
|
275
275
|
required.push(p);
|
|
276
276
|
required[p] = p;
|
|
277
277
|
}
|
|
@@ -310,7 +310,11 @@ var parseData = function (sourceText) {
|
|
|
310
310
|
sourceText = sourceText.replace(/^[^\(]+\(([\s\S]*)\)[^\)]*$/, "$1");
|
|
311
311
|
}
|
|
312
312
|
try {
|
|
313
|
-
|
|
313
|
+
if (/^[\[\{][\d\:,]+[\}\]],|^(Infinity|''|NaN|\d+|)$|^\/[\s\S]*?\/\w*$/.test(sourceText)) {
|
|
314
|
+
sourceText = JSAM.parse(sourceText);
|
|
315
|
+
} else {
|
|
316
|
+
sourceText = parseYML(sourceText);
|
|
317
|
+
}
|
|
314
318
|
} catch (e) {
|
|
315
319
|
throw "数据无法解析";
|
|
316
320
|
}
|
|
@@ -495,8 +499,9 @@ var privates = {
|
|
|
495
499
|
var coinmethod = method.slice(0, spliterIndex).toLowerCase();
|
|
496
500
|
var realmethod = coinmethod.replace(/\W+$/g, '');
|
|
497
501
|
var rest = [];
|
|
498
|
-
var uri = url.replace(/#[\s\S]*$/, "").replace(
|
|
502
|
+
var uri = url.replace(/#[\s\S]*$/, "").replace(/[\\\:]\:|\:[a-z\_][\w]*/gi, function (d) {
|
|
499
503
|
d = d.slice(1);
|
|
504
|
+
if (d === ":") return d;
|
|
500
505
|
rest.push(d);
|
|
501
506
|
return seekResponse(params, d) || '';
|
|
502
507
|
});
|
|
@@ -538,7 +543,8 @@ var privates = {
|
|
|
538
543
|
ok(e.response || e.responseText);
|
|
539
544
|
}).error(xhr => {
|
|
540
545
|
try {
|
|
541
|
-
|
|
546
|
+
var e = getErrorMessage(parseData(xhr.response || xhr.responseText || xhr.statusText || xhr.status));
|
|
547
|
+
oh({ status: xhr.status, error: e })
|
|
542
548
|
} catch (error) {
|
|
543
549
|
oh(error);
|
|
544
550
|
}
|
|
@@ -607,8 +613,7 @@ function responseCrash(e, data) {
|
|
|
607
613
|
} else {
|
|
608
614
|
data.error = e;
|
|
609
615
|
}
|
|
610
|
-
error_report(data.error_message, 'error');
|
|
611
|
-
|
|
616
|
+
error_report(data.error_message, e.status < 500 ? 'warn' : 'error');
|
|
612
617
|
}
|
|
613
618
|
|
|
614
619
|
var data = {
|
|
@@ -829,7 +834,6 @@ var data = {
|
|
|
829
834
|
this.responseLoading(instance);
|
|
830
835
|
var params = privates.pack(sid, params1);
|
|
831
836
|
if (!privates.validApi(api, params)) throw aborted;
|
|
832
|
-
|
|
833
837
|
var { method, uri, params, selector } = privates.prepare(api.method, api.url, params);
|
|
834
838
|
var promise = new Promise(function (ok, oh) {
|
|
835
839
|
var headers = api.headers;
|
|
@@ -850,7 +854,6 @@ var data = {
|
|
|
850
854
|
}
|
|
851
855
|
});
|
|
852
856
|
}).then(function (response) {
|
|
853
|
-
|
|
854
857
|
return transpile(seekResponse(parseData(response), selector), api.transpile, api.root);
|
|
855
858
|
});
|
|
856
859
|
return promise;
|
|
@@ -914,6 +917,10 @@ var data = {
|
|
|
914
917
|
localStorage.setItem(sourceDataId, JSAM.stringify(dataSourceMap));
|
|
915
918
|
}
|
|
916
919
|
},
|
|
920
|
+
getSource(sourceid) {
|
|
921
|
+
if (sourceid) return dataSourceMap[sourceid];
|
|
922
|
+
return dataSourceMap;
|
|
923
|
+
},
|
|
917
924
|
clearSource() {
|
|
918
925
|
localStorage.removeItem(sourceDataId);
|
|
919
926
|
sessionStorage.removeItem(sourceDataId);
|
package/coms/zimoli/drag.js
CHANGED
|
@@ -46,6 +46,8 @@ function drag(target, initialEvent, preventOverflow, isMovingSource) {
|
|
|
46
46
|
var [target_left, target_top] = getOffset(target);
|
|
47
47
|
if (abs(target_left - event.screenX - saved_delta.x) < MOVELOCK_DELTA && abs(target_top - event.screenY - saved_delta.y) < MOVELOCK_DELTA) return;
|
|
48
48
|
saved_delta.ing = true;
|
|
49
|
+
drag.target = target;
|
|
50
|
+
dispatch("dragstart", target);
|
|
49
51
|
if (isElement(target) && !/absolute|fixed/.test(getComputedStyle(target).position)) {
|
|
50
52
|
clone = toCloneTarget(target, isMovingSource);
|
|
51
53
|
appendChild(document.body, clone);
|
|
@@ -62,7 +64,6 @@ function drag(target, initialEvent, preventOverflow, isMovingSource) {
|
|
|
62
64
|
clone.style.zIndex = zIndex();
|
|
63
65
|
extraClones.map(e => e.style.zIndex = clone.style.zIndex);
|
|
64
66
|
}
|
|
65
|
-
dispatch("dragstart", target);
|
|
66
67
|
}
|
|
67
68
|
drag.target = clone;
|
|
68
69
|
var offsetLeft = saved_delta.x + event.screenX;
|
package/coms/zimoli/encode62.js
CHANGED
|
@@ -5,6 +5,19 @@ var encode62 = {
|
|
|
5
5
|
src,
|
|
6
6
|
map,
|
|
7
7
|
time_delta: parseInt("zzzzz", 36),
|
|
8
|
+
geta(string) {
|
|
9
|
+
string = String(string)
|
|
10
|
+
string = string.length + string + "2017-08-19";
|
|
11
|
+
var buff = src.split('');
|
|
12
|
+
for (var cx = 0, dx = buff.length + src.length, sl = string.length, cl = buff.length; cx < dx; cx++) {
|
|
13
|
+
var s1 = string.charCodeAt(cx % sl) % cl;
|
|
14
|
+
var s2 = cx % cl;
|
|
15
|
+
var btemp = buff[s1];
|
|
16
|
+
buff[s1] = buff[s2];
|
|
17
|
+
buff[s2] = btemp;
|
|
18
|
+
}
|
|
19
|
+
return buff.join('');
|
|
20
|
+
},
|
|
8
21
|
timedecode(string) {
|
|
9
22
|
var { time_delta } = this;
|
|
10
23
|
var time_rest = string.slice(string.length - time_delta.toString(36).length, string.length);
|
package/coms/zimoli/field.html
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
<div class="head">
|
|
2
2
|
<span ng-bind=field.name></span>
|
|
3
|
+
<span class="required" ng-if="field.required">*</span>
|
|
3
4
|
</div>
|
|
4
5
|
<div class="body">
|
|
5
6
|
<model _data=data _field=field></model>
|
|
7
|
+
<span class="error" ng-bind="error"></span>
|
|
6
8
|
</div>
|
|
7
9
|
<div class="foot" ng-if="field.msg">
|
|
8
10
|
<span ng-bind=field.msg></span>
|
package/coms/zimoli/field.js
CHANGED
|
@@ -1,19 +1,43 @@
|
|
|
1
1
|
function main(elem) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
elem = option.apply(null, arguments);
|
|
3
|
+
var scope = {};
|
|
4
|
+
care(elem, function (p) {
|
|
5
|
+
if (elem.childNodes.length) return;
|
|
6
|
+
var [f, data] = p;
|
|
7
|
+
elem.innerHTML = field;
|
|
8
|
+
render(elem, scope = {
|
|
9
|
+
model,
|
|
10
|
+
data,
|
|
11
|
+
error: null,
|
|
12
|
+
field: f
|
|
13
|
+
});
|
|
14
|
+
elem.oldValue = data[f.key];
|
|
15
|
+
elem.setAttribute("field", f.key);
|
|
16
|
+
}, false);
|
|
17
|
+
elem.setAttribute("field", '');
|
|
18
|
+
elem.renders = [function () {
|
|
19
|
+
if (!this.src) return;
|
|
20
|
+
var [f, data] = this.src;
|
|
21
|
+
if (!f || !data) return;
|
|
22
|
+
var v = data[f.key];
|
|
23
|
+
if (!this.checked) if (v === this.oldValue || isEmpty(this.oldValue) && isEmpty(v)) return;
|
|
24
|
+
this.checked = false;
|
|
25
|
+
this.setAttribute("dirty", '');
|
|
26
|
+
var error = valid(f, data);
|
|
27
|
+
if (error) {
|
|
28
|
+
this.setAttribute("error", error);
|
|
29
|
+
switch (error) {
|
|
30
|
+
case "empty":
|
|
31
|
+
scope.error = `${f.name}是必填字段!`;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.removeAttribute('error');
|
|
37
|
+
scope.error = null;
|
|
38
|
+
}
|
|
39
|
+
this.oldValue = data[f.key];
|
|
40
|
+
}]
|
|
41
|
+
elem.removeAttribute("tabindex");
|
|
42
|
+
return elem;
|
|
19
43
|
}
|
package/coms/zimoli/field.less
CHANGED
|
@@ -32,4 +32,23 @@
|
|
|
32
32
|
|
|
33
33
|
.input {
|
|
34
34
|
width: 100%;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.required {
|
|
38
|
+
color: #c24;
|
|
39
|
+
display: inline-block;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&.error,
|
|
43
|
+
&[error] {
|
|
44
|
+
background: #f322;
|
|
45
|
+
|
|
46
|
+
model>* {
|
|
47
|
+
background: #f322;
|
|
48
|
+
border-color: #f32;
|
|
49
|
+
outline: 1px solid #f32;
|
|
50
|
+
}
|
|
51
|
+
.error{
|
|
52
|
+
color:#c32;
|
|
53
|
+
}
|
|
35
54
|
}
|
package/coms/zimoli/form.js
CHANGED
|
@@ -2,5 +2,13 @@ function form(elem) {
|
|
|
2
2
|
if (!elem) {
|
|
3
3
|
elem = document.createElement("form");
|
|
4
4
|
}
|
|
5
|
+
if (/form/i.test(elem.tagName)) {
|
|
6
|
+
on("submit")(elem, function (event) {
|
|
7
|
+
event.preventDefault();
|
|
8
|
+
var fields = elem.querySelectorAll(".field");
|
|
9
|
+
for (var f of fields) f.checked = true;
|
|
10
|
+
render.refresh();
|
|
11
|
+
});
|
|
12
|
+
}
|
|
5
13
|
return elem;
|
|
6
14
|
}
|
package/coms/zimoli/gallery.js
CHANGED
|
@@ -121,18 +121,8 @@ function main() {
|
|
|
121
121
|
minWidth = arg;
|
|
122
122
|
}
|
|
123
123
|
});
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
var parsedSrc = render.parseRepeat(src);
|
|
127
|
-
if (!parsedSrc) {
|
|
128
|
-
element.setAttribute("ng-src", src);
|
|
129
|
-
element.removeAttribute("src");
|
|
130
|
-
var generator = getGenerator(element);
|
|
131
|
-
} else {
|
|
132
|
-
element.setAttribute("ng-src", parsedSrc.srcName);
|
|
133
|
-
element.removeAttribute("src");
|
|
134
|
-
var generator = getGenerator(element, parsedSrc);
|
|
135
|
-
}
|
|
124
|
+
if ("$src" in element) {
|
|
125
|
+
var generator = getGenerator(element);
|
|
136
126
|
care(element, function () {
|
|
137
127
|
var index = element.index();
|
|
138
128
|
element.clean();
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
var _slider = createElement(div);
|
|
3
|
-
var
|
|
3
|
+
var empty = function (index, item) {
|
|
4
|
+
if (!item) return;
|
|
5
|
+
return document.createElement('empty');
|
|
6
|
+
};
|
|
7
|
+
var getGenerator = function (container) {
|
|
4
8
|
if (!container) return;
|
|
9
|
+
if (!container.childNodes.length) return container.$generator || empty;
|
|
5
10
|
var template = document.createElement("div");
|
|
6
11
|
var templates = [].concat.apply([], container.childNodes).filter(a => {
|
|
7
12
|
if (a.hasAttribute('insert')) {
|
|
@@ -20,26 +25,27 @@ var getGenerator = function (container, parsedSrc) {
|
|
|
20
25
|
appendChild(template, templates);
|
|
21
26
|
container.insertBefore = _slider.insertBefore;
|
|
22
27
|
container.appendChild = _slider.appendChild;
|
|
23
|
-
|
|
28
|
+
var scopes = container.$parentScopes.concat(container.$scope);
|
|
29
|
+
return container.$generator = function (index, com) {
|
|
24
30
|
if (!com) {
|
|
25
31
|
if (!container.src || index >= container.src.length) return;
|
|
26
32
|
com = container.src[index];
|
|
27
33
|
}
|
|
28
34
|
if (!com) return;
|
|
29
|
-
var template1 = template.cloneNode();
|
|
30
|
-
template1.innerHTML = template.innerHTML;
|
|
35
|
+
var template1 = template.cloneNode(true);
|
|
31
36
|
if (!template1.childNodes.length) return template1;
|
|
32
37
|
var item = template1.childNodes[0];
|
|
33
38
|
item.with = [].concat.apply([], template1.childNodes).slice(1);
|
|
39
|
+
var parsedSrc = container.$src;
|
|
34
40
|
if (parsedSrc) {
|
|
35
41
|
var { keyName, itemName, indexName } = parsedSrc;
|
|
36
|
-
var newScope =
|
|
42
|
+
var newScope = {
|
|
37
43
|
[keyName || '$key']: index,
|
|
38
44
|
[itemName || '$item']: com,
|
|
39
45
|
[indexName || '$index']: index
|
|
40
|
-
}
|
|
41
|
-
var newItem = render(item, newScope);
|
|
42
|
-
newItem.with = render(item.with, newScope);
|
|
46
|
+
};
|
|
47
|
+
var newItem = render(item, newScope, scopes);
|
|
48
|
+
if (item.with.length) newItem.with = render(item.with, newScope, scopes);
|
|
43
49
|
} else {
|
|
44
50
|
var newScope = container.src[index];
|
|
45
51
|
if (!isObject(newScope)) newScope = {
|
|
@@ -59,8 +65,8 @@ var getGenerator = function (container, parsedSrc) {
|
|
|
59
65
|
return this.$item;
|
|
60
66
|
}
|
|
61
67
|
}
|
|
62
|
-
var newItem = render(item, newScope,
|
|
63
|
-
newItem.with = render(newItem.with = item.with, newScope,
|
|
68
|
+
var newItem = render(item, newScope, scopes);
|
|
69
|
+
newItem.with = render(newItem.with = item.with, newScope, scopes);
|
|
64
70
|
}
|
|
65
71
|
return newItem;
|
|
66
72
|
};
|
|
@@ -29,15 +29,21 @@ function getTreeFromData(array) {
|
|
|
29
29
|
var tab = 0;
|
|
30
30
|
var run = function (item, parent) {
|
|
31
31
|
item.tab = tab;
|
|
32
|
-
var total = 0;
|
|
32
|
+
var count = 0, total = 0;
|
|
33
33
|
item.parent = parent;
|
|
34
34
|
item.root = root;
|
|
35
35
|
if (item.length) {
|
|
36
36
|
tab++;
|
|
37
|
-
|
|
37
|
+
for (var cx = 0, dx = item.length; cx < dx; cx++) {
|
|
38
|
+
var i = item[cx];
|
|
39
|
+
run(i, parent);
|
|
40
|
+
count += i.count || 1;
|
|
41
|
+
total += i.total;
|
|
42
|
+
}
|
|
38
43
|
tab--;
|
|
39
44
|
}
|
|
40
|
-
|
|
45
|
+
item.total = total + item.length;
|
|
46
|
+
return item.count = count;
|
|
41
47
|
};
|
|
42
48
|
run(root);
|
|
43
49
|
return root;
|