react-graph-grid 0.1.4 → 0.1.6

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.
Files changed (88) hide show
  1. package/README.md +4 -0
  2. package/{src/css → dist}/default.css +2 -1
  3. package/dist/index.esm.js +21 -0
  4. package/dist/index.js +56 -0
  5. package/dist/index10.esm.js +3844 -0
  6. package/dist/index10.js +3848 -0
  7. package/dist/index11.esm.js +4121 -0
  8. package/dist/index11.js +4125 -0
  9. package/dist/index12.esm.js +5238 -0
  10. package/dist/index12.js +5242 -0
  11. package/dist/index13.esm.js +5466 -0
  12. package/dist/index13.js +5470 -0
  13. package/dist/index14.esm.js +22 -0
  14. package/dist/index14.js +26 -0
  15. package/dist/index15.esm.js +402 -0
  16. package/dist/index15.js +403 -0
  17. package/dist/index16.esm.js +507 -0
  18. package/dist/index16.js +507 -0
  19. package/dist/index17.esm.js +256 -0
  20. package/dist/index17.js +257 -0
  21. package/dist/index18.esm.js +261 -0
  22. package/dist/index18.js +263 -0
  23. package/dist/index19.esm.js +623 -0
  24. package/dist/index19.js +624 -0
  25. package/dist/index2.esm.js +6 -0
  26. package/dist/index2.js +2 -0
  27. package/dist/index20.esm.js +219 -0
  28. package/dist/index20.js +220 -0
  29. package/dist/index21.esm.js +298 -0
  30. package/dist/index21.js +299 -0
  31. package/dist/index22.esm.js +662 -0
  32. package/dist/index22.js +663 -0
  33. package/dist/index23.esm.js +340 -0
  34. package/dist/index23.js +341 -0
  35. package/dist/index24.esm.js +269 -0
  36. package/dist/index24.js +270 -0
  37. package/dist/index25.esm.js +600 -0
  38. package/dist/index25.js +601 -0
  39. package/dist/index26.esm.js +245 -0
  40. package/dist/index26.js +246 -0
  41. package/dist/index27.esm.js +136 -0
  42. package/dist/index27.js +137 -0
  43. package/dist/index28.esm.js +70 -0
  44. package/dist/index28.js +70 -0
  45. package/dist/index29.esm.js +748 -0
  46. package/dist/index29.js +748 -0
  47. package/dist/index30.esm.js +363 -0
  48. package/dist/index30.js +363 -0
  49. package/dist/index4.esm.js +27 -0
  50. package/dist/index4.js +27 -0
  51. package/dist/index5.esm.js +35 -0
  52. package/dist/index5.js +39 -0
  53. package/dist/index6.esm.js +200 -0
  54. package/dist/index6.js +204 -0
  55. package/dist/index7.esm.js +9 -0
  56. package/dist/index7.js +13 -0
  57. package/dist/index8.esm.js +65 -0
  58. package/dist/index8.js +68 -0
  59. package/dist/index9.esm.js +102 -0
  60. package/dist/index9.js +103 -0
  61. package/package.json +6 -3
  62. package/eslint.config.js +0 -29
  63. package/index.html +0 -13
  64. package/index.js +0 -19
  65. package/npm.aps +0 -0
  66. package/src/Base.jsx +0 -81
  67. package/src/Card.jsx +0 -333
  68. package/src/Dropdown.jsx +0 -339
  69. package/src/FieldEdit.jsx +0 -376
  70. package/src/Graph.jsx +0 -482
  71. package/src/Grid.jsx +0 -887
  72. package/src/GridCD.jsx +0 -180
  73. package/src/GridDB.jsx +0 -897
  74. package/src/GridFE.jsx +0 -753
  75. package/src/GridFL.jsx +0 -468
  76. package/src/GridGR.jsx +0 -311
  77. package/src/GridPK.jsx +0 -414
  78. package/src/Modal.jsx +0 -511
  79. package/src/Overlay.jsx +0 -140
  80. package/src/Tests/DebugApp.jsx +0 -334
  81. package/src/Tests/TestData.jsx +0 -251
  82. package/src/Themes/DefaultGridTheme.jsx +0 -36
  83. package/src/Themes/Images.jsx +0 -438
  84. package/src/Themes/Translate.jsx +0 -76
  85. package/src/css/default_.css +0 -945
  86. package/src/main.jsx +0 -10
  87. package/vite.config.js +0 -14
  88. /package/{public → dist}/IM.svg +0 -0
