efront 4.19.2 → 4.19.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.
- package/#/345/233/275/351/231/205/345/214/226.yml +15 -0
- package/apps/pivot/api.yml +1 -0
- package/apps/pivot/db/edit.xht +56 -24
- package/coms/basic/data.js +15 -15
- package/coms/zimoli/confirm.js +1 -1
- package/coms/zimoli/css.js +7 -1
- package/coms/zimoli/popup.js +5 -5
- package/coms/zimoli/prompt.js +1 -1
- package/coms/zimoli/resize.js +1 -1
- package/coms/zimoli/zimoli.js +1 -0
- package/coms//350/214/250/350/217/260//346/240/207/347/255/276/345/214/226.js +1 -1
- package/package.json +1 -1
- package/public/efront.js +1 -1
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
- zh-CN: 数据标识不能有“.”符号
|
|
2
|
+
en: "Data identification cannot have a '.' symbol"
|
|
3
|
+
|
|
4
|
+
- zh-CN: 数据不存在!
|
|
5
|
+
en: The data does not exist!
|
|
6
|
+
|
|
7
|
+
- zh-CN: 数据不存在
|
|
8
|
+
en: Data does not exist
|
|
9
|
+
|
|
10
|
+
- zh-CN: 不支持数组格式的数据
|
|
11
|
+
en: Data in array format is not supported
|
|
12
|
+
|
|
13
|
+
- zh-CN: 缺少密码!
|
|
14
|
+
en: Missing password!
|
|
15
|
+
|
|
1
16
|
- zh-CN: 数据标识不能是纯数字
|
|
2
17
|
en: The data identifier cannot be a pure number
|
|
3
18
|
|
package/apps/pivot/api.yml
CHANGED
package/apps/pivot/db/edit.xht
CHANGED
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
</div>
|
|
40
40
|
|
|
41
41
|
<lattice body -src="m in items">
|
|
42
|
-
<padding item>
|
|
43
|
-
<drop @click="rm(m)"></drop>
|
|
42
|
+
<padding item @click="modify(m)">
|
|
43
|
+
<drop @click.stop="rm(m)"></drop>
|
|
44
44
|
<div m.id?></div>
|
|
45
45
|
<div m.name?></div>
|
|
46
46
|
</padding>
|
|
@@ -49,20 +49,64 @@
|
|
|
49
49
|
var [db] = arguments;
|
|
50
50
|
var a = button;
|
|
51
51
|
var items = null;
|
|
52
|
-
var load = function (
|
|
52
|
+
var load = function () {
|
|
53
53
|
items = data.from('dbfind', { dbid: db.id, size: 60 });
|
|
54
54
|
return items;
|
|
55
55
|
};
|
|
56
56
|
var rm = async function (m) {
|
|
57
|
-
var
|
|
58
|
-
|
|
57
|
+
var options = [i18n`确定`, i18n`取消`];
|
|
58
|
+
var res = await confirm(i18n`确定要删除标识为“${`<span style=color:red >${m.id}</span>`
|
|
59
|
+
}”的${db.name}“${`<span style='color:red'>${m.name}</span>`
|
|
60
|
+
}”吗?`, options);
|
|
61
|
+
if (res !== options[0]) return;
|
|
59
62
|
await data.from('dadel', { dbid: db.id, id: m.id });
|
|
60
|
-
|
|
63
|
+
await load();
|
|
61
64
|
};
|
|
62
|
-
var
|
|
65
|
+
var upload = async function (actionId, d) {
|
|
66
|
+
if (Array.isArray(d)) return alert(i18n`不支持数组格式的数据`);
|
|
67
|
+
if (!isObject(d)) return;
|
|
68
|
+
if (db.id === "用户") {
|
|
69
|
+
if (!d.id && !d.password) {
|
|
70
|
+
return alert(i18n`缺少密码!`);
|
|
71
|
+
}
|
|
72
|
+
if (d.password) {
|
|
73
|
+
delete d.password;
|
|
74
|
+
d.a = encode62.geta(d.password);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
await data.from(actionId, { dbid: db.id, ...d })
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
var modify = async function (m) {
|
|
63
81
|
var elem = document.createElement('jsoncode');
|
|
64
82
|
elem.type = 'json';
|
|
65
83
|
elem.contentEditable = true;
|
|
84
|
+
elem.setAttribute('nodrag', '');
|
|
85
|
+
茨菰$编辑框(elem);
|
|
86
|
+
elem.setValue(JSON.stringify(m, null, 4));
|
|
87
|
+
var changed = false;
|
|
88
|
+
await prompt(elem, '输入JSON格式的数据', function (text) {
|
|
89
|
+
try {
|
|
90
|
+
JSON.parse(text);
|
|
91
|
+
return true;
|
|
92
|
+
} catch (e) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}, {
|
|
96
|
+
wrap: true,
|
|
97
|
+
async submit(text) {
|
|
98
|
+
var d = JSON.parse(text);
|
|
99
|
+
await upload("daset", d);
|
|
100
|
+
changed = true;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
if (changed) load();
|
|
104
|
+
};
|
|
105
|
+
var add = async function () {
|
|
106
|
+
var elem = document.createElement('jsoncode');
|
|
107
|
+
elem.type = 'json';
|
|
108
|
+
elem.contentEditable = true;
|
|
109
|
+
var changed = false;
|
|
66
110
|
await prompt(茨菰$编辑框(elem), '输入JSON格式的数据', function (text) {
|
|
67
111
|
try {
|
|
68
112
|
JSON.parse(text);
|
|
@@ -74,28 +118,16 @@
|
|
|
74
118
|
wrap: true,
|
|
75
119
|
async submit(text) {
|
|
76
120
|
var d = JSON.parse(text);
|
|
77
|
-
var upload = async function (d) {
|
|
78
|
-
if (!isObject(d)) return;
|
|
79
|
-
if (db.id === '用户') {
|
|
80
|
-
if (!d.id && !d.password) {
|
|
81
|
-
return alert("缺少密码!");
|
|
82
|
-
}
|
|
83
|
-
if (d.password) {
|
|
84
|
-
delete d.password;
|
|
85
|
-
d.a = encode62.geta(d.password);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
await data.from('daadd', { dbid: db.id, ...d })
|
|
89
|
-
}
|
|
90
121
|
if (Array.isArray(d)) {
|
|
91
122
|
while (d.length) {
|
|
92
|
-
await upload(d.pop());
|
|
123
|
+
await upload('daadd', d.pop());
|
|
93
124
|
}
|
|
94
125
|
}
|
|
95
|
-
else await upload(d);
|
|
126
|
+
else await upload('daadd', d);
|
|
127
|
+
changed = true;
|
|
96
128
|
}
|
|
97
129
|
});
|
|
98
|
-
load();
|
|
130
|
+
if (changed) load();
|
|
99
131
|
};
|
|
100
|
-
|
|
132
|
+
load();
|
|
101
133
|
</script>
|
package/coms/basic/data.js
CHANGED
|
@@ -374,27 +374,27 @@ var parseData = function (sourceText) {
|
|
|
374
374
|
return sourceText;
|
|
375
375
|
};
|
|
376
376
|
|
|
377
|
-
function fixApi(api,
|
|
378
|
-
if (
|
|
377
|
+
function fixApi(api, base) {
|
|
378
|
+
if (/^\/([^\/]|$)/.test(base)) {
|
|
379
379
|
var { protocol, host } = parseURL(location.href);
|
|
380
|
-
|
|
380
|
+
base = protocol + "//" + host + base;
|
|
381
381
|
}
|
|
382
|
-
else if (/^\.\//.test(
|
|
382
|
+
else if (/^\.\//.test(base)) {
|
|
383
383
|
var { protocol, host, pathname } = parseURL(document.baseURI || location.href);
|
|
384
|
-
|
|
385
|
-
if (pathname)
|
|
386
|
-
|
|
384
|
+
base = base.slice(1);
|
|
385
|
+
if (pathname) base = pathname.replace(/\/[^\/\\]*$/, '') + base;
|
|
386
|
+
base = protocol + "//" + host + base;
|
|
387
387
|
};
|
|
388
388
|
api.transpile = getTranspile(api.url);
|
|
389
389
|
api.url = api.url.replace(/#[\s\S]*$/, '');
|
|
390
390
|
if (!/^\w+?\:\/\//i.test(api.url)) {
|
|
391
|
-
if (
|
|
391
|
+
if (base) {
|
|
392
392
|
var paramReg = /(?:\?([\s\S]*?))?(?:#([\s\S]*))?$/, extraSearch, extraHash, search, hash;
|
|
393
|
-
if (/[\?#]/.test(
|
|
394
|
-
[, extraSearch, extraHash] = paramReg.exec(
|
|
395
|
-
|
|
393
|
+
if (/[\?#]/.test(base)) {
|
|
394
|
+
[, extraSearch, extraHash] = paramReg.exec(base);
|
|
395
|
+
base = base.replace(paramReg, '');
|
|
396
396
|
}
|
|
397
|
-
api.base =
|
|
397
|
+
api.base = base;
|
|
398
398
|
api.path = api.url;
|
|
399
399
|
if (/^\.([\?\#][\s\S]*)?$/.test(api.path)) {
|
|
400
400
|
api.path = api.path.replace(/^\./, "");
|
|
@@ -425,10 +425,10 @@ function createApiMap(data) {
|
|
|
425
425
|
if (data instanceof ApiMap) return data;
|
|
426
426
|
const apiMap = new ApiMap;
|
|
427
427
|
var hasOwnProperty = {}.hasOwnProperty;
|
|
428
|
-
var
|
|
428
|
+
var apibase, _headers;
|
|
429
429
|
|
|
430
430
|
function checkApi(api) {
|
|
431
|
-
fixApi(api,
|
|
431
|
+
fixApi(api, apibase);
|
|
432
432
|
if (hasOwnProperty.call(apiMap, api.id)) {
|
|
433
433
|
const lastApi = apiMap[api.id];
|
|
434
434
|
var fmat = api => `[${api.name}](${api.method} ${api.url})`;
|
|
@@ -459,7 +459,7 @@ function createApiMap(data) {
|
|
|
459
459
|
_headers = undefined;
|
|
460
460
|
}
|
|
461
461
|
if (!base) continue;
|
|
462
|
-
|
|
462
|
+
apibase = reg.test(base) ? base : '';
|
|
463
463
|
var item1 = items1[key];
|
|
464
464
|
var items = Object.keys(item1).map(buildItem);
|
|
465
465
|
formulaters.string('id method url name comment', items).map(parseConfig).map(checkApi);
|
package/coms/zimoli/confirm.js
CHANGED
|
@@ -143,7 +143,7 @@ function confirm() {
|
|
|
143
143
|
|
|
144
144
|
Promise.resolve().then(function () {
|
|
145
145
|
if (isMounted(element)) return;
|
|
146
|
-
element
|
|
146
|
+
element.$mask = true;
|
|
147
147
|
popup(element, target || [.5, .5], target ? 'rhomb' : true);
|
|
148
148
|
element.focus();
|
|
149
149
|
if (!target) drag.on(head, element);
|
package/coms/zimoli/css.js
CHANGED
|
@@ -164,7 +164,13 @@ var cssTargetSelector = function (targetSelector, oStyle, oValue) {
|
|
|
164
164
|
});
|
|
165
165
|
for (var k in styleobject) {
|
|
166
166
|
if (!isEmpty(styleobject[k])) {
|
|
167
|
-
|
|
167
|
+
var o = styleobject[k];
|
|
168
|
+
if (isArray(o)) {
|
|
169
|
+
for (var s of o) {
|
|
170
|
+
rowStyles.push(k + ":" + transformValue(s, k));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else rowStyles.push(k + ":" + transformValue(o, k));
|
|
168
174
|
}
|
|
169
175
|
}
|
|
170
176
|
var innerCss = `${targetSelector}{${rowStyles.join(";")}}`;
|
package/coms/zimoli/popup.js
CHANGED
|
@@ -80,7 +80,7 @@ var popup_path = function (path = "", parameters, target) {
|
|
|
80
80
|
}
|
|
81
81
|
var fullfill = function () {
|
|
82
82
|
remove(element);
|
|
83
|
-
remove(element && element
|
|
83
|
+
remove(element && element.$mask);
|
|
84
84
|
element = popup.create(path, parameters);
|
|
85
85
|
if (!element) return;
|
|
86
86
|
load();
|
|
@@ -106,7 +106,7 @@ var popup_path = function (path = "", parameters, target) {
|
|
|
106
106
|
|
|
107
107
|
var popup_view = function (element, target, style) {
|
|
108
108
|
if (isNode(target)) {
|
|
109
|
-
if (target
|
|
109
|
+
if (target.$mask) {
|
|
110
110
|
popup_with_mask(element, target);
|
|
111
111
|
return element;
|
|
112
112
|
}
|
|
@@ -115,7 +115,7 @@ var popup_view = function (element, target, style) {
|
|
|
115
115
|
if (target instanceof Event) {
|
|
116
116
|
popup_to_event(element, target);
|
|
117
117
|
} else if (target instanceof Array) {
|
|
118
|
-
if (isNode(style) && style
|
|
118
|
+
if (isNode(style) && style.$mask) addMask(element, style);
|
|
119
119
|
else if (typeof style === 'boolean') addMask(element);
|
|
120
120
|
popup_to_point(element, target);
|
|
121
121
|
} else if (target) {
|
|
@@ -131,13 +131,13 @@ var createMask = function (element) {
|
|
|
131
131
|
var masks = element.with;
|
|
132
132
|
if (masks) for (var cx = 0, dx = masks.length; cx < dx; cx++) {
|
|
133
133
|
var m = masks[cx];
|
|
134
|
-
if (m
|
|
134
|
+
if (m.$mask) return m;
|
|
135
135
|
}
|
|
136
136
|
var mask = document.createElement("mask");
|
|
137
137
|
mask.initialStyle = animationStyle;
|
|
138
138
|
css(mask, `z-index:${zIndex()};`);
|
|
139
139
|
mask.className = "mask";
|
|
140
|
-
mask
|
|
140
|
+
mask.$mask = true;
|
|
141
141
|
return mask;
|
|
142
142
|
};
|
|
143
143
|
var mount = function (event) {
|
package/coms/zimoli/prompt.js
CHANGED
|
@@ -103,7 +103,7 @@ function prompt() {
|
|
|
103
103
|
ipt.focus();
|
|
104
104
|
});
|
|
105
105
|
})
|
|
106
|
-
on("mousedown")(c, e => e.target
|
|
106
|
+
on("mousedown")(c, e => !getTargetIn(ipt, e.target) && e.preventDefault() | ipt.focus());
|
|
107
107
|
on(wrap ? "keydown.ctrl.enter" : "keydown.enter")(c, function (event) {
|
|
108
108
|
if (event.defaultPrevented) return;
|
|
109
109
|
event.preventDefault();
|
package/coms/zimoli/resize.js
CHANGED
|
@@ -17,7 +17,7 @@ var getResizer = function (event) {
|
|
|
17
17
|
}
|
|
18
18
|
var target = event.target;
|
|
19
19
|
while (rect && target) {
|
|
20
|
-
if (target
|
|
20
|
+
if (target.$mask) break;
|
|
21
21
|
if (overlap(rect, target) > 0) {
|
|
22
22
|
if (+getComputedStyle(rect).zIndex < +getComputedStyle(target).zIndex) {
|
|
23
23
|
rect = null;
|
package/coms/zimoli/zimoli.js
CHANGED
|
@@ -63,7 +63,7 @@ var codecolor = function (c, encode) {
|
|
|
63
63
|
used[k].forEach(k in predefs ? setPredef : setOutside);
|
|
64
64
|
}
|
|
65
65
|
if (c.program) var { space_exp: spaceReg, control_reg } = c.program;
|
|
66
|
-
if (spaceReg) var unspaceReg = new RegExp(spaces.avoid()
|
|
66
|
+
if (spaceReg) var unspaceReg = new RegExp(`(?:${spaces.avoid()})+`, 'g');
|
|
67
67
|
var wraptext = function (t, l) {
|
|
68
68
|
if (unspaceReg) t = t.replace(unspaceReg, a => {
|
|
69
69
|
a = encode(a);
|