@gisce/react-ooui 0.9.4 → 0.10.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/dist/helpers/formHelper.d.ts +1 -0
- package/dist/helpers/formHelper.d.ts.map +1 -1
- package/dist/helpers/formHelper.js +14 -1
- package/dist/helpers/formHelper.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/widgets/WidgetFactory.d.ts.map +1 -1
- package/dist/widgets/WidgetFactory.js +3 -0
- package/dist/widgets/WidgetFactory.js.map +1 -1
- package/dist/widgets/containers/Container.d.ts.map +1 -1
- package/dist/widgets/containers/Container.js +4 -3
- package/dist/widgets/containers/Container.js.map +1 -1
- package/dist/widgets/custom/Tags.d.ts.map +1 -1
- package/dist/widgets/custom/Tags.js +2 -43
- package/dist/widgets/custom/Tags.js.map +1 -1
- package/package.json +1 -1
- package/src/helpers/formHelper.ts +14 -0
- package/src/stories/mocks/models/cups.ts +1 -1
- package/src/widgets/WidgetFactory.tsx +3 -0
- package/src/widgets/containers/Container.tsx +28 -27
- package/src/widgets/custom/Tags.tsx +2 -46
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetFactory.d.ts","sourceRoot":"","sources":["../../src/widgets/WidgetFactory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetFactory.d.ts","sourceRoot":"","sources":["../../src/widgets/WidgetFactory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAkG1B,QAAA,MAAM,iBAAiB,UAAW,GAAG,+DAWpC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -10,6 +10,7 @@ var Image_1 = require("./base/Image");
|
|
|
10
10
|
var FiberGrid_1 = require("./custom/FiberGrid");
|
|
11
11
|
var Timeline_1 = require("./custom/Timeline");
|
|
12
12
|
var Indicator_1 = require("./custom/Indicator");
|
|
13
|
+
var Tags_1 = require("./custom/Tags");
|
|
13
14
|
var getWidgetType = function (type) {
|
|
14
15
|
switch (type) {
|
|
15
16
|
case "form":
|
|
@@ -68,6 +69,8 @@ var getWidgetType = function (type) {
|
|
|
68
69
|
return Timeline_1.Timeline;
|
|
69
70
|
case "indicator":
|
|
70
71
|
return Indicator_1.Indicator;
|
|
72
|
+
case "tags":
|
|
73
|
+
return Tags_1.Tags;
|
|
71
74
|
default:
|
|
72
75
|
return undefined;
|
|
73
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetFactory.js","sourceRoot":"","sources":["../../src/widgets/WidgetFactory.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAA0B;AAE1B,iCAwBiB;AACjB,sCAAqC;AACrC,gDAA+C;AAC/C,8CAA6C;AAC7C,gDAA8C;
|
|
1
|
+
{"version":3,"file":"WidgetFactory.js","sourceRoot":"","sources":["../../src/widgets/WidgetFactory.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAA0B;AAE1B,iCAwBiB;AACjB,sCAAqC;AACrC,gDAA+C;AAC/C,8CAA6C;AAC7C,gDAA8C;AAC9C,sCAAqC;AAErC,IAAM,aAAa,GAAG,UAAC,IAAY;IACjC,QAAQ,IAAI,EAAE;QACZ,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,UAAU;YACb,OAAO,gBAAQ,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,cAAM,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,iBAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,gBAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,eAAO,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,eAAO,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,mBAAW,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,UAAU;YACb,OAAO,gBAAQ,CAAC;QAClB,KAAK,UAAU,CAAC;QAChB,KAAK,eAAe,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,gBAAQ,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,iBAAS,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,iBAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,cAAM,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,KAAK;YACR,OAAO,WAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,YAAY;YACf,OAAO,iBAAS,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,qBAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,mBAAQ,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,qBAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,WAAI,CAAC;QACd;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC,CAAC;AAEF,IAAM,iBAAiB,GAAG,UAAC,KAAU;IAC3B,IAAA,IAAI,GAAK,KAAK,KAAV,CAAW;IACf,IAAA,IAAI,GAAuB,IAAI,KAA3B,CAA4B;IAExC,IAAM,WAAW,GAAQ,aAAa,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,eAAK,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC,CAAC;AAEO,8CAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/widgets/containers/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,IAAI,aAAa,EAAiB,MAAM,aAAa,CAAC;AAYxE,aAAK,KAAK,GAAG;IACX,SAAS,EAAE,aAAa,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,QAAA,MAAM,SAAS,UAAW,KAAK,KAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/widgets/containers/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,IAAI,aAAa,EAAiB,MAAM,aAAa,CAAC;AAYxE,aAAK,KAAK,GAAG;IACX,SAAS,EAAE,aAAa,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,QAAA,MAAM,SAAS,UAAW,KAAK,KAAG,MAAM,YAgFvC,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -39,8 +39,9 @@ var Container = function (props) {
|
|
|
39
39
|
row: rowWithoutInvisibleFields,
|
|
40
40
|
numberOfColumns: columns,
|
|
41
41
|
});
|
|
42
|
-
var rowWithEmptiesToFit;
|
|
43
|
-
if (i === 0
|
|
42
|
+
var rowWithEmptiesToFit = rowWithExpandedItems;
|
|
43
|
+
if (i === 0 ||
|
|
44
|
+
!(row.length === 1 && row.some(function (widget) { return widget.type === "group"; }))) {
|
|
44
45
|
rowWithEmptiesToFit = containerHelper_1.fillRowWithEmptiesToFit({
|
|
45
46
|
row: rowWithExpandedItems,
|
|
46
47
|
numberOfColumns: columns,
|
|
@@ -48,7 +49,7 @@ var Container = function (props) {
|
|
|
48
49
|
});
|
|
49
50
|
firstRow = firstRow.concat(rowWithEmptiesToFit);
|
|
50
51
|
}
|
|
51
|
-
return
|
|
52
|
+
return rowWithEmptiesToFit.map(function (item, j) {
|
|
52
53
|
// We check if we have any label+field inside the container.
|
|
53
54
|
// In this scenario, we must format the grid accordingly
|
|
54
55
|
// Otherwise, the grid will divide uniformly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../src/widgets/containers/Container.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,oCAAwE;AACxE,yDAA4D;AAE5D,6DAOmC;AAOnC,IAAM,SAAS,GAAG,UAAC,KAAY;IACrB,IAAA,SAAS,GAA0B,KAAK,UAA/B,EAAE,mBAAmB,GAAK,KAAK,oBAAV,CAAW;IACzC,IAAA,IAAI,GAAK,SAAS,KAAd,CAAe;IACrB,IAAA,OAAO,GAAK,SAAS,QAAd,CAAe;IAE5B,gDAAgD;IAChD,qDAAqD;IACrD,8BAA8B;IAC9B,IAAM,iBAAiB,GAAG,sCAAoB,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,iBAAiB,GAAG,OAAO,EAAE;QAC/B,OAAO,GAAG,iBAAiB,CAAC;KAC7B;IAED,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,QAAQ,GAAa,EAAE,CAAC;IAE5B,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,GAAa,EAAE,CAAC;QACxC,IAAM,yBAAyB,GAAG,GAAG,CAAC,MAAM,CAAC,UAAC,MAAM;YAClD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAM,oBAAoB,GAAG,uCAAqB,CAAC;YACjD,GAAG,EAAE,yBAAyB;YAC9B,eAAe,EAAE,OAAO;SACzB,CAAC,CAAC;QAEH,IAAI,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../src/widgets/containers/Container.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tags.d.ts","sourceRoot":"","sources":["../../../src/widgets/custom/Tags.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAgB,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO7E,aAAK,SAAS,GAAG;IACf,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,aAAK,cAAc,GAAG,SAAS,GAAG;IAChC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,IAAI,UAAW,SAAS,
|
|
1
|
+
{"version":3,"file":"Tags.d.ts","sourceRoot":"","sources":["../../../src/widgets/custom/Tags.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAgB,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO7E,aAAK,SAAS,GAAG;IACf,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,aAAK,cAAc,GAAG,SAAS,GAAG;IAChC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,IAAI,UAAW,SAAS,gBAQpC,CAAC;AAEF,eAAO,MAAM,SAAS,UAAW,cAAc,gBAmE9C,CAAC"}
|
|
@@ -76,38 +76,9 @@ var use_deep_compare_effect_1 = __importDefault(require("use-deep-compare-effect
|
|
|
76
76
|
var FormContext_1 = require("@/context/FormContext");
|
|
77
77
|
var antd_1 = require("antd");
|
|
78
78
|
var one2manyHelper_1 = require("@/helpers/one2manyHelper");
|
|
79
|
+
var formHelper_1 = require("@/helpers/formHelper");
|
|
79
80
|
var Tags = function (props) {
|
|
80
81
|
var ooui = props.ooui;
|
|
81
|
-
var relation = ooui.relation, context = ooui.context;
|
|
82
|
-
var _a = react_1.useState(true), isLoading = _a[0], setIsLoading = _a[1];
|
|
83
|
-
var _b = react_1.useState(), error = _b[0], setError = _b[1];
|
|
84
|
-
var formContext = react_1.useContext(FormContext_1.FormContext);
|
|
85
|
-
var getContext = (formContext || {}).getContext;
|
|
86
|
-
use_deep_compare_effect_1.default(function () {
|
|
87
|
-
fetchData();
|
|
88
|
-
}, [ooui]);
|
|
89
|
-
var fetchData = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
90
|
-
return __generator(this, function (_a) {
|
|
91
|
-
setIsLoading(true);
|
|
92
|
-
setError(undefined);
|
|
93
|
-
try {
|
|
94
|
-
console.log('Fetching....');
|
|
95
|
-
}
|
|
96
|
-
catch (err) {
|
|
97
|
-
setError(err);
|
|
98
|
-
}
|
|
99
|
-
finally {
|
|
100
|
-
setIsLoading(false);
|
|
101
|
-
}
|
|
102
|
-
return [2 /*return*/];
|
|
103
|
-
});
|
|
104
|
-
}); };
|
|
105
|
-
if (isLoading) {
|
|
106
|
-
return react_1.default.createElement(antd_1.Spin, null);
|
|
107
|
-
}
|
|
108
|
-
if (error) {
|
|
109
|
-
return react_1.default.createElement(antd_1.Alert, { className: "mt-10", message: error, type: "error", banner: true });
|
|
110
|
-
}
|
|
111
82
|
return (react_1.default.createElement(Field_1.default, __assign({ type: "array" }, props),
|
|
112
83
|
react_1.default.createElement(exports.TagsInput, { ooui: ooui })));
|
|
113
84
|
};
|
|
@@ -169,23 +140,11 @@ var TagsInput = function (props) {
|
|
|
169
140
|
if (isLoading) {
|
|
170
141
|
return react_1.default.createElement(antd_1.Spin, null);
|
|
171
142
|
}
|
|
172
|
-
var color = function (text) {
|
|
173
|
-
var hash = 0;
|
|
174
|
-
for (var i = 0; i < text.length; i++) {
|
|
175
|
-
hash = text.charCodeAt(i) + ((hash << 5) - hash);
|
|
176
|
-
}
|
|
177
|
-
var colour = '#';
|
|
178
|
-
for (var i = 0; i < 3; i++) {
|
|
179
|
-
var value = (hash >> (i * 8)) & 0xFF;
|
|
180
|
-
colour += ('00' + value.toString(16)).substr(-2);
|
|
181
|
-
}
|
|
182
|
-
return colour;
|
|
183
|
-
};
|
|
184
143
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
185
144
|
react_1.default.createElement("div", { style: { padding: "1rem" } }, itemsToShow.map(function (item, index) {
|
|
186
145
|
var _a;
|
|
187
146
|
var value = (_a = item.values) === null || _a === void 0 ? void 0 : _a[field];
|
|
188
|
-
return (react_1.default.createElement(antd_1.Tag, { key: index, color:
|
|
147
|
+
return (react_1.default.createElement(antd_1.Tag, { key: index, color: formHelper_1.colorFromString(value) }, value));
|
|
189
148
|
}))));
|
|
190
149
|
};
|
|
191
150
|
exports.TagsInput = TagsInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tags.js","sourceRoot":"","sources":["../../../src/widgets/custom/Tags.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAoD;AAEpD,yDAAmC;AAEnC,oFAA2D;AAC3D,qDAAqE;
|
|
1
|
+
{"version":3,"file":"Tags.js","sourceRoot":"","sources":["../../../src/widgets/custom/Tags.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -223,3 +223,17 @@ export const transformPlainMany2Ones = ({
|
|
|
223
223
|
|
|
224
224
|
return reformattedValues;
|
|
225
225
|
};
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
export const colorFromString = (text: string) => {
|
|
229
|
+
let hash = 0;
|
|
230
|
+
for (let i = 0; i < text.length; i++) {
|
|
231
|
+
hash = text.charCodeAt(i) + ((hash << 5) - hash);
|
|
232
|
+
}
|
|
233
|
+
let hexColour = '#';
|
|
234
|
+
for (let i = 0; i < 3; i++) {
|
|
235
|
+
var value = (hash >> (i * 8)) & 0xFF;
|
|
236
|
+
hexColour += ('00' + value.toString(16)).slice(-2);
|
|
237
|
+
}
|
|
238
|
+
return hexColour;
|
|
239
|
+
}
|
|
@@ -50,7 +50,7 @@ export default {
|
|
|
50
50
|
},
|
|
51
51
|
form: {
|
|
52
52
|
arch:
|
|
53
|
-
'<form string="CUPS">\n <notebook colspan="4">\n <page string="General">\n <field name="name" select="1" size="25"/>\n <field name="active" select="1"/>\n <field name="distribuidora_id" domain="[(\'supplier\',\'=\',True)]" context="{\'task\': \'test\'}" required="1" select="1"/>\n <field name="id_municipi" select="1"/>\n <field name="id_provincia"/>\n <field name="id_poblacio" select="1" domain="[(\'municipi_id.id\', \'=\', id_municipi)]"/>\n <field name="dp"/>\n <field name="direccio" select="1" colspan="4"/>\n <field name="polissa_polissa" select="1"/>\n <field name="polissa_comptador" select="1"/>\n <field name="polissa_potencia"/>\n <field name="potencia_adscrita" attrs="{\'readonly\':[(\'force_potencia_adscrita\',\'=\',0)]}"/>\n <field name="force_potencia_adscrita"/>\n <group colspan="4" string="Adreces">\n <notebook colspan="4">\n <page string="Principal">\n <separator string="Zona urbana" colspan="4"/>\n <field name="tv"/>\n <field name="nv" select="1"/>\n <field name="pnp" select="1"/>\n <field name="bq" select="1"/>\n <field name="es" select="1"/>\n <field name="pt" select="1"/>\n <field name="pu" select="1"/>\n <field name="aclarador" colspan="4" select="1"/>\n <separator string="Zona industrial" colspan="4"/>\n <field name="cpo" select="1"/>\n <field name="cpa" select="1"/>\n </page>\n <page string="Cadastre">\n <separator string="Zona urbana" colspan="4"/>\n <field name="catas_np"/>\n <field name="catas_nm"/>\n <field name="ref_catastral" select="1"/>\n <button type="object" name="update_dir_from_ref" string="Obtenir del Cadastre"/>\n <button type="object" name="delete_dir_ref" string="Eliminar dades del Cadastre" confirm="Està segur que vol eliminar les dades que s\'han obtingut del cadastre?"/>\n <field name="catas_ldt" colspan="4"/>\n <field name="catas_tv"/>\n <field name="catas_nv"/>\n <field name="catas_pnp"/>\n <field name="catas_bq"/>\n <field name="catas_es"/>\n <field name="catas_pt"/>\n <field name="catas_pu"/>\n <field name="catas_dp"/>\n <separator string="Zona industrial" colspan="4"/>\n <field name="catas_cpo"/>\n <field name="catas_cpa"/>\n <separator string="Sincronització amb el cadastre" colspan="4"/>\n <label colspan="2" string="Si disposa de la referencia cadastral pot copiar les dades del cadastre a l\'adreça principal mitjançant aquest botó"/>\n <button type="object" name="copy_to_alternative" string="Copiar a la principal"/>\n </page>\n <page string="Notes">\n <field name="notes" colspan="4" nolabel="1"/>\n </page>\n </notebook>\n </group>\n </page>\n <page string="Autoconsum">\n <field name="autoconsum_id" readonly="1" colspan="4"/>\n <field name="coef_repartiment" readonly="1" colspan="4"/>\n </page>\n <page string="Butlletins">\n <field name="butlletins" colspan="4" nolabel="1" context="{\'cups_id\': active_id}"/>\n </page>\n <page string="Històric d\'autoconsums">\n <field name="hist_autoconsum" nolabel="1" context="{\'default_cups_id\': active_id}" readonly="1"/>\n </page>\n <page string="Històric de pòlisses">\n <field name="polisses" nolabel="1" colspan="4">\n </field>\n </page>\n </notebook>\n </form>',
|
|
53
|
+
'<form string="CUPS">\n <notebook colspan="4">\n <page string="Corbes"> <group colspan="4"> <group string="Validada" colspan="2"> <field name="bq" string="Última corba"/> <field name="bq" string="Format"/> </group> <group string="Facturada" colspan="2"> <field name="bq" string="Última corba"/> <field name="bq" string="Format"/> </group> <group string="Autoconsumida" colspan="2"> <field name="bq" string="Última corba"/> <field name="bq" string="Format"/> </group> <group string="Generada Neta" colspan="2"> <field name="bq" string="Última corba"/> <field name="bq" string="Format"/> </group> <group string="Quart-Horària" colspan="2"> <field name="bq" string="Última corba"/> <field name="bq" string="Format"/> </group> </group> </page> <page string="General">\n <field name="name" select="1" size="25"/>\n <field name="active" select="1"/>\n <field name="distribuidora_id" domain="[(\'supplier\',\'=\',True)]" context="{\'task\': \'test\'}" required="1" select="1"/>\n <field name="id_municipi" select="1"/>\n <field name="id_provincia"/>\n <field name="id_poblacio" select="1" domain="[(\'municipi_id.id\', \'=\', id_municipi)]"/>\n <field name="dp"/>\n <field name="direccio" select="1" colspan="4"/>\n <field name="polissa_polissa" select="1"/>\n <field name="polissa_comptador" select="1"/>\n <field name="polissa_potencia"/>\n <field name="potencia_adscrita" attrs="{\'readonly\':[(\'force_potencia_adscrita\',\'=\',0)]}"/>\n <field name="force_potencia_adscrita"/>\n <group colspan="4" string="Adreces">\n <notebook colspan="4">\n <page string="Principal">\n <separator string="Zona urbana" colspan="4"/>\n <field name="tv"/>\n <field name="nv" select="1"/>\n <field name="pnp" select="1"/>\n <field name="bq" select="1"/>\n <field name="es" select="1"/>\n <field name="pt" select="1"/>\n <field name="pu" select="1"/>\n <field name="aclarador" colspan="4" select="1"/>\n <separator string="Zona industrial" colspan="4"/>\n <field name="cpo" select="1"/>\n <field name="cpa" select="1"/>\n </page>\n <page string="Cadastre">\n <separator string="Zona urbana" colspan="4"/>\n <field name="catas_np"/>\n <field name="catas_nm"/>\n <field name="ref_catastral" select="1"/>\n <button type="object" name="update_dir_from_ref" string="Obtenir del Cadastre"/>\n <button type="object" name="delete_dir_ref" string="Eliminar dades del Cadastre" confirm="Està segur que vol eliminar les dades que s\'han obtingut del cadastre?"/>\n <field name="catas_ldt" colspan="4"/>\n <field name="catas_tv"/>\n <field name="catas_nv"/>\n <field name="catas_pnp"/>\n <field name="catas_bq"/>\n <field name="catas_es"/>\n <field name="catas_pt"/>\n <field name="catas_pu"/>\n <field name="catas_dp"/>\n <separator string="Zona industrial" colspan="4"/>\n <field name="catas_cpo"/>\n <field name="catas_cpa"/>\n <separator string="Sincronització amb el cadastre" colspan="4"/>\n <label colspan="2" string="Si disposa de la referencia cadastral pot copiar les dades del cadastre a l\'adreça principal mitjançant aquest botó"/>\n <button type="object" name="copy_to_alternative" string="Copiar a la principal"/>\n </page>\n <page string="Notes">\n <field name="notes" colspan="4" nolabel="1"/>\n </page>\n </notebook>\n </group>\n </page>\n <page string="Autoconsum">\n <field name="autoconsum_id" readonly="1" colspan="4"/>\n <field name="coef_repartiment" readonly="1" colspan="4"/>\n </page>\n <page string="Butlletins">\n <field name="butlletins" colspan="4" nolabel="1" context="{\'cups_id\': active_id}"/>\n </page>\n <page string="Històric d\'autoconsums">\n <field name="hist_autoconsum" nolabel="1" context="{\'default_cups_id\': active_id}" readonly="1"/>\n </page>\n <page string="Històric de pòlisses">\n <field name="polisses" nolabel="1" colspan="4">\n </field>\n </page>\n </notebook>\n </form>',
|
|
54
54
|
field_parent: false,
|
|
55
55
|
fields: {
|
|
56
56
|
aclarador: {
|
|
@@ -29,6 +29,7 @@ import { Image } from "./base/Image";
|
|
|
29
29
|
import { FiberGrid } from "./custom/FiberGrid";
|
|
30
30
|
import { Timeline } from "./custom/Timeline";
|
|
31
31
|
import { Indicator} from "./custom/Indicator";
|
|
32
|
+
import { Tags } from "./custom/Tags";
|
|
32
33
|
|
|
33
34
|
const getWidgetType = (type: string) => {
|
|
34
35
|
switch (type) {
|
|
@@ -88,6 +89,8 @@ const getWidgetType = (type: string) => {
|
|
|
88
89
|
return Timeline;
|
|
89
90
|
case "indicator":
|
|
90
91
|
return Indicator;
|
|
92
|
+
case "tags":
|
|
93
|
+
return Tags;
|
|
91
94
|
default:
|
|
92
95
|
return undefined;
|
|
93
96
|
}
|
|
@@ -42,8 +42,11 @@ const Container = (props: Props): React.ReactElement => {
|
|
|
42
42
|
numberOfColumns: columns,
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
-
let rowWithEmptiesToFit;
|
|
46
|
-
if (
|
|
45
|
+
let rowWithEmptiesToFit = rowWithExpandedItems;
|
|
46
|
+
if (
|
|
47
|
+
i === 0 ||
|
|
48
|
+
!(row.length === 1 && row.some((widget) => widget.type === "group"))
|
|
49
|
+
) {
|
|
47
50
|
rowWithEmptiesToFit = fillRowWithEmptiesToFit({
|
|
48
51
|
row: rowWithExpandedItems,
|
|
49
52
|
numberOfColumns: columns,
|
|
@@ -53,33 +56,31 @@ const Container = (props: Props): React.ReactElement => {
|
|
|
53
56
|
firstRow = firstRow.concat(rowWithEmptiesToFit);
|
|
54
57
|
}
|
|
55
58
|
|
|
56
|
-
return (
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
59
|
+
return rowWithEmptiesToFit.map((item: Widget, j: number) => {
|
|
60
|
+
// We check if we have any label+field inside the container.
|
|
61
|
+
// In this scenario, we must format the grid accordingly
|
|
62
|
+
// Otherwise, the grid will divide uniformly
|
|
63
|
+
if (item instanceof Label && (item as Label).fieldForLabel) {
|
|
64
|
+
fieldInRows = true;
|
|
65
|
+
}
|
|
64
66
|
|
|
65
|
-
|
|
67
|
+
const itemRowIndex = row.indexOf(item);
|
|
66
68
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
);
|
|
69
|
+
return (
|
|
70
|
+
<div
|
|
71
|
+
key={`${i.toString()}-${itemRowIndex.toString()}`}
|
|
72
|
+
style={{
|
|
73
|
+
...getSpanStyleForItem({ item, responsiveBehaviour }),
|
|
74
|
+
minWidth: 0,
|
|
75
|
+
}}
|
|
76
|
+
>
|
|
77
|
+
{createReactWidget({
|
|
78
|
+
ooui: item,
|
|
79
|
+
responsiveBehaviour,
|
|
80
|
+
})}
|
|
81
|
+
</div>
|
|
82
|
+
);
|
|
83
|
+
});
|
|
83
84
|
});
|
|
84
85
|
|
|
85
86
|
const templateColumns =
|
|
@@ -4,9 +4,9 @@ import Field from "@/common/Field";
|
|
|
4
4
|
import { One2manyItem, One2manyValue } from "../base/one2many/One2manyInput";
|
|
5
5
|
import useDeepCompareEffect from "use-deep-compare-effect";
|
|
6
6
|
import { FormContext, FormContextType } from "@/context/FormContext";
|
|
7
|
-
import ConnectionProvider from "@/ConnectionProvider";
|
|
8
7
|
import { Spin, Alert, Timeline as AntTimeline, Tag as AntTag } from "antd";
|
|
9
8
|
import { readObjectValues } from "@/helpers/one2manyHelper";
|
|
9
|
+
import { colorFromString } from "@/helpers/formHelper";
|
|
10
10
|
|
|
11
11
|
type TagsProps = {
|
|
12
12
|
ooui: TagsOoui;
|
|
@@ -19,37 +19,6 @@ type TagsInputProps = TagsProps & {
|
|
|
19
19
|
|
|
20
20
|
export const Tags = (props: TagsProps) => {
|
|
21
21
|
const { ooui } = props;
|
|
22
|
-
const { relation, context } = ooui;
|
|
23
|
-
const [isLoading, setIsLoading] = useState<boolean>(true);
|
|
24
|
-
const [error, setError] = useState<string>();
|
|
25
|
-
const formContext = useContext(FormContext) as FormContextType;
|
|
26
|
-
const { getContext } = formContext || {};
|
|
27
|
-
|
|
28
|
-
useDeepCompareEffect(() => {
|
|
29
|
-
fetchData();
|
|
30
|
-
}, [ooui]);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const fetchData = async () => {
|
|
34
|
-
setIsLoading(true);
|
|
35
|
-
setError(undefined);
|
|
36
|
-
|
|
37
|
-
try {
|
|
38
|
-
console.log('Fetching....')
|
|
39
|
-
} catch (err) {
|
|
40
|
-
setError(err as any);
|
|
41
|
-
} finally {
|
|
42
|
-
setIsLoading(false);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
if (isLoading) {
|
|
47
|
-
return <Spin />;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (error) {
|
|
51
|
-
return <Alert className="mt-10" message={error} type="error" banner />;
|
|
52
|
-
}
|
|
53
22
|
|
|
54
23
|
return (
|
|
55
24
|
<Field type={"array"} {...props}>
|
|
@@ -111,19 +80,6 @@ export const TagsInput = (props: TagsInputProps) => {
|
|
|
111
80
|
return <Spin />;
|
|
112
81
|
}
|
|
113
82
|
|
|
114
|
-
const color = (text: string) => {
|
|
115
|
-
let hash = 0;
|
|
116
|
-
for (let i = 0; i < text.length; i++) {
|
|
117
|
-
hash = text.charCodeAt(i) + ((hash << 5) - hash);
|
|
118
|
-
}
|
|
119
|
-
var colour = '#';
|
|
120
|
-
for (let i = 0; i < 3; i++) {
|
|
121
|
-
var value = (hash >> (i * 8)) & 0xFF;
|
|
122
|
-
colour += ('00' + value.toString(16)).substr(-2);
|
|
123
|
-
}
|
|
124
|
-
return colour;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
83
|
return (
|
|
128
84
|
<>
|
|
129
85
|
<div style={{ padding: "1rem" }}>
|
|
@@ -131,7 +87,7 @@ export const TagsInput = (props: TagsInputProps) => {
|
|
|
131
87
|
{itemsToShow.map((item, index) => {
|
|
132
88
|
const value = item.values?.[field];
|
|
133
89
|
return (
|
|
134
|
-
<AntTag key={index} color={
|
|
90
|
+
<AntTag key={index} color={colorFromString(value)}>{value}</AntTag>
|
|
135
91
|
);
|
|
136
92
|
})}
|
|
137
93
|
</div>
|