package/dist/index9.js ADDED
@@ -0,0 +1,103 @@
1
+ const require_jsx_runtime$1 = require("./index7.js");
2
+ const require_Base = require("./index8.js");
3
+ let react = require("react");
4
+ var import_jsx_runtime = require_jsx_runtime$1.default;
5
+ function Overlay(props) {
6
+ let ovl = null;
7
+ const [ovlState, setState] = (0, react.useState)({
8
+ ovl,
9
+ ind: 0
10
+ });
11
+ if (ovlState.ovl) {
12
+ ovl = ovlState.ovl;
13
+ if (ovlState.ovl.closing) ovl.closing = false;
14
+ } else ovl = new OverlayClass(props);
15
+ ovl.onClose = props.onClose;
16
+ if (props.init) props.init(ovl);
17
+ ovl.refreshState = function() {
18
+ setState({
19
+ ovl,
20
+ ind: ovl.stateind++
21
+ });
22
+ };
23
+ (0, react.useEffect)(() => {
24
+ ovl.setupEvents();
25
+ return () => {
26
+ ovl.clearEvents();
27
+ };
28
+ }, [ovl]);
29
+ return ovl.render();
30
+ }
31
+ var OverlayClass = class OverlayClass extends require_Base.BaseComponent {
32
+ constructor(props) {
33
+ super(props);
34
+ const ovl = this;
35
+ ovl.opt = {};
36
+ ovl.id = OverlayClass._seq++;
37
+ ovl.uid = props.uid;
38
+ ovl.opt.zInd = props.zInd || ++OverlayClass._zInd;
39
+ ovl.opt.pos = props.pos || {
40
+ x: 0,
41
+ y: 0,
42
+ w: "100%",
43
+ h: "100%"
44
+ };
45
+ ovl.opt.isHidden = props.isHidden;
46
+ ovl.opt.closeWhenClick = props.closeWhenClick;
47
+ ovl.opt.closeWhenEscape = props.closeWhenEscape;
48
+ ovl.opt.pos.x = !isNaN(ovl.opt.pos.x) ? ovl.opt.pos.x + "px" : ovl.opt.pos.x;
49
+ ovl.opt.pos.y = !isNaN(ovl.opt.pos.y) ? ovl.opt.pos.y + "px" : ovl.opt.pos.y;
50
+ ovl.opt.pos.w = !isNaN(ovl.opt.pos.w) ? ovl.opt.pos.w + "px" : ovl.opt.pos.w;
51
+ ovl.opt.pos.h = !isNaN(ovl.opt.pos.h) ? ovl.opt.pos.h + "px" : ovl.opt.pos.h;
52
+ ovl.renderChild = props.renderChild || function() {
53
+ return null;
54
+ };
55
+ ovl.visible = props.visible != null ? props.visible : true;
56
+ ovl.stateind = 0;
57
+ }
58
+ static _seq = 0;
59
+ static _zInd = 999;
60
+ render() {
61
+ const ovl = this;
62
+ if (!ovl.visible) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {});
63
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
64
+ onClick: (e) => ovl.onClick(e),
65
+ style: {
66
+ width: ovl.opt.pos.w,
67
+ height: ovl.opt.pos.h,
68
+ top: ovl.opt.pos.y,
69
+ left: ovl.opt.pos.x,
70
+ opacity: ovl.opt.opacity ? ovl.opt.opacity : ovl.opt.isHidden ? 0 : .2,
71
+ zIndex: ovl.opt.zInd,
72
+ backgroundColor: !ovl.opt.isHidden ? "black" : "",
73
+ display: "flex",
74
+ position: "fixed"
75
+ },
76
+ className: "overlay-default"
77
+ }, `overlay_${ovl.id}_`), ovl.renderChild(ovl.opt.zInd + 1)] });
78
+ }
79
+ close() {
80
+ const ovl = this;
81
+ ovl.visible = false;
82
+ if (ovl.onClose) ovl.onClose();
83
+ ovl.closing = true;
84
+ ovl.refreshState();
85
+ }
86
+ onClick() {
87
+ const ovl = this;
88
+ if (ovl.opt && ovl.opt.closeWhenClick) ovl.close();
89
+ }
90
+ setupEvents = function() {
91
+ const ovl = this;
92
+ function onKeyDown(e) {
93
+ const key = e && e.key ? e.key.toLowerCase() : "";
94
+ if ((key === "esc" || key === "escape") && ovl.opt && ovl.opt.closeWhenEscape) ovl.close();
95
+ }
96
+ document.addEventListener("keydown", onKeyDown);
97
+ ovl.clearEvents = function() {
98
+ document.removeEventListener("keydown", onKeyDown);
99
+ };
100
+ };
101
+ };
102
+ exports.Overlay = Overlay;
103
+ exports.OverlayClass = OverlayClass;
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "react-graph-grid",
3
3
  "author": "Mikhail Razumtsev",
