dtable-utils 4.3.1 → 4.3.2-beta.1

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/lib/link/core.js CHANGED
@@ -2,12 +2,22 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
5
6
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
7
+ var core$1 = require('../column/core.js');
8
+ var core = require('../row/core.js');
9
+ var core$2 = require('../table/core.js');
10
+ var row = require('../table/row.js');
11
+ var cellType = require('../constants/cell-type.js');
6
12
 
7
13
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
14
 
15
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
9
16
  var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
10
17
 
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
+
11
21
  /**
12
22
  * Get link by id
13
23
  * @param {array} links e.g. [{ _id, ... }, ...]
@@ -82,9 +92,40 @@ var getLinkCellValue = function getLinkCellValue(links, linkId, table1Id, table2
82
92
  }
83
93
  return _toConsumableArray__default["default"](linkedRowIds);
84
94
  };
95
+ var getTableLinkRows = function getTableLinkRows(operateRows, table, value) {
96
+ var links = value.links,
97
+ tables = value.tables;
98
+ var currentTableId = table._id,
99
+ columns = table.columns;
100
+ var rows = core.isTableRows(operateRows) ? _toConsumableArray__default["default"](operateRows) : row.getRowsByIds(table, operateRows);
101
+ var linkColumns = core$1.getColumnsByType(columns, cellType.CellType.LINK);
102
+ var linkRows = {};
103
+ linkColumns.forEach(function (column) {
104
+ var key = column.key,
105
+ data = column.data;
106
+ var _ref = data || {},
107
+ link_id = _ref.link_id,
108
+ table_id = _ref.table_id,
109
+ other_table_id = _ref.other_table_id;
110
+ var linkedTableId = currentTableId === table_id ? other_table_id : table_id;
111
+ var linkedTable = core$2.getTableById(tables, linkedTableId);
112
+ rows.forEach(function (row) {
113
+ var rowId = row._id;
114
+ var linkedRowIds = linkedTable && getLinkCellValue(links, link_id, currentTableId, linkedTableId, rowId) || [];
115
+
116
+ // Handle the linked row has been deleted, but link still exists
117
+ linkedRowIds = linkedRowIds.filter(function (linkedRowId) {
118
+ return linkedTable.id_row_map[linkedRowId];
119
+ });
120
+ linkRows[rowId] = _objectSpread(_objectSpread({}, linkRows[rowId]), {}, _defineProperty__default["default"]({}, key, linkedRowIds));
121
+ });
122
+ });
123
+ return linkRows;
124
+ };
85
125
 
86
126
  exports.getLinkById = getLinkById;
87
127
  exports.getLinkCellValue = getLinkCellValue;
88
128
  exports.getLinkTableID = getLinkTableID;
89
129
  exports.getLinkedTableID = getLinkedTableID;
130
+ exports.getTableLinkRows = getTableLinkRows;
90
131
  exports.isValidLink = isValidLink;
@@ -0,0 +1,170 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var cellValue = require('../cell-value-get/cell-value.js');
6
+ var option = require('../cell-value-get/option.js');
7
+ var core = require('../link/core.js');
8
+ var common = require('../common.js');
9
+ var limit = require('../constants/limit.js');
10
+ var cellType = require('../constants/cell-type.js');
11
+
12
+ /**
13
+ * Convert row
14
+ * e.g. { '0000': 'a' } to { 'Name': 'a' }
15
+ * @param {object} row
16
+ * @param {object} value e.g. { links, ... }
17
+ * @param {object} table e.g. { _id, columns, ... }
18
+ * @param {object} view e.g. { hidden_columns, ... }
19
+ * @param {object} formulaResults computed value of formula, link-formula, link etc.
20
+ * @param {bool} convertLinkID use to convert link: get linked from formulaResults if true, otherwise get linked from links
21
+ * @param {func} debug use to debug if supplied
22
+ * @returns converted row, object
23
+ */
24
+ var convertRow = function convertRow(row, value, table, view, formulaResults, convertLinkID) {
25
+ var _ref = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {},
26
+ debug = _ref.debug;
27
+ var result = {};
28
+ // eslint-disable-next-line
29
+ if (row.hasOwnProperty('_id')) {
30
+ result._id = row._id;
31
+ }
32
+ // eslint-disable-next-line
33
+ if (row.hasOwnProperty('_mtime')) {
34
+ result._mtime = row._mtime;
35
+ }
36
+ // eslint-disable-next-line
37
+ if (row.hasOwnProperty('_ctime')) {
38
+ result._ctime = row._ctime;
39
+ }
40
+ var columns = table.columns;
41
+ if (columns.length > limit.CONVERT_ROW_COLUMNS_LIMIT) {
42
+ columns = columns.slice(0, limit.CONVERT_ROW_COLUMNS_LIMIT);
43
+ }
44
+ var hiddenColumns = view ? view.hidden_columns : null;
45
+ for (var i = 0; i < columns.length; i++) {
46
+ var column = columns[i];
47
+ var key = column.key,
48
+ type = column.type,
49
+ columnName = column.name;
50
+ if (hiddenColumns && hiddenColumns.includes(key)) {
51
+ continue;
52
+ }
53
+ var cellValue$1 = row[key];
54
+ switch (type) {
55
+ case cellType.CellType.SINGLE_SELECT:
56
+ {
57
+ if (!column.data) {
58
+ if (debug) {
59
+ debug('No options found');
60
+ }
61
+ break;
62
+ }
63
+ result[columnName] = option.getColumnOptionNameById(column, cellValue$1);
64
+ break;
65
+ }
66
+ case cellType.CellType.MULTIPLE_SELECT:
67
+ {
68
+ if (!column.data) {
69
+ if (debug) {
70
+ debug('No options found');
71
+ }
72
+ break;
73
+ }
74
+ if (!Array.isArray(cellValue$1)) {
75
+ result[columnName] = '';
76
+ break;
77
+ }
78
+ var optionNames = [];
79
+ for (var optionIndex = 0; optionIndex < cellValue$1.length; optionIndex++) {
80
+ var optionName = option.getColumnOptionNameById(column, cellValue$1[optionIndex]);
81
+ if (optionName) {
82
+ optionNames.push(optionName);
83
+ }
84
+ }
85
+ result[columnName] = optionNames;
86
+ break;
87
+ }
88
+ case cellType.CellType.LONG_TEXT:
89
+ {
90
+ result[columnName] = cellValue$1 ? cellValue$1.text : '';
91
+ break;
92
+ }
93
+ case cellType.CellType.LINK:
94
+ {
95
+ if (!column.data) {
96
+ if (debug) {
97
+ debug('No links found');
98
+ }
99
+ break;
100
+ }
101
+ // convertLinkID to display value
102
+ if (convertLinkID) {
103
+ // get values form formulaResults
104
+ var formulaRow = formulaResults && formulaResults[row._id];
105
+ var cellResult = formulaRow && formulaRow[key];
106
+ if (!Array.isArray(cellResult) || cellResult.length === 0) {
107
+ result[columnName] = null;
108
+ break;
109
+ }
110
+ // linked with common column:
111
+ // cellResult
112
+ // [
113
+ // {row_id: '', displayValue: ''},
114
+ // {row_id: '', displayValue: ''},
115
+ // ]
116
+
117
+ // linked with formula column and formula result is array
118
+ // cellResult
119
+ // [
120
+ // {row_id: '', display_value: []},
121
+ // {row_id: '', display_value: []},
122
+ // ]
123
+ result[columnName] = cellResult;
124
+ break;
125
+ }
126
+ var tableID = table._id;
127
+ var _column$data = column.data,
128
+ link_id = _column$data.link_id,
129
+ table_id = _column$data.table_id,
130
+ other_table_id = _column$data.other_table_id;
131
+ var otherTableID = tableID === table_id ? other_table_id : table_id;
132
+ var links = value.links;
133
+ result[columnName] = core.getLinkCellValue(links, link_id, tableID, otherTableID, row._id);
134
+ break;
135
+ }
136
+ case cellType.CellType.FORMULA:
137
+ case cellType.CellType.LINK_FORMULA:
138
+ {
139
+ if (!column.data || !formulaResults) {
140
+ if (debug) {
141
+ debug('No formula found');
142
+ }
143
+ break;
144
+ }
145
+ var _formulaRow = formulaResults[row._id] || {};
146
+ result[columnName] = cellValue.getFormulaDisplayString(_formulaRow[key], column.data);
147
+ break;
148
+ }
149
+ default:
150
+ {
151
+ // text/email/url/auto-number/
152
+ // check/
153
+ // rate/duration/
154
+ // file/image/button/
155
+ // translate in dtable-events
156
+ // number/
157
+ // date/ctime/mtime/
158
+ // geolocation/
159
+ // collaborator/creator/last-modifier/
160
+ result[columnName] = cellValue$1;
161
+ }
162
+ }
163
+ if (common.isEmpty(result[columnName])) {
164
+ delete result[columnName];
165
+ }
166
+ }
167
+ return result;
168
+ };
169
+
170
+ exports.convertRow = convertRow;
package/lib/row/core.js CHANGED
@@ -3,16 +3,6 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _typeof = require('@babel/runtime/helpers/typeof');
6
- var cellValue = require('../cell-value-get/cell-value.js');
7
- require('dayjs');
8
- require('../constants/column.js');
9
- require('../constants/formula.js');
10
- var option = require('../cell-value-get/option.js');
11
- require('../constants/group.js');
12
- var core = require('../link/core.js');
13
- var common = require('../common.js');
14
- var cellType = require('../constants/cell-type.js');
15
- var limit = require('../constants/limit.js');
16
6
 
