efront 3.26.15 → 3.26.16
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 +2 -1
- package/apps/pivot/link/index.html +1 -1
- package/apps/pivot/link/index.js +4 -1
- package/apps/pivot/link/list.js +4 -3
- package/coms/frame/chat.html +1 -1
- package/coms/frame/chat.js +25 -5
- package/coms/frame/chat.less +9 -2
- package/coms/zimoli/data.js +4 -3
- package/coms/zimoli/grid.js +1 -1
- package/coms/zimoli/render.js +1 -1
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/apps/pivot/api.yml
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
run: options :::run
|
|
4
4
|
share: options ::share-:opt?:path
|
|
5
5
|
folder: options ::file-:opt:::path?:to
|
|
6
|
-
cluster: options ::cluster
|
|
6
|
+
cluster: options ::cluster-list
|
|
7
|
+
clients: options ::cluster-list?:id
|
|
7
8
|
list: options :::type
|
|
8
9
|
edit: options :::type-:key?:value
|
|
9
10
|
add: options :::type-:key+:value
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
<menu -src="m in menus" #navbar></menu>
|
|
1
|
+
<menu @active="saveIndex(i)" -src="(m,i) in menus" #navbar></menu>
|
|
2
2
|
<container -src="navbar.selected?.path"></container>
|
package/apps/pivot/link/index.js
CHANGED
|
@@ -6,8 +6,11 @@ function index() {
|
|
|
6
6
|
var [name, path] = a.split(/\s+/);
|
|
7
7
|
return { name, path };
|
|
8
8
|
}),
|
|
9
|
+
saveIndex(index) {
|
|
10
|
+
data.setInstance('link-index', index);
|
|
11
|
+
},
|
|
9
12
|
menu,
|
|
10
13
|
});
|
|
11
|
-
page.$scope.menus[
|
|
14
|
+
page.$scope.menus[+data.getInstance("link-index")].actived = true;
|
|
12
15
|
return page;
|
|
13
16
|
}
|
package/apps/pivot/link/list.js
CHANGED
|
@@ -4,7 +4,7 @@ function main() {
|
|
|
4
4
|
page.innerHTML = template;
|
|
5
5
|
renderWithDefaults(page, {
|
|
6
6
|
load: lazy(async function () {
|
|
7
|
-
this.clusters = data.lazyInstance("cluster"
|
|
7
|
+
this.clusters = data.lazyInstance("cluster");
|
|
8
8
|
await this.clusters;
|
|
9
9
|
this.active();
|
|
10
10
|
}, -1000),
|
|
@@ -25,11 +25,12 @@ function main() {
|
|
|
25
25
|
return ((new Date - d) / 1000 | 0) + "秒";
|
|
26
26
|
},
|
|
27
27
|
clients: [],
|
|
28
|
-
active(index = this.index.index | 0) {
|
|
28
|
+
async active(index = this.index.index | 0, c) {
|
|
29
29
|
data.setInstance('index', { index });
|
|
30
30
|
var clusters = this.clusters;
|
|
31
31
|
if (index >= clusters.length) index = clusters.length - 1;
|
|
32
|
-
this.clients =
|
|
32
|
+
if (c) this.clients = [];
|
|
33
|
+
this.clients = await data.asyncInstance("clients", { id: clusters[index] });
|
|
33
34
|
},
|
|
34
35
|
});
|
|
35
36
|
var loadid = 0;
|
package/coms/frame/chat.html
CHANGED
package/coms/frame/chat.js
CHANGED
|
@@ -14,14 +14,36 @@ function msg(elem, { m: data }, parentScopes) {
|
|
|
14
14
|
elem.innerText = data;
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
+
var userManager = function (users, m) {
|
|
18
|
+
for (var cx = 0, dx = users.length; cx < dx; cx++) {
|
|
19
|
+
var u = users[cx];
|
|
20
|
+
if (u.id === m.id) {
|
|
21
|
+
if (m.deleted) users.splice(cx, 1);
|
|
22
|
+
else Object.assign(u, m);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (!m.deleted) users.push(m);
|
|
27
|
+
};
|
|
17
28
|
function chat(title = '会话窗口') {
|
|
18
29
|
var page = view();
|
|
19
30
|
page.innerHTML = template;
|
|
20
31
|
drag.on(page.firstElementChild, page);
|
|
21
32
|
resize.on(page);
|
|
22
33
|
var localid = Date.now() + Math.sin(Math.random());
|
|
34
|
+
var users = [];
|
|
23
35
|
page.push = function (msgs) {
|
|
24
36
|
var { msglist } = this.$scope;
|
|
37
|
+
msgs = msgs.filter(m => {
|
|
38
|
+
if (!m) return false;
|
|
39
|
+
if (isString(m)) return true;
|
|
40
|
+
switch (m.type) {
|
|
41
|
+
case 'user':
|
|
42
|
+
userManager(users, m);
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
});
|
|
25
47
|
msglist.push.apply(msglist, msgs);
|
|
26
48
|
var chat = page.querySelector("chat");
|
|
27
49
|
var lastmsg = chat.getLastVisibleElement();
|
|
@@ -35,8 +57,8 @@ function chat(title = '会话窗口') {
|
|
|
35
57
|
renderWithDefaults(page, {
|
|
36
58
|
chat: list,
|
|
37
59
|
title,
|
|
38
|
-
grid,
|
|
39
60
|
msglist: [],
|
|
61
|
+
users,
|
|
40
62
|
text: '',
|
|
41
63
|
localid,
|
|
42
64
|
msg,
|
|
@@ -47,8 +69,7 @@ function chat(title = '会话窗口') {
|
|
|
47
69
|
var textarea = body.querySelector("[textarea]");
|
|
48
70
|
var lastElementChild = textarea.lastElementChild;
|
|
49
71
|
var targetHeight = Math.min(textarea.scrollHeight, body.clientHeight * .6, lastElementChild.offsetTop + lastElementChild.offsetHeight);
|
|
50
|
-
if (Math.abs(targetHeight - textarea.clientHeight) < 2) return;
|
|
51
|
-
|
|
72
|
+
if (Math.abs(targetHeight - textarea.clientHeight - textarea.clientTop) < 2) return;
|
|
52
73
|
body.resizeCell(textarea, 'top', textarea.clientHeight - targetHeight - 2);
|
|
53
74
|
},
|
|
54
75
|
send() {
|
|
@@ -61,8 +82,7 @@ function chat(title = '会话窗口') {
|
|
|
61
82
|
|
|
62
83
|
data = encode62.timeencode(data);
|
|
63
84
|
if (this.text.length > 2000) {
|
|
64
|
-
alert("信息太长,无法发送!");
|
|
65
|
-
return;
|
|
85
|
+
return alert("信息太长,无法发送!");
|
|
66
86
|
}
|
|
67
87
|
cast(page, "send", data);
|
|
68
88
|
this.body.lastElementChild.focus();
|
package/coms/frame/chat.less
CHANGED
|
@@ -76,19 +76,26 @@ msg {
|
|
|
76
76
|
line-height: 24px;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
>grid
|
|
79
|
+
>grid {
|
|
80
80
|
padding-top: 0;
|
|
81
81
|
margin-bottom: 0;
|
|
82
|
+
height: 100%;
|
|
83
|
+
background-color: #f2f4f6;
|
|
84
|
+
width: 100%;
|
|
82
85
|
|
|
83
86
|
>div {
|
|
84
87
|
height: 100%;
|
|
85
88
|
position: relative;
|
|
86
89
|
}
|
|
90
|
+
|
|
91
|
+
>chat {
|
|
92
|
+
padding-top: 50px;
|
|
93
|
+
}
|
|
87
94
|
}
|
|
88
95
|
|
|
89
96
|
|
|
90
97
|
.editor-height(@height) {
|
|
91
|
-
>grid
|
|
98
|
+
>grid:not(:last-child) {
|
|
92
99
|
padding-bottom: @height;
|
|
93
100
|
}
|
|
94
101
|
|
package/coms/zimoli/data.js
CHANGED
|
@@ -811,12 +811,12 @@ var data = {
|
|
|
811
811
|
},
|
|
812
812
|
fromApi(api, params, parse) {
|
|
813
813
|
var id = parse instanceof Function ? getInstanceId() : 0;
|
|
814
|
+
var p = privates.fromApi(api, params);
|
|
814
815
|
if (id) this.removeInstance(id);
|
|
815
816
|
var url = api.url;
|
|
816
817
|
var response = this.getInstance(id || url);
|
|
817
818
|
if (!isObject(response)) response = new LoadingArray;
|
|
818
819
|
this.responseLoading(response);
|
|
819
|
-
var p = privates.fromApi(api, params);
|
|
820
820
|
response.loading = p.loading;
|
|
821
821
|
p = response.loading_promise = p.then((data) => {
|
|
822
822
|
response.loading = null;
|
|
@@ -838,11 +838,11 @@ var data = {
|
|
|
838
838
|
},
|
|
839
839
|
fromURL(url, parse) {
|
|
840
840
|
var id = parse instanceof Function ? getInstanceId() : 0;
|
|
841
|
+
var p = privates.loadIgnoreConfig('get', url);
|
|
841
842
|
if (id) this.removeInstance(id);
|
|
842
843
|
var response = this.getInstance(id || url);
|
|
843
844
|
if (!isObject(response)) response = new LoadingArray;
|
|
844
845
|
this.responseLoading(response);
|
|
845
|
-
var p = privates.loadIgnoreConfig('get', url);
|
|
846
846
|
response.loading = p.loading;
|
|
847
847
|
p = response.loading_promise = p.then((data) => {
|
|
848
848
|
response.loading = null;
|
|
@@ -925,6 +925,7 @@ var data = {
|
|
|
925
925
|
}
|
|
926
926
|
var outdate = new Error("request outdate.");
|
|
927
927
|
var aborted = new Error("request aborted.");
|
|
928
|
+
this.responseLoading(instance);
|
|
928
929
|
promise1 = instance.loading_promise = new Promise(function (ok) {
|
|
929
930
|
if (!instance.loading) {
|
|
930
931
|
instance.loading = false;
|
|
@@ -938,7 +939,6 @@ var data = {
|
|
|
938
939
|
if (instance.loading) {
|
|
939
940
|
instance.loading.abort();
|
|
940
941
|
}
|
|
941
|
-
this.responseLoading(instance);
|
|
942
942
|
var params2 = privates.pack(sid, params1);
|
|
943
943
|
if (!privates.validApi(api, params2)) throw aborted;
|
|
944
944
|
let url = api.url;
|
|
@@ -979,6 +979,7 @@ var data = {
|
|
|
979
979
|
this.responseLoaded(instance);
|
|
980
980
|
return data;
|
|
981
981
|
});
|
|
982
|
+
promise1.params = params;
|
|
982
983
|
promise1.catch((e) => {
|
|
983
984
|
if (e === outdate || e === aborted) return;
|
|
984
985
|
this.responseCrash(e, instance);
|
package/coms/zimoli/grid.js
CHANGED
|
@@ -203,6 +203,7 @@ var resizeView = function (event) {
|
|
|
203
203
|
grid.reshape();
|
|
204
204
|
};
|
|
205
205
|
var clearResizer = function (grid) {
|
|
206
|
+
if (!grid.editting) return;
|
|
206
207
|
var target = grid.editting.target;
|
|
207
208
|
if (target) target.style.zIndex = null;
|
|
208
209
|
var { clientX, clientY } = grid.editting;
|
|
@@ -758,7 +759,6 @@ var createPointsWithChildren = function () {
|
|
|
758
759
|
points = [0, points];
|
|
759
760
|
}
|
|
760
761
|
grid.setData(points);
|
|
761
|
-
console.log(grid.clientHeight, elements)
|
|
762
762
|
grid.reshape();
|
|
763
763
|
};
|
|
764
764
|
function main(elem) {
|
package/coms/zimoli/render.js
CHANGED
|
@@ -381,7 +381,7 @@ var renderStructure = function (element) {
|
|
|
381
381
|
if ($struct.repeat) var { value: repeat } = $struct.repeat;
|
|
382
382
|
if (!ifkey) return createRepeat.call(element, repeat);
|
|
383
383
|
if (!ifexp || !repeat) {
|
|
384
|
-
delete $struct.if;
|
|
384
|
+
if (repeat) delete $struct.if;
|
|
385
385
|
return structures[key].call(element, ifexp);
|
|
386
386
|
}
|
|
387
387
|
var { before, after } = parseIfWithRepeat(ifexp, repeat);
|