efront 3.22.4 → 3.22.7
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/coms/kugou/dragview.js +1 -1
- package/coms/layer/glance.js +1 -1
- package/coms/zimoli/autodragchildren.js +70 -9
- package/coms/zimoli/autodragchildren_test.html +6 -2
- package/coms/zimoli/autodragchildren_test.js +17 -2
- package/coms/zimoli/autodragchildren_test.less +7 -2
- package/coms/zimoli/bindtouch.js +2 -2
- package/coms/zimoli/cloneVisible.js +4 -5
- package/coms/zimoli/color.js +4 -4
- package/coms/zimoli/drag.js +2 -3
- package/coms/zimoli/list.js +26 -20
- package/coms/zimoli/mark.js +5 -3
- package/coms/zimoli/random_test.js +1 -1
- package/coms/zimoli/refilm_test.html +18 -16
- package/coms/zimoli/refilm_test.less +9 -2
- package/coms/zimoli/resize.js +3 -1
- package/coms/zimoli/search.js +74 -16
- package/coms/zimoli/select.js +2 -1
- package/coms/zimoli/selectList.js +48 -5
- package/coms/zimoli/selectList.less +46 -0
- package/coms/zimoli/selectList_test.html +1 -1
- package/coms/zimoli/slider.js +1 -1
- package/coms/zimoli/test_scroll.js +17 -31
- package/coms/zimoli/vbox_test.js +1 -1
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/kugou/dragview.js
CHANGED
|
@@ -12,7 +12,7 @@ var dragview = function (event) {
|
|
|
12
12
|
var deltaY = savedY - event.clientY;
|
|
13
13
|
|
|
14
14
|
if (!moving) {
|
|
15
|
-
if (
|
|
15
|
+
if (!onclick.preventClick) return;
|
|
16
16
|
if (deltaX > 0 && !freeOffset(page.style.left || 0) || Math.abs(deltaY) >= Math.abs(deltaX)) {
|
|
17
17
|
moving = -1;
|
|
18
18
|
} else {
|
package/coms/layer/glance.js
CHANGED
|
@@ -40,7 +40,7 @@ var dragview = function (dragview) {
|
|
|
40
40
|
var deltaY = savedY - event.clientY;
|
|
41
41
|
event.preventDefault();
|
|
42
42
|
if (!moving) {
|
|
43
|
-
if (
|
|
43
|
+
if (!onclick.preventClick) return;
|
|
44
44
|
if (Math.abs(deltaY) >= Math.abs(deltaX)) {
|
|
45
45
|
moving = -1;
|
|
46
46
|
} else {
|
|
@@ -65,6 +65,7 @@ var scrollX = function (targetBox, moveChildren) {
|
|
|
65
65
|
vscroll.X.call(targetBox, scrollDelta / 16, false);
|
|
66
66
|
moveChildren();
|
|
67
67
|
}
|
|
68
|
+
return scrollDelta;
|
|
68
69
|
};
|
|
69
70
|
var scrollY = arriswise(scrollX, arguments);
|
|
70
71
|
var moveMarginY = arriswise(moveMarginX, arguments);
|
|
@@ -85,6 +86,7 @@ var bindTarget = function (index, element) {
|
|
|
85
86
|
|
|
86
87
|
var hooka = function (matcher, move, event, targetChild, isMovingSource) {
|
|
87
88
|
var boxfinder;
|
|
89
|
+
var isMovingSource = isMovingSource !== false;
|
|
88
90
|
if (isMovingSource === false) boxfinder = matcher, matcher = null;
|
|
89
91
|
var that = this;
|
|
90
92
|
|
|
@@ -189,8 +191,12 @@ var hooka = function (matcher, move, event, targetChild, isMovingSource) {
|
|
|
189
191
|
that.removeAttribute('dragchildren');
|
|
190
192
|
removeClass(targetBox, "dropping");
|
|
191
193
|
var dst, appendSibling, delta;
|
|
192
|
-
var
|
|
193
|
-
|
|
194
|
+
var k0 = -1;
|
|
195
|
+
for (var k0 in previousElements) break;
|
|
196
|
+
if (previousElements.length) var src = previousElements.length - k0;
|
|
197
|
+
else var src = 0;
|
|
198
|
+
if (k0 >= 0 && previousElements[k0].moved) for (var k in previousElements) {
|
|
199
|
+
var cx = +k + 1;
|
|
194
200
|
if (!previousElements[cx]) {
|
|
195
201
|
dst = 0;
|
|
196
202
|
delta = 0;
|
|
@@ -202,14 +208,16 @@ var hooka = function (matcher, move, event, targetChild, isMovingSource) {
|
|
|
202
208
|
break;
|
|
203
209
|
}
|
|
204
210
|
}
|
|
205
|
-
|
|
206
|
-
|
|
211
|
+
var k0 = -1;
|
|
212
|
+
for (var k0 in followedElements) break;
|
|
213
|
+
if (k0 >= 0 && followedElements[k0].moved) for (var k in followedElements) {
|
|
214
|
+
var cx = +k + 1;
|
|
207
215
|
if (!followedElements[cx]) {
|
|
208
|
-
dst =
|
|
216
|
+
dst = targetBox.children.length - 1;
|
|
209
217
|
delta = 0;
|
|
210
218
|
appendSibling = appendChild.after;
|
|
211
219
|
} else if (!followedElements[cx].moved) {
|
|
212
|
-
dst =
|
|
220
|
+
dst = targetBox.children.length - followedElements.length + cx - 1;
|
|
213
221
|
delta = 1;
|
|
214
222
|
appendSibling = appendChild.before;
|
|
215
223
|
break;
|
|
@@ -219,7 +227,8 @@ var hooka = function (matcher, move, event, targetChild, isMovingSource) {
|
|
|
219
227
|
var children = targetBox.children;
|
|
220
228
|
var srcElement = children[src];
|
|
221
229
|
var dstElement = children[dst + delta];
|
|
222
|
-
|
|
230
|
+
console.log(targetChild, src)
|
|
231
|
+
src = bindTarget(src, isMovingSource ? targetChild : srcElement);
|
|
223
232
|
dst = bindTarget(dst, dstElement);
|
|
224
233
|
var needFire = !isFunction(move) || move(src, dst, dst + delta, appendSibling, targetBox) !== false;
|
|
225
234
|
if (needFire && srcElement === children[src] && dstElement === children[dst + delta] && srcElement && dstElement) appendSibling(dstElement, srcElement);
|
|
@@ -239,8 +248,60 @@ var hooka = function (matcher, move, event, targetChild, isMovingSource) {
|
|
|
239
248
|
var offmousup = on("mouseup")(window, offall);
|
|
240
249
|
var autoScroll = function () {
|
|
241
250
|
if (autoScroll.ing) return;
|
|
242
|
-
if (scroll)
|
|
243
|
-
|
|
251
|
+
if (scroll) autoScroll.ing = setInterval(function () {
|
|
252
|
+
var delta = scroll(targetBox, moveChildren);
|
|
253
|
+
if (isMovingSource === false) { }
|
|
254
|
+
else if (delta < 0) {
|
|
255
|
+
var p = null;
|
|
256
|
+
for (var k in previousElements) {
|
|
257
|
+
if (!previousElements[k].parentNode) {
|
|
258
|
+
delete previousElements[k];
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
if (previousElements[+k + 1] && previousElements[k].previousElementSibling !== previousElements[+k + 1]) {
|
|
262
|
+
previousElements.splice(+k + 1, previousElements.length - k - 1);
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
var k = 0;
|
|
267
|
+
for (var k in followedElements) {
|
|
268
|
+
if (followedElements[k].parentNode) break;
|
|
269
|
+
delete followedElements[k];
|
|
270
|
+
}
|
|
271
|
+
var p = previousElements[previousElements.length - 1] || followedElements[k];
|
|
272
|
+
if (p && p.previousElementSibling) {
|
|
273
|
+
k -= 1;
|
|
274
|
+
if (k >= 0) followedElements[k] = p.previousElementSibling;
|
|
275
|
+
else if (p === followedElements[0]) setOpacity(p.previousElementSibling, draggingSourceOpacity);
|
|
276
|
+
else previousElements.push(p.previousElementSibling);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
else if (delta > 0) {
|
|
280
|
+
for (var k in followedElements) {
|
|
281
|
+
if (!followedElements[k].parentNode) {
|
|
282
|
+
delete followedElements[k];
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
if (followedElements[+k + 1] && followedElements[k].nextElementSibling !== followedElements[+k + 1]) {
|
|
286
|
+
followedElements.splice(+k + 1, followedElements.length - k - 1);
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
var k = 0;
|
|
292
|
+
for (var k in previousElements) {
|
|
293
|
+
if (previousElements[k].parentNode) break;
|
|
294
|
+
delete previousElements[k];
|
|
295
|
+
}
|
|
296
|
+
var f = followedElements[followedElements.length - 1] || previousElements[k];
|
|
297
|
+
if (f && f.nextElementSibling) {
|
|
298
|
+
k -= 1;
|
|
299
|
+
if (k >= 0) previousElements[k] = f.nextElementSibling;
|
|
300
|
+
else if (f === previousElements[0]) setOpacity(f.nextElementSibling, draggingSourceOpacity);
|
|
301
|
+
else followedElements.push(f.nextElementSibling);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}, 16);
|
|
244
305
|
};
|
|
245
306
|
var cancelScroll = function () {
|
|
246
307
|
clearInterval(autoScroll.ing);
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
</tr>
|
|
75
75
|
</tbody>
|
|
76
76
|
</table>
|
|
77
|
-
<list>
|
|
77
|
+
<list cell-list>
|
|
78
78
|
<div> cell_1</div>
|
|
79
79
|
<div> cell_2</div>
|
|
80
80
|
<div> cell_3</div>
|
|
@@ -88,4 +88,8 @@
|
|
|
88
88
|
<div> cell_b</div>
|
|
89
89
|
<div> cell_c</div>
|
|
90
90
|
<div> cell_d</div>
|
|
91
|
-
</list>
|
|
91
|
+
</list>
|
|
92
|
+
|
|
93
|
+
<xlist -src="a in xsrc">
|
|
94
|
+
<div> list-item <span -bind="a"></span></div>
|
|
95
|
+
</xlist>
|
|
@@ -3,7 +3,22 @@ function main() {
|
|
|
3
3
|
page.innerHTML = autodragchildren_test;
|
|
4
4
|
var body = page.querySelector("tbody");
|
|
5
5
|
autodragchildren(body, body);
|
|
6
|
-
var
|
|
7
|
-
autodragchildren(
|
|
6
|
+
var cellList = page.querySelector("list");
|
|
7
|
+
autodragchildren(cellList, cellList);
|
|
8
|
+
var xList = page.querySelector("xlist");
|
|
9
|
+
render(xList, {
|
|
10
|
+
xlist: list,
|
|
11
|
+
xsrc: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
|
|
12
|
+
})
|
|
13
|
+
autodragchildren(xList, xList, function (src, dst) {
|
|
14
|
+
var xsrc = xList.$scope.xsrc;
|
|
15
|
+
var src = src.target.index || 0;
|
|
16
|
+
var dst = xList.children[dst].index || 0;
|
|
17
|
+
var [e] = xsrc.splice(src, 1);
|
|
18
|
+
xsrc.splice(dst, 0, e);
|
|
19
|
+
render.refresh();
|
|
20
|
+
return false;
|
|
21
|
+
});
|
|
22
|
+
|
|
8
23
|
return page;
|
|
9
24
|
}
|
package/coms/zimoli/bindtouch.js
CHANGED
|
@@ -22,7 +22,7 @@ function bindtouch(target, bindder, lockDirection = false) {
|
|
|
22
22
|
var deltay = clientY - saved_y;
|
|
23
23
|
if (lockDirection) {
|
|
24
24
|
if (!direction) {
|
|
25
|
-
if (
|
|
25
|
+
if (!onclick.preventClick) return;
|
|
26
26
|
if (target.onmovestart) {
|
|
27
27
|
target.onmovestart();
|
|
28
28
|
}
|
|
@@ -31,7 +31,7 @@ function bindtouch(target, bindder, lockDirection = false) {
|
|
|
31
31
|
} else if (abs(deltax) <= .618 * abs(deltay)) {
|
|
32
32
|
direction = "y";
|
|
33
33
|
} else {
|
|
34
|
-
|
|
34
|
+
direction = 'o';
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
if (direction !== lockDirection)
|
|
@@ -61,7 +61,7 @@ var cloneChildren = function (td, copy, clone) {
|
|
|
61
61
|
});
|
|
62
62
|
break;
|
|
63
63
|
default:
|
|
64
|
-
var children =
|
|
64
|
+
var children = Array.prototype.slice.call(td.childNodes, 0).filter(isMaybeVisible);
|
|
65
65
|
children.sort((a, b) => {
|
|
66
66
|
return getZIndex(a) - getZIndex(b);
|
|
67
67
|
}).forEach(clone);
|
|
@@ -130,21 +130,20 @@ var cloneVisible = function (td) {
|
|
|
130
130
|
var _left, _top, _right, _bottom;
|
|
131
131
|
var span = document.createElement("x");
|
|
132
132
|
var hasSvg = false;
|
|
133
|
-
|
|
134
133
|
var clone = function (td) {
|
|
135
134
|
if (!isMaybeVisible(td)) return;
|
|
136
135
|
if (td.nodeType === 3) {
|
|
137
136
|
var copy = span.cloneNode();
|
|
138
137
|
copy.appendChild(td.cloneNode());
|
|
139
138
|
var parentNode = td.parentNode;
|
|
139
|
+
parentNode.insertBefore(copy, td);
|
|
140
140
|
parentNode.removeChild(td);
|
|
141
|
-
parentNode.appendChild(copy);
|
|
142
141
|
var { left, top, width, height } = getScreenPosition(copy);
|
|
143
142
|
var style = getComputedStyle(copy);
|
|
144
143
|
copyStyle(style, copy.style, cloneProperties);
|
|
145
144
|
copy.style.lineHeight = height + "px";
|
|
145
|
+
parentNode.insertBefore(td, copy);
|
|
146
146
|
parentNode.removeChild(copy);
|
|
147
|
-
parentNode.appendChild(td);
|
|
148
147
|
result.appendChild(copy);
|
|
149
148
|
} else if (td.nodeType !== 1) return;
|
|
150
149
|
|
|
@@ -187,7 +186,7 @@ var cloneVisible = function (td) {
|
|
|
187
186
|
width: _right - _left + "px",
|
|
188
187
|
height: _bottom - _top + "px"
|
|
189
188
|
});
|
|
190
|
-
|
|
189
|
+
Array.prototype.map.call(result.children, function (element) {
|
|
191
190
|
var { left, top, width, height } = element.tempstyle;
|
|
192
191
|
extend(element.style, {
|
|
193
192
|
position: "absolute",
|
package/coms/zimoli/color.js
CHANGED
|
@@ -282,12 +282,12 @@ function single(c, u) {
|
|
|
282
282
|
return [r * u, g * u, b * u];
|
|
283
283
|
}
|
|
284
284
|
function angle(c1, c2) {
|
|
285
|
+
c1 = parse(c1);
|
|
286
|
+
c2 = parse(c2);
|
|
287
|
+
c1 = normal(c1);
|
|
288
|
+
c2 = normal(c2);
|
|
285
289
|
var theta = rgb2h(c2[0], c2[1], c2[2]) - rgb2h(c1[0], c1[1], c1[2]);
|
|
286
290
|
if (theta < 0) theta += 360;
|
|
287
|
-
// c1 = parse(c1);
|
|
288
|
-
// c2 = parse(c2);
|
|
289
|
-
// c1 = normal(c1);
|
|
290
|
-
// c2 = normal(c2);
|
|
291
291
|
// var [r1, g1, b1] = single(c1);
|
|
292
292
|
// var [r2, g2, b2] = single(c2);
|
|
293
293
|
// var c = [g1 * b2 - g2 * b1, b1 * r2 - b2 * r1, r1 * g2 - r2 * g1];
|
package/coms/zimoli/drag.js
CHANGED
|
@@ -57,11 +57,9 @@ function drag(target, initialEvent, preventOverflow, isMovingSource) {
|
|
|
57
57
|
var mousemove = function (event) {
|
|
58
58
|
if (event.moveLocked) return;
|
|
59
59
|
if (/resize/i.test(getComputedStyle(document.body).cursor)) return;
|
|
60
|
-
event.moveLocked = true;
|
|
61
60
|
if (!saved_delta.ing) {
|
|
62
|
-
var abs = Math.abs;
|
|
63
61
|
var [target_left, target_top] = getOffset(target);
|
|
64
|
-
if (
|
|
62
|
+
if (!onclick.preventClick) return;
|
|
65
63
|
saved_delta.ing = true;
|
|
66
64
|
drag.target = target;
|
|
67
65
|
dispatch("dragstart", target);
|
|
@@ -82,6 +80,7 @@ function drag(target, initialEvent, preventOverflow, isMovingSource) {
|
|
|
82
80
|
saved_delta.x += clone_left - target_left;
|
|
83
81
|
saved_delta.y += clone_top - target_top;
|
|
84
82
|
}
|
|
83
|
+
event.moveLocked = true;
|
|
85
84
|
drag.target = clone;
|
|
86
85
|
var offsetLeft = saved_delta.x + event.screenX;
|
|
87
86
|
var offsetTop = saved_delta.y + event.screenY;
|
package/coms/zimoli/list.js
CHANGED
|
@@ -46,21 +46,22 @@ function ylist(container, generator, $Y) {
|
|
|
46
46
|
var children = list.childNodes;
|
|
47
47
|
for (var cx = 0, dx = children.length; cx < dx; cx++) {
|
|
48
48
|
var child = children[cx];
|
|
49
|
-
if (!(isFinite(child.index) || nodeType === 2 && child.offsetHeight)) continue;
|
|
50
|
-
child = getNodeTarget(child);
|
|
49
|
+
if (!(isFinite(child.index) && (nodeType === 0 || child.index !== null) || nodeType === 2 && child.offsetHeight)) continue;
|
|
50
|
+
if (nodeType === 1) child = getNodeTarget(child);
|
|
51
51
|
return child;
|
|
52
52
|
}
|
|
53
53
|
return null;
|
|
54
54
|
};
|
|
55
|
-
var getFirstVisibleElement = function (deltaY
|
|
55
|
+
var getFirstVisibleElement = function (deltaY) {
|
|
56
56
|
var children = list.childNodes;
|
|
57
57
|
var { scrollTop } = list;
|
|
58
|
-
|
|
58
|
+
deltaY = +deltaY;
|
|
59
|
+
if (deltaY) scrollTop += deltaY;
|
|
59
60
|
for (var cx = 0, dx = children.length; cx < dx; cx++) {
|
|
60
61
|
var child = children[cx];
|
|
61
|
-
if (!isFinite(child.index)) continue;
|
|
62
|
-
|
|
63
|
-
if (
|
|
62
|
+
if (!isFinite(child.index) || child.index === null) continue;
|
|
63
|
+
var c = getNodeTarget(child);
|
|
64
|
+
if (c.offsetTop + c.offsetHeight > scrollTop) return deltaY === 0 ? child : c;
|
|
64
65
|
}
|
|
65
66
|
return null;
|
|
66
67
|
};
|
|
@@ -86,16 +87,17 @@ function ylist(container, generator, $Y) {
|
|
|
86
87
|
return scrollBy(deltab < deltat ? deltat : deltab);
|
|
87
88
|
}
|
|
88
89
|
};
|
|
89
|
-
var getLastVisibleElement = function (deltaY
|
|
90
|
+
var getLastVisibleElement = function (deltaY) {
|
|
90
91
|
var { scrollTop } = list;
|
|
91
|
-
|
|
92
|
+
deltaY = +deltaY;
|
|
93
|
+
if (deltaY) scrollTop += deltaY;
|
|
92
94
|
var children = list.children;
|
|
93
95
|
for (var cx = children.length - 1; cx >= 0; cx--) {
|
|
94
96
|
var child = children[cx];
|
|
95
97
|
if (!isFinite(child.index)) continue;
|
|
96
|
-
|
|
97
|
-
if (
|
|
98
|
-
return child;
|
|
98
|
+
var c = getNodeTarget(child);
|
|
99
|
+
if (c.offsetTop < scrollTop + list.clientHeight) {
|
|
100
|
+
return deltaY === 0 ? child : c;
|
|
99
101
|
}
|
|
100
102
|
}
|
|
101
103
|
return null;
|
|
@@ -106,7 +108,7 @@ function ylist(container, generator, $Y) {
|
|
|
106
108
|
var map = {};
|
|
107
109
|
for (var cx = 0, dx = children.length; cx < dx; cx++) {
|
|
108
110
|
var child = children[cx];
|
|
109
|
-
if (isFinite(child.index)) {
|
|
111
|
+
if (isFinite(child.index) && child.index !== null) {
|
|
110
112
|
map[child.index] = child;
|
|
111
113
|
}
|
|
112
114
|
}
|
|
@@ -133,7 +135,8 @@ function ylist(container, generator, $Y) {
|
|
|
133
135
|
if (itemIndex < 0) index--;
|
|
134
136
|
var ratio = itemIndex - index || 0;
|
|
135
137
|
var childrenMap = getChildrenMap();
|
|
136
|
-
var offsetBottom = 0, ratioTop = 0, offset = index, last_item = getFirstElement() || null, last_index = last_item && last_item.index || offset;
|
|
138
|
+
var offsetBottom = 0, ratioTop = 0, offset = index, last_item = getFirstElement(0) || null, last_index = last_item && last_item.index || offset;
|
|
139
|
+
if (last_item) last_item = getNodeTarget(last_item);
|
|
137
140
|
var count = 0, delta = 1, bottom_item, offsett = offset, offsetb = offset, top_item;
|
|
138
141
|
var indexed_item;
|
|
139
142
|
while (offsetBottom - ratioTop <= list.clientHeight + cache_height || indexed_item && top_item && indexed_item.offsetTop - top_item.offsetTop < cache_height) {
|
|
@@ -187,9 +190,9 @@ function ylist(container, generator, $Y) {
|
|
|
187
190
|
var runbuild = lazy(function () {
|
|
188
191
|
patchBottom();
|
|
189
192
|
patchTop();
|
|
190
|
-
var firstElement = getFirstElement(
|
|
193
|
+
var firstElement = getFirstElement(), y;
|
|
191
194
|
if (firstElement) {
|
|
192
|
-
y = firstElement.index * firstElement.offsetHeight;
|
|
195
|
+
y = firstElement.index * getNodeTarget(firstElement).offsetHeight;
|
|
193
196
|
} else {
|
|
194
197
|
y = 0;
|
|
195
198
|
}
|
|
@@ -208,9 +211,10 @@ function ylist(container, generator, $Y) {
|
|
|
208
211
|
list.insertBefore(topinsert, list.firstChild);
|
|
209
212
|
//计算当前高度
|
|
210
213
|
var currentY = function () {
|
|
211
|
-
var firstElement = getFirstElement(
|
|
214
|
+
var firstElement = getFirstElement();
|
|
212
215
|
if (!firstElement) return;
|
|
213
216
|
var index = firstElement.index;
|
|
217
|
+
firstElement = getNodeTarget(firstElement);
|
|
214
218
|
if (index < 0) index = index - index | 0;
|
|
215
219
|
return index * firstElement.offsetHeight + list.scrollTop;
|
|
216
220
|
};
|
|
@@ -298,7 +302,7 @@ function ylist(container, generator, $Y) {
|
|
|
298
302
|
var cache_height = list.offsetHeight;
|
|
299
303
|
|
|
300
304
|
var childrenMap = getChildrenMap();
|
|
301
|
-
var first_element, flag_element = first_element = getFirstElement(
|
|
305
|
+
var first_element, flag_element = first_element = getFirstElement();
|
|
302
306
|
if (!flag_element || !isFinite(flag_element.offsetTop)) return;
|
|
303
307
|
var offset = flag_element.index || 0;
|
|
304
308
|
var offsetTop = flag_element.offsetTop;
|
|
@@ -421,15 +425,17 @@ function ylist(container, generator, $Y) {
|
|
|
421
425
|
list.scrollBy = scrollBy;
|
|
422
426
|
list.index = function (update) {
|
|
423
427
|
if (update === false) return saved_itemIndex;
|
|
424
|
-
var firstVisible = getFirstVisibleElement();
|
|
428
|
+
var firstVisible = getFirstVisibleElement(0);
|
|
425
429
|
if (!firstVisible) return saved_itemIndex;
|
|
426
430
|
var index = firstVisible.index;
|
|
431
|
+
firstVisible = getNodeTarget(firstVisible);
|
|
432
|
+
if (!firstVisible) return saved_itemIndex;
|
|
427
433
|
var firstElement = getFirstElement(1);
|
|
428
434
|
var scrolled = (list.scrollTop - firstVisible.offsetTop + firstElement.offsetTop + .5 | 0) / firstVisible.offsetHeight;
|
|
429
435
|
return index + scrolled;
|
|
430
436
|
};
|
|
431
437
|
list.topIndex = function () {
|
|
432
|
-
var element = getFirstElement(
|
|
438
|
+
var element = getFirstElement();
|
|
433
439
|
return element ? element.index : 0;
|
|
434
440
|
};
|
|
435
441
|
list.getIndexedElement = getIndexedElement;
|
package/coms/zimoli/mark.js
CHANGED
|
@@ -52,15 +52,17 @@ var power = function (source, search) {
|
|
|
52
52
|
var match_text_pre = source.slice(0, match_start2);
|
|
53
53
|
var match_text_aft = source.slice(match_start2 + match_text.length);
|
|
54
54
|
var pp = 0, ap = 0;
|
|
55
|
+
var p = match_text.length;
|
|
56
|
+
if (match_text_pre.length) p += .1 / match_text_pre.length - .2;
|
|
57
|
+
if (match_text_aft.length) p += .1 / match_text_aft.length - .1;
|
|
55
58
|
if (match_text_pre.length > 1) {
|
|
56
59
|
[pp, match_text_pre] = power(match_text_pre, search);
|
|
57
60
|
}
|
|
58
61
|
if (match_text_aft.length > 1) {
|
|
59
62
|
[ap, match_text_aft] = power(match_text_aft, search);
|
|
60
63
|
}
|
|
61
|
-
|
|
62
|
-
p
|
|
63
|
-
return [p + pp + ap, match_text_pre + MARK_PRE + match_text + MARK_AFT + match_text_aft];
|
|
64
|
+
p += (pp + ap) * .01;
|
|
65
|
+
return [p, match_text_pre + MARK_PRE + match_text + MARK_AFT + match_text_aft];
|
|
64
66
|
}
|
|
65
67
|
return [0, source];
|
|
66
68
|
};
|
|
@@ -7,22 +7,24 @@
|
|
|
7
7
|
<textarea _value="refilm_encode(steps[index])">
|
|
8
8
|
|
|
9
9
|
</textarea>
|
|
10
|
-
<
|
|
11
|
-
<
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
10
|
+
<div class="form">
|
|
11
|
+
<table>
|
|
12
|
+
<thead>
|
|
13
|
+
<tr>
|
|
14
|
+
<td ng-repeat="(f,i) in refilms">
|
|
15
|
+
<span ng-bind="f.name"></span>
|
|
16
|
+
</td>
|
|
17
|
+
</tr>
|
|
18
|
+
</thead>
|
|
19
|
+
<tbody>
|
|
20
|
+
<tr ng-repeat="s in steps[index]">
|
|
21
|
+
<td ng-repeat="r in refilms">
|
|
22
|
+
<span bg-bind="String(s[r.key]||'')"></span>
|
|
23
|
+
</td>
|
|
24
|
+
</tr>
|
|
25
|
+
</tbody>
|
|
26
|
+
</table>
|
|
27
|
+
</div>
|
|
26
28
|
<form class="form">
|
|
27
29
|
<field ng-src="[f,data]" ng-repeat="(f,i) in steps[index]"></field>
|
|
28
30
|
</form>
|
|
@@ -28,17 +28,24 @@
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
>textarea,
|
|
31
|
-
|
|
31
|
+
>.form {
|
|
32
32
|
width: 400px;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
>textarea,
|
|
36
36
|
>form,
|
|
37
|
-
|
|
37
|
+
>.form {
|
|
38
38
|
overflow: auto;
|
|
39
39
|
height: calc(~"100% - 220px");
|
|
40
40
|
vertical-align: top;
|
|
41
41
|
display: inline-block;
|
|
42
|
+
table{
|
|
43
|
+
width: auto;
|
|
44
|
+
}
|
|
45
|
+
td{
|
|
46
|
+
white-space: nowrap;
|
|
47
|
+
overflow: hidden;
|
|
48
|
+
}
|
|
42
49
|
font-size: 16px;
|
|
43
50
|
font-family: 仿宋;
|
|
44
51
|
}
|
package/coms/zimoli/resize.js
CHANGED
|
@@ -160,8 +160,10 @@ resize.on = function (elem, dragHandle) {
|
|
|
160
160
|
if (!~resizingElements.indexOf(elem)) {
|
|
161
161
|
resizingElements.push(elem);
|
|
162
162
|
}
|
|
163
|
-
|
|
163
|
+
resizeh.call(elem);
|
|
164
164
|
});
|
|
165
|
+
bind('render')(elem, resizeh);
|
|
166
|
+
bind('resize')(elem, resizeh);
|
|
165
167
|
on('remove')(elem, function () {
|
|
166
168
|
var index = resizingElements.indexOf(this);
|
|
167
169
|
if (~index) resizingElements.splice(index, 1);
|
package/coms/zimoli/search.js
CHANGED
|
@@ -1,19 +1,77 @@
|
|
|
1
1
|
function search(seartext, options, path = "name") {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
2
|
+
var a = new SearchResult;
|
|
3
|
+
a.searchPath = path;
|
|
4
|
+
a.searchText = seartext;
|
|
5
|
+
a.source = options;
|
|
6
|
+
if (a.searchText) a.start();
|
|
7
|
+
return a;
|
|
8
|
+
}
|
|
9
|
+
function minusPower(a, b) {
|
|
10
|
+
return a.power - b.power >= 0;
|
|
11
|
+
}
|
|
12
|
+
function returnName() {
|
|
13
|
+
return this.name;
|
|
14
|
+
}
|
|
15
|
+
class SearchResult extends Array {
|
|
16
|
+
searchPath = 'name';
|
|
17
|
+
searchText = null;
|
|
18
|
+
source = null;
|
|
19
|
+
complete = true;
|
|
20
|
+
searched = 0;
|
|
21
|
+
searchid = 0;
|
|
22
|
+
hasFullmatch = false;
|
|
23
|
+
callback = null;
|
|
24
|
+
addItem(o) {
|
|
25
|
+
var path = this.searchPath;
|
|
26
|
+
var seartext = this.searchText;
|
|
27
|
+
if (isEmpty(o)) return;
|
|
28
|
+
var name = seek(o, path);
|
|
29
|
+
if (name === seartext) this.hasFullmatch = true;
|
|
30
|
+
var [power, m] = mark.power(name, seartext);
|
|
31
|
+
if (isNode(o)) {
|
|
32
|
+
o = extend({
|
|
33
|
+
name: o.name,
|
|
34
|
+
title: o.title,
|
|
35
|
+
value: o.value,
|
|
36
|
+
key: o.key,
|
|
37
|
+
nodeType: o.nodeType,
|
|
38
|
+
tagName: o.tagName,
|
|
39
|
+
nodeValue: o.nodeValue,
|
|
40
|
+
}, o);
|
|
41
|
+
}
|
|
42
|
+
else o = isObject(o) ? Object.create(o) : new o.constructor(o);
|
|
43
|
+
o.power = power;
|
|
44
|
+
if (isString(path)) o[path] = m;
|
|
45
|
+
else o.name = m, o.toString = returnName, o.valueOf = returnName;
|
|
46
|
+
if (o.power > 0) {
|
|
47
|
+
saveToOrderedArray(this, o, minusPower);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
search(text, callback) {
|
|
51
|
+
if (isFunction(callback)) this.callback = callback;
|
|
52
|
+
if (text === this.searchText) return;
|
|
53
|
+
this.searchText = text;
|
|
54
|
+
this.start();
|
|
55
|
+
}
|
|
56
|
+
async start() {
|
|
57
|
+
this.searched = 0;
|
|
58
|
+
this.splice(0, this.length);
|
|
59
|
+
var searchid = ++this.searchid;
|
|
60
|
+
this.complete = false;
|
|
61
|
+
if (this.searchText) for (var o of this.source) {
|
|
62
|
+
this.addItem(o);
|
|
63
|
+
if (++this.searched % 6000 === 0) {
|
|
64
|
+
if (isFunction(this.callback)) this.callback();
|
|
65
|
+
await new Promise(function (ok) {
|
|
66
|
+
setTimeout(ok, 20)
|
|
67
|
+
});
|
|
68
|
+
if (this.searchid !== searchid) break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
this.complete = true;
|
|
72
|
+
if (isFunction(this.callback)) this.callback();
|
|
73
|
+
}
|
|
74
|
+
abort() {
|
|
75
|
+
this.searchid++;
|
|
18
76
|
}
|
|
19
77
|
}
|
package/coms/zimoli/select.js
CHANGED
|
@@ -124,7 +124,7 @@ function select(target, list, removeOnSelect, direction) {
|
|
|
124
124
|
var initList2 = function (src) {
|
|
125
125
|
src.forEach(s => {
|
|
126
126
|
optionsMap[s.key] = s;
|
|
127
|
-
s.selected = s.key === target.value;
|
|
127
|
+
if (isObject(s)) s.selected = s.key === target.value;
|
|
128
128
|
});
|
|
129
129
|
list = selectList(generator, src, !!target.multiple, !!target.editable);
|
|
130
130
|
list.value = target.value;
|
|
@@ -183,6 +183,7 @@ function select(target, list, removeOnSelect, direction) {
|
|
|
183
183
|
if (!target.multiple) {
|
|
184
184
|
onclick(list, onlistclick);
|
|
185
185
|
}
|
|
186
|
+
removeOnSelect = undefined;
|
|
186
187
|
bindEvent();
|
|
187
188
|
};
|
|
188
189
|
}
|