17
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
8
 
@@ -27,163 +17,4 @@ var isTableRows = function isTableRows(rows) {
27
17
  return Array.isArray(rows) && _typeof__default["default"](rows[0]) === 'object';
28
18
  };
29
19
 
30
- /**
31
- * Convert row
32
- * e.g. { '0000': 'a' } to { 'Name': 'a' }
33
- * @param {object} row
34
- * @param {object} value e.g. { links, ... }
35
- * @param {object} table e.g. { _id, columns, ... }
36
- * @param {object} view e.g. { hidden_columns, ... }
37
- * @param {object} formulaResults computed value of formula, link-formula, link etc.
38
- * @param {bool} convertLinkID use to convert link: get linked from formulaResults if true, otherwise get linked from links
39
- * @param {func} debug use to debug if supplied
40
- * @returns converted row, object
41
- */
42
- var convertRow = function convertRow(row, value, table, view, formulaResults, convertLinkID) {
43
- var _ref = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {},
44
- debug = _ref.debug;
45
- var result = {};
46
- // eslint-disable-next-line
47
- if (row.hasOwnProperty('_id')) {
48
- result._id = row._id;
49
- }
50
- // eslint-disable-next-line
51
- if (row.hasOwnProperty('_mtime')) {
52
- result._mtime = row._mtime;
53
- }
54
- // eslint-disable-next-line
55
- if (row.hasOwnProperty('_ctime')) {
56
- result._ctime = row._ctime;
57
- }
58
- var columns = table.columns;
59
- if (columns.length > limit.CONVERT_ROW_COLUMNS_LIMIT) {
60
- columns = columns.slice(0, limit.CONVERT_ROW_COLUMNS_LIMIT);
61
- }
62
- var hiddenColumns = view ? view.hidden_columns : null;
63
- for (var i = 0; i < columns.length; i++) {
64
- var column = columns[i];
65
- var key = column.key,
66
- type = column.type,
67
- columnName = column.name;
68
- if (hiddenColumns && hiddenColumns.includes(key)) {
69
- continue;
70
- }
71
- var cellValue$1 = row[key];
72
- switch (type) {
73
- case cellType.CellType.SINGLE_SELECT:
74
- {
75
- if (!column.data) {
76
- if (debug) {
77
- debug('No options found');
78
- }
79
- break;
80
- }
81
- result[columnName] = option.getColumnOptionNameById(column, cellValue$1);
82
- break;
83
- }
84
- case cellType.CellType.MULTIPLE_SELECT:
85
- {
86
- if (!column.data) {
87
- if (debug) {
88
- debug('No options found');
89
- }
90
- break;
91
- }
92
- if (!Array.isArray(cellValue$1)) {
93
- result[columnName] = '';
94
- break;
95
- }
96
- var optionNames = [];
97
- for (var optionIndex = 0; optionIndex < cellValue$1.length; optionIndex++) {
98
- var optionName = option.getColumnOptionNameById(column, cellValue$1[optionIndex]);
99
- if (optionName) {
100
- optionNames.push(optionName);
101
- }
102
- }
103
- result[columnName] = optionNames;
104
- break;
105
- }
106
- case cellType.CellType.LONG_TEXT:
107
- {
108
- result[columnName] = cellValue$1 ? cellValue$1.text : '';
109
- break;
110
- }
111
- case cellType.CellType.LINK:
112
- {
113
- if (!column.data) {
114
- if (debug) {
115
- debug('No links found');
116
- }
117
- break;
118
- }
119
- // convertLinkID to display value
120
- if (convertLinkID) {
121
- // get values form formulaResults
122
- var formulaRow = formulaResults && formulaResults[row._id];
123
- var cellResult = formulaRow && formulaRow[key];
124
- if (!Array.isArray(cellResult) || cellResult.length === 0) {
125
- result[columnName] = null;
126
- break;
127
- }
128
- // linked with common column:
129
- // cellResult
130
- // [
131
- // {row_id: '', displayValue: ''},
132
- // {row_id: '', displayValue: ''},
133
- // ]
134
-
135
- // linked with formula column and formula result is array
136
- // cellResult
137
- // [
138
- // {row_id: '', display_value: []},
139
- // {row_id: '', display_value: []},
140
- // ]
141
- result[columnName] = cellResult;
142
- break;
143
- }
144
- var tableID = table._id;
145
- var _column$data = column.data,
146
- link_id = _column$data.link_id,
147
- table_id = _column$data.table_id,
148
- other_table_id = _column$data.other_table_id;
149
- var otherTableID = tableID === table_id ? other_table_id : table_id;
150
- var links = value.links;
151
- result[columnName] = core.getLinkCellValue(links, link_id, tableID, otherTableID, row._id);
152
- break;
153
- }
154
- case cellType.CellType.FORMULA:
155
- case cellType.CellType.LINK_FORMULA:
156
- {
157
- if (!column.data || !formulaResults) {
158
- if (debug) {
159
- debug('No formula found');
160
- }
161
- break;
162
- }
163
- var _formulaRow = formulaResults[row._id] || {};
164
- result[columnName] = cellValue.getFormulaDisplayString(_formulaRow[key], column.data);
165
- break;
166
- }
167
- default:
168
- {
169
- // text/email/url/auto-number/
170
- // check/
171
- // rate/duration/
172
- // file/image/button/
173
- // translate in dtable-events
174
- // number/
175
- // date/ctime/mtime/
176
- // geolocation/
177
- // collaborator/creator/last-modifier/
178
- result[columnName] = cellValue$1;
179
- }
180
- }
181
- if (common.isEmpty(result[columnName])) {
182
- delete result[columnName];
183
- }
184
- }
185
- return result;
186
- };
187
-
188
- exports.convertRow = convertRow;
189
20
  exports.isTableRows = isTableRows;
