react-graph-grid 0.1.4 → 0.1.5

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/dist/index.esm.js +21 -0
  3. package/dist/index.js +56 -0
  4. package/dist/index10.esm.js +3844 -0
  5. package/dist/index10.js +3848 -0
  6. package/dist/index11.esm.js +4121 -0
  7. package/dist/index11.js +4125 -0
  8. package/dist/index12.esm.js +5238 -0
  9. package/dist/index12.js +5242 -0
  10. package/dist/index13.esm.js +5466 -0
  11. package/dist/index13.js +5470 -0
  12. package/dist/index14.esm.js +22 -0
  13. package/dist/index14.js +26 -0
  14. package/dist/index15.esm.js +402 -0
  15. package/dist/index15.js +403 -0
  16. package/dist/index16.esm.js +507 -0
  17. package/dist/index16.js +507 -0
  18. package/dist/index17.esm.js +256 -0
  19. package/dist/index17.js +257 -0
  20. package/dist/index18.esm.js +261 -0
  21. package/dist/index18.js +263 -0
  22. package/dist/index19.esm.js +623 -0
  23. package/dist/index19.js +624 -0
  24. package/dist/index2.esm.js +6 -0
  25. package/dist/index2.js +2 -0
  26. package/dist/index20.esm.js +219 -0
  27. package/dist/index20.js +220 -0
  28. package/dist/index21.esm.js +298 -0
  29. package/dist/index21.js +299 -0
  30. package/dist/index22.esm.js +662 -0
  31. package/dist/index22.js +663 -0
  32. package/dist/index23.esm.js +340 -0
  33. package/dist/index23.js +341 -0
  34. package/dist/index24.esm.js +269 -0
  35. package/dist/index24.js +270 -0
  36. package/dist/index25.esm.js +600 -0
  37. package/dist/index25.js +601 -0
  38. package/dist/index26.esm.js +245 -0
  39. package/dist/index26.js +246 -0
  40. package/dist/index27.esm.js +136 -0
  41. package/dist/index27.js +137 -0
  42. package/dist/index28.esm.js +70 -0
  43. package/dist/index28.js +70 -0
  44. package/dist/index29.esm.js +748 -0
  45. package/dist/index29.js +748 -0
  46. package/dist/index30.esm.js +363 -0
  47. package/dist/index30.js +363 -0
  48. package/dist/index4.esm.js +27 -0
  49. package/dist/index4.js +27 -0
  50. package/dist/index5.esm.js +35 -0
  51. package/dist/index5.js +39 -0
  52. package/dist/index6.esm.js +200 -0
  53. package/dist/index6.js +204 -0
  54. package/dist/index7.esm.js +9 -0
  55. package/dist/index7.js +13 -0
  56. package/dist/index8.esm.js +65 -0
  57. package/dist/index8.js +68 -0
  58. package/dist/index9.esm.js +102 -0
  59. package/dist/index9.js +103 -0
  60. package/{src/css/default.css → dist/react-graph-grid.css} +2 -1
  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;
@@ -1,4 +1,4 @@
1
- body {
1
+ body {
2
2
  }
3
3
 
4
4
  .modal-window-wnd {
@@ -949,3 +949,4 @@
949
949
  display: flex;
950
950
  justify-content: space-around;
951
951
  }
952
+ /*$vite$:1*/
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.5",
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
- }