@journeyapps-labs/reactor-mod-data-browser 2.1.0 → 2.3.0

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 (124) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/@types/core/AbstractConnection.d.ts +2 -0
  3. package/dist/@types/core/SchemaModelDefinition.d.ts +8 -2
  4. package/dist/@types/core/SchemaModelObject.d.ts +15 -8
  5. package/dist/@types/core/query/AbstractQuery.d.ts +5 -10
  6. package/dist/@types/core/query/AbstractSerializableQuery.d.ts +11 -0
  7. package/dist/@types/core/query/Page.d.ts +2 -5
  8. package/dist/@types/core/query/filters.d.ts +17 -0
  9. package/dist/@types/core/query/query-changed/ChangedModelQuery.d.ts +15 -0
  10. package/dist/@types/core/query/query-simple/SimplePage.d.ts +12 -0
  11. package/dist/@types/core/query/{SimpleQuery.d.ts → query-simple/SimpleQuery.d.ts} +10 -8
  12. package/dist/@types/core/query/widgets/BelongsToDisplayWidget.d.ts +5 -2
  13. package/dist/@types/core/query/widgets/CellDisplayWidget.d.ts +1 -2
  14. package/dist/@types/core/query/widgets/ColumnDisplayWidget.d.ts +6 -0
  15. package/dist/@types/core/query/widgets/SmartBelongsToDisplayWidget.d.ts +10 -0
  16. package/dist/@types/core/query/widgets/SmartCellDisplayWidget.d.ts +7 -0
  17. package/dist/@types/core/query/widgets/SmartColumnWidget.d.ts +10 -0
  18. package/dist/@types/core/query/widgets/SmartFilterWidget.d.ts +9 -0
  19. package/dist/@types/entities/QueryEntityDefinition.d.ts +3 -3
  20. package/dist/@types/forms/SchemaModelForm.d.ts +32 -1
  21. package/dist/@types/forms/TypeEngine.d.ts +20 -0
  22. package/dist/@types/forms/inputs/DirtyWrapperInput.d.ts +15 -0
  23. package/dist/@types/index.d.ts +1 -1
  24. package/dist/@types/panels/model/ModelPanelFactory.d.ts +2 -2
  25. package/dist/@types/panels/query/QueryPanelFactory.d.ts +2 -1
  26. package/dist/DataBrowserModule.js +3 -1
  27. package/dist/DataBrowserModule.js.map +1 -1
  28. package/dist/actions/schema-definitions/CreateModelAction.js +2 -1
  29. package/dist/actions/schema-definitions/CreateModelAction.js.map +1 -1
  30. package/dist/actions/schema-definitions/QuerySchemaModelAction.js +1 -1
  31. package/dist/actions/schema-definitions/QuerySchemaModelAction.js.map +1 -1
  32. package/dist/core/AbstractConnection.js +15 -0
  33. package/dist/core/AbstractConnection.js.map +1 -1
  34. package/dist/core/SchemaModelDefinition.js +67 -13
  35. package/dist/core/SchemaModelDefinition.js.map +1 -1
  36. package/dist/core/SchemaModelObject.js +90 -50
  37. package/dist/core/SchemaModelObject.js.map +1 -1
  38. package/dist/core/query/AbstractQuery.js +2 -8
  39. package/dist/core/query/AbstractQuery.js.map +1 -1
  40. package/dist/core/query/AbstractSerializableQuery.js +13 -0
  41. package/dist/core/query/AbstractSerializableQuery.js.map +1 -0
  42. package/dist/core/query/Page.js +6 -11
  43. package/dist/core/query/Page.js.map +1 -1
  44. package/dist/core/query/filters.js +17 -0
  45. package/dist/core/query/filters.js.map +1 -0
  46. package/dist/core/query/query-changed/ChangedModelQuery.js +31 -0
  47. package/dist/core/query/query-changed/ChangedModelQuery.js.map +1 -0
  48. package/dist/core/query/query-simple/SimplePage.js +18 -0
  49. package/dist/core/query/query-simple/SimplePage.js.map +1 -0
  50. package/dist/core/query/{SimpleQuery.js → query-simple/SimpleQuery.js} +51 -23
  51. package/dist/core/query/query-simple/SimpleQuery.js.map +1 -0
  52. package/dist/core/query/widgets/BelongsToDisplayWidget.js +39 -13
  53. package/dist/core/query/widgets/BelongsToDisplayWidget.js.map +1 -1
  54. package/dist/core/query/widgets/CellDisplayWidget.js +19 -5
  55. package/dist/core/query/widgets/CellDisplayWidget.js.map +1 -1
  56. package/dist/core/query/widgets/ColumnDisplayWidget.js +22 -0
  57. package/dist/core/query/widgets/ColumnDisplayWidget.js.map +1 -0
  58. package/dist/core/query/widgets/SmartBelongsToDisplayWidget.js +29 -0
  59. package/dist/core/query/widgets/SmartBelongsToDisplayWidget.js.map +1 -0
  60. package/dist/core/query/widgets/SmartCellDisplayWidget.js +20 -0
  61. package/dist/core/query/widgets/SmartCellDisplayWidget.js.map +1 -0
  62. package/dist/core/query/widgets/SmartColumnWidget.js +29 -0
  63. package/dist/core/query/widgets/SmartColumnWidget.js.map +1 -0
  64. package/dist/core/query/widgets/SmartFilterWidget.js +56 -0
  65. package/dist/core/query/widgets/SmartFilterWidget.js.map +1 -0
  66. package/dist/entities/QueryEntityDefinition.js +3 -3
  67. package/dist/entities/QueryEntityDefinition.js.map +1 -1
  68. package/dist/entities/SchemaModelObjectEntityDefinition.js +28 -8
  69. package/dist/entities/SchemaModelObjectEntityDefinition.js.map +1 -1
  70. package/dist/forms/SchemaModelForm.js +153 -74
  71. package/dist/forms/SchemaModelForm.js.map +1 -1
  72. package/dist/forms/TypeEngine.js +135 -0
  73. package/dist/forms/TypeEngine.js.map +1 -0
  74. package/dist/forms/inputs/DirtyWrapperInput.js +72 -0
  75. package/dist/forms/inputs/DirtyWrapperInput.js.map +1 -0
  76. package/dist/index.js +1 -1
  77. package/dist/index.js.map +1 -1
  78. package/dist/panels/model/ModelPanelFactory.js +11 -7
  79. package/dist/panels/model/ModelPanelFactory.js.map +1 -1
  80. package/dist/panels/model/ModelPanelWidget.js +21 -4
  81. package/dist/panels/model/ModelPanelWidget.js.map +1 -1
  82. package/dist/panels/query/QueryPanelFactory.js +4 -0
  83. package/dist/panels/query/QueryPanelFactory.js.map +1 -1
  84. package/dist/panels/query/QueryPanelWidget.js +6 -3
  85. package/dist/panels/query/QueryPanelWidget.js.map +1 -1
  86. package/dist/panels/query/TableControlsWidget.js +42 -9
  87. package/dist/panels/query/TableControlsWidget.js.map +1 -1
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/dist-module/bundle.js +83 -27
  90. package/dist-module/bundle.js.map +1 -1
  91. package/package.json +8 -6
  92. package/src/DataBrowserModule.ts +3 -1
  93. package/src/actions/schema-definitions/CreateModelAction.ts +2 -1
  94. package/src/actions/schema-definitions/QuerySchemaModelAction.ts +1 -1
  95. package/src/core/AbstractConnection.ts +18 -1
  96. package/src/core/SchemaModelDefinition.ts +71 -14
  97. package/src/core/SchemaModelObject.ts +62 -46
  98. package/src/core/query/AbstractQuery.ts +10 -21
  99. package/src/core/query/AbstractSerializableQuery.ts +23 -0
  100. package/src/core/query/Page.ts +7 -14
  101. package/src/core/query/filters.ts +30 -0
  102. package/src/core/query/query-changed/ChangedModelQuery.ts +35 -0
  103. package/src/core/query/query-simple/SimplePage.ts +29 -0
  104. package/src/core/query/query-simple/SimpleQuery.tsx +163 -0
  105. package/src/core/query/widgets/BelongsToDisplayWidget.tsx +64 -18
  106. package/src/core/query/widgets/CellDisplayWidget.tsx +33 -14
  107. package/src/core/query/widgets/ColumnDisplayWidget.tsx +36 -0
  108. package/src/core/query/widgets/SmartBelongsToDisplayWidget.tsx +46 -0
  109. package/src/core/query/widgets/SmartCellDisplayWidget.tsx +29 -0
  110. package/src/core/query/widgets/SmartColumnWidget.tsx +46 -0
  111. package/src/core/query/widgets/SmartFilterWidget.tsx +80 -0
  112. package/src/entities/QueryEntityDefinition.ts +6 -6
  113. package/src/entities/SchemaModelObjectEntityDefinition.ts +34 -8
  114. package/src/forms/SchemaModelForm.tsx +145 -96
  115. package/src/forms/TypeEngine.ts +160 -0
  116. package/src/forms/inputs/DirtyWrapperInput.tsx +75 -0
  117. package/src/index.ts +1 -1
  118. package/src/panels/model/ModelPanelFactory.tsx +11 -9
  119. package/src/panels/model/ModelPanelWidget.tsx +45 -9
  120. package/src/panels/query/QueryPanelFactory.tsx +5 -0
  121. package/src/panels/query/QueryPanelWidget.tsx +6 -3
  122. package/src/panels/query/TableControlsWidget.tsx +85 -17
  123. package/dist/core/query/SimpleQuery.js.map +0 -1
  124. package/src/core/query/SimpleQuery.tsx +0 -120
