efront 4.21.3 → 4.22.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.
Files changed (96) hide show
  1. package/#/345/233/275/351/231/205/345/214/226.yml +117 -66
  2. package/apps/blank/index.html +1 -1
  3. package/apps/index.jsp +76 -27
  4. package/apps/pay/alipay-query.jsp +1 -1
  5. package/apps/pay/alipay.jsp +1 -1
  6. package/apps/pivot/auth/login.js +2 -2
  7. package/apps/pivot/cert/main.xht +18 -5
  8. package/apps/pivot/db/act.xht +53 -0
  9. package/apps/pivot/db/config.xht +56 -16
  10. package/apps/pivot/home/welcome.html +12 -13
  11. package/apps/pivot/home/welcome.js +6 -6
  12. package/apps/pivot/home/welcome.less +12 -3
  13. package/apps/pivot/link/room.js +1 -1
  14. package/apps/pivot/main.js +3 -2
  15. package/apps/pivot/task/invoke.js +3 -3
  16. package/apps/pivot/task/rsync.js +2 -2
  17. package/apps/pivot/wow/root.js +8 -8
  18. package/coms/basic/#loader.js +9 -8
  19. package/coms/basic/Item.js +2 -2
  20. package/coms/basic/Tree.js +14 -2
  21. package/coms/basic/crc.js +5 -1
  22. package/coms/basic/cross_.js +2 -2
  23. package/coms/basic/decode62S.js +44 -0
  24. package/coms/basic/encode62S.js +40 -0
  25. package/coms/basic/encode62S_test.js +18 -0
  26. package/coms/basic/enrich.js +6 -1
  27. package/coms/basic/parseNumber.js +12 -7
  28. package/coms/basic/percent.js +28 -0
  29. package/coms/basic/refilm.js +24 -5
  30. package/coms/basic/refilm_decode.js +46 -22
  31. package/coms/basic/refilm_decode_test.js +5 -0
  32. package/coms/basic/valid.js +4 -0
  33. package/coms/basic_/&Array.js +64 -49
  34. package/coms/basic_/&extends.js +9 -2
  35. package/coms/compile/Html_test.js +5 -0
  36. package/coms/compile/Javascript.js +13 -3
  37. package/coms/compile/Javascript_test.js +3 -0
  38. package/coms/compile/Program.js +119 -43
  39. package/coms/compile/audit.js +23 -1
  40. package/coms/compile/cloneNode.js +3 -1
  41. package/coms/compile/common.js +7 -1
  42. package/coms/compile/downLevel.js +21 -11
  43. package/coms/compile/downLevel_test.js +52 -14
  44. package/coms/compile/rescan.js +8 -2
  45. package/coms/compile/scanner2.js +53 -7
  46. package/coms/compile/translate.js +1 -1
  47. package/coms/compile/unstruct.js +9 -9
  48. package/coms/crypt/encode62.js +36 -6
  49. package/coms/crypt/encode62_test.js +8 -48
  50. package/coms/explorer/main.less +1 -5
  51. package/coms/frame/chat.js +2 -2
  52. package/coms/frame/left.html +5 -4
  53. package/coms/frame/left.js +1 -0
  54. package/coms/frame/left.less +5 -3
  55. package/coms/frame/payment.js +2 -2
  56. package/coms/pivot/acme2.js +7 -4
  57. package/coms/pivot/left-footer.xht +25 -0
  58. package/coms/pivot/pedit.js +3 -3
  59. package/coms/pivot/plist.js +2 -2
  60. package/coms/pivot/qrcode.xht +3 -0
  61. package/coms/zimoli/XMLHttpRequest.js +16 -13
  62. package/coms/zimoli/container.js +34 -34
  63. package/coms/zimoli/design.html +6 -13
  64. package/coms/zimoli/design.js +49 -13
  65. package/coms/zimoli/design.less +62 -25
  66. package/coms/zimoli/drag.js +8 -3
  67. package/coms/zimoli/encode62.js +40 -12
  68. package/coms/zimoli/lattice.js +0 -1
  69. package/coms/zimoli/list.js +0 -8
  70. package/coms/zimoli/menu.js +29 -5
  71. package/coms/zimoli/model.js +150 -195
  72. package/coms/zimoli/model.less +4 -8
  73. package/coms/zimoli/on.js +14 -12
  74. package/coms/zimoli/padding.less +1 -0
  75. package/coms/zimoli/progbar.xht +9 -8
  76. package/coms/zimoli/prompt.less +0 -3
  77. package/coms/zimoli/render.js +210 -125
  78. package/coms/zimoli/select.js +9 -4
  79. package/coms/zimoli/select.less +3 -14
  80. package/coms/zimoli/selectList.js +5 -1
  81. package/coms/zimoli/selectList.less +3 -0
  82. package/coms/zimoli/table.html +7 -7
  83. package/coms/zimoli/table.js +12 -9
  84. package/coms/zimoli/table.less +5 -0
  85. package/coms/zimoli/user.js +2 -2
  86. package/coms/zimoli/view.js +3 -4
  87. package/coms/zimoli/watch.js +3 -1
  88. package/coms/zimoli/zimoli.js +6 -2
  89. package/coms//350/214/250/350/217/260/tab.js +26 -2
  90. package/coms//350/214/250/350/217/260//346/240/207/347/255/276/345/214/226.js +1 -1
  91. package/coms//350/214/250/350/217/260//347/274/226/350/276/221/346/241/206.xht +183 -20
  92. package/docs//345/267/245/345/205/267//345/233/275/351/231/205/345/214/226.xht +5 -0
  93. package/package.json +1 -1
  94. package/public/efront.js +1 -1
  95. package/readme-en.md +3 -5
  96. package/readme.md +3 -4
