@sap/cds-dk 9.4.3 → 9.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +77 -0
- package/bin/compile/index.js +1 -1
- package/bin/export.js +1 -1
- package/bin/help.js +0 -1
- package/bin/import.js +8 -3
- package/bin/repl.js +7 -11
- package/bin/up.js +150 -20
- package/bin/util/containerize.js +66 -25
- package/bin/version.js +4 -4
- package/lib/bind/k8s.js +1 -1
- package/lib/build/plugins/helm/files/templates/_deployment_helpers.tpl +1 -1
- package/lib/build/plugins/helm/index.js +1 -1
- package/lib/build/provider/hana/2migration.js +16 -24
- package/lib/build/provider/hana/index.js +1 -1
- package/lib/build/provider/hana/template/.hdiconfig-all +7 -1
- package/lib/build/provider/hana/template/package.json +1 -1
- package/lib/build/provider/internalBuildPlugin.js +15 -1
- package/lib/build/provider/java/index.js +12 -1
- package/lib/build/provider/mtx-sidecar/index.js +2 -1
- package/lib/build/provider/nodejs/index.js +2 -1
- package/lib/build/util.js +3 -3
- package/lib/compile/to_openapi.js +1 -5
- package/lib/import/common.js +2 -1
- package/lib/import/odata/ParserContext.js +1 -0
- package/lib/import/odata/v4parser.js +48 -3
- package/lib/import/openapi/importOpenAPI.js +6 -1
- package/lib/init/constants.js +1 -1
- package/lib/init/index.js +15 -6
- package/lib/init/merge.js +16 -0
- package/lib/init/projectReader.js +19 -4
- package/lib/init/registries/mta.js +2 -2
- package/lib/init/template/ams/index.js +1 -1
- package/lib/init/template/app-frontend/files/app-package.json.hbs +1 -7
- package/lib/init/template/app-frontend/files/ui5.yaml.hbs +20 -1
- package/lib/init/template/app-frontend/index.js +0 -4
- package/lib/init/template/application-logging/index.js +9 -14
- package/lib/init/template/approuter/files/mta.yaml.hbs +0 -2
- package/lib/init/template/approuter/index.js +6 -7
- package/lib/init/template/cloud-logging/index.js +2 -3
- package/lib/init/template/containerize/files/containerize.yaml.hbs +17 -2
- package/lib/init/template/containerize/index.js +0 -4
- package/lib/init/template/data/as-json.js +18 -20
- package/lib/init/template/dynatrace/index.js +0 -2
- package/lib/init/template/github-actions/files/workflows/cf.yaml.hbs +16 -1
- package/lib/init/template/github-actions/files/workflows/test.yaml.hbs +20 -0
- package/lib/init/template/github-actions/index.js +5 -8
- package/lib/init/template/hana/files/db/package.json +2 -2
- package/lib/init/template/hana/files/mta.yaml.hbs +0 -4
- package/lib/init/template/hana/index.js +3 -5
- package/lib/init/template/helm/index.js +2 -7
- package/lib/init/template/helm-unified-runtime/index.js +0 -4
- package/lib/init/template/html5-repo/files/app-package.json.hbs +1 -7
- package/lib/init/template/html5-repo/files/ui5.yaml.hbs +20 -1
- package/lib/init/template/html5-repo/index.js +6 -12
- package/lib/init/template/ias/files/values.yaml.hbs +6 -6
- package/lib/init/template/ias/index.js +12 -20
- package/lib/init/template/kyma/index.js +14 -1
- package/lib/init/template/malware-scanner/files/mta.yaml.hbs +3 -1
- package/lib/init/template/malware-scanner/files/values.yaml +3 -1
- package/lib/init/template/multitenancy/files/mta.yaml.hbs +1 -3
- package/lib/init/template/multitenancy/files/values.yaml.hbs +8 -0
- package/lib/init/template/multitenancy/index.js +8 -3
- package/lib/init/template/nodejs/files/package.json.hbs +1 -1
- package/lib/init/template/pipeline/files/app-package.json.hbs +1 -7
- package/lib/init/template/pipeline/files/ui5.yaml.hbs +20 -1
- package/lib/init/template/pipeline/index.js +1 -2
- package/lib/init/template/portal/files/mta.yaml.hbs +5 -3
- package/lib/init/template/portal/index.js +3 -6
- package/lib/init/template/sample/files/_i18n/i18n_de.properties +12 -0
- package/lib/init/template/sample/files/_i18n/i18n_en.properties +21 -0
- package/lib/init/template/sample/files/_i18n/i18n_fr.properties +20 -0
- package/lib/init/template/sample/files/_i18n/messages_de.properties +34 -0
- package/lib/init/template/sample/files/_i18n/messages_en.properties +34 -0
- package/lib/init/template/sample/files/_i18n/messages_fr.properties +34 -0
- package/lib/init/template/sample/files/app/_i18n/i18n_de.properties +0 -26
- package/lib/init/template/sample/files/app/_i18n/i18n_en.properties +8 -0
- package/lib/init/template/sample/files/app/admin-authors/fiori-service.cds +52 -0
- package/lib/init/template/sample/files/app/admin-authors/webapp/Component.js.hbs +3 -0
- package/lib/init/template/sample/files/app/admin-authors/webapp/i18n/i18n.properties +11 -0
- package/lib/init/template/sample/files/app/admin-authors/webapp/manifest.json +130 -0
- package/lib/init/template/sample/files/app/admin-books/fiori-service.cds +81 -88
- package/lib/init/template/sample/files/app/admin-books/webapp/Component.js.hbs +3 -0
- package/lib/init/template/sample/files/app/admin-books/webapp/i18n/i18n.properties +10 -2
- package/lib/init/template/sample/files/app/admin-books/webapp/manifest.json +24 -48
- package/lib/init/template/sample/files/app/appconfig/fioriSandboxConfig.json +54 -3
- package/lib/init/template/sample/files/app/browse/fiori-service.cds +30 -30
- package/lib/init/template/sample/files/app/browse/webapp/Component.js.hbs +3 -0
- package/lib/init/template/sample/files/app/browse/webapp/i18n/i18n.properties +10 -3
- package/lib/init/template/sample/files/app/browse/webapp/manifest.json +18 -23
- package/lib/init/template/sample/files/app/common.cds +126 -158
- package/lib/init/template/sample/files/app/fiori-apps.html +30 -0
- package/lib/init/template/sample/files/app/genres/fiori-service.cds +33 -0
- package/lib/init/template/sample/files/app/genres/tree-view.cds +42 -0
- package/lib/init/template/sample/files/app/genres/value-help.cds +6 -0
- package/lib/init/template/sample/files/app/genres/webapp/Component.js.hbs +3 -0
- package/lib/init/template/sample/files/app/genres/webapp/i18n/i18n.properties +4 -0
- package/lib/init/template/sample/files/app/genres/webapp/i18n/i18n_de.properties +2 -0
- package/lib/init/template/sample/files/app/genres/webapp/manifest.json +126 -0
- package/lib/init/template/sample/files/app/services.cds +6 -2
- package/lib/init/template/sample/files/db/currencies.cds +13 -0
- package/lib/init/template/sample/files/db/data/sap.capire.bookshop-Books.csv +5 -5
- package/lib/init/template/sample/files/db/data/{sap.capire.bookshop-Books_texts.csv → sap.capire.bookshop-Books.texts.csv} +4 -4
- package/lib/init/template/sample/files/db/data/sap.capire.bookshop-Genres.csv +42 -15
- package/lib/init/template/sample/files/db/data/sap.common-Currencies.csv +12 -0
- package/lib/init/template/sample/files/db/data/sap.common-Currencies.texts.csv +15 -0
- package/lib/init/template/sample/files/db/hana/index.cds +10 -0
- package/lib/init/template/sample/files/db/schema.cds +35 -22
- package/lib/init/template/sample/files/db/sqlite/index.cds +10 -0
- package/lib/init/template/sample/files/package.json.hbs +14 -1
- package/lib/init/template/sample/files/srv/access-control.cds +3 -0
- package/lib/init/template/sample/files/srv/admin-service.cds +3 -2
- package/lib/init/template/sample/files/srv/cat-service.cds +7 -11
- package/lib/init/template/sample/index.js +26 -17
- package/lib/init/template/telemetry/index.js +1 -3
- package/lib/init/template/typescript/files/package.json +1 -1
- package/lib/init/template/workzone-standard/files/mta.yaml.hbs +0 -5
- package/lib/init/template/workzone-standard/index.js +0 -1
- package/lib/init/template/xsuaa/files/mta.yaml.hbs +4 -0
- package/lib/init/template/xsuaa/index.js +3 -5
- package/lib/lint/Linter.js +10 -4
- package/lib/lint/eslintHelp.json +1 -1
- package/lib/mtx/tenant_action.js +12 -4
- package/lib/util/checksum.js +32 -0
- package/lib/util/question.js +60 -7
- package/npm-shrinkwrap.json +59 -35
- package/package.json +2 -2
- package/lib/init/template/app-frontend/files/ui5-deploy.yaml.hbs +0 -25
- package/lib/init/template/github-actions/files/cf-setup/action.yaml +0 -53
- package/lib/init/template/html5-repo/files/ui5-deploy.yaml.hbs +0 -25
- package/lib/init/template/pipeline/files/ui5-deploy.yaml.hbs +0 -25
- package/lib/init/template/sample/files/app/_i18n/i18n.properties +0 -29
- package/lib/init/template/sample/files/app/admin-books/webapp/Component.js +0 -8
- package/lib/init/template/sample/files/app/admin-books/webapp/i18n/i18n_de.properties +0 -3
- package/lib/init/template/sample/files/app/admin-books/webapp/i18n/i18n_en.properties +0 -3
- package/lib/init/template/sample/files/app/browse/webapp/Component.js +0 -7
- package/lib/init/template/sample/files/app/browse/webapp/i18n/i18n_de.properties +0 -3
- package/lib/init/template/sample/files/app/browse/webapp/i18n/i18n_en.properties +0 -4
- package/lib/init/template/sample/files/app/index.html +0 -32
|
@@ -8,7 +8,7 @@ modules:
|
|
|
8
8
|
{{#isJava}}
|
|
9
9
|
- name: mtx-api
|
|
10
10
|
properties:
|
|
11
|
-
CDS_MULTITENANCY_SIDECAR_URL: ~{mtx-url}
|
|
11
|
+
CDS_MULTITENANCY_SIDECAR_URL: {{^hasIas}}~{mtx-url}{{/hasIas}}{{#hasIas}}~{mtx-cert-url}{{/hasIas}}
|
|
12
12
|
{{/isJava}}
|
|
13
13
|
provides:
|
|
14
14
|
- name: srv-api # required by consumers of CAP services (e.g. approuter)
|
|
@@ -93,7 +93,6 @@ resources:
|
|
|
93
93
|
onUpdateDependenciesAsync: true
|
|
94
94
|
callbackTimeoutMillis: 300000 # Increase if your deployments are taking longer than that
|
|
95
95
|
|
|
96
|
-
{{#hasIas}}
|
|
97
96
|
- name: {{appName}}-sms
|
|
98
97
|
type: org.cloudfoundry.managed-service
|
|
99
98
|
parameters:
|
|
@@ -119,4 +118,3 @@ resources:
|
|
|
119
118
|
requires:
|
|
120
119
|
- name: {{#isJava}}srv-api{{/isJava}}{{^isJava}}mtx-api{{/isJava}}
|
|
121
120
|
processed-after: [{{#hasXsuaa}}{{appName}}-registry, {{/hasXsuaa}}{{appName}}-ias]
|
|
122
|
-
{{/hasIas}}
|
|
@@ -49,10 +49,18 @@ subscription-manager:
|
|
|
49
49
|
servicePlanName: provider
|
|
50
50
|
parameters:
|
|
51
51
|
appCallbacks:
|
|
52
|
+
{{#isNodejs}}
|
|
52
53
|
dependenciesCallbacks:
|
|
53
54
|
{{#literal}}url: https://{{ .Release.Name }}-sidecar-{{ .Release.Namespace }}.cert.{{ .Values.global.domain }}/-/cds/sms-provisioning/dependencies/{app_tid}{{/literal}}
|
|
54
55
|
subscriptionCallbacks:
|
|
55
56
|
{{#literal}}url: https://{{ .Release.Name }}-sidecar-{{ .Release.Namespace }}.cert.{{ .Values.global.domain }}/-/cds/sms-provisioning/tenant/{app_tid}{{/literal}}
|
|
57
|
+
{{/isNodejs}}
|
|
58
|
+
{{#isJava}}
|
|
59
|
+
dependenciesCallbacks:
|
|
60
|
+
{{#literal}}url: https://{{ .Release.Name }}-srv-{{ .Release.Namespace }}.cert.{{ .Values.global.domain }}/mt/sms/subscriptions/tenants/{app_tid}/dependencies{{/literal}}
|
|
61
|
+
subscriptionCallbacks:
|
|
62
|
+
{{#literal}}url: https://{{ .Release.Name }}-srv-{{ .Release.Namespace }}.cert.{{ .Values.global.domain }}/mt/sms/subscriptions/tenants/{app_tid}{{/literal}}
|
|
63
|
+
{{/isJava}}
|
|
56
64
|
appName: {{appName}}
|
|
57
65
|
applicationType: application
|
|
58
66
|
category: "CAP Application"
|
|
@@ -55,10 +55,13 @@ module.exports = class MultitenancyTemplate extends require('../../plugin') {
|
|
|
55
55
|
if (hasIas) services.push(subscriptionManager)
|
|
56
56
|
if (!hasIas || hasXsuaa) services.push(saasRegistry)
|
|
57
57
|
const apis = [srvApi4(srv), providedMtxApiSidecar4(mtxSidecar)]
|
|
58
|
-
if (isJava)
|
|
58
|
+
if (isJava) {
|
|
59
|
+
const name = hasIas ? '~{mtx-cert-url}' : '~{mtx-url}'
|
|
60
|
+
apis.push(requiredMtxSidecarApi4(srv, name))
|
|
61
|
+
}
|
|
59
62
|
const additions = [...modules, ...services, ...apis]
|
|
60
63
|
const relationships = []
|
|
61
|
-
if (
|
|
64
|
+
if (hasXsuaa) {
|
|
62
65
|
relationships.push({
|
|
63
66
|
insert: [saasRegistry, 'name'],
|
|
64
67
|
into: [isJava ? srv : mtxSidecar, 'requires', 'name']
|
|
@@ -89,7 +92,9 @@ module.exports = class MultitenancyTemplate extends require('../../plugin') {
|
|
|
89
92
|
}}},
|
|
90
93
|
...(isJava) && { srv: { env: {
|
|
91
94
|
CDS_MULTITENANCY_APPUI_URL: `https://{{ .Release.Name }}-${applicationWorkload}-{{ .Release.Namespace }}.{{ .Values.global.domain }}`,
|
|
92
|
-
CDS_MULTITENANCY_SIDECAR_URL:
|
|
95
|
+
CDS_MULTITENANCY_SIDECAR_URL: hasIas ?
|
|
96
|
+
`https://{{ .Release.Name }}-sidecar-{{ .Release.Namespace }}.cert.{{ .Values.global.domain }}` :
|
|
97
|
+
`https://{{ .Release.Name }}-sidecar-{{ .Release.Namespace }}.{{ .Values.global.domain }}`
|
|
93
98
|
}}}
|
|
94
99
|
}).into('chart/values.yaml',{ forceOverwrite: true })
|
|
95
100
|
}
|
|
@@ -3,18 +3,12 @@
|
|
|
3
3
|
"version": "1.0.0",
|
|
4
4
|
"main": "webapp/index.html",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"build": "ui5 build preload --clean-dest
|
|
7
|
-
"build-local": "ui5 build preload --clean-dest",
|
|
6
|
+
"build": "ui5 build preload --clean-dest",
|
|
8
7
|
"start": "ui5 serve"
|
|
9
8
|
},
|
|
10
9
|
"devDependencies": {
|
|
11
10
|
"@ui5/cli": "^4",
|
|
12
11
|
"ui5-task-zipper": "^3"
|
|
13
|
-
},
|
|
14
|
-
"ui5": {
|
|
15
|
-
"dependencies": [
|
|
16
|
-
"ui5-task-zipper"
|
|
17
|
-
]
|
|
18
12
|
}
|
|
19
13
|
{{/hasUI5}}
|
|
20
14
|
}
|
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
# yaml-language-server: $schema=https://sap.github.io/ui5-tooling/schema/ui5.yaml.json
|
|
3
|
-
specVersion: '
|
|
3
|
+
specVersion: '4.0'
|
|
4
4
|
metadata:
|
|
5
5
|
name: {{app}}
|
|
6
6
|
type: application
|
|
7
|
+
resources:
|
|
8
|
+
configuration:
|
|
9
|
+
propertiesFileSourceEncoding: UTF-8
|
|
10
|
+
builder:
|
|
11
|
+
resources:
|
|
12
|
+
excludes:
|
|
13
|
+
- "/test/**"
|
|
14
|
+
- "/localService/**"
|
|
15
|
+
customTasks:
|
|
16
|
+
- name: ui5-task-zipper
|
|
17
|
+
afterTask: generateVersionInfo
|
|
18
|
+
configuration:
|
|
19
|
+
archiveName: {{app}}
|
|
20
|
+
additionalFiles:
|
|
21
|
+
- xs-app.json
|
|
22
|
+
{{#isTypescript}}
|
|
23
|
+
- name: ui5-tooling-transpile-task
|
|
24
|
+
afterTask: replaceVersion
|
|
25
|
+
{{/isTypescript}}
|
|
@@ -38,8 +38,7 @@ module.exports = class PipelineTemplate extends require('../../plugin') {
|
|
|
38
38
|
project.app = app
|
|
39
39
|
await Promise.all([
|
|
40
40
|
merge(__dirname, 'files/app-package.json.hbs').into(join(appPath, app, 'package.json'), { project }),
|
|
41
|
-
merge(__dirname, 'files/ui5.yaml.hbs').into(join(appPath, app, 'ui5.yaml'), { project })
|
|
42
|
-
merge(__dirname, 'files/ui5-deploy.yaml.hbs').into(join(appPath, app, 'ui5-deploy.yaml'), { project })
|
|
41
|
+
merge(__dirname, 'files/ui5.yaml.hbs').into(join(appPath, app, 'ui5.yaml'), { project })
|
|
43
42
|
])
|
|
44
43
|
}
|
|
45
44
|
}
|
|
@@ -43,9 +43,11 @@ modules:
|
|
|
43
43
|
{{#hasIas}}
|
|
44
44
|
- name: {{appName}}-ias
|
|
45
45
|
parameters:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
service-key:
|
|
47
|
+
config:
|
|
48
|
+
credential-type: X509_GENERATED
|
|
49
|
+
app-identifier: portal-deployer
|
|
50
|
+
name: {{appName}}-portal-deployer-ias-key
|
|
49
51
|
{{/hasIas}}
|
|
50
52
|
- name: {{appName}}-html5-repo-host
|
|
51
53
|
- name: {{appName}}-app-deployer
|
|
@@ -28,7 +28,7 @@ module.exports = class PortalTemplate extends require('../../plugin') {
|
|
|
28
28
|
|
|
29
29
|
async combine() {
|
|
30
30
|
const project = readProject()
|
|
31
|
-
const { appName, isJava, addMta, hasMta, srvPath, addHtml5Repo, addXsuaa, addApprouter, addMultitenancy, addHelm, addHelmUnifiedRuntime, addContainerize, hasApprouter, hasHtml5Repo } = project
|
|
31
|
+
const { appName, isJava, addMta, hasMta, srvPath, addHtml5Repo, addXsuaa, addApprouter, addMultitenancy, addHelm, addHelmUnifiedRuntime, addContainerize, hasApprouter, hasHtml5Repo, hasMultitenancy, hasXsuaa } = project
|
|
32
32
|
|
|
33
33
|
if (addMultitenancy) {
|
|
34
34
|
await merge(__dirname, 'files/package.sidecar.json').into('mtx/sidecar/package.json')
|
|
@@ -45,15 +45,13 @@ module.exports = class PortalTemplate extends require('../../plugin') {
|
|
|
45
45
|
into: [portalDeployer, 'requires', 'name']
|
|
46
46
|
}]
|
|
47
47
|
|
|
48
|
-
if (
|
|
49
|
-
additions.push(xsuaa)
|
|
48
|
+
if (hasXsuaa) {
|
|
50
49
|
relationships.push({
|
|
51
50
|
insert: [xsuaa, 'name'],
|
|
52
51
|
into: [portalDeployer, 'requires', 'name']
|
|
53
52
|
})
|
|
54
53
|
}
|
|
55
54
|
if (hasHtml5Repo) {
|
|
56
|
-
additions.push(html5RepoHost)
|
|
57
55
|
relationships.push({
|
|
58
56
|
insert: [html5RepoHost, 'name'],
|
|
59
57
|
into: [portalDeployer, 'requires', 'name']
|
|
@@ -61,14 +59,13 @@ module.exports = class PortalTemplate extends require('../../plugin') {
|
|
|
61
59
|
}
|
|
62
60
|
|
|
63
61
|
if (hasApprouter) {
|
|
64
|
-
additions.push(approuter)
|
|
65
62
|
relationships.push({
|
|
66
63
|
insert: [portal, 'name'],
|
|
67
64
|
into: [approuter, 'requires', 'name']
|
|
68
65
|
})
|
|
69
66
|
}
|
|
70
67
|
|
|
71
|
-
if (
|
|
68
|
+
if (hasMultitenancy) {
|
|
72
69
|
relationships.push({
|
|
73
70
|
insert: [portal, 'name'],
|
|
74
71
|
into: [isJava ? srv : mtxSidecar4('gen/mtx/sidecar'), 'requires', 'name']
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Books = Books
|
|
2
|
+
Book = Book
|
|
3
|
+
ID = ID
|
|
4
|
+
Title = Title
|
|
5
|
+
Description = Description
|
|
6
|
+
Stock = Stock
|
|
7
|
+
Image = Image
|
|
8
|
+
Price = Price
|
|
9
|
+
Currency = Currency
|
|
10
|
+
|
|
11
|
+
Authors = Authors
|
|
12
|
+
Author = Author
|
|
13
|
+
AuthorID = Author''s ID
|
|
14
|
+
Name = Name
|
|
15
|
+
DateOfBirth = Date of Birth
|
|
16
|
+
DateOfDeath = Date of Death
|
|
17
|
+
PlaceOfBirth = Place of Birth
|
|
18
|
+
PlaceOfDeath = Place of Death
|
|
19
|
+
|
|
20
|
+
Genres = Genres
|
|
21
|
+
Genre = Genre
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Books = Livres
|
|
2
|
+
Book = Livre
|
|
3
|
+
Title = Titre
|
|
4
|
+
Description = Description
|
|
5
|
+
Stock = Action
|
|
6
|
+
Image = Image
|
|
7
|
+
Price = Prix
|
|
8
|
+
Currency = Devise
|
|
9
|
+
|
|
10
|
+
Authors = Auteurs
|
|
11
|
+
Author = Auteur
|
|
12
|
+
AuthorID = ID de l''auteur
|
|
13
|
+
Name = Nom
|
|
14
|
+
DateOfBirth = Date de naissance
|
|
15
|
+
DateOfDeath = Date de décès
|
|
16
|
+
PlaceOfBirth = Lieu de naissance
|
|
17
|
+
PlaceOfDeath = Lieu de décès
|
|
18
|
+
|
|
19
|
+
Genres = Genre
|
|
20
|
+
Genre = Genre
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
400 = Ungültige Anfrage
|
|
2
|
+
401 = Nicht autorisiert
|
|
3
|
+
403 = Verboten
|
|
4
|
+
404 = Nicht gefunden
|
|
5
|
+
405 = Methode nicht zulässig
|
|
6
|
+
406 = Nicht akzeptabel
|
|
7
|
+
407 = Proxy-Authentifizierung erforderlich
|
|
8
|
+
408 = Anfrage-Timeout
|
|
9
|
+
409 = Konflikt
|
|
10
|
+
410 = Weg
|
|
11
|
+
411 = Erforderliche Länge
|
|
12
|
+
412 = Vorbedingung fehlgeschlagen
|
|
13
|
+
413 = Nutzlast zu groß
|
|
14
|
+
414 = URI zu lang
|
|
15
|
+
415 = Nicht unterstützter Medientyp
|
|
16
|
+
416 = Bereich nicht erfüllbar
|
|
17
|
+
417 = Erwartung fehlgeschlagen
|
|
18
|
+
422 = Nicht verarbeitbarer Inhalt
|
|
19
|
+
424 = Fehlgeschlagene Abhängigkeit
|
|
20
|
+
428 = Vorbedingung erforderlich
|
|
21
|
+
429 = Zu viele Anfragen
|
|
22
|
+
431 = Anfrage-Headerfelder zu groß
|
|
23
|
+
451 = Aus rechtlichen Gründen nicht verfügbar
|
|
24
|
+
500 = Interner Serverfehler
|
|
25
|
+
501 = Der Server unterstützt die zur Erfüllung der Anfrage erforderliche Funktionalität nicht
|
|
26
|
+
502 = Ungültiges Gateway
|
|
27
|
+
503 = Dienst nicht verfügbar
|
|
28
|
+
504 = Gateway-Timeout
|
|
29
|
+
|
|
30
|
+
ASSERT_RANGE = Wert {0} liegt nicht im angegebenen Bereich [{1}, {2}]
|
|
31
|
+
ASSERT_FORMAT = Wert "{0}" liegt nicht im angegebenen Format "{1}"
|
|
32
|
+
ASSERT_ARRAY = Wert muss ein Array sein
|
|
33
|
+
ASSERT_ENUM = Wert {0} ist gemäß Enumerationsdeklaration {{1}} ungültig
|
|
34
|
+
ASSERT_NOT_NULL = Wert ist erforderlich
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
400 = Bad Request
|
|
2
|
+
401 = Unauthorized
|
|
3
|
+
403 = Forbidden
|
|
4
|
+
404 = Not Found
|
|
5
|
+
405 = Method Not Allowed
|
|
6
|
+
406 = Not Acceptable
|
|
7
|
+
407 = Proxy Authentication Required
|
|
8
|
+
408 = Request Timeout
|
|
9
|
+
409 = Conflict
|
|
10
|
+
410 = Gone
|
|
11
|
+
411 = Length Required
|
|
12
|
+
412 = Precondition Failed
|
|
13
|
+
413 = Payload Too Large
|
|
14
|
+
414 = URI Too Long
|
|
15
|
+
415 = Unsupported Media Type
|
|
16
|
+
416 = Range Not Satisfiable
|
|
17
|
+
417 = Expectation Failed
|
|
18
|
+
422 = Unprocessable Content
|
|
19
|
+
424 = Failed Dependency
|
|
20
|
+
428 = Precondition Required
|
|
21
|
+
429 = Too Many Requests
|
|
22
|
+
431 = Request Header Fields Too Large
|
|
23
|
+
451 = Unavailable For Legal Reasons
|
|
24
|
+
500 = Internal Server Error
|
|
25
|
+
501 = The server does not support the functionality required to fulfill the request
|
|
26
|
+
502 = Bad Gateway
|
|
27
|
+
503 = Service Unavailable
|
|
28
|
+
504 = Gateway Timeout
|
|
29
|
+
|
|
30
|
+
ASSERT_RANGE = Value {0} is not in specified range [{1}, {2}]
|
|
31
|
+
ASSERT_FORMAT = Value "{0}" is not in specified format "{1}"
|
|
32
|
+
ASSERT_ARRAY = Value must be an array
|
|
33
|
+
ASSERT_ENUM = Value {0} is invalid according to enum declaration {{1}}
|
|
34
|
+
ASSERT_NOT_NULL = Value is required
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
400 = Requête incorrecte
|
|
2
|
+
401 = Non autorisée
|
|
3
|
+
403 = Interdite
|
|
4
|
+
404 = Introuvable
|
|
5
|
+
405 = Méthode non autorisée
|
|
6
|
+
406 = Non acceptable
|
|
7
|
+
407 = Authentification proxy requise
|
|
8
|
+
408 = Délai d''expiration de la requête
|
|
9
|
+
409 = Conflit
|
|
10
|
+
410 = Disparu
|
|
11
|
+
411 = Longueur requise
|
|
12
|
+
412 = Échec de la condition préalable
|
|
13
|
+
413 = Charge utile trop importante
|
|
14
|
+
414 = URI trop longue
|
|
15
|
+
415 = Type de média non pris en charge
|
|
16
|
+
416 = Plage non satisfaisante
|
|
17
|
+
417 = Échec de l''attente
|
|
18
|
+
422 = Contenu non traitable
|
|
19
|
+
424 = Dépendance échouée
|
|
20
|
+
428 = Condition préalable requise
|
|
21
|
+
429 = Trop de requêtes
|
|
22
|
+
431 = Champs d''en-tête de requête trop importants
|
|
23
|
+
451 = Indisponible pour des raisons juridiques
|
|
24
|
+
500 = Erreur interne du serveur
|
|
25
|
+
501 = Le serveur ne prend pas en charge la fonctionnalité requise pour répondre à la requête
|
|
26
|
+
502 = Passerelle incorrecte
|
|
27
|
+
503 = Service indisponible
|
|
28
|
+
504 = Délai d''attente de la passerelle
|
|
29
|
+
|
|
30
|
+
ASSERT_RANGE = La valeur {0} n''est pas dans la plage spécifiée [{1}, {2}]
|
|
31
|
+
ASSERT_FORMAT = La valeur "{0}" n''est pas au format spécifié "{1}"
|
|
32
|
+
ASSERT_ARRAY = La valeur doit être un tableau
|
|
33
|
+
ASSERT_ENUM = La valeur {0} n''est pas valide selon la déclaration d''énumération {{1}}
|
|
34
|
+
ASSERT_NOT_NULL = La valeur est obligatoire
|
|
@@ -1,29 +1,3 @@
|
|
|
1
|
-
Books = Bücher
|
|
2
|
-
Book = Buch
|
|
3
|
-
ID = ID
|
|
4
|
-
Title = Titel
|
|
5
|
-
Author = Autor
|
|
6
|
-
Authors = Autoren
|
|
7
|
-
AuthorID = ID des Autors
|
|
8
1
|
AuthorName = Name des Autors
|
|
9
|
-
Name = Name
|
|
10
2
|
Age = Alter
|
|
11
|
-
Stock = Bestand
|
|
12
|
-
Order = Bestellung
|
|
13
|
-
Orders = Bestellungen
|
|
14
3
|
Price = Preis
|
|
15
|
-
Genre = Genre
|
|
16
|
-
Genres = Genres
|
|
17
|
-
DateOfBirth = Geburtsdatum
|
|
18
|
-
DateOfDeath = Todesdatum
|
|
19
|
-
PlaceOfBirth = Geburtsort
|
|
20
|
-
PlaceOfDeath = Todesort
|
|
21
|
-
Details = Details
|
|
22
|
-
Languages = Sprachen
|
|
23
|
-
Currencies = Währungen
|
|
24
|
-
MainGenre = Hauptgenre
|
|
25
|
-
SubGenres = Subgenres
|
|
26
|
-
Admin = Admin
|
|
27
|
-
Translations = Übersetzungen
|
|
28
|
-
General = Allgemein
|
|
29
|
-
Locale = Gebietsschema
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
using {AdminService} from '../../srv/admin-service';
|
|
2
|
+
|
|
3
|
+
annotate AdminService.Authors with @odata.draft.enabled;
|
|
4
|
+
|
|
5
|
+
////////////////////////////////////////////////////////////////////////////
|
|
6
|
+
//
|
|
7
|
+
// Authors Object Page
|
|
8
|
+
//
|
|
9
|
+
annotate AdminService.Authors with @(UI : {
|
|
10
|
+
HeaderInfo : {
|
|
11
|
+
TypeName : 'Author',
|
|
12
|
+
TypeNamePlural : 'Authors',
|
|
13
|
+
Description : {Value : lifetime}
|
|
14
|
+
},
|
|
15
|
+
Facets : [
|
|
16
|
+
{
|
|
17
|
+
$Type : 'UI.ReferenceFacet',
|
|
18
|
+
Label : '{i18n>Details}',
|
|
19
|
+
Target : '@UI.FieldGroup#Details'
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
$Type : 'UI.ReferenceFacet',
|
|
23
|
+
Label : '{i18n>Books}',
|
|
24
|
+
Target : 'books/@UI.LineItem'
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
FieldGroup #Details : {Data : [
|
|
28
|
+
{Value : placeOfBirth},
|
|
29
|
+
{Value : placeOfDeath},
|
|
30
|
+
{Value : dateOfBirth},
|
|
31
|
+
{Value : dateOfDeath},
|
|
32
|
+
{
|
|
33
|
+
Value : age,
|
|
34
|
+
Label : '{i18n>Age}'
|
|
35
|
+
},
|
|
36
|
+
]},
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
// Workaround to avoid errors for unknown db-specific calculated fields above
|
|
41
|
+
extend sap.capire.bookshop.Authors with {
|
|
42
|
+
virtual age : Integer;
|
|
43
|
+
virtual lifetime : String;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
annotate AdminService.Authors with {
|
|
47
|
+
age @Common.Label : '{i18n>Age}';
|
|
48
|
+
lifetime @Common.Label : '{i18n>Lifetime}'
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Workaround for Fiori popup for asking user to enter a new UUID on Create
|
|
52
|
+
annotate AdminService.Authors with { ID @Core.Computed; }
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# This is the resource bundle of itelo
|
|
2
|
+
# __ldi.translation.uuid=c3431418-9caf-11e8-98d0-529269fb1459
|
|
3
|
+
|
|
4
|
+
# JCI app descriptor contains lower case TITLE
|
|
5
|
+
appTitle=Manage Authors
|
|
6
|
+
|
|
7
|
+
# JCI app descriptor contains lower case DESCRIPTION
|
|
8
|
+
appSubTitle=CAP Sample Application
|
|
9
|
+
|
|
10
|
+
# JCI app descriptor contains lower case DESCRIPTION
|
|
11
|
+
appDescription=Bookshop Authors
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_version": "1.28.0",
|
|
3
|
+
"sap.app": {
|
|
4
|
+
"id": "authors",
|
|
5
|
+
"type": "application",
|
|
6
|
+
"title": "{{appTitle}}",
|
|
7
|
+
"description": "{{appDescription}}",
|
|
8
|
+
"i18n": "i18n/i18n.properties",
|
|
9
|
+
"applicationVersion": {
|
|
10
|
+
"version": "1.0.0"
|
|
11
|
+
},
|
|
12
|
+
"dataSources": {
|
|
13
|
+
"AdminService": {
|
|
14
|
+
"uri": "odata/v4/admin/",
|
|
15
|
+
"type": "OData",
|
|
16
|
+
"settings": {
|
|
17
|
+
"odataVersion": "4.0"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"crossNavigation": {
|
|
22
|
+
"inbounds": {
|
|
23
|
+
"Authors-manage": {
|
|
24
|
+
"signature": {
|
|
25
|
+
"parameters": {
|
|
26
|
+
"Books.author.ID": {
|
|
27
|
+
"renameTo": "ID"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"additionalParameters": "ignored"
|
|
31
|
+
},
|
|
32
|
+
"semanticObject": "Authors",
|
|
33
|
+
"action": "manage",
|
|
34
|
+
"title": "{{appTitle}}",
|
|
35
|
+
"info": "{{appInfo}}",
|
|
36
|
+
"subTitle": "{{appSubTitle}}",
|
|
37
|
+
"icon": "sap-icon://SAP-icons-TNT/user",
|
|
38
|
+
"indicatorDataSource": {
|
|
39
|
+
"dataSource": "AdminService",
|
|
40
|
+
"path": "Authors/$count",
|
|
41
|
+
"refresh": 1800
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"sap.ui5": {
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"minUI5Version": "1.136.0",
|
|
50
|
+
"libs": {
|
|
51
|
+
"sap.fe.templates": {}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"models": {
|
|
55
|
+
"i18n": {
|
|
56
|
+
"type": "sap.ui.model.resource.ResourceModel",
|
|
57
|
+
"uri": "i18n/i18n.properties"
|
|
58
|
+
},
|
|
59
|
+
"": {
|
|
60
|
+
"dataSource": "AdminService",
|
|
61
|
+
"settings": {
|
|
62
|
+
"synchronizationMode": "None",
|
|
63
|
+
"operationMode": "Server",
|
|
64
|
+
"autoExpandSelect": true,
|
|
65
|
+
"earlyRequests": true
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"routing": {
|
|
70
|
+
"routes": [
|
|
71
|
+
{
|
|
72
|
+
"pattern": ":?query:",
|
|
73
|
+
"name": "AuthorsList",
|
|
74
|
+
"target": "AuthorsList"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"pattern": "Authors({key}):?query:",
|
|
78
|
+
"name": "AuthorsDetails",
|
|
79
|
+
"target": "AuthorsDetails"
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"targets": {
|
|
83
|
+
"AuthorsList": {
|
|
84
|
+
"type": "Component",
|
|
85
|
+
"id": "AuthorsList",
|
|
86
|
+
"name": "sap.fe.templates.ListReport",
|
|
87
|
+
"options": {
|
|
88
|
+
"settings": {
|
|
89
|
+
"entitySet": "Authors",
|
|
90
|
+
"liveMode": true,
|
|
91
|
+
"navigation": {
|
|
92
|
+
"Authors": {
|
|
93
|
+
"detail": {
|
|
94
|
+
"route": "AuthorsDetails"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"AuthorsDetails": {
|
|
102
|
+
"type": "Component",
|
|
103
|
+
"id": "AuthorsDetailsList",
|
|
104
|
+
"name": "sap.fe.templates.ObjectPage",
|
|
105
|
+
"options": {
|
|
106
|
+
"settings": {
|
|
107
|
+
"entitySet": "Authors"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"contentDensities": {
|
|
114
|
+
"compact": true,
|
|
115
|
+
"cozy": true
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"sap.ui": {
|
|
119
|
+
"technology": "UI5",
|
|
120
|
+
"deviceTypes": {
|
|
121
|
+
"desktop": true,
|
|
122
|
+
"tablet": true,
|
|
123
|
+
"phone": true
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"sap.fiori": {
|
|
127
|
+
"registrationIds": [],
|
|
128
|
+
"archeType": "transactional"
|
|
129
|
+
}
|
|
130
|
+
}
|