@carthooks/arcubase-cli 0.1.22 → 0.1.24
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/bundle/arcubase-admin.mjs +158 -2
- package/bundle/arcubase.mjs +158 -2
- package/dist/generated/command_registry.generated.d.ts +15 -0
- package/dist/generated/command_registry.generated.d.ts.map +1 -1
- package/dist/generated/command_registry.generated.js +21 -0
- package/dist/generated/help_examples.generated.d.ts +53 -0
- package/dist/generated/help_examples.generated.d.ts.map +1 -1
- package/dist/generated/help_examples.generated.js +89 -0
- package/dist/runtime/execute.d.ts.map +1 -1
- package/dist/runtime/execute.js +46 -0
- package/package.json +3 -3
- package/sdk-dist/docs/runtime-reference/dashboard.md +16 -1
- package/sdk-dist/docs/runtime-reference/help-examples/admin/dashboard/update-options.json +23 -0
- package/sdk-dist/docs/runtime-reference/help-examples/admin/widget/preview-data.json +24 -0
- package/sdk-dist/docs/runtime-reference/help-examples/admin/widget/update-ingress-options.json +21 -0
- package/sdk-dist/docs/runtime-reference/widgets.md +24 -0
- package/sdk-dist/generated/command_registry.generated.ts +21 -0
- package/sdk-dist/generated/help_examples.generated.ts +89 -0
- package/src/generated/command_registry.generated.ts +21 -0
- package/src/generated/help_examples.generated.ts +89 -0
- package/src/runtime/execute.ts +46 -0
- package/src/tests/command_registry.test.ts +2 -1
- package/src/tests/execute_validation.test.ts +97 -0
- package/src/tests/help.test.ts +27 -0
|
@@ -1082,6 +1082,27 @@ var userCommands = [
|
|
|
1082
1082
|
],
|
|
1083
1083
|
"responseType": "GlobalActionEntryRespVO"
|
|
1084
1084
|
},
|
|
1085
|
+
{
|
|
1086
|
+
"scope": "user",
|
|
1087
|
+
"module": "app",
|
|
1088
|
+
"functionName": "getAppDetail",
|
|
1089
|
+
"commandPath": [
|
|
1090
|
+
"app",
|
|
1091
|
+
"get"
|
|
1092
|
+
],
|
|
1093
|
+
"method": "GET",
|
|
1094
|
+
"endpoint": "/api/apps/:id",
|
|
1095
|
+
"pathParams": [
|
|
1096
|
+
{
|
|
1097
|
+
"param": "id",
|
|
1098
|
+
"flag": "app-id"
|
|
1099
|
+
}
|
|
1100
|
+
],
|
|
1101
|
+
"controller": "UserAction.AppDetail",
|
|
1102
|
+
"requestType": null,
|
|
1103
|
+
"queryParams": [],
|
|
1104
|
+
"responseType": "AppDetailRespVO"
|
|
1105
|
+
},
|
|
1085
1106
|
{
|
|
1086
1107
|
"scope": "user",
|
|
1087
1108
|
"module": "dashboard",
|
|
@@ -18339,6 +18360,33 @@ var helpExamplesIndex = {
|
|
|
18339
18360
|
}
|
|
18340
18361
|
]
|
|
18341
18362
|
},
|
|
18363
|
+
"admin.dashboard.update-options": {
|
|
18364
|
+
"command": [
|
|
18365
|
+
"dashboard",
|
|
18366
|
+
"update-options"
|
|
18367
|
+
],
|
|
18368
|
+
"examples": [
|
|
18369
|
+
{
|
|
18370
|
+
"title": "make a dashboard visible to one Arcubase user",
|
|
18371
|
+
"body": {
|
|
18372
|
+
"changed": [
|
|
18373
|
+
"users"
|
|
18374
|
+
],
|
|
18375
|
+
"users": [
|
|
18376
|
+
{
|
|
18377
|
+
"type": "user",
|
|
18378
|
+
"id": 2188889901
|
|
18379
|
+
}
|
|
18380
|
+
]
|
|
18381
|
+
},
|
|
18382
|
+
"notes": [
|
|
18383
|
+
"dashboard visibility is controlled by DashboardUpdateOptionsReqVO.users",
|
|
18384
|
+
"use the currentSpeaker.arcubaseUserId value for the current human speaker",
|
|
18385
|
+
"after updating, verify from the user side with arcubase app get and require dashboards to include the dashboard"
|
|
18386
|
+
]
|
|
18387
|
+
}
|
|
18388
|
+
]
|
|
18389
|
+
},
|
|
18342
18390
|
"admin.widget.create": {
|
|
18343
18391
|
"command": [
|
|
18344
18392
|
"widget",
|
|
@@ -18434,6 +18482,68 @@ var helpExamplesIndex = {
|
|
|
18434
18482
|
"supported Aggregate values are sum, avg, max, min, count, and distinct_count",
|
|
18435
18483
|
"unsupported aggregate names fail local body validation before the request is sent"
|
|
18436
18484
|
]
|
|
18485
|
+
},
|
|
18486
|
+
{
|
|
18487
|
+
"title": "preview filtered distinct_count grouped by source",
|
|
18488
|
+
"body": {
|
|
18489
|
+
"dataSource": 2188891001,
|
|
18490
|
+
"dataSourceType": "entity",
|
|
18491
|
+
"dimensions": [
|
|
18492
|
+
{
|
|
18493
|
+
"IsField": true,
|
|
18494
|
+
"FieldID": 1004,
|
|
18495
|
+
"Name": "Source"
|
|
18496
|
+
}
|
|
18497
|
+
],
|
|
18498
|
+
"conditions": {
|
|
18499
|
+
"mode": "and",
|
|
18500
|
+
"conditions": [
|
|
18501
|
+
{
|
|
18502
|
+
"column": ":1006",
|
|
18503
|
+
"operator": "$eq",
|
|
18504
|
+
"value": "yes"
|
|
18505
|
+
}
|
|
18506
|
+
]
|
|
18507
|
+
},
|
|
18508
|
+
"measures": [
|
|
18509
|
+
{
|
|
18510
|
+
"FieldID": 1002,
|
|
18511
|
+
"Aggregate": "distinct_count",
|
|
18512
|
+
"Name": "Distinct Customers"
|
|
18513
|
+
}
|
|
18514
|
+
]
|
|
18515
|
+
},
|
|
18516
|
+
"notes": [
|
|
18517
|
+
"use conditions, not filters, for chart data filtering",
|
|
18518
|
+
"for saved charts put the same condition set under options.charts.conditions",
|
|
18519
|
+
"do not remove the condition and hand-calculate filtered statistics from row query results"
|
|
18520
|
+
]
|
|
18521
|
+
}
|
|
18522
|
+
]
|
|
18523
|
+
},
|
|
18524
|
+
"admin.widget.update-ingress-options": {
|
|
18525
|
+
"command": [
|
|
18526
|
+
"widget",
|
|
18527
|
+
"update-ingress-options"
|
|
18528
|
+
],
|
|
18529
|
+
"examples": [
|
|
18530
|
+
{
|
|
18531
|
+
"title": "adjust an ingress list widget display configuration",
|
|
18532
|
+
"body": {
|
|
18533
|
+
"options": {
|
|
18534
|
+
"cond_follow": true,
|
|
18535
|
+
"cond_follow_tab": true,
|
|
18536
|
+
"cond_follow_cols": [
|
|
18537
|
+
":1001",
|
|
18538
|
+
":1002"
|
|
18539
|
+
]
|
|
18540
|
+
}
|
|
18541
|
+
},
|
|
18542
|
+
"notes": [
|
|
18543
|
+
"use this only for widgets created with options.ingress_id",
|
|
18544
|
+
"do not use dashboard update-layout for ingress widgets",
|
|
18545
|
+
"verify with widget get after updating ingress options"
|
|
18546
|
+
]
|
|
18437
18547
|
}
|
|
18438
18548
|
]
|
|
18439
18549
|
},
|
|
@@ -19775,16 +19885,38 @@ function buildBodyGuidance(requestType) {
|
|
|
19775
19885
|
dataSource: 2188891001,
|
|
19776
19886
|
dataSourceType: "entity",
|
|
19777
19887
|
dimensions: [{ IsField: true, FieldID: 1004, Name: "Source" }],
|
|
19778
|
-
measures: [{ FieldID: 1005, Aggregate: "sum", Name: "Total Amount" }]
|
|
19888
|
+
measures: [{ FieldID: 1005, Aggregate: "sum", Name: "Total Amount" }],
|
|
19889
|
+
conditions: { mode: "and", conditions: [{ column: ":1006", operator: "$eq", value: "yes" }] }
|
|
19779
19890
|
},
|
|
19780
19891
|
commonMistakes: [
|
|
19781
19892
|
"widget preview-data body is the chart query itself",
|
|
19782
19893
|
"do not send a saved widget object with id, entity_id, or options",
|
|
19783
19894
|
"field dimensions with FieldID must set IsField:true",
|
|
19895
|
+
"use conditions, not filters, for chart data filtering",
|
|
19896
|
+
"do not retry without conditions and then hand-calculate filtered statistics",
|
|
19784
19897
|
"unsupported aggregates are invalid; use sum, avg, max, min, count, or distinct_count"
|
|
19785
19898
|
],
|
|
19786
19899
|
suggestions: [
|
|
19787
|
-
`retry with: arcubase-admin widget preview-data --app-id <app_id> --body-json '{"dataSource":<table_id>,"dataSourceType":"entity","dimensions":[{"IsField":true,"FieldID":<field_id>,"Name":"Source"}],"measures":[{"FieldID":<number_field_id>,"Aggregate":"sum","Name":"Total Amount"}]}'
|
|
19900
|
+
`retry with: arcubase-admin widget preview-data --app-id <app_id> --body-json '{"dataSource":<table_id>,"dataSourceType":"entity","dimensions":[{"IsField":true,"FieldID":<field_id>,"Name":"Source"}],"measures":[{"FieldID":<number_field_id>,"Aggregate":"sum","Name":"Total Amount"}]}'`,
|
|
19901
|
+
`conditional stats: arcubase-admin widget preview-data --app-id <app_id> --body-json '{"dataSource":<table_id>,"dataSourceType":"entity","dimensions":[{"IsField":true,"FieldID":<source_field_id>,"Name":"Source"}],"conditions":{"mode":"and","conditions":[{"column":":1006","operator":"$eq","value":"yes"}]},"measures":[{"FieldID":<customer_field_id>,"Aggregate":"distinct_count","Name":"Distinct Customers"}]}'`
|
|
19902
|
+
]
|
|
19903
|
+
};
|
|
19904
|
+
}
|
|
19905
|
+
if (requestType === "AppNewWidgetsReqVO") {
|
|
19906
|
+
return {
|
|
19907
|
+
shapeHint: {
|
|
19908
|
+
type: "list",
|
|
19909
|
+
options: { ingress_id: 2188893001 }
|
|
19910
|
+
},
|
|
19911
|
+
commonMistakes: [
|
|
19912
|
+
"dashboard widgets use options.dashboard_id",
|
|
19913
|
+
"ingress widgets use options.ingress_id",
|
|
19914
|
+
"do not put entity_id at body top level or under options when creating a widget",
|
|
19915
|
+
"after creating an ingress widget, use widget update-ingress-options to adjust display configuration"
|
|
19916
|
+
],
|
|
19917
|
+
suggestions: [
|
|
19918
|
+
`dashboard chart: arcubase-admin widget create --app-id <app_id> --body-json '{"type":"chart","options":{"dashboard_id":<dashboard_id>}}'`,
|
|
19919
|
+
`ingress list: arcubase-admin widget create --app-id <app_id> --body-json '{"type":"list","options":{"ingress_id":<ingress_id>}}'`
|
|
19788
19920
|
]
|
|
19789
19921
|
};
|
|
19790
19922
|
}
|
|
@@ -19797,14 +19929,38 @@ function buildBodyGuidance(requestType) {
|
|
|
19797
19929
|
entity_id: 2188891001,
|
|
19798
19930
|
dimensions: [{ IsField: true, FieldID: 1004, Name: "Source" }],
|
|
19799
19931
|
measures: [{ FieldID: 1005, Aggregate: "sum", Name: "Total Amount" }],
|
|
19932
|
+
conditions: { mode: "and", conditions: [{ column: ":1006", operator: "$eq", value: "yes" }] },
|
|
19800
19933
|
type: "bar"
|
|
19801
19934
|
}
|
|
19802
19935
|
}
|
|
19803
19936
|
},
|
|
19804
19937
|
commonMistakes: [
|
|
19805
19938
|
"dashboard chart config belongs in body.options.charts",
|
|
19939
|
+
"ingress/list display settings use widget update-ingress-options, not widget update",
|
|
19940
|
+
"do not put ingress_id, list, default_cols, page_size, or entry display settings in widget update",
|
|
19806
19941
|
"field dimensions with FieldID must set IsField:true",
|
|
19942
|
+
"use options.charts.conditions, not filters, for chart data filtering",
|
|
19943
|
+
"do not retry without conditions and then hand-calculate filtered statistics",
|
|
19807
19944
|
"verify persistence with widget get or widget list after update"
|
|
19945
|
+
],
|
|
19946
|
+
suggestions: [
|
|
19947
|
+
`dashboard chart: arcubase-admin widget update --app-id <app_id> --widget-id <widget_id> --body-json '{"entity_id":<table_id>,"options":{"charts":{"entity_id":<table_id>,"dimensions":[{"IsField":true,"FieldID":<field_id>,"Name":"Source"}],"measures":[{"FieldID":<number_field_id>,"Aggregate":"sum","Name":"Total Amount"}],"type":"bar"}}}'`,
|
|
19948
|
+
`ingress list display: arcubase-admin widget update-ingress-options --app-id <app_id> --widget-id <widget_id> --body-json '{"options":{"cond_follow":true,"cond_follow_tab":true,"cond_follow_cols":[":1001",":1002"]}}'`
|
|
19949
|
+
]
|
|
19950
|
+
};
|
|
19951
|
+
}
|
|
19952
|
+
if (requestType === "AppUpdateWidgetsIngressOptionsReqVO") {
|
|
19953
|
+
return {
|
|
19954
|
+
shapeHint: {
|
|
19955
|
+
options: { cond_follow: true, cond_follow_tab: true, cond_follow_cols: [":1001", ":1002"] }
|
|
19956
|
+
},
|
|
19957
|
+
commonMistakes: [
|
|
19958
|
+
"widget update-ingress-options is for ingress widgets, not dashboard chart widgets",
|
|
19959
|
+
"put display settings under body.options",
|
|
19960
|
+
"verify the ingress widget with widget get after update"
|
|
19961
|
+
],
|
|
19962
|
+
suggestions: [
|
|
19963
|
+
`retry with: arcubase-admin widget update-ingress-options --app-id <app_id> --widget-id <widget_id> --body-json '{"options":{"cond_follow":true,"cond_follow_tab":true,"cond_follow_cols":[":1001",":1002"]}}'`
|
|
19808
19964
|
]
|
|
19809
19965
|
};
|
|
19810
19966
|
}
|
package/bundle/arcubase.mjs
CHANGED
|
@@ -1082,6 +1082,27 @@ var userCommands = [
|
|
|
1082
1082
|
],
|
|
1083
1083
|
"responseType": "GlobalActionEntryRespVO"
|
|
1084
1084
|
},
|
|
1085
|
+
{
|
|
1086
|
+
"scope": "user",
|
|
1087
|
+
"module": "app",
|
|
1088
|
+
"functionName": "getAppDetail",
|
|
1089
|
+
"commandPath": [
|
|
1090
|
+
"app",
|
|
1091
|
+
"get"
|
|
1092
|
+
],
|
|
1093
|
+
"method": "GET",
|
|
1094
|
+
"endpoint": "/api/apps/:id",
|
|
1095
|
+
"pathParams": [
|
|
1096
|
+
{
|
|
1097
|
+
"param": "id",
|
|
1098
|
+
"flag": "app-id"
|
|
1099
|
+
}
|
|
1100
|
+
],
|
|
1101
|
+
"controller": "UserAction.AppDetail",
|
|
1102
|
+
"requestType": null,
|
|
1103
|
+
"queryParams": [],
|
|
1104
|
+
"responseType": "AppDetailRespVO"
|
|
1105
|
+
},
|
|
1085
1106
|
{
|
|
1086
1107
|
"scope": "user",
|
|
1087
1108
|
"module": "dashboard",
|
|
@@ -18339,6 +18360,33 @@ var helpExamplesIndex = {
|
|
|
18339
18360
|
}
|
|
18340
18361
|
]
|
|
18341
18362
|
},
|
|
18363
|
+
"admin.dashboard.update-options": {
|
|
18364
|
+
"command": [
|
|
18365
|
+
"dashboard",
|
|
18366
|
+
"update-options"
|
|
18367
|
+
],
|
|
18368
|
+
"examples": [
|
|
18369
|
+
{
|
|
18370
|
+
"title": "make a dashboard visible to one Arcubase user",
|
|
18371
|
+
"body": {
|
|
18372
|
+
"changed": [
|
|
18373
|
+
"users"
|
|
18374
|
+
],
|
|
18375
|
+
"users": [
|
|
18376
|
+
{
|
|
18377
|
+
"type": "user",
|
|
18378
|
+
"id": 2188889901
|
|
18379
|
+
}
|
|
18380
|
+
]
|
|
18381
|
+
},
|
|
18382
|
+
"notes": [
|
|
18383
|
+
"dashboard visibility is controlled by DashboardUpdateOptionsReqVO.users",
|
|
18384
|
+
"use the currentSpeaker.arcubaseUserId value for the current human speaker",
|
|
18385
|
+
"after updating, verify from the user side with arcubase app get and require dashboards to include the dashboard"
|
|
18386
|
+
]
|
|
18387
|
+
}
|
|
18388
|
+
]
|
|
18389
|
+
},
|
|
18342
18390
|
"admin.widget.create": {
|
|
18343
18391
|
"command": [
|
|
18344
18392
|
"widget",
|
|
@@ -18434,6 +18482,68 @@ var helpExamplesIndex = {
|
|
|
18434
18482
|
"supported Aggregate values are sum, avg, max, min, count, and distinct_count",
|
|
18435
18483
|
"unsupported aggregate names fail local body validation before the request is sent"
|
|
18436
18484
|
]
|
|
18485
|
+
},
|
|
18486
|
+
{
|
|
18487
|
+
"title": "preview filtered distinct_count grouped by source",
|
|
18488
|
+
"body": {
|
|
18489
|
+
"dataSource": 2188891001,
|
|
18490
|
+
"dataSourceType": "entity",
|
|
18491
|
+
"dimensions": [
|
|
18492
|
+
{
|
|
18493
|
+
"IsField": true,
|
|
18494
|
+
"FieldID": 1004,
|
|
18495
|
+
"Name": "Source"
|
|
18496
|
+
}
|
|
18497
|
+
],
|
|
18498
|
+
"conditions": {
|
|
18499
|
+
"mode": "and",
|
|
18500
|
+
"conditions": [
|
|
18501
|
+
{
|
|
18502
|
+
"column": ":1006",
|
|
18503
|
+
"operator": "$eq",
|
|
18504
|
+
"value": "yes"
|
|
18505
|
+
}
|
|
18506
|
+
]
|
|
18507
|
+
},
|
|
18508
|
+
"measures": [
|
|
18509
|
+
{
|
|
18510
|
+
"FieldID": 1002,
|
|
18511
|
+
"Aggregate": "distinct_count",
|
|
18512
|
+
"Name": "Distinct Customers"
|
|
18513
|
+
}
|
|
18514
|
+
]
|
|
18515
|
+
},
|
|
18516
|
+
"notes": [
|
|
18517
|
+
"use conditions, not filters, for chart data filtering",
|
|
18518
|
+
"for saved charts put the same condition set under options.charts.conditions",
|
|
18519
|
+
"do not remove the condition and hand-calculate filtered statistics from row query results"
|
|
18520
|
+
]
|
|
18521
|
+
}
|
|
18522
|
+
]
|
|
18523
|
+
},
|
|
18524
|
+
"admin.widget.update-ingress-options": {
|
|
18525
|
+
"command": [
|
|
18526
|
+
"widget",
|
|
18527
|
+
"update-ingress-options"
|
|
18528
|
+
],
|
|
18529
|
+
"examples": [
|
|
18530
|
+
{
|
|
18531
|
+
"title": "adjust an ingress list widget display configuration",
|
|
18532
|
+
"body": {
|
|
18533
|
+
"options": {
|
|
18534
|
+
"cond_follow": true,
|
|
18535
|
+
"cond_follow_tab": true,
|
|
18536
|
+
"cond_follow_cols": [
|
|
18537
|
+
":1001",
|
|
18538
|
+
":1002"
|
|
18539
|
+
]
|
|
18540
|
+
}
|
|
18541
|
+
},
|
|
18542
|
+
"notes": [
|
|
18543
|
+
"use this only for widgets created with options.ingress_id",
|
|
18544
|
+
"do not use dashboard update-layout for ingress widgets",
|
|
18545
|
+
"verify with widget get after updating ingress options"
|
|
18546
|
+
]
|
|
18437
18547
|
}
|
|
18438
18548
|
]
|
|
18439
18549
|
},
|
|
@@ -19775,16 +19885,38 @@ function buildBodyGuidance(requestType) {
|
|
|
19775
19885
|
dataSource: 2188891001,
|
|
19776
19886
|
dataSourceType: "entity",
|
|
19777
19887
|
dimensions: [{ IsField: true, FieldID: 1004, Name: "Source" }],
|
|
19778
|
-
measures: [{ FieldID: 1005, Aggregate: "sum", Name: "Total Amount" }]
|
|
19888
|
+
measures: [{ FieldID: 1005, Aggregate: "sum", Name: "Total Amount" }],
|
|
19889
|
+
conditions: { mode: "and", conditions: [{ column: ":1006", operator: "$eq", value: "yes" }] }
|
|
19779
19890
|
},
|
|
19780
19891
|
commonMistakes: [
|
|
19781
19892
|
"widget preview-data body is the chart query itself",
|
|
19782
19893
|
"do not send a saved widget object with id, entity_id, or options",
|
|
19783
19894
|
"field dimensions with FieldID must set IsField:true",
|
|
19895
|
+
"use conditions, not filters, for chart data filtering",
|
|
19896
|
+
"do not retry without conditions and then hand-calculate filtered statistics",
|
|
19784
19897
|
"unsupported aggregates are invalid; use sum, avg, max, min, count, or distinct_count"
|
|
19785
19898
|
],
|
|
19786
19899
|
suggestions: [
|
|
19787
|
-
`retry with: arcubase-admin widget preview-data --app-id <app_id> --body-json '{"dataSource":<table_id>,"dataSourceType":"entity","dimensions":[{"IsField":true,"FieldID":<field_id>,"Name":"Source"}],"measures":[{"FieldID":<number_field_id>,"Aggregate":"sum","Name":"Total Amount"}]}'
|
|
19900
|
+
`retry with: arcubase-admin widget preview-data --app-id <app_id> --body-json '{"dataSource":<table_id>,"dataSourceType":"entity","dimensions":[{"IsField":true,"FieldID":<field_id>,"Name":"Source"}],"measures":[{"FieldID":<number_field_id>,"Aggregate":"sum","Name":"Total Amount"}]}'`,
|
|
19901
|
+
`conditional stats: arcubase-admin widget preview-data --app-id <app_id> --body-json '{"dataSource":<table_id>,"dataSourceType":"entity","dimensions":[{"IsField":true,"FieldID":<source_field_id>,"Name":"Source"}],"conditions":{"mode":"and","conditions":[{"column":":1006","operator":"$eq","value":"yes"}]},"measures":[{"FieldID":<customer_field_id>,"Aggregate":"distinct_count","Name":"Distinct Customers"}]}'`
|
|
19902
|
+
]
|
|
19903
|
+
};
|
|
19904
|
+
}
|
|
19905
|
+
if (requestType === "AppNewWidgetsReqVO") {
|
|
19906
|
+
return {
|
|
19907
|
+
shapeHint: {
|
|
19908
|
+
type: "list",
|
|
19909
|
+
options: { ingress_id: 2188893001 }
|
|
19910
|
+
},
|
|
19911
|
+
commonMistakes: [
|
|
19912
|
+
"dashboard widgets use options.dashboard_id",
|
|
19913
|
+
"ingress widgets use options.ingress_id",
|
|
19914
|
+
"do not put entity_id at body top level or under options when creating a widget",
|
|
19915
|
+
"after creating an ingress widget, use widget update-ingress-options to adjust display configuration"
|
|
19916
|
+
],
|
|
19917
|
+
suggestions: [
|
|
19918
|
+
`dashboard chart: arcubase-admin widget create --app-id <app_id> --body-json '{"type":"chart","options":{"dashboard_id":<dashboard_id>}}'`,
|
|
19919
|
+
`ingress list: arcubase-admin widget create --app-id <app_id> --body-json '{"type":"list","options":{"ingress_id":<ingress_id>}}'`
|
|
19788
19920
|
]
|
|
19789
19921
|
};
|
|
19790
19922
|
}
|
|
@@ -19797,14 +19929,38 @@ function buildBodyGuidance(requestType) {
|
|
|
19797
19929
|
entity_id: 2188891001,
|
|
19798
19930
|
dimensions: [{ IsField: true, FieldID: 1004, Name: "Source" }],
|
|
19799
19931
|
measures: [{ FieldID: 1005, Aggregate: "sum", Name: "Total Amount" }],
|
|
19932
|
+
conditions: { mode: "and", conditions: [{ column: ":1006", operator: "$eq", value: "yes" }] },
|
|
19800
19933
|
type: "bar"
|
|
19801
19934
|
}
|
|
19802
19935
|
}
|
|
19803
19936
|
},
|
|
19804
19937
|
commonMistakes: [
|
|
19805
19938
|
"dashboard chart config belongs in body.options.charts",
|
|
19939
|
+
"ingress/list display settings use widget update-ingress-options, not widget update",
|
|
19940
|
+
"do not put ingress_id, list, default_cols, page_size, or entry display settings in widget update",
|
|
19806
19941
|
"field dimensions with FieldID must set IsField:true",
|
|
19942
|
+
"use options.charts.conditions, not filters, for chart data filtering",
|
|
19943
|
+
"do not retry without conditions and then hand-calculate filtered statistics",
|
|
19807
19944
|
"verify persistence with widget get or widget list after update"
|
|
19945
|
+
],
|
|
19946
|
+
suggestions: [
|
|
19947
|
+
`dashboard chart: arcubase-admin widget update --app-id <app_id> --widget-id <widget_id> --body-json '{"entity_id":<table_id>,"options":{"charts":{"entity_id":<table_id>,"dimensions":[{"IsField":true,"FieldID":<field_id>,"Name":"Source"}],"measures":[{"FieldID":<number_field_id>,"Aggregate":"sum","Name":"Total Amount"}],"type":"bar"}}}'`,
|
|
19948
|
+
`ingress list display: arcubase-admin widget update-ingress-options --app-id <app_id> --widget-id <widget_id> --body-json '{"options":{"cond_follow":true,"cond_follow_tab":true,"cond_follow_cols":[":1001",":1002"]}}'`
|
|
19949
|
+
]
|
|
19950
|
+
};
|
|
19951
|
+
}
|
|
19952
|
+
if (requestType === "AppUpdateWidgetsIngressOptionsReqVO") {
|
|
19953
|
+
return {
|
|
19954
|
+
shapeHint: {
|
|
19955
|
+
options: { cond_follow: true, cond_follow_tab: true, cond_follow_cols: [":1001", ":1002"] }
|
|
19956
|
+
},
|
|
19957
|
+
commonMistakes: [
|
|
19958
|
+
"widget update-ingress-options is for ingress widgets, not dashboard chart widgets",
|
|
19959
|
+
"put display settings under body.options",
|
|
19960
|
+
"verify the ingress widget with widget get after update"
|
|
19961
|
+
],
|
|
19962
|
+
suggestions: [
|
|
19963
|
+
`retry with: arcubase-admin widget update-ingress-options --app-id <app_id> --widget-id <widget_id> --body-json '{"options":{"cond_follow":true,"cond_follow_tab":true,"cond_follow_cols":[":1001",":1002"]}}'`
|
|
19808
19964
|
]
|
|
19809
19965
|
};
|
|
19810
19966
|
}
|
|
@@ -699,6 +699,21 @@ export declare const userCommands: readonly [{
|
|
|
699
699
|
readonly fixedValue: "true";
|
|
700
700
|
}];
|
|
701
701
|
readonly responseType: "GlobalActionEntryRespVO";
|
|
702
|
+
}, {
|
|
703
|
+
readonly scope: "user";
|
|
704
|
+
readonly module: "app";
|
|
705
|
+
readonly functionName: "getAppDetail";
|
|
706
|
+
readonly commandPath: readonly ["app", "get"];
|
|
707
|
+
readonly method: "GET";
|
|
708
|
+
readonly endpoint: "/api/apps/:id";
|
|
709
|
+
readonly pathParams: readonly [{
|
|
710
|
+
readonly param: "id";
|
|
711
|
+
readonly flag: "app-id";
|
|
712
|
+
}];
|
|
713
|
+
readonly controller: "UserAction.AppDetail";
|
|
714
|
+
readonly requestType: null;
|
|
715
|
+
readonly queryParams: readonly [];
|
|
716
|
+
readonly responseType: "AppDetailRespVO";
|
|
702
717
|
}, {
|
|
703
718
|
readonly scope: "user";
|
|
704
719
|
readonly module: "dashboard";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command_registry.generated.d.ts","sourceRoot":"","sources":["../../src/generated/command_registry.generated.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3E,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,EAAE,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC7G,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAi5BhB,CAAA;AAEV,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"command_registry.generated.d.ts","sourceRoot":"","sources":["../../src/generated/command_registry.generated.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3E,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,EAAE,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC7G,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAi5BhB,CAAA;AAEV,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA20Bf,CAAA"}
|
|
@@ -937,6 +937,27 @@ export const userCommands = [
|
|
|
937
937
|
],
|
|
938
938
|
"responseType": "GlobalActionEntryRespVO"
|
|
939
939
|
},
|
|
940
|
+
{
|
|
941
|
+
"scope": "user",
|
|
942
|
+
"module": "app",
|
|
943
|
+
"functionName": "getAppDetail",
|
|
944
|
+
"commandPath": [
|
|
945
|
+
"app",
|
|
946
|
+
"get"
|
|
947
|
+
],
|
|
948
|
+
"method": "GET",
|
|
949
|
+
"endpoint": "/api/apps/:id",
|
|
950
|
+
"pathParams": [
|
|
951
|
+
{
|
|
952
|
+
"param": "id",
|
|
953
|
+
"flag": "app-id"
|
|
954
|
+
}
|
|
955
|
+
],
|
|
956
|
+
"controller": "UserAction.AppDetail",
|
|
957
|
+
"requestType": null,
|
|
958
|
+
"queryParams": [],
|
|
959
|
+
"responseType": "AppDetailRespVO"
|
|
960
|
+
},
|
|
940
961
|
{
|
|
941
962
|
"scope": "user",
|
|
942
963
|
"module": "dashboard",
|
|
@@ -262,6 +262,20 @@ export declare const helpExamplesIndex: {
|
|
|
262
262
|
readonly notes: readonly ["the request body is a top-level array", "do not wrap the array as {\"layout\":[...]}"];
|
|
263
263
|
}];
|
|
264
264
|
};
|
|
265
|
+
readonly "admin.dashboard.update-options": {
|
|
266
|
+
readonly command: readonly ["dashboard", "update-options"];
|
|
267
|
+
readonly examples: readonly [{
|
|
268
|
+
readonly title: "make a dashboard visible to one Arcubase user";
|
|
269
|
+
readonly body: {
|
|
270
|
+
readonly changed: readonly ["users"];
|
|
271
|
+
readonly users: readonly [{
|
|
272
|
+
readonly type: "user";
|
|
273
|
+
readonly id: 2188889901;
|
|
274
|
+
}];
|
|
275
|
+
};
|
|
276
|
+
readonly notes: readonly ["dashboard visibility is controlled by DashboardUpdateOptionsReqVO.users", "use the currentSpeaker.arcubaseUserId value for the current human speaker", "after updating, verify from the user side with arcubase app get and require dashboards to include the dashboard"];
|
|
277
|
+
}];
|
|
278
|
+
};
|
|
265
279
|
readonly "admin.widget.create": {
|
|
266
280
|
readonly command: readonly ["widget", "create"];
|
|
267
281
|
readonly examples: readonly [{
|
|
@@ -323,6 +337,45 @@ export declare const helpExamplesIndex: {
|
|
|
323
337
|
}];
|
|
324
338
|
};
|
|
325
339
|
readonly notes: readonly ["supported Aggregate values are sum, avg, max, min, count, and distinct_count", "unsupported aggregate names fail local body validation before the request is sent"];
|
|
340
|
+
}, {
|
|
341
|
+
readonly title: "preview filtered distinct_count grouped by source";
|
|
342
|
+
readonly body: {
|
|
343
|
+
readonly dataSource: 2188891001;
|
|
344
|
+
readonly dataSourceType: "entity";
|
|
345
|
+
readonly dimensions: readonly [{
|
|
346
|
+
readonly IsField: true;
|
|
347
|
+
readonly FieldID: 1004;
|
|
348
|
+
readonly Name: "Source";
|
|
349
|
+
}];
|
|
350
|
+
readonly conditions: {
|
|
351
|
+
readonly mode: "and";
|
|
352
|
+
readonly conditions: readonly [{
|
|
353
|
+
readonly column: ":1006";
|
|
354
|
+
readonly operator: "$eq";
|
|
355
|
+
readonly value: "yes";
|
|
356
|
+
}];
|
|
357
|
+
};
|
|
358
|
+
readonly measures: readonly [{
|
|
359
|
+
readonly FieldID: 1002;
|
|
360
|
+
readonly Aggregate: "distinct_count";
|
|
361
|
+
readonly Name: "Distinct Customers";
|
|
362
|
+
}];
|
|
363
|
+
};
|
|
364
|
+
readonly notes: readonly ["use conditions, not filters, for chart data filtering", "for saved charts put the same condition set under options.charts.conditions", "do not remove the condition and hand-calculate filtered statistics from row query results"];
|
|
365
|
+
}];
|
|
366
|
+
};
|
|
367
|
+
readonly "admin.widget.update-ingress-options": {
|
|
368
|
+
readonly command: readonly ["widget", "update-ingress-options"];
|
|
369
|
+
readonly examples: readonly [{
|
|
370
|
+
readonly title: "adjust an ingress list widget display configuration";
|
|
371
|
+
readonly body: {
|
|
372
|
+
readonly options: {
|
|
373
|
+
readonly cond_follow: true;
|
|
374
|
+
readonly cond_follow_tab: true;
|
|
375
|
+
readonly cond_follow_cols: readonly [":1001", ":1002"];
|
|
376
|
+
};
|
|
377
|
+
};
|
|
378
|
+
readonly notes: readonly ["use this only for widgets created with options.ingress_id", "do not use dashboard update-layout for ingress widgets", "verify with widget get after updating ingress options"];
|
|
326
379
|
}];
|
|
327
380
|
};
|
|
328
381
|
readonly "user.row.bulk-update": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help_examples.generated.d.ts","sourceRoot":"","sources":["../../src/generated/help_examples.generated.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"help_examples.generated.d.ts","sourceRoot":"","sources":["../../src/generated/help_examples.generated.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsoBgF,CAAA"}
|
|
@@ -363,6 +363,33 @@ export const helpExamplesIndex = {
|
|
|
363
363
|
}
|
|
364
364
|
]
|
|
365
365
|
},
|
|
366
|
+
"admin.dashboard.update-options": {
|
|
367
|
+
"command": [
|
|
368
|
+
"dashboard",
|
|
369
|
+
"update-options"
|
|
370
|
+
],
|
|
371
|
+
"examples": [
|
|
372
|
+
{
|
|
373
|
+
"title": "make a dashboard visible to one Arcubase user",
|
|
374
|
+
"body": {
|
|
375
|
+
"changed": [
|
|
376
|
+
"users"
|
|
377
|
+
],
|
|
378
|
+
"users": [
|
|
379
|
+
{
|
|
380
|
+
"type": "user",
|
|
381
|
+
"id": 2188889901
|
|
382
|
+
}
|
|
383
|
+
]
|
|
384
|
+
},
|
|
385
|
+
"notes": [
|
|
386
|
+
"dashboard visibility is controlled by DashboardUpdateOptionsReqVO.users",
|
|
387
|
+
"use the currentSpeaker.arcubaseUserId value for the current human speaker",
|
|
388
|
+
"after updating, verify from the user side with arcubase app get and require dashboards to include the dashboard"
|
|
389
|
+
]
|
|
390
|
+
}
|
|
391
|
+
]
|
|
392
|
+
},
|
|
366
393
|
"admin.widget.create": {
|
|
367
394
|
"command": [
|
|
368
395
|
"widget",
|
|
@@ -458,6 +485,68 @@ export const helpExamplesIndex = {
|
|
|
458
485
|
"supported Aggregate values are sum, avg, max, min, count, and distinct_count",
|
|
459
486
|
"unsupported aggregate names fail local body validation before the request is sent"
|
|
460
487
|
]
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
"title": "preview filtered distinct_count grouped by source",
|
|
491
|
+
"body": {
|
|
492
|
+
"dataSource": 2188891001,
|
|
493
|
+
"dataSourceType": "entity",
|
|
494
|
+
"dimensions": [
|
|
495
|
+
{
|
|
496
|
+
"IsField": true,
|
|
497
|
+
"FieldID": 1004,
|
|
498
|
+
"Name": "Source"
|
|
499
|
+
}
|
|
500
|
+
],
|
|
501
|
+
"conditions": {
|
|
502
|
+
"mode": "and",
|
|
503
|
+
"conditions": [
|
|
504
|
+
{
|
|
505
|
+
"column": ":1006",
|
|
506
|
+
"operator": "$eq",
|
|
507
|
+
"value": "yes"
|
|
508
|
+
}
|
|
509
|
+
]
|
|
510
|
+
},
|
|
511
|
+
"measures": [
|
|
512
|
+
{
|
|
513
|
+
"FieldID": 1002,
|
|
514
|
+
"Aggregate": "distinct_count",
|
|
515
|
+
"Name": "Distinct Customers"
|
|
516
|
+
}
|
|
517
|
+
]
|
|
518
|
+
},
|
|
519
|
+
"notes": [
|
|
520
|
+
"use conditions, not filters, for chart data filtering",
|
|
521
|
+
"for saved charts put the same condition set under options.charts.conditions",
|
|
522
|
+
"do not remove the condition and hand-calculate filtered statistics from row query results"
|
|
523
|
+
]
|
|
524
|
+
}
|
|
525
|
+
]
|
|
526
|
+
},
|
|
527
|
+
"admin.widget.update-ingress-options": {
|
|
528
|
+
"command": [
|
|
529
|
+
"widget",
|
|
530
|
+
"update-ingress-options"
|
|
531
|
+
],
|
|
532
|
+
"examples": [
|
|
533
|
+
{
|
|
534
|
+
"title": "adjust an ingress list widget display configuration",
|
|
535
|
+
"body": {
|
|
536
|
+
"options": {
|
|
537
|
+
"cond_follow": true,
|
|
538
|
+
"cond_follow_tab": true,
|
|
539
|
+
"cond_follow_cols": [
|
|
540
|
+
":1001",
|
|
541
|
+
":1002"
|
|
542
|
+
]
|
|
543
|
+
}
|
|
544
|
+
},
|
|
545
|
+
"notes": [
|
|
546
|
+
"use this only for widgets created with options.ingress_id",
|
|
547
|
+
"do not use dashboard update-layout for ingress widgets",
|
|
548
|
+
"verify with widget get after updating ingress options"
|
|
549
|
+
]
|
|
461
550
|
}
|
|
462
551
|
]
|
|
463
552
|
},
|