@@ -1,12 +1,35 @@
1
1
  var field_Id = 0;
2
2
  function main(fields, types) {
3
- var page = form();
4
- page.innerHTML = design;
5
- var scope = render(page, {
3
+ var page = fields;
4
+ if (isElement(fields)) {
5
+ fields = [];
6
+ types = [
7
+ { name: '字符串', key: 'string' },
8
+ { name: '布尔值', key: 'boolean' },
9
+ { name: '列表', key: 'array' },
10
+ { name: '攻举', key: 'enum' },
11
+ { name: '对象', key: 'object' },
12
+ { name: '双精度数值', key: 'number' },
13
+ { name: "时间戳", key: "timestamp" }
14
+ ];
15
+ }
16
+ else {
17
+ page = form();
18
+ }
19
+ var avoid = [].concat(fields);
20
+ var defines = refilm`
21
+ /name/显示名 input ^${avoid}
22
+ */key/键名 input ^${avoid}
23
+ /type/选择类型 select ${types}
24
+ `;
25
+ var scope = {
6
26
  select,
7
27
  fields,
8
- list,
28
+ field,
29
+ defines,
30
+ dlist: list,
9
31
  btn: button,
32
+ drop,
10
33
  padding,
11
34
  focus(a) {
12
35
  addClass(a, 'focus');
@@ -15,23 +38,36 @@ function main(fields, types) {
15
38
  removeClass(a, 'focus');
16
39
  },
17
40
  add() {
18
- this.fields.push({
41
+ var field = {
19
42
  id: ++field_Id
20
- });
43
+ }
44
+ this.fields.push(field);
45
+ avoid.push(field);
21
46
  setTimeout(() => {
22
47
  fieldsContainer.go(this.fields.length);
23
48
  })
24
49
  },
25
50
  remove(field) {
26
- var fields = this.fields;
27
- for (var cx = fields.length - 1; cx >= 0; cx--) {
28
- if (fields[cx] === field) {
29
- fields.splice(cx, 1);
30
- }
31
- }
51
+ removeFromList(this.fields, field);
52
+ removeFromList(avoid, field);
32
53
  },
33
54
  types
34
- }).$scope;
55
+ };
56
+ care(page, function (fields1) {
57
+ if (isArray(fields1[0])) {
58
+ [fields1, types] = fields1;
59
+ }
60
+ else {
61
+ fields1 = fields1;
62
+ }
63
+ field_Id = fields1.length;
64
+ fields = scope.fields = fields1;
65
+ avoid.splice(0, avoid.length, ...fields1);
66
+ defines[2].options = types;
67
+ });
68
+ page.innerHTML = design;
69
+ render(page, scope);
70
+
35
71
  var [options, fieldsContainer] = page.children;
36
72
  // vbox(fieldsContainer);
37
73
  autodragchildren(fieldsContainer, fieldsContainer, function (src, dst, dst1) {
@@ -1,6 +1,10 @@
1
1
  & {
2
- padding: 16px 0;
3
2
  position: relative;
3
+ width: 412px;
4
+ display: block;
5
+ margin: 0 auto;
6
+ height: 260px;
7
+ padding-top: 30px;
4
8
  }
5
9
 
6
10
 
@@ -10,7 +14,23 @@
10
14
  >.options {
11
15
  text-align: right;
12
16
  padding: 0 16px;
13
- width: 412px;
17
+ height: 30px;
18
+ line-height: 30px;
19
+ width: 100%;
20
+ margin-top: -30px;
21
+
22
+ >btn {
23
+ width: auto;
24
+ padding: 0 16px;
25
+ height: 28px;
26
+ line-height: 28px;
27
+ border-radius: 0 0 0 12px;
28
+ }
29
+
30
+ >btn:nth-last-child(n+2) {
31
+ padding-right: 32px;
32
+ margin-right: -16px;
33
+ }
14
34
  }
15
35
 
16
36
  .padding {
@@ -21,13 +41,21 @@
21
41
  .field-item {
22
42
  .index {
23
43
  position: absolute;
24
- font-size: 10px;
25
- margin-top: -12px;
44
+ cursor: grab;
45
+
46
+ &:active {
47
+ cursor: grabbing;
48
+ }
49
+
50
+ font-size: 12px;
51
+ margin-top: -13px;
26
52
  top: 0;
27
53
  left: 6px;
28
54
  padding: 0 14px;
29
55
  line-height: 1;
30
- background: #fff;
56
+ color: #fff;
57
+ border-radius: 8px 0 0 0;
58
+ background: #666;
31
59
  display: block;
32
60
  border: 1px solid;
33
61
  border-color: inherit;
@@ -35,7 +63,6 @@
35
63
  }
36
64
 
37
65
  border-radius: 3px;
38
- text-align: right;
39
66
  display: block;
40
67
  width: 390px;
41
68
  max-width: 100%;
@@ -49,44 +76,61 @@
49
76
 
50
77
  .index {
51
78
  border-color: inherit;
79
+ background: #39c;
52
80
  }
53
81
  }
54
82
 
55
- >input,
56
- >select,
57
- >btn {
83
+ >[field] {
84
+ vertical-align: top;
58
85
  position: relative;
86
+ padding: 0;
59
87
  width: auto;
60
- height: 28px;
61
88
  border: none;
62
89
  line-height: 28px;
63
90
  display: inline-block;
64
- vertical-align: middle;
65
91
  box-sizing: border-box;
66
92
  outline: none;
67
93
  appearance: none;
68
94
  }
69
95
 
70
- >input {
96
+ >[field=name] {
71
97
  border-radius: 3px 0 0 3px;
72
98
  padding-left: 6px;
73
- width: 130px;
99
+ width: 132px;
100
+ }
101
+
102
+ >[field=type] {
103
+ min-width: 120px;
104
+ }
105
+
106
+ >[field=key] {
107
+ width: 120px;
74
108
  }
75
109
 
76
- >select {
77
- width: 80px;
110
+ >drop {
111
+ line-height: 30px;
112
+ width: 30px;
113
+ text-align: center;
114
+ padding: 0;
115
+ display: none;
116
+ }
117
+
118
+ &:hover,
119
+ &:focus {
120
+ >drop {
121
+ display: block;
122
+ }
78
123
  }
79
124
 
80
125
  >btn {
81
126
  padding: 0 6px;
82
- border-radius: 0 3px 3px 0;
127
+ overflow: hidden;
83
128
  }
84
129
  }
85
130
 
86
131
  &>.fields {
87
- max-height: 372px;
88
132
  overflow: hidden;
89
- height: 260px;
133
+ height: 100%;
90
134
 
91
135
  >.focus {
92
136
  outline: 1px solid #39c;
@@ -98,11 +142,4 @@ i {
98
142
  font-style: normal;
99
143
  display: inline-block;
100
144
  margin-right: 6px;
101
- }
102
-
103
- .add {
104
- width: auto;
105
- padding: 0 16px;
106
- height: 28px;
107
- line-height: 28px;
108
145
  }
@@ -15,6 +15,11 @@ var getOffset = function (e) {
15
15
  if (isFinite(e.screenLeft)) return [e.screenLeft, e.screenTop];
16
16
  if (isFinite(e.screenX)) return [e.screenX, e.screenY];
17
17
  };
18
+
19
+ var getMouse = function (e) {
20
+ console.log(e)
21
+ return [e.clientX, e.clientY];
22
+ };
18
23
  var z;
19
24
  var addZIndex = function (clone) {
20
25
  if (clone.style) clone.style.zIndex = z + (+clone.style.zIndex || 0);
@@ -47,7 +52,7 @@ function drag(target, initialEvent, preventOverflow, isMovingSource) {
47
52
  if ((!target.hasAttribute || target.hasAttribute('draggable')) && target.draggable === false) return;
48
53
  initialEvent.preventDefault();
49
54
  var target_offset = getOffset(target);
50
- var saved_delta = { x: target_offset[0] - initialEvent.screenX, y: target_offset[1] - initialEvent.screenY };
55
+ var saved_delta = { x: target_offset[0] - initialEvent.clientX, y: target_offset[1] - initialEvent.clientY };
51
56
  var clone;
52
57
  if (target.style) {
53
58
  var saved_opacity = target.style.opacity;
@@ -87,8 +92,8 @@ function drag(target, initialEvent, preventOverflow, isMovingSource) {
87
92
  dispatch("dragstart", target);
88
93
  }
89
94
  event.moveLocked = true;
90
- var offsetLeft = saved_delta.x + event.screenX;
91
- var offsetTop = saved_delta.y + event.screenY;
95
+ var offsetLeft = saved_delta.x + event.clientX;
96
+ var offsetTop = saved_delta.y + event.clientY;
92
97
  var [c_left, c_top] = getOffset(clone);
93
98
  var cloneDeltaLeft = -c_left, cloneDeltaTop = -c_top;
94
99
  var [c_left, c_top] = move.call(clone, offsetLeft, offsetTop, preventOverflow);
@@ -5,6 +5,17 @@ var encode62 = {
5
5
  src,
6
6
  map,
7
7
  time_delta: parseInt("zzzzz", 36),
8
+ pack: 'efront-encode62s',
9
+ packdecode(string) {
10
+ if (!string) return string;
11
+ return this.timedecode(string, this.pack);
12
+ },
13
+ packencode(string) {
14
+ return this.timeencode(string, this.pack);
15
+ },
16
+ packupdate(string) {
17
+ return this.timeupdate(string, this.pack);
18
+ },
8
19
  geta(string) {
9
20
  string = String(string)
10
21
  string = string.length + string + "2017-08-19";
@@ -26,34 +37,51 @@ var encode62 = {
26
37
  string = this.encode(string, sign, offset).replace(/\.\.?/g, a => a === '.' ? "%" : ".");
27
38
  return decodeURIComponent(string);
28
39
  },
29
- timedecode(string) {
40
+ timedecode(string, pack) {
30
41
  var { time_delta } = this;
31
42
  var time_rest = string.slice(string.length - time_delta.toString(36).length, string.length);
32
43
  var time_start = parseInt((new Date() - parseInt(time_rest, 36)) / time_delta) * time_delta;
33
44
  var time_stamp = time_start + parseInt(time_rest, 36);
34
- return this.safedecode(string.slice(0, string.length - time_delta.toString(36).length), time_stamp.toString(36));
45
+ string = string.slice(0, string.length - time_delta.toString(36).length);
46
+ if (pack) {
47
+ string = this.decode62(string, time_stamp.toString(36) + pack);
48
+ var sign = string.slice(string.length - 7, string.length);
49
+ sign = parseInt(sign, 36);
50
+ sign -= 0x600000000 + (time_stamp & 0xffffffff);
51
+ string = string.slice(0, string.length - 7);
52
+ string = decode62S(string);
53
+ if (crc.string(time_stamp.toString(36) + pack + string) !== sign) throw new Error('数据校验不通过!');
54
+ return string;
55
+ }
56
+ return this.safedecode(string, time_stamp.toString(36));
35
57
  },
36
- timeencode(string) {
58
+ timeencode(string, pack) {
37
59
  var { time_delta } = this;
38
60
  var time_free = time_delta / 6 | 0;
39
- var time = +new Date;
40
- time = time - time % (time_delta >> 2);
41
- var time_stamp = time - time_free;
61
+ var time_stamp = +new Date() - time_free;
42
62
  var time_rest = time_stamp % time_delta;
43
63
  var time_rest_str = time_rest.toString(36);
44
64
  var time_delta_str = time_delta.toString(36);
45
- return this.safeencode(string, time_stamp.toString(36)) + repeat("0", time_delta_str.length - time_rest_str.length) + time_rest_str;
65
+ if (pack) {
66
+ var sign = crc.string(time_stamp.toString(36) + pack + string);
67
+ sign += 0x600000000 + (time_stamp & 0xffffffff);
68
+ string = encode62S(string) + sign.toString(36);
69
+ string = this.encode62(string, time_stamp.toString(36) + pack);
70
+ }
71
+ else {
72
+ string = this.safeencode(string, time_stamp.toString(36));
73
+ }
74
+ return string + repeat("0", time_delta_str.length - time_rest_str.length) + time_rest_str;
46
75
  },
47
- timeupdate(string) {
76
+ timeupdate(string, pack) {
48
77
  var { time_delta } = this;
49
78
  var time_rest = string.slice(string.length - time_delta.toString(36).length, string.length);
50
- var time = +new Date;
51
- var time_start = parseInt((time - parseInt(time_rest, 36)) / time_delta) * time_delta;
79
+ var time_start = parseInt((new Date() - parseInt(time_rest, 36)) / time_delta) * time_delta;
52
80
  var time_stamp = time_start + parseInt(time_rest, 36);
53
- if (time_stamp + (time_delta >> 1) > time) {
81
+ if (time_stamp + (time_delta >> 1) > +new Date()) {
54
82
  return string;
55
83
  } else {
56
- return this.timeencode(this.timedecode(string));
84
+ return this.timeencode(this.timedecode(string, pack), pack);
57
85
  }
58
86
  },
59
87
  encode(data, sign, offset = 0) {
@@ -80,7 +80,6 @@ function lattice(element, minWidth, _maxWidth, layers) {
80
80
  }
81
81
  });
82
82
  resizingList.set(_box, _box.resize);
83
- on('resize')(_box, _box.resize);
84
83
  return _box;
85
84
  }
86
85
  function main() {
@@ -9,14 +9,6 @@ function ylist(container, generator, $Y) {
9
9
  list.autoFix = true;
10
10
  var saved_itemIndex = 0;
11
11
  addClass(list, 'list-' + $Y.toLowerCase());
12
- if (!list.$renders) {
13
- list.$renders = [];
14
- }
15
- list.$renders.push(function () {
16
- var a = saved_itemIndex;
17
- saved_itemIndex = void 0;
18
- if (a !== void 0) scrollTo(a);
19
- });
20
12
  var getNodeTarget = function (node) {
21
13
  if (node.nodeType === 8 && node.$template) {
22
14
  var t = node.$template;
@@ -89,9 +89,11 @@ var getTreeNodes = function (elem) {
89
89
  [].forEach.call(elem.children, run);
90
90
  return nodes;
91
91
  };
92
-
92
+ var menusList = [];
93
+ var menusActived = data.getInstance('zimoli-actived');
93
94
  function main() {
94
95
  var [elem, mode] = arguments;
96
+ var istag = false;
95
97
  if (isElement(elem)) {
96
98
  // var os = /Samsung|Firefox|Chrome|MSIE|Safari/i.exec(navigator.userAgent);
97
99
  // if (os) {
@@ -111,13 +113,16 @@ function main() {
111
113
  || elem.hasAttribute('tools')
112
114
  || elem.hasAttribute('bar')
113
115
  ) mode = "toolbar";
116
+ else if (elem.hasAttribute('tag') || elem.hasAttribute('tagbar')) {
117
+ mode = 'tag';
118
+ }
114
119
  }
115
120
  if (!mode) {
116
- if (/^[xyhvtci]/i.test(elem.tagName)) {
121
+ if (/^[xyhvtcig]/i.test(elem.tagName)) {
117
122
  mode = elem.tagName.slice(0, 1);
118
123
  if (/^t$/i.test(mode)) mode = elem.tagName.slice(0, 2);
119
124
  }
120
- else if (/[xyhvci]$/i.test(elem.tagName)) {
125
+ else if (/[xyhvcig]$/i.test(elem.tagName)) {
121
126
  mode = elem.tagName.slice(elem.tagName.length - 1);
122
127
  }
123
128
  }
@@ -132,7 +137,7 @@ function main() {
132
137
  if (elem) {
133
138
  var generator = getGenerator(elem, 'menu-item');
134
139
  care(elem, function (src) {
135
- if (src) src = getTreeFromData(src);
140
+ if (src) src = getTreeFromData(src, selectedId);
136
141
  var hasIcon = src.hasIcon;
137
142
  elem.useIcon = hasIcon;
138
143
  elem.src = src;
@@ -157,6 +162,10 @@ function main() {
157
162
  case "toolbar":
158
163
  direction = 't';
159
164
  mode = "toolbar";
165
+ case "tag":
166
+ case "tagbar":
167
+ case "g":
168
+ istag = true;
160
169
  case "h":
161
170
  case "x":
162
171
  case "horizonal":
@@ -176,7 +185,7 @@ function main() {
176
185
  care(elem, function (src) {
177
186
  bindGlobalkey(elem, src.keymap);
178
187
  src0.splice(0, src0.length);
179
- var s = getTreeFromData(src);
188
+ var s = getTreeFromData(src, selectedId);
180
189
  if (s.actived) {
181
190
  elem.selected = s.actived;
182
191
  }
@@ -207,6 +216,21 @@ function main() {
207
216
  if (!elem.hasAttribute('mode')) elem.setAttribute('mode', mode);
208
217
  if (!elem.hasAttribute(mode)) elem.setAttribute(mode, '');
209
218
  elem.target = document.body;
219
+ var selectedId = null;
220
+ if (istag) {
221
+ on("remove")(elem, function () {
222
+ removeFromList(menusList, elem);
223
+ });
224
+ on('append')(elem, function () {
225
+ selectedId = menusActived[menusList.length] || 1;
226
+ menusList.push(elem);
227
+ });
228
+ on('actived')(elem, function () {
229
+ var i = menusList.indexOf(elem) + 1;
230
+ menusList.splice(i, menusList.length - i);
231
+ data.setInstance('zimoli-actived', menusList.map(e => e.selected?.id));
232
+ });
233
+ }
210
234
  return elem;
211
235
 
212
236
  }