@yuneta/gobj-ui 7.23.189 → 7.23.191
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/gobj-ui.cjs.js +31 -9
- package/dist/gobj-ui.es.js +31 -9
- package/package.json +1 -1
- package/src/c_yui_treedb_topic_with_form.js +13 -0
- package/src/c_yui_treedb_topics.js +50 -32
package/dist/gobj-ui.cjs.js
CHANGED
|
@@ -24741,7 +24741,8 @@ function open_json_viewer$1(gobj, opts) {
|
|
|
24741
24741
|
let priv = gobj.priv;
|
|
24742
24742
|
let schema = !!(opts && opts.schema);
|
|
24743
24743
|
if (priv.json_win || priv.json_modal) {
|
|
24744
|
-
if (
|
|
24744
|
+
if (schema) request_schema_file(gobj);
|
|
24745
|
+
else request_print_tranger$1(gobj, "");
|
|
24745
24746
|
return;
|
|
24746
24747
|
}
|
|
24747
24748
|
if (!(0, _yuneta_gobj_js.gclass_find_by_name)("C_YUI_JSON")) {
|
|
@@ -24751,9 +24752,7 @@ function open_json_viewer$1(gobj, opts) {
|
|
|
24751
24752
|
}
|
|
24752
24753
|
let mobile = is_mobile$2();
|
|
24753
24754
|
let shell = yui_shell_of(gobj);
|
|
24754
|
-
let
|
|
24755
|
-
if (schema) jv_kw.json_data = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "descs");
|
|
24756
|
-
let jv = (0, _yuneta_gobj_js.gobj_create_service)(`treedb-topics-json-${(0, _yuneta_gobj_js.clean_name)((0, _yuneta_gobj_js.gobj_name)(gobj))}`, "C_YUI_JSON", jv_kw, gobj);
|
|
24755
|
+
let jv = (0, _yuneta_gobj_js.gobj_create_service)(`treedb-topics-json-${(0, _yuneta_gobj_js.clean_name)((0, _yuneta_gobj_js.gobj_name)(gobj))}`, "C_YUI_JSON", { subscriber: gobj }, gobj);
|
|
24757
24756
|
if (!jv) {
|
|
24758
24757
|
(0, _yuneta_gobj_js.log_error)(`${(0, _yuneta_gobj_js.gobj_short_name)(gobj)}: cannot create the JSON viewer`);
|
|
24759
24758
|
return;
|
|
@@ -24809,7 +24808,8 @@ function open_json_viewer$1(gobj, opts) {
|
|
|
24809
24808
|
}
|
|
24810
24809
|
(0, _yuneta_gobj_js.gobj_start)(priv.json_win);
|
|
24811
24810
|
}
|
|
24812
|
-
if (
|
|
24811
|
+
if (schema) request_schema_file(gobj);
|
|
24812
|
+
else request_print_tranger$1(gobj, "");
|
|
24813
24813
|
}
|
|
24814
24814
|
/************************************************************
|
|
24815
24815
|
* Close the JSON viewer (user dismiss / teardown).
|
|
@@ -24845,6 +24845,19 @@ function close_json_viewer$1(gobj) {
|
|
|
24845
24845
|
* collapsed at 100 so a huge tranger stays a small payload of
|
|
24846
24846
|
* `__collapsed__` stubs the viewer expands on demand.
|
|
24847
24847
|
************************************************************/
|
|
24848
|
+
function request_schema_file(gobj) {
|
|
24849
|
+
let priv = gobj.priv;
|
|
24850
|
+
let remote = (0, _yuneta_gobj_js.gobj_read_pointer_attr)(gobj, "gobj_remote_yuno");
|
|
24851
|
+
if (!remote) {
|
|
24852
|
+
(0, _yuneta_gobj_js.log_error)(`${(0, _yuneta_gobj_js.gobj_short_name)(gobj)}: No gobj_remote_yuno defined`);
|
|
24853
|
+
return;
|
|
24854
|
+
}
|
|
24855
|
+
let ret = (0, _yuneta_gobj_js.gobj_command)(remote, "schema-file", { service: priv.treedb_name }, gobj);
|
|
24856
|
+
if (ret) (0, _yuneta_gobj_js.log_error)(ret);
|
|
24857
|
+
}
|
|
24858
|
+
/************************************************************
|
|
24859
|
+
* The whole tranger, for the raw-json viewer.
|
|
24860
|
+
************************************************************/
|
|
24848
24861
|
function request_print_tranger$1(gobj, path) {
|
|
24849
24862
|
let priv = gobj.priv;
|
|
24850
24863
|
let remote = (0, _yuneta_gobj_js.gobj_read_pointer_attr)(gobj, "gobj_remote_yuno");
|
|
@@ -24922,6 +24935,16 @@ function ac_mt_command_answer$2(gobj, event, kw, src) {
|
|
|
24922
24935
|
else (0, _yuneta_gobj_js.gobj_send_event)(jv, "EV_SET_JSON", { json: data }, gobj);
|
|
24923
24936
|
return 0;
|
|
24924
24937
|
}
|
|
24938
|
+
if (command === "schema-file") {
|
|
24939
|
+
let jv = gobj.priv.json_gobj;
|
|
24940
|
+
if (!jv || !(0, _yuneta_gobj_js.is_gobj)(jv) || (0, _yuneta_gobj_js.gobj_is_destroying)(jv)) return 0;
|
|
24941
|
+
if (result < 0) {
|
|
24942
|
+
yui_shell_show_error(yui_shell_of(gobj), comment || "schema-file failed", { t: i18next.t });
|
|
24943
|
+
return 0;
|
|
24944
|
+
}
|
|
24945
|
+
(0, _yuneta_gobj_js.gobj_send_event)(jv, "EV_SET_JSON", { json: data }, gobj);
|
|
24946
|
+
return 0;
|
|
24947
|
+
}
|
|
24925
24948
|
if (command === "get-asset") {
|
|
24926
24949
|
let asset_topic = (0, _yuneta_gobj_js.kw_get_str)(gobj, kw_command, "topic_name", "", 0);
|
|
24927
24950
|
let req_id = (0, _yuneta_gobj_js.kw_get_str)(gobj, kw_command, "req_id", "", 0);
|
|
@@ -25408,10 +25431,6 @@ function ac_open_json$1(gobj, event, kw, src) {
|
|
|
25408
25431
|
* one at a time, so it closes whatever was open first.
|
|
25409
25432
|
********************************************/
|
|
25410
25433
|
function ac_open_schema_json(gobj, event, kw, src) {
|
|
25411
|
-
if (!(0, _yuneta_gobj_js.is_object)((0, _yuneta_gobj_js.gobj_read_attr)(gobj, "descs"))) {
|
|
25412
|
-
(0, _yuneta_gobj_js.log_error)(`${(0, _yuneta_gobj_js.gobj_short_name)(gobj)}: schema json with no descs`);
|
|
25413
|
-
return -1;
|
|
25414
|
-
}
|
|
25415
25434
|
open_json_viewer$1(gobj, { schema: true });
|
|
25416
25435
|
return 0;
|
|
25417
25436
|
}
|
|
@@ -26440,6 +26459,7 @@ var attrs_table$5 = [
|
|
|
26440
26459
|
(0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_INTEGER, "page_size", 0, 0, "Rows per page. 0 leaves the `tabulator_settings` value alone. With with_remote_paging it is also the size of each fetch (200 when unset)"),
|
|
26441
26460
|
(0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_BOOLEAN, "with_in_row_edit_icons", 0, true, "Add a last column with internal EDIT/DELETE icon"),
|
|
26442
26461
|
(0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_BOOLEAN, "editable", 0, false, "Edit state"),
|
|
26462
|
+
(0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_INTEGER, "max_col_width", 0, 420, "Ceiling, in px, for a data column. The table lays out `fitDataFill`, which sizes a column to its DATA: one `description` holding a paragraph took the whole viewport and left every other column off screen. 0 removes the ceiling; a reader still widens any column by hand (columns are resizable)"),
|
|
26443
26463
|
(0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_BOOLEAN, "with_checkbox", 0, true, "Auxiliary first column to select rows"),
|
|
26444
26464
|
(0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_BOOLEAN, "with_radio", 0, false, "Auxiliary first column to select one row"),
|
|
26445
26465
|
(0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_BOOLEAN, "with_selection_bar", 0, false, "Show the shared selection bar (\"N selected\" + a way out) above the table while in edition mode. OFF by default: the bar takes its words from the HOST's i18n, and a host that has not defined \"{{n}} selected\" and \"clear selection\" would render the keys"),
|
|
@@ -27332,6 +27352,7 @@ function create_tabulator(gobj) {
|
|
|
27332
27352
|
}
|
|
27333
27353
|
if (colDef.headerFilter && colDef.headerFilter !== "tickCross") colDef.minWidth = 150;
|
|
27334
27354
|
}
|
|
27355
|
+
let max_col_width = (0, _yuneta_gobj_js.gobj_read_integer_attr)(gobj, "max_col_width");
|
|
27335
27356
|
for (let i = 0; i < desc.cols.length; i++) {
|
|
27336
27357
|
let col = desc.cols[i];
|
|
27337
27358
|
if (!col.id || col.id[0] === "_") continue;
|
|
@@ -27434,6 +27455,7 @@ function create_tabulator(gobj) {
|
|
|
27434
27455
|
hozAlign,
|
|
27435
27456
|
formatter: colFormatter
|
|
27436
27457
|
};
|
|
27458
|
+
if (max_col_width > 0) colDef.maxWidth = max_col_width;
|
|
27437
27459
|
if (with_header_filters) apply_header_filter(colDef, field_desc);
|
|
27438
27460
|
if (with_inline_edit) inline_editor_for(colDef, col, field_desc);
|
|
27439
27461
|
if (vertAlign) colDef.vertAlign = vertAlign;
|
package/dist/gobj-ui.es.js
CHANGED
|
@@ -24736,7 +24736,8 @@ function open_json_viewer$1(gobj, opts) {
|
|
|
24736
24736
|
let priv = gobj.priv;
|
|
24737
24737
|
let schema = !!(opts && opts.schema);
|
|
24738
24738
|
if (priv.json_win || priv.json_modal) {
|
|
24739
|
-
if (
|
|
24739
|
+
if (schema) request_schema_file(gobj);
|
|
24740
|
+
else request_print_tranger$1(gobj, "");
|
|
24740
24741
|
return;
|
|
24741
24742
|
}
|
|
24742
24743
|
if (!gclass_find_by_name("C_YUI_JSON")) {
|
|
@@ -24746,9 +24747,7 @@ function open_json_viewer$1(gobj, opts) {
|
|
|
24746
24747
|
}
|
|
24747
24748
|
let mobile = is_mobile$2();
|
|
24748
24749
|
let shell = yui_shell_of(gobj);
|
|
24749
|
-
let
|
|
24750
|
-
if (schema) jv_kw.json_data = gobj_read_attr(gobj, "descs");
|
|
24751
|
-
let jv = gobj_create_service(`treedb-topics-json-${clean_name(gobj_name(gobj))}`, "C_YUI_JSON", jv_kw, gobj);
|
|
24750
|
+
let jv = gobj_create_service(`treedb-topics-json-${clean_name(gobj_name(gobj))}`, "C_YUI_JSON", { subscriber: gobj }, gobj);
|
|
24752
24751
|
if (!jv) {
|
|
24753
24752
|
log_error(`${gobj_short_name(gobj)}: cannot create the JSON viewer`);
|
|
24754
24753
|
return;
|
|
@@ -24804,7 +24803,8 @@ function open_json_viewer$1(gobj, opts) {
|
|
|
24804
24803
|
}
|
|
24805
24804
|
gobj_start(priv.json_win);
|
|
24806
24805
|
}
|
|
24807
|
-
if (
|
|
24806
|
+
if (schema) request_schema_file(gobj);
|
|
24807
|
+
else request_print_tranger$1(gobj, "");
|
|
24808
24808
|
}
|
|
24809
24809
|
/************************************************************
|
|
24810
24810
|
* Close the JSON viewer (user dismiss / teardown).
|
|
@@ -24840,6 +24840,19 @@ function close_json_viewer$1(gobj) {
|
|
|
24840
24840
|
* collapsed at 100 so a huge tranger stays a small payload of
|
|
24841
24841
|
* `__collapsed__` stubs the viewer expands on demand.
|
|
24842
24842
|
************************************************************/
|
|
24843
|
+
function request_schema_file(gobj) {
|
|
24844
|
+
let priv = gobj.priv;
|
|
24845
|
+
let remote = gobj_read_pointer_attr(gobj, "gobj_remote_yuno");
|
|
24846
|
+
if (!remote) {
|
|
24847
|
+
log_error(`${gobj_short_name(gobj)}: No gobj_remote_yuno defined`);
|
|
24848
|
+
return;
|
|
24849
|
+
}
|
|
24850
|
+
let ret = gobj_command(remote, "schema-file", { service: priv.treedb_name }, gobj);
|
|
24851
|
+
if (ret) log_error(ret);
|
|
24852
|
+
}
|
|
24853
|
+
/************************************************************
|
|
24854
|
+
* The whole tranger, for the raw-json viewer.
|
|
24855
|
+
************************************************************/
|
|
24843
24856
|
function request_print_tranger$1(gobj, path) {
|
|
24844
24857
|
let priv = gobj.priv;
|
|
24845
24858
|
let remote = gobj_read_pointer_attr(gobj, "gobj_remote_yuno");
|
|
@@ -24917,6 +24930,16 @@ function ac_mt_command_answer$2(gobj, event, kw, src) {
|
|
|
24917
24930
|
else gobj_send_event(jv, "EV_SET_JSON", { json: data }, gobj);
|
|
24918
24931
|
return 0;
|
|
24919
24932
|
}
|
|
24933
|
+
if (command === "schema-file") {
|
|
24934
|
+
let jv = gobj.priv.json_gobj;
|
|
24935
|
+
if (!jv || !is_gobj(jv) || gobj_is_destroying(jv)) return 0;
|
|
24936
|
+
if (result < 0) {
|
|
24937
|
+
yui_shell_show_error(yui_shell_of(gobj), comment || "schema-file failed", { t });
|
|
24938
|
+
return 0;
|
|
24939
|
+
}
|
|
24940
|
+
gobj_send_event(jv, "EV_SET_JSON", { json: data }, gobj);
|
|
24941
|
+
return 0;
|
|
24942
|
+
}
|
|
24920
24943
|
if (command === "get-asset") {
|
|
24921
24944
|
let asset_topic = kw_get_str(gobj, kw_command, "topic_name", "", 0);
|
|
24922
24945
|
let req_id = kw_get_str(gobj, kw_command, "req_id", "", 0);
|
|
@@ -25403,10 +25426,6 @@ function ac_open_json$1(gobj, event, kw, src) {
|
|
|
25403
25426
|
* one at a time, so it closes whatever was open first.
|
|
25404
25427
|
********************************************/
|
|
25405
25428
|
function ac_open_schema_json(gobj, event, kw, src) {
|
|
25406
|
-
if (!is_object(gobj_read_attr(gobj, "descs"))) {
|
|
25407
|
-
log_error(`${gobj_short_name(gobj)}: schema json with no descs`);
|
|
25408
|
-
return -1;
|
|
25409
|
-
}
|
|
25410
25429
|
open_json_viewer$1(gobj, { schema: true });
|
|
25411
25430
|
return 0;
|
|
25412
25431
|
}
|
|
@@ -26435,6 +26454,7 @@ var attrs_table$5 = [
|
|
|
26435
26454
|
SDATA(data_type_t.DTP_INTEGER, "page_size", 0, 0, "Rows per page. 0 leaves the `tabulator_settings` value alone. With with_remote_paging it is also the size of each fetch (200 when unset)"),
|
|
26436
26455
|
SDATA(data_type_t.DTP_BOOLEAN, "with_in_row_edit_icons", 0, true, "Add a last column with internal EDIT/DELETE icon"),
|
|
26437
26456
|
SDATA(data_type_t.DTP_BOOLEAN, "editable", 0, false, "Edit state"),
|
|
26457
|
+
SDATA(data_type_t.DTP_INTEGER, "max_col_width", 0, 420, "Ceiling, in px, for a data column. The table lays out `fitDataFill`, which sizes a column to its DATA: one `description` holding a paragraph took the whole viewport and left every other column off screen. 0 removes the ceiling; a reader still widens any column by hand (columns are resizable)"),
|
|
26438
26458
|
SDATA(data_type_t.DTP_BOOLEAN, "with_checkbox", 0, true, "Auxiliary first column to select rows"),
|
|
26439
26459
|
SDATA(data_type_t.DTP_BOOLEAN, "with_radio", 0, false, "Auxiliary first column to select one row"),
|
|
26440
26460
|
SDATA(data_type_t.DTP_BOOLEAN, "with_selection_bar", 0, false, "Show the shared selection bar (\"N selected\" + a way out) above the table while in edition mode. OFF by default: the bar takes its words from the HOST's i18n, and a host that has not defined \"{{n}} selected\" and \"clear selection\" would render the keys"),
|
|
@@ -27327,6 +27347,7 @@ function create_tabulator(gobj) {
|
|
|
27327
27347
|
}
|
|
27328
27348
|
if (colDef.headerFilter && colDef.headerFilter !== "tickCross") colDef.minWidth = 150;
|
|
27329
27349
|
}
|
|
27350
|
+
let max_col_width = gobj_read_integer_attr(gobj, "max_col_width");
|
|
27330
27351
|
for (let i = 0; i < desc.cols.length; i++) {
|
|
27331
27352
|
let col = desc.cols[i];
|
|
27332
27353
|
if (!col.id || col.id[0] === "_") continue;
|
|
@@ -27429,6 +27450,7 @@ function create_tabulator(gobj) {
|
|
|
27429
27450
|
hozAlign,
|
|
27430
27451
|
formatter: colFormatter
|
|
27431
27452
|
};
|
|
27453
|
+
if (max_col_width > 0) colDef.maxWidth = max_col_width;
|
|
27432
27454
|
if (with_header_filters) apply_header_filter(colDef, field_desc);
|
|
27433
27455
|
if (with_inline_edit) inline_editor_for(colDef, col, field_desc);
|
|
27434
27456
|
if (vertAlign) colDef.vertAlign = vertAlign;
|
package/package.json
CHANGED
|
@@ -210,6 +210,7 @@ SDATA(data_type_t.DTP_BOOLEAN, "with_in_row_edit_icons", 0, true, "Add a
|
|
|
210
210
|
SDATA(data_type_t.DTP_BOOLEAN, "editable", 0, false, "Edit state"),
|
|
211
211
|
|
|
212
212
|
/*---------------- Selection Mode ----------------*/
|
|
213
|
+
SDATA(data_type_t.DTP_INTEGER, "max_col_width", 0, 420, "Ceiling, in px, for a data column. The table lays out `fitDataFill`, which sizes a column to its DATA: one `description` holding a paragraph took the whole viewport and left every other column off screen. 0 removes the ceiling; a reader still widens any column by hand (columns are resizable)"),
|
|
213
214
|
SDATA(data_type_t.DTP_BOOLEAN, "with_checkbox", 0, true, "Auxiliary first column to select rows"),
|
|
214
215
|
SDATA(data_type_t.DTP_BOOLEAN, "with_radio", 0, false, "Auxiliary first column to select one row"),
|
|
215
216
|
SDATA(data_type_t.DTP_BOOLEAN, "with_selection_bar", 0, false, "Show the shared selection bar (\"N selected\" + a way out) above the table while in edition mode. OFF by default: the bar takes its words from the HOST's i18n, and a host that has not defined \"{{n}} selected\" and \"clear selection\" would render the keys"),
|
|
@@ -1341,6 +1342,8 @@ function create_tabulator(gobj)
|
|
|
1341
1342
|
}
|
|
1342
1343
|
}
|
|
1343
1344
|
|
|
1345
|
+
let max_col_width = gobj_read_integer_attr(gobj, "max_col_width");
|
|
1346
|
+
|
|
1344
1347
|
for (let i = 0; i < desc.cols.length; i++) {
|
|
1345
1348
|
let col = desc.cols[i];
|
|
1346
1349
|
if(!col.id || col.id[0]==='_') {
|
|
@@ -1472,6 +1475,16 @@ function create_tabulator(gobj)
|
|
|
1472
1475
|
hozAlign: hozAlign,
|
|
1473
1476
|
formatter: colFormatter,
|
|
1474
1477
|
};
|
|
1478
|
+
/* A ceiling, because `fitDataFill` sizes a column to its DATA and
|
|
1479
|
+
* a text column has no natural width: one `description` holding a
|
|
1480
|
+
* paragraph -- the agent's `configurations` is full of them --
|
|
1481
|
+
* came out wider than the viewport and pushed every other column,
|
|
1482
|
+
* the id included, off the screen. The cell keeps its whole text;
|
|
1483
|
+
* what the ceiling costs is having to widen the column, or open
|
|
1484
|
+
* the record, to read the end of it. */
|
|
1485
|
+
if(max_col_width > 0) {
|
|
1486
|
+
colDef.maxWidth = max_col_width;
|
|
1487
|
+
}
|
|
1475
1488
|
if(with_header_filters) {
|
|
1476
1489
|
apply_header_filter(colDef, field_desc);
|
|
1477
1490
|
}
|
|
@@ -1699,11 +1699,11 @@ function open_json_viewer(gobj, opts)
|
|
|
1699
1699
|
let priv = gobj.priv;
|
|
1700
1700
|
let schema = !!(opts && opts.schema);
|
|
1701
1701
|
|
|
1702
|
-
/* Already open: just re-fetch
|
|
1703
|
-
* the `descs` this view already holds -- so a second click on a
|
|
1704
|
-
* viewer that is already showing it does nothing. */
|
|
1702
|
+
/* Already open: just re-fetch, whichever document it is showing. */
|
|
1705
1703
|
if(priv.json_win || priv.json_modal) {
|
|
1706
|
-
if(
|
|
1704
|
+
if(schema) {
|
|
1705
|
+
request_schema_file(gobj);
|
|
1706
|
+
} else {
|
|
1707
1707
|
request_print_tranger(gobj, "");
|
|
1708
1708
|
}
|
|
1709
1709
|
return;
|
|
@@ -1718,29 +1718,15 @@ function open_json_viewer(gobj, opts)
|
|
|
1718
1718
|
let mobile = is_mobile();
|
|
1719
1719
|
let shell = yui_shell_of(gobj);
|
|
1720
1720
|
|
|
1721
|
-
/* No `title`: the host titles it — the window's title bar on
|
|
1722
|
-
* desktop, the dialog's header on mobile. The viewer's own title
|
|
1723
|
-
* would land INSIDE that host, doubling it. */
|
|
1724
|
-
let jv_kw = {
|
|
1725
|
-
subscriber: gobj /* publishes EV_EXPAND_PATH to us */
|
|
1726
|
-
};
|
|
1727
|
-
if(schema) {
|
|
1728
|
-
/* The schema is here already and it is small: it goes in whole,
|
|
1729
|
-
* and no drill-down happens because nothing is collapsed.
|
|
1730
|
-
*
|
|
1731
|
-
* Written as `json_data: schema? descs : null` it cost two
|
|
1732
|
-
* errors on EVERY raw-json open: a `DTP_JSON` attr takes a dict
|
|
1733
|
-
* or a list, and gobj-js REFUSES a null with "attr must be a
|
|
1734
|
-
* json dict/list" -- and then json2data() fails and the create
|
|
1735
|
-
* carries on with the attr unset. An attr you have nothing to
|
|
1736
|
-
* say about is one you do not mention. */
|
|
1737
|
-
jv_kw.json_data = gobj_read_attr(gobj, "descs");
|
|
1738
|
-
}
|
|
1739
|
-
|
|
1740
1721
|
let jv = gobj_create_service(
|
|
1741
1722
|
`treedb-topics-json-${clean_name(gobj_name(gobj))}`,
|
|
1742
1723
|
"C_YUI_JSON",
|
|
1743
|
-
|
|
1724
|
+
{
|
|
1725
|
+
/* No `title`: the host titles it — the window's title bar on
|
|
1726
|
+
* desktop, the dialog's header on mobile. The viewer's own
|
|
1727
|
+
* title would land INSIDE that host, doubling it. */
|
|
1728
|
+
subscriber: gobj /* publishes EV_EXPAND_PATH to us */
|
|
1729
|
+
},
|
|
1744
1730
|
gobj
|
|
1745
1731
|
);
|
|
1746
1732
|
if(!jv) {
|
|
@@ -1812,7 +1798,9 @@ function open_json_viewer(gobj, opts)
|
|
|
1812
1798
|
gobj_start(priv.json_win);
|
|
1813
1799
|
}
|
|
1814
1800
|
|
|
1815
|
-
if(
|
|
1801
|
+
if(schema) {
|
|
1802
|
+
request_schema_file(gobj);
|
|
1803
|
+
} else {
|
|
1816
1804
|
request_print_tranger(gobj, "");
|
|
1817
1805
|
}
|
|
1818
1806
|
}
|
|
@@ -1872,6 +1860,23 @@ function close_json_viewer(gobj)
|
|
|
1872
1860
|
* collapsed at 100 so a huge tranger stays a small payload of
|
|
1873
1861
|
* `__collapsed__` stubs the viewer expands on demand.
|
|
1874
1862
|
************************************************************/
|
|
1863
|
+
function request_schema_file(gobj)
|
|
1864
|
+
{
|
|
1865
|
+
let priv = gobj.priv;
|
|
1866
|
+
let remote = gobj_read_pointer_attr(gobj, "gobj_remote_yuno");
|
|
1867
|
+
if(!remote) {
|
|
1868
|
+
log_error(`${gobj_short_name(gobj)}: No gobj_remote_yuno defined`);
|
|
1869
|
+
return;
|
|
1870
|
+
}
|
|
1871
|
+
let ret = gobj_command(remote, "schema-file", {service: priv.treedb_name}, gobj);
|
|
1872
|
+
if(ret) {
|
|
1873
|
+
log_error(ret);
|
|
1874
|
+
}
|
|
1875
|
+
}
|
|
1876
|
+
|
|
1877
|
+
/************************************************************
|
|
1878
|
+
* The whole tranger, for the raw-json viewer.
|
|
1879
|
+
************************************************************/
|
|
1875
1880
|
function request_print_tranger(gobj, path)
|
|
1876
1881
|
{
|
|
1877
1882
|
let priv = gobj.priv;
|
|
@@ -1985,6 +1990,26 @@ function ac_mt_command_answer(gobj, event, kw, src)
|
|
|
1985
1990
|
return 0;
|
|
1986
1991
|
}
|
|
1987
1992
|
|
|
1993
|
+
/*
|
|
1994
|
+
* The schema as it is STORED -- the `<treedb>.treedb_schema.json` of
|
|
1995
|
+
* the node -- which is NOT what `descs` answers: the file keys its
|
|
1996
|
+
* cols by name and carries the schema and topic versions. An older
|
|
1997
|
+
* backend has no such command and says so; the viewer shows that.
|
|
1998
|
+
*/
|
|
1999
|
+
if(command === "schema-file") {
|
|
2000
|
+
let jv = gobj.priv.json_gobj;
|
|
2001
|
+
if(!jv || !is_gobj(jv) || gobj_is_destroying(jv)) {
|
|
2002
|
+
return 0; /* viewer closed before its answer landed: benign */
|
|
2003
|
+
}
|
|
2004
|
+
if(result < 0) {
|
|
2005
|
+
yui_shell_show_error(yui_shell_of(gobj),
|
|
2006
|
+
comment || "schema-file failed", {t: t});
|
|
2007
|
+
return 0;
|
|
2008
|
+
}
|
|
2009
|
+
gobj_send_event(jv, "EV_SET_JSON", {json: data}, gobj);
|
|
2010
|
+
return 0;
|
|
2011
|
+
}
|
|
2012
|
+
|
|
1988
2013
|
/*
|
|
1989
2014
|
* An asset, for a form's preview or a file popup. Before the generic
|
|
1990
2015
|
* error path too: an asset that cannot be served is SHOWN where it
|
|
@@ -2785,13 +2810,6 @@ function ac_open_json(gobj, event, kw, src)
|
|
|
2785
2810
|
********************************************/
|
|
2786
2811
|
function ac_open_schema_json(gobj, event, kw, src)
|
|
2787
2812
|
{
|
|
2788
|
-
if(!is_object(gobj_read_attr(gobj, "descs"))) {
|
|
2789
|
-
/* Not reachable by hand -- the button only exists while the
|
|
2790
|
-
* schema is on screen, which needs the descs -- so this is a
|
|
2791
|
-
* broken caller, not something to tell the reader about. */
|
|
2792
|
-
log_error(`${gobj_short_name(gobj)}: schema json with no descs`);
|
|
2793
|
-
return -1;
|
|
2794
|
-
}
|
|
2795
2813
|
open_json_viewer(gobj, {schema: true});
|
|
2796
2814
|
return 0;
|
|
2797
2815
|
}
|