@gisce/ooui 2.21.0-alpha.3 → 2.21.0-rc.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/dist/Field.d.ts +0 -10
- package/dist/Field.d.ts.map +1 -1
- package/dist/Form.d.ts +0 -5
- package/dist/Form.d.ts.map +1 -1
- package/dist/Tree.d.ts +0 -5
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Widget.d.ts +5 -0
- package/dist/Widget.d.ts.map +1 -1
- package/dist/helpers/nodeParser.d.ts.map +1 -1
- package/dist/ooui.es.js +322 -351
- package/dist/ooui.es.js.map +1 -1
- package/package.json +1 -1
- package/src/Field.ts +0 -37
- package/src/Form.ts +0 -13
- package/src/Tree.ts +1 -13
- package/src/Widget.ts +24 -2
- package/src/helpers/nodeParser.ts +1 -7
- package/src/spec/Form.spec.ts +0 -50
- package/src/spec/Tree.spec.ts +0 -19
- package/src/spec/Field.spec.ts +0 -35
- package/src/spec/nodeParser.spec.ts +0 -53
package/package.json
CHANGED
package/src/Field.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import Widget from "./Widget";
|
|
2
2
|
import { replaceEntities, isTrue } from "./helpers/attributeParser";
|
|
3
|
-
import { parseBoolAttribute } from "./helpers/nodeParser";
|
|
4
3
|
|
|
5
4
|
class Field extends Widget {
|
|
6
5
|
/**
|
|
@@ -118,35 +117,6 @@ class Field extends Widget {
|
|
|
118
117
|
this._selectionValues = value;
|
|
119
118
|
}
|
|
120
119
|
|
|
121
|
-
/**
|
|
122
|
-
* Base type of the field
|
|
123
|
-
*/
|
|
124
|
-
_fieldType: string = "";
|
|
125
|
-
get fieldType(): string {
|
|
126
|
-
return this._fieldType;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
_autoRefresh?: boolean = false;
|
|
130
|
-
get autoRefresh(): boolean {
|
|
131
|
-
return this._autoRefresh ?? false;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
set autoRefresh(value: boolean) {
|
|
135
|
-
this._autoRefresh = value;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
get readOnly(): boolean | undefined {
|
|
139
|
-
if (this.autoRefresh) {
|
|
140
|
-
return true;
|
|
141
|
-
} else {
|
|
142
|
-
return super.readOnly;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
set readOnly(value: boolean | undefined) {
|
|
147
|
-
super.readOnly = value;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
120
|
constructor(props: any) {
|
|
151
121
|
super(props);
|
|
152
122
|
|
|
@@ -158,10 +128,6 @@ class Field extends Widget {
|
|
|
158
128
|
this._id = props.name;
|
|
159
129
|
}
|
|
160
130
|
|
|
161
|
-
if (props.type) {
|
|
162
|
-
this._fieldType = props.fieldsWidgetType;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
131
|
if (props.activated) {
|
|
166
132
|
this._activated = props.activated;
|
|
167
133
|
}
|
|
@@ -202,9 +168,6 @@ class Field extends Widget {
|
|
|
202
168
|
if (props.help_inline) {
|
|
203
169
|
this.tooltipInline = isTrue(props.help_inline);
|
|
204
170
|
}
|
|
205
|
-
if (props.autorefresh) {
|
|
206
|
-
this.autoRefresh = parseBoolAttribute(props.autorefresh);
|
|
207
|
-
}
|
|
208
171
|
}
|
|
209
172
|
}
|
|
210
173
|
|
package/src/Form.ts
CHANGED
|
@@ -120,14 +120,6 @@ class Form {
|
|
|
120
120
|
this._invisibleFields = value;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
/**
|
|
124
|
-
* List of autorefreshable fields
|
|
125
|
-
*/
|
|
126
|
-
_autorefreshableFields: string[] = [];
|
|
127
|
-
get autorefreshableFields(): string[] {
|
|
128
|
-
return this._autorefreshableFields;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
123
|
/**
|
|
132
124
|
* Context for each field in the form
|
|
133
125
|
*/
|
|
@@ -174,11 +166,6 @@ class Form {
|
|
|
174
166
|
this._contextForFields[unknownWidget._id] = widget._context;
|
|
175
167
|
}
|
|
176
168
|
});
|
|
177
|
-
|
|
178
|
-
// Also we store all the autorefreshables fields in a list
|
|
179
|
-
this._autorefreshableFields = allWidgets
|
|
180
|
-
.filter((widget) => widget instanceof Field && widget.autoRefresh)
|
|
181
|
-
.map((field) => (field as Field)._id);
|
|
182
169
|
}
|
|
183
170
|
|
|
184
171
|
parseNode({
|
package/src/Tree.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import WidgetFactory from "./WidgetFactory";
|
|
2
2
|
import Widget from "./Widget";
|
|
3
3
|
import { replaceEntities } from "./helpers/attributeParser";
|
|
4
|
-
import {
|
|
4
|
+
import { ParsedNode } from "./helpers/nodeParser";
|
|
5
5
|
import * as txml from "txml";
|
|
6
6
|
import { parseContext } from "./helpers/contextParser";
|
|
7
7
|
|
|
@@ -67,14 +67,6 @@ class Tree {
|
|
|
67
67
|
this._contextForFields = value;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
/**
|
|
71
|
-
* List of autorefreshable fields
|
|
72
|
-
*/
|
|
73
|
-
_autorefreshableFields: string[] = [];
|
|
74
|
-
get autorefreshableFields(): string[] {
|
|
75
|
-
return this._autorefreshableFields;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
70
|
/**
|
|
79
71
|
* Is infinite
|
|
80
72
|
*/
|
|
@@ -153,10 +145,6 @@ class Tree {
|
|
|
153
145
|
const widget = widgetFactory.createWidget(widgetType, mergedAttrs);
|
|
154
146
|
this._columns.push(widget);
|
|
155
147
|
}
|
|
156
|
-
|
|
157
|
-
if (parseBoolAttribute(mergedAttrs.autorefresh)) {
|
|
158
|
-
this._autorefreshableFields.push(name);
|
|
159
|
-
}
|
|
160
148
|
}
|
|
161
149
|
});
|
|
162
150
|
}
|
package/src/Widget.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { replaceEntities } from "./helpers/attributeParser";
|
|
2
|
-
import { parseBoolAttribute } from "./helpers/nodeParser";
|
|
3
2
|
|
|
4
3
|
abstract class Widget {
|
|
5
4
|
/**
|
|
@@ -116,6 +115,14 @@ abstract class Widget {
|
|
|
116
115
|
this._isFunction = value;
|
|
117
116
|
}
|
|
118
117
|
|
|
118
|
+
/**
|
|
119
|
+
* Base type of the field
|
|
120
|
+
*/
|
|
121
|
+
_fieldType: string = "";
|
|
122
|
+
get fieldType(): string {
|
|
123
|
+
return this._fieldType;
|
|
124
|
+
}
|
|
125
|
+
|
|
119
126
|
constructor(props?: any) {
|
|
120
127
|
this._colspan = Widget._defaultColspan;
|
|
121
128
|
this._invisible = false;
|
|
@@ -125,7 +132,19 @@ abstract class Widget {
|
|
|
125
132
|
this._colspan = +props.colspan;
|
|
126
133
|
}
|
|
127
134
|
if (props.readonly !== undefined) {
|
|
128
|
-
|
|
135
|
+
if (
|
|
136
|
+
props.readonly === "1" ||
|
|
137
|
+
props.readonly === 1 ||
|
|
138
|
+
props.readonly === true
|
|
139
|
+
) {
|
|
140
|
+
this._readOnly = true;
|
|
141
|
+
} else if (
|
|
142
|
+
props.readonly === "0" ||
|
|
143
|
+
props.readonly === 0 ||
|
|
144
|
+
props.readonly === false
|
|
145
|
+
) {
|
|
146
|
+
this._readOnly = false;
|
|
147
|
+
}
|
|
129
148
|
}
|
|
130
149
|
if (props.invisible) {
|
|
131
150
|
if (
|
|
@@ -149,6 +168,9 @@ abstract class Widget {
|
|
|
149
168
|
this._domain = replaceEntities(props.domain);
|
|
150
169
|
}
|
|
151
170
|
}
|
|
171
|
+
if (props.type) {
|
|
172
|
+
this._fieldType = props.fieldsWidgetType;
|
|
173
|
+
}
|
|
152
174
|
if (props.widget_props) {
|
|
153
175
|
if (typeof props.widget_props === "string") {
|
|
154
176
|
try {
|
|
@@ -5,13 +5,7 @@ type ParsedNode = {
|
|
|
5
5
|
};
|
|
6
6
|
|
|
7
7
|
const parseBoolAttribute = (attr: any): boolean => {
|
|
8
|
-
if (
|
|
9
|
-
attr === 1 ||
|
|
10
|
-
attr === "1" ||
|
|
11
|
-
attr === true ||
|
|
12
|
-
attr === "True" ||
|
|
13
|
-
attr === "true"
|
|
14
|
-
) {
|
|
8
|
+
if (attr === 1 || attr === "1" || attr === true || attr === "True") {
|
|
15
9
|
return true;
|
|
16
10
|
} else {
|
|
17
11
|
return false;
|
package/src/spec/Form.spec.ts
CHANGED
|
@@ -6015,54 +6015,4 @@ describe("A Form", () => {
|
|
|
6015
6015
|
expect(field_char?.type).toBe("arrow_steps");
|
|
6016
6016
|
expect(field_char?.id).toBe("field_char");
|
|
6017
6017
|
});
|
|
6018
|
-
it("a field with autorefresh evaluated in attrs should be present in form autorefreshable fields property", () => {
|
|
6019
|
-
const fields = {
|
|
6020
|
-
field_char: {
|
|
6021
|
-
string: "Etapa",
|
|
6022
|
-
type: "char",
|
|
6023
|
-
},
|
|
6024
|
-
state: {
|
|
6025
|
-
readonly: true,
|
|
6026
|
-
required: true,
|
|
6027
|
-
selection: [
|
|
6028
|
-
["esborrany", "Borrador"],
|
|
6029
|
-
["validar", "Validar"],
|
|
6030
|
-
["pendent", "Pendiente"],
|
|
6031
|
-
["activa", "Activa"],
|
|
6032
|
-
["cancelada", "Cancelada"],
|
|
6033
|
-
["contracte", "Activación Contrato"],
|
|
6034
|
-
["novapolissa", "Creación nuevo contrato"],
|
|
6035
|
-
["modcontractual", "Modificación Contractual"],
|
|
6036
|
-
["impagament", "Impago"],
|
|
6037
|
-
["tall", "Corte"],
|
|
6038
|
-
["running", "En ejecución"],
|
|
6039
|
-
["baixa", "Baja"],
|
|
6040
|
-
["facturacio", "Facturación"],
|
|
6041
|
-
],
|
|
6042
|
-
string: "Estado",
|
|
6043
|
-
type: "selection",
|
|
6044
|
-
views: {},
|
|
6045
|
-
},
|
|
6046
|
-
};
|
|
6047
|
-
|
|
6048
|
-
const xmlViewForm = `<?xml version="1.0"?>
|
|
6049
|
-
<form string="Form1">
|
|
6050
|
-
<field name="field_char" widget="arrow_steps" colspan="4" nolabel="1" attrs="{'autorefresh':[('state', '=', 'running')]}" />
|
|
6051
|
-
</form>`;
|
|
6052
|
-
|
|
6053
|
-
const form = new Form(fields);
|
|
6054
|
-
form.parse(xmlViewForm, {
|
|
6055
|
-
values: {
|
|
6056
|
-
field_char: "test",
|
|
6057
|
-
state: "running",
|
|
6058
|
-
},
|
|
6059
|
-
});
|
|
6060
|
-
|
|
6061
|
-
const field_char = form.findById("field_char") as Field;
|
|
6062
|
-
expect(field_char).toBeDefined();
|
|
6063
|
-
expect(field_char?.autoRefresh).toBeTruthy();
|
|
6064
|
-
expect(field_char?.readOnly).toBeTruthy();
|
|
6065
|
-
expect(form.autorefreshableFields.length).toBe(1);
|
|
6066
|
-
expect(form.autorefreshableFields[0]).toBe("field_char");
|
|
6067
|
-
});
|
|
6068
6018
|
});
|
package/src/spec/Tree.spec.ts
CHANGED
|
@@ -377,23 +377,4 @@ describe("A Tree", () => {
|
|
|
377
377
|
const nameWidget = tree.findById("name") as Char;
|
|
378
378
|
expect(nameWidget.isFunction).toBeTruthy();
|
|
379
379
|
});
|
|
380
|
-
it("Should parse autorefreshable fields", () => {
|
|
381
|
-
const tree = new Tree({
|
|
382
|
-
name: {
|
|
383
|
-
required: true,
|
|
384
|
-
select: true,
|
|
385
|
-
size: 128,
|
|
386
|
-
string: "Potència contractada (kW)",
|
|
387
|
-
type: "char",
|
|
388
|
-
views: {},
|
|
389
|
-
},
|
|
390
|
-
});
|
|
391
|
-
tree.parse(
|
|
392
|
-
`<tree string="Partners" colors="red:type=='updated'"><field name="name" sum="Potència contractada (kW)" autorefresh="1"/></tree>`,
|
|
393
|
-
);
|
|
394
|
-
|
|
395
|
-
const nameWidget = tree.findById("name") as Char;
|
|
396
|
-
expect(nameWidget.autoRefresh).toBeTruthy();
|
|
397
|
-
expect(tree._autorefreshableFields.length).toBe(1);
|
|
398
|
-
});
|
|
399
380
|
});
|
package/src/spec/Field.spec.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import Field from "../Field";
|
|
3
|
-
|
|
4
|
-
describe("Field", () => {
|
|
5
|
-
describe("with the autoRefresh property", () => {
|
|
6
|
-
it("should be false as default", () => {
|
|
7
|
-
const props = {};
|
|
8
|
-
const field = new Field(props);
|
|
9
|
-
expect(field.autoRefresh).toBe(false);
|
|
10
|
-
});
|
|
11
|
-
it("should work with text", () => {
|
|
12
|
-
const props = {
|
|
13
|
-
autorefresh: "1",
|
|
14
|
-
};
|
|
15
|
-
const field = new Field(props);
|
|
16
|
-
expect(field.autoRefresh).toBe(true);
|
|
17
|
-
});
|
|
18
|
-
describe("if autorefresh is not a valid boold", () => {
|
|
19
|
-
it("should return false", () => {
|
|
20
|
-
const props = {
|
|
21
|
-
autorefresh: "abc",
|
|
22
|
-
};
|
|
23
|
-
const field = new Field(props);
|
|
24
|
-
expect(field.autoRefresh).toBe(false);
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
it("should return true for readOnly if autoRefresh is set", () => {
|
|
28
|
-
const props = {
|
|
29
|
-
autorefresh: true,
|
|
30
|
-
};
|
|
31
|
-
const field = new Field(props);
|
|
32
|
-
expect(field.readOnly).toBe(true);
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
});
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { parseBoolAttribute } from "../helpers/nodeParser";
|
|
3
|
-
|
|
4
|
-
describe("parseBoolAttribute", () => {
|
|
5
|
-
it("returns true for numeric 1", () => {
|
|
6
|
-
expect(parseBoolAttribute(1)).toBe(true);
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
it('returns true for string "1"', () => {
|
|
10
|
-
expect(parseBoolAttribute("1")).toBe(true);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it("returns true for boolean true", () => {
|
|
14
|
-
expect(parseBoolAttribute(true)).toBe(true);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it('returns true for string "True"', () => {
|
|
18
|
-
expect(parseBoolAttribute("True")).toBe(true);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('returns true for string "true"', () => {
|
|
22
|
-
expect(parseBoolAttribute("true")).toBe(true);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("returns false for numeric 0", () => {
|
|
26
|
-
expect(parseBoolAttribute(0)).toBe(false);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('returns false for string "0"', () => {
|
|
30
|
-
expect(parseBoolAttribute("0")).toBe(false);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it("returns false for boolean false", () => {
|
|
34
|
-
expect(parseBoolAttribute(false)).toBe(false);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('returns false for string "False"', () => {
|
|
38
|
-
expect(parseBoolAttribute("False")).toBe(false);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it("returns false for null", () => {
|
|
42
|
-
expect(parseBoolAttribute(null)).toBe(false);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it("returns false for undefined", () => {
|
|
46
|
-
expect(parseBoolAttribute(undefined)).toBe(false);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it("returns false for non-boolean strings", () => {
|
|
50
|
-
expect(parseBoolAttribute("yes")).toBe(false);
|
|
51
|
-
expect(parseBoolAttribute("no")).toBe(false);
|
|
52
|
-
});
|
|
53
|
-
});
|