@cloud-app-dev/vidc 3.0.21 → 3.0.23
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/.umirc.ts +1 -1
- package/es/RIO/demo.d.ts +2 -0
- package/es/RIO/demo.js +18 -0
- package/es/RIO/index.css +29 -0
- package/es/RIO/index.d.ts +39 -0
- package/es/RIO/index.js +62 -0
- package/es/RIO/utils.d.ts +1 -0
- package/es/RIO/utils.js +1 -0
- package/es/ScreenPlayer/Record.js +37 -21
- package/es/ScreenPlayer/demo2.js +17 -1
- package/es/ScreenPlayer/interface.d.ts +4 -1
- package/es/ScreenPlayer/useRecordList.js +146 -68
- package/es/ScreenPlayer/useTimeSlider.js +1 -16
- package/es/index.d.ts +2 -0
- package/es/index.js +2 -0
- package/es/useDrawRIO/index.d.ts +13 -0
- package/es/useDrawRIO/index.js +312 -0
- package/package.json +4 -1
package/.umirc.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { defineConfig } from 'dumi';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
|
|
4
4
|
const token =
|
|
5
|
-
'eyJhbGciOiJIUzI1NiJ9.
|
|
5
|
+
'eyJhbGciOiJIUzI1NiJ9.eyJvcmdhbml6YXRpb25JZCI6IjEwMDEwMTAwMDQ0NSIsImV4dCI6MTY2MzkyNzM5NjQzMCwidWlkIjoiMTAxMDAwMDAwNjk5IiwidmFsaWRTdGF0ZSI6MTA0NDA2LCJyb2xlSWQiOlsxMDAwMDAxMTA1MTgsMTAwMDAwMTEwNzI4XSwidmFsaWRUaW1lIjoxNzA0MzgzOTk5MDAwLCJvcHRDZW50ZXJJZCI6IjEwMDEwMDAwMDIzMyIsInVzZXJUeXBlIjoxMDA3MDQsImlhdCI6MTY2MzY2ODE5NjQzMH0.bJbtN-QjTUGGSIJRfR1ycjhtGt6UCEsrS29CYN-AAfw';
|
|
6
6
|
|
|
7
7
|
export default defineConfig({
|
|
8
8
|
title: 'CloudApp VIDC',
|
package/es/RIO/demo.d.ts
ADDED
package/es/RIO/demo.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import RIO from './index';
|
|
3
|
+
|
|
4
|
+
var App = function App() {
|
|
5
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
6
|
+
style: {
|
|
7
|
+
width: 600,
|
|
8
|
+
height: 400,
|
|
9
|
+
background: '#999'
|
|
10
|
+
}
|
|
11
|
+
}, /*#__PURE__*/React.createElement(RIO, {
|
|
12
|
+
debug: true,
|
|
13
|
+
isOpen: true,
|
|
14
|
+
onChange: console.log
|
|
15
|
+
}));
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export default App;
|
package/es/RIO/index.css
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
.rio-layout {
|
|
2
|
+
width: 100%;
|
|
3
|
+
height: 100%;
|
|
4
|
+
position: relative;
|
|
5
|
+
}
|
|
6
|
+
.rio-layout canvas {
|
|
7
|
+
position: absolute;
|
|
8
|
+
left: 0;
|
|
9
|
+
top: 0;
|
|
10
|
+
width: 100%;
|
|
11
|
+
height: 100%;
|
|
12
|
+
}
|
|
13
|
+
.rio-layout .rio-debug-box {
|
|
14
|
+
position: absolute;
|
|
15
|
+
left: 0;
|
|
16
|
+
top: 0;
|
|
17
|
+
width: 100%;
|
|
18
|
+
height: 100%;
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
}
|
|
22
|
+
.rio-layout .rio-debug-box > div {
|
|
23
|
+
display: flex;
|
|
24
|
+
flex: 1;
|
|
25
|
+
}
|
|
26
|
+
.rio-layout .rio-debug-box > div span {
|
|
27
|
+
flex: 1;
|
|
28
|
+
border: 1px solid #eee;
|
|
29
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './index.less';
|
|
3
|
+
interface IRIOProps {
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
/**
|
|
6
|
+
* 调试模式,开启回绘制具体网格
|
|
7
|
+
*/
|
|
8
|
+
debug?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* 绘制数据变化
|
|
11
|
+
*/
|
|
12
|
+
onChange?: (rio: number[][]) => void;
|
|
13
|
+
/**
|
|
14
|
+
* 开启/关闭 标识
|
|
15
|
+
*/
|
|
16
|
+
isOpen?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* key变化回清楚画布
|
|
19
|
+
*/
|
|
20
|
+
renderKey?: React.Key;
|
|
21
|
+
/**
|
|
22
|
+
* rio共多少行
|
|
23
|
+
* @default 18
|
|
24
|
+
*/
|
|
25
|
+
row?: number;
|
|
26
|
+
/**
|
|
27
|
+
* rio 一行有多少个位置
|
|
28
|
+
* @default 32
|
|
29
|
+
*/
|
|
30
|
+
rowItems?: number;
|
|
31
|
+
}
|
|
32
|
+
declare function RIO({ children, debug, renderKey, onChange, isOpen, row, rowItems }: IRIOProps): JSX.Element;
|
|
33
|
+
declare namespace RIO {
|
|
34
|
+
var defaultProps: {
|
|
35
|
+
row: number;
|
|
36
|
+
rowItems: number;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export default RIO;
|
package/es/RIO/index.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import _useUpdateEffect from "ahooks/es/useUpdateEffect";
|
|
2
|
+
import React, { useEffect, useRef } from 'react';
|
|
3
|
+
import useDrawRIO from '../useDrawRIO';
|
|
4
|
+
import "./index.css";
|
|
5
|
+
|
|
6
|
+
function RIO(_ref) {
|
|
7
|
+
var children = _ref.children,
|
|
8
|
+
debug = _ref.debug,
|
|
9
|
+
renderKey = _ref.renderKey,
|
|
10
|
+
onChange = _ref.onChange,
|
|
11
|
+
isOpen = _ref.isOpen,
|
|
12
|
+
row = _ref.row,
|
|
13
|
+
rowItems = _ref.rowItems;
|
|
14
|
+
var ref = useRef(null);
|
|
15
|
+
|
|
16
|
+
var _useDrawRIO = useDrawRIO(ref, {
|
|
17
|
+
row: row,
|
|
18
|
+
rowItems: rowItems
|
|
19
|
+
}),
|
|
20
|
+
open = _useDrawRIO.open,
|
|
21
|
+
close = _useDrawRIO.close,
|
|
22
|
+
clear = _useDrawRIO.clear,
|
|
23
|
+
rio = _useDrawRIO.rio; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
useEffect(function () {
|
|
27
|
+
return isOpen ? open() : close();
|
|
28
|
+
}, [isOpen]);
|
|
29
|
+
|
|
30
|
+
_useUpdateEffect(function () {
|
|
31
|
+
return clear();
|
|
32
|
+
}, [renderKey]);
|
|
33
|
+
|
|
34
|
+
_useUpdateEffect(function () {
|
|
35
|
+
return onChange === null || onChange === void 0 ? void 0 : onChange(rio);
|
|
36
|
+
}, [rio]);
|
|
37
|
+
|
|
38
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
39
|
+
className: "rio-layout"
|
|
40
|
+
}, children, debug && /*#__PURE__*/React.createElement("div", {
|
|
41
|
+
className: "rio-debug-box"
|
|
42
|
+
}, rio.map(function (item, index) {
|
|
43
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
44
|
+
key: "row-".concat(index)
|
|
45
|
+
}, item.map(function (n, i) {
|
|
46
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
47
|
+
key: "item-".concat(i),
|
|
48
|
+
style: {
|
|
49
|
+
backgroundColor: n === 1 ? 'rgba(0,0,0,0.5)' : 'transparent'
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}));
|
|
53
|
+
})), /*#__PURE__*/React.createElement("canvas", {
|
|
54
|
+
ref: ref
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
RIO.defaultProps = {
|
|
59
|
+
row: 18,
|
|
60
|
+
rowItems: 32
|
|
61
|
+
};
|
|
62
|
+
export default RIO;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function drawMark(ctx: CanvasRenderingContext2D, x: number, y: number): void;
|
package/es/RIO/utils.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function drawMark(ctx, x, y) {}
|
|
@@ -15,6 +15,8 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symb
|
|
|
15
15
|
|
|
16
16
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
17
17
|
|
|
18
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
19
|
+
|
|
18
20
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
19
21
|
|
|
20
22
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -140,35 +142,47 @@ function RecordPlayer(_a) {
|
|
|
140
142
|
return;
|
|
141
143
|
}
|
|
142
144
|
|
|
143
|
-
var diffIndexs = differenceWithIndexs(listKey.split('-'), prevListKey.split('-'))
|
|
144
|
-
return v.value !== FILTER_KEY;
|
|
145
|
-
});
|
|
145
|
+
var diffIndexs = differenceWithIndexs(listKey.split('-'), prevListKey.split('-'));
|
|
146
146
|
|
|
147
147
|
if (diffIndexs.length === 0) {
|
|
148
148
|
return;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
var i = diffIndexs[0].idx; // 变化索引
|
|
152
|
-
|
|
153
151
|
setState(function (old) {
|
|
154
152
|
var mergeList = old.mergeSegments;
|
|
155
|
-
var times = old.currentTimes;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
153
|
+
var times = old.currentTimes; // 批量更新调整
|
|
154
|
+
|
|
155
|
+
var _iterator = _createForOfIteratorHelper(diffIndexs),
|
|
156
|
+
_step;
|
|
157
|
+
|
|
158
|
+
try {
|
|
159
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
160
|
+
var dif = _step.value;
|
|
161
|
+
var i = dif.idx;
|
|
162
|
+
var item = list[i];
|
|
163
|
+
|
|
164
|
+
if (!item) {
|
|
165
|
+
// 可能是外部的关闭动作关闭
|
|
166
|
+
mergeList[i] = undefined;
|
|
167
|
+
} else {
|
|
168
|
+
if (!mergeList[i]) {
|
|
169
|
+
mergeList[i] = {};
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
mergeList[i].date = item.date;
|
|
173
|
+
mergeList[i].segments = mergeList[i].cid !== item.cid ? [] : mergeList[i].segments;
|
|
174
|
+
mergeList[i].cid = item.cid;
|
|
175
|
+
mergeList[i].recordType = item.recordType; // 更新变化的currentTime
|
|
176
|
+
|
|
177
|
+
times[i] = list[i].date;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
} catch (err) {
|
|
181
|
+
_iterator.e(err);
|
|
182
|
+
} finally {
|
|
183
|
+
_iterator.f();
|
|
164
184
|
}
|
|
165
185
|
|
|
166
|
-
mergeList[i].date = item.date;
|
|
167
|
-
mergeList[i].segments = mergeList[i].cid !== item.cid ? [] : mergeList[i].segments;
|
|
168
|
-
mergeList[i].cid = item.cid;
|
|
169
|
-
mergeList[i].recordType = item.recordType; // 更新变化的currentTime
|
|
170
|
-
|
|
171
|
-
times[i] = list[i].date;
|
|
172
186
|
return Object.assign(Object.assign({}, old), {
|
|
173
187
|
mergeSegments: _toConsumableArray(mergeList),
|
|
174
188
|
currentTimes: _toConsumableArray(times)
|
|
@@ -432,7 +446,9 @@ function RecordPlayer(_a) {
|
|
|
432
446
|
snapshot: snapshot,
|
|
433
447
|
oneWinExtTools: oneWinExtTools,
|
|
434
448
|
allWinExtTools: allWinExtTools
|
|
435
|
-
}), /*#__PURE__*/React.createElement(
|
|
449
|
+
})), /*#__PURE__*/React.createElement(DisableMark, {
|
|
450
|
+
disabled: !segmentItem.cid
|
|
451
|
+
}, /*#__PURE__*/React.createElement(SegmentTimeLine, {
|
|
436
452
|
begin: timeBegin,
|
|
437
453
|
updateState: updateState,
|
|
438
454
|
segments: segmentItem.segments,
|
package/es/ScreenPlayer/demo2.js
CHANGED
|
@@ -28,7 +28,7 @@ import RecordPlayer from './Record';
|
|
|
28
28
|
import moment from 'moment';
|
|
29
29
|
import Service from '../Service';
|
|
30
30
|
import { completionSegments } from './utils';
|
|
31
|
-
var token = "eyJhbGciOiJIUzI1NiJ9.
|
|
31
|
+
var token = "eyJhbGciOiJIUzI1NiJ9.eyJvcmdhbml6YXRpb25JZCI6IjEwMDEwMTAwMDQ0NSIsImV4dCI6MTY2MzkyNzM5NjQzMCwidWlkIjoiMTAxMDAwMDAwNjk5IiwidmFsaWRTdGF0ZSI6MTA0NDA2LCJyb2xlSWQiOlsxMDAwMDAxMTA1MTgsMTAwMDAwMTEwNzI4XSwidmFsaWRUaW1lIjoxNzA0MzgzOTk5MDAwLCJvcHRDZW50ZXJJZCI6IjEwMDEwMDAwMDIzMyIsInVzZXJUeXBlIjoxMDA3MDQsImlhdCI6MTY2MzY2ODE5NjQzMH0.bJbtN-QjTUGGSIJRfR1ycjhtGt6UCEsrS29CYN-AAfw";
|
|
32
32
|
var cids = ['538509097', '539172446'];
|
|
33
33
|
|
|
34
34
|
var query = function query(_ref) {
|
|
@@ -148,6 +148,22 @@ export default function App() {
|
|
|
148
148
|
idx: idx
|
|
149
149
|
});
|
|
150
150
|
});
|
|
151
|
+
},
|
|
152
|
+
onClose: function onClose() {
|
|
153
|
+
var list = state.list;
|
|
154
|
+
list[state.idx] = undefined;
|
|
155
|
+
setState(function (old) {
|
|
156
|
+
return Object.assign(Object.assign({}, old), {
|
|
157
|
+
list: _toConsumableArray(list)
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
},
|
|
161
|
+
onCloseAll: function onCloseAll() {
|
|
162
|
+
return setState(function (old) {
|
|
163
|
+
return Object.assign(Object.assign({}, old), {
|
|
164
|
+
list: []
|
|
165
|
+
});
|
|
166
|
+
});
|
|
151
167
|
}
|
|
152
168
|
}))));
|
|
153
169
|
}
|
|
@@ -13,6 +13,8 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symb
|
|
|
13
13
|
|
|
14
14
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
15
15
|
|
|
16
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
17
|
+
|
|
16
18
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
17
19
|
|
|
18
20
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -51,14 +53,13 @@ export default function useRecordList(list, queryRecord) {
|
|
|
51
53
|
|
|
52
54
|
_useAsyncEffect(function () {
|
|
53
55
|
return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
54
|
-
var diffIndexs, index, item, record, segments,
|
|
56
|
+
var diffIndexs, arr, _iterator, _step, dif, index, item, record, segments, _segments, _segments2, _segments3;
|
|
57
|
+
|
|
55
58
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
56
59
|
while (1) {
|
|
57
60
|
switch (_context.prev = _context.next) {
|
|
58
61
|
case 0:
|
|
59
|
-
diffIndexs = differenceWithIndexs(listKey ? listKey.split('-') : [], prevListKey ? prevListKey.split('-') : [])
|
|
60
|
-
return v.value !== FILTER_KEY;
|
|
61
|
-
});
|
|
62
|
+
diffIndexs = differenceWithIndexs(listKey ? listKey.split('-') : [], prevListKey ? prevListKey.split('-') : []);
|
|
62
63
|
|
|
63
64
|
if (!(diffIndexs.length === 0)) {
|
|
64
65
|
_context.next = 3;
|
|
@@ -68,137 +69,214 @@ export default function useRecordList(list, queryRecord) {
|
|
|
68
69
|
return _context.abrupt("return");
|
|
69
70
|
|
|
70
71
|
case 3:
|
|
71
|
-
|
|
72
|
+
arr = []; // 存在披露更新的情况
|
|
73
|
+
|
|
74
|
+
_iterator = _createForOfIteratorHelper(diffIndexs);
|
|
75
|
+
_context.prev = 5;
|
|
76
|
+
|
|
77
|
+
_iterator.s();
|
|
78
|
+
|
|
79
|
+
case 7:
|
|
80
|
+
if ((_step = _iterator.n()).done) {
|
|
81
|
+
_context.next = 41;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
dif = _step.value;
|
|
86
|
+
index = dif.idx;
|
|
87
|
+
item = list[index]; // 当前外部传入的对象
|
|
72
88
|
|
|
73
|
-
|
|
74
|
-
record = state.cidSegments[index];
|
|
89
|
+
record = state.cidSegments[index]; //当前转换的播放对象
|
|
75
90
|
|
|
91
|
+
if (item) {
|
|
92
|
+
_context.next = 16;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// 这里可能原来是空,也可能是外部删除
|
|
97
|
+
arr.push({
|
|
98
|
+
idx: index,
|
|
99
|
+
type: 'delete',
|
|
100
|
+
segments: []
|
|
101
|
+
});
|
|
102
|
+
_context.next = 39;
|
|
103
|
+
break;
|
|
104
|
+
|
|
105
|
+
case 16:
|
|
76
106
|
if (!(item.cid && item.date)) {
|
|
77
|
-
_context.next =
|
|
107
|
+
_context.next = 39;
|
|
78
108
|
break;
|
|
79
109
|
}
|
|
80
110
|
|
|
81
111
|
if (record) {
|
|
82
|
-
_context.next =
|
|
112
|
+
_context.next = 24;
|
|
83
113
|
break;
|
|
84
114
|
}
|
|
85
115
|
|
|
86
|
-
|
|
87
|
-
type = 'add';
|
|
88
|
-
_context.next = 11;
|
|
116
|
+
_context.next = 20;
|
|
89
117
|
return queryRecord({
|
|
90
118
|
cid: item.cid,
|
|
91
119
|
date: item.date,
|
|
92
120
|
recordType: item.recordType
|
|
93
121
|
});
|
|
94
122
|
|
|
95
|
-
case
|
|
123
|
+
case 20:
|
|
96
124
|
segments = _context.sent;
|
|
97
|
-
|
|
125
|
+
arr.push({
|
|
126
|
+
idx: index,
|
|
127
|
+
type: 'add',
|
|
128
|
+
segments: segments
|
|
129
|
+
});
|
|
130
|
+
_context.next = 39;
|
|
98
131
|
break;
|
|
99
132
|
|
|
100
|
-
case
|
|
133
|
+
case 24:
|
|
101
134
|
if (!(record.cid !== item.cid || record.recordType !== item.recordType)) {
|
|
102
|
-
_context.next =
|
|
135
|
+
_context.next = 31;
|
|
103
136
|
break;
|
|
104
137
|
}
|
|
105
138
|
|
|
106
|
-
|
|
107
|
-
type = 'add';
|
|
108
|
-
_context.next = 18;
|
|
139
|
+
_context.next = 27;
|
|
109
140
|
return queryRecord({
|
|
110
141
|
cid: item.cid,
|
|
111
142
|
date: item.date,
|
|
112
143
|
recordType: item.recordType
|
|
113
144
|
});
|
|
114
145
|
|
|
115
|
-
case
|
|
116
|
-
|
|
117
|
-
|
|
146
|
+
case 27:
|
|
147
|
+
_segments = _context.sent;
|
|
148
|
+
arr.push({
|
|
149
|
+
idx: index,
|
|
150
|
+
type: 'add',
|
|
151
|
+
segments: _segments
|
|
152
|
+
});
|
|
153
|
+
_context.next = 39;
|
|
118
154
|
break;
|
|
119
155
|
|
|
120
|
-
case
|
|
156
|
+
case 31:
|
|
121
157
|
if (!(record.date !== item.date)) {
|
|
122
|
-
_context.next =
|
|
158
|
+
_context.next = 38;
|
|
123
159
|
break;
|
|
124
160
|
}
|
|
125
161
|
|
|
126
|
-
|
|
127
|
-
type = 'modify';
|
|
128
|
-
_context.next = 25;
|
|
162
|
+
_context.next = 34;
|
|
129
163
|
return queryRecord({
|
|
130
164
|
cid: item.cid,
|
|
131
165
|
date: item.date,
|
|
132
166
|
recordType: item.recordType
|
|
133
167
|
});
|
|
134
168
|
|
|
135
|
-
case
|
|
136
|
-
|
|
137
|
-
|
|
169
|
+
case 34:
|
|
170
|
+
_segments2 = _context.sent;
|
|
171
|
+
arr.push({
|
|
172
|
+
idx: index,
|
|
173
|
+
type: 'modify',
|
|
174
|
+
segments: _segments2
|
|
175
|
+
});
|
|
176
|
+
_context.next = 39;
|
|
138
177
|
break;
|
|
139
178
|
|
|
140
|
-
case
|
|
179
|
+
case 38:
|
|
141
180
|
if (Array.isArray(item.segments) && item.segments.length > 0) {
|
|
142
181
|
// 时间轴更新
|
|
143
|
-
|
|
144
|
-
|
|
182
|
+
_segments3 = item.segments;
|
|
183
|
+
arr.push({
|
|
184
|
+
idx: index,
|
|
185
|
+
type: 'modify',
|
|
186
|
+
segments: _segments3
|
|
187
|
+
});
|
|
145
188
|
} else {
|
|
146
189
|
console.debug('无变化!跳过~');
|
|
147
190
|
}
|
|
148
191
|
|
|
149
|
-
case
|
|
192
|
+
case 39:
|
|
193
|
+
_context.next = 7;
|
|
194
|
+
break;
|
|
195
|
+
|
|
196
|
+
case 41:
|
|
197
|
+
_context.next = 46;
|
|
198
|
+
break;
|
|
199
|
+
|
|
200
|
+
case 43:
|
|
201
|
+
_context.prev = 43;
|
|
202
|
+
_context.t0 = _context["catch"](5);
|
|
203
|
+
|
|
204
|
+
_iterator.e(_context.t0);
|
|
205
|
+
|
|
206
|
+
case 46:
|
|
207
|
+
_context.prev = 46;
|
|
208
|
+
|
|
209
|
+
_iterator.f();
|
|
210
|
+
|
|
211
|
+
return _context.finish(46);
|
|
212
|
+
|
|
213
|
+
case 49:
|
|
150
214
|
setState(function (old) {
|
|
151
215
|
var flag = false; //标记是否更新
|
|
152
216
|
|
|
153
217
|
var cidSegments = state.cidSegments;
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
segments
|
|
166
|
-
|
|
167
|
-
break;
|
|
168
|
-
|
|
169
|
-
case 'modify':
|
|
170
|
-
flag = true;
|
|
171
|
-
cidSegments[index].date = item.date;
|
|
172
|
-
cidSegments[index].recordType = item.recordType;
|
|
173
|
-
var dif = differenceBy(cidSegments[index].segments, segments, 'beginTime');
|
|
174
|
-
|
|
175
|
-
if (dif.length === 0) {
|
|
176
|
-
flag = false;
|
|
177
|
-
} else {
|
|
178
|
-
var arr2 = [].concat(cidSegments[index].segments, segments);
|
|
179
|
-
arr2 = arr2.map(function (v) {
|
|
218
|
+
arr.forEach(function (_ref) {
|
|
219
|
+
var type = _ref.type,
|
|
220
|
+
segments = _ref.segments,
|
|
221
|
+
idx = _ref.idx;
|
|
222
|
+
var index = idx;
|
|
223
|
+
var item = list[index];
|
|
224
|
+
|
|
225
|
+
switch (type) {
|
|
226
|
+
case 'add':
|
|
227
|
+
// 这里重置播放对象
|
|
228
|
+
flag = true;
|
|
229
|
+
var arr1 = item.segments ? [].concat(item.segments, segments) : segments;
|
|
230
|
+
arr1 = arr1.map(function (v) {
|
|
180
231
|
return Object.assign(Object.assign({}, v), {
|
|
181
232
|
id: "".concat(v.beginTime, "-").concat(v.endTime)
|
|
182
233
|
});
|
|
183
234
|
});
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
235
|
+
cidSegments[index] = Object.assign(Object.assign({}, item), {
|
|
236
|
+
segments: orderBy(uniqBy(arr1, 'id'), 'beginTime', 'asc')
|
|
237
|
+
});
|
|
238
|
+
break;
|
|
239
|
+
|
|
240
|
+
case 'delete':
|
|
241
|
+
// 这里一是保持无播放对象,二是删除当前播放对象
|
|
242
|
+
flag = true;
|
|
243
|
+
cidSegments[index] = undefined;
|
|
244
|
+
break;
|
|
245
|
+
|
|
246
|
+
case 'modify':
|
|
247
|
+
// 这里属于相同的播放对象,需要追加播放片断
|
|
248
|
+
flag = true;
|
|
249
|
+
cidSegments[index].date = item.date;
|
|
250
|
+
cidSegments[index].recordType = item.recordType;
|
|
251
|
+
var dif = differenceBy(cidSegments[index].segments, segments, 'beginTime');
|
|
252
|
+
|
|
253
|
+
if (dif.length === 0) {
|
|
254
|
+
flag = false;
|
|
255
|
+
} else {
|
|
256
|
+
var arr2 = [].concat(cidSegments[index].segments, segments);
|
|
257
|
+
arr2 = arr2.map(function (v) {
|
|
258
|
+
return Object.assign(Object.assign({}, v), {
|
|
259
|
+
id: "".concat(v.beginTime, "-").concat(v.endTime)
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
arr2 = uniqBy(arr2, 'id');
|
|
263
|
+
cidSegments[index].segments = orderBy(arr2, 'beginTime', 'asc');
|
|
264
|
+
}
|
|
190
265
|
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
});
|
|
191
269
|
return Object.assign(Object.assign({}, old), {
|
|
192
270
|
cidSegments: flag ? _toConsumableArray(cidSegments) : cidSegments
|
|
193
271
|
});
|
|
194
272
|
});
|
|
195
273
|
|
|
196
|
-
case
|
|
274
|
+
case 50:
|
|
197
275
|
case "end":
|
|
198
276
|
return _context.stop();
|
|
199
277
|
}
|
|
200
278
|
}
|
|
201
|
-
}, _callee);
|
|
279
|
+
}, _callee, null, [[5, 43, 46, 49]]);
|
|
202
280
|
}));
|
|
203
281
|
}, [list, listKey, prevListKey]);
|
|
204
282
|
|
|
@@ -285,22 +285,7 @@ function useTimeSlider(canvasRef, _ref2) {
|
|
|
285
285
|
|
|
286
286
|
|
|
287
287
|
var get_cursor_x_position = function get_cursor_x_position(e) {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
var _canvas$getBoundingCl = canvas.getBoundingClientRect(),
|
|
291
|
-
left = _canvas$getBoundingCl.left;
|
|
292
|
-
|
|
293
|
-
if (!e) {
|
|
294
|
-
e = window.event;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
if (e.pageX || e.pageY) {
|
|
298
|
-
posx = e.pageX - left;
|
|
299
|
-
} else if (e.clientX || e.clientY) {
|
|
300
|
-
posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
return posx;
|
|
288
|
+
return e.offsetX;
|
|
304
289
|
};
|
|
305
290
|
/**
|
|
306
291
|
* 更新画布大小
|
package/es/index.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ export { default as Picture } from './Picture';
|
|
|
29
29
|
export { default as Player } from './Player';
|
|
30
30
|
export { default as PlayerExt } from './PlayerExt';
|
|
31
31
|
export { default as Progress } from './Progress';
|
|
32
|
+
export { default as RIO } from './RIO';
|
|
32
33
|
export { default as ScreenPlayer } from './ScreenPlayer';
|
|
33
34
|
export { default as SegmentPlayer } from './SegmentPlayer';
|
|
34
35
|
export { default as Service } from './Service';
|
|
@@ -36,6 +37,7 @@ export { default as TableLayout } from './TableLayout';
|
|
|
36
37
|
export { default as ThemeAntd } from './ThemeAntd';
|
|
37
38
|
export { default as Timeout } from './Timeout';
|
|
38
39
|
export { default as Tree } from './Tree';
|
|
40
|
+
export { default as useDrawRIO } from './useDrawRIO';
|
|
39
41
|
export { default as useFullscreen } from './useFullscreen';
|
|
40
42
|
export { default as useHistory } from './useHistory';
|
|
41
43
|
export { default as useInfiniteScroll } from './useInfiniteScroll';
|
package/es/index.js
CHANGED
|
@@ -29,6 +29,7 @@ export { default as Picture } from './Picture';
|
|
|
29
29
|
export { default as Player } from './Player';
|
|
30
30
|
export { default as PlayerExt } from './PlayerExt';
|
|
31
31
|
export { default as Progress } from './Progress';
|
|
32
|
+
export { default as RIO } from './RIO';
|
|
32
33
|
export { default as ScreenPlayer } from './ScreenPlayer';
|
|
33
34
|
export { default as SegmentPlayer } from './SegmentPlayer';
|
|
34
35
|
export { default as Service } from './Service';
|
|
@@ -36,6 +37,7 @@ export { default as TableLayout } from './TableLayout';
|
|
|
36
37
|
export { default as ThemeAntd } from './ThemeAntd';
|
|
37
38
|
export { default as Timeout } from './Timeout';
|
|
38
39
|
export { default as Tree } from './Tree';
|
|
40
|
+
export { default as useDrawRIO } from './useDrawRIO';
|
|
39
41
|
export { default as useFullscreen } from './useFullscreen';
|
|
40
42
|
export { default as useHistory } from './useHistory';
|
|
41
43
|
export { default as useInfiniteScroll } from './useInfiniteScroll';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BasicTarget } from 'ahooks/lib/utils/domTarget';
|
|
2
|
+
interface RIOOptions {
|
|
3
|
+
row: number;
|
|
4
|
+
rowItems: number;
|
|
5
|
+
}
|
|
6
|
+
declare function useDrawRIO(target: BasicTarget<HTMLCanvasElement>, { row, rowItems }: RIOOptions): {
|
|
7
|
+
open: () => void;
|
|
8
|
+
close: () => void;
|
|
9
|
+
clear: () => void;
|
|
10
|
+
rio: number[][];
|
|
11
|
+
status: string;
|
|
12
|
+
};
|
|
13
|
+
export default useDrawRIO;
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import _useEventListener from "ahooks/es/useEventListener";
|
|
2
|
+
import _useMount from "ahooks/es/useMount";
|
|
3
|
+
import _useLatest from "ahooks/es/useLatest";
|
|
4
|
+
|
|
5
|
+
function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
|
|
6
|
+
|
|
7
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
8
|
+
|
|
9
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
|
+
|
|
11
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
12
|
+
|
|
13
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
14
|
+
|
|
15
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
16
|
+
|
|
17
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
18
|
+
|
|
19
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
20
|
+
|
|
21
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
22
|
+
|
|
23
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
24
|
+
|
|
25
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
26
|
+
|
|
27
|
+
import { getTargetElement } from 'ahooks/lib/utils/domTarget';
|
|
28
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
29
|
+
import { lineString } from '@turf/helpers';
|
|
30
|
+
import lineToPolygon from '@turf/line-to-polygon';
|
|
31
|
+
import booleanDisjoint from '@turf/boolean-disjoint';
|
|
32
|
+
|
|
33
|
+
function useDrawRIO(target, _ref) {
|
|
34
|
+
var row = _ref.row,
|
|
35
|
+
rowItems = _ref.rowItems;
|
|
36
|
+
|
|
37
|
+
var _useState = useState({
|
|
38
|
+
pos: [],
|
|
39
|
+
tempPos: [],
|
|
40
|
+
saveArea: [],
|
|
41
|
+
isOpen: false
|
|
42
|
+
}),
|
|
43
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
44
|
+
state = _useState2[0],
|
|
45
|
+
setState = _useState2[1];
|
|
46
|
+
|
|
47
|
+
var isOpenRef = _useLatest(state.isOpen);
|
|
48
|
+
|
|
49
|
+
_useMount(function () {
|
|
50
|
+
var canvas = getTargetElement(target);
|
|
51
|
+
|
|
52
|
+
var _canvas$getBoundingCl = canvas.getBoundingClientRect(),
|
|
53
|
+
width = _canvas$getBoundingCl.width,
|
|
54
|
+
height = _canvas$getBoundingCl.height;
|
|
55
|
+
|
|
56
|
+
canvas.width = width;
|
|
57
|
+
canvas.height = height;
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
_useEventListener('click', function (event) {
|
|
61
|
+
if (!isOpenRef.current) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
var p_x = event.offsetX;
|
|
66
|
+
var p_y = event.offsetY;
|
|
67
|
+
setState(function (old) {
|
|
68
|
+
var pos = old.pos; // 去掉重复点位,dbclick导致重复触发
|
|
69
|
+
|
|
70
|
+
if (!pos.find(function (_ref2) {
|
|
71
|
+
var _ref3 = _slicedToArray(_ref2, 2),
|
|
72
|
+
x = _ref3[0],
|
|
73
|
+
y = _ref3[1];
|
|
74
|
+
|
|
75
|
+
return x === p_x && y === p_y;
|
|
76
|
+
})) {
|
|
77
|
+
pos = [].concat(_toConsumableArray(pos), [[p_x, p_y]]);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return Object.assign(Object.assign({}, old), {
|
|
81
|
+
pos: pos
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}, {
|
|
85
|
+
target: target
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
_useEventListener('dblclick', function (event) {
|
|
89
|
+
var p_x = event.offsetX;
|
|
90
|
+
var p_y = event.offsetY;
|
|
91
|
+
setState(function (old) {
|
|
92
|
+
var saveArea = old.saveArea;
|
|
93
|
+
var pos = old.pos;
|
|
94
|
+
var tempPos = old.tempPos;
|
|
95
|
+
|
|
96
|
+
if (pos.length > 2) {
|
|
97
|
+
// 去掉重复点位
|
|
98
|
+
if (!pos.find(function (_ref4) {
|
|
99
|
+
var _ref5 = _slicedToArray(_ref4, 2),
|
|
100
|
+
x = _ref5[0],
|
|
101
|
+
y = _ref5[1];
|
|
102
|
+
|
|
103
|
+
return x === p_x && y === p_y;
|
|
104
|
+
})) {
|
|
105
|
+
pos = [].concat(_toConsumableArray(pos), [[p_x, p_y]]);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
saveArea = [].concat(_toConsumableArray(saveArea), [pos]);
|
|
109
|
+
pos = [];
|
|
110
|
+
tempPos = [];
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return Object.assign(Object.assign({}, old), {
|
|
114
|
+
pos: pos,
|
|
115
|
+
saveArea: saveArea,
|
|
116
|
+
tempPos: tempPos
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
}, {
|
|
120
|
+
target: target
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
_useEventListener('mousemove', function (event) {
|
|
124
|
+
if (!isOpenRef.current || state.pos.length === 0) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
var p_x = event.offsetX;
|
|
129
|
+
var p_y = event.offsetY;
|
|
130
|
+
setState(function (old) {
|
|
131
|
+
return Object.assign(Object.assign({}, old), {
|
|
132
|
+
tempPos: [p_x, p_y]
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
}, {
|
|
136
|
+
target: target
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
var clearCanvas = function clearCanvas() {
|
|
140
|
+
var canvas = getTargetElement(target);
|
|
141
|
+
var ctx = canvas.getContext('2d'); // 重置画布
|
|
142
|
+
|
|
143
|
+
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
var drawSavaArea = function drawSavaArea(area) {
|
|
147
|
+
var canvas = getTargetElement(target);
|
|
148
|
+
var ctx = canvas.getContext('2d'); // 绘制已完成的图形
|
|
149
|
+
|
|
150
|
+
area.forEach(function (item) {
|
|
151
|
+
// 绘制坐标线
|
|
152
|
+
var _item = _toArray(item),
|
|
153
|
+
startPos = _item[0],
|
|
154
|
+
pos = _item.slice(1);
|
|
155
|
+
|
|
156
|
+
ctx.beginPath();
|
|
157
|
+
ctx.moveTo.apply(ctx, _toConsumableArray(startPos));
|
|
158
|
+
pos.forEach(function (_ref6) {
|
|
159
|
+
var _ref7 = _slicedToArray(_ref6, 2),
|
|
160
|
+
x = _ref7[0],
|
|
161
|
+
y = _ref7[1];
|
|
162
|
+
|
|
163
|
+
return ctx.lineTo(x, y);
|
|
164
|
+
});
|
|
165
|
+
ctx.lineTo.apply(ctx, _toConsumableArray(startPos));
|
|
166
|
+
ctx.strokeStyle = '#f32d37';
|
|
167
|
+
ctx.lineWidth = 2;
|
|
168
|
+
ctx.fillStyle = 'rgba(243,45,55,0.5)';
|
|
169
|
+
ctx.fill();
|
|
170
|
+
ctx.stroke();
|
|
171
|
+
});
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
var canvasRendering = function canvasRendering(points, tempPos) {
|
|
175
|
+
if (points.length === 0) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
var canvas = getTargetElement(target);
|
|
180
|
+
var ctx = canvas.getContext('2d'); // 绘制坐标点
|
|
181
|
+
|
|
182
|
+
points.forEach(function (_ref8) {
|
|
183
|
+
var _ref9 = _slicedToArray(_ref8, 2),
|
|
184
|
+
x = _ref9[0],
|
|
185
|
+
y = _ref9[1];
|
|
186
|
+
|
|
187
|
+
ctx.beginPath();
|
|
188
|
+
ctx.arc(x, y, 4, 0, 2 * Math.PI);
|
|
189
|
+
ctx.fillStyle = 'red';
|
|
190
|
+
ctx.fill();
|
|
191
|
+
}); // 绘制坐标线
|
|
192
|
+
|
|
193
|
+
var _points = _toArray(points),
|
|
194
|
+
startPos = _points[0],
|
|
195
|
+
pos = _points.slice(1);
|
|
196
|
+
|
|
197
|
+
ctx.beginPath();
|
|
198
|
+
ctx.moveTo.apply(ctx, _toConsumableArray(startPos));
|
|
199
|
+
pos.forEach(function (_ref10) {
|
|
200
|
+
var _ref11 = _slicedToArray(_ref10, 2),
|
|
201
|
+
x = _ref11[0],
|
|
202
|
+
y = _ref11[1];
|
|
203
|
+
|
|
204
|
+
return ctx.lineTo(x, y);
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
var _tempPos = _slicedToArray(tempPos, 2),
|
|
208
|
+
x = _tempPos[0],
|
|
209
|
+
y = _tempPos[1];
|
|
210
|
+
|
|
211
|
+
if (typeof x === 'number' && typeof y === 'number') {
|
|
212
|
+
ctx.lineTo(x, y);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
ctx.lineTo.apply(ctx, _toConsumableArray(startPos));
|
|
216
|
+
ctx.strokeStyle = '#f32d37';
|
|
217
|
+
ctx.lineWidth = 2;
|
|
218
|
+
ctx.fillStyle = 'rgba(243,45,55,0.5)';
|
|
219
|
+
ctx.fill();
|
|
220
|
+
ctx.stroke();
|
|
221
|
+
}; //绘制hook
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
useEffect(function () {
|
|
225
|
+
clearCanvas();
|
|
226
|
+
drawSavaArea(state.saveArea);
|
|
227
|
+
canvasRendering(state.pos, state.tempPos); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
228
|
+
}, [state.pos, state.saveArea, state.tempPos]);
|
|
229
|
+
var status = useMemo(function () {
|
|
230
|
+
return state.isOpen ? 'open' : 'close';
|
|
231
|
+
}, [state.isOpen]);
|
|
232
|
+
|
|
233
|
+
var open = function open() {
|
|
234
|
+
return setState(function (old) {
|
|
235
|
+
return Object.assign(Object.assign({}, old), {
|
|
236
|
+
isOpen: true
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
var close = function close() {
|
|
242
|
+
return setState(function (old) {
|
|
243
|
+
return Object.assign(Object.assign({}, old), {
|
|
244
|
+
isOpen: false
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
var clear = function clear() {
|
|
250
|
+
return setState(function (old) {
|
|
251
|
+
return Object.assign(Object.assign({}, old), {
|
|
252
|
+
pos: [],
|
|
253
|
+
saveArea: [],
|
|
254
|
+
tempPos: []
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
var rio = useMemo(function () {
|
|
260
|
+
var rioArr = [];
|
|
261
|
+
var canvas = getTargetElement(target);
|
|
262
|
+
|
|
263
|
+
if (!canvas) {
|
|
264
|
+
rioArr = new Array(row).fill(new Array(rowItems).fill(0));
|
|
265
|
+
return rioArr;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
var _canvas$getBoundingCl2 = canvas.getBoundingClientRect(),
|
|
269
|
+
width = _canvas$getBoundingCl2.width,
|
|
270
|
+
height = _canvas$getBoundingCl2.height;
|
|
271
|
+
|
|
272
|
+
var itemWidth = width / rowItems;
|
|
273
|
+
var itemHeight = height / row; // 转换当前绘制完成的区域为多边形
|
|
274
|
+
|
|
275
|
+
var areas = state.saveArea.map(function (item) {
|
|
276
|
+
return lineToPolygon(lineString(item));
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
for (var i = 0; i < row; i++) {
|
|
280
|
+
var arr = [];
|
|
281
|
+
|
|
282
|
+
var _loop = function _loop(k) {
|
|
283
|
+
// x表示当地的纬度,y表示当地的经度
|
|
284
|
+
var lines = lineString([[k * itemWidth, i * itemHeight], [(k + 1) * itemWidth, i * itemHeight], [(k + 1) * itemWidth, (i + 1) * itemHeight], [k * itemWidth, (i + 1) * itemHeight], [k * itemWidth, i * itemHeight]]); // 转换每格为多边形
|
|
285
|
+
|
|
286
|
+
var rect = lineToPolygon(lines); //标记当前rect 是否与绘制的图形相交
|
|
287
|
+
|
|
288
|
+
var flag = areas.findIndex(function (area) {
|
|
289
|
+
return !booleanDisjoint(rect, area);
|
|
290
|
+
}) > -1;
|
|
291
|
+
arr.push(flag ? 1 : 0);
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
for (var k = 0; k < rowItems; k++) {
|
|
295
|
+
_loop(k);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
rioArr.push(arr);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
return rioArr;
|
|
302
|
+
}, [row, rowItems, state.saveArea, target]);
|
|
303
|
+
return {
|
|
304
|
+
open: open,
|
|
305
|
+
close: close,
|
|
306
|
+
clear: clear,
|
|
307
|
+
rio: rio,
|
|
308
|
+
status: status
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
export default useDrawRIO;
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"private": false,
|
|
3
3
|
"name": "@cloud-app-dev/vidc",
|
|
4
4
|
"description": "Video Image Data Componennts",
|
|
5
|
-
"version": "3.0.
|
|
5
|
+
"version": "3.0.23",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"start": "dumi dev",
|
|
8
8
|
"docs:build": "dumi build",
|
|
@@ -31,6 +31,9 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@cloud-app-dev/flv.js": "^1.0.3",
|
|
34
|
+
"@turf/boolean-disjoint": "^6.5.0",
|
|
35
|
+
"@turf/helpers": "^6.5.0",
|
|
36
|
+
"@turf/line-to-polygon": "^6.5.0",
|
|
34
37
|
"ahooks": "^3.7.0",
|
|
35
38
|
"axios": "^0.27.2",
|
|
36
39
|
"hls.js": "^1.2.1",
|