4
- "version": "0.1.4",
4
+ "version": "0.1.6",
5
5
  "private": false,
6
6
  "description": "A React package containing a grid that can communicate with other grids through a connection graph",
7
7
  "keywords": [
8
8
  "react-graph-grid"
9
9
  ],
10
- "main": "index.js",
11
- "module": "index.esm.js",
10
+ "main": "dist/index.js",
11
+ "module": "dist/index.esm.js",
12
12
  "license": "MIT",
13
13
  "type": "module",
14
14
  "scripts": {
@@ -21,6 +21,9 @@
21
21
  "react": "^19.2.4",
22
22
  "react-dom": "^19.2.4"
23
23
  },
24
+ "files": [
25
+ "dist"
26
+ ],
24
27
  "devDependencies": {
25
28
  "@eslint/js": "^9.39.1",
26
29
  "@types/react": "^19.2.5",
package/eslint.config.js DELETED
@@ -1,29 +0,0 @@
1
- import js from '@eslint/js'
2
- import globals from 'globals'
3
- import reactHooks from 'eslint-plugin-react-hooks'
4
- import reactRefresh from 'eslint-plugin-react-refresh'
5
- import { defineConfig, globalIgnores } from 'eslint/config'
6
-
7
- export default defineConfig([
8
- globalIgnores(['dist']),
9
- {
10
- files: ['**/*.{js,jsx}'],
11
- extends: [
12
- js.configs.recommended,
13
- reactHooks.configs.flat.recommended,
14
- reactRefresh.configs.vite,
15
- ],
16
- languageOptions: {
17
- ecmaVersion: 2020,
18
- globals: globals.browser,
19
- parserOptions: {
20
- ecmaVersion: 'latest',
21
- ecmaFeatures: { jsx: true },
22
- sourceType: 'module',
23
- },
24
- },
25
- rules: {
26
- 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }],
27
- },
28
- },
29
- ])
package/index.html DELETED
@@ -1,13 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <link rel="icon" type="image/svg+xml" href="/IM.svg" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>react-graph-grid</title>
8
- </head>
9
- <body>
10
- <div id="root"></div>
11
- <script type="module" src="/src/main.jsx"></script>
12
- </body>
13
- </html>
package/index.js DELETED
@@ -1,19 +0,0 @@
1
- export { BaseComponent, NodeStatus, FilterType, log } from './src/Base';
2
- export { Overlay, OverlayClass } from './src/Overlay';
3
- export { Modal, ModalClass } from './src/Modal';
4
- export { Dropdown, DropdownClass } from './src/Dropdown';
5
- export { GraphClass, WaveType, MoveType } from './src/Graph';
6
- export { Grid, GridClass } from './src/Grid';
7
- export { GridGR, GridGRClass } from './src/GridGR';
8
- export { GridPK, GridPKClass } from './src/GridPK';
9
- export { GridDB, GridDBClass } from './src/GridDB';
10
- export { GridFL, GridFLClass } from './src/GridFL';
11
- export { GridFE, GridFEClass } from './src/GridFE';
12
- export { GridCD, GridCDClass } from './src/GridCD';
13
- export { Card, CardClass } from './src/Card';
14
- export { FieldEdit, FieldEditClass } from './src/FieldEdit';
15
- export { Images } from './src/Themes/Images';
16
- export { Translate } from './src/Themes/Translate';
17
- export { DefaultGridTheme } from './src/Themes/DefaultGridTheme';
18
- export { DebugApp } from './src/Tests/DebugApp';
19
- export { TestData } from './src/Tests/TestData';
package/npm.aps DELETED
Binary file
package/src/Base.jsx DELETED
@@ -1,81 +0,0 @@
1
- import { DefaultGridTheme as Theme } from './Themes/DefaultGridTheme';
2
- export class BaseComponent {
3
-
4
- constructor(props) {
5
-
6
- this.level = props.level || 0;
7
-
8
- //window._logEnabled = true;
9
- if (!BaseComponent.theme) {
10
- BaseComponent.theme = new Theme();
11
-
12
- if (BaseComponent.useBootstrap) {
13
- BaseComponent.changeTheme(true);
14
- }
15
- }
16
- }
17
-
18
- translate(text, context) {
19
- return BaseComponent.translate(text, context);
20
- }
21
-
22
- static translate(text/*, context*/) {
23
- return text;
24
- }
25
-
26
- Spinner(id = -1, minW = -1, maxW = -1) {
27
- return BaseComponent.Spinner ? BaseComponent.Spinner(id, minW, maxW) : <></>;
28
- }
29
-
30
- static Spinner(id = -1, minW = -1, maxW = -1) {
31
- return (
32
- <div key={`loader_${id}_`}
33
- className='grid-loader'
34
- style={{ minWidth: minW ? minW + "px" : "", maxWidth: maxW ? maxW + "px" : "" }}
35
- >
36
- <div>{BaseComponent.translate('Loading') + '...'}</div>
37
- </div>
38
- )
39
- }
40
-
41
- formatDate(text, dateFormat) {
42
- return BaseComponent.formatDate(text, dateFormat);
43
- }
44
-
45
- static formatDate(text) {
46
- return text;
47
- }
48
-
49
- static dateFormat = 'dd.MM.yyyy';
50
- static dateTimeFormat = 'dd.MM.yyyy HH:mm:ss';
51
-
52
- static theme = null;
53
- static useBootstrap = false;
54
- static changeTheme = () => {
55
- return new Promise(function (resolve) {
56
- BaseComponent.theme = new Theme();
57
- resolve();
58
- })
59
- };
60
- }
61
-
62
- export function log(message) {
63
- if (!window._logEnabled) return;
64
-
65
- console.log(message);
66
- }
67
-
68
- export class NodeStatus {
69
- static grid = 0;
70
- static hidden = 1;
71
- static filter = 2;
72
- static lookup = 3;
73
- static custom = 4;
74
- };
75
-
76
- export class FilterType {
77
- static combobox = 0;
78
- static date = 1;
79
- static input = 2;
80
- static custom = 3;
81
- };
package/src/Card.jsx DELETED
@@ -1,333 +0,0 @@
1
- import { useState, useEffect } from 'react';
2
- import { Images } from './Themes/Images';
3
- import { FieldEdit } from './FieldEdit';
4
- import { GridFEClass } from './GridFE';
5
- // =================================================================================================================================================================
6
- export function Card(props) {
7
- let card = null;
8
-
9
- const [gridState, setState] = useState({ grid: card, ind: 0 });
10
-
11
- card = gridState.grid;
12
- let needGetRows = false;
13
- if (!card || card.uid !== props.uid && props.uid != null) {
14
- card = null;
15
- if (props.findGrid) {
16
- card = props.findGrid(props);
17
- }
18
- card = card || new CardClass(props);
19
- needGetRows = !card.changedRow;
20
- }
21
-
22
- if (props.init) {
23
- props.init(card);
24
- }
25
-
26
- card.refreshState = function () {
27
- setState({ grid: card, ind: card.stateind++ });
28
- }
29
-
30
- useEffect(() => {
31
- card.setupEvents();
32
-
33
- if (needGetRows && card.selectedRow() == null) {
34
-
35
- card.getRows().then(
36
- rows => {
37
- card.rows = rows;
38
- card.afterGetRows();
39
- card.refreshState();
40
- }
41
- );
42
- }
43
- else if (card.columns.length <= 0 && card.getColumns) {
44
- card.prepareColumns().then(() => card.refreshState());
45
- }
46
-
47
- return () => {
48
- card.clearEvents();
49
-
50
- if (card.graph && card.graph.nodeCount) {
51
- card.graph.nodeCount--;
52
- }
53
- }
54
- }, [card, needGetRows])
55
-
56
- return (card.render());
57
- }
58
- // =================================================================================================================================================================
59
- export class CardClass extends GridFEClass {
60
-
61
- constructor(props) {
62
- super(props);
63
-
64
- const card = this;
65
-
66
- card.visible = true;
67
-
68
- card.allowEdit = props.allowEdit;
69
- card.isVisible = props.isVisible || card.isVisible;
70
- card.activeRow = props.activeRow || '';
71
- card.refreshState = card.refreshState || (() => { });
72
-
73
- card.reqInd = 0;
74
- card.changedRow = {};
75
- card.initialRow = props.cardRow;
76
- Object.assign(card.changedRow, card.initialRow);
77
-
78
- if (props.isNewRecord) {
79
- card.isNewRecord = true;
80
- card.setEditing(true);
81
- }
82
-
83
- card.cardButtons = [];
84
- }
85
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
86
- render() {
87
- const card = this;
88
-
89
- card.addCardButtons();
90
- card.buttons = card.cardButtons;
91
-
92
- return (
93
- <>
94
- <div className='graph-card-toolbar'
95
- key={`cardToolbarDiv_${card.id}_`}
96
- style={{ margin: '0 1em' }}
97
- >
98
- {super.renderToolbar()}
99
- </div>
100
- <div className="graph-card-div"
101
- key={`cardBodyDiv_${card.id}_`}
102
- >
103
- {
104
- card.columns.map((col) => { return card.renderField(col) })
105
- }
106
- </div>
107
- {super.renderPopup()}
108
- </>
109
- )
110
- }
111
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
112
- renderField(col) {
113
- const card = this;
114
-
115
- if (col.visible == false) return <></>;
116
-
117
- const isLookup = col.type === 'lookup';
118
- let row = card.changedRow;
119
- let value = isLookup ? row[col.keyField] : row[col.name];
120
- value = value != null ? value : '';
121
- if (col.type == null) {
122
- col.type = '';
123
- }
124
- else if (isLookup) {
125
- col.grid = card;
126
- }
127
-
128
- return (
129
- <div className="graph-card-field"
130
- key={`cardLookupDiv_${card.id}_${col.id}_`}
131
- style={{ margin: '0 1em 0.5em 1em' }}
132
- >
133
- <span
134
- key={`cardLookupTitle_${card.id}_${col.id}_`}
135
- style={{ gridColumn: 'span 3', width: 'calc(100% - 4px)' }}
136
- >
137
- {col.title || col.name}
138
- </span>
139
- <FieldEdit
140
- keyPref={card.id + '_card_'}
141
- column={col}
142
- value={value}
143
- text={row[col.name]}
144
- findFieldEdit={() => { return col._fieldEditObj; }}
145
- large={true}
146
- level={card.level}
147
- disabled={card.allowEdit == null || card.allowEdit != true}
148
- init={
149
- (fe) => {
150
- if (card.isEditing() && !card.changedRow) {
151
- card.changedRow = {};
152
- Object.assign(card.changedRow, card.selectedRow());
153
- }
154
-
155
- row = !card.isEditing() ? card.selectedRow() : card.changedRow;
156
-
157
- col._fieldEditObj = fe;
158
- fe.value = isLookup ? row[col.keyField] : row[col.name];
159
- fe.value = fe.value != null ? fe.value : '';
160
-
161
- fe.text = row[col.name];
162
- }
163
- }
164
- onChange={(e) => {
165
- if (!card.changedRow) {
166
- card.changedRow = {};
167
- Object.assign(card.changedRow, card.selectedRow());
168
- }
169
-
170
- if (isLookup) {
171
- card.changedRow[col.keyField] = e.value;
172
- card.changedRow[col.name] = e.text;
173
- if (!card.isEditing()) {
174
- card.setEditing(true);
175
- }
176
- card.refreshState();
177
- }
178
- else {
179
- card.changedRow[col.name] = e.value;
180
- card.setEditing(true);
181
- card.refreshState();
182
- }
183
- }}
184
- >
185
- </FieldEdit>
186
- </div>
187
- )
188
-
189
- }
190
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
191
- addCardButtons() {
192
- const card = this;
193
-
194
- if (card._cardButtonsAdded) return;
195
-
196
- card._cardButtonsAdded = true;
197
-
198
- //card.cardButtons.push({
199
- // id: card.cardButtons.length,
200
- // name: 'edit',
201
- // title: card.translate('Start edit'),
202
- // label: images.edit ? '' : card.translate('Start edit'),
203
- // click: (e) => card.startEditNode(e),
204
- // img: images.edit
205
- //});
206
-
207
- card.cardButtons.push({
208
- id: card.cardButtons.length,
209
- name: 'commit',
210
- title: card.translate('Commit changes'),
211
- label: card.translate('Commit'),
212
- img: Images.images.commit,
213
- click: (e) => card.commitChangesNode(e),
214
- getDisabled: (e) => card.commitChangesNodeDisabled(e),
215
- });
216
-
217
- card.cardButtons.push({
218
- id: card.cardButtons.length,
219
- name: 'rollback',
220
- title: card.translate('Rollback changes'),
221
- label: card.translate('Rollback'),
222
- img: Images.images.rollback,
223
- click: (e) => {
224
- card.rollbackChangesNode(e);
225
- if (card.isNewRecord && card.close) card.close(e);
226
- },
227
- getDisabled: (e) => card.rollbackChangesNodeDisabled(e),
228
- });
229
- }
230
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
231
- commitChangesNodeDisabled() {
232
- const card = this;
233
- if (!card.isEditing()) return true;
234
-
235
- let requiredColumnsFilled = true;
236
-
237
- for (let col of card.columns) {
238
- if (!col.required || col.readonly) continue;
239
-
240
- let val = card.changedRow[col.name];
241
- if (col.required && (val == null || val === '')) {
242
- requiredColumnsFilled = false;
243
- break;
244
- }
245
- }
246
-
247
- return !requiredColumnsFilled;
248
- }
249
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
250
- rollbackChangesNodeDisabled() {
251
- const card = this;
252
- return !card.isEditing();
253
- }
254
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
255
- saveRow(e) {
256
- const card = this;
257
-
258
- if (!card.isRowChanged(e.row, card.changedRow)) return new Promise(function (resolve) { resolve(true); });
259
-
260
- return new Promise(function (resolve) {
261
- //e.row = card.initialRow = e.changedRow;
262
- Object.assign(card.initialRow, card.changedRow);
263
- resolve(true);
264
- });
265
- }
266
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
267
- commitChangesNode() {
268
- const card = this;
269
- card.saveRow({ row: card.initialRow, changedRow: card.changedRow }).then(
270
- () => {
271
- if (card.isNewRecord || !card.keyField) {
272
- card.setEditing(false);
273
- Object.assign(card.initialRow, card.changedRow);
274
- card.refreshState();
275
- }
276
- else {
277
- card.getRows().then(
278
- rows => {
279
- card.rows = rows;
280
- card.changedRow = rows[0];
281
- Object.assign(card.initialRow, card.changedRow);
282
- card.setEditing(false);
283
- card.afterGetRows();
284
- card.refreshState();
285
- }
286
- );
287
- }
288
- }
289
- ).catch((message) => {
290
- Object.assign(card.changedRow, card.initialRow);
291
- card.refreshState();
292
- alert(message || 'Error!');
293
- });
294
- }
295
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
296
- rollbackChangesNode() {
297
- const card = this;
298
- if (card.isNewRecord || !card.keyField) {
299
- card.changedRow = {};
300
- Object.assign(card.changedRow, card.initialRow);
301
- card.setEditing(false);
302
- card.refreshState();
303
- }
304
- else {
305
- card.getRows().then(
306
- rows => {
307
- card.rows = rows;
308
- card.changedRow = rows[0];
309
- Object.assign(card.initialRow, card.changedRow);
310
- card.setEditing(false);
311
- card.afterGetRows();
312
- card.refreshState();
313
- }
314
- );
315
- }
316
- }
317
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
318
- selectedRow() {
319
- const card = this;
320
- return card.changedRow;
321
- }
322
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
323
- getRows() {
324
- const card = this;
325
-
326
- return new Promise(function (resolve) {
327
- const res = [card.initialRow];
328
- card.totalRows = 1;
329
- resolve(res);
330
- });
331
- }
332
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
333
- }