@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 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 = 1000;
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;
@@ -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.rows) || [];
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;
@@ -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(_props),
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() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/seafile-database",
3
- "version": "0.0.41",
3
+ "version": "0.0.42",
4
4
  "private": false,
5
5
  "description": "This is a seafile database components",
6
6
  "main": "dist/index.js",