├── .cdsprettier.json
├── .cdsrc.json
├── .gitignore
├── LICENSE
├── LICENSES
└── Apache-2.0.txt
├── README.md
├── REUSE.toml
├── _i18n
├── i18n.properties
└── i18n_en.properties
├── app
├── featureShowcase
│ ├── capabilities.cds
│ ├── field-control.cds
│ ├── labels.cds
│ ├── layouts_ChartDataEntities.cds
│ ├── layouts_ChildEntities1.cds
│ ├── layouts_ChildEntities2.cds
│ ├── layouts_ChildEntities3.cds
│ ├── layouts_GrandChildEntities.cds
│ ├── layouts_RootEntities.cds
│ ├── layouts_RootEntityVariants.cds
│ ├── layouts_contacts.cds
│ ├── package.json
│ ├── ui5.yaml
│ ├── value-helps.cds
│ └── webapp
│ │ ├── Component.js
│ │ ├── ext
│ │ ├── CustomActions.js
│ │ ├── CustomColumn-DateRangeLR.fragment.xml
│ │ ├── CustomColumn-ProcessFlow.fragment.xml
│ │ ├── CustomController.js
│ │ ├── CustomField-DatePicker.fragment.xml
│ │ ├── CustomField-DateRange.fragment.xml
│ │ ├── CustomFilter-Rating.fragment.xml
│ │ ├── CustomFilter-Rating.js
│ │ ├── CustomHeaderFacet-Edit.fragment.xml
│ │ ├── CustomHeaderFacet-ProcessFlow.fragment.xml
│ │ ├── CustomSection.fragment.xml
│ │ ├── CustomSubSection.fragment.xml
│ │ ├── SideContent.fragment.xml
│ │ ├── SideContent.js
│ │ ├── SideContentTable.fragment.xml
│ │ ├── controller
│ │ │ ├── CustomObjectPage.controller.js
│ │ │ └── data.json
│ │ └── view
│ │ │ └── CustomObjectPage.view.xml
│ │ ├── i18n
│ │ ├── customI18N.properties
│ │ ├── customI18N_en.properties
│ │ ├── customI18N_en_US.properties
│ │ ├── i18n.properties
│ │ ├── i18n_en.properties
│ │ └── i18n_en_US.properties
│ │ ├── manifest.json
│ │ └── utils
│ │ └── locate-reuse-libs.js
├── featureShowcaseNavigationTarget
│ ├── annotations.cds
│ ├── package.json
│ ├── ui5.yaml
│ └── webapp
│ │ ├── Component.js
│ │ ├── i18n
│ │ ├── i18n.properties
│ │ ├── i18n_en.properties
│ │ └── i18n_en_US.properties
│ │ ├── manifest.json
│ │ └── utils
│ │ └── locate-reuse-libs.js
├── media
│ ├── bigBen.png
│ ├── brandenburgGate.png
│ ├── camera.png
│ ├── consulting.png
│ ├── crate.png
│ ├── drink.png
│ ├── gift.png
│ └── null.png
└── services.cds
├── db
├── common.cds
├── data
│ ├── sap.common-Countries.csv
│ ├── sap.common-Countries.texts.csv
│ ├── sap.common-Criticality.csv
│ ├── sap.common-Currencies.csv
│ ├── sap.common-Currencies.text.csv
│ ├── sap.common-Regions.csv
│ ├── sap.common-UnitOfMeasureCodeList.csv
│ ├── sap.fe.featureShowcase-ChartDataEntities.csv
│ ├── sap.fe.featureShowcase-ChildEntities1.csv
│ ├── sap.fe.featureShowcase-ChildEntities2.csv
│ ├── sap.fe.featureShowcase-ChildEntities3.csv
│ ├── sap.fe.featureShowcase-Contacts.csv
│ ├── sap.fe.featureShowcase-GrandChildEntities.csv
│ ├── sap.fe.featureShowcase-RootEntities.csv
│ ├── sap.fe.featureShowcase-RootEntityVariants.csv
│ └── sap.fe.featureShowcase-Singleton.csv
└── schema.cds
├── package-lock.json
├── package.json
├── readmeImages
└── app-screenshot.png
└── srv
├── service.cds
└── service.js
/.cdsprettier.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/.cdsrc.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # CAP feature-showcase
2 | _out
3 | *.db
4 | connection.properties
5 | default-*.json
6 | gen/
7 | node_modules/
8 | target/
9 |
10 | # Web IDE, App Studio
11 | .che/
12 | .gen/
13 |
14 | # MTA
15 | *_mta_build_tmp
16 | *.mtar
17 | mta_archives/
18 |
19 | # Other
20 | .DS_Store
21 | *.orig
22 | *.log
23 |
24 | *.iml
25 | *.flattened-pom.xml
26 |
27 | # IDEs
28 | .vscode
29 | .idea
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/LICENSES/Apache-2.0.txt:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/REUSE.toml:
--------------------------------------------------------------------------------
1 | version = 1
2 | SPDX-PackageName = "fiori-elements-feature-showcase"
3 | SPDX-PackageSupplier = "s.engelhardt@sap.com"
4 | SPDX-PackageDownloadLocation = "https://github.com/sap-samples/fiori-elements-feature-showcase"
5 | SPDX-PackageComment = "The code in this project may include calls to APIs (“API Calls”) of\n SAP or third-party products or services developed outside of this project\n (“External Products”).\n “APIs” means application programming interfaces, as well as their respective\n specifications and implementing code that allows software to communicate with\n other software.\n API Calls to External Products are not licensed under the open source license\n that governs this project. The use of such API Calls and related External\n Products are subject to applicable additional agreements with the relevant\n provider of the External Products. In no event shall the open source license\n that governs this project grant any rights in or to any External Products,or\n alter, expand or supersede any terms of the applicable additional agreements.\n If you have a valid license agreement with SAP for the use of a particular SAP\n External Product, then you may make use of any API Calls included in this\n project’s code for that SAP External Product, subject to the terms of such\n license agreement. If you do not have a valid license agreement for the use of\n a particular SAP External Product, then you may only make use of any API Calls\n in this project for that SAP External Product for your internal, non-productive\n and non-commercial test and evaluation of such API Calls. Nothing herein grants\n you any rights to use or access any SAP External Product, or provide any third\n parties the right to use of access any SAP External Product, through API Calls."
6 |
7 | [[annotations]]
8 | path = "**"
9 | precedence = "aggregate"
10 | SPDX-FileCopyrightText = "2021 SAP SE or an SAP affiliate company and [YOUR REPO NAME] contributors"
11 | SPDX-License-Identifier = "Apache-2.0"
12 |
--------------------------------------------------------------------------------
/_i18n/i18n.properties:
--------------------------------------------------------------------------------
1 | RootEntities=Root entity
2 | RootEntities.typeNamePlural=Root entities
3 |
4 | location=Location
5 | integerValue=Integer value
6 | targetValue=Target value
7 | forecastValue=Forecast value
8 | dimensions=Dimension
9 | field=Field
10 | contact=Contact
11 |
12 | sumIntegerValue=Sum of integer values
13 | sumTargetValue=Sum of target values
14 |
15 | connectedField=Connected fields
16 |
17 | changeCriticality=Change Criticality (Bound)
18 | unboundAction=Show input (Unbound)
19 | subSection=Subsection
20 | customSubSection=Custom subsection
21 | customSection=Custom section
22 | customHeaderFacet=Custom header facet
23 | customColumn=Custom column
24 | customFilter=Rating filter
25 |
26 | inboundNavigation=IBN
27 | formAction=Action on form
28 | formActionEmphasized=Emphasized action on form
29 |
30 | ToggleSideContent=Toggle side content
31 | CustomActionOPTableToolbar=Custom action
32 | CustomActionOPHeader=Custom action
33 | CustomActionOPFooter=Custom action
34 | CustomActionSection=Custom action
35 | CustomActionLRGlobal=Custom action
36 | CustomActionLR=Custom action
37 | validityPeriodLR=Custom column
38 | validityPeriodOP=Custom field
39 |
40 | generalData=General data
41 | address=Address
42 | plainText=Plain text
43 | ratingIndicator=Rating indicator
44 | progressIndicator=Progress indicator
45 | areaChart=Area micro chart
46 | lineChart=Line micro chart
47 | harveyChart=Harvey micro chart
48 | columnChart=Column micro chart
49 | stackedBarChart=Stacked bar micro chart
50 | comparisonChart=Comparison micro chart
51 | bulletChart=Bullet micro chart
52 | radialChart=Radial micro chart
53 | ThisIsAMicroChart=This is a micro chart
54 |
55 | childEntities1=Child entity 1 (1..n)
56 | childEntities1.typeNamePlural=Child 1 entities
57 | ChildEntity2=Association (1..1)
58 | ChildEntity2.typeNamePlural=Association entities
59 | childEntities3=Child entities for custom object page (1..n)
60 | chartEntities=Child entities for chart (1..n)
61 | grandChildren=Grand child entities (1..n)
62 | chart=Chart
63 |
64 | chartDataCollection=Micro chart data (collection facet)
65 | chartData=Chart data
66 | advancedChartData=Calculated values
67 |
68 | collectionSection=Collection facet
69 | showWhenInEdit=Section visible in edit
70 |
71 | image=Image
72 | fieldWithPrice=Property with currency
73 | fieldWithUoM=Property with unit
74 | fieldWithCriticality=Property with criticality
75 | fieldWithPerCent=Percentage property
76 | fieldWithToolTip=Field with tool tip
77 | adminData=Admin data (field group)
78 | dataFieldWithURL=URL property
79 | contactQuickView=Contact with quick view
80 |
81 | stringProperty=String property
82 | integerProperty=Integer property
83 | decimalProperty=Decimal property
84 | booleanProperty=Boolean property
85 |
86 | variant1ChildEntities1=SelectionVariant (All entities)
87 | variant2ChildEntities1=SelectionVariant (Positive criticality)
88 | variant3ChildEntities1=SelectionVariant (Negative criticality)
89 | variant4ChildEntities1=SelectionVariant (Critical criticality)
90 |
91 | newProgress=New value for progress
92 | newCriticality=New value for criticality
93 | inputValue=Input value
94 |
95 | SVariant1=SelectionVariant (Criticality between 0 and 2)
96 | SVariant2=SelectionVariant (Positive criticality)
97 | SelectionPresentationVariant=SelectionPresentationVariant (Criticality larger 0)
98 |
99 | variant3RootEntityVariants=View with other entity set (Criticality between 0 and 3)
100 | variant1ForRootEntityVariants=SelectionVariant (Criticality between 0 and 2)
101 | variant2ForRootEntityVariants=SelectionVariant (Positive criticality)
102 |
103 | semanticKeyField=Field with semantic key
104 | locationSubSection=Fields depending on each other
105 | description=Description
106 | communication=Communication
107 | email=E-Mail
108 | telephone=Telephone
109 |
110 | timeAndDate=Time and Date
111 | date=Date
112 | dateTo=To Date
113 | time=Time
114 | timeStamp=Time stamp
115 |
116 | macroField=Macro field
117 | resetEntities=Reset all data
118 | criticalAction=Critical action
119 | country=Country
120 | criticality=Criticality
121 | fieldWithURL=URL
122 | stars=Stars
123 | currencyForFieldWithPrice=Currency
124 | region=Region
125 | description2=Second description
126 | MultiInputField=Multi input field
127 |
128 | MultiInputFieldWithVH=Multi input with value help and input filter
--------------------------------------------------------------------------------
/_i18n/i18n_en.properties:
--------------------------------------------------------------------------------
1 | RootEntities=Root entity
2 | RootEntities.typeNamePlural=Root entities
3 |
4 | location=Location
5 | integerValue=Integer value
6 | targetValue=Target value
7 | forecastValue=Forecast value
8 | dimensions=Dimension
9 | field=Field
10 | contact=Contact
11 |
12 | sumIntegerValue=Sum of integer values
13 | sumTargetValue=Sum of target values
14 |
15 | connectedField=Connected fields
16 |
17 | changeCriticality=Change Criticality (Bound)
18 | unboundAction=Show input (Unbound)
19 | subSection=Subsection
20 | customSubSection=Custom subsection
21 | customSection=Custom section
22 | customHeaderFacet=Custom header facet
23 | customColumn=Custom column
24 | customFilter=Rating filter
25 |
26 | inboundNavigation=IBN
27 | formAction=Action on form
28 | formActionEmphasized=Emphasized action on form
29 |
30 | ToggleSideContent=Toggle side content
31 | CustomActionOPTableToolbar=Custom action
32 | CustomActionOPHeader=Custom action
33 | CustomActionOPFooter=Custom action
34 | CustomActionSection=Custom action
35 | CustomActionLRGlobal=Custom action
36 | CustomActionLR=Custom action
37 | validityPeriodLR=Custom column
38 | validityPeriodOP=Custom field
39 |
40 | generalData=General data
41 | address=Address
42 | plainText=Plain text
43 | ratingIndicator=Rating indicator
44 | progressIndicator=Progress indicator
45 | areaChart=Area micro chart
46 | lineChart=Line micro chart
47 | harveyChart=Harvey micro chart
48 | columnChart=Column micro chart
49 | stackedBarChart=Stacked bar micro chart
50 | comparisonChart=Comparison micro chart
51 | bulletChart=Bullet micro chart
52 | radialChart=Radial micro chart
53 | ThisIsAMicroChart=This is a micro chart
54 |
55 | childEntities1=Child entity 1 (1..n)
56 | childEntities1.typeNamePlural=Child 1 entities
57 | ChildEntity2=Association (1..1)
58 | ChildEntity2.typeNamePlural=Association entities
59 | childEntities3=Child entities for custom object page (1..n)
60 | chartEntities=Child entities for chart (1..n)
61 | grandChildren=Grand child entities (1..n)
62 | chart=Chart
63 |
64 | chartDataCollection=Micro chart data (collection facet)
65 | chartData=Chart data
66 | advancedChartData=Calculated values
67 |
68 | collectionSection=Collection facet
69 | showWhenInEdit=Section visible in edit
70 |
71 | image=Image
72 | fieldWithPrice=Property with currency
73 | fieldWithUoM=Property with unit
74 | fieldWithCriticality=Property with criticality
75 | fieldWithPerCent=Percentage property
76 | fieldWithToolTip=Field with tool tip
77 | adminData=Admin data (field group)
78 | dataFieldWithURL=URL property
79 | contactQuickView=Contact with quick view
80 |
81 | stringProperty=String property
82 | integerProperty=Integer property
83 | decimalProperty=Decimal property
84 | booleanProperty=Boolean property
85 |
86 | variant1ChildEntities1=SelectionVariant (All entities)
87 | variant2ChildEntities1=SelectionVariant (Positive criticality)
88 | variant3ChildEntities1=SelectionVariant (Negative criticality)
89 | variant4ChildEntities1=SelectionVariant (Critical criticality)
90 |
91 | newProgress=New value for progress
92 | newCriticality=New value for criticality
93 | inputValue=Input value
94 |
95 | SVariant1=SelectionVariant (Criticality between 0 and 2)
96 | SVariant2=SelectionVariant (Positive criticality)
97 | SelectionPresentationVariant=SelectionPresentationVariant (Criticality larger 0)
98 |
99 | variant3RootEntityVariants=View with other entity set (Criticality between 0 and 3)
100 | variant1ForRootEntityVariants=SelectionVariant (Criticality between 0 and 2)
101 | variant2ForRootEntityVariants=SelectionVariant (Positive criticality)
102 |
103 | semanticKeyField=Field with semantic key
104 | locationSubSection=Fields depending on each other
105 | description=Description
106 | communication=Communication
107 | email=E-Mail
108 | telephone=Telephone
109 |
110 | timeAndDate=Time and Date
111 | date=Date
112 | dateTo=To Date
113 | time=Time
114 | timeStamp=Time stamp
115 |
116 | macroField=Macro field
117 | resetEntities=Reset all data
118 | criticalAction=Critical action
119 | country=Country
120 | criticality=Criticality
121 | fieldWithURL=URL
122 | stars=Stars
123 | currencyForFieldWithPrice=Currency
124 | region=Region
125 | description2=Second description
126 | MultiInputField=Multi input field
127 |
128 | MultiInputFieldWithVH=Multi input with value help and input filter
--------------------------------------------------------------------------------
/app/featureShowcase/capabilities.cds:
--------------------------------------------------------------------------------
1 | using service1 from '../../srv/service';
2 |
3 | annotate service1.RootEntities with @odata.draft.enabled; //Search-Term: #Draft
4 |
5 | annotate service1.RootEntityVariants with @odata.draft.enabled; //Annotation has to exists, without no entites would be visible on view with other entity set of List Report
6 |
7 | annotate service1.RootEntities with @(
8 | //Disables the delete option dependent of the fields value
9 | Capabilities.DeleteRestrictions : {
10 | Deletable : deletePossible, //Search-Term: #DynamicCRUD
11 | },
12 | /* Capabilities.UpdateRestrictions : {
13 | Updatable : updatePossible, //UpdateRestrictions are ignored in determining if the edit button is visible or not, but it still affects wheather the fields are editable or not
14 | }, */
15 | UI.UpdateHidden : updateHidden,//Search-Term: #DynamicCRUD
16 |
17 | UI.CreateHidden: { $edmJson: { $Path: '/service1.EntityContainer/Singleton/createHidden' } }, //Search-Term: #DynamicCRUD
18 |
19 | Capabilities.FilterRestrictions : {
20 | FilterExpressionRestrictions : [
21 | {
22 | //Search-Term: #SemanticDateFilter
23 | Property : 'validFrom',
24 | AllowedExpressions : 'SingleRange' //Other option: SingleValue
25 | },
26 | ],
27 | // RequiredProperties : [
28 | // stringProperty //Search-Term: #RequiredFilter
29 | // ]
30 | },
31 | ) {
32 | validTo @UI.DateTimeStyle : 'short'
33 | };
34 |
35 | annotate service1 with @(
36 | Capabilities.FilterFunctions : [
37 | 'tolower' //Search-Term: #CaseInsensitiveFiltering
38 | ],
39 | );
40 |
41 | annotate service1.ChartDataEntities with @(
42 | //Search-Term: #ChartSection
43 | Aggregation.ApplySupported : {
44 | Transformations : [
45 | 'aggregate',
46 | 'topcount',
47 | 'bottomcount',
48 | 'identity',
49 | 'concat',
50 | 'groupby',
51 | 'filter',
52 | 'expand',
53 | 'top',
54 | 'skip',
55 | 'orderby',
56 | 'search'
57 | ],
58 | Rollup : #None,
59 | PropertyRestrictions : true,
60 | GroupableProperties : [
61 | dimensions,
62 | criticality_code
63 | ],
64 | AggregatableProperties : [
65 | {Property : integerValue},
66 | ],
67 | }
68 | );
69 |
70 | annotate service1.ChartDataEntities with {
71 | //Search-Term: #ChartSection
72 | criticality @(
73 | UI.ValueCriticality : [
74 | {
75 | Value : 0,
76 | Criticality : #Neutral
77 | },
78 | {
79 | Value : 1,
80 | Criticality : #Negative
81 | },
82 | {
83 | Value : 2,
84 | Criticality : #Critical
85 | },
86 | {
87 | Value : 3,
88 | Criticality : #Positive
89 | }
90 | ]
91 | );
92 |
93 | integerValue @(
94 | Measures.ISOCurrency : uom_code,
95 | Core.Immutable : true,
96 | );
97 | };
--------------------------------------------------------------------------------
/app/featureShowcase/field-control.cds:
--------------------------------------------------------------------------------
1 | using service1 from '../../srv/service';
2 |
3 | //
4 | // annotations that control the behavior of fields and actions
5 | //
6 |
7 | annotate service1.RootEntities {
8 | ID @UI.Hidden @readonly @mandatory @UI.ExcludeFromNavigationContext;
9 | stringProperty @Core.Immutable @mandatory @UI.ExcludeFromNavigationContext; //Search-Term: #CreationDialog
10 | uom @UI.Hidden;
11 |
12 | association2one @(
13 | //Search-Term: #Navigation
14 | //Semantic Object annotation in order to show the links to the semantic object apps in the quick view facet
15 | Common.SemanticObject : 'FeatureShowcaseChildEntity2',
16 | Common.SemanticObjectMapping : [
17 | {
18 | // Semantic object mapping is done, to set filter values when navigation to the semantic object map
19 | // No logical sensen behind the connection - just to demonstrate
20 | $Type : 'Common.SemanticObjectMappingType',
21 | LocalProperty : integerValue,
22 | SemanticObjectProperty : 'field3',
23 | },
24 | ],
25 | );
26 |
27 | fieldWithURLtext @UI.HiddenFilter @HTML5.LinkTarget : '_blank'; //Search-Term: #HideFilter, #Link
28 |
29 | /** Search-Term: #FilterDefault
30 | For a default filter value in the list report. Does not support complex values */
31 | //stringProperty @Common.FilterDefaultValue : 'Root entity 4';
32 |
33 | region @UI.HiddenFilter; //Filter not available in the list report
34 | deletePossible @UI.Hidden;
35 | updateHidden @UI.Hidden;
36 | fieldWithURL @UI.Hidden;
37 |
38 | email @mandatory;
39 | };
40 |
41 | annotate service1.RootEntities actions {
42 | //Search-Terms: #SideEffect, #ParameterDefaultValue
43 | changeProgress @(
44 | //Update the UI after action
45 | Common.SideEffects : {
46 | TargetProperties : ['in/integerValue']
47 | },
48 | Core.OperationAvailable: {$edmJson: {$If: [{$Ge: [{$Path: 'in/integerValue'}, 0]}, true, false]}}
49 | )
50 | }
51 |
52 |
53 | annotate service1.ChildEntities1 {
54 | ID @UI.Hidden @readonly @mandatory;
55 | parent @UI.Hidden;
56 | field @Core.Immutable @mandatory;
57 | };
58 |
59 | annotate service1.criticalAction with @(
60 | Common.IsActionCritical : true //Search-Term: #CriticalAction
61 | );
62 |
63 | annotate service1.GrandChildEntities {
64 | ID @UI.Hidden @readonly @mandatory;
65 | parent @UI.Hidden;
66 | };
67 |
68 | annotate service1.ChildEntities2 {
69 | ID @UI.Hidden @readonly @mandatory;
70 | };
71 |
72 | annotate service1.ChartDataEntities {
73 | ID @UI.Hidden @readonly @mandatory;
74 | parent @UI.Hidden @Core.Immutable;
75 |
76 | areaChartDeviationLowerBoundValue @UI.HiddenFilter;
77 | areaChartDeviationUpperBoundValue @UI.HiddenFilter;
78 | areaChartToleranceLowerBoundValue @UI.HiddenFilter;
79 | areaChartToleranceUpperBoundValue @UI.HiddenFilter;
80 | }
--------------------------------------------------------------------------------
/app/featureShowcase/labels.cds:
--------------------------------------------------------------------------------
1 | using { sap.fe.featureShowcase as schema } from '../../db/schema';
2 |
3 | //
4 | // annotations that control rendering of fields and labels
5 | //
6 |
7 | annotate schema.RootEntities with{
8 | childEntities1 @title : '{i18n>childEntities1}';
9 | stringProperty @title : '{i18n>semanticKeyField}';
10 | integerValue @title : '{i18n>integerValue}';
11 | forecastValue @title : '{i18n>forecastValue}';
12 | targetValue @title : '{i18n>targetValue}';
13 | dimensions @title : '{i18n>dimensions}';
14 | starsValue @title : '{i18n>stars}';
15 | isoCurrency @title : '{i18n>currencyForFieldWithPrice}';
16 | fieldWithCriticality @title : '{i18n>fieldWithCriticality}';
17 | contact @title : '{i18n>contact}';
18 | validFrom @title : '{i18n>date}';
19 | validTo @title : '{i18n>dateTo}';
20 | time @title : '{i18n>time}';
21 | timeStamp @title : '{i18n>timeStamp}';
22 |
23 | fieldWithPrice @title : '{i18n>fieldWithPrice}' @(Measures.ISOCurrency: isoCurrency_code ); //Search-Term: #Units
24 | fieldWithUoM @title : '{i18n>fieldWithUoM}' @(Measures.Unit : uom_code); //Search-Term: #Units
25 | imageUrl @title : '{i18n>image}' @UI.IsImageURL; //Displaying the image instead of the link //Search-Term: #Image
26 |
27 | association2one @title : '{i18n>ChildEntity2}' @Common.Text : association2one.stringProperty @Common.TextArrangement : #TextOnly;
28 | criticality_code @title : '{i18n>criticality}' @Common.Text : criticality.name @Common.TextArrangement : #TextFirst; //Search-Term: #DisplayTextAndID
29 | country @title : '{i18n>country}' @Common.Text : country.name @Common.TextArrangement : #TextFirst;
30 |
31 | description @title : '{i18n>description}' @UI.MultiLineText; //Search-Term: #MultiLineText
32 | description_customGrowing @title : '{i18n>description2}' @UI.MultiLineText @UI.Placeholder : 'max.mustermann@sap.com';
33 | region @title : '{i18n>region}' @UI.Placeholder : 'Select a region'; //Search-Term: #Placeholder
34 | email @title : '{i18n>email}' @Communication.IsEmailAddress; //Search-Term: #CommunicationFields
35 | telephone @title : '{i18n>telephone}' @Communication.IsPhoneNumber; //Search-Term: #CommunicationFields
36 | };
37 |
38 | annotate schema.ChildEntities1 with @title : '{i18n>childEntities1}' {
39 | field @title : '{i18n>field}';
40 | booleanProperty @title : '{i18n>booleanProperty}';
41 | fieldWithPerCent @title : '{i18n>fieldWithPerCent}' @(Measures.Unit : '%'); //Search-Term: #Units
42 | criticalityValue @title : '{i18n>criticality}' @Common.Text : criticalityValue.name @Common.TextArrangement : #TextFirst;
43 | };
44 |
45 | annotate schema.GrandChildEntities with @title : '{i18n>grandChildren}' {
46 | field @title : '{i18n>field}'
47 | };
48 |
49 | annotate schema.ChildEntities2 with @title : '{i18n>ChildEntity2}' {
50 | integerProperty @title : '{i18n>integerProperty}';
51 | decimalProperty @title : '{i18n>decimalProperty}';
52 | stringProperty @title : '{i18n>stringProperty}' @UI.MultiLineText; //MultiLineText for Descriptions (line break)
53 | };
54 |
55 | annotate schema.ChildEntities3 with @title : '{i18n>childEntities3}' {
56 | field @title : '{i18n>stringProperty}'
57 | };
58 |
59 | annotate schema.ChartDataEntities with {
60 | integerValue @title : '{i18n>integerValue}';
61 | forecastValue @title : '{i18n>forecastValue}';
62 | targetValue @title : '{i18n>targetValue}';
63 | dimensions @title : '{i18n>dimensions}';
64 | integerValueWithUoM @Measures.Unit : uom_code;
65 | };
66 |
67 | annotate schema.UnitOfMeasureCodeList with {
68 | code @title : '{i18n>unitCode}' @Common.Text : name @Common.TextArrangement : #TextOnly
69 | };
70 |
71 | annotate schema.Contacts with {
72 | ID @title : '{i18n>name}' @Common.Text : name @Common.TextArrangement : #TextOnly
73 | };
74 |
75 |
--------------------------------------------------------------------------------
/app/featureShowcase/layouts_ChartDataEntities.cds:
--------------------------------------------------------------------------------
1 | using service1 as service from '../../srv/service';
2 |
3 | annotate service.ChartDataEntities with @(
4 | UI.LineItem : [
5 | {
6 | $Type : 'UI.DataField',
7 | Value : integerValue,
8 | },
9 | {
10 | $Type : 'UI.DataField',
11 | Value : forecastValue,
12 | },
13 | {
14 | $Type : 'UI.DataField',
15 | Value : targetValue,
16 | },
17 | {
18 | $Type : 'UI.DataField',
19 | Value : dimensions,
20 | },
21 | ],
22 | UI.LineItem.@UI.Criticality : criticality_code,
23 | //Search-Term: #ChartSection
24 | UI.Chart : {
25 | Title : '{i18n>chart}',
26 | ChartType : #Column,
27 | Measures : [maxAmount],
28 | Dimensions : [dimensions],
29 | MeasureAttributes : [
30 | {
31 | $Type : 'UI.ChartMeasureAttributeType',
32 | Measure : maxAmount,
33 | Role : #Axis1
34 | },
35 | ],
36 | DimensionAttributes : [
37 | {
38 | $Type : 'UI.ChartDimensionAttributeType',
39 | Dimension : dimensions,
40 | Role : #Category
41 | },
42 | {
43 | $Type : 'UI.ChartDimensionAttributeType',
44 | Dimension : criticality_code,
45 | Role : #Category
46 | },
47 | ],
48 | Actions : [
49 | {
50 | $Type : 'UI.DataFieldForAction',
51 | Action : 'service1.EntityContainer/unboundAction',
52 | Label : '{i18n>unboundAction}',
53 | },
54 | ]
55 | },
56 | UI.Chart #areaChart : {
57 | //Search-Term: #microChartArea
58 | Title : '{i18n>areaChart}',
59 | Description : '{i18n>ThisIsAMicroChart}',
60 | ChartType : #Area,
61 | Dimensions : [dimensions],
62 | Measures : [integerValue],
63 | MeasureAttributes : [
64 | {
65 | $Type : 'UI.ChartMeasureAttributeType',
66 | Measure : integerValue,
67 | Role : #Axis1,
68 | DataPoint : '@UI.DataPoint#areaChart',
69 | },
70 | ],
71 | },
72 | UI.Chart #lineChart : {
73 | //SearchTerm: #microChartLine
74 | Title : '{i18n>lineChart}',
75 | Description : '{i18n>ThisIsAMicroChart}',
76 | ChartType : #Line,
77 | Measures : [
78 | integerValueWithUoM,
79 | targetValue,
80 | ],
81 | Dimensions : [
82 | dimensions,
83 | dimensions
84 | ],
85 | MeasureAttributes : [
86 | {
87 | $Type : 'UI.ChartMeasureAttributeType',
88 | Measure : integerValueWithUoM,
89 | Role : #Axis2,
90 | DataPoint : '@UI.DataPoint#lineChartWidth',
91 | },
92 | {
93 | $Type : 'UI.ChartMeasureAttributeType',
94 | Measure : targetValue,
95 | Role : #Axis2,
96 | DataPoint : '@UI.DataPoint#lineChartDepth',
97 | },
98 | ],
99 | },
100 | UI.Chart #columnChart : {
101 | //Search-Term: #microChartColumn
102 | Title : '{i18n>columnChart}',
103 | Description : '{i18n>ThisIsAMicroChart}',
104 | ChartType : #Column,
105 | Measures : [integerValue],
106 | Dimensions : [dimensions],
107 | MeasureAttributes : [
108 | {
109 | $Type : 'UI.ChartMeasureAttributeType',
110 | Measure : integerValue,
111 | Role : #Axis1,
112 | DataPoint : '@UI.DataPoint#dataPointForChart',
113 | }
114 | ]
115 | },
116 | UI.Chart #stackedBarChart : {
117 | //Search-Term: #microChartStackedBar
118 | Title : '{i18n>stackedBarChart}',
119 | Description : '{i18n>ThisIsAMicroChart}',
120 | ChartType : #BarStacked,
121 | Measures : [integerValue],
122 | Dimensions : [dimensions],
123 | MeasureAttributes : [
124 | {
125 | $Type : 'UI.ChartMeasureAttributeType',
126 | Measure : integerValue,
127 | Role : #Axis1,
128 | DataPoint : '@UI.DataPoint#dataPointForChart',
129 | }
130 | ]
131 | },
132 | UI.Chart #comparisonChart : {
133 | //Search-Term: #microChartComparision
134 | Title : '{i18n>comparisonChart}',
135 | Description : '{i18n>ThisIsAMicroChart}',
136 | ChartType : #Bar,
137 | Measures : [integerValue],
138 | Dimensions : [dimensions],
139 | MeasureAttributes : [
140 | {
141 | $Type : 'UI.ChartMeasureAttributeType',
142 | Measure : integerValue,
143 | Role : #Axis1,
144 | DataPoint : '@UI.DataPoint#dataPointForChart',
145 | }
146 | ]
147 | },
148 |
149 | );
150 |
151 | annotate service.ChartDataEntities with @(
152 | UI.DataPoint #areaChart : {
153 | //Search-Term: #microChartArea
154 | Value : integerValue,
155 | TargetValue : targetValue,
156 | CriticalityCalculation : {
157 | ImprovementDirection : #Target,
158 | ToleranceRangeLowValue : areaChartToleranceLowerBoundValue,
159 | ToleranceRangeHighValue : areaChartDeviationUpperBoundValue,
160 | DeviationRangeLowValue : areaChartDeviationLowerBoundValue,
161 | DeviationRangeHighValue : areaChartDeviationUpperBoundValue,
162 | },
163 | },
164 | UI.DataPoint #lineChartWidth : {
165 | //Search-Term: #microChartLine
166 | Value : integerValueWithUoM,
167 | Criticality : criticality_code,
168 | },
169 | UI.DataPoint #lineChartDepth : {
170 | //Search-Term: #microChartLine
171 | Value : targetValue,
172 | Criticality : criticality_code,
173 | },
174 | UI.DataPoint #dataPointForChart : {
175 | //Search-Terms: #microChartColumn, #microChartStackedBar, #microChartComparision
176 | Value : integerValue,
177 | Criticality : criticality_code
178 | },
179 | );
180 |
181 | annotate service.ChartDataEntities with @(
182 | //Search-Term: #ChartSection
183 | Analytics.AggregatedProperties : [
184 | {
185 | Name : 'minAmount',
186 | AggregationMethod : 'min',
187 | AggregatableProperty : 'integerValue',
188 | ![@Common.Label] : 'Minimal Net Amount'
189 | },
190 | {
191 | Name : 'maxAmount',
192 | AggregationMethod : 'max',
193 | AggregatableProperty : 'integerValue',
194 | ![@Common.Label] : 'Maximal Net Amount'
195 | },
196 | {
197 | Name : 'avgAmount',
198 | AggregationMethod : 'average',
199 | AggregatableProperty : 'integerValue',
200 | ![@Common.Label] : 'Average Net Amount'
201 | }
202 | ],
203 | );
--------------------------------------------------------------------------------
/app/featureShowcase/layouts_ChildEntities1.cds:
--------------------------------------------------------------------------------
1 | using service1 as service from '../../srv/service';
2 | using service1.GrandChildEntities as grandChildren from './layouts_GrandChildEntities';
3 |
4 | /**
5 | UI.LineItem
6 | */
7 | annotate service.ChildEntities1 with @(
8 | UI.LineItem : [
9 | {
10 | $Type : 'UI.DataField',
11 | Value : field,
12 | },
13 | {
14 | $Type : 'UI.DataField',
15 | Value : fieldWithPerCent,
16 | },
17 | {
18 | $Type : 'UI.DataField',
19 | Value : booleanProperty,
20 | Criticality : criticalityValue_code,
21 | },
22 | ],
23 | );
24 |
25 | /**
26 | UI.HeaderInfo
27 | */
28 | annotate service.ChildEntities1 with @(
29 | UI.HeaderInfo : {
30 | TypeName : '{i18n>childEntities1}',
31 | TypeNamePlural : '{i18n>childEntities1.typeNamePlural}', //Search-Term: #OPTableTitle
32 | Title : {
33 | Value : '{i18n>childEntities1}',
34 | },
35 | Description : {
36 | //Search-Term: #ODataConcat
37 | Value : {$edmJson: {
38 | $Apply : [
39 | 'Using odata.concat - Field: ',
40 | {$Path: 'field'},
41 | ],
42 | $Function : 'odata.concat'
43 | }},
44 | },
45 | ImageUrl : '',
46 | TypeImageUrl : 'sap-icon://blank-tag',
47 | },
48 | );
49 |
50 | /**
51 | UI.HeaderFacets
52 | */
53 | annotate service.ChildEntities1 with @(
54 | UI.HeaderFacets : [
55 | {
56 | $Type : 'UI.ReferenceFacet',
57 | Target : '@UI.DataPoint#fieldWithPercent',
58 | ID : 'FacetWithPercent'
59 | },
60 | ],
61 | );
62 |
63 | /**
64 | UI.Facets
65 | */
66 | annotate service.ChildEntities1 with @(
67 | UI.Facets : [
68 | {
69 | $Type : 'UI.ReferenceFacet',
70 | Target : 'grandChildren/@UI.LineItem',
71 | Label : '{i18n>grandChildren}'
72 | },
73 | ],
74 | );
75 |
76 | /**
77 | UI.DataPoint
78 | */
79 | annotate service.ChildEntities1 with @(
80 | UI.DataPoint #fieldWithPercent : {
81 | Value : fieldWithPerCent,
82 | Title : '{i18n>fieldWithPerCent}',
83 | Visualization : #Number,
84 | },
85 | );
86 |
87 | /**
88 | UI.PresentationVariant
89 | */
90 | annotate service.ChildEntities1 with @(
91 | UI.PresentationVariant : {
92 | SortOrder : [
93 | {
94 | Property : field,
95 | Descending : false,
96 | },
97 | ],
98 | Visualizations : ['@UI.LineItem'],
99 | },
100 | );
101 | /**
102 | UI.SelectionVariant
103 | */
104 | annotate service.ChildEntities1 with @(
105 | //If more then 3 variants are enabled, they are displayed as a dropdown menu
106 | UI.SelectionVariant #variant1 : {
107 | Text : '{i18n>variant1ChildEntities1}',
108 | SelectOptions : [
109 | {
110 | PropertyName : criticalityValue_code,
111 | Ranges : [
112 | {
113 | Sign : #I,
114 | High : 5,
115 | Option : #BT,
116 | Low : 0,
117 | },
118 | ],
119 | },
120 | ],
121 | },
122 | UI.SelectionVariant #variant2 : {
123 | Text : '{i18n>variant2ChildEntities1}',
124 | SelectOptions : [
125 | {
126 | PropertyName : criticalityValue_code,
127 | Ranges : [
128 | {
129 | Sign : #I,
130 | Option : #EQ,
131 | Low : 3,
132 | },
133 | ],
134 | },
135 | ],
136 | },
137 | UI.SelectionVariant #variant3 : {
138 | Text : '{i18n>variant3ChildEntities1}',
139 | SelectOptions : [
140 | {
141 | PropertyName : criticalityValue_code,
142 | Ranges : [
143 | {
144 | Sign : #I,
145 | Option : #EQ,
146 | Low : 2,
147 | },
148 | ],
149 | },
150 | ],
151 | },
152 | UI.SelectionVariant #variant4 : {
153 | Text : '{i18n>variant4ChildEntities1}',
154 | SelectOptions : [
155 | {
156 | PropertyName : criticalityValue_code,
157 | Ranges : [
158 | {
159 | Sign : #I,
160 | Option : #EQ,
161 | Low : 1,
162 | },
163 | ],
164 | },
165 | ],
166 | },
167 | );
--------------------------------------------------------------------------------
/app/featureShowcase/layouts_ChildEntities2.cds:
--------------------------------------------------------------------------------
1 | using service1 as service from '../../srv/service';
2 |
3 | /**
4 | UI.FieldGroup
5 | */
6 | annotate service1.ChildEntities2 with @(
7 | UI.FieldGroup #data : {
8 | Data : [
9 | {Value : stringProperty, @Common.FieldControl : #ReadOnly},
10 | {Value : integerProperty, @Common.FieldControl : #ReadOnly},
11 | {Value : decimalProperty, @Common.FieldControl : #ReadOnly},
12 | {Value : country_code, @Common.FieldControl : #ReadOnly}
13 | ],
14 | },
15 | ) {
16 | country @Common.Text : country.name @Common.TextArrangement #TextFirst;
17 | };
18 |
19 | /**
20 | UI.HeaderInfo
21 | Search-Term: #QuickView
22 | */
23 | annotate service1.ChildEntities2 with @(
24 | //Header Info is also displayed in a quick view facet
25 | UI.HeaderInfo : {
26 | TypeName : '{i18n>ChildEntity2}',
27 | TypeNamePlural : '{i18n>ChildEntity2.typeNamePlural}',
28 | Title : {
29 | $Type : 'UI.DataField',
30 | Value : '{i18n>ChildEntity2}',
31 | },
32 | Description : {
33 | $Type : 'UI.DataField',
34 | Value : stringProperty,
35 | },
36 | ImageUrl : '',
37 | TypeImageUrl : 'sap-icon://blank-tag',
38 | },
39 | );
40 |
41 | /**
42 | UI.QuickViewFacets
43 | Search-Term: #QuickView
44 | */
45 | annotate service1.ChildEntities2 with @(
46 | /*
47 | When a semantic object for the entity is defined, the related apps will be shown
48 | below the quick view facet on the panel.
49 | */
50 | UI.QuickViewFacets : [
51 | {
52 | $Type : 'UI.ReferenceFacet',
53 | Target : '@UI.FieldGroup#data',
54 | Label : '{i18n>ChildEntity2}',
55 | }
56 | ],
57 | );
--------------------------------------------------------------------------------
/app/featureShowcase/layouts_ChildEntities3.cds:
--------------------------------------------------------------------------------
1 | using service1 as service from '../../srv/service';
2 |
3 | /**
4 | UI.LineItem
5 | */
6 | annotate service1.ChildEntities3 with @(
7 | UI.LineItem : [
8 | {
9 | $Type : 'UI.DataField',
10 | Value : field,
11 | },
12 | ],
13 | );
--------------------------------------------------------------------------------
/app/featureShowcase/layouts_GrandChildEntities.cds:
--------------------------------------------------------------------------------
1 | using service1 as service from '../../srv/service';
2 |
3 | /**
4 | UI.LineItem
5 | */
6 | annotate service1.GrandChildEntities with @(
7 | UI.LineItem : [
8 | {
9 | $Type : 'UI.DataField',
10 | Value : field,
11 | },
12 | ],
13 | );
--------------------------------------------------------------------------------
/app/featureShowcase/layouts_RootEntityVariants.cds:
--------------------------------------------------------------------------------
1 | using service1 as service from '../../srv/service';
2 |
3 | /**
4 | UI.LineItem
5 | */
6 | annotate service1.RootEntityVariants with @(
7 | UI.LineItem : [
8 | {
9 | $Type : 'UI.DataField',
10 | Value : stringProperty,
11 | ![@UI.Importance] : #High,
12 | },
13 | {
14 | $Type : 'UI.DataField',
15 | Value : fieldWithPrice,
16 | ![@UI.Importance] : #High,
17 | },
18 | {
19 | $Type : 'UI.DataField',
20 | Value : fieldWithUoM,
21 | ![@UI.Importance] : #High,
22 | },
23 | {
24 | $Type : 'UI.DataField',
25 | Value : fieldWithCriticality,
26 | Criticality : criticality_code,
27 | CriticalityRepresentation : #WithIcon,
28 | ![@UI.Importance] : #High,
29 | },
30 | ],
31 | );
32 |
33 | /**
34 | UI.SelectionVariant
35 | */
36 | annotate service1.RootEntityVariants with @(
37 | UI.SelectionVariant #variant3 : {
38 | Text : '{i18n>variant3RootEntityVariants}',
39 | SelectOptions : [
40 | {
41 | PropertyName : criticality_code,
42 | Ranges : [
43 | {
44 | Sign : #I,
45 | High : 3,
46 | Option : #BT,
47 | Low : 0,
48 | },
49 | ],
50 | },
51 | ],
52 | },
53 | UI.SelectionVariant #variant1 : {
54 | Text : '{i18n>variant1ForRootEntityVariants}',
55 | SelectOptions : [
56 | {
57 | PropertyName : criticality_code,
58 | Ranges : [
59 | {
60 | Sign : #I,
61 | High : 2,
62 | Option : #BT,
63 | Low : 0,
64 | },
65 | ],
66 | },
67 | ],
68 | },
69 | UI.SelectionVariant #variant2 : {
70 | Text : '{i18n>variant2ForRootEntityVariants}',
71 | SelectOptions : [
72 | {
73 | PropertyName : criticality_code,
74 | Ranges : [
75 | {
76 | Sign : #I,
77 | Option : #EQ,
78 | Low : 3,
79 | },
80 | ],
81 | },
82 | ],
83 | },
84 | );
85 |
86 | /**
87 | UI.SelectionPresentationVariant
88 | */
89 | annotate service1.RootEntityVariants with @(
90 | UI.SelectionPresentationVariant #SelectionPresentationVariant : {
91 | Text : '{i18n>SPV for RootEntityVariants}',
92 | SelectionVariant : {
93 | SelectOptions : [
94 | {
95 | PropertyName : criticality_code,
96 | Ranges : [
97 | {
98 | Sign : #I,
99 | High : 2,
100 | Option : #BT,
101 | Low : 0,
102 | },
103 | ],
104 | },
105 | ],
106 | },
107 | PresentationVariant : {
108 | SortOrder : [
109 | {
110 | Property : fieldWithPrice,
111 | Descending : false,
112 | },
113 | ],
114 | },
115 | },
116 | );
117 |
--------------------------------------------------------------------------------
/app/featureShowcase/layouts_contacts.cds:
--------------------------------------------------------------------------------
1 | using service1 as service from '../../srv/service';
2 |
3 | /**
4 | Communication
5 | Search-Term: #Contact
6 | */
7 | annotate service1.Contacts with @(
8 | Communication.Contact : {
9 | fn : name, //full name
10 | kind : #org,
11 | tel : [{
12 | uri : phone,
13 | type : #preferred
14 | }],
15 | adr : [{
16 | building : building,
17 | country : country.name,
18 | street : street,
19 | locality : city,
20 | code : postCode,
21 | type : #preferred
22 | }],
23 | },
24 | //Search-Term: #AddressFacet
25 | Communication.Address : {
26 | building : building,
27 | street : street,
28 | locality : city,
29 | code : postCode,
30 | country : country.name,
31 | label : addressLabel,
32 | type : #preferred,
33 | }
34 | );
--------------------------------------------------------------------------------
/app/featureShowcase/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "featureShowcase",
3 | "version": "0.0.1",
4 | "description": "A SAP Fiori application.",
5 | "keywords": [
6 | "ui5",
7 | "openui5",
8 | "sapui5"
9 | ],
10 | "main": "webapp/index.html",
11 | "scripts": {
12 | "deploy-config": "npx -p @sap/ux-ui5-tooling fiori add deploy-config cf"
13 | },
14 | "devDependencies": {
15 | "@ui5/cli": "^2.11.1",
16 | "@ui5/fs": "^2.0.6",
17 | "@ui5/logger": "^2.0.1",
18 | "@sap/ux-ui5-tooling": "1",
19 | "rimraf": "3.0.2",
20 | "@sap/ux-specification": "latest"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/featureShowcase/ui5.yaml:
--------------------------------------------------------------------------------
1 | specVersion: '2.4'
2 | metadata:
3 | name: 'featureShowcase'
4 | type: application
5 | server:
6 | customMiddleware:
7 | - name: fiori-tools-proxy
8 | afterMiddleware: compression
9 | configuration:
10 | ignoreCertError: false # If set to true, certificate errors will be ignored. E.g. self-signed certificates will be accepted
11 | backend:
12 | - path: /srv1
13 | url: http://localhost:4004
14 | ui5:
15 | path:
16 | - /resources
17 | - /test-resources
18 | url: https://ui5.sap.com
19 | version: # The UI5 version, for instance, 1.78.1. Empty means latest version
20 | - name: fiori-tools-appreload
21 | afterMiddleware: compression
22 | configuration:
23 | port: 35729
24 | path: webapp
25 |
--------------------------------------------------------------------------------
/app/featureShowcase/value-helps.cds:
--------------------------------------------------------------------------------
1 | using { sap.fe.featureShowcase as schema } from '../../db/schema';
2 |
3 | //
4 | // annotations for value helps
5 | // Search-Term: #ValueHelps
6 | //
7 |
8 | annotate schema.RootEntities with{
9 | uom @Common.ValueListWithFixedValues; //Instead of dialog box, the value help is a dropdown
10 | criticality_code @(Common : {
11 | ValueListWithFixedValues: true,
12 | // Search-Term: #RadioButtons | Render Value help with radio buttons
13 | ValueListWithFixedValues.@Common.ValueListShowValuesImmediately,
14 | ValueList : {
15 | Label : '{i18n>criticality}',
16 | CollectionPath : 'Criticality',
17 | Parameters : [
18 | {
19 | $Type : 'Common.ValueListParameterInOut',
20 | ValueListProperty : 'code',
21 | LocalDataProperty : criticality_code
22 | },
23 | ]
24 | }
25 | });
26 |
27 | //To have a Value help when editing and to show the name instead of the UUID
28 | contact @(Common : {
29 | Text : contact.name,
30 | TextArrangement : #TextOnly,
31 | ValueList : {
32 | Label : '{i18n>customer}', //Title of the value help dialog
33 | CollectionPath : 'Contacts', //Entities of the value help. Refers to an entity name from the CAP service
34 | Parameters : [
35 | {
36 | $Type : 'Common.ValueListParameterInOut',
37 | ValueListProperty : 'ID', //Binding between ID and contact_ID, that everything works
38 | LocalDataProperty : contact_ID
39 | },
40 | {
41 | $Type : 'Common.ValueListParameterDisplayOnly', //Displays additional information from the entity set of the value help
42 | ValueListProperty : 'country_code',
43 | },
44 | {
45 | $Type : 'Common.ValueListParameterDisplayOnly',
46 | ValueListProperty : 'city',
47 | }
48 |
49 | ]
50 | }
51 | });
52 | association2one @(Common : {
53 | ValueListWithFixedValues: true,
54 | ValueList : {
55 | Label : '{i18n>ChildEntity2}',
56 | CollectionPath : 'ChildEntities2',
57 | Parameters : [
58 | {
59 | $Type : 'Common.ValueListParameterInOut',
60 | ValueListProperty : 'ID',
61 | LocalDataProperty : association2one_ID
62 | },
63 | {
64 | $Type : 'Common.ValueListParameterDisplayOnly',
65 | ValueListProperty : 'stringProperty',
66 | },
67 | {
68 | $Type : 'Common.ValueListParameterDisplayOnly',
69 | ValueListProperty : 'integerProperty',
70 | },
71 | {
72 | $Type : 'Common.ValueListParameterDisplayOnly',
73 | ValueListProperty : 'decimalProperty',
74 | },
75 | {
76 | $Type : 'Common.ValueListParameterDisplayOnly',
77 | ValueListProperty : 'country_code',
78 | }
79 |
80 | ]
81 | }
82 | });
83 | //Search-Term: #DependentFilter
84 | region @(Common : {
85 | Text : region.name,
86 | TextArrangement : #TextFirst,
87 | ValueListWithFixedValues: true,
88 | ValueList : {
89 | Label : '{i18n>Region}',
90 | CollectionPath : 'Regions',
91 | Parameters : [
92 | {
93 | $Type : 'Common.ValueListParameterInOut',
94 | ValueListProperty : 'code',
95 | LocalDataProperty : region_code
96 | },
97 | {
98 | $Type : 'Common.ValueListParameterOut',
99 | ValueListProperty : 'name',
100 | LocalDataProperty : region.name,
101 | },
102 | //To only show the connected values
103 | {
104 | $Type : 'Common.ValueListParameterFilterOnly',
105 | ValueListProperty : 'country_code',
106 | },
107 | {
108 | $Type : 'Common.ValueListParameterIn', //Input parameter used for filtering
109 | LocalDataProperty : country_code,
110 | ValueListProperty : 'country_code',
111 | },
112 |
113 | ]
114 | }
115 | });
116 | };
117 |
118 | annotate schema.AssignedRegions with {
119 | //Search-Term: #MultiValueWithDependentFilter
120 | region @(Common : {
121 | Text : region.name,
122 | TextArrangement : #TextFirst,
123 | ValueListWithFixedValues: true,
124 | ValueList : {
125 | Label : '{i18n>Region}',
126 | CollectionPath : 'Regions',
127 | Parameters : [
128 | {
129 | $Type : 'Common.ValueListParameterInOut',
130 | ValueListProperty : 'code',
131 | LocalDataProperty : region_code
132 | },
133 | {
134 | $Type : 'Common.ValueListParameterIn', //Input parameter used for filtering
135 | LocalDataProperty : root.country_code,
136 | ValueListProperty : 'country_code',
137 | },
138 |
139 | ]
140 | }
141 | });
142 | }
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/Component.js:
--------------------------------------------------------------------------------
1 | sap.ui.define(['sap/fe/core/AppComponent'], function(AppComponent) {
2 | 'use strict';
3 |
4 | return AppComponent.extend("sap.fe.featureShowcase.mainApp.Component", {
5 | metadata: {
6 | manifest: "json"
7 | }
8 | });
9 | });
10 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomActions.js:
--------------------------------------------------------------------------------
1 | sap.ui.define([
2 | "sap/m/MessageBox",
3 | "sap/ui/core/library"
4 | ], function(MessageBox, coreLibrary) {
5 | "use strict";
6 | //Search-Term: CustomActions
7 | return {
8 | messageBox: function() {
9 | MessageBox.alert("Button pressed");
10 | },
11 | enabled : function() {
12 | return true;
13 | },
14 | enabledForSingleSelect: function(oBindingContext, aSelectedContexts) {
15 | if (aSelectedContexts && aSelectedContexts.length === 1) {
16 | return true;
17 | }
18 | return false;
19 | }
20 | };
21 | });
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomColumn-DateRangeLR.fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomColumn-ProcessFlow.fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomController.js:
--------------------------------------------------------------------------------
1 | sap.ui.define([
2 | "sap/ui/core/library"
3 | ], function(coreLibrary) {
4 | "use strict";
5 |
6 | return {
7 | //Search-Term: #EditFlowAPI
8 | onChangeCriticality: function(oEvent) {
9 | let sActionName = "service1.changeCriticality";
10 | let mParameters = {
11 | contexts: oEvent.getSource().getBindingContext(),
12 | model: oEvent.getSource().getModel(),
13 | label: 'Confirm',
14 | invocationGrouping: true
15 | };
16 | this.editFlow.invokeAction(sActionName, mParameters); //SAP Fiori elements EditFlow API
17 | },
18 |
19 | //Function for Micro Process Flow in Custom Column
20 | itemPressColumn: function(oEvent) {
21 | const oPopover = itemPress(oEvent);
22 | const thisHelp = this;
23 | const closeSideContent = function() {
24 | thisHelp.showSideContent("childEntities1Section",false);
25 | };
26 |
27 | oPopover.attachBeforeClose(closeSideContent);
28 | this.showSideContent("childEntities1Section",true);
29 | oPopover.openBy(oEvent.getParameter("item"));
30 | },
31 | //Function for Micro Process Flow in Custom Header Facet
32 | itemPressHeader: function(oEvent) {
33 | const oPopover = itemPress(oEvent);
34 | oPopover.openBy(oEvent.getParameter("item"));
35 | }
36 | };
37 |
38 | function itemPress(oEvent) {
39 | const oItem = oEvent.getSource(),
40 | aCustomData = oItem.getCustomData(),
41 | sTitle = aCustomData[0].getValue(),
42 | sIcon = aCustomData[1].getValue(),
43 | sSubTitle = aCustomData[2].getValue(),
44 | sDescription = aCustomData[3].getValue();
45 |
46 | let colorState;
47 | switch (oItem.getState()) {
48 | case "Error" : colorState= coreLibrary.IconColor.Negative; break;
49 | case "Warning" : colorState= coreLibrary.IconColor.Critical; break;
50 | case "Success" : colorState= coreLibrary.IconColor.Positive; break;
51 | }
52 | const oPopover = new sap.m.Popover({
53 | contentWidth: "300px",
54 | title: "Order status",
55 | content: [
56 | new sap.m.HBox({
57 | items: [
58 | new sap.ui.core.Icon({
59 | src: sIcon,
60 | color: colorState
61 | }).addStyleClass("sapUiSmallMarginBegin sapUiSmallMarginEnd"),
62 | new sap.m.FlexBox({
63 | width: "100%",
64 | renderType: "Bare",
65 | direction: "Column",
66 | items: [new sap.m.Title({
67 | level: sap.ui.core.TitleLevel.H1,
68 | text: sTitle
69 | }), new sap.m.Text({
70 | text: sSubTitle
71 | }).addStyleClass("sapUiSmallMarginBottom sapUiSmallMarginTop"),
72 | new sap.m.Text({
73 | text: sDescription
74 | })
75 | ]
76 | })
77 | ]
78 | }).addStyleClass("sapUiTinyMargin")
79 | ],
80 | footer: [
81 | new sap.m.Toolbar({
82 | content: [
83 | new sap.m.ToolbarSpacer(),
84 | new sap.m.Button({
85 | text: "Close",
86 | press: function() {
87 | oPopover.close();
88 | }
89 | })]
90 | })
91 | ]
92 | });
93 | return oPopover;
94 | }
95 | });
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomField-DatePicker.fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomField-DateRange.fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomFilter-Rating.fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomFilter-Rating.js:
--------------------------------------------------------------------------------
1 | sap.ui.define(["sap/ui/model/Filter", "sap/ui/model/FilterOperator"], function(Filter, FilterOperator) {
2 | "use strict";
3 |
4 | return {
5 | //Search-Term: "customFilter"
6 | onReset: function(oEvent) {
7 | this.setFilterValues("starsValue");
8 | }
9 | };
10 | });
11 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomHeaderFacet-Edit.fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomHeaderFacet-ProcessFlow.fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomSection.fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/CustomSubSection.fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/SideContent.fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/SideContent.js:
--------------------------------------------------------------------------------
1 | sap.ui.define([], function() {
2 | "use strict";
3 | //Search-Term: #SideContent
4 | return {
5 | toggleSideContent: function(oBindingContext) {
6 | this.showSideContent("customSectionQualifier");
7 | },
8 | toggleSideContentItem1: function(oContextInfo) {
9 | this.showSideContent("childEntities1Section");
10 | }
11 | };
12 | });
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/SideContentTable.fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/controller/CustomObjectPage.controller.js:
--------------------------------------------------------------------------------
1 | sap.ui.define([
2 | "sap/fe/core/PageController",
3 | "sap/ui/model/json/JSONModel",
4 | "sap/suite/ui/microchart/ComparisonMicroChart",
5 | "sap/suite/ui/microchart/ComparisonMicroChartData"
6 | ], function (PageController, JSONModel, ComparisonMicroChart, ComparisonMicroChartData) {
7 | return PageController.extend("sap.fe.featureShowcase.mainApp.ext.controller.CustomObjectPage", {
8 | onInit: function () {
9 | PageController.prototype.onInit.apply(this);
10 |
11 | var oModel = new JSONModel(sap.ui.require.toUrl("sap/fe/featureShowcase/mainApp/ext/controller/data.json"));
12 | var that = this;
13 |
14 | this.getView().setModel(oModel, 'graph');
15 |
16 | this._oModelSettings = new JSONModel({
17 | source: "atomicCircle",
18 | orientation: "LeftRight",
19 | arrowPosition: "End",
20 | arrowOrientation: "ParentOf",
21 | nodeSpacing: 55,
22 | mergeEdges: false
23 | });
24 |
25 | this.getView().setModel(this._oModelSettings, "settings");
26 |
27 | var fnSetContent = function (oNode) {
28 | oNode.setContent(new ComparisonMicroChart({
29 | size: "M",
30 | scale: "M",
31 | data: [
32 | new ComparisonMicroChartData({
33 | title: "USA",
34 | value: Math.floor(Math.random() * 60),
35 | color: "Neutral"
36 | }),
37 | new ComparisonMicroChartData({
38 | title: "EMEA",
39 | value: Math.floor(Math.random() * 60),
40 | color: "Error"
41 | }),
42 | new ComparisonMicroChartData({
43 | title: "APAC",
44 | value: -20,
45 | color: "Good"
46 | }),
47 | new ComparisonMicroChartData({
48 | title: "LTA",
49 | value: Math.floor(Math.random() * 60) * -1,
50 | color: "Critical"
51 | }),
52 | new ComparisonMicroChartData({
53 | title: "ALPS",
54 | value: Math.floor(Math.random() * 20),
55 | color: "Good"
56 | })
57 | ]
58 | }).addStyleClass("sapUiSmallMargin"));
59 |
60 | };
61 |
62 | oModel.attachRequestCompleted(function (oData) {
63 | that.byId("graph").getNodes().forEach(function (oNode) {
64 | if (oNode.getKey() === "21" || oNode.getKey() === "18") {
65 | fnSetContent(oNode);
66 | }
67 | });
68 | });
69 | },
70 | onAfterRendering: function () {
71 | this.byId("graphWrapper").$().css("overflow-y", "auto");
72 | },
73 | mergeChanged: function (oEvent) {
74 | this._oModelSettings.setProperty("/mergeEdges", !!Number(oEvent.getSource().getProperty("selectedKey")));
75 | },
76 | spacingChanged: function (oEvent) {
77 | this._oModelSettings.setProperty("/nodeSpacing", Number(oEvent.getSource().getProperty("selectedKey")));
78 | }
79 | });
80 | });
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/controller/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "nodeBoxWidth": 200,
3 | "nodes": [
4 | {
5 | "key": 0,
6 | "title": "Amber",
7 | "icon": "sap-icon://checklist",
8 | "status": "Error",
9 | "group": "T"
10 | },
11 | {
12 | "key": 1,
13 | "title": "Beads",
14 | "icon": "sap-icon://bubble-chart"
15 | },
16 | {
17 | "key": 2,
18 | "title": "Bow & arrows",
19 | "icon": "sap-icon://back-to-top"
20 | },
21 | {
22 | "key": 3,
23 | "title": "Broth",
24 | "icon": "sap-icon://competitor",
25 | "shape": "Box",
26 | "status": "Success",
27 | "attributes": [
28 | {
29 | "icon": "sap-icon://accept",
30 | "label": "Energy",
31 | "value": "780 kcal",
32 | "status": "AttributeLabel"
33 | },
34 | {
35 | "label": "Protein",
36 | "value": "49 g"
37 | },
38 | {
39 | "label": "Carb",
40 | "value": "52 g"
41 | },
42 | {
43 | "label": "Fat",
44 | "value": "11 g"
45 | }
46 | ]
47 | },
48 | {
49 | "key": 4,
50 | "title": "Bucket",
51 | "icon": "sap-icon://pipeline-analysis",
52 | "group": "V"
53 | },
54 | {
55 | "key": 5,
56 | "title": "Coat",
57 | "icon": "sap-icon://wounds-doc"
58 | },
59 | {
60 | "key": 6,
61 | "title": "Fish bone",
62 | "icon": "sap-icon://close-command-field",
63 | "group": "H"
64 | },
65 | {
66 | "key": 7,
67 | "title": "Flax",
68 | "icon": "sap-icon://sort-descending",
69 | "group": "F"
70 | },
71 | {
72 | "key": 8,
73 | "title": "Fur",
74 | "icon": "sap-icon://key-user-settings",
75 | "status": "Warning"
76 | },
77 | {
78 | "key": 9,
79 | "title": "Game",
80 | "icon": "sap-icon://laptop",
81 | "status": "Warning"
82 | },
83 | {
84 | "key": 10,
85 | "title": "Hemp",
86 | "icon": "sap-icon://radar-chart",
87 | "group": "F",
88 | "status": "Success"
89 | },
90 | {
91 | "key": 11,
92 | "title": "Husk",
93 | "icon": "sap-icon://product",
94 | "group": "V",
95 | "status": "Warning"
96 | },
97 | {
98 | "key": 12,
99 | "title": "Charcoal",
100 | "icon": "sap-icon://vertical-stacked-chart"
101 | },
102 | {
103 | "key": 13,
104 | "title": "Iron ingot",
105 | "icon": "sap-icon://value-help"
106 | },
107 | {
108 | "key": 14,
109 | "title": "Iron ore",
110 | "icon": "sap-icon://technical-object",
111 | "status": "Error",
112 | "group": "M"
113 | },
114 | {
115 | "key": 15,
116 | "title": "Kettle",
117 | "icon": "sap-icon://measuring-point"
118 | },
119 | {
120 | "key": 16,
121 | "title": "Leather",
122 | "icon": "sap-icon://map-3",
123 | "group": "H"
124 | },
125 | {
126 | "key": 17,
127 | "title": "Linen",
128 | "icon": "sap-icon://open-folder"
129 | },
130 | {
131 | "key": 18,
132 | "title": "Mud",
133 | "headerCheckbox": "Unchecked",
134 | "icon": "sap-icon://pool",
135 | "group": "V",
136 | "status": "Success",
137 | "shape": "Box",
138 | "maxWidth": 400
139 | },
140 | {
141 | "key": 19,
142 | "title": "Needle",
143 | "icon": "sap-icon://pushpin-off"
144 | },
145 | {
146 | "key": 20,
147 | "title": "Oxen fat",
148 | "icon": "sap-icon://pharmacy",
149 | "status": "Error"
150 | },
151 | {
152 | "key": 21,
153 | "title": "Pile & clay",
154 | "headerCheckbox": "Checked",
155 | "icon": "sap-icon://mileage",
156 | "group": "V",
157 | "status": "Dashed",
158 | "shape": "Box",
159 | "maxWidth": 400
160 | },
161 | {
162 | "key": 22,
163 | "title": "Rabbit",
164 | "icon": "sap-icon://Netweaver-business-client",
165 | "group": "H"
166 | },
167 | {
168 | "key": 23,
169 | "title": "Sickle",
170 | "icon": "sap-icon://restart",
171 | "group": "F"
172 | },
173 | {
174 | "key": 24,
175 | "title": "Sinews",
176 | "icon": "sap-icon://repost",
177 | "group": "H",
178 | "status": "Success"
179 | },
180 | {
181 | "key": 25,
182 | "title": "Smelter",
183 | "icon": "sap-icon://basket"
184 | },
185 | {
186 | "key": 26,
187 | "title": "Stones",
188 | "icon": "sap-icon://bbyd-dashboard",
189 | "group": "V",
190 | "status": "Success"
191 | },
192 | {
193 | "key": 27,
194 | "title": "Timber",
195 | "icon": "sap-icon://crossed-line-chart",
196 | "group": "F",
197 | "status": "Success"
198 | },
199 | {
200 | "key": 28,
201 | "title": "Trail",
202 | "icon": "sap-icon://horizontal-grip",
203 | "group": "H",
204 | "status": "Success"
205 | },
206 | {
207 | "key": 29,
208 | "title": "Trap",
209 | "icon": "sap-icon://flag",
210 | "group": "H"
211 | },
212 | {
213 | "key": 30,
214 | "title": "Trout",
215 | "icon": "sap-icon://attachment",
216 | "group": "H",
217 | "status": "Warning"
218 | },
219 | {
220 | "key": 31,
221 | "title": "Vegetable",
222 | "icon": "sap-icon://nutrition-activity",
223 | "group": "F",
224 | "status": "Warning"
225 | },
226 | {
227 | "key": 32,
228 | "title": "Water",
229 | "icon": "sap-icon://lab",
230 | "status": "Success"
231 | },
232 | {
233 | "key": 33,
234 | "title": "Whetstone",
235 | "icon": "sap-icon://measure",
236 | "status": "Success",
237 | "group": "T"
238 | },
239 | {
240 | "key": 34,
241 | "title": "Winter coat",
242 | "headerCheckbox": "Unchecked",
243 | "icon": "sap-icon://heating-cooling",
244 | "shape": "Box",
245 | "status": "Warning",
246 | "attributes": [
247 | {
248 | "label": "Comfort",
249 | "value": "-10° C"
250 | },
251 | {
252 | "label": "Extreme",
253 | "value": "-25° C"
254 | },
255 | {
256 | "label": "Weight",
257 | "value": "6.25 kg"
258 | }
259 | ]
260 | },
261 | {
262 | "key": 35,
263 | "title": "Wood",
264 | "icon": "sap-icon://e-care",
265 | "group": "V",
266 | "status": "Success"
267 | }
268 | ],
269 | "lines": [
270 | {
271 | "from": 0,
272 | "to": 1
273 | },
274 | {
275 | "from": 1,
276 | "to": 5
277 | },
278 | {
279 | "from": 2,
280 | "to": 9
281 | },
282 | {
283 | "from": 4,
284 | "to": 18,
285 | "status": "LineBorderStatus"
286 | },
287 | {
288 | "from": 5,
289 | "to": 34
290 | },
291 | {
292 | "from": 6,
293 | "to": 19
294 | },
295 | {
296 | "from": 7,
297 | "to": 17
298 | },
299 | {
300 | "from": 8,
301 | "to": 34
302 | },
303 | {
304 | "from": 9,
305 | "to": 3
306 | },
307 | {
308 | "from": 10,
309 | "to": 2
310 | },
311 | {
312 | "from": 11,
313 | "to": 4
314 | },
315 | {
316 | "from": 12,
317 | "to": 13
318 | },
319 | {
320 | "from": 13,
321 | "to": 15
322 | },
323 | {
324 | "from": 14,
325 | "to": 13
326 | },
327 | {
328 | "from": 15,
329 | "to": 3
330 | },
331 | {
332 | "from": 16,
333 | "to": 5
334 | },
335 | {
336 | "from": 17,
337 | "to": 5
338 | },
339 | {
340 | "from": 18,
341 | "to": 25
342 | },
343 | {
344 | "from": 19,
345 | "to": 5
346 | },
347 | {
348 | "from": 20,
349 | "to": 34
350 | },
351 | {
352 | "from": 21,
353 | "to": 12
354 | },
355 | {
356 | "from": 22,
357 | "to": 16
358 | },
359 | {
360 | "from": 23,
361 | "to": 7
362 | },
363 | {
364 | "from": 24,
365 | "to": 29
366 | },
367 | {
368 | "from": 25,
369 | "to": 13
370 | },
371 | {
372 | "from": 26,
373 | "to": 25
374 | },
375 | {
376 | "from": 27,
377 | "to": 23
378 | },
379 | {
380 | "from": 28,
381 | "to": 22
382 | },
383 | {
384 | "from": 29,
385 | "to": 22
386 | },
387 | {
388 | "from": 30,
389 | "to": 6
390 | },
391 | {
392 | "from": 31,
393 | "to": 3
394 | },
395 | {
396 | "from": 32,
397 | "to": 3
398 | },
399 | {
400 | "from": 33,
401 | "to": 1
402 | },
403 | {
404 | "from": 35,
405 | "to": 2
406 | }
407 | ],
408 | "groups": [
409 | {
410 | "key": "F",
411 | "title": "Farmer"
412 | },
413 | {
414 | "key": "H",
415 | "title": "Hunter"
416 | },
417 | {
418 | "key": "M",
419 | "title": "Miner",
420 | "headerCheckboxState" : "Unchecked"
421 | },
422 | {
423 | "key": "V",
424 | "title": "Villager",
425 | "headerCheckboxState" : "Checked",
426 | "status": "GroupCustomStatus"
427 | },
428 | {
429 | "key": "T",
430 | "title": "Trader"
431 | }
432 | ]
433 | }
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/ext/view/CustomObjectPage.view.xml:
--------------------------------------------------------------------------------
1 |
10 |
12 |
13 |
14 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
70 |
71 |
72 |
73 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
85 |
86 |
87 |
96 |
97 |
103 |
104 |
105 |
106 |
107 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/i18n/customI18N.properties:
--------------------------------------------------------------------------------
1 | ## Search-Term: "enhanceI18n"
2 | C_COMMON_ACTION_PARAMETER_DIALOG_CANCEL=Custom cancel text
3 | C_OPERATIONS_ACTION_CONFIRM_MESSAGE|RootEntities|criticalAction=Custom text for the critical action message
4 | C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_OBJECTTITLE_SINGULAR|RootEntities=Custom text for the delete RootEntities message
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/i18n/customI18N_en.properties:
--------------------------------------------------------------------------------
1 | C_COMMON_ACTION_PARAMETER_DIALOG_CANCEL=Custom cancel text
2 | C_OPERATIONS_ACTION_CONFIRM_MESSAGE|RootEntities|criticalAction=Custom text for the critical action message
3 | C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_OBJECTTITLE_SINGULAR|RootEntities=Custom text for the delete RootEntities message
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/i18n/customI18N_en_US.properties:
--------------------------------------------------------------------------------
1 | C_COMMON_ACTION_PARAMETER_DIALOG_CANCEL=Custom cancel text
2 | C_OPERATIONS_ACTION_CONFIRM_MESSAGE|RootEntities|criticalAction=Custom text for the critical action message
3 | C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_OBJECTTITLE_SINGULAR|RootEntities=Custom text for the delete RootEntities message
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/i18n/i18n.properties:
--------------------------------------------------------------------------------
1 | # This is the resource bundle for featureShowcase
2 |
3 | #Texts for manifest.json
4 |
5 | #XTIT: Application name
6 | appTitle=SAP Fiori elements feature showcase
7 |
8 | #YDES: Application description
9 | appDescription=A SAP Fiori application.
10 |
11 | NEW_OBJECT=My custom Title
12 |
13 | appSubTitle=Custom variant name
14 |
15 | RootEntities=Root entity
16 | RootEntities.typeNamePlural=Root entities
17 |
18 | location=Location
19 | integerValue=Integer value
20 | targetValue=Target value
21 | forecastValue=Forecast value
22 | dimensions=Dimension
23 | field=Field
24 | contact=Contact
25 |
26 | sumIntegerValue=Sum of integer values
27 | sumTargetValue=Sum of target values
28 |
29 | connectedField=Connected fields
30 |
31 | changeCriticality=Change Criticality (Bound)
32 | unboundAction=Show input (Unbound)
33 | subSection=Subsection
34 | customSubSection=Custom subsection
35 | customSection=Custom section
36 | customHeaderFacet=Custom RootEntities facet
37 | customColumn=Custom column
38 | customFilter=Rating filter
39 |
40 | inboundNavigation=IBN
41 | formAction=Action on form
42 | formActionEmphasized=Emphasized action on form
43 |
44 | ToggleSideContent=Toggle side content
45 | CustomActionOPTableToolbar=Custom action
46 | CustomActionOPHeader=Custom action
47 | CustomActionOPFooter=Custom action
48 | CustomActionSection=Custom action
49 | CustomActionLRGlobal=Custom action
50 | CustomActionLR=Custom action
51 | validityPeriodLR=Custom column
52 | validityPeriodOP=Custom field
53 |
54 | generalData=General data
55 | address=Address
56 | plainText=Plain text
57 | ratingIndicator=Rating indicator
58 | progressIndicator=Progress indicator
59 | areaChart=Area micro chart
60 | lineChart=Line micro chart
61 | columnChart=Column micro chart
62 | stackedBarChart=Stacked bar micro chart
63 | comparisonChart=Comparison micro chart
64 | bulletChart=Bullet micro chart
65 | radialChart=Radial micro chart
66 | ThisIsAMicroChart=This is a micro chart
67 |
68 | childEntities1=Child entity 1 (1..n)
69 | childEntities1.typeNamePlural=Child 1 entities
70 | ChildEntity2=Association (1..1)
71 | ChildEntity2.typeNamePlural=Association entities
72 | childEntities3=Child entities for custom object page (1..n)
73 | chartEntities=Child entities for chart (1..n)
74 | grandChildren=Grand child entities (1..n)
75 | chart=Chart
76 |
77 | chartDataCollection=Micro chart data (collection facet)
78 | chartData=Chart data
79 | advancedChartData=Calculated values
80 |
81 | collectionSection=Collection facet
82 | showWhenInEdit=Section visible in edit
83 | MenuButton=Menu Button
84 |
85 | image=Image
86 | fieldWithPrice=Property with currency
87 | fieldWithUoM=Property with unit
88 | fieldWithCriticality=Property with criticality
89 | fieldWithPerCent=Percentage property
90 | fieldWithToolTip=Field with tool tip
91 | adminData=Admin data (field group)
92 | dataFieldWithURL=URL property
93 | contactQuickView=Contact with quick view
94 |
95 | stringProperty=String property
96 | integerProperty=Integer property
97 | decimalProperty=Decimal property
98 | booleanProperty=Boolean property
99 |
100 | variant1ChildEntities1=SelectionVariant (All entities)
101 | variant2ChildEntities1=SelectionVariant (Positive criticality)
102 | variant3ChildEntities1=SelectionVariant (Negative criticality)
103 | variant4ChildEntities1=SelectionVariant (Critical criticality)
104 |
105 | newProgress=New value for progress
106 | newCriticality=New value for criticality
107 | inputValue=Input value
108 |
109 | SVariant1=SelectionVariant (Criticality between 0 and 2)
110 | SVariant2=SelectionVariant (Positive criticality)
111 | SelectionPresentationVariant=SelectionPresentationVariant (Criticality larger 0)
112 |
113 | variant3RootEntityVariants=View with other entity set (Criticality between 0 and 3)
114 | variant1ForRootEntityVariants=SelectionVariant (Criticality between 0 and 2)
115 | variant2ForRootEntityVariants=SelectionVariant (Positive criticality)
116 |
117 | semanticKeyField=Field with semantic key
118 | locationSubSection=Fields depending on each other
119 | description=Description
120 | communication=Communication
121 | email=E-Mail
122 | telephone=Telephone
123 |
124 | timeAndDate=Time and Date
125 | date=Date
126 | dateTo=To Date
127 | time=Time
128 | timeStamp=Time stamp
129 |
130 | macroField=Macro field
131 | resetEntities=Reset all data
132 | criticalAction=Critical action
133 | country=Country
134 | criticality=Criticality
135 | fieldWithURL=URL
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/i18n/i18n_en.properties:
--------------------------------------------------------------------------------
1 | # This is the resource bundle for featureShowcase
2 |
3 | #Texts for manifest.json
4 |
5 | #XTIT: Application name
6 | appTitle=SAP Fiori elements feature showcase
7 |
8 | #YDES: Application description
9 | appDescription=A SAP Fiori application.
10 |
11 | appSubTitle=Custom variant name
12 |
13 | location=Location
14 | integerValue=Integer value
15 | field=Field
16 |
17 | customSubSection=custom subsection
18 | CustomSection=custom section
19 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/i18n/i18n_en_US.properties:
--------------------------------------------------------------------------------
1 | # This is the resource bundle for featureShowcase
2 |
3 | #Texts for manifest.json
4 |
5 | #XTIT: Application name
6 | appTitle=SAP Fiori elements feature showcase
7 |
8 | #YDES: Application description
9 | appDescription=A SAP Fiori application.
10 |
11 | appSubTitle=Custom variant name
12 |
13 | location=Location
14 | integerValue=Integer value
15 | field=Field
16 |
17 | customSubSection=Custom subsection
18 | CustomSection=Custom section
19 |
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "_version": "1.32.0",
3 | "sap.app": {
4 | "id": "sap.fe.featureShowcase.mainApp",
5 | "type": "application",
6 | "i18n": "i18n/i18n.properties",
7 | "applicationVersion": {
8 | "version": "1.0.0"
9 | },
10 | "title": "{{appTitle}}",
11 | "description": "{{appDescription}}",
12 | "subTitle": "{{appSubTitle}}",
13 | "dataSources": {
14 | "mainService": {
15 | "uri": "/srv1/",
16 | "type": "OData",
17 | "settings": {
18 | "odataVersion": "4.0"
19 | }
20 | }
21 | },
22 | "offline": false,
23 | "resources": "resources.json",
24 | "sourceTemplate": {
25 | "id": "ui5template.fiorielements.v4.lrop",
26 | "version": "1.0.0"
27 | },
28 | "crossNavigation": {
29 | "inbounds": {
30 | "feature-showcase": {
31 | "signature": {
32 | "parameters": {},
33 | "additionalParameters": "allowed"
34 | },
35 | "semanticObject": "FeatureShowcase",
36 | "action": "manage",
37 | "title": "Feature Showcase List Report and Object Page",
38 | "subTitle": "SAP Fiori elements V4 CAP"
39 | }
40 | },
41 | "outbounds": {
42 | "ExternalNavigation": {
43 | "semanticObject": "FeatureShowcaseChildEntity2",
44 | "action": "manage"
45 | }
46 | }
47 | }
48 | },
49 | "sap.ui": {
50 | "technology": "UI5",
51 | "icons": {
52 | "icon": "",
53 | "favIcon": "",
54 | "phone": "",
55 | "phone@2": "",
56 | "tablet": "",
57 | "tablet@2": ""
58 | },
59 | "deviceTypes": {
60 | "desktop": true,
61 | "tablet": true,
62 | "phone": true
63 | }
64 | },
65 | "sap.ui5": {
66 | "resources": {
67 | "js": [],
68 | "css": []
69 | },
70 | "dependencies": {
71 | "minUI5Version": "1.93.0",
72 | "libs": {
73 | "sap.ui.core": {},
74 | "sap.fe.templates": {}
75 | }
76 | },
77 | "models": {
78 | "i18n": {
79 | "type": "sap.ui.model.resource.ResourceModel",
80 | "uri": "i18n/i18n.properties"
81 | },
82 | "": {
83 | "dataSource": "mainService",
84 | "preload": true,
85 | "settings": {
86 | "synchronizationMode": "None",
87 | "operationMode": "Server",
88 | "autoExpandSelect": true,
89 | "earlyRequests": true
90 | }
91 | }
92 | },
93 | "routing": {
94 | "routes": [
95 | {
96 | "pattern": ":?query:",
97 | "name": "RootEntityListReport",
98 | "target": "RootEntityListReport"
99 | },
100 | {
101 | "pattern": "RootEntities({key}):?query:",
102 | "name": "RootEntityObjectReport",
103 | "target": "RootEntityObjectReport"
104 | },
105 | {
106 | "pattern": "RootEntities({key})/childEntities1({key2}):?query:",
107 | "name": "childEntities1ObjectPage",
108 | "target": "childEntities1ObjectPage"
109 | },
110 | {
111 | "pattern": "RootEntities({key})/childEntities3({key2}):?query:",
112 | "name": "CustomObjectPage_childEntities3",
113 | "target": "CustomObjectPage_childEntities3"
114 | }
115 | ],
116 | "targets": {
117 | "RootEntityListReport": {
118 | "type": "Component",
119 | "id": "RootEntityListReport",
120 | "name": "sap.fe.templates.ListReport",
121 | "options": {
122 | "settings": {
123 | "entitySet": "RootEntities",
124 | "variantManagement": "Page",
125 | "enhanceI18n": "i18n/customI18N.properties",
126 | "navigation": {
127 | "RootEntities": {
128 | "detail": {
129 | "route": "RootEntityObjectReport"
130 | }
131 | }
132 | },
133 | "initialLoad": true,
134 | "views": {
135 | "paths": [
136 | {
137 | "key": "tab1",
138 | "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#variant1"
139 | },
140 | {
141 | "key": "tab2",
142 | "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#variant2"
143 | },
144 | {
145 | "key": "tab3",
146 | "annotationPath": "com.sap.vocabularies.UI.v1.SelectionPresentationVariant#SelectionPresentationVariant"
147 | },
148 | {
149 | "key": "tab4",
150 | "entitySet": "RootEntityVariants",
151 | "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#variant3"
152 | }
153 | ],
154 | "showCounts": false
155 | },
156 | "controlConfiguration": {
157 | "@com.sap.vocabularies.UI.v1.LineItem": {
158 | "actions": {
159 | "MenuActions": {
160 | "text": "{i18n>MenuButton}",
161 | "menu": [
162 | "DataFieldForAction::service1.changeCriticality",
163 | "DataFieldForAction::service1.EntityContainer::unboundAction"
164 | ]
165 | },
166 | "CustomActionLR": {
167 | "press": "sap.fe.featureShowcase.mainApp.ext.CustomActions.messageBox",
168 | "enabled": "sap.fe.featureShowcase.mainApp.ext.CustomActions.enabledForSingleSelect",
169 | "visible": true,
170 | "text": "{i18n>CustomActionLR}"
171 | }
172 | },
173 | "tableSettings": {
174 | "type": "ResponsiveTable",
175 | "selectionMode": "Multi",
176 | "quickVariantSelection": {
177 | "paths": [
178 | {
179 | "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#variant1"
180 | },
181 | {
182 | "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#variant2"
183 | }
184 | ],
185 | "hideTableTitle": false,
186 | "showCounts": true
187 | }
188 | },
189 | "columns": {
190 | "CustomColumn": {
191 | "key": "customColumnLR",
192 | "header": "{i18n>validityPeriodLR}",
193 | "template": "sap.fe.featureShowcase.mainApp.ext.CustomColumn-DateRangeLR",
194 | "availability": "Default",
195 | "horizontalAlign": "Center",
196 | "width": "auto",
197 | "properties": [
198 | "validFrom",
199 | "validTo"
200 | ],
201 | "position": {
202 | "placement": "After",
203 | "anchor": "DataField::fieldWithCriticality"
204 | }
205 | }
206 | }
207 | },
208 | "@com.sap.vocabularies.UI.v1.SelectionFields": {
209 | "useSemanticDateRange": true,
210 | "navigationProperties": [
211 | "childEntities1",
212 | "childEntity2/decimalProperty"
213 | ],
214 | "filterFields": {
215 | "starsValue": {
216 | "label": "{i18n>customFilter}",
217 | "property": "starsValue",
218 | "template": "sap.fe.featureShowcase.mainApp.ext.CustomFilter-Rating"
219 | },
220 | "validFrom": {
221 | "settings": {
222 | "defaultValues": [{"operator": "LASTYEARS", "values": [10]}],
223 | "operatorConfiguration": [
224 | {
225 | "path": "key",
226 | "equals": "TODAY",
227 | "exclude": false
228 | },
229 | {
230 | "path": "key",
231 | "equals": "TODAYXYDAYS",
232 | "exclude": true
233 | }
234 | ]
235 | }
236 | }
237 | }
238 | }
239 | },
240 | "content": {
241 | "header": {
242 | "actions": {
243 | "CustomActionLRGlobal": {
244 | "press": "sap.fe.featureShowcase.mainApp.ext.CustomActions.messageBox",
245 | "enabled": "sap.fe.featureShowcase.mainApp.ext.CustomActions.enabled",
246 | "visible": true,
247 | "text": "{i18n>CustomActionLRGlobal}"
248 | }
249 | }
250 | }
251 | }
252 | }
253 | }
254 | },
255 | "RootEntityObjectReport": {
256 | "type": "Component",
257 | "id": "RootEntityObjectReport",
258 | "name": "sap.fe.templates.ObjectPage",
259 | "options": {
260 | "settings": {
261 | "entitySet": "RootEntities",
262 | "enhanceI18n": "i18n/customI18N.properties",
263 | "sectionLayout": "Tabs",
264 | "variantManagement": "Control",
265 | "showRelatedApps": true,
266 | "navigation": {
267 | "childEntities1": {
268 | "detail": {
269 | "route": "childEntities1ObjectPage"
270 | }
271 | },
272 | "childEntities3": {
273 | "detail": {
274 | "route": "CustomObjectPage_childEntities3"
275 | }
276 | }
277 | },
278 | "controlConfiguration": {
279 | "childEntities1/@com.sap.vocabularies.UI.v1.LineItem": {
280 | "tableSettings": {
281 | "type": "GridTable",
282 | "enablePaste": true,
283 | "enableFullScreen": true,
284 | "creationMode": {
285 | "name": "Inline",
286 | "createAtEnd": true
287 | },
288 | "personalization": {
289 | "column": true,
290 | "sort": false,
291 | "filter": true
292 | },
293 | "editableHeaderContent": false,
294 | "showRelatedApps": true,
295 | "enableMassEdit": true,
296 | "quickVariantSelection": {
297 | "paths": [
298 | {
299 | "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#variant1"
300 | },
301 | {
302 | "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#variant2"
303 | },
304 | {
305 | "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#variant3"
306 | },
307 | {
308 | "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#variant4"
309 | }
310 | ],
311 | "hideTableTitle": false,
312 | "showCounts": true
313 | },
314 | "enableExport": true
315 | },
316 | "columns": {
317 | "DataField::field": {
318 | "horizontalAlign": "End"
319 | },
320 | "CustomColumnOnObjectPage": {
321 | "header": "{i18n>customColumn}",
322 | "template": "sap.fe.featureShowcase.mainApp.ext.CustomColumn-ProcessFlow",
323 | "availability": "Default",
324 | "properties": [
325 | "booleanProperty",
326 | "field"
327 | ]
328 | }
329 | },
330 | "actions": {
331 | "CustomActionOPTableToolbar": {
332 | "press": "sap.fe.featureShowcase.mainApp.ext.CustomActions.messageBox",
333 | "enabled": "{= %{deletePossible} === true}",
334 | "visible": true,
335 | "text": "{i18n>CustomActionOPTableToolbar}"
336 | },
337 | "ToggleSideContent": {
338 | "press": "sap.fe.featureShowcase.mainApp.ext.SideContent.toggleSideContentItem1",
339 | "enabled": true,
340 | "visible": true,
341 | "text": "{i18n>ToggleSideContent}"
342 | }
343 | }
344 | },
345 | "@com.sap.vocabularies.UI.v1.DataPoint#progressIndicator": {
346 | "navigation": {
347 | "targetSections": {
348 | "sectionId": "sap.fe.featureShowcase.mainApp::RootEntityObjectReport--fe::FacetSection::chartDataCollection"
349 | }
350 | }
351 | },
352 | "@com.sap.vocabularies.UI.v1.DataPoint#ratingIndicator": {
353 | "navigation": {
354 | "targetOutbound": {
355 | "outbound": "ExternalNavigation"
356 | }
357 | }
358 | },
359 | "@com.sap.vocabularies.UI.v1.FieldGroup#timeAndDate": {
360 | "fields": {
361 | "CustomContentFieldGroup": {
362 | "label": "{i18n>validityPeriodOP}",
363 | "template": "sap.fe.featureShowcase.mainApp.ext.CustomField-DatePicker",
364 | "position": {
365 | "placement": "Before",
366 | "anchor": "DataField::validTo"
367 | }
368 | }
369 | }
370 | },
371 | "@com.sap.vocabularies.UI.v1.FieldGroup#Section": {
372 | "fields": {
373 | "DataField::description": {
374 | "formatOptions": {
375 | "textLinesDisplay": 1,
376 | "textLinesEdit": 3
377 | }
378 | },
379 | "DataField::description_customGrowing": {
380 | "formatOptions": {
381 | "textMaxLines": "5",
382 | "textMaxCharactersDisplay": 400,
383 | "textExpandBehaviorDisplay": "Popover"
384 | }
385 | }
386 | },
387 | "actions": {
388 | "CustomActionForm": {
389 | "press": "sap.fe.featureShowcase.mainApp.ext.CustomActions.messageBox",
390 | "enabled": true,
391 | "visible": true,
392 | "inline": true,
393 | "text": "{i18n>CustomActionOPFooter}"
394 | }
395 | }
396 | },
397 | "@com.sap.vocabularies.UI.v1.FieldGroup#HeaderData": {
398 | "fields": {
399 | "CustomFieldHeaderOP": {
400 | "label": "{i18n>validityPeriodOP}",
401 | "template": "sap.fe.featureShowcase.mainApp.ext.CustomField-DateRange",
402 | "position": {
403 | "placement": "After",
404 | "anchor": "DataField::stringProperty"
405 | }
406 | }
407 | }
408 | },
409 | "@com.sap.vocabularies.UI.v1.FieldGroup#ShowWhenInEdit": {
410 | "fields": {
411 | "DataField::criticality_code": {
412 | "formatOptions": {
413 | "radioButtonsHorizontalLayout": false
414 | }
415 | }
416 | }
417 | },
418 | "childEntities3/@com.sap.vocabularies.UI.v1.LineItem": {
419 | "tableSettings": {
420 | "personalization": {
421 | "sort": true,
422 | "filter": true,
423 | "column": true
424 | }
425 | }
426 | }
427 | },
428 | "content": {
429 | "header": {
430 | "anchorBarVisible": true,
431 | "visible": true,
432 | "actions": {
433 | "CustomActionOPHeader": {
434 | "press": "sap.fe.featureShowcase.mainApp.ext.CustomActions.messageBox",
435 | "enabled": "{= ${ui>/editMode} === 'Editable'}",
436 | "visible": true,
437 | "text": "{i18n>CustomActionOPHeader}"
438 | }
439 | }
440 | },
441 | "body": {
442 | "sections": {
443 | "customSectionQualifier": {
444 | "template": "sap.fe.featureShowcase.mainApp.ext.CustomSection",
445 | "position": {
446 | "anchor": "chartDataCollection",
447 | "placement": "Before"
448 | },
449 | "title": "{i18n>customSection}",
450 | "actions" : {
451 | "CustomActionSectionForm" : {
452 | "press": "sap.fe.featureShowcase.mainApp.ext.CustomActions.messageBox",
453 | "enabled": "{= ${ui>/editMode} !== 'Editable'}",
454 | "visible" : true,
455 | "text": "{i18n>CustomActionSection}"
456 | },
457 | "ToggleSideContent" : {
458 | "press": "sap.fe.featureShowcase.mainApp.ext.SideContent.toggleSideContent",
459 | "enabled": true,
460 | "visible" : true,
461 | "text": "{i18n>ToggleSideContent}"
462 | }
463 | },
464 | "sideContent": {
465 | "template": "sap.fe.featureShowcase.mainApp.ext.SideContent",
466 | "equalSplit":true
467 | }
468 | },
469 | "collectionFacetSection": {
470 | "subSections": {
471 | "customSubSectionQualifier": {
472 | "template": "sap.fe.featureShowcase.mainApp.ext.CustomSubSection",
473 | "title": "{i18n>customSubSection}",
474 | "visible": true
475 | }
476 | }
477 | },
478 | "childEntities1Section": {
479 | "sideContent": {
480 | "template": "sap.fe.featureShowcase.mainApp.ext.SideContentTable"
481 | }
482 | }
483 | }
484 | },
485 | "footer": {
486 | "actions": {
487 | "CustomActionOPFooter": {
488 | "press": "sap.fe.featureShowcase.mainApp.ext.CustomActions.messageBox",
489 | "enabled": "{= ${ui>/editMode} !== 'Editable'}",
490 | "visible": true,
491 | "text": "{i18n>CustomActionOPFooter}"
492 | }
493 | }
494 | }
495 | },
496 | "editableHeaderContent": false
497 | }
498 | }
499 | },
500 | "childEntities1ObjectPage": {
501 | "type": "Component",
502 | "id": "childEntities1ObjectPage",
503 | "name": "sap.fe.templates.ObjectPage",
504 | "options": {
505 | "settings": {
506 | "editableHeaderContent": true,
507 | "entitySet": "ChildEntities1",
508 | "sectionLayout": "Page",
509 | "content": {
510 | "header": {
511 | "facets": {
512 | "CustomHeaderFacet": {
513 | "template": "sap.fe.featureShowcase.mainApp.ext.CustomHeaderFacet-ProcessFlow",
514 | "templateEdit": "sap.fe.featureShowcase.mainApp.ext.CustomHeaderFacet-Edit",
515 | "stashed": false,
516 | "title": "{i18n>customHeaderFacet}",
517 | "position": {
518 | "placement": "After",
519 | "anchor": "FacetWithPercent"
520 | },
521 | "flexSettings": {
522 | "designtime": "not-adaptable-visibility"
523 | }
524 | }
525 | }
526 | }
527 | }
528 | }
529 | }
530 | },
531 | "CustomObjectPage_childEntities3": {
532 | "type": "Component",
533 | "id": "CustomObjectPage_childEntities3",
534 | "name": "sap.fe.core.fpm",
535 | "options": {
536 | "settings": {
537 | "viewName": "sap.fe.featureShowcase.mainApp.ext.view.CustomObjectPage",
538 | "entitySet": "ChildEntities3"
539 | }
540 | }
541 | }
542 | }
543 | },
544 | "contentDensities": {
545 | "compact": true,
546 | "cozy": true
547 | }
548 | },
549 | "sap.platform.abap": {
550 | "_version": "1.1.0",
551 | "uri": ""
552 | },
553 | "sap.platform.hcp": {
554 | "_version": "1.1.0",
555 | "uri": ""
556 | },
557 | "sap.fiori": {
558 | "_version": "1.1.0",
559 | "registrationIds": [],
560 | "archeType": "transactional"
561 | }
562 | }
--------------------------------------------------------------------------------
/app/featureShowcase/webapp/utils/locate-reuse-libs.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | //Generated by SAP Fiori tools Application Generator
4 |
5 |
6 | /*eslint-disable semi, no-console*/
7 | (function (sap) {
8 | fioriToolsGetManifestLibs = function (manifestPath) {
9 | var url = manifestPath;
10 | var result = "";
11 | // SAPUI5 delivered namespaces from https://ui5.sap.com/#/api/sap
12 | var ui5Libs = [
13 | "sap.apf",
14 | "sap.base",
15 | "sap.chart",
16 | "sap.collaboration",
17 | "sap.f",
18 | "sap.fe",
19 | "sap.fileviewer",
20 | "sap.gantt",
21 | "sap.landvisz",
22 | "sap.m",
23 | "sap.ndc",
24 | "sap.ovp",
25 | "sap.rules",
26 | "sap.suite",
27 | "sap.tnt",
28 | "sap.ui",
29 | "sap.uiext",
30 | "sap.ushell",
31 | "sap.uxap",
32 | "sap.viz",
33 | "sap.webanalytics",
34 | "sap.zen"
35 | ];
36 | return new Promise(function (resolve, reject) {
37 | $.ajax(url)
38 | .done(function (manifest) {
39 | if (manifest) {
40 | if (
41 | manifest["sap.ui5"] &&
42 | manifest["sap.ui5"].dependencies &&
43 | manifest["sap.ui5"].dependencies.libs
44 | ) {
45 | Object.keys(manifest["sap.ui5"].dependencies.libs).forEach(function (manifestLibKey) {
46 | // ignore libs that start with SAPUI5 delivered namespaces
47 | if (!ui5Libs.some(function (substring) { return manifestLibKey === substring || manifestLibKey.startsWith(substring + "."); })) {
48 | if (result.length > 0) {
49 | result = result + "," + manifestLibKey;
50 | } else {
51 | result = manifestLibKey;
52 | }
53 | }
54 | });
55 | }
56 | }
57 | resolve(result);
58 | })
59 | .fail(function (error) {
60 | reject(new Error("Could not fetch manifest at '" + manifestPath));
61 | });
62 | });
63 | };
64 | /**
65 | * Registers the module paths for dependencies of the given component.
66 | * @param {string} manifestPath The the path to the app manifest path
67 | * for which the dependencies should be registered.
68 | * @returns {Promise} A promise which is resolved when the ajax request for
69 | * the app-index was successful and the module paths were registered.
70 | */
71 | sap.registerComponentDependencyPaths = function (manifestPath) {
72 | return fioriToolsGetManifestLibs(manifestPath).then(function (libs) {
73 | if (libs && libs.length > 0) {
74 | var url = "/sap/bc/ui2/app_index/ui5_app_info?id=" + libs;
75 | var sapClient = jQuery.sap.getUriParameters().get("sap-client");
76 | if (sapClient && sapClient.length === 3) {
77 | url = url + "&sap-client=" + sapClient;
78 | }
79 | return $.ajax(url).done(function (data) {
80 | if (data) {
81 | Object.keys(data).forEach(function (moduleDefinitionKey) {
82 | var moduleDefinition = data[moduleDefinitionKey];
83 | if (moduleDefinition && moduleDefinition.dependencies) {
84 | moduleDefinition.dependencies.forEach(function (dependency) {
85 | if (dependency.url && dependency.url.length > 0 && dependency.type === "UI5LIB") {
86 | jQuery.sap.log.info(
87 | "Registering Library " +
88 | dependency.componentId +
89 | " from server " +
90 | dependency.url
91 | );
92 | jQuery.sap.registerModulePath(dependency.componentId, dependency.url);
93 | }
94 | });
95 | }
96 | });
97 | }
98 | });
99 | }
100 | });
101 | };
102 | })(sap);
103 |
104 | var scripts = document.getElementsByTagName("script");
105 | var currentScript = scripts[scripts.length - 1];
106 | var manifestUri = currentScript.getAttribute("data-sap-ui-manifest-uri");
107 | var componentName = currentScript.getAttribute("data-sap-ui-componentName");
108 | var useMockserver = currentScript.getAttribute("data-sap-ui-use-mockserver");
109 | sap.registerComponentDependencyPaths(manifestUri)
110 | .catch(function (error) {
111 | jQuery.sap.log.error(error);
112 | })
113 | .finally(function () {
114 | if (componentName && componentName.length > 0) {
115 | if (useMockserver && useMockserver === "true") {
116 | sap.ui.getCore().attachInit(function () {
117 | sap.ui.require([componentName.replace(/\./g, "/") + "/localService/mockserver"], function (server) {
118 | // set up test service for local testing
119 | server.init();
120 | // initialize the ushell sandbox component
121 | sap.ushell.Container.createRenderer().placeAt("content");
122 | });
123 | });
124 | } else {
125 | // Requiring the ComponentSupport module automatically executes the component initialisation for all declaratively defined components
126 | sap.ui.require(["sap/ui/core/ComponentSupport"]);
127 | }
128 | } else {
129 | sap.ui.getCore().attachInit(function () {
130 | // initialize the ushell sandbox component
131 | sap.ushell.Container.createRenderer().placeAt("content");
132 | });
133 | }
134 | });
135 |
136 | sap.registerComponentDependencyPaths(manifestUri);
137 |
--------------------------------------------------------------------------------
/app/featureShowcaseNavigationTarget/annotations.cds:
--------------------------------------------------------------------------------
1 | using service1 as service from '../../srv/service';
2 | annotate service.ChildEntities2 with @(
3 | UI.LineItem : [
4 | {
5 | $Type : 'UI.DataField',
6 | Value : stringProperty,
7 | },
8 | {
9 | $Type : 'UI.DataField',
10 | Value : integerProperty,
11 | },
12 | {
13 | $Type : 'UI.DataField',
14 | Value : decimalProperty,
15 | },
16 | ],
17 | UI.SelectionFields : [
18 | stringProperty,
19 | integerProperty,
20 | decimalProperty
21 | ]
22 | );
23 |
--------------------------------------------------------------------------------
/app/featureShowcaseNavigationTarget/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "items3",
3 | "version": "0.0.1",
4 | "description": "A SAP Fiori application.",
5 | "keywords": [
6 | "ui5",
7 | "openui5",
8 | "sapui5"
9 | ],
10 | "main": "webapp/index.html",
11 | "scripts": {
12 | "deploy-config": "npx -p @sap/ux-ui5-tooling fiori add deploy-config cf"
13 | },
14 | "devDependencies": {
15 | "@ui5/cli": "^2.11.1",
16 | "@ui5/fs": "^2.0.6",
17 | "@ui5/logger": "^2.0.1",
18 | "@sap/ux-ui5-tooling": "1",
19 | "rimraf": "3.0.2",
20 | "@sap/ux-specification": "latest"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/featureShowcaseNavigationTarget/ui5.yaml:
--------------------------------------------------------------------------------
1 | specVersion: '2.4'
2 | metadata:
3 | name: 'items3'
4 | type: application
5 | server:
6 | customMiddleware:
7 | - name: fiori-tools-proxy
8 | afterMiddleware: compression
9 | configuration:
10 | ignoreCertError: false # If set to true, certificate errors will be ignored. E.g. self-signed certificates will be accepted
11 | backend:
12 | - path: /srv1
13 | url: http://localhost:4004
14 | ui5:
15 | path:
16 | - /resources
17 | - /test-resources
18 | url: https://ui5.sap.com
19 | version: # The UI5 version, for instance, 1.78.1. Empty means latest version
20 | - name: fiori-tools-appreload
21 | afterMiddleware: compression
22 | configuration:
23 | port: 35729
24 | path: webapp
25 |
--------------------------------------------------------------------------------
/app/featureShowcaseNavigationTarget/webapp/Component.js:
--------------------------------------------------------------------------------
1 | sap.ui.define(['sap/fe/core/AppComponent'], function(AppComponent) {
2 | 'use strict';
3 |
4 | return AppComponent.extend("sap.fe.featureShowcase.childEntities2ui.Component", {
5 | metadata: {
6 | manifest: "json"
7 | }
8 | });
9 | });
10 |
--------------------------------------------------------------------------------
/app/featureShowcaseNavigationTarget/webapp/i18n/i18n.properties:
--------------------------------------------------------------------------------
1 | # This is the resource bundle for items3
2 |
3 | #Texts for manifest.json
4 |
5 | #XTIT: Application name
6 | appTitle=Child Entity 2
7 |
8 | #YDES: Application description
9 | appDescription=A SAP Fiori application.
10 |
--------------------------------------------------------------------------------
/app/featureShowcaseNavigationTarget/webapp/i18n/i18n_en.properties:
--------------------------------------------------------------------------------
1 | # This is the resource bundle for items3
2 |
3 | #Texts for manifest.json
4 |
5 | #XTIT: Application name
6 | appTitle=Child Entity 2
7 |
8 | #YDES: Application description
9 | appDescription=A SAP Fiori application.
10 |
--------------------------------------------------------------------------------
/app/featureShowcaseNavigationTarget/webapp/i18n/i18n_en_US.properties:
--------------------------------------------------------------------------------
1 | # This is the resource bundle for items3
2 |
3 | #Texts for manifest.json
4 |
5 | #XTIT: Application name
6 | appTitle=Child Entity 2
7 |
8 | #YDES: Application description
9 | appDescription=A SAP Fiori application.
10 |
--------------------------------------------------------------------------------
/app/featureShowcaseNavigationTarget/webapp/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "_version": "1.32.0",
3 | "sap.app": {
4 | "id": "sap.fe.featureShowcase.childEntities2ui",
5 | "type": "application",
6 | "i18n": "i18n/i18n.properties",
7 | "applicationVersion": {
8 | "version": "1.0.0"
9 | },
10 | "title": "{{appTitle}}",
11 | "description": "{{appDescription}}",
12 | "dataSources": {
13 | "mainService": {
14 | "uri": "/srv1/",
15 | "type": "OData",
16 | "settings": {
17 | "odataVersion": "4.0"
18 | }
19 | }
20 | },
21 | "offline": false,
22 | "resources": "resources.json",
23 | "sourceTemplate": {
24 | "id": "ui5template.fiorielements.v4.lrop",
25 | "version": "1.0.0"
26 | },
27 | "crossNavigation": {
28 | "inbounds": {
29 | "feature-showcase": {
30 | "signature": {
31 | "parameters": {},
32 | "additionalParameters": "allowed"
33 | },
34 | "semanticObject": "FeatureShowcaseChildEntity2",
35 | "action": "manage",
36 | "title": "Navigation Target",
37 | "subTitle": "Manage"
38 | }
39 | }
40 | }
41 | },
42 | "sap.ui": {
43 | "technology": "UI5",
44 | "icons": {
45 | "icon": "",
46 | "favIcon": "",
47 | "phone": "",
48 | "phone@2": "",
49 | "tablet": "",
50 | "tablet@2": ""
51 | },
52 | "deviceTypes": {
53 | "desktop": true,
54 | "tablet": true,
55 | "phone": true
56 | }
57 | },
58 | "sap.ui5": {
59 | "resources": {
60 | "js": [],
61 | "css": []
62 | },
63 | "dependencies": {
64 | "minUI5Version": "1.76.0",
65 | "libs": {
66 | "sap.ui.core": {},
67 | "sap.fe.templates": {}
68 | }
69 | },
70 | "models": {
71 | "i18n": {
72 | "type": "sap.ui.model.resource.ResourceModel",
73 | "uri": "i18n/i18n.properties"
74 | },
75 | "": {
76 | "dataSource": "mainService",
77 | "preload": true,
78 | "settings": {
79 | "synchronizationMode": "None",
80 | "operationMode": "Server",
81 | "autoExpandSelect": true,
82 | "earlyRequests": true
83 | }
84 | }
85 | },
86 | "routing": {
87 | "routes": [
88 | {
89 | "pattern": ":?query:",
90 | "name": "Items3List",
91 | "target": "Items3List"
92 | },
93 | {
94 | "pattern": "ChildEntities2({key}):?query:",
95 | "name": "Items3ObjectPage",
96 | "target": "Items3ObjectPage"
97 | }
98 | ],
99 | "targets": {
100 | "Items3List": {
101 | "type": "Component",
102 | "id": "Items3List",
103 | "name": "sap.fe.templates.ListReport",
104 | "options": {
105 | "settings": {
106 | "entitySet": "ChildEntities2",
107 | "variantManagement": "Page",
108 | "navigation": {
109 | "ChildEntities2": {
110 | "detail": {
111 | "route": "Items3ObjectPage"
112 | }
113 | }
114 | },
115 | "initialLoad": true
116 | }
117 | }
118 | },
119 | "Items3ObjectPage": {
120 | "type": "Component",
121 | "id": "Items3ObjectPage",
122 | "name": "sap.fe.templates.ObjectPage",
123 | "options": {
124 | "settings": {
125 | "entitySet": "ChildEntities2"
126 | }
127 | }
128 | }
129 | }
130 | },
131 | "contentDensities": {
132 | "compact": true,
133 | "cozy": true
134 | }
135 | },
136 | "sap.platform.abap": {
137 | "_version": "1.1.0",
138 | "uri": ""
139 | },
140 | "sap.platform.hcp": {
141 | "_version": "1.1.0",
142 | "uri": ""
143 | },
144 | "sap.fiori": {
145 | "_version": "1.1.0",
146 | "registrationIds": [],
147 | "archeType": "transactional"
148 | }
149 | }
--------------------------------------------------------------------------------
/app/featureShowcaseNavigationTarget/webapp/utils/locate-reuse-libs.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | //Generated by SAP Fiori tools Application Generator
4 |
5 |
6 | /*eslint-disable semi, no-console*/
7 | (function (sap) {
8 | fioriToolsGetManifestLibs = function (manifestPath) {
9 | var url = manifestPath;
10 | var result = "";
11 | // SAPUI5 delivered namespaces from https://ui5.sap.com/#/api/sap
12 | var ui5Libs = [
13 | "sap.apf",
14 | "sap.base",
15 | "sap.chart",
16 | "sap.collaboration",
17 | "sap.f",
18 | "sap.fe",
19 | "sap.fileviewer",
20 | "sap.gantt",
21 | "sap.landvisz",
22 | "sap.m",
23 | "sap.ndc",
24 | "sap.ovp",
25 | "sap.rules",
26 | "sap.suite",
27 | "sap.tnt",
28 | "sap.ui",
29 | "sap.uiext",
30 | "sap.ushell",
31 | "sap.uxap",
32 | "sap.viz",
33 | "sap.webanalytics",
34 | "sap.zen"
35 | ];
36 | return new Promise(function (resolve, reject) {
37 | $.ajax(url)
38 | .done(function (manifest) {
39 | if (manifest) {
40 | if (
41 | manifest["sap.ui5"] &&
42 | manifest["sap.ui5"].dependencies &&
43 | manifest["sap.ui5"].dependencies.libs
44 | ) {
45 | Object.keys(manifest["sap.ui5"].dependencies.libs).forEach(function (manifestLibKey) {
46 | // ignore libs that start with SAPUI5 delivered namespaces
47 | if (!ui5Libs.some(function (substring) { return manifestLibKey === substring || manifestLibKey.startsWith(substring + "."); })) {
48 | if (result.length > 0) {
49 | result = result + "," + manifestLibKey;
50 | } else {
51 | result = manifestLibKey;
52 | }
53 | }
54 | });
55 | }
56 | }
57 | resolve(result);
58 | })
59 | .fail(function (error) {
60 | reject(new Error("Could not fetch manifest at '" + manifestPath));
61 | });
62 | });
63 | };
64 | /**
65 | * Registers the module paths for dependencies of the given component.
66 | * @param {string} manifestPath The the path to the app manifest path
67 | * for which the dependencies should be registered.
68 | * @returns {Promise} A promise which is resolved when the ajax request for
69 | * the app-index was successful and the module paths were registered.
70 | */
71 | sap.registerComponentDependencyPaths = function (manifestPath) {
72 | return fioriToolsGetManifestLibs(manifestPath).then(function (libs) {
73 | if (libs && libs.length > 0) {
74 | var url = "/sap/bc/ui2/app_index/ui5_app_info?id=" + libs;
75 | var sapClient = jQuery.sap.getUriParameters().get("sap-client");
76 | if (sapClient && sapClient.length === 3) {
77 | url = url + "&sap-client=" + sapClient;
78 | }
79 | return $.ajax(url).done(function (data) {
80 | if (data) {
81 | Object.keys(data).forEach(function (moduleDefinitionKey) {
82 | var moduleDefinition = data[moduleDefinitionKey];
83 | if (moduleDefinition && moduleDefinition.dependencies) {
84 | moduleDefinition.dependencies.forEach(function (dependency) {
85 | if (dependency.url && dependency.url.length > 0 && dependency.type === "UI5LIB") {
86 | jQuery.sap.log.info(
87 | "Registering Library " +
88 | dependency.componentId +
89 | " from server " +
90 | dependency.url
91 | );
92 | jQuery.sap.registerModulePath(dependency.componentId, dependency.url);
93 | }
94 | });
95 | }
96 | });
97 | }
98 | });
99 | }
100 | });
101 | };
102 | })(sap);
103 |
104 | var scripts = document.getElementsByTagName("script");
105 | var currentScript = scripts[scripts.length - 1];
106 | var manifestUri = currentScript.getAttribute("data-sap-ui-manifest-uri");
107 | var componentName = currentScript.getAttribute("data-sap-ui-componentName");
108 | var useMockserver = currentScript.getAttribute("data-sap-ui-use-mockserver");
109 | sap.registerComponentDependencyPaths(manifestUri)
110 | .catch(function (error) {
111 | jQuery.sap.log.error(error);
112 | })
113 | .finally(function () {
114 | if (componentName && componentName.length > 0) {
115 | if (useMockserver && useMockserver === "true") {
116 | sap.ui.getCore().attachInit(function () {
117 | sap.ui.require([componentName.replace(/\./g, "/") + "/localService/mockserver"], function (server) {
118 | // set up test service for local testing
119 | server.init();
120 | // initialize the ushell sandbox component
121 | sap.ushell.Container.createRenderer().placeAt("content");
122 | });
123 | });
124 | } else {
125 | // Requiring the ComponentSupport module automatically executes the component initialisation for all declaratively defined components
126 | sap.ui.require(["sap/ui/core/ComponentSupport"]);
127 | }
128 | } else {
129 | sap.ui.getCore().attachInit(function () {
130 | // initialize the ushell sandbox component
131 | sap.ushell.Container.createRenderer().placeAt("content");
132 | });
133 | }
134 | });
135 |
136 | sap.registerComponentDependencyPaths(manifestUri);
137 |
--------------------------------------------------------------------------------
/app/media/bigBen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAP-samples/fiori-elements-feature-showcase/83a607cea1d4e12077a0470b209e57e7526bb0c9/app/media/bigBen.png
--------------------------------------------------------------------------------
/app/media/brandenburgGate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAP-samples/fiori-elements-feature-showcase/83a607cea1d4e12077a0470b209e57e7526bb0c9/app/media/brandenburgGate.png
--------------------------------------------------------------------------------
/app/media/camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAP-samples/fiori-elements-feature-showcase/83a607cea1d4e12077a0470b209e57e7526bb0c9/app/media/camera.png
--------------------------------------------------------------------------------
/app/media/consulting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAP-samples/fiori-elements-feature-showcase/83a607cea1d4e12077a0470b209e57e7526bb0c9/app/media/consulting.png
--------------------------------------------------------------------------------
/app/media/crate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAP-samples/fiori-elements-feature-showcase/83a607cea1d4e12077a0470b209e57e7526bb0c9/app/media/crate.png
--------------------------------------------------------------------------------
/app/media/drink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAP-samples/fiori-elements-feature-showcase/83a607cea1d4e12077a0470b209e57e7526bb0c9/app/media/drink.png
--------------------------------------------------------------------------------
/app/media/gift.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAP-samples/fiori-elements-feature-showcase/83a607cea1d4e12077a0470b209e57e7526bb0c9/app/media/gift.png
--------------------------------------------------------------------------------
/app/media/null.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAP-samples/fiori-elements-feature-showcase/83a607cea1d4e12077a0470b209e57e7526bb0c9/app/media/null.png
--------------------------------------------------------------------------------
/app/services.cds:
--------------------------------------------------------------------------------
1 |
2 | using from './featureShowcase/capabilities';
3 | using from './featureShowcase/field-control';
4 | using from './featureShowcase/labels';
5 | using from './featureShowcase/layouts_RootEntities';
6 | using from './featureShowcase/layouts_contacts';
7 | using from './featureShowcase/layouts_RootEntityVariants';
8 | using from './featureShowcase/layouts_GrandChildEntities';
9 | using from './featureShowcase/layouts_ChildEntities3';
10 | using from './featureShowcase/layouts_ChildEntities1';
11 | using from './featureShowcase/layouts_ChildEntities2';
12 | using from './featureShowcase/layouts_ChartDataEntities';
13 | using from './featureShowcase/value-helps';
14 | using from './featureShowcaseNavigationTarget/annotations';
--------------------------------------------------------------------------------
/db/common.cds:
--------------------------------------------------------------------------------
1 | using { User, sap, managed, Country, sap.common.CodeList } from '@sap/cds/common';
2 |
3 | //From cap-sflight
4 | extend sap.common.Currencies with {
5 | // Currencies.code = ISO 4217 alphabetic three-letter code
6 | // with the first two letters being equal to ISO 3166 alphabetic country codes
7 | // See also:
8 | // [1] https://www.iso.org/iso-4217-currency-codes.html
9 | // [2] https://www.currency-iso.org/en/home/tables/table-a1.html
10 | // [3] https://www.ibm.com/support/knowledgecenter/en/SSZLC2_7.0.0/com.ibm.commerce.payments.developer.doc/refs/rpylerl2mst97.htm
11 | numcode : Integer;
12 | exponent : Integer; //> e.g. 2 --> 1 Dollar = 10^2 Cent
13 | minor : String; //> e.g. 'Cent'
14 | }
15 |
16 | type sap.common.Region : Association to sap.common.Regions;
17 |
18 | entity sap.common.Regions : CodeList {
19 | key code : String(10) @title : '{i18n>region}' @Common.Text : name @Common.TextArrangement : #TextFirst;
20 | key country : Country @UI.Hidden;
21 | }
22 |
23 | extend sap.common.Countries with {
24 | regions : Composition of many sap.common.Regions on regions.country = $self;
25 | }
26 |
27 | //
28 | // Code Lists
29 | //
30 |
31 | entity sap.common.Criticality : sap.common.CodeList {
32 | key code : Integer default 0 @Common.Text : name @Common.TextArrangement : #TextFirst;
33 | }
34 |
35 | entity sap.common.UnitOfMeasureCodeList : CodeList {
36 | key code : String(30);
37 | };
38 |
39 | type sap.common.UnitOfMeasure : Association to one sap.common.UnitOfMeasureCodeList;
40 |
--------------------------------------------------------------------------------
/db/data/sap.common-Countries.csv:
--------------------------------------------------------------------------------
1 | code;name;descr
2 | AU;Australia;Commonwealth of Australia
3 | CA;Canada;Canada
4 | CN;China;People's Republic of China (PRC)
5 | FR;France;French Republic
6 | DE;Germany;Federal Republic of Germany
7 | IN;India;Republic of India
8 | IL;Israel;State of Israel
9 | MM;Myanmar;Republic of the Union of Myanmar
10 | GB;United Kingdom;United Kingdom of Great Britain and Northern Ireland
11 | US;United States;United States of America (USA)
12 | EU;European Union;European Union
--------------------------------------------------------------------------------
/db/data/sap.common-Countries.texts.csv:
--------------------------------------------------------------------------------
1 | code;locale;name;descr
2 | AU;de;Australien;Commonwealth Australien
3 | CA;de;Kanada;Canada
4 | CN;de;China;Volksrepublik China
5 | FR;de;Frankreich;Republik Frankreich
6 | DE;de;Deutschland;Bundesrepublik Deutschland
7 | IN;de;Indien;Republik Indien
8 | IL;de;Israel;Staat Israel
9 | MM;de;Myanmar;Republik der Union Myanmar
10 | GB;de;Vereinigtes Königreich;Vereinigtes Königreich Großbritannien und Nordirland
11 | US;de;Vereinigte Staaten;Vereinigte Staaten von Amerika
12 | EU;de;Europäische Union;Europäische Union
--------------------------------------------------------------------------------
/db/data/sap.common-Criticality.csv:
--------------------------------------------------------------------------------
1 | code;name;descr
2 | 0;Neutral;Neutral
3 | 1;Negative;Negative
4 | 2;Critical;Critical
5 | 3;Positive;Positive
6 | 5;New Item;New Item
--------------------------------------------------------------------------------
/db/data/sap.common-Currencies.csv:
--------------------------------------------------------------------------------
1 | code;symbol;name;descr;numcode;minor;exponent
2 | EUR;€;Euro;European Euro;978;Cent;2
3 | USD;$;US Dollar;United States Dollar;840;Cent;2
4 | CAD;$;Canadian Dollar;Canadian Dollar;124;Cent;2
5 | AUD;$;Australian Dollar;Australian Dollar;036;Cent;2
6 | GBP;£;British Pound;Great Britain Pound;826;Penny;2
7 | ILS;₪;Shekel;Israeli New Shekel;376;Agorat;2
8 | INR;₹;Rupee;Indian Rupee;356;Paise;2
9 | QAR;﷼;Riyal;Katar Riyal;356;Dirham;2
10 | SAR;﷼;Riyal;Saudi Riyal;682;Halala;2
11 | JPY;¥;Yen;Japanese Yen;392;Sen;2
12 | CNY;¥;Yuan;Chinese Yuan Renminbi;156;Jiao;1
13 | SGD;S$;Singapore Dollar;Singapore Dollar;702;Cent;2
14 | TND;د.ت;Tunisian Dinar;Tunisian Dinar;788;Milim;3
--------------------------------------------------------------------------------
/db/data/sap.common-Currencies.text.csv:
--------------------------------------------------------------------------------
1 | code;locale;name;descr
2 | EUR;de;Euro;European Euro
3 | USD;de;US-Dollar;United States Dollar
4 | CAD;de;Kanadischer Dollar;Kanadischer Dollar
5 | AUD;de;Australischer Dollar;Australischer Dollar
6 | GBP;de;Pfund;Britische Pfund
7 | ILS;de;Schekel;Israelische Schekel
8 | EUR;fr;euro;de la Zone euro
9 | USD;fr;dollar;dollar des États-Unis
10 | CAD;fr;dollar canadien;dollar canadien
11 | AUD;fr;dollar australien;dollar australien
12 | GBP;fr;livre sterling;pound sterling
13 | ILS;fr;Shekel;shekel israelien
--------------------------------------------------------------------------------
/db/data/sap.common-Regions.csv:
--------------------------------------------------------------------------------
1 | code;country_code;name
2 | AU-NSW;AU;New South Wales
3 | AU-QLD;AU;Queensland
4 | AU-SA;AU;South Australia
5 | AU-TAS;AU;Tasmania
6 | AU-VIC;AU;Victoria
7 | AU-WA;AU;Western Australia
8 | AU-ACT;AU;Australian Capital Territory
9 | AU-NT;AU;Northern Territory
10 | CA-AB;CA;Alberta
11 | CA-BC;CA;British Columbia
12 | CA-MB;CA;Manitoba
13 | CA-NB;CA;New Brunswick
14 | CA-NL;CA;Newfoundland and Labrador
15 | CA-NS;CA;Nova Scotia
16 | CA-ON;CA;Ontario
17 | CA-PE;CA;Prince Edward Island
18 | CA-QC;CA;Quebec
19 | CA-SK;CA;Saskatchewan
20 | CA-NT;CA;Northwest Territories
21 | CA-NU;CA;Nunavut
22 | CA-YT;CA;Yukon
23 | CN-AH;CN;Anhui Sheng
24 | CN-BJ;CN;Beijing Shi
25 | CN-CQ;CN;Chongqing Shi
26 | CN-FJ;CN;Fujian Sheng
27 | CN-GD;CN;Guangdong Sheng
28 | CN-GS;CN;Gansu Sheng
29 | CN-GX;CN;Guangxi Zhuangzu Zizhiqu
30 | CN-GZ;CN;Guizhou Sheng
31 | CN-HA;CN;Henan Sheng
32 | CN-HB;CN;Hubei Sheng
33 | CN-HE;CN;Hebei Sheng
34 | CN-HI;CN;Hainan Sheng
35 | CN-HK;CN;Hong Kong SAR (en)
36 | CN-HL;CN;Heilongjiang Sheng
37 | CN-HN;CN;Hunan Sheng
38 | CN-JL;CN;Jilin Sheng
39 | CN-JS;CN;Jiangsu Sheng
40 | CN-JX;CN;Jiangxi Sheng
41 | CN-LN;CN;Liaoning Sheng
42 | CN-MO;CN;Macao SAR (en)
43 | CN-NM;CN;Nei Mongol Zizhiqu
44 | CN-NX;CN;Ningxia Huizi Zizhiqu
45 | CN-QH;CN;Qinghai Sheng
46 | CN-SC;CN;Sichuan Sheng
47 | CN-SD;CN;Shandong Shen
48 | CN-SH;CN;Shanghai Shi
49 | CN-SN;CN;Shaanxi Sheng
50 | CN-SX;CN;Shanxi Sheng
51 | CN-TJ;CN;Tianjin Shi
52 | CN-TW;CN;Taiwan Sheng
53 | CN-XJ;CN;Xinjiang Uygur Zizhiqu
54 | CN-XZ;CN;Xizang Zizhiqu
55 | CN-YN;CN;Yunnan Sheng
56 | CN-ZJ;CN;Zhejiang Sheng
57 | DE-BW;DE;Baden-Württemberg
58 | DE-BY;DE;Bayern Bavaria
59 | DE-BE;DE;Berlin Berlin
60 | DE-BB;DE;Brandenburg
61 | DE-HB;DE;Bremen
62 | DE-HH;DE;Hamburg
63 | DE-HE;DE;Hessen
64 | DE-MV;DE;Mecklenburg-Vorpommern
65 | DE-NI;DE;Niedersachsen
66 | DE-NW;DE;Nordrhein-Westfalen
67 | DE-RP;DE;Rheinland-Pfalz
68 | DE-SL;DE;Saarland
69 | DE-SN;DE;Sachsen
70 | DE-ST;DE;Sachsen-Anhalt
71 | DE-SH;DE;Schleswig-Holstein
72 | DE-TH;DE;Thüringen
73 | FR-ARA;FR;Auvergne-Rhône-Alpes
74 | FR-BFC;FR;Bourgogne-Franche-Comté
75 | FR-BRE;FR;Bretagne
76 | FR-CVL;FR;Centre-Val de Loire
77 | FR-20R;FR;Corse
78 | FR-GES;FR;Grand-Est
79 | FR-GP;FR;Guadeloupe
80 | FR-GF;FR;Guyane (française)
81 | FR-HDF;FR;Hauts-de-France
82 | FR-IDF;FR;Île-de-France
83 | FR-MQ;FR;Martinique
84 | FR-YT;FR;Mayotte
85 | FR-NOR;FR;Normandie
86 | FR-NAQ;FR;Nouvelle-Aquitaine
87 | FR-OCC;FR;Occitanie
88 | FR-PDL;FR;Pays-de-la-Loire
89 | FR-PAC;FR;Provence-Alpes-Côte-d’Azur
90 | FR-RE;FR;La Réunion
91 | GB-ENG;GB;England
92 | GB-NIR;GB;Northern Ireland
93 | GB-SCT;GB;Scotland
94 | GB-WLS;GB;Wales
95 | IL-D;IL;HaDarom
96 | IL-M;IL;HaMerkaz
97 | IL-Z;IL;HaTsafon
98 | IL-HA;IL;H̱efa
99 | IL-TA;IL;Tel Aviv
100 | IL-JM;IL;Yerushalayim
101 | IN-AP;IN;Andhra Pradesh
102 | IN-AR;IN;Arunāchal Pradesh
103 | IN-AS;IN;Assam
104 | IN-BR;IN;Bihār
105 | IN-CT;IN;Chhattīsgarh
106 | IN-GA;IN;Goa
107 | IN-GJ;IN;Gujarāt
108 | IN-HR;IN;Haryāna
109 | IN-HP;IN;Himāchal Pradesh
110 | IN-JH;IN;Jhārkhand
111 | IN-KA;IN;Karnātaka
112 | IN-KL;IN;Kerala
113 | IN-MP;IN;Madhya Pradesh
114 | IN-MH;IN;Mahārāshtra
115 | IN-MN;IN;Manipur
116 | IN-ML;IN;Meghālaya
117 | IN-MZ;IN;Mizoram
118 | IN-NL;IN;Nāgāland
119 | IN-OR;IN;Odisha
120 | IN-PB;IN;Punjab
121 | IN-RJ;IN;Rājasthān
122 | IN-SK;IN;Sikkim
123 | IN-TN;IN;Tamil Nādu
124 | IN-TG;IN;Telangāna
125 | IN-TR;IN;Tripura
126 | IN-UT;IN;Uttarākhand
127 | IN-UP;IN;Uttar Pradesh
128 | IN-WB;IN;West Bengal
129 | IN-AN;IN;Andaman and Nicobar Islands
130 | IN-CH;IN;Chandigarh
131 | IN-DH;IN;Dādra and Nagar Haveli and Damān and Diu
132 | IN-DL;IN;Delhi
133 | IN-JK;IN;Jammu and Kashmīr
134 | IN-LA;IN;Ladākh
135 | IN-LD;IN;Lakshadweep
136 | IN-PY;IN;Puducherry
137 | MM-07;MM;Ayeyarwady
138 | MM-02;MM;Bago
139 | MM-03;MM;Magway
140 | MM-04;MM;Mandalay
141 | MM-01;MM;Sagaing
142 | MM-05;MM;Tanintharyi
143 | MM-06;MM;Yangon
144 | MM-14;MM;Chin
145 | MM-11;MM;Kachin
146 | MM-12;MM;Kayah
147 | MM-13;MM;Kayin
148 | MM-15;MM;Mon
149 | MM-16;MM;Rakhine
150 | MM-17;MM;Shan
151 | MM-18;MM;Nay Pyi Taw
152 | US-AL;US;Alabama
153 | US-AK;US;Alaska
154 | US-AZ;US;Arizona
155 | US-AR;US;Arkansas
156 | US-CA;US;California
157 | US-CO;US;Colorado
158 | US-CT;US;Connecticut
159 | US-DE;US;Delaware
160 | US-FL;US;Florida
161 | US-GA;US;Georgia
162 | US-HI;US;Hawaii
163 | US-ID;US;Idaho
164 | US-IL;US;Illinois
165 | US-IN;US;Indiana
166 | US-IA;US;Iowa
167 | US-KS;US;Kansas
168 | US-KY;US;Kentucky
169 | US-LA;US;Louisiana
170 | US-ME;US;Maine
171 | US-MD;US;Maryland
172 | US-MA;US;Massachusetts
173 | US-MI;US;Michigan
174 | US-MN;US;Minnesota
175 | US-MS;US;Mississippi
176 | US-MO;US;Missouri
177 | US-MT;US;Montana
178 | US-NE;US;Nebraska
179 | US-NV;US;Nevada
180 | US-NH;US;New Hampshire
181 | US-NJ;US;New Jersey
182 | US-NM;US;New Mexico
183 | US-NY;US;New York
184 | US-NC;US;North Carolina
185 | US-ND;US;North Dakota
186 | US-OH;US;Ohio
187 | US-OK;US;Oklahoma
188 | US-OR;US;Oregon
189 | US-PA;US;Pennsylvania
190 | US-RI;US;Rhode Island
191 | US-SC;US;South Carolina
192 | US-SD;US;South Dakota
193 | US-TN;US;Tennessee
194 | US-TX;US;Texas
195 | US-UT;US;Utah
196 | US-VT;US;Vermont
197 | US-VA;US;Virginia
198 | US-WA;US;Washington
199 | US-WV;US;West Virginia
200 | US-WI;US;Wisconsin
201 | US-WY;US;Wyoming
202 | US-DC;US;District of Columbia
203 | US-AS;US;American Samoa
204 | US-GU;US;Guam
205 | US-MP;US;Northern Mariana Islands
206 | US-PR;US;Puerto Rico
207 | US-UM;US;United States Minor Outlying Islands
208 | US-VI;US;U.S. Virgin Islands
--------------------------------------------------------------------------------
/db/data/sap.common-UnitOfMeasureCodeList.csv:
--------------------------------------------------------------------------------
1 | code;name;descr
2 | EA;Each;Each
3 | length-meter;m;Meter
--------------------------------------------------------------------------------
/db/data/sap.fe.featureShowcase-ChartDataEntities.csv:
--------------------------------------------------------------------------------
1 | ID;parent_ID;uom_code;dimensions;integerValue;forecastValue;targetValue;criticality_code;integerValueWithUoM
2 | 89d6a34b-2a7c-4ba9-a51d-2e94480d42be;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;1;20;30;50;0;20
3 | f9cb6bbc-a4a6-4d84-b68f-c9b602107150;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;2;22;33;54;1;22
4 | ebea68c4-b2c7-46fe-b9dc-a8ee127bb6cb;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;3;24;36;58;2;24
5 | 87b9a9a5-16e2-4a6f-947c-f8979bf9655f;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;4;26;39;62;3;26
6 | 1d046ed5-6b35-4edc-814f-f615fcd3a99a;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;5;28;42;66;0;28
7 | d8ea5976-dee1-4073-b1d2-f8cbd809d981;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;6;30;45;70;1;30
8 | e5d79289-ca89-4acb-8978-a7f11a87f7db;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;7;32;48;74;2;32
9 | 576acb60-c80a-4982-b9e4-4e8e61a479d1;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;8;34;51;78;3;34
10 | 15093019-a69f-48ef-83c0-cf0aa994c0ee;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;9;36;54;82;0;36
11 | f4eec563-de57-4284-9499-ac054259a123;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;10;38;57;86;1;38
12 | b635ed10-539d-4f40-b04b-a7534fb48f99;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;11;40;60;90;2;40
13 | c347bdd7-4b26-4bf9-99d4-e275e6ebd6af;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;12;42;63;94;3;42
14 | 38164966-ef87-4643-b0e9-97ac49ed2138;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;13;44;66;98;0;44
15 | f22487b1-eaf0-417d-9d9d-1dba4975168e;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;14;46;69;102;1;46
16 | 12f8bb36-0dae-4791-9fed-e74ff326a916;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;15;48;72;106;2;48
17 | 7867e7cc-8b31-4091-abf6-0d0ccea00701;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;16;50;75;110;3;50
18 | f483a259-3a03-470a-967d-a50c0ec554d6;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;17;52;78;114;0;52
19 | 920f7d8e-6ca6-43c8-819d-c24ab5b1b48d;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;18;54;81;118;1;54
20 | 982424e1-e9e1-4cb0-a436-314fddfaa50d;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;19;56;84;122;2;56
21 | 48a222b5-39f0-409b-9662-c7e0b118b7a3;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;20;58;87;126;3;58
22 | a3aae1f6-7286-4d2c-a026-d4d6933c7fb1;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;21;60;90;130;0;60
23 | 551dab7c-7cba-4fa6-9d82-4c9c7da2278f;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;22;62;93;134;1;62
24 | 56c40999-b4cc-425a-8fce-54a63b9ccb83;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;23;64;96;138;2;64
25 | 85c94084-f705-4614-a38b-b104509495b4;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;24;66;99;142;3;66
26 | bc2c2b65-8b5d-41f1-b1cf-e5ef950fd656;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;25;68;102;146;0;68
27 | 591ff44a-a7e9-4a28-b8cb-4e4909d1dd3d;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;26;70;105;150;1;70
28 | a0e99fe4-a0ae-4f8e-a6b6-0f51ab0ae71a;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;27;72;108;154;2;72
29 | 03c45a3d-e863-4aeb-8983-b47bcad6fd5d;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;28;74;111;158;3;74
30 | 4f849a45-0463-4cc2-8c38-61bd620a5073;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;29;76;114;162;0;76
31 | 776446fe-1e8b-40e7-8467-7e5deb2fa530;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;length-meter;30;78;117;166;1;78
32 | ac030d47-20d8-4122-8ab2-8086c0ef8d6f;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;1;20;30;50;0;20
33 | a5922adb-9311-4679-a6c7-1efe6fc4bd39;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;2;22;33;54;1;22
34 | 791a26e7-8b22-45fc-ae72-44224d8a4194;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;3;24;36;58;2;24
35 | 7ba50f55-2496-44e6-9f5c-46ccc3806420;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;4;26;39;62;3;26
36 | 6d551fc6-e1f3-4264-ac43-8dd92451200c;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;5;28;42;66;0;28
37 | 2c4a2207-da3c-4892-9b9d-a72aad26bf70;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;6;30;45;70;1;30
38 | 7d337a09-b16a-4e26-acf7-bc64b69638cd;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;7;32;48;74;2;32
39 | e999116a-dce1-441e-a57b-77c079afb30d;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;8;34;51;78;3;34
40 | 3e45d5e3-db78-4998-877e-496b7e9cd5f9;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;9;36;54;82;0;36
41 | 57b3038e-2f23-4ac5-b361-2c9a85501de6;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;10;38;57;86;1;38
42 | ad466ace-50ad-4374-a7b4-204e850890f4;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;11;40;60;90;2;40
43 | 89f6acb4-e5cf-41c0-8840-d236bb8c09c7;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;12;42;63;94;3;42
44 | 8cc7995b-4993-45e6-99ec-ef2a79c558f5;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;13;44;66;98;0;44
45 | f5d2f1f6-f248-46ab-92be-f862417e8d55;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;14;46;69;102;1;46
46 | 8b66804c-4704-4f2b-9df8-20b12713391a;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;15;48;72;106;2;48
47 | 14376d07-babe-43eb-ab76-30d788bcc9f7;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;16;50;75;110;3;50
48 | 9a204e97-c72d-4024-bcb7-5eafbfd843ba;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;17;52;78;114;0;52
49 | d0059afe-0104-4f71-8f77-2c20f1f94605;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;18;54;81;118;1;54
50 | 2db9ea95-11b4-4c42-a8ce-6bacf55d6682;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;19;56;84;122;2;56
51 | 04e18dcb-67b4-4ded-8636-a841c34be0fe;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;20;58;87;126;3;58
52 | a877b3ab-812e-43a0-9237-c9da6a5681cb;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;21;60;90;130;0;60
53 | 39245f56-2e7a-4680-941b-1ef3328bd502;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;22;62;93;134;1;62
54 | 83396c5e-d28f-47c1-98be-9aba192e3e1a;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;23;64;96;138;2;64
55 | 908760ce-648f-456d-87ed-18355978bf16;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;24;66;99;142;3;66
56 | c19961e2-e32d-48a6-9b42-f42c0a852d45;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;25;68;102;146;0;68
57 | 8537e4ac-ab68-4452-bf48-47429f0114aa;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;26;70;105;150;1;70
58 | b331eac8-b32d-4e74-bfad-f471b51237c4;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;27;72;108;154;2;72
59 | da118f72-dc75-4611-baa9-b4a7ccf17b59;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;28;74;111;158;3;74
60 | a4a2dccb-abc7-4bbd-a521-55a1cc925ba4;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;29;76;114;162;0;76
61 | 87750066-a457-42d1-8a1c-709c3b11d25b;c5d24ecb-8b18-459f-be21-4e7d5727fb56;length-meter;30;78;117;166;1;78
62 | eca7380a-9c38-441a-883e-8006fb223e39;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;1;20;30;50;0;20
63 | 3ec45e67-be16-4472-ba25-7fe3653c8a9e;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;2;22;33;54;1;22
64 | a71c252c-ae66-40ae-9537-39bebc8f836e;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;3;24;36;58;2;24
65 | 3325b6e6-cfce-4f64-b944-0624df340385;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;4;26;39;62;3;26
66 | ccd16aec-8cfa-4831-8819-9a302d912638;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;5;28;42;66;0;28
67 | bcbf68e6-b8f4-4714-a0bd-be903647c18e;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;6;30;45;70;1;30
68 | d9c42f52-2df9-412f-a593-eacff4af98ae;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;7;32;48;74;2;32
69 | 45fd4e86-f02e-4b13-8667-96e87cfc5f4a;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;8;34;51;78;3;34
70 | 0dfe267a-fcbf-433f-a66c-eb4dd8aab2b4;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;9;36;54;82;0;36
71 | ea5a892e-86cc-42a4-aa32-948317783842;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;10;38;57;86;1;38
72 | fb9297f5-fed0-467f-b7c6-0540b1548abb;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;11;40;60;90;2;40
73 | e89454bb-c4f8-4c1c-a1d7-de0e7dc66fc6;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;12;42;63;94;3;42
74 | b9c7fd82-e478-496d-a958-73548c237143;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;13;44;66;98;0;44
75 | 3fbdf916-2643-4996-81c9-1b285fb6244e;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;14;46;69;102;1;46
76 | b43d80a6-1681-4623-bfe2-205694fc86c0;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;15;48;72;106;2;48
77 | 4cf86015-96ec-4e63-9432-43571bb5a96c;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;16;50;75;110;3;50
78 | 7c15eca1-aba3-414e-b329-5c93ed0f6019;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;17;52;78;114;0;52
79 | b67700b7-fbe8-4d83-923a-514c79b7e7e0;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;18;54;81;118;1;54
80 | 4a2a32d6-64b5-4ac1-958c-0835fe0d63b2;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;19;56;84;122;2;56
81 | c661ee7b-e3dd-4bae-9550-a09d5b9774cc;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;20;58;87;126;3;58
82 | ea9078f5-d42b-411f-8587-0941136d0e63;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;21;60;90;130;0;60
83 | 44e5e0ab-9133-446b-9900-a4f4258f3479;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;22;62;93;134;1;62
84 | 2753a173-f53b-48d5-9cfd-af48361b569c;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;23;64;96;138;2;64
85 | 925a024c-76a6-49bc-a36c-60b20997624c;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;24;66;99;142;3;66
86 | a755d024-9c81-44e0-8565-bbaec0742a7f;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;25;68;102;146;0;68
87 | d29d9919-2f22-455a-ad15-fd73c6649bfe;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;26;70;105;150;1;70
88 | d9cfebec-5762-403f-adcf-5bd04007cffd;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;27;72;108;154;2;72
89 | c12867e1-0609-45a9-af5a-64412e2e50cd;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;28;74;111;158;3;74
90 | 6dacca86-59cf-47a6-8d3b-a43d2fc69c2c;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;29;76;114;162;0;76
91 | ceab61ff-1e20-48e6-8665-18eda281c41a;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;length-meter;30;78;117;166;1;78
92 | 7a4e2311-50c0-4ad0-9e5a-52b43f3de7de;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;1;20;30;50;0;20
93 | 912389c6-6c7d-4d40-9477-77f9ef8105fe;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;2;22;33;54;1;22
94 | 87ebfd15-bd30-4f92-9add-2cc15f2bfc0a;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;3;24;36;58;2;24
95 | 507a9c6c-babc-45e8-b623-e80df0d56254;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;4;26;39;62;3;26
96 | 74141266-d68b-4425-a821-6f0b8c3ca8a7;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;5;28;42;66;0;28
97 | ac8b6942-b719-4d34-9665-15962f54ab50;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;6;30;45;70;1;30
98 | bb26edeb-8247-4b0f-acea-82f0ef639081;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;7;32;48;74;2;32
99 | 1bd68aca-bf9f-4b60-b7ce-6f3a2434a3b9;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;8;34;51;78;3;34
100 | 3705aab3-84b6-49c2-b83d-43ba8990dd1c;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;9;36;54;82;0;36
101 | aa061a65-8a97-4356-bcf5-e6480fcaecb3;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;10;38;57;86;1;38
102 | 07b39019-5d18-4e4c-a013-bafef7f70d8e;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;11;40;60;90;2;40
103 | eb789e92-1e76-45de-9177-300f2b36ef87;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;12;42;63;94;3;42
104 | bd299e1f-2d1e-4a76-b816-9b6983e9a9dc;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;13;44;66;98;0;44
105 | f2b4ad46-9300-4766-b5a0-2381aef6de23;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;14;46;69;102;1;46
106 | 99ce304c-95e4-473e-bcd5-254365cdef85;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;15;48;72;106;2;48
107 | c8f5b102-d8eb-4a19-be64-a24f1c002e15;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;16;50;75;110;3;50
108 | 7de5aacb-56c9-449c-b2ed-ce39466b4e61;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;17;52;78;114;0;52
109 | 1b94059a-5ae5-4833-9a22-dbd5e25b18cf;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;18;54;81;118;1;54
110 | 3ee53ec6-dfa3-471f-bd8a-bfb908553057;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;19;56;84;122;2;56
111 | c8c526b0-9243-4d8e-bcc5-f868830e172b;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;20;58;87;126;3;58
112 | 8930d3ed-17de-45d9-8802-f96db4f10ed3;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;21;60;90;130;0;60
113 | f9137b5e-2ea0-409d-8955-918a37f11e24;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;22;62;93;134;1;62
114 | f2711d00-4c48-486b-be64-d5a8a39cb8b0;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;23;64;96;138;2;64
115 | 688d5541-d651-415c-b2c2-12fa53c97cf7;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;24;66;99;142;3;66
116 | 8ab7540c-9962-4e9c-960b-2cfdabe9bd9c;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;25;68;102;146;0;68
117 | 26813df3-78e5-4064-a90d-82890b2f4da3;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;26;70;105;150;1;70
118 | 408d3875-c3d8-49ce-ae40-36b82eb35fff;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;27;72;108;154;2;72
119 | c820f8e6-a1f7-4305-85e7-cf7939080de0;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;28;74;111;158;3;74
120 | 44e96b18-585b-44f0-b3c1-430c9bff6589;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;29;76;114;162;0;76
121 | bb4f06a1-0c9e-4b0d-ba5b-9336ccb0c420;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;length-meter;30;78;117;166;1;78
122 |
--------------------------------------------------------------------------------
/db/data/sap.fe.featureShowcase-ChildEntities1.csv:
--------------------------------------------------------------------------------
1 | ID;parent_ID;field;fieldWithPerCent;booleanProperty;criticalityValue_code
2 | 7152266c-d4bd-42d2-85d9-9a770d649c8b;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;child entity 1;22.2; true; 0
3 | b4e967f7-e019-454a-ae84-14791293aad2;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;child entity 2;50.00; false;1
4 | e1892cf1-ac4c-40d6-8b97-57bba50f955f;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;child entity 3;76.9; true; 2
5 | b608d22c-e70c-4770-a6d3-3ad1ab43c4ab;c5d24ecb-8b18-459f-be21-4e7d5727fb56;child entity 4;100; false;3
6 | ebc24684-f13b-48fa-833d-4ec460b7e1f8;c5d24ecb-8b18-459f-be21-4e7d5727fb56;child entity 5;22.2; true; 0
7 | cf19f456-49a2-4f58-bd89-e7ad93a323b8;c5d24ecb-8b18-459f-be21-4e7d5727fb56;child entity 6;50.00; false;1
8 | c612e49e-f50a-4229-9aa5-de31d37008d5;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;child entity 7;76.9; true; 2
9 | e60c158b-5ca4-4ba7-a62b-e464e36469f1;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;child entity 8;100; false;3
10 | 967cef12-5ddd-4490-bafd-21d97190bfd5;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;child entity 9;22.2; true; 0
11 | 9bcfca5d-da0f-4bae-a095-53e3370d0366;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;child entity 10;50.00; false;1
12 | 7719a480-0728-4b66-9254-b9f97d417042;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;child entity 11;76.9; true; 2
13 | 7719a480-0728-4b66-9254-b9f97d417056;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;child entity 12;100; false;3
--------------------------------------------------------------------------------
/db/data/sap.fe.featureShowcase-ChildEntities2.csv:
--------------------------------------------------------------------------------
1 | ID;stringProperty;integerProperty;decimalProperty;country_code
2 | b6451584-d37c-4bb4-b35a-d2327810a143;fieldValue;20;30.2;DE
3 | 05a1bb65-7a6b-459d-9b8e-8c431b75fc97;fieldValue;22;30.3;GB
4 | fd3a66d0-f905-4823-a1c3-b478946638d5;fieldValue;24;30.4;FR
5 | e74af61c-04e0-47fa-997f-ff51299b7242;fieldValue;28;30.5;US
--------------------------------------------------------------------------------
/db/data/sap.fe.featureShowcase-ChildEntities3.csv:
--------------------------------------------------------------------------------
1 | ID;parent_ID;field
2 | 69d63714-0414-11ec-9a03-0242ac130003;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;child entity 13
3 | 69d63bc4-0414-11ec-9a03-0242ac130003;c5d24ecb-8b18-459f-be21-4e7d5727fb56;child entity 14
4 | 69d63cc8-0414-11ec-9a03-0242ac130003;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;child entity 15
5 | 69d63d9a-0414-11ec-9a03-0242ac130003;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;child entity 16
6 | 69d63e58-0414-11ec-9a03-0242ac130003;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;child entity 17
7 | 69d6402e-0414-11ec-9a03-0242ac130003;c5d24ecb-8b18-459f-be21-4e7d5727fb56;child entity 18
8 | 69d640f6-0414-11ec-9a03-0242ac130003;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;child entity 19
9 | 69d641b4-0414-11ec-9a03-0242ac130003;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;child entity 20
--------------------------------------------------------------------------------
/db/data/sap.fe.featureShowcase-Contacts.csv:
--------------------------------------------------------------------------------
1 | ID;name;phone;building;country_code;street;city;postcode
2 | d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;Max Mustermann;123456789;WDF02;DE;Dietmar-Hopp-Allee 16;Walldorf;69190
3 | c5d24ecb-8b18-459f-be21-4e7d5727fb56;Erika Musterfrau;123456789;Victoria Center - Bâtiment A3;FR;20 Chemin de Laporte;Toulouse;31300
4 | 10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;Hans Mustermann;123456789;Millennium Tower;CA;999 de Maisonneuve Boulevard West;Montreal;H3A 3L4
5 | 21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;Christina Musterfrau;123456789;5th Floor G-Block;IN;C-59 BKC Bandra East;Mumbai;400 051
6 |
--------------------------------------------------------------------------------
/db/data/sap.fe.featureShowcase-GrandChildEntities.csv:
--------------------------------------------------------------------------------
1 | ID;parent_ID;field
2 | bd24e73d-77e6-45a0-a0e9-3e8008597964;7152266c-d4bd-42d2-85d9-9a770d649c8b;grandchild_1
3 | b7de8f89-2735-4389-92e4-61abfd049ae3;b4e967f7-e019-454a-ae84-14791293aad2;grandchild_2
4 | 511b4d97-90d0-4f5b-a61f-a5d562a36a40;e1892cf1-ac4c-40d6-8b97-57bba50f955f;grandchild_3
5 | 976f19ed-2a1a-403e-aa23-2430addb2431;b608d22c-e70c-4770-a6d3-3ad1ab43c4ab;grandchild_4
6 | 09f797ee-e49e-42b5-a858-c31a7c800c73;ebc24684-f13b-48fa-833d-4ec460b7e1f8;grandchild_5
7 | a2cad039-3cd5-4105-baa7-2cb324e321a6;cf19f456-49a2-4f58-bd89-e7ad93a323b8;grandchild_6
8 | b1520bc1-f00a-451c-b99e-9d7e91d228b4;c612e49e-f50a-4229-9aa5-de31d37008d5;grandchild_7
9 | 46fc1c6d-f42c-403f-aa22-716f7f88b69d;e60c158b-5ca4-4ba7-a62b-e464e36469f1;grandchild_8
10 | f00d81f1-74c3-47ad-80b4-bf93b56c8957;967cef12-5ddd-4490-bafd-21d97190bfd5;grandchild_9
11 | 0d35b7a3-1091-48cd-b2bd-02c276ebd1ba;9bcfca5d-da0f-4bae-a095-53e3370d0366;grandchild_10
12 | 2da8e772-4697-4f1a-be03-2a7957d8428e;7719a480-0728-4b66-9254-b9f97d417042;grandchild_11
13 | 2db8e772-4697-4f1a-be03-2a7957d8428e;7719a480-0728-4b66-9254-b9f97d417056;grandchild_12
--------------------------------------------------------------------------------
/db/data/sap.fe.featureShowcase-RootEntities.csv:
--------------------------------------------------------------------------------
1 | ID;stringProperty;contact_ID;association2one_ID;email;telephone;dimensions;validFrom;validTo;time;timeStamp;imageUrl;fieldWithUoM;uom_code;fieldWithPrice;isoCurrency_code;fieldWithCriticality;criticality_code;integerValue;forecastValue;targetValue;starsValue;deletePossible;updateHidden;fieldWithURL;fieldWithURLtext;country_code;description;description_customGrowing
2 | d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;Root entity 1 and delete not possible;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;b6451584-d37c-4bb4-b35a-d2327810a143;test.test@sap.com;+49-6227-12383-2;4;2021-01-02;2021-12-28;01:48:15;2021-01-01T00:00:00Z;sap-icon://lab;2000.123;length-meter;400;EUR;Neutral;0;20;25;30;3;false;false;https://www.sap.com;SAP;DE;Lorem ipsum dolor sit amet, \n consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.;Lorem ipsum dolor sit amet, \n consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
3 | c5d24ecb-8b18-459f-be21-4e7d5727fb56;Root entity 2 and update not possible;c5d24ecb-8b18-459f-be21-4e7d5727fb56;05a1bb65-7a6b-459d-9b8e-8c431b75fc97;test.test@sap.com;+49-6227-12383-2;6;2021-01-02;2021-12-29;09:15:10;2019-01-01T00:00:00Z;/media/crate.png;2100.123;EA;300;JPY;Negative;1;22;34;32;1.2;true;true;https://www.sap.com;SAP;FR;Lorem ipsum dolor sit amet, \n consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.;Lorem ipsum dolor sit amet, \n consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
4 | 10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;Root entity 3;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;fd3a66d0-f905-4823-a1c3-b478946638d5;test.test@sap.com;+49-6227-12383-2;6;2021-01-03;2021-12-30;23:59:30;2022-01-01T00:00:00Z;/media/bigBen.png;2200.123;EA;200;TND;Critical;2;24;38;34;2.5;true;false;https://www.sap.com;SAP;IN;Lorem ipsum dolor sit amet, \n consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.;Lorem ipsum dolor sit amet, \n consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
5 | 21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;Root entity 4;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;e74af61c-04e0-47fa-997f-ff51299b7242;test.test@sap.com;+49-6227-12383-2;10;2021-01-04;2021-12-31;12:34:56;2020-01-01T00:00:00Z;sap-icon://cart;700.123;EA;100;USD;Positive;3;28;42;38;1.9;true;false;https://www.sap.com;SAP;DE;Lorem ipsum dolor sit amet, \n consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.;Lorem ipsum dolor sit amet, \n consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
6 |
--------------------------------------------------------------------------------
/db/data/sap.fe.featureShowcase-RootEntityVariants.csv:
--------------------------------------------------------------------------------
1 | ID;stringProperty;contact_ID;fieldWithUoM;uom_code;fieldWithPrice;isoCurrency_code;fieldWithCriticality;criticality_code;integerValue;forecastValue;starsValue
2 | z419b9d9-897e-4e1f-9a7d-6a16e3c8f776;RootEntity Variant 1;d419b9d9-897e-4e1f-9a7d-6a16e3c8f776;2000;length-meter;400;EUR;Neutral;0;20;25;3
3 | z5d24ecb-8b18-459f-be21-4e7d5727fb56;RootEntity Variant 2;c5d24ecb-8b18-459f-be21-4e7d5727fb56;2100;EA;300;JPY;Negative;1;22;34;1.2
4 | z0cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;RootEntity Variant 3;10cb1ac9-bc9c-408b-b44d-e2ea1d5c353d;2200;EA;200;SGD;Critical;2;24;38;2.5
5 | z1541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;RootEntity Variant 4;21541b40-f5a6-4e5c-bb86-b0c0fcbb7bea;700;EA;100;USD;Positive;3;28;42;1.9
--------------------------------------------------------------------------------
/db/data/sap.fe.featureShowcase-Singleton.csv:
--------------------------------------------------------------------------------
1 | enabled;disabled
2 | true;false
3 |
--------------------------------------------------------------------------------
/db/schema.cds:
--------------------------------------------------------------------------------
1 | using {
2 | Country,
3 | sap.common.CodeList as CodeList,
4 | cuid,
5 | Currency,
6 | managed,
7 | sap,
8 | } from '@sap/cds/common';
9 | using {
10 | sap.common.Region,
11 | sap.common.UnitOfMeasure,
12 | sap.common.Criticality
13 | } from '../db/common.cds';
14 |
15 | namespace sap.fe.featureShowcase;
16 |
17 | aspect rootBasis : {
18 | imageUrl : String;
19 | stringProperty : String;
20 | integerValue : Integer;
21 | forecastValue : Integer;
22 | targetValue : Integer default 30;
23 | dimensions : Integer;
24 |
25 | starsValue : Decimal;
26 |
27 | contact : Association to one Contacts;
28 | criticality_code : Integer;
29 | criticality : Association to one Criticality on criticality.code = criticality_code;
30 |
31 | fieldWithUoM : Decimal(15,3);
32 | uom : UnitOfMeasure;
33 |
34 | fieldWithPrice : Decimal(12,3);
35 | isoCurrency : Currency;
36 |
37 | fieldWithCriticality : String;
38 |
39 | deletePossible : Boolean;
40 | updateHidden : Boolean;
41 | fieldWithURL : String;
42 | fieldWithURLtext : String;
43 |
44 | email : String;
45 | telephone : String;
46 |
47 | country : Country;
48 | region : Region;
49 |
50 | validFrom : Date; //Search-Term: #TimeAndDate
51 | validTo : DateTime;
52 | time : Time;
53 | timeStamp : Timestamp;
54 |
55 | description : String(1000);
56 | description_customGrowing : String(1000);
57 | };
58 |
59 | entity RootEntities : cuid, managed, rootBasis {
60 | childEntities1 : Composition of many ChildEntities1
61 | on childEntities1.parent = $self;
62 | association2one : Association to one ChildEntities2;
63 | childEntities3 : Composition of many ChildEntities3
64 | on childEntities3.parent = $self;
65 | chartEntities : Composition of many ChartDataEntities
66 | on chartEntities.parent = $self;
67 | regions : Composition of many AssignedRegions on regions.root = $self;
68 | };
69 |
70 | //Entity only used to demonstrate Multiple Views on List Report with multiple entities
71 | entity RootEntityVariants : cuid, managed, rootBasis {};
72 |
73 | entity ChildEntities1 : cuid {
74 | parent : Association to one RootEntities;
75 | field : String;
76 | fieldWithPerCent : Decimal(5,2);
77 | booleanProperty : Boolean default false;
78 | criticalityValue : Association to one Criticality;
79 | grandChildren : Composition of many GrandChildEntities
80 | on grandChildren.parent = $self;
81 | }
82 |
83 | entity GrandChildEntities : cuid {
84 | parent : Association to one ChildEntities1;
85 | field : String;
86 | }
87 |
88 | //@cds.odata.valuelist -- enables automatic value list with keys on UI
89 | entity ChildEntities2 : cuid {
90 | stringProperty : String;
91 | integerProperty : Integer;
92 | decimalProperty : Decimal(5, 3);
93 | country : Country;
94 | }
95 |
96 | entity ChildEntities3 : cuid {
97 | parent : Association to one RootEntities;
98 | field : String;
99 | }
100 |
101 | entity ChartDataEntities : cuid {
102 | parent : Association to one RootEntities;
103 | criticality : Association to one Criticality;
104 | integerValue : Integer;
105 | integerValueWithUoM : Integer;
106 | uom : UnitOfMeasure;
107 | forecastValue : Integer;
108 | targetValue : Integer default 30;
109 | dimensions : Integer;
110 |
111 | areaChartToleranceUpperBoundValue : Integer default 90;
112 | areaChartToleranceLowerBoundValue : Integer default 80;
113 | areaChartDeviationUpperBoundValue : Integer default 50;
114 | areaChartDeviationLowerBoundValue : Integer default 0;
115 | }
116 |
117 | entity Contacts : cuid {
118 | name : String;
119 | phone : String;
120 | building : String;
121 | country : Country;
122 | street : String;
123 | city : String;
124 | postCode : String;
125 | addressLabel : String;
126 | photoUrl : String;
127 | }
128 |
129 | entity AssignedRegions : cuid {
130 | root : Association to one RootEntities;
131 | region: Region;
132 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "feature-showcase",
3 | "version": "1.0.0",
4 | "description": "A simple CAP project to demonstrate different FEv4 List Report & Oject Page features.",
5 | "repository": {
6 | "type": "git",
7 | "url": "git@github.com:SAP-samples/fiori-elements-feature-showcase.git"
8 | },
9 | "license": "UNLICENSED",
10 | "private": true,
11 | "dependencies": {
12 | "@sap/cds": "^8.2",
13 | "cds-launchpad-plugin": "^2.0.1",
14 | "content-disposition": "^0.5.3",
15 | "express": "^4"
16 | },
17 | "devDependencies": {
18 | "@cap-js/sqlite": "^1.1.0",
19 | "@sap/ux-specification": "^1.90.12"
20 | },
21 | "scripts": {
22 | "start": "cds run"
23 | },
24 | "eslintConfig": {
25 | "extends": "eslint:recommended",
26 | "env": {
27 | "es2020": true,
28 | "node": true,
29 | "jest": true,
30 | "mocha": true
31 | },
32 | "globals": {
33 | "SELECT": true,
34 | "INSERT": true,
35 | "UPDATE": true,
36 | "DELETE": true,
37 | "CREATE": true,
38 | "DROP": true,
39 | "CDL": true,
40 | "CQL": true,
41 | "CXL": true,
42 | "cds": true
43 | },
44 | "rules": {
45 | "no-console": "off",
46 | "require-atomic-updates": "off"
47 | }
48 | },
49 | "sapux": [
50 | "app/featureShowcase",
51 | "app/featureShowcaseNavigationTarget"
52 | ],
53 | "cds": {
54 | "launchpad": {
55 | "version": "1.132.0"
56 | }
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/readmeImages/app-screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAP-samples/fiori-elements-feature-showcase/83a607cea1d4e12077a0470b209e57e7526bb0c9/readmeImages/app-screenshot.png
--------------------------------------------------------------------------------
/srv/service.cds:
--------------------------------------------------------------------------------
1 | using {sap.fe.featureShowcase as persistence} from '../db/schema';
2 | using {sap.common as common} from '../db/common';
3 |
4 | service service1 @(path : '/srv1') {
5 |
6 | @Capabilities.SortRestrictions.NonSortableProperties : [createdAt,createdBy,modifiedAt,modifiedBy]
7 | entity RootEntities as select from persistence.RootEntities actions {
8 | //Search-Terms: #BoundAction, #SideEffect
9 | @(
10 | //Update the UI after action
11 | Common.SideEffects : {
12 | TargetProperties : ['in/criticality_code','in/fieldWithCriticality']
13 | }
14 | )
15 | action changeCriticality (
16 | //Value Helper for the Input Parameter
17 | //Search-Term: #ValueHelpParameter
18 | @(
19 | title : '{i18n>newCriticality}',
20 | UI.ParameterDefaultValue : in.criticality_code,
21 | Common : {
22 | ValueListWithFixedValues : true,
23 | ValueList : {
24 | Label : '{i18n>Criticality}',
25 | CollectionPath : 'Criticality',
26 | Parameters : [
27 | {
28 | $Type : 'Common.ValueListParameterInOut',
29 | ValueListProperty : 'code',
30 | LocalDataProperty : newCriticality
31 | },
32 | {
33 | $Type : 'Common.ValueListParameterDisplayOnly',
34 | ValueListProperty : 'name'
35 | },
36 | ]
37 | }
38 | }
39 | )
40 | newCriticality : Integer
41 | );
42 |
43 | //Search-Term: #BoundAction
44 | action changeProgress (
45 | @(
46 | title : '{i18n>newProgress}',
47 | UI.ParameterDefaultValue : 50
48 | )
49 | newProgress : Integer
50 | );
51 |
52 | @(
53 | //Update the UI after action
54 | Common.SideEffects : {
55 | TargetEntities : [in]
56 | }
57 | )
58 | action resetEntities(
59 | in: many $self
60 | );
61 | };
62 | //Search-Terms: #UnboundAction
63 | @Core.OperationAvailable: {$edmJson: {$Path: '/Singleton/enabled'}}
64 | action unboundAction(@(title : '{i18n>inputValue}')input : String);
65 |
66 | action criticalAction();
67 |
68 |
69 | entity ChildEntities1 as projection on persistence.ChildEntities1;
70 | entity ChildEntities2 as projection on persistence.ChildEntities2;
71 | entity ChildEntities3 as projection on persistence.ChildEntities3;
72 |
73 | entity ChartDataEntities as projection on persistence.ChartDataEntities;
74 | entity GrandChildEntities as projection on persistence.GrandChildEntities;
75 |
76 | @readonly
77 | entity RootEntityVariants as projection on persistence.RootEntityVariants;
78 | @readonly
79 | entity Contacts as projection on persistence.Contacts;
80 |
81 | //Entity used for semantic key filter
82 | @odata.draft.enabled : false
83 | @readonly
84 | entity RootEntitySemanticKeys as select from RootEntities {
85 | key stringProperty
86 | };
87 |
88 | @readonly
89 | entity Countries as projection on common.Countries;
90 | @readonly
91 | entity Currencies as projection on common.Currencies;
92 | @readonly
93 | entity Criticality as projection on common.Criticality;
94 | @readonly
95 | entity UnitOfMeasureCodeList as projection on common.UnitOfMeasureCodeList;
96 |
97 | @odata.singleton
98 | @readonly
99 | entity Singleton {
100 | createHidden: Boolean;
101 | enabled: Boolean;
102 | };
103 | }
104 |
--------------------------------------------------------------------------------
/srv/service.js:
--------------------------------------------------------------------------------
1 | const cds = require("@sap/cds");
2 |
3 | module.exports = async (srv) => {
4 |
5 | const {Singleton, RootEntities,ChildEntities1,ChildEntities2,ChildEntities3,GrandChildEntities,ChartDataEntities, Contacts, Countries,Criticality,Currencies,UnitOfMeasureCodeList} = srv.entities;
6 |
7 | srv.on('READ', Singleton, (req) => {
8 | const response = {
9 | createHidden: false,
10 | enabled: true
11 | }
12 | req.reply(response)
13 | })
14 |
15 | srv.after(["READ"],RootEntities, async (response) => {
16 | //To avoid issues with cds watch when it is reloading
17 | if(!response) return;
18 |
19 | //Create Address Label of contact
20 | //The address label is a property which contains all address information of a contact in a single string
21 | //To avoid managing the properties itself and the string, the concatination is done
22 | //The concatination is only done, if the addressLabel is requested and the contact ID is available
23 | if(response.hasOwnProperty('contact') && response.contact.addressLabel === null) {
24 | //Requesting the
25 | const contact = await SELECT.one.from(Contacts,response.contact.ID, contact => {
26 | contact.ID, contact.building, contact.street, contact.postCode, contact.city, contact.country (country => {
27 | country.name
28 | })
29 | });
30 | response.contact.addressLabel = `${contact.building}\n${contact.street}\n${contact.postCode} ${contact.city}\n${contact.country.name}`;
31 | await UPDATE(Contacts,response.contact.ID).with({addressLabel : response.contact.addressLabel}); //Update the persistence with the generated value
32 | }
33 |
34 | //Calculate Chart Criticality Values
35 | //Only calculate, if the chartEntities (source) is part of the request and is not empty (would be useless to calculate)
36 | if(response.hasOwnProperty('chartEntities') && response.chartEntities.length > 0) {
37 | //If the forecast or target Value is not given, they should be requested and when the request is empty they should be generated
38 | //Both value are needed to fill in the values needed for the criticality calculation
39 | if(!response.chartEntities[0].hasOwnProperty('forecastValue') || !response.chartEntities[0].hasOwnProperty('targetValue')) {
40 | //Requesting all chart entities and create a map, where the chart entity Id is key and an object containing target and forecast value is the value
41 | const chartEntities = new Map((await SELECT.from(ChartDataEntities, item => {
42 | item.ID, item.forecastValue, item.targetValue
43 | }).where({parent_ID : response.ID})).map(key => [key.ID, { forecastValue: key.forecastValue, targetValue: key.targetValue }]));
44 | //Calculating the forcast and target Value of each chart entity
45 | response.chartEntities.forEach(async e => {
46 | e.forecastValue = (chartEntities.get(e.ID) != undefined) ? chartEntities.get(e.ID).forecastValue : e.integerValue + 10;
47 | e.targetValue = (chartEntities.get(e.ID) != undefined) ? chartEntities.get(e.ID).targetValue : e.integerValue + 20;
48 | })
49 | }
50 | //Calculate the values important for the criticality calculation
51 | //This is done to avoid manageing all these value in the csv file
52 | response.chartEntities.forEach(e => {
53 | e.areaChartToleranceUpperBoundValue = e.integerValue + Math.round((e.integerValue / e.targetValue) *5 + 15);
54 | e.areaChartToleranceLowerBoundValue = e.integerValue - Math.round((e.integerValue / e.targetValue) *5 + 15);
55 | e.areaChartDeviationUpperBoundValue = e.forecastValue + Math.round((e.integerValue / e.forecastValue) *10 + 30);
56 | e.areaChartDeviationLowerBoundValue = e.forecastValue - Math.round((e.integerValue / e.forecastValue) *10 + 30);
57 | });
58 | }
59 | });
60 |
61 | //Filling of properties, when a new RootEntity is created
62 | srv.before('NEW',RootEntities, async (req) => {
63 | req.data.contact_ID = (await SELECT.one.from(Contacts, contact => {contact.ID})).ID; //Default Contact to prevent Error when creating address label
64 | //Generating chart entities, so the charts are not empty - the user has no option to fill in chart entity values in the UI
65 | req.data.chartEntities = [];
66 | for(let i = 1; i <= 10; i++) {
67 | req.data.chartEntities.push({
68 | ID : cds.utils.uuid(),
69 | parent_ID : req.data.ID,
70 | uom_code : 'EA',
71 | dimensions : i,
72 | integerValue : i+30,
73 | forecastValue : i*2+35,
74 | targetValue : i*1.6+36,
75 | criticality_code : i % 4,
76 | DraftAdministrativeData_DraftUUID : req.data.DraftAdministrativeData_DraftUUID
77 | });
78 | }
79 | })
80 |
81 | //=============================================================================================================
82 | // Actions
83 | //=============================================================================================================
84 |
85 | srv.on("changeCriticality",RootEntities, async (req) => {
86 | //Req.data contains the parameter values of the action
87 | //Req.params contains IDs and Draft IDs of the entity
88 | const criticality_code = req.data.newCriticality, headerID = req.params[0].ID;
89 | //Update the current RootEntity with the new value for ciritcality_code and fieldWithCriticality
90 | return UPDATE(RootEntities,headerID).with({criticality_code : criticality_code, fieldWithCriticality : determineFieldWithCriticalityValue(criticality_code)});
91 | });
92 |
93 | function determineFieldWithCriticalityValue(criticality_code) {
94 | let fieldWithCriticality = '';
95 | switch(criticality_code) {
96 | case 0:
97 | fieldWithCriticality = 'Neutral'
98 | break;
99 | case 1:
100 | fieldWithCriticality = 'Negative'
101 | break;
102 | case 2:
103 | fieldWithCriticality = 'Critical'
104 | break;
105 | case 3:
106 | fieldWithCriticality = 'Positive'
107 | break;
108 | case 5:
109 | fieldWithCriticality = 'New Item'
110 | break;
111 | default:
112 | fieldWithCriticality = 'Unknown criticality';
113 | break;
114 | }
115 | return fieldWithCriticality;
116 | }
117 |
118 |
119 | srv.on("changeProgress",RootEntities, async (req) => {
120 | const integerValue = req.data.newProgress, headerID = req.params[0].ID;
121 | return UPDATE(RootEntities,headerID).with({integerValue})
122 | });
123 |
124 | //Returns the input parameter as a message to the front end. The message will show up in a dialog.
125 | srv.on("unboundAction", async req => {
126 | return req.info(`INPUT: ${req.data.input}`);
127 | });
128 |
129 | //Returns a message toast at the bottom of the screen, indicating that the action was triggered.
130 | srv.on("criticalAction", async req => {
131 | return req.notify(`Critical action pressed`); //Search-Term: #MessageToast
132 | });
133 |
134 | //Reseting all entities to there default state
135 | srv.on("resetEntities", async req => {
136 | //Delete current data
137 | await cleanUpDatabaseEntities();
138 | //Create new entities
139 | const countRootEntities = 4;
140 | const association2oneIDs = await createChildEntities2(countRootEntities);
141 | const rootEntities = [];
142 | const imageUrls = ['sap-icon://lab','/media/crate.png','/media/bigBen.png','sap-icon://cart']
143 | const contacts = await SELECT.from(Contacts).columns('ID');
144 | const unitOfMeasures = await SELECT.from(UnitOfMeasureCodeList).columns('code');
145 | const currencies = await SELECT.from(Currencies).columns('code');
146 | const criticaityCodes = await SELECT.from(Criticality).columns('code');
147 | const countries = await SELECT.from(Countries).columns('code');
148 | for(let i = 0; i < countRootEntities; i++) {
149 | const date = new Date();
150 | let date2 = new Date(date.toISOString());
151 | date2.setMonth(date2.getMonth()+3);
152 | let uuid = cds.utils.uuid();
153 | rootEntities.push({
154 | ID: uuid,
155 | contact_ID: (i >= contacts.length) ? contacts[0].ID : contacts[i].ID,
156 | association2one_ID: association2oneIDs[i],
157 | imageUrl: (i >= imageUrls.length) ? imageUrls[0] : imageUrls[i],
158 | uom_code: (i >= unitOfMeasures.length) ? unitOfMeasures[0].code : unitOfMeasures[i].code,
159 | isoCurrency_code: (i >= currencies.length) ? currencies[0].code : currencies[i].code,
160 | criticality_code: (i >= criticaityCodes.length) ? criticaityCodes[0].code : criticaityCodes[i].code,
161 | country_code: (i >= countries.length) ? countries[0].code : countries[i].code,
162 | //Calculating values, just to have values for the UI. The generation has no special logic behind it.
163 | stringProperty: (i===0) ? `Root entity ${i+1} and delete not possible` : (i===1) ? `Root entity ${i+1} and update not possible` : `Root entity ${i+1}`,
164 | deletePossible: (i===0) ? false : true,
165 | updateHidden: (i===1) ? true : false,
166 | dimensions: ((i+1)*2===6) ? i*2 : (i+1)*2, //manipulate values, that two entities have one dimension for demonstrating aggregation on ALP floorplan
167 | validFrom: date.toISOString().substring(0,11),
168 | validTo: date2.toISOString().substring(0,11),
169 | time: `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`,
170 | timeStamp: date.toISOString(),
171 | fieldWithUoM: i*49+49,
172 | fieldWithPrice: i*100,
173 | fieldWithCriticality: determineFieldWithCriticalityValue((i === criticaityCodes.length) ? criticaityCodes[0] : criticaityCodes[i]),
174 | integerValue: 20+2*i,
175 | forecastValue: 20+2*i+(10*i),
176 | targetValue: 20+2*i+(10*(i+2)),
177 | starsValue: (Math.random()*40)/10, //Value has to be between 0 and 4
178 | //Fixed properties
179 | email: 'test.test@sap.com',
180 | telephone: '+49-6227-12383-2',
181 | fieldWithURL: 'https://www.sap.com;',
182 | fieldWithURLtext: 'SAP',
183 | description: 'Lorem ipsum dolor sit amet, \n consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.',
184 | //Compositions to many:
185 | childEntities1: await createChildEntities1(3,uuid),
186 | childEntities3: await createChildEntities3(2,uuid),
187 | chartEntities: await createChartEntities(10,uuid),
188 | });
189 | }
190 | await cds.tx(req).run(INSERT.into(RootEntities).entries(rootEntities));
191 | return req.notify(`All entitiy data has been reseted!`);
192 | });
193 |
194 | async function createChildEntities2(countRootEntities) {
195 | const childEntities2IDs = [];
196 | for(let i = 0; i <= countRootEntities; i++) {
197 | childEntities2IDs.push(cds.utils.uuid());
198 | }
199 | const childEntities2 = [];
200 | for(let i = 0; i <= countRootEntities; i++) {
201 | childEntities2.push({
202 | ID: childEntities2IDs[i],
203 | stringProperty: 'fieldValue',
204 | integerProperty: i*2+20,
205 | decimalProperty: 30+i/10,
206 | country_code: 'FR',
207 | });
208 | }
209 | await INSERT.into(ChildEntities2).entries(childEntities2);
210 | //Returns the IDs, so they can be assigned to the association2one_ID property of the RootEntities
211 | return childEntities2IDs;
212 | }
213 |
214 | async function createChildEntities1(amount, parent_ID) {
215 | let childEntities1 = [];
216 | for(let i = 0; i < amount; i++) {
217 | let grandChildEntities = [];
218 | for(let i = 1; i <= amount; i++) {
219 | grandChildEntities.push({
220 | field: `grandchild ${i}`
221 | });
222 | }
223 |
224 | childEntities1.push({
225 | ID: cds.utils.uuid(),
226 | parent_ID: parent_ID,
227 | //Calculating values, just to have values for the UI. The generation has no special logic behind it.
228 | fieldWithPerCent: (Math.random()+0.1)*100,
229 | booleanProperty: (Math.random() > 0.5) ? true : false,
230 | criticalityValue_code: (i%2===0) ? 1 : (i%3===0) ? 2 : (i%5===0) ? 3 : 0,
231 | field: `child entity ${i}`,
232 | grandChildren: grandChildEntities,
233 | });
234 | }
235 | return childEntities1;
236 | }
237 |
238 | async function createChildEntities3(amount, parent_ID) {
239 | let childEntities3 = [];
240 | for(let i = 0; i < amount; i++) {
241 | childEntities3.push({
242 | ID: cds.utils.uuid(),
243 | parent_ID: parent_ID,
244 | field: `child entity ${i}`,
245 | });
246 | }
247 | return childEntities3;
248 | }
249 |
250 | async function createChartEntities(amount, parent_ID) {
251 | let chartEntities = [];
252 | for(let i = 1; i <= amount; i++) {
253 | chartEntities.push({
254 | ID : cds.utils.uuid(),
255 | parent_ID : parent_ID,
256 | uom_code : 'EA',
257 | dimensions : i,
258 | integerValue : i+30,
259 | forecastValue : i*2+35,
260 | targetValue : i*1.6+36,
261 | criticality_code : i % 4
262 | });
263 | }
264 | console.log("Created Chart Data Entities!");
265 | return chartEntities;
266 | }
267 |
268 | async function cleanUpDatabaseEntities() {
269 | await DELETE.from(RootEntities);
270 | await DELETE.from(ChildEntities1);
271 | await DELETE.from(ChildEntities2);
272 | await DELETE.from(ChildEntities3);
273 | await DELETE.from(ChartDataEntities);
274 | await DELETE.from(GrandChildEntities);
275 | }
276 | };
--------------------------------------------------------------------------------