efront 4.0.40 → 4.0.45

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 (36) hide show
  1. package/apps/pivot/log/count.js +2 -2
  2. package/coms/basic/Table.js +4 -2
  3. package/coms/basic/analyse_test.js +2 -1
  4. package/coms/basic/arrayEqual.js +8 -0
  5. package/coms/basic/decodeGBK.js +14 -1
  6. package/coms/{zimoli → basic}/deepEqual.js +0 -17
  7. package/coms/basic/encodeUTF8.js +1 -0
  8. package/coms/basic/isSame.js +2 -1
  9. package/coms/basic/refilm_decode.js +3 -2
  10. package/coms/basic/refilm_decode_test.js +2 -0
  11. package/coms/basic/shallowEqual.js +18 -0
  12. package/coms/basic/str2array.js +5 -0
  13. package/coms/compile/Javascript.js +31 -15
  14. package/coms/compile/Javascript_test.js +3 -0
  15. package/coms/compile/Program.js +11 -7
  16. package/coms/compile/common.js +6 -8
  17. package/coms/compile/formatcode.js +7 -2
  18. package/coms/compile/patchlist.js +5 -0
  19. package/coms/compile/patchname.js +9 -0
  20. package/coms/compile/scanner2_test.js +13 -1
  21. package/coms/compile/unstruct_test.js +4 -2
  22. package/coms/pivot/pedit.js +15 -6
  23. package/coms/reptile/detectWithExtension.js +36 -0
  24. package/coms/zimoli/data.js +1 -1
  25. package/coms/zimoli/getChanges.js +2 -2
  26. package/coms/zimoli/render.js +2 -2
  27. package/coms/zimoli/select.js +2 -2
  28. package/coms/zimoli/table.html +2 -2
  29. package/coms/zimoli/table.js +1 -1
  30. package/coms/zimoli/table.less +8 -0
  31. package/docs//345/267/245/345/205/267//345/255/227/347/254/246/351/233/206/346/243/200/346/237/245.xht +72 -14
  32. package/package.json +1 -1
  33. package/public/efront.js +1 -1
  34. package/readme-en.md +10 -4
  35. package/readme.md +7 -4
  36. /package/coms/{zimoli → basic}/deepEqual_test.js +0 -0
@@ -527,7 +527,7 @@ function table(elem) {
527
527
  render(this, $scope, this.$parentScopes.concat(this.$scope));
528
528
  $scope.data = Table.from(fields, await data);
529
529
  $scope.data.callback = function () {
530
- if ($scope.tbody0) $scope.tbody0.go($scope.tbody0.index());
530
+ render.digest();
531
531
  };
532
532
  })
533
533
  autodragchildren(
@@ -142,6 +142,7 @@ thead {
142
142
  position: relative;
143
143
  color: #fff;
144
144
  background-color: #395268;
145
+ clear: both;
145
146
  }
146
147
  }
147
148
  }
@@ -188,6 +189,7 @@ thead {
188
189
  z-index: 1;
189
190
  background: #999;
190
191
  color: #fff;
192
+ clear: both;
191
193
  }
192
194
  }
193
195
 
@@ -212,4 +214,10 @@ thead {
212
214
  margin-right: 10px;
213
215
  vertical-align: middle;
214
216
  display: inline-block;
217
+ }
218
+
219
+ [type=money],
220
+ [type=number],
221
+ [type=price] {
222
+ float: right;
215
223
  }
@@ -10,9 +10,16 @@
10
10
  display: inline-block;
11
11
  position: relative;
12
12
  vertical-align: top;
13
+ padding-bottom: 44px;
14
+ }
15
+
16
+ field:nth-child(n+2) [textarea] {
17
+ border: 1px solid #999;
18
+ outline: none;
13
19
  }
14
20
 
15
21
  label {
22
+ margin-top: -44px;
16
23
  padding: 0 20px;
17
24
  }
18
25
 
@@ -25,7 +32,7 @@
25
32
 