@@ -1,87 +1,166 @@
1
- import { BooleanInput, DateInput, DateTimePickerType, FileInput, FormModel, ImageInput, SelectInput, TextInput } from '@journeyapps-labs/reactor-mod';
1
+ import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers } from "tslib";
2
+ import { EntityInput, FormModel, inject } from '@journeyapps-labs/reactor-mod';
2
3
  import * as _ from 'lodash';
3
- import { AttachmentType, BooleanType, DatetimeType, DateType, LocationType, MultipleChoiceType, PhotoType, SignatureType, SingleChoiceIntegerType, SingleChoiceType, TextType } from '@journeyapps/db';
4
- import { LocationInput } from './inputs/LocationInput';
5
- export class SchemaModelForm extends FormModel {
6
- constructor(options) {
7
- super();
8
- this.options = options;
9
- _.map(options.definition.definition.attributes, (attribute) => {
10
- var _a, _b, _c, _d, _e, _f, _g;
11
- if (attribute.type instanceof DatetimeType) {
12
- return new DateInput({
13
- name: attribute.name,
14
- label: attribute.label,
15
- value: ((_a = options.object) === null || _a === void 0 ? void 0 : _a.model[attribute.name]) || null,
16
- type: DateTimePickerType.DATETIME
4
+ import { DataBrowserEntities } from '../entities';
5
+ import { DirtyWrapperInput } from './inputs/DirtyWrapperInput';
6
+ import { TypeEngine } from './TypeEngine';
7
+ import { autorun } from 'mobx';
8
+ let Binding = (() => {
9
+ var _a, _Binding_typeEngine_accessor_storage;
10
+ let _typeEngine_decorators;
11
+ let _typeEngine_initializers = [];
12
+ let _typeEngine_extraInitializers = [];
13
+ return _a = class Binding {
14
+ get typeEngine() { return __classPrivateFieldGet(this, _Binding_typeEngine_accessor_storage, "f"); }
15
+ set typeEngine(value) { __classPrivateFieldSet(this, _Binding_typeEngine_accessor_storage, value, "f"); }
16
+ constructor(options) {
17
+ this.options = options;
18
+ _Binding_typeEngine_accessor_storage.set(this, __runInitializers(this, _typeEngine_initializers, void 0));
19
+ this.setting_value_via_autorun = __runInitializers(this, _typeEngine_extraInitializers);
20
+ const { input, model, name } = options;
21
+ this.setting_value_via_autorun = false;
22
+ this.listener2 = input.registerListener({
23
+ valueChanged: async () => {
24
+ if (this.setting_value_via_autorun) {
25
+ return;
26
+ }
27
+ model.set(input.name, await this.encode(input.value));
28
+ }
17
29
  });
18
- }
19
- if (attribute.type instanceof DateType) {
20
- return new DateInput({
21
- name: attribute.name,
22
- label: attribute.label,
23
- value: ((_b = options.object) === null || _b === void 0 ? void 0 : _b.model[attribute.name]) || null,
24
- type: DateTimePickerType.DATE
30
+ this.listener1 = autorun(async () => {
31
+ let value = model.patch.get(name);
32
+ if (value == null) {
33
+ value = await options.resolve();
34
+ }
35
+ this.setting_value_via_autorun = true;
36
+ if (value == null) {
37
+ input.setValue(null);
38
+ }
39
+ else {
40
+ let decoded = await this.decode(value);
41
+ input.setValue(decoded);
42
+ }
43
+ this.setting_value_via_autorun = false;
25
44
  });
26
45
  }
27
- if (attribute.type instanceof SignatureType || attribute.type instanceof PhotoType) {
28
- let media = new ImageInput({
29
- name: attribute.name,
30
- label: attribute.label
31
- });
32
- if (options.object) {
33
- options.object.getMedia(attribute.name).then((m) => {
34
- media.setValue(m);
35
- });
36
- }
37
- return media;
46
+ async encode(value) {
47
+ return value;
38
48
  }
39
- if (attribute.type instanceof AttachmentType) {
40
- return new FileInput({
41
- name: attribute.name,
42
- label: attribute.label,
43
- value: ((_c = options.object) === null || _c === void 0 ? void 0 : _c.model[attribute.name]) || null
44
- });
49
+ async decode(value) {
50
+ return value;
45
51
  }
46
- if (attribute.type instanceof BooleanType) {
47
- return new BooleanInput({
48
- name: attribute.name,
49
- label: attribute.label,
50
- value: (_d = options.object) === null || _d === void 0 ? void 0 : _d.model[attribute.name]
51
- });
52
+ get input() {
53
+ return this.options.input;
52
54
  }
53
- if (attribute.type instanceof LocationType) {
54
- return new LocationInput({
55
- name: attribute.name,
56
- label: attribute.label,
57
- value: (_e = options.object) === null || _e === void 0 ? void 0 : _e.model[attribute.name]
58
- });
55
+ dispose() {
56
+ this.listener1();
57
+ this.listener2();
59
58
  }
60
- if (attribute.type instanceof SingleChoiceIntegerType || attribute.type instanceof SingleChoiceType) {
61
- return new SelectInput({
62
- name: attribute.name,
63
- label: attribute.label,
64
- value: (_f = options.object) === null || _f === void 0 ? void 0 : _f.model[attribute.name],
65
- options: _.mapValues(attribute.type.options, (option) => {
66
- return `${option.value}`;
67
- })
59
+ },
60
+ _Binding_typeEngine_accessor_storage = new WeakMap(),
61
+ (() => {
62
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
63
+ _typeEngine_decorators = [inject(TypeEngine)];
64
+ __esDecorate(_a, null, _typeEngine_decorators, { kind: "accessor", name: "typeEngine", static: false, private: false, access: { has: obj => "typeEngine" in obj, get: obj => obj.typeEngine, set: (obj, value) => { obj.typeEngine = value; } }, metadata: _metadata }, _typeEngine_initializers, _typeEngine_extraInitializers);
65
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
66
+ })(),
67
+ _a;
68
+ })();
69
+ export { Binding };
70
+ export class TypedBinding extends Binding {
71
+ constructor(options) {
72
+ super(Object.assign(Object.assign({}, options), { resolve: async () => {
73
+ var _a;
74
+ return (_a = options.model) === null || _a === void 0 ? void 0 : _a.model[options.name];
75
+ } }));
76
+ this.handler = this.typeEngine.getHandler(options.variable.type);
77
+ }
78
+ async encode(value) {
79
+ return await this.handler.encode(value);
80
+ }
81
+ async decode(value) {
82
+ return await this.handler.decode(value);
83
+ }
84
+ }
85
+ let SchemaModelForm = (() => {
86
+ var _a, _SchemaModelForm_typeEngine_accessor_storage;
87
+ let _classSuper = FormModel;
88
+ let _typeEngine_decorators;
89
+ let _typeEngine_initializers = [];
90
+ let _typeEngine_extraInitializers = [];
91
+ return _a = class SchemaModelForm extends _classSuper {
92
+ get typeEngine() { return __classPrivateFieldGet(this, _SchemaModelForm_typeEngine_accessor_storage, "f"); }
93
+ set typeEngine(value) { __classPrivateFieldSet(this, _SchemaModelForm_typeEngine_accessor_storage, value, "f"); }
94
+ constructor(options) {
95
+ super();
96
+ this.options = options;
97
+ _SchemaModelForm_typeEngine_accessor_storage.set(this, __runInitializers(this, _typeEngine_initializers, void 0));
98
+ this.bindings = __runInitializers(this, _typeEngine_extraInitializers);
99
+ this.bindings = new Set();
100
+ _.map(options.definition.definition.belongsTo, (relationship) => {
101
+ const definition = options.definition.connection.getSchemaModelDefinitionByName(relationship.foreignType.name);
102
+ let entity = new EntityInput({
103
+ name: relationship.name,
104
+ entityType: DataBrowserEntities.SCHEMA_MODEL_OBJECT,
105
+ parent: definition,
106
+ label: relationship.name,
107
+ value: null
108
+ });
109
+ return new Binding({
110
+ name: relationship.name,
111
+ model: this.options.object,
112
+ input: entity,
113
+ resolve: () => {
114
+ if (!options.object.data.belongs_to[relationship.name]) {
115
+ return null;
116
+ }
117
+ return definition.resolve(options.object.data.belongs_to[relationship.name]);
118
+ }
119
+ });
120
+ })
121
+ .filter((f) => !!f)
122
+ .forEach((binding) => {
123
+ this.bindings.add(binding);
124
+ this.addInput(new DirtyWrapperInput(binding.input, options.object));
125
+ });
126
+ _.map(options.definition.definition.attributes, (attribute) => {
127
+ var _b;
128
+ let field = (_b = this.typeEngine.getHandler(attribute.type)) === null || _b === void 0 ? void 0 : _b.generateField({
129
+ name: attribute.name,
130
+ label: attribute.label,
131
+ type: attribute.type
132
+ });
133
+ if (!field) {
134
+ return;
135
+ }
136
+ return new TypedBinding({
137
+ variable: attribute,
138
+ model: this.options.object,
139
+ input: field,
140
+ name: attribute.name
141
+ });
142
+ })
143
+ .filter((binding) => !!binding)
144
+ .forEach((binding) => {
145
+ this.bindings.add(binding);
146
+ this.addInput(new DirtyWrapperInput(binding.input, options.object));
68
147
  });
69
148
  }
70
- if (attribute.type instanceof MultipleChoiceType) {
71
- }
72
- if (attribute.type instanceof TextType) {
73
- return new TextInput({
74
- name: attribute.name,
75
- label: attribute.label,
76
- value: (_g = options.object) === null || _g === void 0 ? void 0 : _g.model[attribute.name]
149
+ dispose() {
150
+ this.bindings.forEach((b) => {
151
+ b.dispose();
77
152
  });
78
153
  }
79
- return null;
80
- })
81
- .filter((f) => !!f)
82
- .forEach((a) => {
83
- this.addInput(a);
84
- });
85
- }
86
- }
154
+ },
155
+ _SchemaModelForm_typeEngine_accessor_storage = new WeakMap(),
156
+ (() => {
157
+ var _b;
158
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create((_b = _classSuper[Symbol.metadata]) !== null && _b !== void 0 ? _b : null) : void 0;
159
+ _typeEngine_decorators = [inject(TypeEngine)];
160
+ __esDecorate(_a, null, _typeEngine_decorators, { kind: "accessor", name: "typeEngine", static: false, private: false, access: { has: obj => "typeEngine" in obj, get: obj => obj.typeEngine, set: (obj, value) => { obj.typeEngine = value; } }, metadata: _metadata }, _typeEngine_initializers, _typeEngine_extraInitializers);
161
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
162
+ })(),
163
+ _a;
164
+ })();
165
+ export { SchemaModelForm };
87
166
  //# sourceMappingURL=SchemaModelForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaModelForm.js","sourceRoot":"","sources":["../../src/forms/SchemaModelForm.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SchemaModelForm.js","sourceRoot":"","sources":["../../src/forms/SchemaModelForm.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers } from "tslib";
2
+ import { Attachment, AttachmentType, BooleanType, DatetimeType, DateType, Day, LocationType, PhotoType, SignatureType, TextType } from '@journeyapps/db';
3
+ import { BooleanInput, DateInput, DateTimePickerType, FileInput, ImageInput, inject, MediaEngine, TextInput } from '@journeyapps-labs/reactor-mod';
4
+ import { LocationInput } from './inputs/LocationInput';
5
+ let TypeEngine = (() => {
6
+ var _a, _TypeEngine_mediaEngine_accessor_storage;
7
+ let _mediaEngine_decorators;
8
+ let _mediaEngine_initializers = [];
9
+ let _mediaEngine_extraInitializers = [];
10
+ return _a = class TypeEngine {
11
+ get mediaEngine() { return __classPrivateFieldGet(this, _TypeEngine_mediaEngine_accessor_storage, "f"); }
12
+ set mediaEngine(value) { __classPrivateFieldSet(this, _TypeEngine_mediaEngine_accessor_storage, value, "f"); }
13
+ constructor() {
14
+ _TypeEngine_mediaEngine_accessor_storage.set(this, __runInitializers(this, _mediaEngine_initializers, void 0));
15
+ this._mediaCache = __runInitializers(this, _mediaEngine_extraInitializers);
16
+ this.handlers = new Set();
17
+ this._mediaCache = new Map();
18
+ this.register({
19
+ matches: (type) => type instanceof DatetimeType || type instanceof DateType,
20
+ encode: async (value) => new Day(value),
21
+ decode: async (value) => {
22
+ if (value instanceof Day) {
23
+ return value.toDate();
24
+ }
25
+ return value;
26
+ },
27
+ generateField: ({ label, name, type }) => {
28
+ return new DateInput({
29
+ name,
30
+ label,
31
+ type: type instanceof DatetimeType ? DateTimePickerType.DATETIME : DateTimePickerType.DATE
32
+ });
33
+ }
34
+ });
35
+ this.register({
36
+ matches: (type) => type instanceof SignatureType || type instanceof PhotoType,
37
+ encode: async (value) => {
38
+ return Attachment.create({
39
+ data: await value.toArrayBuffer()
40
+ });
41
+ },
42
+ decode: async (value) => {
43
+ if (this._mediaCache.has(value.id)) {
44
+ return this._mediaCache.get(value.id);
45
+ }
46
+ let media = this.mediaEngine.getMediaTypeForPath('.jpg').generateMedia({
47
+ content: await value.toArrayBuffer(),
48
+ name: value.id,
49
+ uid: value.id
50
+ });
51
+ this._mediaCache.set(value.id, media);
52
+ return media;
53
+ },
54
+ generateField: ({ label, name }) => {
55
+ return new ImageInput({
56
+ name,
57
+ label
58
+ });
59
+ }
60
+ });
61
+ this.register({
62
+ matches: (type) => type instanceof AttachmentType,
63
+ encode: async (value) => {
64
+ return Attachment.create({
65
+ data: await value.arrayBuffer(),
66
+ filename: value.name
67
+ });
68
+ },
69
+ decode: async (value) => {
70
+ return new File([await value.toArrayBuffer()], value.id);
71
+ },
72
+ generateField: ({ label, name }) => {
73
+ return new FileInput({
74
+ name,
75
+ label
76
+ });
77
+ }
78
+ });
79
+ this.register({
80
+ matches: (type) => type instanceof BooleanType,
81
+ encode: async (value) => value,
82
+ decode: async (value) => value,
83
+ generateField: ({ label, name }) => {
84
+ return new BooleanInput({
85
+ name,
86
+ label
87
+ });
88
+ }
89
+ });
90
+ this.register({
91
+ matches: (type) => type instanceof TextType,
92
+ encode: async (value) => value,
93
+ decode: async (value) => value,
94
+ generateField: ({ label, name }) => {
95
+ return new TextInput({
96
+ name,
97
+ label
98
+ });
99
+ }
100
+ });
101
+ this.register({
102
+ matches: (type) => type instanceof LocationType,
103
+ encode: async (value) => value,
104
+ decode: async (value) => value,
105
+ generateField: ({ label, name }) => {
106
+ return new LocationInput({
107
+ name,
108
+ label
109
+ });
110
+ }
111
+ });
112
+ }
113
+ getHandler(type) {
114
+ for (let handler of this.handlers) {
115
+ if (handler.matches(type)) {
116
+ return handler;
117
+ }
118
+ }
119
+ return null;
120
+ }
121
+ register(handler) {
122
+ this.handlers.add(handler);
123
+ }
124
+ },
125
+ _TypeEngine_mediaEngine_accessor_storage = new WeakMap(),
126
+ (() => {
127
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
128
+ _mediaEngine_decorators = [inject(MediaEngine)];
129
+ __esDecorate(_a, null, _mediaEngine_decorators, { kind: "accessor", name: "mediaEngine", static: false, private: false, access: { has: obj => "mediaEngine" in obj, get: obj => obj.mediaEngine, set: (obj, value) => { obj.mediaEngine = value; } }, metadata: _metadata }, _mediaEngine_initializers, _mediaEngine_extraInitializers);
130
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
131
+ })(),
132
+ _a;
133
+ })();
134
+ export { TypeEngine };
135
+ //# sourceMappingURL=TypeEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeEngine.js","sourceRoot":"","sources":["../../src/forms/TypeEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { FormInput, styled } from '@journeyapps-labs/reactor-mod';
3
+ import * as React from 'react';
4
+ import { computed } from 'mobx';
5
+ import { observer } from 'mobx-react';
6
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
7
+ let DirtyWrapperInput = (() => {
8
+ var _a;
9
+ let _classSuper = FormInput;
10
+ let _instanceExtraInitializers = [];
11
+ let _get_dirty_decorators;
12
+ return _a = class DirtyWrapperInput extends _classSuper {
13
+ constructor(input, object) {
14
+ super(Object.assign({}, input.options));
15
+ this.input = (__runInitializers(this, _instanceExtraInitializers), input);
16
+ this.object = object;
17
+ input.registerListener({
18
+ valueChanged: () => {
19
+ this.setValue(input.value);
20
+ },
21
+ errorChanged: () => {
22
+ this.setError(input.error);
23
+ }
24
+ });
25
+ }
26
+ revert() {
27
+ if (this.object) {
28
+ this.object.revert(this.input.name);
29
+ }
30
+ }
31
+ get dirty() {
32
+ var _b;
33
+ return (_b = this.object) === null || _b === void 0 ? void 0 : _b.patch.has(this.input.name);
34
+ }
35
+ renderControl(options) {
36
+ return React.createElement(Wrapper, { input: this }, this.input.renderControl(options));
37
+ }
38
+ },
39
+ (() => {
40
+ var _b;
41
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create((_b = _classSuper[Symbol.metadata]) !== null && _b !== void 0 ? _b : null) : void 0;
42
+ _get_dirty_decorators = [computed];
43
+ __esDecorate(_a, null, _get_dirty_decorators, { kind: "getter", name: "dirty", static: false, private: false, access: { has: obj => "dirty" in obj, get: obj => obj.dirty }, metadata: _metadata }, null, _instanceExtraInitializers);
44
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
45
+ })(),
46
+ _a;
47
+ })();
48
+ export { DirtyWrapperInput };
49
+ export const Wrapper = observer((props) => {
50
+ return (React.createElement(S.Container, { dirty: props.input.dirty },
51
+ props.children,
52
+ props.input.dirty ? (React.createElement(S.RevertButton, { icon: "arrow-rotate-back", onClick: () => {
53
+ props.input.revert();
54
+ } })) : null));
55
+ });
56
+ var S;
57
+ (function (S) {
58
+ S.Container = styled.div `
59
+ border-left: solid 4px ${(p) => (p.dirty ? p.theme.status.success : 'transparent')};
60
+ padding-left: 2px;
61
+ display: flex;
62
+ flex-direction: row;
63
+ align-items: center;
64
+ `;
65
+ S.RevertButton = styled(FontAwesomeIcon) `
66
+ color: ${(p) => p.theme.status.success};
67
+ font-size: 12px;
68
+ padding: 5px;
69
+ cursor: pointer;
70
+ `;
71
+ })(S || (S = {}));
72
+ //# sourceMappingURL=DirtyWrapperInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirtyWrapperInput.js","sourceRoot":"","sources":["../../../src/forms/inputs/DirtyWrapperInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAA0B,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;IAEpD,iBAAiB;;sBAAS,SAAS;;;sBAAnC,iBAAkB,SAAQ,WAAS;YAC9C,YACS,KAAgB,EAChB,MAA0B;gBAEjC,KAAK,mBACA,KAAK,CAAC,OAAO,EAChB,CAAC;gBALI,UAAK,IAFH,mDAAiB,EAEnB,KAAK,EAAW;gBAChB,WAAM,GAAN,MAAM,CAAoB;gBAKjC,KAAK,CAAC,gBAAgB,CAAC;oBACrB,YAAY,EAAE,GAAG,EAAE;wBACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC7B,CAAC;oBACD,YAAY,EAAE,GAAG,EAAE;wBACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC7B,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;YAED,MAAM;gBACJ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YAES,IAAI,KAAK;;gBACjB,OAAO,MAAA,IAAI,CAAC,MAAM,0CAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;YAED,aAAa,CAAC,OAA+B;gBAC3C,OAAO,oBAAC,OAAO,IAAC,KAAK,EAAE,IAAI,IAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAW,CAAC;YAC7E,CAAC;;;;;qCANA,QAAQ;YAAC,oKAAI,KAAK,6DAElB;;;;;SA1BU,iBAAiB;AAqC9B,MAAM,CAAC,MAAM,OAAO,GAAoD,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;IACzF,OAAO,CACL,oBAAC,CAAC,CAAC,SAAS,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;QAClC,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CACnB,oBAAC,CAAC,CAAC,YAAY,IACb,IAAI,EAAC,mBAAmB,EACxB,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACvB,CAAC,GACD,CACH,CAAC,CAAC,CAAC,IAAI,CACI,CACf,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,IAAU,CAAC,CAeV;AAfD,WAAU,CAAC;IACI,WAAS,GAAG,MAAM,CAAC,GAAG,CAAoB;6BAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;;;;;GAKnF,CAAC;IAEW,cAAY,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;aACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO;;;;GAIvC,CAAC;AACJ,CAAC,EAfS,CAAC,KAAD,CAAC,QAeV"}
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ export * from './core/SchemaModelDefinition';
4
4
  export * from './core/SchemaModelObject';
5
5
  export * from './core/AbstractConnection';
6
6
  export * from './core/AbstractConnectionFactory';
7
- export * from './core/query/SimpleQuery';
7
+ export * from './core/query/query-simple/SimpleQuery';
8
8
  export * from './core/query/AbstractQuery';
9
9
  export * from './core/query/Page';
10
10
  export * from './core/types/ManualConnectionFactory';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,kDAAkD,CAAC;AACjE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,8CAA8C,CAAC;AAE7D,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,kDAAkD,CAAC;AACjE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,8CAA8C,CAAC;AAE7D,eAAe,iBAAiB,CAAC"}
@@ -34,14 +34,15 @@ let ModelPanelModel = (() => {
34
34
  this.model = options === null || options === void 0 ? void 0 : options.model;
35
35
  }
36
36
  encodeEntities() {
37
+ var _b;
37
38
  return {
38
39
  definition: this.definition,
39
- model: this.model
40
+ model: ((_b = this.model) === null || _b === void 0 ? void 0 : _b.model) ? this.model : null
40
41
  };
41
42
  }
42
- decodeEntities(data) {
43
+ async decodeEntities(data) {
43
44
  this.definition = data.definition;
44
- this.model = data.model;
45
+ this.model = data.model || (await data.definition.generateNewModelObject());
45
46
  }
46
47
  },
47
48
  _ModelPanelModel_connStore_accessor_storage = new WeakMap(),
@@ -75,13 +76,16 @@ export class ModelPanelFactory extends ReactorPanelFactory {
75
76
  });
76
77
  }
77
78
  getSimpleName(model) {
78
- if (!model.definition) {
79
+ var _a;
80
+ let _model = model.model;
81
+ let _definition = model.definition;
82
+ if (!_definition) {
79
83
  return super.getSimpleName(model);
80
84
  }
81
- if (model.model) {
82
- return `${model.definition.definition.label}: ${model.model.model.toString()}`;
85
+ if (_model) {
86
+ return `${_definition.definition.label}: ${((_a = _model.data) === null || _a === void 0 ? void 0 : _a.display) || '(new object)'}`;
83
87
  }
84
- return `${model.definition.definition.label}`;
88
+ return `${_definition.definition.label}`;
85
89
  }
86
90
  _generateModel() {
87
91
  return new ModelPanelModel(null);
@@ -1 +1 @@
1
- {"version":3,"file":"ModelPanelFactory.js","sourceRoot":"","sources":["../../../src/panels/model/ModelPanelFactory.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAY,UAAU,EAAE,MAAM,MAAM,CAAC;IAU/B,eAAe;;sBAAS,iBAAiB;;;;;;;;;;sBAAzC,eAAgB,SAAQ,WAAiB;YAEpD,IAAS,SAAS,6FAAkB;YAApC,IAAS,SAAS,kGAAkB;YAGpC,IAAS,UAAU,8FAAwB;YAA3C,IAAS,UAAU,mGAAwB;YAG3C,IAAS,KAAK,yFAAoB;YAAlC,IAAS,KAAK,8FAAoB;YAElC,YAAY,OAAgC;gBAC1C,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBATvB,gHAA2B;gBAG3B,2KAAkC;gBAGlC,kKAAyB;;gBAIhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC5B,IAAI,CAAC,UAAU,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAC;gBACtC,IAAI,CAAC,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;aAC7B;YAED,cAAc;gBACZ,OAAO;oBACL,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC;YACJ,CAAC;YAED,cAAc,CAAC,IAAwC;gBACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC;;;;;;;;qCA1BA,MAAM,CAAC,eAAe,CAAC;sCAGvB,UAAU;iCAGV,UAAU;YALX,8KAAS,SAAS,6BAAT,SAAS,6FAAkB;YAGpC,iLAAS,UAAU,6BAAV,UAAU,+FAAwB;YAG3C,kKAAS,KAAK,6BAAL,KAAK,qFAAoB;;;;;SARvB,eAAe;AA8B5B,MAAM,OAAO,iBAAkB,SAAQ,mBAAoC;IAGzE;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,OAAO;YACb,mBAAmB,EAAE,KAAK;YAC1B,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,iBAAiB,CAAC,IAAI;YAC5B,QAAQ,EAAE,aAAa;SACxB,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,KAAsB;QAClC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,oBAAoB,CAAC,KAAkD;QACrE,OAAO,oBAAC,gBAAgB,IAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAI,CAAC;IACvE,CAAC;;AA/BM,sBAAI,GAAG,mBAAmB,CAAC"}
1
+ {"version":3,"file":"ModelPanelFactory.js","sourceRoot":"","sources":["../../../src/panels/model/ModelPanelFactory.tsx"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { useEffect, useState } from 'react';
3
3
  import { observer } from 'mobx-react';
4
4
  import styled from '@emotion/styled';
5
- import { BorderLayoutWidget, LoadingPanelWidget, PANEL_CONTENT_PADDING, PanelToolbarWidget, ScrollableDivCss } from '@journeyapps-labs/reactor-mod';
5
+ import { BorderLayoutWidget, ioc, LoadingPanelWidget, PANEL_CONTENT_PADDING, PanelButtonWidget, PanelToolbarWidget, ScrollableDivCss, theme, ThemeStore } from '@journeyapps-labs/reactor-mod';
6
6
  import { SchemaModelForm } from '../../forms/SchemaModelForm';
7
7
  var S;
8
8
  (function (S) {
@@ -11,18 +11,29 @@ var S;
11
11
  padding: ${PANEL_CONTENT_PADDING}px;
12
12
  ${ScrollableDivCss};
13
13
  `;
14
+ S.Buttons = styled.div `
15
+ display: flex;
16
+ align-items: center;
17
+ column-gap: 5px;
18
+ padding: 5px;
19
+ `;
14
20
  })(S || (S = {}));
15
21
  export const ModelPanelWidget = observer((props) => {
16
22
  var _a;
17
23
  const [form, setForm] = useState(null);
24
+ const _theme = ioc.get(ThemeStore).getCurrentTheme(theme);
18
25
  useEffect(() => {
19
26
  if (!props.model.definition) {
20
27
  return;
21
28
  }
22
- setForm(new SchemaModelForm({
29
+ let _form = new SchemaModelForm({
23
30
  object: props.model.model,
24
31
  definition: props.model.definition
25
- }));
32
+ });
33
+ setForm(_form);
34
+ return () => {
35
+ _form.dispose();
36
+ };
26
37
  }, [props.model.model, props.model.definition]);
27
38
  let top = null;
28
39
  if (props.model.model) {
@@ -39,7 +50,13 @@ export const ModelPanelWidget = observer((props) => {
39
50
  ] }));
40
51
  }
41
52
  return (React.createElement(LoadingPanelWidget, { loading: !form }, () => {
42
- return (React.createElement(BorderLayoutWidget, { top: top },
53
+ return (React.createElement(BorderLayoutWidget, { top: top, bottom: React.createElement(S.Buttons, null,
54
+ React.createElement(PanelButtonWidget, { disabled: props.model.model.patch.size === 0, label: "Save", icon: "save", iconColor: _theme.status.success, action: () => {
55
+ props.model.model.save();
56
+ } }),
57
+ React.createElement(PanelButtonWidget, { disabled: props.model.model.patch.size === 0, label: "Discard edits", icon: "arrow-rotate-back", action: () => {
58
+ props.model.model.clearEdits();
59
+ } })) },
43
60
  React.createElement(S.Container, null, form.render())));
44
61
  }));
45
62
  });