package/lib/table/core.js CHANGED
@@ -15,4 +15,18 @@ var getTableById = function getTableById(tables, tableId) {
15
15
  });
16
16
  };
17
17
 
18
+ /**
19
+ * Get table by name
20
+ * @param {array} tables
21
+ * @param {string} tableName
22
+ * @returns table, object
23
+ */
24
+ var getTableByName = function getTableByName(tables, tableName) {
25
+ if (!Array.isArray(tables) || !tableName) return null;
26
+ return tables.find(function (table) {
27
+ return table.name === tableName;
28
+ });
29
+ };
30
+
18
31
  exports.getTableById = getTableById;
32
+ exports.getTableByName = getTableByName;
package/lib/view/core.js CHANGED
@@ -20,6 +20,28 @@ var getViewById = function getViewById(views, viewId) {
20
20
  });
21
21
  };
22
22
 
23
+ /**
24
+ * Get view by name
25
+ * @param {array} views
26
+ * @param {string} viewName
27
+ * @returns view, object
28
+ */
29
+ var getViewByName = function getViewByName(views, viewName) {
30
+ if (!Array.isArray(views) || !viewName) return null;
31
+ return views.find(function (view) {
32
+ return view.name === viewName;
33
+ });
34
+ };
35
+
36
+ /**
37
+ * Check whether the view is archived
38
+ * @param {object} view
39
+ * @returns bool
40
+ */
41
+ var isArchiveView = function isArchiveView(view) {
42
+ return view.type === 'archive';
43
+ };
44
+
23
45
  /**
24
46
  * Check whether the view contains filters
25
47
  * @param {object} view e.g. { filters, ... }
@@ -53,6 +75,17 @@ var isSortView = function isSortView(view, columns) {
53
75
  return validSorts.length > 0;
54
76
  };
55
77
 
78
+ /**
79
+ * Check whether the view has hidden columns
80
+ * @param {object} view e.g. { hidden_columns, ... }
81
+ * @returns bool
82
+ */
83
+ var isHiddenColumnsView = function isHiddenColumnsView(view) {
84
+ var _ref = view || {},
85
+ hidden_columns = _ref.hidden_columns;
86
+ return Array.isArray(hidden_columns) && hidden_columns.length > 0;
87
+ };
88
+
56
89
  /**
57
90
  * Check is default view which no contains filters, sorts, groupbys etc.
58
91
  * @param {object} view e.g. { filters, groupbys, sorts, ... }
@@ -135,9 +168,40 @@ var getLinkColumnsUsedInFilters = function getLinkColumnsUsedInFilters(view, tab
135
168
  return linkColumns;
136
169
  };
137
170
 
171
+ /**
172
+ * Get no-archived views
173
+ * @param {array} views
174
+ * @returns no-archived views, array
175
+ */
176
+ var getNonArchiveViews = function getNonArchiveViews(views) {
177
+ if (!Array.isArray(views)) {
178
+ return [];
179
+ }
180
+ return views.filter(function (view) {
181
+ return !isArchiveView(view);
182
+ });
183
+ };
184
+ var getViewShownColumns = function getViewShownColumns(view, columns) {
185
+ if (!Array.isArray(columns)) {
186
+ return [];
187
+ }
188
+ if (!isHiddenColumnsView(view)) {
189
+ return columns;
190
+ }
191
+ var hidden_columns = view.hidden_columns;
192
+ return columns.filter(function (column) {
193
+ return !hidden_columns.includes(column.key);
194
+ });
195
+ };
196
+
138
197
  exports.getLinkColumnsUsedInFilters = getLinkColumnsUsedInFilters;