26
33
  [textarea] {
27
34
  width: 100%;
28
- height: 200px;
35
+ height: 100%;
29
36
  display: block;
30
37
  border: 1.2px solid;
31
38
  overflow-x: hidden;
@@ -50,25 +57,46 @@
50
57
 
51
58
  button {
52
59
  padding: 0 20px;
60
+ margin-left: 20px;
53
61
  }
54
62
  </style>
55
63
  <h2>${i18n`字符集检查工具`}</h2>
56
- <div style="text-align: right;padding: 0 20px;">
57
- <button @click="check">${i18n`检查`}</button>
64
+ <div style="text-align: right;padding: 0 20px;margin-top: -30px;">
65
+ <button @click="encode=utf8;check()">${i18n`检查utf8`}</button>
66
+ <button @click="encode=gbk;check()">${i18n`检查gbk`}</button>
58
67
  </div>
59
68
  <div>
60
69
  <field>
61
- <label>${i18n`要检查的字符集区间`}(unicode)</label>
70
+ <label>${i18n`要检查的字符集区间(双字节以内)`}</label>
62
71
  <padding>
63
72
  <div textarea contenteditable="true" -model="ranges"></div>
64
73
  </padding>
65
74
  </field>
66
75
  <field>
67
- <label>${i18n`当前浏览器支持的字符集区间`}(unicode)</label>
76
+ <label>${i18n`当前浏览器支持的字符集区间`}</label>
68
77
  <padding>
69
78
  <div textarea contenteditable="true" -model="result"></div>
70
79
  </padding>
71
80
  </field>
81
+ <field style="width: 100%;">
82
+ <label><span -bind="encode.name"></span>${i18n`编码`}</label>
83
+ <padding>
84
+ <div textarea contenteditable="true" -model="result8"></div>
85
+ </padding>
86
+ </field>
87
+ <field>
88
+ <label>${i18n`识别为unicode后的字符`}</label>
89
+ <padding>
90
+ <div textarea contenteditable="true" -model="resultu"></div>
91
+ </padding>
92
+ </field>
93
+ <field>
94
+ <label>${i18n`识别为gbk后的字符`}</label>
95
+ <padding>
96
+ <div textarea contenteditable="true" -model="resultk"></div>
97
+ </padding>
98
+ </field>
99
+
72
100
  </div>
73
101
  <script>
74
102
  var checkOne = function (one) {
@@ -95,9 +123,9 @@
95
123
  var str = hex.replace(/^[xu]/, '').replace(/^\{([\s\S]+)\}$/, '$1');
96
124
  return parseInt(str, 16);
97
125
  }
126
+ var reg = /\\(x[0-9a-f]{2}|u[0-9a-f]{4}|u\{[0-9a-f]+\})/ig;
98
127
  var check = async function () {
99
128
  var elem = alert(i18n`正在检查`, false);
100
- var reg = /\\(x[0-9a-f]{2}|u[0-9a-f]{4}|u\{[0-9a-f]+\})/ig;
101
129
  var dist0 = [];
102
130
  ranges.replace(/<\/?\w+\/?>/g, '').replace(new RegExp(`${reg.source}(?:-${reg.source})?|${/[\s\S]/.source}`, 'ig'), function (_, a, b) {
103
131
  dist0.push([_, a, b]);
@@ -142,16 +170,46 @@
142
170
  }
143
171
  dist.push(temp.join(''))
144
172
  }
145
- dist = dist.map((a, i) => {
146
- if (a.toUpperCase() === dist1[i][0].toUpperCase()) return a;
147
- dist1[i][0] = `<a>${dist1[i][0]}</a>`;
148
- return `<w>${a}</w>`;
149
- })
150
- elem.setText(i18n`检查完成`, 600);
173
+ var w = a => `<a>${a}</a>`;
174
+ var n = a => a;
175
+ var marks = dist.map((a, i) => a.toUpperCase() === dist1[i][0].toUpperCase() ? n : w);
176
+ result = dist.map((a, i) => {
177
+ if (marks[i] === n) return a;
178
+ dist1[i][0] = `<w>${dist1[i][0]}</w>`;
179
+ return `<a>${a}</a>`;
180
+ }).join('')
181
+ elem.setText(i18n`正在生成报告`);
151
182
  ranges = dist1.map(a => a[0]).join("");
152
- result = dist.join("");
183
+ var hex = a => a ? a < 0xf ? "0" + a.toString(16) : a.toString(16) : '';
184
+ var utf8 = [];
185
+ var gbk = [];
186
+ var unc = [];
187
+ dist.forEach((a, i) => {
188
+ var [start, end = start] = a.split('-');
189
+ var m = marks[i];
190
+ for (var cx = fromHex(start.slice(1)), dx = fromHex(end.slice(1)); cx <= dx; cx++) {
191
+ var u = encode.do(String.fromCharCode(cx));
192
+ utf8.push(m(u.map(hex).join('')));
193
+ gbk.push(m(decodeGBK(u)));
194
+ try {
195
+ unc.push(m(decodeUTF8(u)));
196
+ } catch (e) { }
197
+ }
198
+ });
199
+ result8 = utf8.join(" ").toUpperCase();
200
+ resultu = unc.join(' ');
201
+ resultk = gbk.join(' ');
202
+ elem.setText(i18n`检查完成`, 600);
153
203
  }
154
- var ranges = /\xAA\xB5\xBA\xC0-\xD5\xD8-\xF2\xF8-\u02af\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052f\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA/.source
204
+ var utf8 = { name: 'utf8', do: encodeUTF8 };
205
+ var gbk = { name: 'gbk', do: decodeGBK.codeFor };
206
+ var encode = {};
207
+ var target = 'utf8';
208
+ var results = '';
209
+ var result8 = '';
210
+ var resultk = '';
211
+ var resultu = '';
212
+ var ranges = "我要这铁棒有何用" + /\xAA\xB5\xBA\xC0-\xD5\xD8-\xF2\xF8-\u02af\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052f\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA/.source
155
213
  var result = '';
156
214
 
157
215
  </script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "4.0.40",
3
+ "version": "4.0.45",
4
4
  "description": "简化前端开发,优化web性能",
5
5
  "main": "public/efront.js",
6
6
  "directories": {