@livinglogic/livingapi 1.13.0 → 1.15.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/CHANGELOG.md +18 -0
- package/HOWTO-release.md +2 -2
- package/README.md +3 -3
- package/dist/esm-node/livingapi.js +1 -1
- package/dist/esm-node/livingapi.js.map +1 -1
- package/dist/esm-npm/livingapi.js +1 -1
- package/dist/esm-npm/livingapi.js.map +1 -1
- package/dist/esm-static/livingapi.js +1 -1
- package/dist/esm-static/livingapi.js.map +1 -1
- package/dist/umd/livingapi.js +1 -1
- package/dist/umd/livingapi.js.map +1 -1
- package/package.json +2 -2
- package/src/livingapi.js +108 -12
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livinglogic/livingapi",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"description": "Javascript version of the LivingAPI classes of LivingApps",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
|
-
"url": "https://github.com/LivingLogic/LivingApps.Javascript.LivingAPI.git"
|
|
7
|
+
"url": "git+https://github.com/LivingLogic/LivingApps.Javascript.LivingAPI.git"
|
|
8
8
|
},
|
|
9
9
|
"publishConfig": {
|
|
10
10
|
"access": "public"
|
package/src/livingapi.js
CHANGED
|
@@ -60,7 +60,7 @@ export function element(name, ...args)
|
|
|
60
60
|
|
|
61
61
|
function _append_param_to_url(urlparams, name, value)
|
|
62
62
|
{
|
|
63
|
-
if (ul4._islist(value))
|
|
63
|
+
if (ul4._islist(value) || ul4._isset(value))
|
|
64
64
|
{
|
|
65
65
|
for (let v of value)
|
|
66
66
|
_append_param_to_url(urlparams, name, v);
|
|
@@ -783,8 +783,10 @@ export class App extends Base
|
|
|
783
783
|
};
|
|
784
784
|
|
|
785
785
|
|
|
786
|
-
App.prototype._ul4onattrs = ["globals", "name", "description", "lang", "
|
|
787
|
-
|
|
786
|
+
App.prototype._ul4onattrs = ["globals", "name", "description", "lang", "gramgen", "typename_nom_sin", "typename_gen_sin", "typename_dat_sin", "typename_acc_sin", "typename_nom_plu", "typename_gen_plu", "typename_dat_plu", "typename_acc_plu",
|
|
787
|
+
"startlink", "image", "createdby", "controls", "records", "recordcount", "installation", "categories", "params", "views", "datamanagement_identifier", "basetable", "primarykey", "insertprocedure", "updateprocedure", "deleteprocedure", "templates", "createdat", "updatedat", "updatedby", "superid", "favorite", "_active_view", "datasource", "menus", "panels"];
|
|
788
|
+
App.prototype._ul4attrs = new Set(["id", "globals", "name", "description", "lang", "gramgen", "typename_nom_sin", "typename_gen_sin", "typename_dat_sin", "typename_acc_sin", "typename_nom_plu", "typename_gen_plu", "typename_dat_plu", "typename_acc_plu",
|
|
789
|
+
"startlink", "image", "createdat", "createdby", "updatedat", "updatedby", "controls", "layout_controls", "records", "recordcount", "installation", "categories", "params", "views", "menus", "panels", "datasource", "datamanagement_identifier", "insert", "favorite", "_active_view", "template_url", "new_embedded_url", "new_standalone_url", "home_url", "datamanagement_url", "import_url", "tasks_url", /*"formbuilder_url", "tasks_config_url",*/ "datamanagement_config_url", "permissions_url", "datamanageview_url"]);
|
|
788
790
|
ul4.expose(App.prototype[ul4.symbols.call], ["values", "**"], {"needsobject": true});
|
|
789
791
|
ul4.expose(App.prototype.insert, ["values", "**"], {"needsobject": true});
|
|
790
792
|
ul4.expose(App.prototype.template_url, ["identifier", "p", "record", "p=", null, "params", "**"]);
|
|
@@ -853,6 +855,62 @@ DataSource.prototype._ul4onattrs = ["identifier", "app", "apps"];
|
|
|
853
855
|
DataSource.prototype._ul4attrs = new Set(["id", "identifier", "app", "apps"]);
|
|
854
856
|
|
|
855
857
|
|
|
858
|
+
class DataSourceChildrenType extends ul4.Type
|
|
859
|
+
{
|
|
860
|
+
instancecheck(obj)
|
|
861
|
+
{
|
|
862
|
+
return obj instanceof DataSourceChildren;
|
|
863
|
+
}
|
|
864
|
+
};
|
|
865
|
+
|
|
866
|
+
let datasourcechildrentype = new DataSourceChildrenType("la", "DataSourceChildren", "A master/detail specification in a data source");
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
export class DataSourceChildren extends Base
|
|
870
|
+
{
|
|
871
|
+
[ul4.symbols.type]()
|
|
872
|
+
{
|
|
873
|
+
return datasourcetypechildren;
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
[ul4.symbols.repr]()
|
|
877
|
+
{
|
|
878
|
+
return "<DataSourceChildren id=" + ul4._repr(this.id) + " identifier=" + ul4._repr(this.identifier) + ">";
|
|
879
|
+
}
|
|
880
|
+
};
|
|
881
|
+
|
|
882
|
+
DataSourceChildren.prototype._ul4onattrs = ["datasource", "identifier", "control"];
|
|
883
|
+
DataSourceChildren.prototype._ul4attrs = new Set(["id", "identifier", "datasource", "control"]);
|
|
884
|
+
|
|
885
|
+
|
|
886
|
+
class RecordChildrenType extends ul4.Type
|
|
887
|
+
{
|
|
888
|
+
instancecheck(obj)
|
|
889
|
+
{
|
|
890
|
+
return obj instanceof RecordChildren;
|
|
891
|
+
}
|
|
892
|
+
};
|
|
893
|
+
|
|
894
|
+
let recordchildrentype = new RecordChildrenType("la", "RecordChildren", "The child records of a master record");
|
|
895
|
+
|
|
896
|
+
|
|
897
|
+
export class RecordChildren extends Base
|
|
898
|
+
{
|
|
899
|
+
[ul4.symbols.type]()
|
|
900
|
+
{
|
|
901
|
+
return recordtypechildren;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
[ul4.symbols.repr]()
|
|
905
|
+
{
|
|
906
|
+
return "<RecordChildren id=" + ul4._repr(this.id) + ">";
|
|
907
|
+
}
|
|
908
|
+
};
|
|
909
|
+
|
|
910
|
+
RecordChildren.prototype._ul4onattrs = ["record", "datasourcechildren", "records"];
|
|
911
|
+
RecordChildren.prototype._ul4attrs = new Set(["id", "record", "datasourcechildren", "records"]);
|
|
912
|
+
|
|
913
|
+
|
|
856
914
|
class RecordType extends ul4.Type
|
|
857
915
|
{
|
|
858
916
|
instancecheck(obj)
|
|
@@ -878,7 +936,8 @@ export class Record extends Base
|
|
|
878
936
|
this._sparsevalues = new Map();
|
|
879
937
|
this._values = null;
|
|
880
938
|
this._fields = null;
|
|
881
|
-
this.
|
|
939
|
+
this.details = new Map();
|
|
940
|
+
this._children = null;
|
|
882
941
|
this.attachments = null;
|
|
883
942
|
this.errors = [];
|
|
884
943
|
this._sparsefielderrors = null;
|
|
@@ -1003,6 +1062,19 @@ export class Record extends Base
|
|
|
1003
1062
|
return this._fields;
|
|
1004
1063
|
}
|
|
1005
1064
|
|
|
1065
|
+
get children()
|
|
1066
|
+
{
|
|
1067
|
+
if (this._children === null)
|
|
1068
|
+
{
|
|
1069
|
+
this._children = new Map();
|
|
1070
|
+
for (const recordchildren of this.details.values())
|
|
1071
|
+
{
|
|
1072
|
+
this._children.set(recordchildren.datasourcechildren.identifier, recordchildren.records);
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
return this._children;
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1006
1078
|
is_dirty()
|
|
1007
1079
|
{
|
|
1008
1080
|
if (this.id === null)
|
|
@@ -1148,7 +1220,11 @@ export class Record extends Base
|
|
|
1148
1220
|
[ul4.symbols.getattr](name)
|
|
1149
1221
|
{
|
|
1150
1222
|
if (name.startsWith("c_"))
|
|
1223
|
+
{
|
|
1151
1224
|
return this.children.get(name.substr(2))
|
|
1225
|
+
}
|
|
1226
|
+
else if (name.startsWith("d_"))
|
|
1227
|
+
return this.details.get(name.substr(2))
|
|
1152
1228
|
else if (name.startsWith("f_"))
|
|
1153
1229
|
return this.fields.get(name.substr(2))
|
|
1154
1230
|
else if (name.startsWith("v_"))
|
|
@@ -1168,8 +1244,8 @@ export class Record extends Base
|
|
|
1168
1244
|
}
|
|
1169
1245
|
};
|
|
1170
1246
|
|
|
1171
|
-
Record.prototype._ul4onattrs = ["app", "createdat", "createdby", "updatedat", "updatedby", "updatecount", "_sparsevalues", "attachments", "
|
|
1172
|
-
Record.prototype._ul4attrs = new Set(["id", "app", "createdat", "createdby", "updatedat", "updatedby", "updatecount", "values", "fields", "attachments", "children", "errors", "template_url", "edit_embedded_url", "edit_standalone_url"]);
|
|
1247
|
+
Record.prototype._ul4onattrs = ["app", "createdat", "createdby", "updatedat", "updatedby", "updatecount", "_sparsevalues", "attachments", "details", "errors", "_sparsefielderrors", "_sparsefieldlookupdata"];
|
|
1248
|
+
Record.prototype._ul4attrs = new Set(["id", "app", "createdat", "createdby", "updatedat", "updatedby", "updatecount", "values", "fields", "attachments", "details", "children", "errors", "template_url", "edit_embedded_url", "edit_standalone_url"]);
|
|
1173
1249
|
ul4.expose(Record.prototype.is_dirty, []);
|
|
1174
1250
|
ul4.expose(Record.prototype.has_errors, []);
|
|
1175
1251
|
ul4.expose(Record.prototype.delete, []);
|
|
@@ -1260,6 +1336,16 @@ export class Field extends Base
|
|
|
1260
1336
|
this._dom_label.textContent = this.label;
|
|
1261
1337
|
}
|
|
1262
1338
|
|
|
1339
|
+
get mode()
|
|
1340
|
+
{
|
|
1341
|
+
return this._mode ?? this.control.mode;
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1344
|
+
set mode(value)
|
|
1345
|
+
{
|
|
1346
|
+
this._mode = value;
|
|
1347
|
+
}
|
|
1348
|
+
|
|
1263
1349
|
get label()
|
|
1264
1350
|
{
|
|
1265
1351
|
return this._label ?? this.control.label;
|
|
@@ -1568,7 +1654,7 @@ export class Field extends Base
|
|
|
1568
1654
|
};
|
|
1569
1655
|
|
|
1570
1656
|
Field.prototype._ul4onattrs = ["control", "record", "label", "value", "errors", "_visible", "_enabled", "_writable", "_required"];
|
|
1571
|
-
Field.prototype._ul4attrs = new Set(["control", "record", "label", "value", "errors", "visible", "enabled", "writable", "required", "top", "left", "width", "height"]);
|
|
1657
|
+
Field.prototype._ul4attrs = new Set(["control", "record", "label", "value", "mode", "errors", "visible", "enabled", "writable", "required", "top", "left", "width", "height"]);
|
|
1572
1658
|
Field.prototype._inputevent = "input";
|
|
1573
1659
|
|
|
1574
1660
|
|
|
@@ -1603,10 +1689,16 @@ export class BoolField extends Field
|
|
|
1603
1689
|
{
|
|
1604
1690
|
if (this.control.required)
|
|
1605
1691
|
change.errors.push(this.msg_bool_truerequired(change.value));
|
|
1606
|
-
change.value =
|
|
1692
|
+
change.value = null;
|
|
1693
|
+
}
|
|
1694
|
+
else if (["false", "no", "0", "off"].includes(change.value.toLowerCase()))
|
|
1695
|
+
{
|
|
1696
|
+
change.value = false;
|
|
1607
1697
|
}
|
|
1608
1698
|
else
|
|
1609
|
-
|
|
1699
|
+
{
|
|
1700
|
+
change.value = true;
|
|
1701
|
+
}
|
|
1610
1702
|
}
|
|
1611
1703
|
else if (typeof(change.value) === "boolean")
|
|
1612
1704
|
{
|
|
@@ -3461,7 +3553,7 @@ export class AppLookupChoiceField extends AppLookupField
|
|
|
3461
3553
|
{
|
|
3462
3554
|
constructor(control, record, value)
|
|
3463
3555
|
{
|
|
3464
|
-
super(
|
|
3556
|
+
super(control, record, value);
|
|
3465
3557
|
this._search_url = null;
|
|
3466
3558
|
this._search_param_name = null;
|
|
3467
3559
|
this._target_param_name = null;
|
|
@@ -5850,8 +5942,8 @@ export class MenuItem extends Base
|
|
|
5850
5942
|
}
|
|
5851
5943
|
};
|
|
5852
5944
|
|
|
5853
|
-
MenuItem.prototype._ul4onattrs = ["app", "identifier", "label", "type", "icon", "title", "target", "cssclass", "url", "order", "start_time", "end_time", "on_app_overview_page", "on_app_detail_page", "on_form_page", "on_iframe_page", "on_custom_overview_page", "accessible", "children", "createdat", "createdby", "updatedat", "updatedby"];
|
|
5854
|
-
MenuItem.prototype._ul4attrs = new Set(["id", "app", "identifier", "label", "type", "icon", "title", "target", "cssclass", "url", "order", "start_time", "end_time", "on_app_overview_page", "on_app_detail_page", "on_form_page", "on_iframe_page", "on_custom_overview_page", "accessible", "children", "createdat", "createdby", "updatedat", "updatedby"]);
|
|
5945
|
+
MenuItem.prototype._ul4onattrs = ["app", "identifier", "label", "type", "icon", "title", "target", "cssclass", "url", "order", "start_time", "end_time", "on_app_overview_page", "on_app_detail_page", "on_form_page", "on_iframe_page", "on_view_template", "on_custom_overview_page", "accessible", "children", "createdat", "createdby", "updatedat", "updatedby"];
|
|
5946
|
+
MenuItem.prototype._ul4attrs = new Set(["id", "app", "identifier", "label", "type", "icon", "title", "target", "cssclass", "url", "order", "start_time", "end_time", "on_app_overview_page", "on_app_detail_page", "on_form_page", "on_iframe_page", "on_view_template", "on_custom_overview_page", "accessible", "children", "createdat", "createdby", "updatedat", "updatedby"]);
|
|
5855
5947
|
|
|
5856
5948
|
|
|
5857
5949
|
class PanelType extends MenuItemType
|
|
@@ -6055,6 +6147,8 @@ let classes = [
|
|
|
6055
6147
|
MenuItem,
|
|
6056
6148
|
Panel,
|
|
6057
6149
|
DataSource,
|
|
6150
|
+
DataSourceChildren,
|
|
6151
|
+
RecordChildren,
|
|
6058
6152
|
Record,
|
|
6059
6153
|
BoolControl,
|
|
6060
6154
|
IntControl,
|
|
@@ -6176,6 +6270,7 @@ export const module = new ul4.Module(
|
|
|
6176
6270
|
FileSignatureControl: FileSignatureControl,
|
|
6177
6271
|
GeoControl: GeoControl,
|
|
6178
6272
|
ViewControl: ViewControl,
|
|
6273
|
+
RecordChildren: RecordChildren,
|
|
6179
6274
|
Record: Record,
|
|
6180
6275
|
FileAttachment: FileAttachment,
|
|
6181
6276
|
URLAttachment: URLAttachment,
|
|
@@ -6187,6 +6282,7 @@ export const module = new ul4.Module(
|
|
|
6187
6282
|
ButtonLayoutControl: ButtonLayoutControl,
|
|
6188
6283
|
View: View,
|
|
6189
6284
|
DataSource: DataSource,
|
|
6285
|
+
DataSourceChildren: DataSourceChildren,
|
|
6190
6286
|
LookupItem: LookupItem,
|
|
6191
6287
|
ViewLookupItem: ViewLookupItem,
|
|
6192
6288
|
Category: Category,
|