198
+ exports.getNonArchiveViews = getNonArchiveViews;
139
199
  exports.getViewById = getViewById;
200
+ exports.getViewByName = getViewByName;
201
+ exports.getViewShownColumns = getViewShownColumns;
202
+ exports.isArchiveView = isArchiveView;
140
203
  exports.isDefaultView = isDefaultView;
141
204
  exports.isFilterView = isFilterView;
142
205
  exports.isGroupView = isGroupView;
206
+ exports.isHiddenColumnsView = isHiddenColumnsView;
143
207
  exports.isSortView = isSortView;
@@ -4,9 +4,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var row = require('../table/row.js');
6
6
  var core = require('../row/core.js');
7
+ require('../cell-value-get/cell-value.js');
8
+ require('@babel/runtime/helpers/defineProperty');
9
+ require('@babel/runtime/helpers/toConsumableArray');
10
+ var formula = require('../constants/formula.js');
11
+ require('@babel/runtime/helpers/typeof');
7
12
  var number = require('../column/number.js');
8
13
  var number$1 = require('../number.js');
9
- var formula = require('../constants/formula.js');
10
14
 
11
15
  /**
12
16
  * Calculate summaries of table numeric columns
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dtable-utils",
3
- "version": "4.3.1",
3
+ "version": "4.3.2-beta.1",
4
4
  "description": "dtable common utils",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./es/index.js",