efront 3.13.1 → 3.13.2
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/apps/pivot/api.yml +1 -0
- package/apps/pivot/log/boot.html +2 -0
- package/apps/pivot/log/boot.js +24 -0
- package/apps/pivot/log/boot.less +3 -0
- package/apps/pivot/log/count.html +5 -1
- package/apps/pivot/log/count.js +11 -4
- package/apps/pivot/log/count.less +10 -2
- package/apps/pivot/menu.yml +6 -2
- package/apps/pivot/user/edit.js +1 -0
- package/apps/pivot/user/list.js +4 -0
- package/apps/pivot/user/tag/edit.js +1 -0
- package/apps/pivot/user/tag/list.js +3 -0
- package/coms/basic/renderExpress.js +1 -1
- package/coms/frame/route.js +3 -0
- package/coms/pivot/plist.js +1 -1
- package/coms/zimoli/field.html +15 -10
- package/coms/zimoli/model.js +21 -1
- package/coms/zimoli/prompt.js +3 -1
- package/coms/zimoli/render.js +11 -8
- package/coms/zimoli/renderDefaults.js +1 -0
- package/coms/zimoli/search.js +5 -4
- package/coms/zimoli/select.js +7 -3
- package/coms/zimoli/selectList.js +7 -7
- package/coms/zimoli/selectListEdit.js +1 -1
- package/coms/zimoli/success.js +4 -0
- package/coms/zimoli/success.less +13 -0
- package/coms/zimoli/view.less +4 -0
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/apps/pivot/api.yml
CHANGED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var fields = refilm`
|
|
2
|
+
地址/ip
|
|
3
|
+
端口/port
|
|
4
|
+
版本/version
|
|
5
|
+
进程/pid
|
|
6
|
+
时间/time date
|
|
7
|
+
`;
|
|
8
|
+
function main() {
|
|
9
|
+
var page = div();
|
|
10
|
+
page.innerHTML = template;
|
|
11
|
+
var items = data.from("bootlog", item => {
|
|
12
|
+
item.forEach(a => {
|
|
13
|
+
var [v, p] = a.ppid.split("/");
|
|
14
|
+
a.version = v;
|
|
15
|
+
a.pid = p;
|
|
16
|
+
})
|
|
17
|
+
return item;
|
|
18
|
+
});
|
|
19
|
+
renderWithDefaults(page, {
|
|
20
|
+
items,
|
|
21
|
+
fields
|
|
22
|
+
});
|
|
23
|
+
return page;
|
|
24
|
+
}
|
package/apps/pivot/log/count.js
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
var fields = refilm`
|
|
2
|
-
路径/path
|
|
2
|
+
路径/path html
|
|
3
3
|
访问量/count
|
|
4
4
|
`;
|
|
5
5
|
function main() {
|
|
6
6
|
var page = div();
|
|
7
7
|
page.innerHTML = template;
|
|
8
|
+
var items = data.from("count", a => {
|
|
9
|
+
return Object.keys(a).map(b => ({ path: b, count: a[b] }));
|
|
10
|
+
});
|
|
8
11
|
renderWithDefaults(page, {
|
|
9
|
-
items
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
items,
|
|
13
|
+
searchText: "",
|
|
14
|
+
filter() {
|
|
15
|
+
var text = this.searchText;
|
|
16
|
+
if (!text) return this.items = items;
|
|
17
|
+
this.items = search(text, items, 'path');
|
|
18
|
+
},
|
|
12
19
|
fields
|
|
13
20
|
});
|
|
14
21
|
return page;
|
package/apps/pivot/menu.yml
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pedit.bind(null, "用户信息", "user");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pedit.bind(null, "标签", "tag");
|
|
@@ -3,7 +3,7 @@ function createSeek(express) {
|
|
|
3
3
|
express.forEach(function (search) {
|
|
4
4
|
if (dist) {
|
|
5
5
|
if (/[\=]/.test(dist)) dist = `(${dist})`;
|
|
6
|
-
dist =
|
|
6
|
+
dist = `typeof ${dist}!=='undefined'&&${dist}!==null?${dist}${search}:''`
|
|
7
7
|
} else {
|
|
8
8
|
dist = search;
|
|
9
9
|
}
|
package/coms/frame/route.js
CHANGED
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
if (/,/.test(name)) {
|
|
76
76
|
|
|
77
77
|
}
|
|
78
|
+
item.closed = true;
|
|
78
79
|
return item;
|
|
79
80
|
});
|
|
80
81
|
return items;
|
|
@@ -114,6 +115,7 @@
|
|
|
114
115
|
actived = mmap[opened.active] || actived;
|
|
115
116
|
if (actived) {
|
|
116
117
|
if (actived_value === historys.length) {
|
|
118
|
+
setActive(actived, true);
|
|
117
119
|
result.active = actived;
|
|
118
120
|
};
|
|
119
121
|
}
|
|
@@ -123,6 +125,7 @@
|
|
|
123
125
|
var setActive = function (p, active) {
|
|
124
126
|
while (p) {
|
|
125
127
|
p.active = active;
|
|
128
|
+
if (active) p.closed = false;
|
|
126
129
|
p = p.parent;
|
|
127
130
|
}
|
|
128
131
|
};
|
package/coms/pivot/plist.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
function main(title, type, fields, edit_ref, options) {
|
|
3
3
|
return frame$list(title, {
|
|
4
4
|
load() {
|
|
5
|
-
return data.from("list", { type }, a => JSAM.parse(encode62.timedecode(a)));
|
|
5
|
+
return data.from("list", { type }, a => JSAM.parse(encode62.timedecode(a || '')));
|
|
6
6
|
},
|
|
7
7
|
remove(o) {
|
|
8
8
|
return data.from("edit", { type, key: encode62.timeencode(o.key), value: encode62.timeencode("") }).loading_promise;
|
package/coms/zimoli/field.html
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
<
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<template v-if='field?.key'>
|
|
2
|
+
<div class="head">
|
|
3
|
+
<span ng-bind=field.name></span>
|
|
4
|
+
<span class="required" ng-if="field.required">*</span>
|
|
5
|
+
</div>
|
|
6
|
+
<div class="body">
|
|
7
|
+
<model _data=data _field=field></model>
|
|
8
|
+
<span class="error" ng-bind="error"></span>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="foot" ng-if="field.msg">
|
|
11
|
+
<span ng-bind=field.msg></span>
|
|
12
|
+
</div>
|
|
13
|
+
</template>
|
|
14
|
+
<template v-else>
|
|
6
15
|
<model _data=data _field=field></model>
|
|
7
|
-
|
|
8
|
-
</div>
|
|
9
|
-
<div class="foot" ng-if="field.msg">
|
|
10
|
-
<span ng-bind=field.msg></span>
|
|
11
|
-
</div>
|
|
16
|
+
</template>
|
package/coms/zimoli/model.js
CHANGED
|
@@ -48,6 +48,12 @@ var constructors = {
|
|
|
48
48
|
}
|
|
49
49
|
return e;
|
|
50
50
|
},
|
|
51
|
+
success(e) {
|
|
52
|
+
success(e);
|
|
53
|
+
e.innerHTML = `<span ng-html="field.comment"></span>`;
|
|
54
|
+
render(e.children, e.$scope, e.$parentScopes);
|
|
55
|
+
return e;
|
|
56
|
+
},
|
|
51
57
|
switch: swap,
|
|
52
58
|
row: textarea,
|
|
53
59
|
password,
|
|
@@ -149,16 +155,30 @@ var readonly_types = {
|
|
|
149
155
|
var f = data[field.key];
|
|
150
156
|
return size(f);
|
|
151
157
|
},
|
|
158
|
+
html(a, data) {
|
|
159
|
+
var t = document.createElement("span");
|
|
160
|
+
t.innerHTML = seek(data, a.field.key);
|
|
161
|
+
return t;
|
|
162
|
+
},
|
|
152
163
|
swap(e, data) {
|
|
153
164
|
var { field } = e;
|
|
154
165
|
var v = data[field.key];
|
|
155
166
|
if (field.options) {
|
|
156
|
-
|
|
167
|
+
if (!field.optionsMap) field.optionsMap = createOptionsMap(field.options);
|
|
168
|
+
var o = field.optionsMap[v];
|
|
157
169
|
if (o) return o.name;
|
|
158
170
|
}
|
|
171
|
+
if (isEmpty(v)) v = '';
|
|
159
172
|
return v;
|
|
160
173
|
},
|
|
161
174
|
};
|
|
175
|
+
var createOptionsMap = function (options) {
|
|
176
|
+
var map = Object.create(null);
|
|
177
|
+
for (var o of options) {
|
|
178
|
+
map[o.key] = o;
|
|
179
|
+
}
|
|
180
|
+
return map;
|
|
181
|
+
}
|
|
162
182
|
readonly_types.select = readonly_types.swap;
|
|
163
183
|
function main(elem) {
|
|
164
184
|
var build = function () {
|
package/coms/zimoli/prompt.js
CHANGED
|
@@ -25,8 +25,10 @@ function prompt(msg = "请输入", check) {
|
|
|
25
25
|
});
|
|
26
26
|
})
|
|
27
27
|
on("mousedown")(c, e => e.target !== ipt && e.preventDefault() | ipt.focus());
|
|
28
|
-
on("keydown.enter")(c, function () {
|
|
28
|
+
on("keydown.enter")(c, function (event) {
|
|
29
|
+
if (event.defaultPrevented) return;
|
|
29
30
|
if (check && check(ipt.value) === false) return;
|
|
31
|
+
event.preventDefault();
|
|
30
32
|
oked = true;
|
|
31
33
|
remove(c);
|
|
32
34
|
fire();
|
package/coms/zimoli/render.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
var hasOwnProperty = {}.hasOwnProperty;
|
|
2
2
|
var renderElements = Object.create(null);
|
|
3
3
|
var presets = Object.create(null);
|
|
4
|
+
presets.template = function (t) {
|
|
5
|
+
var node = document.createElement("div");
|
|
6
|
+
var comment = document.createComment('template');
|
|
7
|
+
node.innerHTML = t.innerHTML;
|
|
8
|
+
comment.with = [].slice.call(node.childNodes, 0);
|
|
9
|
+
renderElement(comment.with, t.$scope, t.$parentScopes);
|
|
10
|
+
remove(node.childNodes);
|
|
11
|
+
return comment;
|
|
12
|
+
};
|
|
4
13
|
window.renderElements = renderElements;
|
|
5
14
|
var renderidOffset = 10;
|
|
6
15
|
var renderidClosed = 0;
|
|
@@ -70,7 +79,6 @@ var initialComment = function (renders, type, expression) {
|
|
|
70
79
|
onremove(comment, removeRenderElement);
|
|
71
80
|
appendChild.after(this, comment);
|
|
72
81
|
if (!/if/i.test(type)) remove(this);
|
|
73
|
-
this.with = comment;
|
|
74
82
|
rebuild(comment);
|
|
75
83
|
return comment;
|
|
76
84
|
};
|
|
@@ -214,17 +222,12 @@ var createIf = function (search, id = 0) {
|
|
|
214
222
|
var element = elements[cx];
|
|
215
223
|
if (cx === shouldMount) {
|
|
216
224
|
appendChild.before(this, element);
|
|
217
|
-
element.with = this;
|
|
218
225
|
if (element.renderid < 0) {
|
|
219
226
|
element.renderid = id;
|
|
220
|
-
|
|
221
|
-
delete element.with;
|
|
222
|
-
element = render(element);
|
|
223
|
-
element.with = w;
|
|
227
|
+
elements[cx] = render(element);
|
|
224
228
|
}
|
|
225
229
|
}
|
|
226
230
|
else {
|
|
227
|
-
delete element.with;
|
|
228
231
|
remove(element);
|
|
229
232
|
}
|
|
230
233
|
}
|
|
@@ -672,7 +675,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
672
675
|
}
|
|
673
676
|
}
|
|
674
677
|
}
|
|
675
|
-
if (element.children.length) renderElement(element.children, scope, parentScopes);
|
|
678
|
+
if (element.children && element.children.length) renderElement(element.children, scope, parentScopes);
|
|
676
679
|
if (!isFirstRender) return element;
|
|
677
680
|
for (var k in binds) {
|
|
678
681
|
if (directives.hasOwnProperty(k)) {
|
package/coms/zimoli/search.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
function search(seartext, options) {
|
|
1
|
+
function search(seartext, options, path = "name") {
|
|
2
2
|
if (options instanceof Array) {
|
|
3
3
|
var hasFullmatch = false;
|
|
4
4
|
var a = options.map(o => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
var name = seek(o, path);
|
|
6
|
+
if (name === seartext) hasFullmatch = true;
|
|
7
|
+
var [power, m] = mark.power(name, seartext);
|
|
8
|
+
return { power, [path]: m, value: o.value, item: o };
|
|
8
9
|
}).filter(a => a.power > 0);
|
|
9
10
|
a.sort(function (a, b) {
|
|
10
11
|
return b.power - a.power;
|
package/coms/zimoli/select.js
CHANGED
|
@@ -24,6 +24,10 @@ var _remove = function () {
|
|
|
24
24
|
var preventDefault = function (event) {
|
|
25
25
|
event.preventDefault();
|
|
26
26
|
};
|
|
27
|
+
var preventDefault1 = function (event) {
|
|
28
|
+
if (saved_list) return;
|
|
29
|
+
event.preventDefault();
|
|
30
|
+
}
|
|
27
31
|
var lastTimeClick = 0;
|
|
28
32
|
var removeByBlur = function () {
|
|
29
33
|
if (!getTargetIn(this, document.activeElement)) _remove();
|
|
@@ -71,8 +75,8 @@ function select(target, list, removeOnSelect, direction) {
|
|
|
71
75
|
target.innerHTML = `<option selected value="${this.value}">${this.name || this.value}</option>`
|
|
72
76
|
}
|
|
73
77
|
target.value = this.value;
|
|
74
|
-
dispatch(target, "change");
|
|
75
78
|
}
|
|
79
|
+
dispatch(target, "change");
|
|
76
80
|
}
|
|
77
81
|
};
|
|
78
82
|
var onlistclick = function (event) {
|
|
@@ -96,8 +100,8 @@ function select(target, list, removeOnSelect, direction) {
|
|
|
96
100
|
}
|
|
97
101
|
on("keydown.up")(target, preventDefault);
|
|
98
102
|
on("keydown.down")(target, preventDefault);
|
|
99
|
-
on("keydown.enter")(target,
|
|
100
|
-
on("keydown.space")(target,
|
|
103
|
+
on("keydown.enter")(target, preventDefault1);
|
|
104
|
+
on("keydown.space")(target, preventDefault1);
|
|
101
105
|
var pop = function () {
|
|
102
106
|
if (saved_list !== list) mousedown.call(this);
|
|
103
107
|
};
|
|
@@ -60,7 +60,7 @@ function main() {
|
|
|
60
60
|
function createItem(option) {
|
|
61
61
|
var key = option.key || option.value;
|
|
62
62
|
if (key in itemMap) return itemMap[key];
|
|
63
|
-
var item = itemMap[
|
|
63
|
+
var item = itemMap[key] = document.createElement('div');
|
|
64
64
|
item.setAttribute("item", '');
|
|
65
65
|
item.innerHTML = option.innerHTML || option.name;
|
|
66
66
|
item.name = option.name || option.innerHTML;
|
|
@@ -78,12 +78,12 @@ function main() {
|
|
|
78
78
|
iconed = icon;
|
|
79
79
|
if (multiple) {
|
|
80
80
|
item.setAttribute("selected", "");
|
|
81
|
-
page.value.push(
|
|
81
|
+
page.value.push(key);
|
|
82
82
|
}
|
|
83
83
|
else {
|
|
84
84
|
item.setAttribute("selected", "");
|
|
85
85
|
page.activeNode = item;
|
|
86
|
-
page.value =
|
|
86
|
+
page.value = key
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
if (option.disabled) {
|
|
@@ -142,10 +142,9 @@ function main() {
|
|
|
142
142
|
if (a in itemMap) return false;
|
|
143
143
|
cast(page.target, "add-option", a);
|
|
144
144
|
children.push({ name: a, key: a });
|
|
145
|
-
page.
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}), adder);
|
|
145
|
+
remove(page.children);
|
|
146
|
+
page.go(children.length - 1);
|
|
147
|
+
appendChild(page, adder);
|
|
149
148
|
break;
|
|
150
149
|
case this.children[1]:
|
|
151
150
|
var options = [].slice.call(children, 0, children.length);
|
|
@@ -216,6 +215,7 @@ function main() {
|
|
|
216
215
|
moveFocus(0);
|
|
217
216
|
})
|
|
218
217
|
var enter = function (e) {
|
|
218
|
+
if (e.defaultPrevented) return;
|
|
219
219
|
e.preventDefault();
|
|
220
220
|
var e = page.getIndexedElement(focus);
|
|
221
221
|
if (e) e.click();
|
package/coms/zimoli/view.less
CHANGED