@gisce/ooui 2.22.0-alpha.2 → 2.22.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gisce/ooui",
3
- "version": "2.22.0-alpha.2",
3
+ "version": "2.22.0",
4
4
  "engines": {
5
5
  "node": "20.5.0"
6
6
  },
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,27 +117,6 @@ class Field extends Widget {
118
117
  this._selectionValues = value;
119
118
  }
120
119
 
121
- _autoRefresh?: boolean = false;
122
- get autoRefresh(): boolean {
123
- return this._autoRefresh ?? false;
124
- }
125
-
126
- set autoRefresh(value: boolean) {
127
- this._autoRefresh = value;
128
- }
129
-
130
- get readOnly(): boolean | undefined {
131
- if (this.autoRefresh) {
132
- return true;
133
- } else {
134
- return super.readOnly;
135
- }
136
- }
137
-
138
- set readOnly(value: boolean | undefined) {
139
- super.readOnly = value;
140
- }
141
-
142
120
  constructor(props: any) {
143
121
  super(props);
144
122
 
@@ -190,9 +168,6 @@ class Field extends Widget {
190
168
  if (props.help_inline) {
191
169
  this.tooltipInline = isTrue(props.help_inline);
192
170
  }
193
- if (props.autorefresh) {
194
- this.autoRefresh = parseBoolAttribute(props.autorefresh);
195
- }
196
171
  }
197
172
  }
198
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 { parseBoolAttribute, ParsedNode } from "./helpers/nodeParser";
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
  /**
@@ -133,7 +132,19 @@ abstract class Widget {
133
132
  this._colspan = +props.colspan;
134
133
  }
135
134
  if (props.readonly !== undefined) {
136
- this._readOnly = parseBoolAttribute(props.readonly);
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
+ }
137
148
  }
138
149
  if (props.invisible) {
139
150
  if (
@@ -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;
@@ -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
  });
@@ -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&#232;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&#232;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
  });
@@ -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
- });