@open-rap/compiler 0.0.0-stage → 0.1.1
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/LICENSE +21 -0
- package/README.md +21 -2
- package/dist/agent/server.d.ts +35 -0
- package/dist/agent/server.js +408 -0
- package/dist/agent/server.js.map +1 -0
- package/dist/authoring/abapgit.d.ts +38 -0
- package/dist/authoring/abapgit.js +242 -0
- package/dist/authoring/abapgit.js.map +1 -0
- package/dist/authoring/catalog.d.ts +48 -0
- package/dist/authoring/catalog.js +117 -0
- package/dist/authoring/catalog.js.map +1 -0
- package/dist/authoring/floorplan.d.ts +28 -0
- package/dist/authoring/floorplan.js +31 -0
- package/dist/authoring/floorplan.js.map +1 -0
- package/dist/authoring/generate.d.ts +57 -0
- package/dist/authoring/generate.js +630 -0
- package/dist/authoring/generate.js.map +1 -0
- package/dist/authoring/mcp.d.ts +15 -0
- package/dist/authoring/mcp.js +52 -0
- package/dist/authoring/mcp.js.map +1 -0
- package/dist/authoring/new.d.ts +35 -0
- package/dist/authoring/new.js +389 -0
- package/dist/authoring/new.js.map +1 -0
- package/dist/bdef/ast.d.ts +249 -0
- package/dist/bdef/ast.js +3 -0
- package/dist/bdef/ast.js.map +1 -0
- package/dist/bdef/lexer.d.ts +105 -0
- package/dist/bdef/lexer.js +148 -0
- package/dist/bdef/lexer.js.map +1 -0
- package/dist/bdef/parser.d.ts +22 -0
- package/dist/bdef/parser.js +1012 -0
- package/dist/bdef/parser.js.map +1 -0
- package/dist/build.d.ts +26 -0
- package/dist/build.js +62 -0
- package/dist/build.js.map +1 -0
- package/dist/cds/adapter.d.ts +91 -0
- package/dist/cds/adapter.js +381 -0
- package/dist/cds/adapter.js.map +1 -0
- package/dist/cds/expression-ast.d.ts +65 -0
- package/dist/cds/expression-ast.js +330 -0
- package/dist/cds/expression-ast.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.js +485 -0
- package/dist/cli.js.map +1 -0
- package/dist/dcl/parser.d.ts +59 -0
- package/dist/dcl/parser.js +338 -0
- package/dist/dcl/parser.js.map +1 -0
- package/dist/ddic/catalog.d.ts +17 -0
- package/dist/ddic/catalog.js +211 -0
- package/dist/ddic/catalog.js.map +1 -0
- package/dist/ddic/cds-types.d.ts +47 -0
- package/dist/ddic/cds-types.js +131 -0
- package/dist/ddic/cds-types.js.map +1 -0
- package/dist/ddic/table-source.d.ts +70 -0
- package/dist/ddic/table-source.js +500 -0
- package/dist/ddic/table-source.js.map +1 -0
- package/dist/ddic/xml.d.ts +65 -0
- package/dist/ddic/xml.js +201 -0
- package/dist/ddic/xml.js.map +1 -0
- package/dist/dev.d.ts +128 -0
- package/dist/dev.js +434 -0
- package/dist/dev.js.map +1 -0
- package/dist/diagnostics.d.ts +33 -0
- package/dist/diagnostics.js +53 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/gen/abap/derived-types.d.ts +26 -0
- package/dist/gen/abap/derived-types.js +323 -0
- package/dist/gen/abap/derived-types.js.map +1 -0
- package/dist/gen/abap/eml.d.ts +118 -0
- package/dist/gen/abap/eml.js +362 -0
- package/dist/gen/abap/eml.js.map +1 -0
- package/dist/gen/abap/enums.d.ts +13 -0
- package/dist/gen/abap/enums.js +74 -0
- package/dist/gen/abap/enums.js.map +1 -0
- package/dist/gen/abap/framework-http.d.ts +14 -0
- package/dist/gen/abap/framework-http.js +1049 -0
- package/dist/gen/abap/framework-http.js.map +1 -0
- package/dist/gen/abap/framework-query.d.ts +14 -0
- package/dist/gen/abap/framework-query.js +225 -0
- package/dist/gen/abap/framework-query.js.map +1 -0
- package/dist/gen/abap/framework-utils.d.ts +29 -0
- package/dist/gen/abap/framework-utils.js +3707 -0
- package/dist/gen/abap/framework-utils.js.map +1 -0
- package/dist/gen/abap/framework.d.ts +12 -0
- package/dist/gen/abap/framework.js +480 -0
- package/dist/gen/abap/framework.js.map +1 -0
- package/dist/gen/abap/generate.d.ts +40 -0
- package/dist/gen/abap/generate.js +238 -0
- package/dist/gen/abap/generate.js.map +1 -0
- package/dist/gen/abap/rewrite.d.ts +82 -0
- package/dist/gen/abap/rewrite.js +957 -0
- package/dist/gen/abap/rewrite.js.map +1 -0
- package/dist/gen/abap/shadow.d.ts +25 -0
- package/dist/gen/abap/shadow.js +175 -0
- package/dist/gen/abap/shadow.js.map +1 -0
- package/dist/gen/abap/tokens.d.ts +33 -0
- package/dist/gen/abap/tokens.js +87 -0
- package/dist/gen/abap/tokens.js.map +1 -0
- package/dist/gen/app/index.d.ts +25 -0
- package/dist/gen/app/index.js +322 -0
- package/dist/gen/app/index.js.map +1 -0
- package/dist/gen/csdl.d.ts +11 -0
- package/dist/gen/csdl.js +562 -0
- package/dist/gen/csdl.js.map +1 -0
- package/dist/gen/deploy.d.ts +12 -0
- package/dist/gen/deploy.js +53 -0
- package/dist/gen/deploy.js.map +1 -0
- package/dist/gen/docs/index.d.ts +35 -0
- package/dist/gen/docs/index.js +267 -0
- package/dist/gen/docs/index.js.map +1 -0
- package/dist/gen/docs/markdown.d.ts +23 -0
- package/dist/gen/docs/markdown.js +187 -0
- package/dist/gen/docs/markdown.js.map +1 -0
- package/dist/gen/docs/site.d.ts +17 -0
- package/dist/gen/docs/site.js +106 -0
- package/dist/gen/docs/site.js.map +1 -0
- package/dist/gen/keycloak.d.ts +21 -0
- package/dist/gen/keycloak.js +90 -0
- package/dist/gen/keycloak.js.map +1 -0
- package/dist/gen/launchpad/index.d.ts +48 -0
- package/dist/gen/launchpad/index.js +302 -0
- package/dist/gen/launchpad/index.js.map +1 -0
- package/dist/gen/launchpad/ui.d.ts +14 -0
- package/dist/gen/launchpad/ui.js +350 -0
- package/dist/gen/launchpad/ui.js.map +1 -0
- package/dist/gen/mcp.d.ts +23 -0
- package/dist/gen/mcp.js +244 -0
- package/dist/gen/mcp.js.map +1 -0
- package/dist/gen/sql-expressions.d.ts +12 -0
- package/dist/gen/sql-expressions.js +136 -0
- package/dist/gen/sql-expressions.js.map +1 -0
- package/dist/gen/sql.d.ts +38 -0
- package/dist/gen/sql.js +612 -0
- package/dist/gen/sql.js.map +1 -0
- package/dist/gen/ui/index.d.ts +7 -0
- package/dist/gen/ui/index.js +27 -0
- package/dist/gen/ui/index.js.map +1 -0
- package/dist/gen/ui/layout.d.ts +230 -0
- package/dist/gen/ui/layout.js +511 -0
- package/dist/gen/ui/layout.js.map +1 -0
- package/dist/gen/ui/static.d.ts +55 -0
- package/dist/gen/ui/static.js +2901 -0
- package/dist/gen/ui/static.js.map +1 -0
- package/dist/gen/ui/views.d.ts +10 -0
- package/dist/gen/ui/views.js +511 -0
- package/dist/gen/ui/views.js.map +1 -0
- package/dist/gen/vendor.d.ts +23 -0
- package/dist/gen/vendor.js +68 -0
- package/dist/gen/vendor.js.map +1 -0
- package/dist/gen/xml.d.ts +9 -0
- package/dist/gen/xml.js +42 -0
- package/dist/gen/xml.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/input/project.d.ts +50 -0
- package/dist/input/project.js +128 -0
- package/dist/input/project.js.map +1 -0
- package/dist/ir/access-controls.d.ts +11 -0
- package/dist/ir/access-controls.js +148 -0
- package/dist/ir/access-controls.js.map +1 -0
- package/dist/ir/authorizations.d.ts +25 -0
- package/dist/ir/authorizations.js +178 -0
- package/dist/ir/authorizations.js.map +1 -0
- package/dist/ir/behaviors.d.ts +16 -0
- package/dist/ir/behaviors.js +548 -0
- package/dist/ir/behaviors.js.map +1 -0
- package/dist/ir/builder.d.ts +20 -0
- package/dist/ir/builder.js +505 -0
- package/dist/ir/builder.js.map +1 -0
- package/dist/ir/config.d.ts +25 -0
- package/dist/ir/config.js +130 -0
- package/dist/ir/config.js.map +1 -0
- package/dist/ir/dictionary.d.ts +54 -0
- package/dist/ir/dictionary.js +328 -0
- package/dist/ir/dictionary.js.map +1 -0
- package/dist/ir/entities.d.ts +58 -0
- package/dist/ir/entities.js +676 -0
- package/dist/ir/entities.js.map +1 -0
- package/dist/ir/expressions.d.ts +33 -0
- package/dist/ir/expressions.js +327 -0
- package/dist/ir/expressions.js.map +1 -0
- package/dist/ir/handlers.d.ts +63 -0
- package/dist/ir/handlers.js +398 -0
- package/dist/ir/handlers.js.map +1 -0
- package/dist/ir/number-ranges.d.ts +24 -0
- package/dist/ir/number-ranges.js +74 -0
- package/dist/ir/number-ranges.js.map +1 -0
- package/dist/ir/seed.d.ts +23 -0
- package/dist/ir/seed.js +78 -0
- package/dist/ir/seed.js.map +1 -0
- package/dist/ir/service.d.ts +21 -0
- package/dist/ir/service.js +96 -0
- package/dist/ir/service.js.map +1 -0
- package/dist/launchpad/config.d.ts +47 -0
- package/dist/launchpad/config.js +321 -0
- package/dist/launchpad/config.js.map +1 -0
- package/dist/launchpad/workspace.d.ts +48 -0
- package/dist/launchpad/workspace.js +166 -0
- package/dist/launchpad/workspace.js.map +1 -0
- package/dist/srvd/parser.d.ts +36 -0
- package/dist/srvd/parser.js +193 -0
- package/dist/srvd/parser.js.map +1 -0
- package/dist/standard/data.d.ts +18 -0
- package/dist/standard/data.js +534 -0
- package/dist/standard/data.js.map +1 -0
- package/dist/standard/index.d.ts +36 -0
- package/dist/standard/index.js +507 -0
- package/dist/standard/index.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/docs/AGENTS.md +79 -0
- package/docs/ANNOTATIONS.md +76 -0
- package/docs/DECISIONS.md +1554 -0
- package/docs/DEPLOYMENT.md +113 -0
- package/docs/DIAGNOSTICS.md +116 -0
- package/docs/FEATURES.md +287 -0
- package/docs/GUIDE.md +560 -0
- package/docs/KNOWN_GAPS.md +216 -0
- package/docs/MCP.md +84 -0
- package/docs/PLAN.md +690 -0
- package/docs/README.md +148 -0
- package/docs/REMOTE_APIS.md +121 -0
- package/docs/ROADMAP.md +35 -0
- package/docs/UTILITIES.md +95 -0
- package/package.json +49 -3
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Generation of the OpenUI5 UI of the application (`ui/` folder, decision D10). */
|
|
2
|
+
import type { Model } from "@open-rap/model";
|
|
3
|
+
export { buildUiLayout, type UiLayout } from "./layout.js";
|
|
4
|
+
export declare function generateUi(model: Model): Array<{
|
|
5
|
+
path: string;
|
|
6
|
+
content: string;
|
|
7
|
+
}>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Generation of the OpenUI5 UI of the application (`ui/` folder, decision D10). */
|
|
2
|
+
import { buildUiLayout } from "./layout.js";
|
|
3
|
+
import { APP_CONTROLLER, APP_VIEW, CHART, COMPONENT, CONDITIONS, FILTERS, indexHtml, LIST_CONTROLLER, manifest, OBJECT_CONTROLLER, OVERVIEW_CONTROLLER, STYLE, SUPPORT, VARIANTS } from "./static.js";
|
|
4
|
+
import { views } from "./views.js";
|
|
5
|
+
export { buildUiLayout } from "./layout.js";
|
|
6
|
+
export function generateUi(model) {
|
|
7
|
+
const layout = buildUiLayout(model);
|
|
8
|
+
return [
|
|
9
|
+
{ path: "index.html", content: indexHtml(layout) },
|
|
10
|
+
{ path: "manifest.json", content: manifest(layout) },
|
|
11
|
+
{ path: "Component.js", content: COMPONENT },
|
|
12
|
+
{ path: "view/App.view.xml", content: APP_VIEW },
|
|
13
|
+
...views(layout),
|
|
14
|
+
{ path: "controller/App.controller.js", content: APP_CONTROLLER },
|
|
15
|
+
{ path: "controller/List.controller.js", content: LIST_CONTROLLER },
|
|
16
|
+
{ path: "controller/Object.controller.js", content: OBJECT_CONTROLLER },
|
|
17
|
+
{ path: "controller/support.js", content: SUPPORT },
|
|
18
|
+
{ path: "controller/filters.js", content: FILTERS },
|
|
19
|
+
{ path: "controller/conditions.js", content: CONDITIONS },
|
|
20
|
+
{ path: "controller/variants.js", content: VARIANTS },
|
|
21
|
+
{ path: "controller/Chart.js", content: CHART },
|
|
22
|
+
...(layout.overview === undefined ? [] : [{ path: "controller/Overview.controller.js", content: OVERVIEW_CONTROLLER }]),
|
|
23
|
+
{ path: "css/style.css", content: STYLE },
|
|
24
|
+
{ path: "model/layout.json", content: `${JSON.stringify(layout, null, 2)}\n` },
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/gen/ui/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAGpF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtM,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAiB,MAAM,aAAa,CAAC;AAE3D,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO;QACL,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE;QAClD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE;QACpD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE;QAC5C,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAE;QAChD,GAAG,KAAK,CAAC,MAAM,CAAC;QAChB,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,cAAc,EAAE;QACjE,EAAE,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,eAAe,EAAE;QACnE,EAAE,IAAI,EAAE,iCAAiC,EAAE,OAAO,EAAE,iBAAiB,EAAE;QACvE,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO,EAAE;QACnD,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO,EAAE;QACnD,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,UAAU,EAAE;QACzD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,QAAQ,EAAE;QACrD,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE;QAC/C,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,mCAAmC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACvH,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE;QACzC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;KAC/E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The layout of the generated UI (List Report and Object Page, decision D10), derived from the
|
|
3
|
+
* UI annotations of the IR the same way as the CSDL ($metadata): line items, selection fields,
|
|
4
|
+
* header info, facets, identification, field groups, actions and presentation variant.
|
|
5
|
+
*
|
|
6
|
+
* The layout is written as `ui/model/layout.json`; the generic controllers read it.
|
|
7
|
+
*/
|
|
8
|
+
import { type EdmType, type Model, type ValueHelp } from "@open-rap/model";
|
|
9
|
+
export type FieldKind = "text" | "digits" | "integer" | "decimal" | "amount" | "boolean" | "date" | "time" | "datetime" | "uuid" | "enum";
|
|
10
|
+
/** The values of an enumeration type (D55): the member and its label. */
|
|
11
|
+
export type UiOption = {
|
|
12
|
+
key: string;
|
|
13
|
+
text: string;
|
|
14
|
+
};
|
|
15
|
+
export interface UiField {
|
|
16
|
+
property: string;
|
|
17
|
+
label: string;
|
|
18
|
+
kind: FieldKind;
|
|
19
|
+
edm: EdmType["type"];
|
|
20
|
+
maxLength?: number;
|
|
21
|
+
/** Currency or unit of an amount (`@Semantics.amount.currencyCode`). */
|
|
22
|
+
unit?: string;
|
|
23
|
+
key: boolean;
|
|
24
|
+
/** Never editable (readonly, managed numbering, administrative fields). */
|
|
25
|
+
computed: boolean;
|
|
26
|
+
/** Editable on creation only (readonly : update, keys of external numbering). */
|
|
27
|
+
immutable: boolean;
|
|
28
|
+
mandatory: boolean;
|
|
29
|
+
/** Under instance feature control (`__FieldControl`). */
|
|
30
|
+
dynamic: boolean;
|
|
31
|
+
importance?: "High" | "Medium" | "Low";
|
|
32
|
+
/** Value help of the field (`@Consumption.valueHelpDefinition`, `Common.ValueList`). */
|
|
33
|
+
valueHelp?: UiValueHelp;
|
|
34
|
+
/** Enumeration type (enhanced mode, D55): the members, in the order of the CDS type. */
|
|
35
|
+
options?: UiOption[];
|
|
36
|
+
/** `criticality` of the line item, identification or data point: the property giving 0 to 3 (D57). */
|
|
37
|
+
criticality?: string;
|
|
38
|
+
/** `@ObjectModel.text.element` and `@UI.textArrangement` (D57). */
|
|
39
|
+
text?: {
|
|
40
|
+
property: string;
|
|
41
|
+
arrangement: "TextFirst" | "TextLast" | "TextOnly" | "TextSeparate";
|
|
42
|
+
};
|
|
43
|
+
/** `@UI.multiLineText` (D57). */
|
|
44
|
+
multiLine?: boolean;
|
|
45
|
+
/** `@Semantics.email.address`, `@Semantics.telephone.type`, line item `#WITH_URL` (D57). */
|
|
46
|
+
link?: {
|
|
47
|
+
kind: "email" | "phone" | "url";
|
|
48
|
+
url?: string;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* `@Consumption.filter`: default value, mandatory filter, a single condition (D57), the allowed
|
|
52
|
+
* conditions of `selectionType` (D68).
|
|
53
|
+
*/
|
|
54
|
+
filter?: {
|
|
55
|
+
defaultValue?: string;
|
|
56
|
+
mandatory?: boolean;
|
|
57
|
+
single?: boolean;
|
|
58
|
+
expressions?: "SingleValue" | "SingleRange" | "MultiRange";
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/** A header facet of the object page (`@UI.facet` purpose #HEADER, D57). */
|
|
62
|
+
export type UiHeaderFacet = {
|
|
63
|
+
kind: "dataPoint";
|
|
64
|
+
id: string;
|
|
65
|
+
title: string;
|
|
66
|
+
field: UiField;
|
|
67
|
+
visualization?: "progress" | "rating";
|
|
68
|
+
target?: number;
|
|
69
|
+
} | {
|
|
70
|
+
kind: "fields";
|
|
71
|
+
id: string;
|
|
72
|
+
title: string;
|
|
73
|
+
fields: UiField[];
|
|
74
|
+
};
|
|
75
|
+
/** A value help: the entity set listing the values, its element and its columns (D44). */
|
|
76
|
+
export type UiValueHelp = ValueHelp;
|
|
77
|
+
export interface UiParameter {
|
|
78
|
+
name: string;
|
|
79
|
+
label: string;
|
|
80
|
+
kind: FieldKind;
|
|
81
|
+
edm: EdmType["type"];
|
|
82
|
+
options?: UiOption[];
|
|
83
|
+
valueHelp?: UiValueHelp;
|
|
84
|
+
}
|
|
85
|
+
export interface UiAction {
|
|
86
|
+
/** Unqualified action name. */
|
|
87
|
+
name: string;
|
|
88
|
+
/** Qualified name for the binding path (`namespace.action`). */
|
|
89
|
+
qualified: string;
|
|
90
|
+
label: string;
|
|
91
|
+
/** Static (collection-bound) action. */
|
|
92
|
+
static: boolean;
|
|
93
|
+
factory: boolean;
|
|
94
|
+
kind: "action" | "function";
|
|
95
|
+
parameters: UiParameter[];
|
|
96
|
+
/** Under instance feature control (`__OperationControl/<name>`). */
|
|
97
|
+
dynamic: boolean;
|
|
98
|
+
/** The result is an instance of the entity set (navigate to it for factory actions). */
|
|
99
|
+
returnsEntity: boolean;
|
|
100
|
+
}
|
|
101
|
+
export interface UiTable {
|
|
102
|
+
/** Entity set of the rows. */
|
|
103
|
+
set: string;
|
|
104
|
+
/** Composition navigation from the object (child tables), undefined for the list report. */
|
|
105
|
+
navigation?: string;
|
|
106
|
+
columns: UiField[];
|
|
107
|
+
actions: UiAction[];
|
|
108
|
+
insertable: boolean;
|
|
109
|
+
deletable: boolean;
|
|
110
|
+
orderby?: string;
|
|
111
|
+
/** The rows open an object page. */
|
|
112
|
+
navigable: boolean;
|
|
113
|
+
/** Entities of a draft BO (D54): changes are sent at once (draft). */
|
|
114
|
+
draft?: boolean;
|
|
115
|
+
}
|
|
116
|
+
export type UiSection = {
|
|
117
|
+
id: string;
|
|
118
|
+
label: string;
|
|
119
|
+
kind: "form";
|
|
120
|
+
fields: UiField[];
|
|
121
|
+
} | {
|
|
122
|
+
id: string;
|
|
123
|
+
label: string;
|
|
124
|
+
kind: "table";
|
|
125
|
+
table: UiTable;
|
|
126
|
+
} | {
|
|
127
|
+
id: string;
|
|
128
|
+
label: string;
|
|
129
|
+
kind: "collection";
|
|
130
|
+
sections: UiSection[];
|
|
131
|
+
};
|
|
132
|
+
/** A chart (`@UI.chart`, D53): one dimension, measures with their aggregation (`@Aggregation.default`). */
|
|
133
|
+
export interface UiChart {
|
|
134
|
+
qualifier?: string;
|
|
135
|
+
title: string;
|
|
136
|
+
type: "column" | "bar" | "line" | "pie" | "donut";
|
|
137
|
+
dimension: {
|
|
138
|
+
property: string;
|
|
139
|
+
label: string;
|
|
140
|
+
kind: FieldKind;
|
|
141
|
+
};
|
|
142
|
+
measures: Array<{
|
|
143
|
+
property: string;
|
|
144
|
+
label: string;
|
|
145
|
+
aggregation: "sum" | "min" | "max" | "average";
|
|
146
|
+
}>;
|
|
147
|
+
}
|
|
148
|
+
/** A selection variant (`@UI.selectionVariant`): the tabs of a worklist (D53). */
|
|
149
|
+
export interface UiSelectionVariant {
|
|
150
|
+
key: string;
|
|
151
|
+
text: string;
|
|
152
|
+
/** OData $filter. */
|
|
153
|
+
filter?: string;
|
|
154
|
+
}
|
|
155
|
+
/** A card of the Overview Page (D53). */
|
|
156
|
+
export interface UiCard {
|
|
157
|
+
id: string;
|
|
158
|
+
type: "list" | "table" | "chart" | "kpi";
|
|
159
|
+
set: string;
|
|
160
|
+
title: string;
|
|
161
|
+
subtitle?: string;
|
|
162
|
+
filter?: string;
|
|
163
|
+
orderby?: string;
|
|
164
|
+
top: number;
|
|
165
|
+
/** list, table: the first columns of the line item; the title field first. */
|
|
166
|
+
fields: UiField[];
|
|
167
|
+
chart?: UiChart;
|
|
168
|
+
kpi?: {
|
|
169
|
+
property?: string;
|
|
170
|
+
label: string;
|
|
171
|
+
aggregation: "sum" | "min" | "max" | "average" | "count";
|
|
172
|
+
unit?: string;
|
|
173
|
+
};
|
|
174
|
+
/** The list report of the set opens from the header of the card. */
|
|
175
|
+
navigable: boolean;
|
|
176
|
+
}
|
|
177
|
+
export interface UiPage {
|
|
178
|
+
set: string;
|
|
179
|
+
/** A draft BO (D54): Edit opens a draft, Save activates it, Cancel discards it. */
|
|
180
|
+
draft?: {
|
|
181
|
+
root: boolean;
|
|
182
|
+
collaborative?: true;
|
|
183
|
+
};
|
|
184
|
+
/** The floorplan of the start page of a root entity set (D53). */
|
|
185
|
+
floorplan: "listReport" | "worklist" | "analyticalListPage" | "formEntry";
|
|
186
|
+
/** The charts of the entity (`@UI.chart`), for the Analytical List Page and the cards. */
|
|
187
|
+
charts: UiChart[];
|
|
188
|
+
selectionVariants: UiSelectionVariant[];
|
|
189
|
+
entityType: string;
|
|
190
|
+
typeName: string;
|
|
191
|
+
typeNamePlural: string;
|
|
192
|
+
keys: string[];
|
|
193
|
+
title?: string;
|
|
194
|
+
description?: string;
|
|
195
|
+
/** List report of a root entity set. */
|
|
196
|
+
list?: {
|
|
197
|
+
table: UiTable;
|
|
198
|
+
/** Filters shown by default (`@UI.selectionField`). */
|
|
199
|
+
selectionFields: UiField[];
|
|
200
|
+
/** Every field the user may filter by ("Adapt Filters"): the selection fields, then the columns. */
|
|
201
|
+
filterFields: UiField[];
|
|
202
|
+
searchable: boolean;
|
|
203
|
+
};
|
|
204
|
+
sections: UiSection[];
|
|
205
|
+
/** Object page header actions (identification). */
|
|
206
|
+
actions: UiAction[];
|
|
207
|
+
updatable: boolean;
|
|
208
|
+
deletable: boolean;
|
|
209
|
+
insertable: boolean;
|
|
210
|
+
updatableDynamic: boolean;
|
|
211
|
+
deletableDynamic: boolean;
|
|
212
|
+
/** Fields of the object page, by property (editability in edit mode). */
|
|
213
|
+
fields: Record<string, UiField>;
|
|
214
|
+
/** Header facets: data points and field groups (D57). */
|
|
215
|
+
headerFacets?: UiHeaderFacet[];
|
|
216
|
+
}
|
|
217
|
+
export interface UiLayout {
|
|
218
|
+
title: string;
|
|
219
|
+
servicePath: string;
|
|
220
|
+
namespace: string;
|
|
221
|
+
/** Entity set of the start page (list report). */
|
|
222
|
+
start: string;
|
|
223
|
+
pages: UiPage[];
|
|
224
|
+
/** An Overview Page as start page (D53). */
|
|
225
|
+
overview?: {
|
|
226
|
+
title: string;
|
|
227
|
+
cards: UiCard[];
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
export declare function buildUiLayout(model: Model): UiLayout;
|