@seafile/seafile-database 0.0.41 → 0.0.42
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/dist/api/api.js +3 -1
- package/dist/constants/view/table.js +1 -1
- package/dist/store/index.js +1 -1
- package/dist/views/card/card-footer/index.css +56 -0
- package/dist/views/card/card-footer/index.js +69 -0
- package/dist/views/card/index.js +27 -4
- package/dist/views/table/table-main/rows/body.js +6 -2
- package/package.json +1 -1
package/dist/api/api.js
CHANGED
|
@@ -174,7 +174,9 @@ class SeafileAPI {
|
|
|
174
174
|
file_view_id: fileViewId
|
|
175
175
|
} = params;
|
|
176
176
|
const url = this.server + '/api/v2.1/wiki2/' + wikiId + '/file-view/' + fileViewId + '/records';
|
|
177
|
-
return this.req.get(url
|
|
177
|
+
return this.req.get(url, {
|
|
178
|
+
params
|
|
179
|
+
});
|
|
178
180
|
}
|
|
179
181
|
getView(view_data) {
|
|
180
182
|
const {
|
|
@@ -64,7 +64,7 @@ const OVER_SCAN_COLUMNS = exports.OVER_SCAN_COLUMNS = 10;
|
|
|
64
64
|
const DELETED_OPTION_BACKGROUND_COLOR = exports.DELETED_OPTION_BACKGROUND_COLOR = '#eaeaea';
|
|
65
65
|
const DELETED_OPTION_TIPS = exports.DELETED_OPTION_TIPS = _translate.default.gettext('Deleted option');
|
|
66
66
|
const SUPPORT_BATCH_DOWNLOAD_TYPES = exports.SUPPORT_BATCH_DOWNLOAD_TYPES = [];
|
|
67
|
-
const PER_LOAD_NUMBER = exports.PER_LOAD_NUMBER =
|
|
67
|
+
const PER_LOAD_NUMBER = exports.PER_LOAD_NUMBER = 100;
|
|
68
68
|
const DEFAULT_RETRY_TIMES = exports.DEFAULT_RETRY_TIMES = 4;
|
|
69
69
|
const DEFAULT_RETRY_INTERVAL = exports.DEFAULT_RETRY_INTERVAL = 1000;
|
|
70
70
|
const MAX_LOAD_NUMBER = exports.MAX_LOAD_NUMBER = 10000;
|
package/dist/store/index.js
CHANGED
|
@@ -231,7 +231,7 @@ class Store {
|
|
|
231
231
|
start: this.startIndex,
|
|
232
232
|
limit
|
|
233
233
|
});
|
|
234
|
-
let rows = (res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.
|
|
234
|
+
let rows = (res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.results) || [];
|
|
235
235
|
if (!Array.isArray(rows) || rows.length === 0) {
|
|
236
236
|
this.hasMore = false;
|
|
237
237
|
return;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
.sea-metadata-card-footer {
|
|
2
|
+
position: relative;
|
|
3
|
+
height: 32px;
|
|
4
|
+
width: 100%;
|
|
5
|
+
overflow: hidden;
|
|
6
|
+
line-height: 32px;
|
|
7
|
+
background: var(--bs-body-bg);
|
|
8
|
+
border-top: 1px solid var(--bs-border-secondary-color);
|
|
9
|
+
border-bottom: 1px solid var(--bs-border-secondary-color);
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-shrink: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.sea-metadata-card-footer.at-border {
|
|
15
|
+
border-bottom: none;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.sea-metadata-card-footer .rows-row {
|
|
19
|
+
width: 80px;
|
|
20
|
+
padding-left: 8px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.load-all-tip {
|
|
24
|
+
display: flex;
|
|
25
|
+
align-items: center;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.load-all-tip .load-all,
|
|
29
|
+
.sea-metadata-card-footer .load-all {
|
|
30
|
+
height: 16px;
|
|
31
|
+
line-height: 16px;
|
|
32
|
+
color: #666;
|
|
33
|
+
cursor: pointer;
|
|
34
|
+
border-bottom: 1px solid #666;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.sea-metadata-card-footer .load-all {
|
|
38
|
+
margin: auto;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.load-all-tip .load-all:hover,
|
|
42
|
+
.sea-metadata-card-footer .load-all:hover {
|
|
43
|
+
color: var(--bs-body-color);
|
|
44
|
+
border-bottom: 1px solid #212529;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.sea-metadata-card-footer .loading-message {
|
|
48
|
+
display: inline-flex;
|
|
49
|
+
align-items: center;
|
|
50
|
+
color: #666;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.sea-metadata-card-footer .loading-message .loading-icon {
|
|
54
|
+
width: 16px;
|
|
55
|
+
height: 16px;
|
|
56
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _loading = _interopRequireDefault(require("../../../common/components/loading"));
|
|
11
|
+
var _constants = require("../../../constants");
|
|
12
|
+
var _translate = _interopRequireDefault(require("../../../lang/translate"));
|
|
13
|
+
require("./index.css");
|
|
14
|
+
class CardFooter extends _react.default.Component {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
(0, _defineProperty2.default)(this, "ref", null);
|
|
18
|
+
(0, _defineProperty2.default)(this, "onClick", () => {
|
|
19
|
+
if (this.props.isLoadingMore) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
this.props.loadMore();
|
|
23
|
+
});
|
|
24
|
+
(0, _defineProperty2.default)(this, "getRow", () => {
|
|
25
|
+
const {
|
|
26
|
+
hasMore,
|
|
27
|
+
rowsCount
|
|
28
|
+
} = this.props;
|
|
29
|
+
let rowsCountText;
|
|
30
|
+
if (rowsCount > 1) {
|
|
31
|
+
rowsCountText = _translate.default.gettext('{count} rows').replace('{count}', rowsCount);
|
|
32
|
+
} else {
|
|
33
|
+
rowsCountText = _translate.default.gettext('{count} row').replace('{count}', rowsCount);
|
|
34
|
+
}
|
|
35
|
+
if (hasMore) {
|
|
36
|
+
rowsCountText += ' +';
|
|
37
|
+
}
|
|
38
|
+
return rowsCountText;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
render() {
|
|
42
|
+
const {
|
|
43
|
+
hasMore,
|
|
44
|
+
isLoadingMore
|
|
45
|
+
} = this.props;
|
|
46
|
+
if (!hasMore) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
50
|
+
className: "sea-metadata-card-footer",
|
|
51
|
+
style: {
|
|
52
|
+
zIndex: _constants.seaTableZIndexes.GRID_FOOTER
|
|
53
|
+
},
|
|
54
|
+
ref: ref => this.ref = ref
|
|
55
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
56
|
+
className: "rows-row d-flex text-nowrap"
|
|
57
|
+
}, /*#__PURE__*/_react.default.createElement("span", null, this.getRow()), !isLoadingMore && hasMore && /*#__PURE__*/_react.default.createElement("span", {
|
|
58
|
+
className: "load-all ml-4",
|
|
59
|
+
onClick: this.onClick
|
|
60
|
+
}, _translate.default.gettext('Load more')), isLoadingMore && /*#__PURE__*/_react.default.createElement("span", {
|
|
61
|
+
className: "loading-message ml-4"
|
|
62
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
63
|
+
className: "mr-2"
|
|
64
|
+
}, _translate.default.gettext('Loading')), /*#__PURE__*/_react.default.createElement(_loading.default, {
|
|
65
|
+
className: "sea-metadata-loading-tip center"
|
|
66
|
+
}))));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
var _default = exports.default = CardFooter;
|
package/dist/views/card/index.js
CHANGED
|
@@ -7,21 +7,39 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _components = require("../../common/components");
|
|
11
|
+
var _utils = require("../../common/utils/utils");
|
|
10
12
|
var _constants = require("../../constants");
|
|
11
13
|
var _hooks = require("../../hooks");
|
|
14
|
+
var _cardFooter = _interopRequireDefault(require("./card-footer"));
|
|
12
15
|
var _cardItems = _interopRequireDefault(require("./card-items"));
|
|
13
|
-
// import Settings from './settings';
|
|
14
|
-
|
|
15
16
|
const Card = () => {
|
|
16
17
|
const [isShowSettings, setShowSettings] = (0, _react.useState)(false);
|
|
17
18
|
const {
|
|
18
19
|
context
|
|
19
20
|
} = (0, _hooks.useFileViewContext)();
|
|
21
|
+
const [isLoadingMore, setLoadingMore] = (0, _react.useState)(false);
|
|
20
22
|
const {
|
|
23
|
+
metadata,
|
|
24
|
+
store,
|
|
21
25
|
modifyRecord: modifyRecordAPI,
|
|
22
26
|
deleteRecords,
|
|
23
27
|
modifyColumnData
|
|
24
28
|
} = (0, _hooks.useMetadata)();
|
|
29
|
+
const loadMore = (0, _react.useCallback)(async () => {
|
|
30
|
+
if (!metadata.hasMore) return;
|
|
31
|
+
if (isLoadingMore) return;
|
|
32
|
+
setLoadingMore(true);
|
|
33
|
+
try {
|
|
34
|
+
await store.loadMore(_constants.PER_LOAD_NUMBER);
|
|
35
|
+
setLoadingMore(false);
|
|
36
|
+
} catch (error) {
|
|
37
|
+
const errorMsg = _utils.Utils.getErrorMsg(error);
|
|
38
|
+
_components.toaster.danger(errorMsg);
|
|
39
|
+
setLoadingMore(false);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}, [isLoadingMore, metadata, store]);
|
|
25
43
|
const modifyRecord = (0, _react.useCallback)(function (rowId, updates, oldRowData, originalUpdates, originalOldRowData) {
|
|
26
44
|
let {
|
|
27
45
|
success_callback
|
|
@@ -48,7 +66,7 @@ const Card = () => {
|
|
|
48
66
|
};
|
|
49
67
|
}, [context, isShowSettings]);
|
|
50
68
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
51
|
-
className: "sea-metadata-container"
|
|
69
|
+
className: "sea-metadata-container flex-column"
|
|
52
70
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
53
71
|
className: "sea-metadata-view-card flex-fill o-auto position-relative"
|
|
54
72
|
}, /*#__PURE__*/_react.default.createElement(_cardItems.default, {
|
|
@@ -56,6 +74,11 @@ const Card = () => {
|
|
|
56
74
|
deleteRecords: deleteRecords,
|
|
57
75
|
modifyColumnData: modifyColumnData,
|
|
58
76
|
onCloseSettings: closeSettings
|
|
59
|
-
}))
|
|
77
|
+
})), /*#__PURE__*/_react.default.createElement(_cardFooter.default, {
|
|
78
|
+
rowsCount: metadata === null || metadata === void 0 ? void 0 : metadata.rows.length,
|
|
79
|
+
hasMore: metadata.hasMore,
|
|
80
|
+
isLoadingMore: isLoadingMore,
|
|
81
|
+
loadMore: loadMore
|
|
82
|
+
}));
|
|
60
83
|
};
|
|
61
84
|
var _default = exports.default = Card;
|
|
@@ -542,7 +542,8 @@ class RowsBody extends _react.Component {
|
|
|
542
542
|
});
|
|
543
543
|
this.state = {
|
|
544
544
|
startRenderIndex: 0,
|
|
545
|
-
endRenderIndex: this.getInitEndIndex(
|
|
545
|
+
// endRenderIndex: this.getInitEndIndex(props),
|
|
546
|
+
endRenderIndex: this.props.rowsCount,
|
|
546
547
|
activeRows: [],
|
|
547
548
|
selectedPosition: null,
|
|
548
549
|
isScrollingRightScrollbar: false
|
|
@@ -568,7 +569,10 @@ class RowsBody extends _react.Component {
|
|
|
568
569
|
rowIds
|
|
569
570
|
} = nextProps;
|
|
570
571
|
if (rowsCount !== this.props.rowsCount || rowIds !== this.props.rowIds) {
|
|
571
|
-
this.recalculateRenderIndex(rowIds);
|
|
572
|
+
// this.recalculateRenderIndex(rowIds);
|
|
573
|
+
this.setState({
|
|
574
|
+
endRenderIndex: rowsCount
|
|
575
|
+
});
|
|
572
576
|
}
|
|
573
577
|
}
|
|
574
578
|
componentWillUnmount() {
|