diff --git a/jest.base.js b/jest.base.js index d54a766017a..8927090ad12 100644 --- a/jest.base.js +++ b/jest.base.js @@ -19,10 +19,12 @@ module.exports = { '/dist', '/coverage', '/templates', + '/test/dist', '/test/test-input', '/test/test-output', '/test/integration' ], + testPathIgnorePatterns: ['/test/dist', '/test/.*/dist'], verbose: true, snapshotFormat: { escapeString: true, diff --git a/packages/project-access/package.json b/packages/project-access/package.json index 2c1f2792814..f6ce00f0655 100644 --- a/packages/project-access/package.json +++ b/packages/project-access/package.json @@ -34,6 +34,7 @@ "dependencies": { "@sap-ux/i18n": "workspace:*", "@sap-ux/ui5-config": "workspace:*", + "@sap-ux/project-analyser": "workspace:*", "fast-xml-parser": "4.4.1", "findit2": "2.2.3", "json-parse-even-better-errors": "4.0.0", diff --git a/packages/project-access/src/project/access.ts b/packages/project-access/src/project/access.ts index b8d8918368a..9f14d908c52 100644 --- a/packages/project-access/src/project/access.ts +++ b/packages/project-access/src/project/access.ts @@ -1,5 +1,8 @@ import { join, relative } from 'node:path'; +import type { Logger } from '@sap-ux/logger'; import type { NewI18nEntry } from '@sap-ux/i18n'; +import { analyzeApp } from '@sap-ux/project-analyser'; +import type { AnalysisResult } from '@sap-ux/project-analyser'; import type { ApplicationAccess, ApplicationAccessOptions, @@ -30,6 +33,7 @@ import type { Editor } from 'mem-fs-editor'; import { updateManifestJSON, updatePackageJSON } from '../file'; import { FileName } from '../constants'; import { getSpecification } from './specification'; +import { getWebappPath } from './ui5-config'; /** * @@ -182,6 +186,30 @@ class ApplicationAccessImp implements ApplicationAccess { return getSpecification(this.app.appRoot); } + /** + * Analyse the current application and return its bill of materials insights. + * + * @param logger - optional logger used during analysis + * @returns analysis result produced by @sap-ux/project-analyser + */ + async getAppAnalysis(logger?: Logger): Promise { + const effectiveLogger = logger ?? this.options?.logger; + let webappPath: string; + try { + webappPath = await getWebappPath(this.app.appRoot, this.options?.fs); + } catch (error: unknown) { + effectiveLogger?.debug?.(`Unable to resolve webapp path via ui5.yaml: ${String(error)}`); + webappPath = join(this.app.appRoot, 'webapp'); + } + + return analyzeApp( + { + appPath: webappPath + }, + effectiveLogger + ); + } + /** * Updates package.json file asynchronously by keeping the previous indentation. * diff --git a/packages/project-access/src/types/access/index.ts b/packages/project-access/src/types/access/index.ts index 1c5d600ccf4..41d0fcd6acb 100644 --- a/packages/project-access/src/types/access/index.ts +++ b/packages/project-access/src/types/access/index.ts @@ -1,5 +1,6 @@ import type { Logger } from '@sap-ux/logger'; import type { NewI18nEntry } from '@sap-ux/i18n'; +import type { AnalysisResult } from '@sap-ux/project-analyser'; import type { I18nBundles } from '../i18n'; import type { ApplicationStructure, I18nPropertiesPaths, Project, ProjectType } from '../info'; import type { Editor } from 'mem-fs-editor'; @@ -104,6 +105,12 @@ export interface ApplicationAccess extends BaseAccess { * Returns an instance of @sap/ux-specification for the application. */ getSpecification(): Promise; + /** + * Analyses the application and returns the bill of materials summary. + * + * @param logger - optional logger to capture diagnostics during analysis + */ + getAppAnalysis(logger?: Logger): Promise; /** * Updates package.json file asynchronously by keeping the previous indentation. * diff --git a/packages/project-access/test/project/access.test.ts b/packages/project-access/test/project/access.test.ts index f1c06070a0d..5e64229f20c 100644 --- a/packages/project-access/test/project/access.test.ts +++ b/packages/project-access/test/project/access.test.ts @@ -1,4 +1,7 @@ import { join } from 'node:path'; +import type { AnalysisResult } from '@sap-ux/project-analyser'; +import { analyzeApp } from '@sap-ux/project-analyser'; +import * as ui5Config from '../../src/project/ui5-config'; import type { Manifest, Package } from '../../src'; import { createApplicationAccess, createProjectAccess } from '../../src'; import * as i18nMock from '../../src/project/i18n/write'; @@ -7,10 +10,17 @@ import { create as createStorage } from 'mem-fs'; import { create } from 'mem-fs-editor'; import { promises } from 'node:fs'; +jest.mock('@sap-ux/project-analyser', () => ({ + analyzeApp: jest.fn() +})); + describe('Test function createApplicationAccess()', () => { const memFs = create(createStorage()); + const analyzeAppMock = analyzeApp as jest.MockedFunction; beforeEach(() => { jest.restoreAllMocks(); + analyzeAppMock.mockReset(); + analyzeAppMock.mockResolvedValue({ status: 'not-implemented' }); }); const sampleRoot = join(__dirname, '../test-data/project/info'); @@ -365,6 +375,44 @@ describe('Test function createApplicationAccess()', () => { expect(spec).toEqual({ test: 'specification' }); }); + test('getAppAnalysis delegates to analyser with resolved webapp path', async () => { + const appRoot = join(sampleRoot, 'fiori_elements'); + const appAccess = await createApplicationAccess(appRoot); + const expected: AnalysisResult = { status: 'success' }; + analyzeAppMock.mockResolvedValueOnce(expected); + + const result = await appAccess.getAppAnalysis(); + + expect(result).toBe(expected); + expect(analyzeAppMock).toHaveBeenCalledWith({ appPath: join(appRoot, 'webapp') }, undefined); + }); + + test('getAppAnalysis respects custom webapp path from ui5.yaml', async () => { + const projectRoot = join(__dirname, '../test-data/project/webapp-path/custom-webapp-path'); + const projectAccess = await createProjectAccess(projectRoot); + const appAccess = projectAccess.getApplication(projectAccess.getApplicationIds()[0]); + const expected: AnalysisResult = { status: 'success' }; + analyzeAppMock.mockResolvedValueOnce(expected); + + const result = await appAccess.getAppAnalysis(); + + expect(result).toBe(expected); + expect(analyzeAppMock).toHaveBeenCalledWith({ appPath: join(projectRoot, 'src/webapp') }, undefined); + }); + + test('getAppAnalysis falls back to default path when ui5.yaml cannot be parsed', async () => { + const appRoot = join(sampleRoot, 'fiori_elements'); + const appAccess = await createApplicationAccess(appRoot); + const expected: AnalysisResult = { status: 'success' }; + analyzeAppMock.mockResolvedValueOnce(expected); + jest.spyOn(ui5Config, 'getWebappPath').mockRejectedValueOnce(new Error('invalid yaml')); + + const result = await appAccess.getAppAnalysis(); + + expect(result).toBe(expected); + expect(analyzeAppMock).toHaveBeenCalledWith({ appPath: join(appRoot, 'webapp') }, undefined); + }); + test('Error handling for non existing app', async () => { try { await createApplicationAccess('non-existing-app'); diff --git a/packages/project-access/tsconfig.json b/packages/project-access/tsconfig.json index 341f02091ca..a02e431921a 100644 --- a/packages/project-access/tsconfig.json +++ b/packages/project-access/tsconfig.json @@ -1,19 +1,25 @@ { - "extends": "../../tsconfig.json", - "include": ["../../types/mem-fs-editor.d.ts", "src"], - "compilerOptions": { - "rootDir": "src", - "outDir": "dist" + "extends": "../../tsconfig.json", + "include": [ + "../../types/mem-fs-editor.d.ts", + "src" + ], + "compilerOptions": { + "rootDir": "src", + "outDir": "dist" + }, + "references": [ + { + "path": "../i18n" }, - "references": [ - { - "path": "../i18n" - }, - { - "path": "../logger" - }, - { - "path": "../ui5-config" - } - ] + { + "path": "../logger" + }, + { + "path": "../project-analyser" + }, + { + "path": "../ui5-config" + } + ] } diff --git a/packages/project-analyser/.eslintrc.js b/packages/project-analyser/.eslintrc.js new file mode 100644 index 00000000000..202f7c931e9 --- /dev/null +++ b/packages/project-analyser/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + extends: ['../../.eslintrc'], + parserOptions: { + project: './tsconfig.eslint.json', + tsconfigRootDir: __dirname + } +}; + diff --git a/packages/project-analyser/LICENSE b/packages/project-analyser/LICENSE new file mode 100644 index 00000000000..beef293a400 --- /dev/null +++ b/packages/project-analyser/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/packages/project-analyser/README.md b/packages/project-analyser/README.md new file mode 100644 index 00000000000..f65bacb4bb0 --- /dev/null +++ b/packages/project-analyser/README.md @@ -0,0 +1,66 @@ +# @sap-ux/project-analyser + +Utility library for analysing SAP Fiori applications and deriving bill of materials (BOM) insights for downstream tooling. + +## Usage via `@sap-ux/project-access` + +`project-access` now exposes the analyser as part of its application facade so callers do not have to manage file loading, UI5 configuration, or specification resolution themselves. + +```ts +import { createProjectAccess } from '@sap-ux/project-access'; + +const projectAccess = await createProjectAccess('/path/to/project-root', { logger }); +const appAccess = projectAccess.getApplication(projectAccess.getApplicationIds()[0]); +const analysis = await appAccess.getAppAnalysis(); + +if (analysis.status === 'success') { + console.log(analysis.billOfMaterials?.summary); +} +``` + +Behind the scenes `getAppAnalysis()` resolves the webapp directory (using `ui5.yaml` when present), loads manifest and annotation artefacts, and delegates to this package to assemble the BOM. + +## Direct consumption + +The analyser can still be invoked headlessly when the caller already manages I/O boundaries: + +```ts +import { analyzeApp } from '@sap-ux/project-analyser'; + +const result = await analyzeApp({ appPath: '/absolute/path/to/webapp' }); +``` + +When calling it directly you are responsible for locating the webapp folder and providing any logging you need. + +## Dependency boundaries + +- Runtime types for manifests originate from `@ui5/manifest` and the analyser pulls Fiori specification metadata from `@sap/ux-specification`. +- The package itself no longer depends on `@sap-ux/project-access`; instead, that module wraps the analyser and enriches it with project resolution logic. +- Manifest and annotation parsing currently focuses on Fiori elements V4 List Report/Object Page templates; other templates will evolve over time. + +## Behaviour notes + +- Webapp path resolution honours `ui5.yaml>paths.webapp`. If that configuration is missing or the YAML is invalid, the integration falls back to `/webapp` and logs a debug message when a logger is supplied. +- Logging is optional. Pass a `Logger` to `analyzeApp(options, logger)` or rely on the logger registered with `project-access`. + +## Development & testing + +```bash +# Compile the analyser +pnpm nx build @sap-ux/project-analyser + +# Run linting +pnpm nx lint @sap-ux/project-analyser + +# Execute unit tests +pnpm nx test @sap-ux/project-analyser +``` + +## Contributing + +Please refer to the repository guidelines in `docs/Guidelines.md` before opening a pull request. + +## License + +Apache-2.0, see `LICENSE`. + diff --git a/packages/project-analyser/jest.config.js b/packages/project-analyser/jest.config.js new file mode 100644 index 00000000000..7c10669e360 --- /dev/null +++ b/packages/project-analyser/jest.config.js @@ -0,0 +1,4 @@ +const config = require('../../jest.base'); + +module.exports = config; + diff --git a/packages/project-analyser/package.json b/packages/project-analyser/package.json new file mode 100644 index 00000000000..1f59f7c123d --- /dev/null +++ b/packages/project-analyser/package.json @@ -0,0 +1,45 @@ +{ + "name": "@sap-ux/project-analyser", + "version": "0.1.0", + "description": "Analyse SAP Fiori applications to produce bill of materials data.", + "repository": { + "type": "git", + "url": "https://github.com/SAP/open-ux-tools.git", + "directory": "packages/project-analyser" + }, + "bugs": { + "url": "https://github.com/SAP/open-ux-tools/issues?q=is%3Aopen+is%3Aissue+label%3Abug+label%3Aproject-analyser" + }, + "license": "Apache-2.0", + "private": false, + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc --build", + "clean": "rimraf --glob dist coverage *.tsbuildinfo", + "watch": "tsc --watch", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "test": "jest --ci --forceExit --detectOpenHandles --colors", + "test-u": "jest --ci --forceExit --detectOpenHandles --colors -u", + "link": "pnpm link --global", + "unlink": "pnpm unlink --global" + }, + "files": [ + "dist", + "LICENSE", + "!dist/*.map", + "!dist/**/*.map" + ], + "dependencies": { + "@sap-ux/logger": "workspace:*", + "@sap/ux-specification": "1.136.6", + "fast-glob": "3.3.3" + }, + "devDependencies": { + "@ui5/manifest": "1.76.0" + }, + "engines": { + "node": ">=20.x" + } +} diff --git a/packages/project-analyser/src/analyzers/annotations.ts b/packages/project-analyser/src/analyzers/annotations.ts new file mode 100644 index 00000000000..51be38b3adb --- /dev/null +++ b/packages/project-analyser/src/analyzers/annotations.ts @@ -0,0 +1,25 @@ +import type { Logger } from '@sap-ux/logger'; +import type { AnnotationDocument } from '../types/resources'; +import type { AnnotationAnalysis } from '../types/analyzers'; + +/** + * Analyse UI annotation artifacts to extract bill of materials metrics. + * + * @param annotations - collection of annotation documents + * @param logger - optional logger instance for diagnostics + * @returns annotation-derived insights or undefined if unavailable + */ +export async function analyzeAnnotations( + annotations: readonly AnnotationDocument[], + logger?: Logger +): Promise { + if (!annotations.length) { + logger?.debug('Annotation analyser skipped - no annotations found'); + return undefined; + } + + logger?.debug(`Annotation analyser received ${annotations.length} documents`); + + // Future implementation will parse annotation vocabularies and building blocks to gather usage metrics. + return undefined; +} diff --git a/packages/project-analyser/src/analyzers/index.ts b/packages/project-analyser/src/analyzers/index.ts new file mode 100644 index 00000000000..7c4e445468d --- /dev/null +++ b/packages/project-analyser/src/analyzers/index.ts @@ -0,0 +1,47 @@ +import type { AnnotationAnalysis, ManifestAnalysis } from '../types/analyzers'; +import type { BillOfMaterials, ListReportAnalysis, ObjectPageAnalysis } from '../types'; + +export { analyzeAnnotations } from './annotations'; +export { analyzeManifest } from './manifest'; + +/** + * Merge partial insights from manifest and annotation analysers. + * + * @param manifestInsights - insights derived from the manifest.json file + * @param annotationInsights - insights derived from UI annotations + * @returns merged insights or undefined if both inputs are empty + */ +function mergeInsights(manifestInsights?: T, annotationInsights?: T): T | undefined { + if (!manifestInsights && !annotationInsights) { + return undefined; + } + return { + ...(manifestInsights ?? {}), + ...(annotationInsights ?? {}) + } as T; +} + +/** + * Compose the final bill of materials by combining manifest and annotation analyses. + * + * @param manifestAnalysis - output of the manifest analyser + * @param annotationAnalysis - output of the annotation analyser + * @returns composed bill of materials when any insights are available + */ +export function composeBillOfMaterials( + manifestAnalysis?: ManifestAnalysis, + annotationAnalysis?: AnnotationAnalysis +): BillOfMaterials | undefined { + const listReport = mergeInsights(manifestAnalysis?.listReport, annotationAnalysis?.listReport); + const objectPage = mergeInsights(manifestAnalysis?.objectPage, annotationAnalysis?.objectPage); + + if (!listReport && !objectPage) { + return undefined; + } + + return { + template: 'ListReportObjectPageV4', + listReport, + objectPage + }; +} diff --git a/packages/project-analyser/src/analyzers/manifest.ts b/packages/project-analyser/src/analyzers/manifest.ts new file mode 100644 index 00000000000..546dfa46eef --- /dev/null +++ b/packages/project-analyser/src/analyzers/manifest.ts @@ -0,0 +1,25 @@ +import type { Logger } from '@sap-ux/logger'; +import type { ManifestDocument } from '../types/resources'; +import type { ManifestAnalysis } from '../types/analyzers'; + +/** + * Analyse manifest.json configuration to derive Fiori application characteristics. + * + * @param manifest - parsed manifest document + * @param logger - optional logger instance for diagnostics + * @returns manifest-derived insights or undefined if unavailable + */ +export async function analyzeManifest( + manifest: ManifestDocument | undefined, + logger?: Logger +): Promise { + if (!manifest) { + logger?.debug('Manifest analyser skipped - manifest.json not found'); + return undefined; + } + + logger?.debug(`Manifest analyser received manifest at ${manifest.path}`); + + // Implementation will inspect routing, component settings, and page definitions in future iterations. + return undefined; +} diff --git a/packages/project-analyser/src/index.ts b/packages/project-analyser/src/index.ts new file mode 100644 index 00000000000..0777c93ea01 --- /dev/null +++ b/packages/project-analyser/src/index.ts @@ -0,0 +1,35 @@ +import type { Logger } from '@sap-ux/logger'; +import { analyzeAnnotations, analyzeManifest, composeBillOfMaterials } from './analyzers'; +import { loadAnnotationDocuments } from './io/annotations'; +import { loadManifestDocument } from './io/manifest'; +import type { AnalyseAppOptions, AnalysisResult } from './types'; + +export * from './types'; +export { analyzeAnnotations, analyzeManifest } from './analyzers'; + +/** + * Analyse a Fiori application by delegating to manifest and annotation sub-analysers. + * + * @param options - analyser options containing the application path + * @param logger - optional logger for diagnostic output + * @returns analysis result including the derived bill of materials, when available + */ +export async function analyzeApp(options: AnalyseAppOptions, logger?: Logger): Promise { + const manifestDocument = await loadManifestDocument(options, logger); + const annotationDocuments = await loadAnnotationDocuments(options, logger); + + const manifestAnalysis = await analyzeManifest(manifestDocument, logger); + const annotationAnalysis = await analyzeAnnotations(annotationDocuments, logger); + const billOfMaterials = composeBillOfMaterials(manifestAnalysis, annotationAnalysis); + + if (!billOfMaterials) { + return { + status: 'not-implemented' + }; + } + + return { + status: 'success', + billOfMaterials + }; +} diff --git a/packages/project-analyser/src/io/annotations.ts b/packages/project-analyser/src/io/annotations.ts new file mode 100644 index 00000000000..92bf85f8c83 --- /dev/null +++ b/packages/project-analyser/src/io/annotations.ts @@ -0,0 +1,65 @@ +import { join } from 'node:path'; +import { promises as fs } from 'node:fs'; +import fg from 'fast-glob'; +import type { Logger } from '@sap-ux/logger'; +import type { AnalyseAppOptions } from '../types'; +import type { AnnotationDocument } from '../types/resources'; + +/** + * Determine the annotation document format based on file extension. + * + * @param path - absolute file system path + * @returns the inferred annotation format + */ +function determineFormat(path: string): 'xml' | 'json' | 'cds' { + const extension = path.split('.').pop()?.toLowerCase(); + switch (extension) { + case 'xml': + return 'xml'; + case 'json': + return 'json'; + default: + return 'cds'; + } +} + +/** + * Read an annotation file and produce a document descriptor. + * + * @param path - absolute file system path + * @returns annotation document or undefined when reading fails + */ +async function readAnnotationFile(path: string): Promise { + try { + const content = await fs.readFile(path, 'utf8'); + return { path, format: determineFormat(path), content }; + } catch { + return undefined; + } +} + +/** + * Load annotation artefacts stored under the application annotations folder. + * + * @param options - analyser options containing the application path + * @param logger - optional logger for diagnostic output + * @returns annotation documents discovered under the annotations folder + */ +export async function loadAnnotationDocuments( + options: AnalyseAppOptions, + logger?: Logger +): Promise { + const annotationsDir = join(options.appPath, 'annotations'); + try { + const files = await fg('**/*.{xml,json,cds}', { + cwd: annotationsDir, + onlyFiles: true, + absolute: true + }); + const documents = await Promise.all(files.map((file) => readAnnotationFile(file))); + return documents.filter((doc): doc is AnnotationDocument => doc !== undefined); + } catch (error: unknown) { + logger?.debug(`Unable to load annotations directory: ${String(error)}`); + return []; + } +} diff --git a/packages/project-analyser/src/io/manifest.ts b/packages/project-analyser/src/io/manifest.ts new file mode 100644 index 00000000000..887216dfaa5 --- /dev/null +++ b/packages/project-analyser/src/io/manifest.ts @@ -0,0 +1,31 @@ +import type { SAPJSONSchemaForWebApplicationManifestFile as Manifest } from '@ui5/manifest/types/manifest'; + +import { join } from 'node:path'; +import { promises as fs } from 'node:fs'; +import type { Logger } from '@sap-ux/logger'; +import type { AnalyseAppOptions } from '../types'; +import type { ManifestDocument } from '../types/resources'; + +/** + * Load the manifest.json file for the given Fiori application. + * + * @param options - analyser options containing the application path + * @param logger - optional logger for diagnostic output + * @returns the manifest document or undefined when not found/parsable + */ +export async function loadManifestDocument( + options: AnalyseAppOptions, + logger?: Logger +): Promise { + const manifestPath = join(options.appPath, 'webapp', 'manifest.json'); + try { + const manifestContent = await fs.readFile(manifestPath, 'utf8'); + return { + path: manifestPath, + content: JSON.parse(manifestContent) as Manifest + }; + } catch (error: unknown) { + logger?.debug(`Unable to load manifest.json: ${String(error)}`); + return undefined; + } +} diff --git a/packages/project-analyser/src/types/analyzers.ts b/packages/project-analyser/src/types/analyzers.ts new file mode 100644 index 00000000000..87266f2b386 --- /dev/null +++ b/packages/project-analyser/src/types/analyzers.ts @@ -0,0 +1,12 @@ +import type { ListReportAnalysis } from './list-report'; +import type { ObjectPageAnalysis } from './object-page'; + +export interface ManifestAnalysis { + readonly listReport?: ListReportAnalysis; + readonly objectPage?: ObjectPageAnalysis; +} + +export interface AnnotationAnalysis { + readonly listReport?: ListReportAnalysis; + readonly objectPage?: ObjectPageAnalysis; +} diff --git a/packages/project-analyser/src/types/index.ts b/packages/project-analyser/src/types/index.ts new file mode 100644 index 00000000000..1c23db3d36e --- /dev/null +++ b/packages/project-analyser/src/types/index.ts @@ -0,0 +1,23 @@ +import type { AnalysisStatus, BillOfMaterialsSummary, UsageDimensions } from './shared'; +import type { ListReportAnalysis } from './list-report'; +import type { ObjectPageAnalysis } from './object-page'; + +export * from './shared'; +export * from './list-report'; +export * from './object-page'; +export * from './analyzers'; +export * from './resources'; + +export interface BillOfMaterials { + readonly template: 'ListReportObjectPageV4' | string; + readonly listReport?: ListReportAnalysis; + readonly objectPage?: ObjectPageAnalysis; + readonly summary?: BillOfMaterialsSummary; +} + +export interface AnalysisResult { + readonly status: AnalysisStatus; + readonly billOfMaterials?: BillOfMaterials; + readonly usageDimensions?: UsageDimensions; + readonly warnings?: readonly string[]; +} diff --git a/packages/project-analyser/src/types/list-report.ts b/packages/project-analyser/src/types/list-report.ts new file mode 100644 index 00000000000..53e855b8cbf --- /dev/null +++ b/packages/project-analyser/src/types/list-report.ts @@ -0,0 +1,18 @@ +import type { Header } from '@sap/ux-specification/dist/types/src/v4/controls/Header'; +import type { FilterBar } from '@sap/ux-specification/dist/types/src/v4/controls/FilterBar'; +import type { + TableSettings, + SelectionMode, + TableTypeV4, + EnableMassEdit +} from '@sap/ux-specification/dist/types/src/v4/controls/Table'; + +export type ListReportSelectionMode = SelectionMode; +export type ListReportTableType = TableTypeV4; +export type ListReportMassEdit = EnableMassEdit; + +export interface ListReportAnalysis { + readonly header?: Header; + readonly filterBar?: FilterBar; + readonly table?: TableSettings; +} diff --git a/packages/project-analyser/src/types/object-page.ts b/packages/project-analyser/src/types/object-page.ts new file mode 100644 index 00000000000..1c3f22c15e4 --- /dev/null +++ b/packages/project-analyser/src/types/object-page.ts @@ -0,0 +1,14 @@ +import type { ObjectPageHeader } from '@sap/ux-specification/dist/types/src/v4/controls/ObjectPageHeader'; +import type { ObjectPageLayout } from '@sap/ux-specification/dist/types/src/v4/controls/ObjectPageLayout'; +import type { + GenericSections, + CustomSections +} from '@sap/ux-specification/dist/types/src/v4/controls/ObjectPageSection'; +import type { ObjectPageFooter } from '@sap/ux-specification/dist/types/src/v4/controls/ObjectPageFooter'; + +export interface ObjectPageAnalysis { + readonly header?: ObjectPageHeader; + readonly layout?: ObjectPageLayout; + readonly sections?: GenericSections | CustomSections; + readonly footer?: ObjectPageFooter; +} diff --git a/packages/project-analyser/src/types/resources.ts b/packages/project-analyser/src/types/resources.ts new file mode 100644 index 00000000000..b509e2afec3 --- /dev/null +++ b/packages/project-analyser/src/types/resources.ts @@ -0,0 +1,12 @@ +import type { SAPJSONSchemaForWebApplicationManifestFile as Manifest } from '@ui5/manifest/types/manifest'; + +export interface ManifestDocument { + readonly path: string; + readonly content: Manifest; +} + +export interface AnnotationDocument { + readonly path: string; + readonly format: 'xml' | 'json' | 'cds'; + readonly content: string; +} diff --git a/packages/project-analyser/src/types/shared.ts b/packages/project-analyser/src/types/shared.ts new file mode 100644 index 00000000000..5d579cd1d2d --- /dev/null +++ b/packages/project-analyser/src/types/shared.ts @@ -0,0 +1,26 @@ +export type ProjectType = 'EDMXBackend' | 'CAPJava' | 'CAPNodejs'; +export type AppType = + | 'SAP Fiori elements' + | 'SAPUI5 freestyle' + | 'SAPUI5 Extension' + | 'Fiori Reuse' + | 'Fiori Adaptation'; + +export type AnalysisStatus = 'not-implemented' | 'success' | 'unsupported-template'; + +export interface AnalyseAppOptions { + readonly appPath: string; + readonly templateId?: string; +} + +export interface UsageDimensions { + readonly templateId?: string; + readonly templateVersion?: string; + readonly projectType?: ProjectType; + readonly appType?: AppType; +} + +export interface BillOfMaterialsSummary { + readonly listReport?: string; + readonly objectPage?: string; +} diff --git a/packages/project-analyser/test/analyzeApp.test.ts b/packages/project-analyser/test/analyzeApp.test.ts new file mode 100644 index 00000000000..3bdd2b0abf6 --- /dev/null +++ b/packages/project-analyser/test/analyzeApp.test.ts @@ -0,0 +1,8 @@ +import { analyzeApp } from '../src'; + +describe('analyzeApp', () => { + it('returns not-implemented status while collectors are placeholders', async () => { + const result = await analyzeApp({ appPath: '/tmp/non-existent' }); + expect(result.status).toBe('not-implemented'); + }); +}); diff --git a/packages/project-analyser/test/fixtures/README.md b/packages/project-analyser/test/fixtures/README.md new file mode 100644 index 00000000000..3c28807ed41 --- /dev/null +++ b/packages/project-analyser/test/fixtures/README.md @@ -0,0 +1,9 @@ +# Test Fixtures + +The analyser will require representative SAP Fiori applications to validate the bill of materials extraction logic. Planned fixtures include: + +- **V4 List Report Object Page** generated via the existing project generators, trimmed to the minimal manifest and annotation assets required to exercise the collectors. +- **Customised scenarios** covering bespoke filter bars, custom table columns, and object page custom sections with building blocks. + +All fixtures should avoid sensitive data and keep file sizes small to ensure fast unit test execution. + diff --git a/packages/project-analyser/test/fixtures/lrop-v4/pages/BookingObjectPage.json b/packages/project-analyser/test/fixtures/lrop-v4/pages/BookingObjectPage.json new file mode 100644 index 00000000000..563c3988bf8 --- /dev/null +++ b/packages/project-analyser/test/fixtures/lrop-v4/pages/BookingObjectPage.json @@ -0,0 +1,13 @@ +{ + "header": { + "editableHeaderContent": false, + "sections": {}, + "actions": {} + }, + "footer": { + "actions": {} + }, + "layout": {}, + "sections": {}, + "$schema": "../.schemas/ObjectPage_BookingObjectPage.json" +} diff --git a/packages/project-analyser/test/fixtures/lrop-v4/pages/TravelList.json b/packages/project-analyser/test/fixtures/lrop-v4/pages/TravelList.json new file mode 100644 index 00000000000..ecc713ff2a4 --- /dev/null +++ b/packages/project-analyser/test/fixtures/lrop-v4/pages/TravelList.json @@ -0,0 +1,54 @@ +{ + "variantManagement": "Page", + "header": { + "actions": { + "action1": { + "text": "action 1", + "press": "opa1.ext.controller.Action1.action1", + "visible": true, + "enabled": true + }, + "action2": { + "text": "action 2", + "press": "opa1.ext.controller.Action1.action1", + "visible": true, + "enabled": true + } + } + }, + "filterBar": { + "selectionFields": { + "filter1": { + "label": "Filter 1", + "property": "CustomerName", + "template": "opa1.ext.fragment.Filter1", + "required": false + } + } + }, + "table": { + "type": "ResponsiveTable", + "toolBar": { + "actions": { + "action3": { + "requiresSelection": false, + "text": "Action 3", + "press": "opa1.ext.controller.Action3.action3", + "visible": true, + "enabled": true + } + } + }, + "columns": { + "Custom1": { + "position": { + "anchor": "DataField::CustomerName", + "placement": "After" + }, + "header": "Custom1", + "template": "opa1.ext.fragment.Custom1" + } + } + }, + "$schema": "../.schemas/ListReport_TravelList.json" +} diff --git a/packages/project-analyser/test/fixtures/lrop-v4/pages/TravelObjectPage.json b/packages/project-analyser/test/fixtures/lrop-v4/pages/TravelObjectPage.json new file mode 100644 index 00000000000..92379c14a77 --- /dev/null +++ b/packages/project-analyser/test/fixtures/lrop-v4/pages/TravelObjectPage.json @@ -0,0 +1,53 @@ +{ + "header": { + "editableHeaderContent": false, + "sections": {}, + "actions": { + "Action4": { + "text": "Action4", + "press": "opa1.ext.controller.Action1.action4", + "visible": true, + "enabled": true + } + } + }, + "footer": { + "actions": { + "footeraction": { + "text": "footeraction", + "press": "opa1.ext.controller.Footeraction.footeraction", + "visible": true, + "enabled": true + } + } + }, + "layout": {}, + "sections": { + "_Booking::@com.sap.vocabularies.UI.v1.LineItem": { + "table": { + "toolBar": { + "actions": { + "custom4": { + "requiresSelection": false, + "text": "custom4", + "press": "opa1.ext.controller.Custom4.custom4", + "visible": true, + "enabled": true + } + } + }, + "columns": { + "Cc1": { + "position": { + "anchor": "DataField::CurrencyCode", + "placement": "After" + }, + "header": "cc1", + "template": "opa1.ext.fragment.Cc1" + } + } + } + } + }, + "$schema": "../.schemas/ObjectPage_TravelObjectPage.json" +} diff --git a/packages/project-analyser/test/fixtures/lrop-v4/pages/app.json b/packages/project-analyser/test/fixtures/lrop-v4/pages/app.json new file mode 100644 index 00000000000..04154d2406d --- /dev/null +++ b/packages/project-analyser/test/fixtures/lrop-v4/pages/app.json @@ -0,0 +1,61 @@ +{ + "$schema": "./.schemas/App.json", + "id": "opa1", + "pages": { + "TravelList": { + "pageType": "ListReport", + "entitySet": "Travel", + "contextPath": "/Travel", + "entityType": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "variantManagement": "Page", + "navigation": { + "Travel": { + "route": "TravelObjectPage" + } + }, + "routePattern": ":?query:", + "template": "sap.fe.templates.ListReport" + }, + "TravelObjectPage": { + "pageType": "ObjectPage", + "entitySet": "Travel", + "contextPath": "/Travel", + "entityType": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "navigation": { + "_Booking": { + "route": "BookingObjectPage" + } + }, + "routePattern": "Travel({key}):?query:", + "template": "sap.fe.templates.ObjectPage" + }, + "BookingObjectPage": { + "pageType": "ObjectPage", + "entitySet": "Booking", + "contextPath": "/Travel/_Booking", + "entityType": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType", + "navigationProperty": "_Booking", + "navigation": {}, + "routePattern": "Travel({key})/_Booking({key2}):?query:", + "template": "sap.fe.templates.ObjectPage" + } + }, + "home": "TravelList", + "target": { + "fioriElements": "v4", + "odata": "v4" + }, + "settings": { + "dependencies": { + "minUI5Version": "1.142.0", + "libs": { + "sap.m": {}, + "sap.ui.core": {}, + "sap.fe.templates": {} + } + }, + "title": "{{appTitle}}", + "description": "{{appDescription}}", + "flexEnabled": true + } +} diff --git a/packages/project-analyser/test/fixtures/lrop-v4/schemas/App.json b/packages/project-analyser/test/fixtures/lrop-v4/schemas/App.json new file mode 100644 index 00000000000..e415b6998de --- /dev/null +++ b/packages/project-analyser/test/fixtures/lrop-v4/schemas/App.json @@ -0,0 +1,407 @@ +{ + "type": "object", + "properties": { + "settings": { + "$ref": "#/definitions/AppSettings" + }, + "pages": { + "$ref": "#/definitions/PagesV4" + }, + "$schema": { + "type": "string" + }, + "id": { + "type": "string" + }, + "home": { + "type": "string" + }, + "target": { + "$ref": "#/definitions/Target" + } + }, + "additionalProperties": false, + "definitions": { + "AppSettings": { + "type": "object", + "properties": { + "flexibleColumnLayout": { + "$ref": "#/definitions/FlexibleColumnLayoutV4", + "description": "The flexible column layout allows users to see more details on the page, and to expand and collapse the screen areas." + }, + "path": { + "description": "Represents a prefix that is prepended in front of the viewName", + "type": "string" + }, + "viewType": { + "$ref": "#/definitions/ViewTypes", + "description": "standard view type of views" + }, + "controllerExtensions": { + "$ref": "#/definitions/ControllerExtensions", + "description": "Controller extensions allow users to extensiate default behaviour with custom controllers code." + }, + "dependencies": { + "$ref": "#/definitions/Dependencies", + "description": "Dependencies of the application." + }, + "hideDraft": { + "description": "Hidden draft features.", + "anyOf": [ + { + "type": "object", + "properties": { + "enabled": { + "description": "All features related to draft handling can be hidden from the UI while the draft functionality remains active in the background. To achieve this, enable the 'Hide Draft' property.", + "descriptionSrcURL": "https://sapui5.hana.ondemand.com/#/topic/ed9aa41c563a44b18701529c8327db4d", + "type": "boolean", + "const": true + }, + "stayOnCurrentPageAfterSave": { + "description": "Determines whether to stay on the current page after saving an object.\nTo ensure a consistent experience, set this and 'Stay On Current Page After Cancel' to the same value.", + "descriptionSrcURL": "https://sapui5.hana.ondemand.com/#/topic/ed9aa41c563a44b18701529c8327db4d", + "type": "boolean" + }, + "stayOnCurrentPageAfterCancel": { + "description": "Determines whether to stay on the current page after canceling an object.\nTo ensure a consistent experience, set this and 'Stay On Current Page After Save' to the same value.", + "descriptionSrcURL": "https://sapui5.hana.ondemand.com/#/topic/ed9aa41c563a44b18701529c8327db4d", + "type": "boolean" + }, + "hideCreateNext": { + "description": "Controls the visibility of the 'Create Next' button.", + "descriptionSrcURL": "https://sapui5.hana.ondemand.com/#/topic/ed9aa41c563a44b18701529c8327db4d", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "enabled" + ] + }, + { + "type": "object", + "properties": { + "enabled": { + "description": "All features related to draft handling can be hidden from the UI while the draft functionality remains active in the background. To achieve this, enable the 'Hide Draft' property.", + "descriptionSrcURL": "https://sapui5.hana.ondemand.com/#/topic/ed9aa41c563a44b18701529c8327db4d", + "type": "boolean", + "const": false + } + }, + "additionalProperties": false + } + ] + }, + "defaultCreationMode": { + "description": "Define the default creation mode that is used for all tables, unless a specific creation mode has been set.", + "descriptionSrcURL": "https://sapui5.hana.ondemand.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b", + "enum": [ + "InlineCreationRows" + ], + "type": "string" + }, + "title": { + "description": "Defines the title for the application.", + "i18nClassification": "TIT: Title of the application", + "type": "string" + }, + "description": { + "description": "Defines the description for the application.", + "i18nClassification": "TIT: Description of the application", + "type": "string" + }, + "flexEnabled": { + "description": "Enables key user adaptation for an application.", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/ccd45ba3f0b446a0901b2c9d42b8ad53", + "type": "boolean" + }, + "cloudDevAdaptationStatus": { + "$ref": "#/definitions/CloudDevAdaptationStatus", + "description": "Represents the release status for the developer adaptation in the cloud (relevant for SAP internal only). The supported types are released, deprecated, obsolete, no value means not released." + } + }, + "additionalProperties": false + }, + "FlexibleColumnLayoutV4": { + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/e762257125b34513b0859faa1610b09e", + "type": "object", + "properties": { + "limitFCLToTwoColumns": { + "description": "Determines whether the Flexible Column Layout is limited to two columns. If set to true, the third level will be displayed in full screen mode rather than a third column.", + "type": "boolean" + }, + "defaultTwoColumnLayoutType": { + "$ref": "#/definitions/FlexibleColumnLayoutType" + }, + "defaultThreeColumnLayoutType": { + "$ref": "#/definitions/FlexibleColumnLayoutType" + } + }, + "additionalProperties": false + }, + "FlexibleColumnLayoutType": { + "enum": [ + "EndColumnFullScreen", + "MidColumnFullScreen", + "OneColumn", + "ThreeColumnsBeginExpandedEndHidden", + "ThreeColumnsEndExpanded", + "ThreeColumnsMidExpanded", + "ThreeColumnsMidExpandedEndHidden", + "TwoColumnsBeginExpanded", + "TwoColumnsMidExpanded" + ], + "type": "string" + }, + "ViewTypes": { + "enum": [ + "HTML", + "JSON", + "XML" + ], + "type": "string" + }, + "ControllerExtensions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/SapUi5ControllerExtensionV4" + } + }, + "SapUi5ControllerExtensionV4": { + "type": "object", + "properties": { + "controllerName": { + "type": "string" + }, + "controllerNames": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "Dependencies": { + "type": "object", + "properties": { + "minUI5Version": { + "description": "Represents the minimum version of SAP UI5 that your component requires. It is either a specific version or an array of versions where each major version can only be included once. If array contains more than one version and if version 1 is included it must be at least 1.120.x.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "libs": { + "description": "Represents the id (namespace) of the libraries that should be loaded by UI5 Core to be used in your component", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Lib" + } + }, + "components": { + "description": "Represents the id (namespace) of the components that should be loaded by UI5 Core to be used in your component", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Component" + } + } + }, + "additionalProperties": false, + "required": [ + "minUI5Version" + ] + }, + "Lib": { + "description": "Represents sapui5 library name\n\nThis interface was referenced by `undefined`'s JSON-Schema definition\nvia the `patternProperty` \"^([a-z][a-z0-9]{0,39})(\\.[a-z][a-z0-9]{0,39})*$\".", + "type": "object", + "additionalProperties": {}, + "properties": { + "minVersion": { + "description": "Represents minimal version of ui5 library", + "type": "string" + }, + "lazy": { + "description": "Represents Indicator to lazy loading lib", + "type": "boolean" + } + } + }, + "Component": { + "description": "Represents sapui5 component name\n\nThis interface was referenced by `undefined`'s JSON-Schema definition\nvia the `patternProperty` \"^([a-zA-Z_$][a-zA-Z0-9_$]{0,39}\\.)*([a-zA-Z_$][a-zA-Z0-9_$]{0,39})$\".", + "type": "object", + "additionalProperties": {}, + "properties": { + "minVersion": { + "description": "Represents minimal version of ui5 component", + "type": "string" + }, + "lazy": { + "description": "Represents Indicator to lazy loading component", + "type": "boolean" + } + } + }, + "CloudDevAdaptationStatus": { + "internal": true, + "enum": [ + "deprecated", + "obsolete", + "released" + ], + "type": "string" + }, + "PagesV4": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/PageV4" + } + }, + "PageV4": { + "type": "object", + "properties": { + "view": { + "$ref": "#/definitions/PageView" + }, + "controlAggregation": { + "$ref": "#/definitions/FlexibleColumnLayoutAggregations" + }, + "pageType": { + "$ref": "#/definitions/PageTypeV4" + }, + "routePattern": { + "type": "string" + }, + "contextPath": { + "type": "string" + }, + "entityType": { + "type": "string" + }, + "template": { + "description": "Full template name from `manifest.json`.", + "type": "string" + }, + "name": { + "type": "string" + }, + "entitySet": { + "type": "string" + }, + "navigationProperty": { + "type": "string" + }, + "config": { + "$ref": "#/definitions/PageConfig" + }, + "navigation": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "properties": {}, + "additionalProperties": true + }, + { + "type": "string" + } + ] + } + }, + "variantManagement": { + "type": "string" + }, + "defaultLayoutType": { + "$ref": "#/definitions/FlexibleColumnLayoutType" + } + }, + "additionalProperties": false + }, + "PageView": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "viewType": { + "$ref": "#/definitions/ViewTypes" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "id" + ] + }, + "FlexibleColumnLayoutAggregations": { + "enum": [ + "beginColumnPages", + "endColumnPages", + "midColumnPages" + ], + "type": "string" + }, + "PageTypeV4": { + "enum": [ + "AnalyticalListPage", + "CustomPage", + "FPMCustomPage", + "ListReport", + "ObjectPage" + ], + "type": "string" + }, + "PageConfig": { + "type": "object", + "properties": { + "$schema": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Target": { + "type": "object", + "properties": { + "fioriElements": { + "$ref": "#/definitions/FioriElementsVersion" + }, + "odata": { + "$ref": "#/definitions/OdataVersion" + } + }, + "additionalProperties": false + }, + "FioriElementsVersion": { + "enum": [ + "v2", + "v4" + ], + "type": "string" + }, + "OdataVersion": { + "enum": [ + "v2", + "v4" + ], + "type": "string" + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} diff --git a/packages/project-analyser/test/fixtures/lrop-v4/schemas/BuildingBlocks.json b/packages/project-analyser/test/fixtures/lrop-v4/schemas/BuildingBlocks.json new file mode 100644 index 00000000000..e914f0f210d --- /dev/null +++ b/packages/project-analyser/test/fixtures/lrop-v4/schemas/BuildingBlocks.json @@ -0,0 +1,4563 @@ +{ + "type": "object", + "metadata": { + "namespaces": [ + "sap.fe.macros", + "sap.fe.macros.form", + "sap.fe.macros.chart", + "sap.fe.macros.controls", + "sap.fe.macros.field", + "sap.fe.macros.filterBar", + "sap.fe.macros.microchart", + "sap.fe.macros.richtexteditor", + "sap.fe.macros.share", + "sap.fe.macros.table", + "sap.fe.macros.controls.section" + ] + }, + "properties": { + "$filePath": { + "type": "string", + "hidden": true + }, + "$schema": { + "type": "string", + "hidden": true + } + }, + "additionalProperties": false, + "definitions": { + "sap.fe.macros.Chart": { + "description": "Building block used to create a chart based on the metadata provided by OData V4.\nOverview of Building Blocks\n\t\t\t\n\nUsually, a contextPath and metaPath is expected.\nUsage example:\n\n<macros:Chart id=\"MyChart\" contextPath=\"/RootEntity\" metaPath=\"@com.sap.vocabularies.UI.v1.Chart\" />\n\n", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "Metadata path to the entitySet or navigationProperty", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "filterBar": { + "type": "string", + "description": "Id of the FilterBar building block associated with the chart.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "header": { + "type": "string", + "description": "Specifies the header text that is shown in the chart", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "i18nClassification": "HED: Header of the chart" + }, + "headerVisible": { + "type": "boolean", + "description": "Controls if the header text should be shown or not", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Metadata path to the presentation context (UI.Chart with or without a qualifier)", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "personalization": { + "type": "string", + "description": "Controls which options should be enabled for the chart personalization dialog.\nIf it is set to `true`, all possible options for this kind of chart are enabled.\nIf it is set to `false`, personalization is disabled.\n\nYou can also provide a more granular control for the personalization by providing a comma-separated list with the options you want to be available.\nAvailable options are:\n- Sort\n- Type\n- Item\n- Filter\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "selectionMode": { + "type": "string", + "description": "Defines the selection mode to be used by the chart.\nAllowed values are `None`, `Single` or `Multiple`\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "None", + "Single", + "Multiple" + ] + }, + "variantManagement": { + "type": "string", + "description": "Controls the kind of variant management that should be enabled for the chart.\nAllowed value is `Control`.\nIf set with value `Control`, a variant management control is seen within the chart and the chart is linked to this.\nIf not set with any value, variant management control is not available for this chart.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "const": "Control" + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "actions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.chart.Action" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "selectionChange": { + "type": "string", + "description": "An event triggered when chart selections are changed. The event contains information about the data selected/deselected and the Boolean flag that indicates whether data is selected or deselected.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.CollectionBindingInfo": { + "description": "API to add parameters to the collection binding info.", + "isViewNode": true, + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.Field": { + "description": "Building block for creating a field based on the metadata provided by OData V4.\n\nUsually, a DataField or DataPoint annotation is expected, but the field can also be used to display a property from the entity type.\nWhen creating a Field building block, you must provide an ID to ensure everything works correctly.\nUsage example:\n\n<macros:Field id=\"MyField\" metaPath=\"MyProperty\" />\n\nOverview of Building Blocks\n", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "Defines the path of the context used in the current page or block.\nThis setting is defined by the framework.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "description": { + "type": "string", + "description": "This is used to optionally provide an external description that comes from a different model than the oData model.\nThis should be used in conjunction with the value property.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Defines the relative path of the property in the metamodel, based on the current contextPath.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "readOnly": { + "type": "boolean", + "description": "An expression that allows you to control the read-only state of the field.\nIf you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the current state.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "semanticObject": { + "type": "string", + "description": "Option to add semantic objects for a field.\nThis parameter overwrites the semantic objects defined through annotations.\nValid options are either a single semantic object, a stringified array of semantic objects,\na formatter or a single binding expression returning either a single semantic object or an array of semantic objects.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "value": { + "type": "string", + "description": "This is used to optionally provide an external value that comes from a different model than the OData model.\nIt is designed to work with a field with value help, and without support for complex value help (currency / unit).", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "formatOptions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.field.FieldFormatOptions" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "change": { + "type": "string", + "description": "An event containing details is triggered when the value of the field is changed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "liveChange": { + "type": "string", + "description": "An event containing details is triggered when the value of the field is live changed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.form.FormElement": { + "description": "Building block used to create a form element based on the metadata provided by OData V4.", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "Defines the path of the context used in the current page or block.\nThis setting is defined by the framework.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "label": { + "type": "string", + "description": "Label shown for the field. If not set, the label from the annotations will be shown.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Defines the relative path of the property in the metamodel, based on the current contextPath.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "visible": { + "type": "boolean", + "description": "If set to false, the FormElement is not rendered.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "fields": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.ui.core.Control" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.KPITag": { + "description": "Building block used to create a KPI tag.", + "isViewNode": true, + "type": "object", + "properties": { + "number": { + "type": "any", + "description": "The Number to be displayed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "showIcon": { + "type": "boolean", + "description": "Set it to `true` if the KPI should display its status icon.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "status": { + "type": "any", + "description": "The Status to be displayed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "text": { + "type": "any", + "description": "The Text to be displayed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "i18nClassification": "TXT: Text of the KPITag" + }, + "tooltip": { + "type": "any", + "description": "The Tooltip to be displayed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "i18nClassification": "CAP: Tooltip of the KPITag" + }, + "unit": { + "type": "any", + "description": "The Unit of Measure of the number to be displayed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "press": { + "type": "string", + "description": "An event is triggered when the KPI is pressed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.MacroAPI": { + "description": "Base API control for building blocks.", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "Defines the path of the context used in the current page or block.\nThis setting is defined by the framework.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Defines the relative path of the property in the metamodel, based on the current contextPath.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.MessageButton": { + "description": "Building block used to show bound messages.\nThe Message Button Building Block gets the bound messages from the MessageModel.\nUsage example:\n\n<macros:MessageButton visibilityChange=\".handler.onMessageButtonVisibilityChange\" />\n\n", + "isViewNode": true, + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "visibilityChange": { + "type": "string", + "description": "The event is triggered when the message button's visibility changes.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.MicroChart": { + "description": "Building block used to create a MicroChart based on the metadata provided by OData V4.\nOverview of Micro Chart Building Block\n\t\t\t\n\nUsually, a contextPath and metaPath is expected.\nUsage example:\n\n<macros:MicroChart id=\"MyMicroChart\" contextPath=\"/RootEntity\" metaPath=\"@com.sap.vocabularies.UI.v1.Chart\" />\n\n \nsap.ui.require([\"sap/fe/macros/MicroChart\"], function(MicroChart) {\n\t ...\n\t new MicroChart(\"myMicroChart\", {metaPath:\"@com.sap.vocabularies.UI.v1.Chart\"})\n})\n\n", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "context path to the MicroChart.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "hideOnNoData": { + "type": "boolean", + "description": "Show blank space in case there is no data in the chart", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Metadata path to the MicroChart.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "showOnlyChart": { + "type": "boolean", + "description": "To control the rendering of Title, Subtitle and Currency Labels. When the size is xs then we do\nnot see the inner labels of the MicroChart as well.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "size": { + "type": "string", + "description": "Size of the MicroChart", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.MultiValueField": { + "description": "Building block for creating a MultiValueField based on the metadata provided by OData V4.\n\nThe MultiValueField can be used to display either a DataField or Property directly. It has to point to a collection property.\n\nUsage example:\n\n<macro:MultiValueField\nid=\"SomeUniqueIdentifier\"\ncontextPath=\"{entitySet>}\"\nmetaPath=\"{dataField>}\"\n/>\n", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "The context path provided for the MultiValueField", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "items": { + "type": "any", + "description": "Property added to be able to add data / items to the multi-input field using a different model", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Defines the relative Metadata path to the MultiValueField.\nThe metaPath should point to a Property or DataField.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "readOnly": { + "type": "boolean", + "description": "The readOnly flag", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.Page": { + "description": "Provides a Page building block that can be used to create a page with a title and content\nBy default, the page comes with an ObjectTitle", + "isViewNode": true, + "type": "object", + "properties": { + "avatarSrc": { + "type": "string", + "description": "Avatar source of the page. It is considered only if the title property is specified.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "description": { + "type": "string", + "description": "Description of the page. It is considered only if the title property is specified.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "title": { + "type": "string", + "description": "Title of the page\nIf title is not given, then we will add a title, avatar and description based on the unqualified HeaderInfo associated to the entity", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "items": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.ui.core.Control" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control", + "defaultAggregation": "items" + } + }, + "sap.fe.macros.Paginator": { + "description": "Building block used to create a paginator control.\nUsage example:\n\n<macros:Paginator />\n\n", + "isViewNode": true, + "type": "object", + "properties": { + "ariaTitle": { + "type": "string", + "description": "Title of the object that is readout by screen readers when the next/previous item is loaded via keyboard focus on the paginator button.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.RichTextEditor": { + "description": "Building block that exposes the RichTextEditor UI5 control.\nIt's used to enter formatted text, and uses the third-party component called TinyMCE.\n", + "isViewNode": true, + "type": "object", + "properties": { + "excludeDefaultPlugins": { + "type": "boolean", + "description": "With the 'excludeDefaultPlugins' you can ask to remove the plugins that will be added by default\nThe default plugins are \"emoticons\" \"directionality\" \"image\" \"table\" \"link\" \"powerpaste\".", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "readOnly": { + "type": "boolean", + "description": "Use the readOnly attribute to override the edit flow of the page.\nBy setting 'readOnly' to true, a FormattedText will be displayed instead of the editor.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "required": { + "type": "any", + "description": "Use the 'required' attribute to make sure that the editor is filled with some text.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "value": { + "type": "any", + "description": "The value contained in the editor. You can use this attribute to set a default value.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "buttonGroups": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.richtexteditor.ButtonGroup" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "plugins": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.richtexteditor.Plugin" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.RichTextEditorWithMetadata": { + "description": "Metadata-driven building block that exposes the RichTextEditor UI5 control.\nIt's used to enter formatted text and uses the third-party component called TinyMCE.\n", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "The context path of the property displayed", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "The metaPath of the displayed property", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.Share": { + "description": "Building block used to create the ‘Share’ functionality.\n\nPlease note that the 'Share in SAP Jam' option is only available on platforms that are integrated with SAP Jam.\n\nIf you are consuming this macro in an environment where the SAP Fiori launchpad is not available, then the 'Save as Tile' option is not visible.\nUsage example:\n\n<macros:Share\nid=\"someID\"\nvisible=\"true\"\n/>\n\nOverview of Building Blocks\n\t\t\t\n", + "isViewNode": true, + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "shareOptions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.share.ShareOptions" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control", + "defaultAggregation": "shareOptions" + } + }, + "sap.fe.macros.VariantManagement": { + "description": "Building block used to create a Variant Management based on the metadata provided by OData V4.\nUsage example:\n\n<macro:VariantManagement\nid=\"SomeUniqueIdentifier\"\nfor=\"{listOfControlIds>}\"\n/>\n\nOverview of Building Blocks\n\t\t\t\n", + "isViewNode": true, + "type": "object", + "properties": { + "for": { + "$ref": "#/definitions/string[]", + "description": "for", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "headerLevel": { + "type": "string", + "description": "Header level for the variant management, determining its position or style.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "any", + "description": "Identifier for the variant management control.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "showSetAsDefault": { + "type": "boolean", + "description": "Whether the \"Set as Default\" option is visible.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.chart.Action": { + "description": "Definition of a custom action to be used in the chart toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "anchor": { + "type": "string", + "description": "Reference to the key of another action already displayed in the toolbar to properly place this one", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enabled": { + "type": "boolean", + "description": "Enables or disables the action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "key": { + "type": "string", + "description": "Unique identifier of the action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "placement": { + "type": "string", + "description": "Defines where this action should be placed relative to the defined anchor\nAllowed values are `Before` and `After`\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "After", + "Before" + ] + }, + "press": { + "type": "string", + "description": "Event handler to be called when the user chooses the action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "requiresSelection": { + "type": "boolean", + "description": "Defines if the action requires a selection.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "text": { + "type": "string", + "description": "The text that will be displayed for this action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "i18nClassification": "BUT: Text of the action button" + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.chart.ActionGroup": { + "description": "Definition of a custom action group to be used inside the chart toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "anchor": { + "type": "string", + "description": "Reference to the key of another action or action group already displayed in the toolbar to properly place this one", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "key": { + "type": "string", + "description": "Unique identifier of the action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "placement": { + "type": "string", + "description": "Defines where this action group should be placed relative to the defined anchor\nAllowed values are `Before` and `After`\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "After", + "Before" + ] + }, + "text": { + "type": "string", + "description": "The text that will be displayed for this action group", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "i18nClassification": "BUT: Text of the action group button" + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "actions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.chart.Action" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control", + "defaultAggregation": "actions" + } + }, + "sap.fe.macros.chart.Chart": { + "description": "Building block used to create a chart based on the metadata provided by OData V4.\n\nUsually, a contextPath and metaPath is expected.\nUsage example:\n\nsap.ui.require([\"sap/fe/macros/chart/Chart\"], function(Chart) {\n\t ...\n\t new Chart(\"myChart\", {metaPath:\"MyChart\"})\n})\n\nThis is currently an experimental API because the structure of the generated content will change to come closer to the Chart that you get out of templates.\nThe public method and property will not change but the internal structure will so be careful on your usage.\n", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "Metadata path to the entitySet or navigationProperty", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "filterBar": { + "type": "string", + "description": "Id of the FilterBar building block associated with the chart.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "header": { + "type": "string", + "description": "Specifies the header text that is shown in the chart", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "headerVisible": { + "type": "boolean", + "description": "Controls if the header text should be shown or not", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Metadata path to the presentation context (UI.Chart with or without a qualifier)", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "personalization": { + "type": "string", + "description": "Controls which options should be enabled for the chart personalization dialog.\nIf it is set to `true`, all possible options for this kind of chart are enabled.\nIf it is set to `false`, personalization is disabled.\n\nYou can also provide a more granular control for the personalization by providing a comma-separated list with the options you want to be available.\nAvailable options are:\n- Sort\n- Type\n- Item\n- Filter\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "selectionMode": { + "type": "string", + "description": "Defines the selection mode to be used by the chart.\nAllowed values are `None`, `Single` or `Multiple`\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "None", + "Single", + "Multiple" + ] + }, + "variantManagement": { + "type": "string", + "description": "Controls the kind of variant management that should be enabled for the chart.\nAllowed value is `Control`.\nIf set with value `Control`, a variant management control is seen within the chart and the chart is linked to this.\nIf not set with any value, variant management control is not available for this chart.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "const": "Control" + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "actions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.chart.Action" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "selectionChange": { + "type": "string", + "description": "An event triggered when chart selections are changed. The event contains information about the data selected/deselected and the Boolean flag that indicates whether data is selected or deselected.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.controls.BuildingBlockObjectProperty": { + "description": "Base class for building block complex object properties that can be serialized to XML.", + "isViewNode": true, + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.controls.BuildingBlockWithTemplating": { + "description": "Using this class you can define a building block that will manage and render a templating based building block.\nOn change of the main properties you will be able to recreate the content.", + "isViewNode": true, + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.FlexibleColumnLayoutActions": { + "description": "Building block for adding overflow toolbar buttons to integrate into the flexible column layout support from Fiori elements.\nUsage example:\n\n<macros:FlexibleColumnLayoutActions />\n\n", + "isViewNode": true, + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.field.Field": { + "description": "Building block for creating a field based on the metadata provided by OData V4.\n\nUsually, a DataField or DataPoint annotation is expected, but the field can also be used to display a property from the entity type.\nWhen creating a Field building block, you must provide an ID to ensure everything works correctly.\nUsage example:\n\nsap.ui.require([\"sap/fe/macros/field/Field\"], function(Field) {\n\t ...\n\t new Field(\"MyField\", {metaPath:\"MyProperty\"})\n})\n\nThis is currently an experimental API because the structure of the generated content will change to come closer to the Field that you get out of templates.\nThe public method and property will not change but the internal structure will so be careful on your usage.\n", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "Defines the path of the context used in the current page or block.\nThis setting is defined by the framework.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "description": { + "type": "string", + "description": "This is used to optionally provide an external description that comes from a different model than the oData model.\nThis should be used in conjunction with the value property.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Defines the relative path of the property in the metamodel, based on the current contextPath.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "readOnly": { + "type": "boolean", + "description": "An expression that allows you to control the read-only state of the field.\nIf you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the current state.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "semanticObject": { + "type": "string", + "description": "Option to add semantic objects for a field.\nThis parameter overwrites the semantic objects defined through annotations.\nValid options are either a single semantic object, a stringified array of semantic objects,\na formatter or a single binding expression returning either a single semantic object or an array of semantic objects.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "value": { + "type": "string", + "description": "This is used to optionally provide an external value that comes from a different model than the OData model.\nIt is designed to work with a field with value help, and without support for complex value help (currency / unit).", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "formatOptions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.field.FieldFormatOptions" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "change": { + "type": "string", + "description": "An event containing details is triggered when the value of the field is changed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "liveChange": { + "type": "string", + "description": "An event containing details is triggered when the value of the field is live changed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.field.FieldFormatOptions": { + "description": "Additional format options for the field.", + "isViewNode": true, + "type": "object", + "properties": { + "dateTimePattern": { + "type": "string", + "description": "Property for defining a custom pattern for the date, time, or dateTime format. \nIf a dateTimePattern is defined, the dateTimeStyle is ignored.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "dateTimeStyle": { + "type": "string", + "description": "Property for defining the display style for the date, time, or dateTime format. \nIf there is a dateTimePattern defined, dateTimeStyle is ignored.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "short", + "medium", + "long", + "full" + ] + }, + "displayMode": { + "type": "string", + "description": "Defines how the field value and associated text will be displayed together.\n\nAllowed values are \"Value\", \"Description\", \"DescriptionValue\" and \"ValueDescription\"\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "Description", + "DescriptionValue", + "Value", + "ValueDescription" + ] + }, + "fieldEditStyle": { + "type": "string", + "description": "Determines how the field should be rendered, e.g. as radio buttons. \nIf not all prerequisites are met, the field will default back to the standard rendering.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "const": "RadioButtons" + }, + "measureDisplayMode": { + "type": "string", + "description": "Defines if and how the field measure will be displayed.\n\nAllowed values are \"Hidden\" and \"ReadOnly\"\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "Hidden", + "ReadOnly" + ] + }, + "radioButtonsHorizontalLayout": { + "type": "boolean", + "description": "Specifies if radio buttons should be rendered in a horizontal layout. \n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "reactiveAreaMode": { + "type": "string", + "description": "When the Field is displayed as a clickable element, it defines the size of the reactive area of the clickable element:\n- ReactiveAreaMode.Inline - The link is displayed as part of a sentence.\n- ReactiveAreaMode.Overlay - The link is displayed as an overlay on top of other interactive parts of the page.\nNote: It is designed to make the clickable element easier to activate and helps meet the WCAG 2.2 Target Size requirement. It is applicable only for the SAP Horizon themes. Note: The size of the reactive area is sufficiently large to help users avoid accidentally selecting (clicking or tapping) unintended UI elements. UI elements positioned over other parts of the page may need an invisible active touch area. This ensures that no elements beneath are activated accidentally when the user tries to interact with the overlay element.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "Inline", + "Overlay" + ] + }, + "showDate": { + "type": "boolean", + "description": "Defines if the date part of a date time with timezone field should be shown. \n\nThe dateTimeOffset field must have a timezone annotation.\nThe default value is true.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "showTime": { + "type": "boolean", + "description": "Defines if the time part of a date time with timezone field should be shown. \n\nThe dateTimeOffset field must have a timezone annotation.\nThe default value is true.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "showTimezone": { + "type": "boolean", + "description": "Defines if the timezone part of a date time with timezone field should be shown. \n\nThe dateTimeOffset field must have a timezone annotation.\nThe default value is true.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "textExpandBehaviorDisplay": { + "type": "string", + "description": "Defines how the full text will be displayed.\n\nAllowed values are \"InPlace\" and \"Popover\"\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "InPlace", + "Popover" + ] + }, + "textLinesEdit": { + "type": "number", + "description": "Maximum number of lines for multiline texts in edit mode.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "textMaxCharactersDisplay": { + "type": "number", + "description": "Maximum number of characters from the beginning of the text field that are shown initially.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "textMaxLength": { + "type": "number", + "description": "Defines the maximum number of characters for the multiline text value.\n\nIf a multiline text exceeds the maximum number of allowed characters, the counter below the input field displays the exact number.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "textMaxLines": { + "type": "number", + "description": "Maximum number of lines that multiline texts in edit mode can grow to.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.filterBar.FilterBar": { + "description": "Usage example:\n\nsap.ui.require([\"sap/fe/macros/filterBar/FilterBar\"], function(FilterBar) {\n\t ...\n\t new FilterBar(\"MyFilterBar\", {metaPath:\"@com.sap.vocabularies.UI.v1.SelectionFields\"})\n})\n\nThis is currently an experimental API because the structure of the generated content will change to come closer to the FilterBar that you get out of templates.\nThe public method and property will not change but the internal structure will so be careful on your usage.\n", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "Defines the path of the context used in the current page or block.\nThis setting is defined by the framework.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "liveMode": { + "type": "boolean", + "description": "If true, the search is triggered automatically when a filter value is changed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Defines the relative path of the property in the metamodel, based on the current contextPath.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "showClearButton": { + "type": "boolean", + "description": "Handles the visibility of the 'Clear' button on the FilterBar.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "showMessages": { + "type": "boolean", + "description": "Displays possible errors during the search in a message box", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "visible": { + "type": "boolean", + "description": "Parameter which sets the visibility of the FilterBar building block", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "filterFields": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.filterBar.FilterField" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "afterClear": { + "type": "string", + "description": "This event is fired when the 'Clear' button is pressed. This is only possible when the 'Clear' button is enabled.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "filterChanged": { + "type": "string", + "description": "This event is fired after either a filter value or the visibility of a filter item has been changed. The event contains conditions that will be used as filters.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "search": { + "type": "string", + "description": "This event is fired when the 'Go' button is pressed or after a condition change.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.FilterBar": { + "description": "Building block for creating a FilterBar based on the metadata provided by OData V4.\nOverview of Building Blocks\n\t\t\t\n\nUsually, a SelectionFields annotation is expected.\nUsage example:\n\n<macros:FilterBar id=\"MyFilterBar\" metaPath=\"@com.sap.vocabularies.UI.v1.SelectionFields\" />\n\n", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "Defines the path of the context used in the current page or block.\nThis setting is defined by the framework.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "liveMode": { + "type": "boolean", + "description": "If true, the search is triggered automatically when a filter value is changed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Defines the relative path of the property in the metamodel, based on the current contextPath.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "showClearButton": { + "type": "boolean", + "description": "Handles the visibility of the 'Clear' button on the FilterBar.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "showMessages": { + "type": "boolean", + "description": "Displays possible errors during the search in a message box", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "visible": { + "type": "boolean", + "description": "Parameter which sets the visibility of the FilterBar building block", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "filterFields": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.filterBar.FilterField" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "afterClear": { + "type": "string", + "description": "This event is fired when the 'Clear' button is pressed. This is only possible when the 'Clear' button is enabled.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "filterChanged": { + "type": "string", + "description": "This event is fired after either a filter value or the visibility of a filter item has been changed. The event contains conditions that will be used as filters.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "search": { + "type": "string", + "description": "This event is fired when the 'Go' button is pressed or after a condition change.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.filterBar.FilterField": { + "description": "Definition of a custom filter to be used inside the FilterBar.\nThe template for the FilterField has to be provided as the default aggregation\nOverview of Building Blocks\n\t\t\t\n", + "isViewNode": true, + "type": "object", + "properties": { + "anchor": { + "type": "string", + "description": "Reference to the key of another filter already displayed in the table to properly place this one", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "key": { + "type": "string", + "description": "The property name of the FilterField", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "label": { + "type": "string", + "description": "The text that will be displayed for this FilterField", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "placement": { + "type": "string", + "description": "Defines where this filter should be placed relative to the defined anchor\nAllowed values are `Before` and `After`\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "After", + "Before" + ] + }, + "property": { + "type": "string", + "description": "Defines which property will be influenced by the FilterField.\nThis must be a valid property of the entity as this can be used for SAP Companion integration\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "required": { + "type": "boolean", + "description": "If set, the FilterField will be marked as a mandatory field.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "showMessages": { + "type": "boolean", + "description": "This property is not required at filter field level. To achieve the desired behavior, specify the showMessages property in the FilterBar building block.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.Form": { + "description": "Building block for creating a Form based on the metadata provided by OData V4.\n\nIt is designed to work based on a FieldGroup annotation but can also work if you provide a ReferenceFacet or a CollectionFacet\nUsage example:\n\n<macros:Form id=\"MyForm\" metaPath=\"@com.sap.vocabularies.UI.v1.FieldGroup#GeneralInformation\" />\n\n", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "$ref": "#/definitions/sap.ui.model.Context", + "description": "contextPath", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "$ref": "#/definitions/sap.ui.model.Context", + "description": "metaPath", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "title": { + "type": "string", + "description": "The title of the form control.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "i18nClassification": "HED: Title of the form" + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.microchart.MicroChart": { + "description": "Building block used to create a MicroChart based on the metadata provided by OData V4.\n\nUsually, a contextPath and metaPath is expected.\nUsage example:\n\nsap.ui.require([\"sap/fe/macros/microchart/MicroChart\"], function(MicroChart) {\n\t ...\n\t new MicroChart(\"microChartID\", {metaPath:\"MyProperty\"})\n})\n\nThis is currently an experimental API because the structure of the generated content will change to come closer to the MicroChart that you get out of templates.\nThe public method and property will not change but the internal structure will so be careful on your usage.\n", + "isViewNode": true, + "type": "object", + "properties": { + "contextPath": { + "type": "string", + "description": "context path to the MicroChart.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "hideOnNoData": { + "type": "boolean", + "description": "Show blank space in case there is no data in the chart", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Metadata path to the MicroChart.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "showOnlyChart": { + "type": "boolean", + "description": "To control the rendering of Title, Subtitle and Currency Labels. When the size is xs then we do\nnot see the inner labels of the MicroChart as well.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "size": { + "type": "string", + "description": "Size of the MicroChart", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.richtexteditor.ButtonGroup": { + "description": "Button configurations for the RichTextEditor.", + "isViewNode": true, + "type": "object", + "properties": { + "buttons": { + "type": "string", + "description": "The buttons to be displayed in the group.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "customToolbarPriority": { + "type": "number", + "description": "The priority of the group in the custom toolbar.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "name": { + "type": "string", + "description": "The name of the group.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "priority": { + "type": "number", + "description": "The priority of the group.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "row": { + "type": "number", + "description": "Row number in which the button should be", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "visible": { + "type": "boolean", + "description": "Whether the group is visible.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.richtexteditor.Plugin": { + "description": "Represents a TinyMCE plugin.\nEach object has to contain a property \"name\" which then contains the plugin name/ID.", + "isViewNode": true, + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The plugin name.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.share.ShareOptions": { + "description": "Share Options.", + "isViewNode": true, + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.table.Action": { + "description": "Definition of a custom action to be used inside the table toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "anchor": { + "type": "string", + "description": "Reference to the key of another action already displayed in the toolbar to properly place this one", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "command": { + "type": "string", + "description": "Determines the shortcut combination to trigger the action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableOnSelect": { + "type": "string", + "description": "Determines whether the action requires selecting one item or multiple items.\nAllowed values are `single` and `multi`", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "multi", + "single" + ] + }, + "enabled": { + "type": "boolean", + "description": "Enables or disables the action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isAIOperation": { + "type": "boolean", + "description": "Displays the AI Icon on the action button.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "key": { + "type": "string", + "description": "Unique identifier of the action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "placement": { + "type": "string", + "description": "Defines where this action should be placed relative to the defined anchor\nAllowed values are `Before` and `After`\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "After", + "Before" + ] + }, + "requiresSelection": { + "type": "boolean", + "description": "Defines if the action requires a selection.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "text": { + "type": "string", + "description": "The text that will be displayed for this action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "i18nClassification": "BUT: Text of the action button" + }, + "visible": { + "type": "boolean", + "description": "Determines whether the action is visible.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "press": { + "type": "string", + "description": "Event handler to be called when the user chooses the action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.table.ActionGroup": { + "description": "Definition of a custom ActionGroup to be used inside the table toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "anchor": { + "type": "string", + "description": "Reference to the key of another action or action group already displayed in the toolbar to properly place this one", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "defaultAction": { + "type": "string", + "description": "Determines the default action to be executed on the action group.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "key": { + "type": "string", + "description": "Unique identifier of the ActionGroup", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "placement": { + "type": "string", + "description": "Determines where this action group should be placed relative to the defined anchor\nAllowed values are `Before` and `After`\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "After", + "Before" + ] + }, + "text": { + "type": "string", + "description": "The text that will be displayed for this action group", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "i18nClassification": "BUT: Text of the action group button" + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "actions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.Action" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control", + "defaultAggregation": "actions" + } + }, + "sap.fe.macros.table.ActionGroupOverride": { + "description": "Definition of an action group override to be used inside the Table building block.", + "isViewNode": true, + "type": "object", + "properties": { + "anchor": { + "type": "string", + "description": "Reference to the key of another action or action group already displayed in the toolbar to properly place this one", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "key": { + "type": "string", + "description": "Unique identifier of the ActionGroup to overridden.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "placement": { + "type": "string", + "description": "Determines where this action group should be placed relative to the defined anchor\nAllowed values are `Before` and `After`\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "After", + "Before" + ] + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "actions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.Action" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control", + "defaultAggregation": "actions" + } + }, + "sap.fe.macros.table.ActionOverride": { + "description": "Definition of an override for the action to be used inside the Table building block.", + "isViewNode": true, + "type": "object", + "properties": { + "anchor": { + "type": "string", + "description": "Reference to the key of another action already displayed in the toolbar to properly place this one", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "command": { + "type": "string", + "description": "Determines the shortcut combination to trigger the action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "defaultValuesFunction": { + "type": "string", + "description": "Determines the function to get the default values of the action.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableAutoScroll": { + "type": "boolean", + "description": "Determines if the auto scroll is enabled after executing the action.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableOnSelect": { + "type": "string", + "description": "Determines whether the action requires selecting one item or multiple items.\nAllowed values are `single` and `multi`", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "multi", + "single" + ] + }, + "enabled": { + "type": "boolean", + "description": "Enables or disables the action", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isAIOperation": { + "type": "boolean", + "description": "Displays the AI Icon on the action button.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "key": { + "type": "string", + "description": "Unique identifier of the action to overridden.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "navigateToInstance": { + "type": "boolean", + "description": "Determines whether there is a navigation after executing the action.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "placement": { + "type": "string", + "description": "Defines where this action should be placed relative to the defined anchor\nAllowed values are `Before` and `After`\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "After", + "Before" + ] + }, + "visible": { + "type": "boolean", + "description": "Determines whether the action is visible.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.table.AnalyticalConfiguration": { + "description": "A set of options that can be configured to control the aggregation behavior", + "isViewNode": true, + "type": "object", + "properties": { + "aggregationOnLeafLevel": { + "type": "boolean", + "description": "True if leaf level rows shall display aggregated data", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.table.Column": { + "description": "Definition of a custom column to be used inside the table.\nThe template for the column has to be provided as the default aggregation\n", + "isViewNode": true, + "type": "object", + "properties": { + "anchor": { + "type": "string", + "description": "Reference to the key of another column already displayed in the table to properly place this one", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "availability": { + "type": "string", + "description": "The column availability\nAllowed values are `Default`, `Adaptation`, `Hidden`\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "header": { + "type": "string", + "description": "The text that will be displayed for this column header", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "i18nClassification": "COL: Header of the column" + }, + "horizontalAlign": { + "type": "string", + "description": "Aligns the header as well as the content horizontally", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "importance": { + "type": "string", + "description": "Defines the column importance.\nYou can define which columns should be automatically moved to the pop-in area based on their importance\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "key": { + "type": "string", + "description": "Unique identifier of the column", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "placement": { + "type": "string", + "description": "Determines where this column should be placed relative to the defined anchor\nAllowed values are `Before` and `After`\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "After", + "Before" + ] + }, + "properties": { + "$ref": "#/definitions/string[]", + "description": "properties", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "required": { + "type": "boolean", + "description": "Determines if the information in the column is required.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "tooltip": { + "type": "string", + "description": "Determines the text displayed for the column tooltip", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "width": { + "type": "string", + "description": "Determines the column's width.\nAllowed values are 'auto', 'value', and 'inherit', according to sap.ui.core.CSSSize\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "widthIncludingColumnHeader": { + "type": "boolean", + "description": "Indicates if the column header should be a part of the width calculation.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.table.ColumnExportSettings": { + "description": "Definition of the export settings applied to a column within the table.", + "isViewNode": true, + "type": "object", + "properties": { + "property": { + "$ref": "#/definitions/string[]", + "description": "property", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "template": { + "type": "string", + "description": "Determines a formatting template that supports indexed placeholders within curly brackets.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "type": { + "type": "string", + "description": "Determines the data type of the field", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "width": { + "type": "number", + "description": "Determines the width of the column in characters", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "wrap": { + "type": "boolean", + "description": "Determines if the content needs to be wrapped.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.table.ColumnOverride": { + "description": "Definition of an override for the column to be used inside the Table building block.", + "isViewNode": true, + "type": "object", + "properties": { + "availability": { + "type": "string", + "description": "The column availability\nAllowed values are `Default`, `Adaptation`, `Hidden``\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "horizontalAlign": { + "type": "string", + "description": "Aligns the header as well as the content horizontally", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "importance": { + "type": "string", + "description": "Defines the importance of the column.\nYou can define which columns should be automatically moved to the pop-in area based on their importance\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "key": { + "type": "string", + "description": "Unique identifier of the column to overridden.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "width": { + "type": "string", + "description": "Determines the column's width.\nAllowed values are 'auto', 'value', and 'inherit', according to sap.ui.core.CSSSize\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "widthIncludingColumnHeader": { + "type": "boolean", + "description": "Indicates if the column header should be a part of the width calculation.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "exportSettings": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.ColumnExportSettings" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.table.MassEdit": { + "description": "Definition of the mass edit to be used inside the table.", + "isViewNode": true, + "type": "object", + "properties": { + "ignoredFields": { + "$ref": "#/definitions/string[]", + "description": "ignoredFields", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "operationGroupingMode": { + "type": "string", + "description": "Defines the mode of the operation grouping to save the new values\nAllowed values are `ChangeSet` and `Isolated`", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "ChangeSet", + "Isolated" + ] + }, + "visibleFields": { + "$ref": "#/definitions/string[]", + "description": "visibleFields", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "customContent": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.ui.layout.form.FormContainer" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control", + "defaultAggregation": "customContent" + } + }, + "sap.fe.macros.table.QuickVariantSelection": { + "description": "Definition of the quickVariantSelection to be used inside the table.", + "isViewNode": true, + "type": "object", + "properties": { + "paths": { + "$ref": "#/definitions/string[]", + "description": "paths", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "showCounts": { + "type": "boolean", + "description": "Defines whether the counts should be displayed next to the text", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.Table": { + "description": "Building block used to create a table based on the metadata provided by OData V4.\n\nUsually, a LineItem, PresentationVariant, or SelectionPresentationVariant annotation is expected, but the Table building block can also be used to display an EntitySet.\n\nIf a PresentationVariant is specified, then it must have UI.LineItem as the first property of the Visualizations.\n\nIf a SelectionPresentationVariant is specified, then it must contain a valid PresentationVariant that also has a UI.LineItem as the first property of the Visualizations.\nUsage example:\n\n<macros:Table id=\"MyTable\" metaPath=\"@com.sap.vocabularies.UI.v1.LineItem\" />\n\nOverview of Table Building Blocks\n\t\t\t\n", + "isViewNode": true, + "type": "object", + "properties": { + "busy": { + "type": "boolean", + "description": "An expression that allows you to control the 'busy' state of the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "condensedTableLayout": { + "type": "boolean", + "description": "Determines whether the table adapts to the condensed layout.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "contextPath": { + "type": "string", + "description": "Defines the path of the context used in the current page or block.\nThis setting is defined by the framework.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "creationMode": { + "$ref": "#/definitions/sap.fe.macros.table.TableCreationOptions", + "description": "creationMode", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "disableColumnFreeze": { + "type": "boolean", + "description": "Determines whether the number of fixed columns can be configured in the Column Settings dialog.\nThis property doesn't apply for responsive tables\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "disableCopyToClipboard": { + "type": "boolean", + "description": "Controls if the copy functionality of the table is disabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableAutoColumnWidth": { + "type": "boolean", + "description": "Specifies if the column width is automatically calculated.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableExport": { + "type": "boolean", + "description": "Controls if the export functionality of the table is enabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableFullScreen": { + "type": "boolean", + "description": "Controls whether the table can be opened in fullscreen mode or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enablePaste": { + "type": "boolean", + "description": "Controls if the paste functionality of the table is enabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enablePastingOfComputedProperties": { + "type": "boolean", + "description": "Determine whether the data copied to the computed columns is sent to the back end.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableSelectAll": { + "type": "boolean", + "description": "Determines whether the Clear All button is enabled by default.\nTo enable the Clear All button by default, you must set this property to false.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "exportRequestSize": { + "type": "number", + "description": "Maximum allowed number of records to be exported in one request.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "filterBar": { + "type": "string", + "description": "ID of the FilterBar building block associated with the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "frozenColumnCount": { + "type": "number", + "description": "Number of columns that are fixed on the left. Only columns which are not fixed can be scrolled horizontally.\nThis property is not relevant for responsive tables\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "header": { + "type": "string", + "description": "Specifies the header text that is shown in the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "i18nClassification": "TIT: Header of the table" + }, + "headerVisible": { + "type": "boolean", + "description": "Controls if the header text should be shown or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "ignoredFields": { + "type": "string", + "description": "Comma-separated value of fields that must be ignored in the OData metadata by the Table building block.\nThe table building block is not going to create built-in columns or offer table personalization for comma-separated value of fields that are provided in the ignoredfields.\nAny column referencing an ignored field is to be removed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isSearchable": { + "type": "boolean", + "description": "Defines whether to display the search action.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Defines the relative path to a LineItem, PresentationVariant or SelectionPresentationVariant in the metamodel, based on the current contextPath.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "modeForNoDataMessage": { + "type": "string", + "description": "Changes the size of the IllustratedMessage in the table, or removes it completely.\nAllowed values are `illustratedMessage-Auto`, `illustratedMessage-Base`, `illustratedMessage-Dialog`, `illustratedMessage-Dot`, `illustratedMessage-Scene`, `illustratedMessage-Spot` or `text`.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "illustratedMessage-Auto", + "illustratedMessage-Base", + "illustratedMessage-Medium", + "illustratedMessage-Dot", + "illustratedMessage-ExtraSmall", + "illustratedMessage-Scene", + "illustratedMessage-Large", + "illustratedMessage-Spot", + "illustratedMessage-Small", + "text" + ] + }, + "personalization": { + "type": "string", + "description": "Controls which options should be enabled for the table personalization dialog.\nIf it is set to `true`, all possible options for this kind of table are enabled.\nIf it is set to `false`, personalization is disabled.\n\nYou can also provide a more granular control for the personalization by providing a comma-separated list with the options you want to be available.\nAvailable options are:\n- Sort\n- Column\n- Filter\n- Group\n\nThe Group option is only applicable to analytical tables and responsive tables.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "popinLayout": { + "type": "string", + "description": "Defines the layout options of the table popins. Only applies to responsive tables.\nAllowed values are `Block`, `GridLarge`, and `GridSmall`.\n- `Block`: Sets a block layout for rendering the table popins. The elements inside the popin container are rendered one below the other.\n- `GridLarge`: Sets a grid layout for rendering the table popins. The grid width for each table popin is comparatively larger than GridSmall, so this layout allows less content to be rendered in a single popin row.\n- `GridSmall`: Sets a grid layout for rendering the table popins. The grid width for each table popin is small, so this layout allows more content to be rendered in a single popin row.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "Block", + "GridLarge", + "GridSmall" + ] + }, + "readOnly": { + "type": "boolean", + "description": "An expression that allows you to control the 'read-only' state of the table.\nIf you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the current state.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "rowCount": { + "type": "number", + "description": "Number of rows to be displayed in the table. Does not apply to responsive tables.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "rowCountMode": { + "type": "string", + "description": "Defines how the table handles the visible rows. Does not apply to Responsive tables.\nAllowed values are `Auto`, `Fixed`, and `Interactive`.\n- If set to `Fixed`, the table always has as many rows as defined in the rowCount property.\n- If set to `Auto`, the number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the `rowCount` property.\n- If set to `Interactive` the table can have as many rows as defined in the rowCount property. This number of rows can be modified by dragging the resizer available in this mode.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "Auto", + "Fixed", + "Interactive" + ] + }, + "scrollThreshold": { + "type": "number", + "description": "Defines how many additional data records are requested from the back-end system when the user scrolls vertically in the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "selectionLimit": { + "type": "number", + "description": "Defines the maximum number of rows that can be selected at once in the table.\nThis property does not apply to responsive tables.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "selectionMode": { + "type": "string", + "description": "Defines the selection mode to be used by the table.\nAllowed values are `None`, `Single`, `ForceSingle`, `Multi`, `ForceMulti` or `Auto`.\nIf set to 'Single', 'Multi' or 'Auto', SAP Fiori elements hooks into the standard lifecycle to determine the consistent selection mode.\nIf set to 'ForceSingle' or 'ForceMulti' your choice will be respected but this might not respect the Fiori guidelines.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "None", + "Single", + "Multi", + "Auto", + "ForceMulti", + "ForceSingle" + ] + }, + "threshold": { + "type": "number", + "description": "Defines the number of records to be initially requested from the back end.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "type": { + "type": "string", + "description": "Defines the type of table that will be used by the building block to render the data.\nAllowed values are `GridTable`, `ResponsiveTable` and `AnalyticalTable`.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "GridTable", + "ResponsiveTable", + "AnalyticalTable" + ] + }, + "variantManagement": { + "type": "string", + "description": "Controls the kind of variant management that should be enabled for the table.\nAllowed value is `Control`.\nIf set with value `Control`, a variant management control is seen within the table and the table is linked to this.\nIf not set with any value, control level variant management is not available for this table.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "None", + "Page", + "Control" + ] + }, + "widthIncludingColumnHeader": { + "type": "boolean", + "description": "Indicates if the column header should be a part of the width calculation.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "actions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.Action" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "analyticalConfiguration": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.AnalyticalConfiguration" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "columns": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.Column" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "massEdit": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.MassEdit" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "beforeRebindTable": { + "type": "string", + "description": "Before a table rebind, an event is triggered that contains information about the binding.\nThe event contains a parameter, `collectionBindingInfo`, which is an instance of `CollectionBindingInfoAPI`.\nThis allows you to manipulate the table's list binding.\nYou can use this event to attach event handlers to the table's list binding.\nYou can use this event to add selects, and add or read the sorters and filters.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "rowPress": { + "type": "string", + "description": "An event is triggered when the user chooses a row; the event contains information about which row is chosen.\nYou can set this in order to handle the navigation manually.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "selectionChange": { + "type": "string", + "description": "An event triggered when the selection in the table changes.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control", + "defaultAggregation": "columns" + } + }, + "sap.fe.macros.table.Table": { + "description": "Building block used to create a table based on the metadata provided by OData V4.\n\nUsually, a LineItem, PresentationVariant or SelectionPresentationVariant annotation is expected, but the Table building block can also be used to display an EntitySet.\n\nIf a PresentationVariant is specified, then it must have UI.LineItem as the first property of the Visualizations.\n\nIf a SelectionPresentationVariant is specified, then it must contain a valid PresentationVariant that also has a UI.LineItem as the first property of the Visualizations.\nUsage example:\n\nsap.ui.require([\"sap/fe/macros/table/Table\"], function(Table) {\n\t ...\n\t new Table(\"myTable\", {metaPath:\"@com.sap.vocabularies.UI.v1.LineItem\"})\n})\n\nThis is currently an experimental API because the structure of the generated content will change to come closer to the Table that you get out of templates.\nThe public method and property will not change but the internal structure will so be careful on your usage.\n", + "isViewNode": true, + "type": "object", + "properties": { + "busy": { + "type": "boolean", + "description": "An expression that allows you to control the 'busy' state of the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "condensedTableLayout": { + "type": "boolean", + "description": "Determines whether the table adapts to the condensed layout.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "contextPath": { + "type": "string", + "description": "Defines the path of the context used in the current page or block.\nThis setting is defined by the framework.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "creationMode": { + "$ref": "#/definitions/sap.fe.macros.table.TableCreationOptions", + "description": "creationMode", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "disableColumnFreeze": { + "type": "boolean", + "description": "Determines whether the number of fixed columns can be configured in the Column Settings dialog.\nThis property doesn't apply for responsive tables\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "disableCopyToClipboard": { + "type": "boolean", + "description": "Controls if the copy functionality of the table is disabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableAutoColumnWidth": { + "type": "boolean", + "description": "Specifies if the column width is automatically calculated.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableExport": { + "type": "boolean", + "description": "Controls if the export functionality of the table is enabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableFullScreen": { + "type": "boolean", + "description": "Controls whether the table can be opened in fullscreen mode or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enablePaste": { + "type": "boolean", + "description": "Controls if the paste functionality of the table is enabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enablePastingOfComputedProperties": { + "type": "boolean", + "description": "Determine whether the data copied to the computed columns is sent to the back end.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableSelectAll": { + "type": "boolean", + "description": "Determines whether the Clear All button is enabled by default.\nTo enable the Clear All button by default, you must set this property to false.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "exportRequestSize": { + "type": "number", + "description": "Maximum allowed number of records to be exported in one request.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "filterBar": { + "type": "string", + "description": "ID of the FilterBar building block associated with the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "frozenColumnCount": { + "type": "number", + "description": "Number of columns that are fixed on the left. Only columns which are not fixed can be scrolled horizontally.\nThis property is not relevant for responsive tables\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "header": { + "type": "string", + "description": "Specifies the header text that is shown in the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "headerVisible": { + "type": "boolean", + "description": "Controls if the header text should be shown or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "ignoredFields": { + "type": "string", + "description": "Comma-separated value of fields that must be ignored in the OData metadata by the Table building block.\nThe table building block is not going to create built-in columns or offer table personalization for comma-separated value of fields that are provided in the ignoredfields.\nAny column referencing an ignored field is to be removed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isSearchable": { + "type": "boolean", + "description": "Defines whether to display the search action.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Defines the relative path to a LineItem, PresentationVariant or SelectionPresentationVariant in the metamodel, based on the current contextPath.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "modeForNoDataMessage": { + "type": "string", + "description": "Changes the size of the IllustratedMessage in the table, or removes it completely.\nAllowed values are `illustratedMessage-Auto`, `illustratedMessage-Base`, `illustratedMessage-Dialog`, `illustratedMessage-Dot`, `illustratedMessage-Scene`, `illustratedMessage-Spot` or `text`.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "illustratedMessage-Auto", + "illustratedMessage-Base", + "illustratedMessage-Medium", + "illustratedMessage-Dot", + "illustratedMessage-ExtraSmall", + "illustratedMessage-Scene", + "illustratedMessage-Large", + "illustratedMessage-Spot", + "illustratedMessage-Small", + "text" + ] + }, + "personalization": { + "type": "string", + "description": "Controls which options should be enabled for the table personalization dialog.\nIf it is set to `true`, all possible options for this kind of table are enabled.\nIf it is set to `false`, personalization is disabled.\n\nYou can also provide a more granular control for the personalization by providing a comma-separated list with the options you want to be available.\nAvailable options are:\n- Sort\n- Column\n- Filter\n- Group\n\nThe Group option is only applicable to analytical tables and responsive tables.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "popinLayout": { + "type": "string", + "description": "Defines the layout options of the table popins. Only applies to responsive tables.\nAllowed values are `Block`, `GridLarge`, and `GridSmall`.\n- `Block`: Sets a block layout for rendering the table popins. The elements inside the popin container are rendered one below the other.\n- `GridLarge`: Sets a grid layout for rendering the table popins. The grid width for each table popin is comparatively larger than GridSmall, so this layout allows less content to be rendered in a single popin row.\n- `GridSmall`: Sets a grid layout for rendering the table popins. The grid width for each table popin is small, so this layout allows more content to be rendered in a single popin row.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "Block", + "GridLarge", + "GridSmall" + ] + }, + "readOnly": { + "type": "boolean", + "description": "An expression that allows you to control the 'read-only' state of the table.\nIf you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the current state.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "rowCount": { + "type": "number", + "description": "Number of rows to be displayed in the table. Does not apply to responsive tables.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "rowCountMode": { + "type": "string", + "description": "Defines how the table handles the visible rows. Does not apply to Responsive tables.\nAllowed values are `Auto`, `Fixed`, and `Interactive`.\n- If set to `Fixed`, the table always has as many rows as defined in the rowCount property.\n- If set to `Auto`, the number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the `rowCount` property.\n- If set to `Interactive` the table can have as many rows as defined in the rowCount property. This number of rows can be modified by dragging the resizer available in this mode.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "Auto", + "Fixed", + "Interactive" + ] + }, + "scrollThreshold": { + "type": "number", + "description": "Defines how many additional data records are requested from the back-end system when the user scrolls vertically in the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "selectionLimit": { + "type": "number", + "description": "Defines the maximum number of rows that can be selected at once in the table.\nThis property does not apply to responsive tables.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "selectionMode": { + "type": "string", + "description": "Defines the selection mode to be used by the table.\nAllowed values are `None`, `Single`, `ForceSingle`, `Multi`, `ForceMulti` or `Auto`.\nIf set to 'Single', 'Multi' or 'Auto', SAP Fiori elements hooks into the standard lifecycle to determine the consistent selection mode.\nIf set to 'ForceSingle' or 'ForceMulti' your choice will be respected but this might not respect the Fiori guidelines.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "None", + "Single", + "Multi", + "Auto", + "ForceMulti", + "ForceSingle" + ] + }, + "threshold": { + "type": "number", + "description": "Defines the number of records to be initially requested from the back end.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "type": { + "type": "string", + "description": "Defines the type of table that will be used by the building block to render the data.\nAllowed values are `GridTable`, `ResponsiveTable` and `AnalyticalTable`.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "GridTable", + "ResponsiveTable", + "AnalyticalTable" + ] + }, + "variantManagement": { + "type": "string", + "description": "Controls the kind of variant management that should be enabled for the table.\nAllowed value is `Control`.\nIf set with value `Control`, a variant management control is seen within the table and the table is linked to this.\nIf not set with any value, control level variant management is not available for this table.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "const": "Control" + }, + "widthIncludingColumnHeader": { + "type": "boolean", + "description": "Indicates if the column header should be a part of the width calculation.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "actions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.Action" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "analyticalConfiguration": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.AnalyticalConfiguration" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "columns": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.Column" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "massEdit": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.MassEdit" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "beforeRebindTable": { + "type": "string", + "description": "Before a table rebind, an event is triggered that contains information about the binding.\nThe event contains a parameter, `collectionBindingInfo`, which is an instance of `CollectionBindingInfoAPI`.\nThis allows you to manipulate the table's list binding.\nYou can use this event to attach event handlers to the table's list binding.\nYou can use this event to add selects, and add or read the sorters and filters.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "rowPress": { + "type": "string", + "description": "An event is triggered when the user chooses a row; the event contains information about which row is chosen.\nYou can set this in order to handle the navigation manually.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "selectionChange": { + "type": "string", + "description": "An event triggered when the selection in the table changes.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.table.TableCreationOptions": { + "description": "Create options for the table.", + "isViewNode": true, + "type": "object", + "properties": { + "createAtEnd": { + "type": "boolean", + "description": "Specifies if the new entry should be created at the top or bottom of a table in case of creationMode 'Inline'\nThe default value is 'false'\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "creationFields": { + "type": "string", + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "inlineCreationRowsHiddenInEditMode": { + "type": "boolean", + "description": "Specifies if the new entry should be hidden in case of creationMode 'InlineCreationRows'. This only applies to responsive tables.\nThe default value is 'false'\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "name": { + "type": "string", + "description": "Defines the creation mode to be used by the table.\nAllowed values are `NewPage`, `Inline`, `InlineCreationsRows`, `External` or `CreationDialog`.\n\nNewPage - the created document is shown in a new page, depending on whether metadata 'Sync', 'Async' or 'Deferred' is used\nInline - The creation is done inline\nInlineCreationsRows - The creation is done inline with an empty row\nExternal - The creation is done in a different application specified via the parameter 'outbound'\nCreationDialog - the creation is done in the table, with a dialog allowing to specify some initial property values (the properties are listed in `creationFields`).\n\nIf not set with any value:\nif navigation is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "CreationDialog", + "External", + "Inline", + "InlineCreationRows", + "NewPage" + ] + }, + "outbound": { + "type": "string", + "description": "The navigation target where the document is created in case of creationMode 'External'\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.TreeTable": { + "description": "Building block used to create a tree table based on the metadata provided by OData V4.\nOverview of Tree Table Building Block\n\t\t\t", + "isViewNode": true, + "type": "object", + "properties": { + "busy": { + "type": "boolean", + "description": "An expression that allows you to control the 'busy' state of the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "condensedTableLayout": { + "type": "boolean", + "description": "Determines whether the table adapts to the condensed layout.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "contextPath": { + "type": "string", + "description": "Defines the path of the context used in the current page or block.\nThis setting is defined by the framework.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "creationMode": { + "$ref": "#/definitions/sap.fe.macros.table.TreeTableCreationOptions", + "description": "creationMode", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "disableColumnFreeze": { + "type": "boolean", + "description": "Determines whether the number of fixed columns can be configured in the Column Settings dialog.\nThis property doesn't apply for responsive tables\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "disableCopyToClipboard": { + "type": "boolean", + "description": "Controls if the copy functionality of the table is disabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableAutoColumnWidth": { + "type": "boolean", + "description": "Specifies if the column width is automatically calculated.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableExport": { + "type": "boolean", + "description": "Controls if the export functionality of the table is enabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableFullScreen": { + "type": "boolean", + "description": "Controls whether the table can be opened in fullscreen mode or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enablePaste": { + "type": "boolean", + "description": "Controls if the paste functionality of the table is enabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enablePastingOfComputedProperties": { + "type": "boolean", + "description": "Determine whether the data copied to the computed columns is sent to the back end.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableSelectAll": { + "type": "boolean", + "description": "Determines whether the Clear All button is enabled by default.\nTo enable the Clear All button by default, you must set this property to false.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "exportRequestSize": { + "type": "number", + "description": "Maximum allowed number of records to be exported in one request.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "filterBar": { + "type": "string", + "description": "ID of the FilterBar building block associated with the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "frozenColumnCount": { + "type": "number", + "description": "Number of columns that are fixed on the left. Only columns which are not fixed can be scrolled horizontally.\nThis property is not relevant for responsive tables\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "header": { + "type": "string", + "description": "Specifies the header text that is shown in the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "headerVisible": { + "type": "boolean", + "description": "Controls if the header text should be shown or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "hierarchyQualifier": { + "type": "string", + "description": "A set of options that can be configured.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "ignoredFields": { + "type": "string", + "description": "Comma-separated value of fields that must be ignored in the OData metadata by the Table building block.\nThe table building block is not going to create built-in columns or offer table personalization for comma-separated value of fields that are provided in the ignoredfields.\nAny column referencing an ignored field is to be removed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isCopyToPositionAllowed": { + "type": "string", + "description": "Defines the extension point to control whether a source node can be copied to a specific parent node.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isMoveToPositionAllowed": { + "type": "string", + "description": "Defines the extension point to control whether a source node can be dropped on a specific parent node.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isNodeCopyable": { + "type": "string", + "description": "efines the extension point to control whether a node can be copied.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isNodeMovable": { + "type": "string", + "description": "Defines the extension point to control if a node can be dragged.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isSearchable": { + "type": "boolean", + "description": "Defines whether to display the search action.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Defines the relative path to a LineItem, PresentationVariant or SelectionPresentationVariant in the metamodel, based on the current contextPath.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "modeForNoDataMessage": { + "type": "string", + "description": "Changes the size of the IllustratedMessage in the table, or removes it completely.\nAllowed values are `illustratedMessage-Auto`, `illustratedMessage-Base`, `illustratedMessage-Dialog`, `illustratedMessage-Dot`, `illustratedMessage-Scene`, `illustratedMessage-Spot` or `text`.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "illustratedMessage-Auto", + "illustratedMessage-Base", + "illustratedMessage-Medium", + "illustratedMessage-Dot", + "illustratedMessage-ExtraSmall", + "illustratedMessage-Scene", + "illustratedMessage-Large", + "illustratedMessage-Spot", + "illustratedMessage-Small", + "text" + ] + }, + "personalization": { + "type": "string", + "description": "Controls which options should be enabled for the table personalization dialog.\nIf it is set to `true`, all possible options for this kind of table are enabled.\nIf it is set to `false`, personalization is disabled.\n\nYou can also provide a more granular control for the personalization by providing a comma-separated list with the options you want to be available.\nAvailable options are:\n- Sort\n- Column\n- Filter\n- Group\n\nThe Group option is only applicable to analytical tables and responsive tables.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "popinLayout": { + "type": "string", + "description": "Defines the layout options of the table popins. Only applies to responsive tables.\nAllowed values are `Block`, `GridLarge`, and `GridSmall`.\n- `Block`: Sets a block layout for rendering the table popins. The elements inside the popin container are rendered one below the other.\n- `GridLarge`: Sets a grid layout for rendering the table popins. The grid width for each table popin is comparatively larger than GridSmall, so this layout allows less content to be rendered in a single popin row.\n- `GridSmall`: Sets a grid layout for rendering the table popins. The grid width for each table popin is small, so this layout allows more content to be rendered in a single popin row.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "Block", + "GridLarge", + "GridSmall" + ] + }, + "readOnly": { + "type": "boolean", + "description": "An expression that allows you to control the 'read-only' state of the table.\nIf you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the current state.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "rowCount": { + "type": "number", + "description": "Number of rows to be displayed in the table. Does not apply to responsive tables.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "rowCountMode": { + "type": "string", + "description": "Defines how the table handles the visible rows. Does not apply to Responsive tables.\nAllowed values are `Auto`, `Fixed`, and `Interactive`.\n- If set to `Fixed`, the table always has as many rows as defined in the rowCount property.\n- If set to `Auto`, the number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the `rowCount` property.\n- If set to `Interactive` the table can have as many rows as defined in the rowCount property. This number of rows can be modified by dragging the resizer available in this mode.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "Auto", + "Fixed", + "Interactive" + ] + }, + "scrollThreshold": { + "type": "number", + "description": "Defines how many additional data records are requested from the back-end system when the user scrolls vertically in the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "selectionLimit": { + "type": "number", + "description": "Defines the maximum number of rows that can be selected at once in the table.\nThis property does not apply to responsive tables.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "selectionMode": { + "type": "string", + "description": "Defines the selection mode to be used by the table.\nAllowed values are `None`, `Single`, `ForceSingle`, `Multi`, `ForceMulti` or `Auto`.\nIf set to 'Single', 'Multi' or 'Auto', SAP Fiori elements hooks into the standard lifecycle to determine the consistent selection mode.\nIf set to 'ForceSingle' or 'ForceMulti' your choice will be respected but this might not respect the Fiori guidelines.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "None", + "Single", + "Multi", + "Auto", + "ForceMulti", + "ForceSingle" + ] + }, + "threshold": { + "type": "number", + "description": "Defines the number of records to be initially requested from the back end.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "type": { + "type": "string", + "description": "Defines the type of table that will be used by the building block to render the data. This setting is defined by the framework.\nAllowed value is `TreeTable`.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "const": "TreeTable" + }, + "variantManagement": { + "type": "string", + "description": "Controls the kind of variant management that should be enabled for the table.\nAllowed value is `Control`.\nIf set with value `Control`, a variant management control is seen within the table and the table is linked to this.\nIf not set with any value, control level variant management is not available for this table.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "const": "Control" + }, + "widthIncludingColumnHeader": { + "type": "boolean", + "description": "Indicates if the column header should be a part of the width calculation.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "actions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.Action" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "analyticalConfiguration": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.AnalyticalConfiguration" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "columns": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.Column" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "massEdit": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.MassEdit" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "beforeRebindTable": { + "type": "string", + "description": "Before a table rebind, an event is triggered that contains information about the binding.\nThe event contains a parameter, `collectionBindingInfo`, which is an instance of `CollectionBindingInfoAPI`.\nThis allows you to manipulate the table's list binding.\nYou can use this event to attach event handlers to the table's list binding.\nYou can use this event to add selects, and add or read the sorters and filters.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "rowPress": { + "type": "string", + "description": "An event is triggered when the user chooses a row; the event contains information about which row is chosen.\nYou can set this in order to handle the navigation manually.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "selectionChange": { + "type": "string", + "description": "An event triggered when the selection in the table changes.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.table.TreeTable": { + "description": "Building block used to create a table based on the metadata provided by OData V4.\n\nUsually, a LineItem, PresentationVariant or SelectionPresentationVariant annotation is expected, but the Table building block can also be used to display an EntitySet.\n\nIf a PresentationVariant is specified, then it must have UI.LineItem as the first property of the Visualizations.\n\nIf a SelectionPresentationVariant is specified, then it must contain a valid PresentationVariant that also has a UI.LineItem as the first property of the Visualizations.\nUsage example:\n\nsap.ui.require([\"sap/fe/macros/table/TreeTable\"], function(TreeTable) {\n\t ...\n\t new TreeTable(\"myTable\", {metaPath:\"@com.sap.vocabularies.UI.v1.LineItem\"})\n})\n\nThis is currently an experimental API because the structure of the generated content will change to come closer to the Table that you get out of templates.\nThe public method and property will not change but the internal structure will so be careful on your usage.\n", + "isViewNode": true, + "type": "object", + "properties": { + "busy": { + "type": "boolean", + "description": "An expression that allows you to control the 'busy' state of the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "condensedTableLayout": { + "type": "boolean", + "description": "Determines whether the table adapts to the condensed layout.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "contextPath": { + "type": "string", + "description": "Defines the path of the context used in the current page or block.\nThis setting is defined by the framework.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "creationMode": { + "$ref": "#/definitions/sap.fe.macros.table.TreeTableCreationOptions", + "description": "creationMode", + "artifactType": "XMLProperty", + "isViewNode": true, + "metadata": { + "type": "Property" + } + }, + "disableColumnFreeze": { + "type": "boolean", + "description": "Determines whether the number of fixed columns can be configured in the Column Settings dialog.\nThis property doesn't apply for responsive tables\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "disableCopyToClipboard": { + "type": "boolean", + "description": "Controls if the copy functionality of the table is disabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableAutoColumnWidth": { + "type": "boolean", + "description": "Specifies if the column width is automatically calculated.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableExport": { + "type": "boolean", + "description": "Controls if the export functionality of the table is enabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableFullScreen": { + "type": "boolean", + "description": "Controls whether the table can be opened in fullscreen mode or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enablePaste": { + "type": "boolean", + "description": "Controls if the paste functionality of the table is enabled or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enablePastingOfComputedProperties": { + "type": "boolean", + "description": "Determine whether the data copied to the computed columns is sent to the back end.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "enableSelectAll": { + "type": "boolean", + "description": "Determines whether the Clear All button is enabled by default.\nTo enable the Clear All button by default, you must set this property to false.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "exportRequestSize": { + "type": "number", + "description": "Maximum allowed number of records to be exported in one request.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "filterBar": { + "type": "string", + "description": "ID of the FilterBar building block associated with the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "frozenColumnCount": { + "type": "number", + "description": "Number of columns that are fixed on the left. Only columns which are not fixed can be scrolled horizontally.\nThis property is not relevant for responsive tables\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "header": { + "type": "string", + "description": "Specifies the header text that is shown in the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "headerVisible": { + "type": "boolean", + "description": "Controls if the header text should be shown or not.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "hierarchyQualifier": { + "type": "string", + "description": "A set of options that can be configured.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "ignoredFields": { + "type": "string", + "description": "Comma-separated value of fields that must be ignored in the OData metadata by the Table building block.\nThe table building block is not going to create built-in columns or offer table personalization for comma-separated value of fields that are provided in the ignoredfields.\nAny column referencing an ignored field is to be removed.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isCopyToPositionAllowed": { + "type": "string", + "description": "Defines the extension point to control whether a source node can be copied to a specific parent node.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isMoveToPositionAllowed": { + "type": "string", + "description": "Defines the extension point to control whether a source node can be dropped on a specific parent node.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isNodeCopyable": { + "type": "string", + "description": "efines the extension point to control whether a node can be copied.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isNodeMovable": { + "type": "string", + "description": "Defines the extension point to control if a node can be dragged.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isSearchable": { + "type": "boolean", + "description": "Defines whether to display the search action.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "metaPath": { + "type": "string", + "description": "Defines the relative path to a LineItem, PresentationVariant or SelectionPresentationVariant in the metamodel, based on the current contextPath.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "modeForNoDataMessage": { + "type": "string", + "description": "Changes the size of the IllustratedMessage in the table, or removes it completely.\nAllowed values are `illustratedMessage-Auto`, `illustratedMessage-Base`, `illustratedMessage-Dialog`, `illustratedMessage-Dot`, `illustratedMessage-Scene`, `illustratedMessage-Spot` or `text`.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "illustratedMessage-Auto", + "illustratedMessage-Base", + "illustratedMessage-Medium", + "illustratedMessage-Dot", + "illustratedMessage-ExtraSmall", + "illustratedMessage-Scene", + "illustratedMessage-Large", + "illustratedMessage-Spot", + "illustratedMessage-Small", + "text" + ] + }, + "personalization": { + "type": "string", + "description": "Controls which options should be enabled for the table personalization dialog.\nIf it is set to `true`, all possible options for this kind of table are enabled.\nIf it is set to `false`, personalization is disabled.\n\nYou can also provide a more granular control for the personalization by providing a comma-separated list with the options you want to be available.\nAvailable options are:\n- Sort\n- Column\n- Filter\n- Group\n\nThe Group option is only applicable to analytical tables and responsive tables.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "popinLayout": { + "type": "string", + "description": "Defines the layout options of the table popins. Only applies to responsive tables.\nAllowed values are `Block`, `GridLarge`, and `GridSmall`.\n- `Block`: Sets a block layout for rendering the table popins. The elements inside the popin container are rendered one below the other.\n- `GridLarge`: Sets a grid layout for rendering the table popins. The grid width for each table popin is comparatively larger than GridSmall, so this layout allows less content to be rendered in a single popin row.\n- `GridSmall`: Sets a grid layout for rendering the table popins. The grid width for each table popin is small, so this layout allows more content to be rendered in a single popin row.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "Block", + "GridLarge", + "GridSmall" + ] + }, + "readOnly": { + "type": "boolean", + "description": "An expression that allows you to control the 'read-only' state of the table.\nIf you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the current state.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "rowCount": { + "type": "number", + "description": "Number of rows to be displayed in the table. Does not apply to responsive tables.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "rowCountMode": { + "type": "string", + "description": "Defines how the table handles the visible rows. Does not apply to Responsive tables.\nAllowed values are `Auto`, `Fixed`, and `Interactive`.\n- If set to `Fixed`, the table always has as many rows as defined in the rowCount property.\n- If set to `Auto`, the number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the `rowCount` property.\n- If set to `Interactive` the table can have as many rows as defined in the rowCount property. This number of rows can be modified by dragging the resizer available in this mode.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "Auto", + "Fixed", + "Interactive" + ] + }, + "scrollThreshold": { + "type": "number", + "description": "Defines how many additional data records are requested from the back-end system when the user scrolls vertically in the table.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "selectionLimit": { + "type": "number", + "description": "Defines the maximum number of rows that can be selected at once in the table.\nThis property does not apply to responsive tables.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "selectionMode": { + "type": "string", + "description": "Defines the selection mode to be used by the table.\nAllowed values are `None`, `Single`, `ForceSingle`, `Multi`, `ForceMulti` or `Auto`.\nIf set to 'Single', 'Multi' or 'Auto', SAP Fiori elements hooks into the standard lifecycle to determine the consistent selection mode.\nIf set to 'ForceSingle' or 'ForceMulti' your choice will be respected but this might not respect the Fiori guidelines.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "None", + "Single", + "Multi", + "Auto", + "ForceMulti", + "ForceSingle" + ] + }, + "threshold": { + "type": "number", + "description": "Defines the number of records to be initially requested from the back end.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "type": { + "type": "string", + "description": "Defines the type of table that will be used by the building block to render the data. This setting is defined by the framework.\nAllowed value is `TreeTable`.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "const": "TreeTable" + }, + "variantManagement": { + "type": "string", + "description": "Controls the kind of variant management that should be enabled for the table.\nAllowed value is `Control`.\nIf set with value `Control`, a variant management control is seen within the table and the table is linked to this.\nIf not set with any value, control level variant management is not available for this table.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "const": "Control" + }, + "widthIncludingColumnHeader": { + "type": "boolean", + "description": "Indicates if the column header should be a part of the width calculation.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "actions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.Action" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "analyticalConfiguration": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.AnalyticalConfiguration" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "columns": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.Column" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "massEdit": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.MassEdit" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + }, + "beforeRebindTable": { + "type": "string", + "description": "Before a table rebind, an event is triggered that contains information about the binding.\nThe event contains a parameter, `collectionBindingInfo`, which is an instance of `CollectionBindingInfoAPI`.\nThis allows you to manipulate the table's list binding.\nYou can use this event to attach event handlers to the table's list binding.\nYou can use this event to add selects, and add or read the sorters and filters.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "rowPress": { + "type": "string", + "description": "An event is triggered when the user chooses a row; the event contains information about which row is chosen.\nYou can set this in order to handle the navigation manually.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + }, + "selectionChange": { + "type": "string", + "description": "An event triggered when the selection in the table changes.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Event" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.table.TreeTableCreationOptions": { + "description": "Create options for the tree table.", + "isViewNode": true, + "type": "object", + "properties": { + "createInPlace": { + "type": "boolean", + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is 'false' (that is, the new entry is placed as the first child below its parent).\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "creationFields": { + "type": "string", + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "isCreateEnabled": { + "type": "string", + "description": "Defines the extension point to control the enablement of the Create button or Create Menu buttons.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "name": { + "type": "string", + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are `NewPage`, `Inline` or `CreationDialog`.\n\nNewPage - the created document is shown in a new page, depending on whether metadata 'Sync', 'Async' or 'Deferred' is used.\nInline - the creation is done inline.\nCreationDialog - the creation is done in the table, with a dialog allowing to specify some initial property values (the properties are listed in `creationFields`).\n\nIf not set with any value:\nif navigation is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "enum": [ + "CreationDialog", + "Inline", + "NewPage" + ] + }, + "nodeType": { + "type": "object", + "description": "Defines the nodes to be added on the custom create.\nThis object must have the following properties:\npropertyName: the name of the property on the page entity set used to categorize the node type to be created within the hierarchy\nvalues: an array of key, label and an optional creationFields that define a value of the property defined by the propertyName key, its label, and the specific fields to be shown in the creation dialog.\n", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.ActionGroup": { + "description": "Definition of a actions group to be used inside the table toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "The text that will be displayed for this action group", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + }, + "i18nClassification": "BUT: Text of the action group button" + }, + "placement": { + "type": "string", + "description": "Defines where this action group should be placed relative to the defined anchor", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "anchor": { + "type": "string", + "description": "Reference to the key of another action or action group already displayed in the toolbar to properly place this one", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "key": { + "type": "string", + "description": "Unique identifier of the ActionGroup", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "id": { + "type": "string", + "description": "Unique id of control", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + }, + "actions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/sap.fe.macros.table.Action" + }, + "isViewNode": true, + "metadata": { + "path": [], + "type": "Aggregation" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control", + "defaultAggregation": "actions" + } + }, + "sap.fe.macros.controls.section.ISingleSectionContributor.ConsumerData": { + "description": "Definition of data consumer by section from single control", + "isViewNode": true, + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Defines the title to be used by the single control.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + }, + "sap.fe.macros.controls.section.ISingleSectionContributor.ProviderData": { + "description": "Definition of data provided by section to single control", + "isViewNode": true, + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Defines the title to be used by the section.", + "artifactType": "XMLProperty", + "metadata": { + "type": "Property" + } + } + }, + "additionalProperties": false, + "metadata": { + "path": [], + "type": "Control" + } + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} diff --git a/packages/project-analyser/test/fixtures/lrop-v4/schemas/ListReport.json b/packages/project-analyser/test/fixtures/lrop-v4/schemas/ListReport.json new file mode 100644 index 00000000000..ec8398899bb --- /dev/null +++ b/packages/project-analyser/test/fixtures/lrop-v4/schemas/ListReport.json @@ -0,0 +1,1696 @@ +{ + "type": "object", + "properties": { + "variantManagement": { + "$ref": "#/definitions/VariantManagementTypeListReport", + "description": "variantManagement defines how the variant management of page personalizations is controlled.\n- None - No variant management by default.\n- Control - Individual personalizations for each control.", + "artifactType": "Manifest" + }, + "header": { + "$ref": "#/definitions/Header", + "description": "Header" + }, + "filterBar": { + "$ref": "#/definitions/FilterBar", + "description": "Filter Bar" + }, + "chart": { + "$ref": "#/definitions/ALPChartView", + "description": "Chart", + "artifactType": "Manifest" + }, + "table": { + "description": "Table", + "anyOf": [ + { + "$ref": "#/definitions/ALPTableView" + }, + { + "$ref": "#/definitions/Table" + } + ] + }, + "defaultTemplateAnnotationPath": { + "description": "defaultTemplateAnnotationPath must be a reference to a SelectionPresentationVariant.\nYou use the SelectionPresentationVariant to configure the default visualizations and default filter values of the main content area.", + "type": "string", + "artifactType": "Manifest" + }, + "defaultPath": { + "$ref": "#/definitions/DefaultPathType", + "description": "Defines the initial view mode:\n- primary: This property loads the app in chart-only view.\n- secondary: This property loads the app in table-only view.\n- both: This property loads the app in hybrid view.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/2a9df06673d34f72b238549d49da8bfb" + }, + "$schema": { + "type": "string" + } + }, + "additionalProperties": false, + "definitions": { + "VariantManagementTypeListReport": { + "enum": [ + "Control", + "None", + "Page" + ], + "type": "string" + }, + "Header": { + "description": "Header", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/HeaderActions" + } + }, + "additionalProperties": false + }, + "HeaderActions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/CustomHeaderAction" + } + }, + "CustomHeaderAction": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomHeaderActionPosition", + "description": "Defines the position of the action relative to other actions.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "CustomHeaderActionPosition": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ActionPlacement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "FilterBar": { + "description": "Filter Bar", + "isViewNode": true, + "type": "object", + "properties": { + "hideFilterBar": { + "description": "Allows you to hide the filter bar.", + "artifactType": "Manifest", + "type": "boolean", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bd7590569c74c61a0124c6e370030f6" + }, + "selectionFields": { + "isViewNode": true, + "anyOf": [ + { + "$ref": "#/definitions/SelectionFields" + }, + { + "$ref": "#/definitions/CompactFilters" + } + ] + }, + "visualFilters": { + "$ref": "#/definitions/VisualFilters" + }, + "initialLayout": { + "$ref": "#/definitions/InitialLayoutType", + "description": "Allows you to specify the default filter mode on the initial load.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/33f3d807c10b47d9a8141692d2619dc2" + }, + "layout": { + "$ref": "#/definitions/LayoutType", + "description": "Allows you to specify the layout of the filter bar.\n- Compact: This setting shows filter fields in compact mode.\n- CompactVisual: This setting shows filter fields in both compact and visual modes.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/33f3d807c10b47d9a8141692d2619dc2" + } + }, + "additionalProperties": false + }, + "SelectionFields": { + "description": "Filter Fields", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "properties": {} + }, + { + "$ref": "#/definitions/CustomFilterField" + } + ] + } + }, + "CustomFilterField": { + "description": "Custom Filter Field", + "isViewNode": true, + "type": "object", + "properties": { + "label": { + "description": "A static or i18n binding string.", + "i18nClassification": "COL: Custom filter field label", + "type": "string", + "artifactType": "Manifest" + }, + "property": { + "description": "The full path to the property to be filtered.", + "type": "string", + "artifactType": "Manifest" + }, + "template": { + "description": "The path to the XML template containing the filter control.", + "type": "string", + "artifactType": "Manifest" + }, + "required": { + "description": "Determines whether the filter field requires a value.", + "type": "boolean", + "artifactType": "Manifest" + }, + "position": { + "$ref": "#/definitions/CustomFilterFieldPosition", + "description": "Defines the position of the filter field relative to another filter field.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "label", + "property", + "template" + ] + }, + "CustomFilterFieldPosition": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another filter field is to be used as a placement anchor.", + "type": "string", + "artifactType": "Manifest" + }, + "placement": { + "$ref": "#/definitions/FilterFieldPlacement", + "description": "Define the placement, either before or after the anchor filter field.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "FilterFieldPlacement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "CompactFilters": { + "description": "Compact Filters", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "type": "object", + "properties": {} + } + }, + "VisualFilters": { + "description": "Visual Filters", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/VisualFilter" + } + }, + "VisualFilter": { + "description": "Visual Filter", + "isViewNode": true, + "type": "object", + "properties": { + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the selection field appears.\n- Default: The filter field appears by default in the filter bar (both the regular filter fields as well as the corresponding visual filter fields).\n- Adaptation: The filter field only appears under Adapt Filters.\n- Hidden: The filter field is hidden.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/33f3d807c10b47d9a8141692d2619dc2" + }, + "visualFilterValueList": { + "description": "The valuelist annotation corresponding to the visual filter representation.", + "artifactType": "Manifest", + "hidden": true, + "type": "string" + } + }, + "additionalProperties": false + }, + "Availability": { + "enum": [ + "Adaptation", + "Default", + "Hidden" + ], + "type": "string" + }, + "InitialLayoutType": { + "enum": [ + "Compact", + "Visual" + ], + "type": "string" + }, + "LayoutType": { + "enum": [ + "Compact", + "CompactVisual" + ], + "type": "string" + }, + "ALPChartView": { + "description": "Chart View", + "isViewNode": true, + "type": "object", + "properties": { + "annotationPath": { + "description": "The primary annotation path can be either UI.Chart, UI.PresentationVariant, or UI.SelectionPresentationVariant.", + "type": "string" + }, + "toolBar": { + "$ref": "#/definitions/ViewChartToolBar", + "description": "Chart Toolbar" + } + }, + "additionalProperties": false, + "required": [ + "annotationPath" + ] + }, + "ViewChartToolBar": { + "description": "Chart Toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/ViewActions" + } + }, + "additionalProperties": false, + "required": [ + "actions" + ] + }, + "ViewActions": { + "description": "Actions", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/ViewToolBarActionGroup" + }, + { + "$ref": "#/definitions/ViewToolBarAction" + }, + { + "type": "object", + "properties": {} + }, + { + "$ref": "#/definitions/ViewTableCustomAction" + } + ] + } + }, + "ViewToolBarActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ViewToolBarAction" + } + }, + "ViewToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "SelectType": { + "enum": [ + "multi", + "single" + ], + "type": "string" + }, + "ActionAfterExecutionConfigurationToolBarLR": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ViewTableCustomAction": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/ViewCustomActionPosition", + "description": "Defines the position of the action relative to other actions.", + "artifactType": "Manifest" + }, + "requiresSelection": { + "description": "Indicates whether the action requires a selection of items.", + "artifactType": "Manifest", + "type": "boolean" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "ViewCustomActionPosition": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ALPTableView": { + "description": "Table View", + "isViewNode": true, + "type": "object", + "properties": { + "annotationPath": { + "description": "The secondary annotation path can be either UI.LineItem, UI.PresentationVariant, or UI.SelectionPresentationVariant.", + "type": "string", + "artifactType": "Manifest" + }, + "initialLoad": { + "$ref": "#/definitions/InitialLoadType", + "description": "Determines whether the data in the table is automatically loaded.\n- Auto (default): Data is loaded automatically if a default filter value has been set in the filter bar.\n- Enabled: Data is loaded automatically, as defined by the standard variant.\n- Disabled: Data is not loaded automatically. Users have to click the Go button.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/9f4e1192f1384b85bc160288e17f69c4" + }, + "personalization": { + "$ref": "#/definitions/ViewPersonalizationType", + "description": "Defines the personalization mode, currently only effective if variant management on page is either set to Page or Control.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties \"Column\", \"Sort\" and \"Filter\" accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ToolBar", + "description": "Table Toolbar" + }, + "columns": { + "$ref": "#/definitions/ViewColumns" + }, + "type": { + "$ref": "#/definitions/TableTypeV4", + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "artifactType": "Manifest" + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4", + "description": "With quickVariantSelection you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "annotationPath" + ] + }, + "InitialLoadType": { + "enum": [ + "Auto", + "Disabled", + "Enabled" + ], + "type": "string" + }, + "ViewPersonalizationType": { + "type": "object", + "properties": { + "column": { + "description": "Defines whether the user can add and remove columns to a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "sort": { + "description": "Defines whether the user can sort a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "filter": { + "description": "Defines whether the user can filter data of a given table.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ToolBar": { + "description": "Table Toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/Actions" + } + }, + "additionalProperties": false, + "required": [ + "actions" + ] + }, + "Actions": { + "description": "Actions", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/ToolBarAction" + }, + { + "$ref": "#/definitions/ToolBarActionGroup" + }, + { + "$ref": "#/definitions/CustomTableAction" + } + ] + } + }, + "ToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action.", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ToolBarActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ToolBarAction" + } + }, + "CustomTableAction": { + "type": "object", + "properties": { + "requiresSelection": { + "description": "Indicates whether the action requires a selection of items.", + "artifactType": "Manifest", + "type": "boolean" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "position": { + "$ref": "#/definitions/CustomActionPosition", + "description": "Defines the position of the action relative to other actions.", + "artifactType": "Manifest" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "CustomActionPosition": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ViewColumns": { + "description": "View Columns", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/ViewTableColumn" + }, + { + "$ref": "#/definitions/ViewTableColumnAction" + }, + { + "$ref": "#/definitions/ViewTableCustomColumn" + } + ] + } + }, + "ViewTableColumn": { + "description": "Table Column", + "isViewNode": true, + "type": "object", + "properties": { + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "ViewTableColumnAction": { + "description": "Inline Action", + "isViewNode": true, + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfiguration", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "ActionAfterExecutionConfiguration": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ViewTableCustomColumn": { + "description": "Custom Column", + "isViewNode": true, + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/ViewPosition", + "description": "Defines the position of the column relative to other columns.", + "artifactType": "Manifest" + }, + "header": { + "description": "The header appears in the table as a header, as well as in the add and remove dialogs.", + "i18nClassification": "COL: Custom column header text", + "artifactType": "Manifest", + "type": "string" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "artifactType": "Manifest", + "type": "string", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "template": { + "description": "Defines a target fragment.", + "artifactType": "Manifest", + "type": "string" + }, + "horizontalAlign": { + "$ref": "#/definitions/HorizontalAlign", + "description": "Aligns the header as well as the content horizontally.", + "artifactType": "Manifest" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\n- Default: it will be shown by default in the table.\n- Adaptation: it will initially not be shown in the table but be available via end user adaptation\n- Hidden: the column is neither available in the table nor in adaptation", + "artifactType": "Manifest" + }, + "properties": { + "description": "If provided and sorting for the table is enabled, the custom column header can be clicked.\nOnce clicked, a list of properties that can be sorted by are displayed.", + "artifactType": "Manifest", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "header", + "template" + ] + }, + "ViewPosition": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another column to be used as placement anchor.", + "type": "string", + "artifactType": "Manifest" + }, + "placement": { + "$ref": "#/definitions/Placement", + "description": "Define the placement, either before or after the anchor column.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "Placement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "HorizontalAlign": { + "enum": [ + "Begin", + "Center", + "End" + ], + "type": "string" + }, + "TableTypeV4": { + "enum": [ + "AnalyticalTable", + "GridTable", + "ResponsiveTable", + "TreeTable" + ], + "type": "string" + }, + "SelectionMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://help.sap.com/docs/SAPUI5/4a476671e9bd4e898445a16858d9cf24/116b5d82e8c545e2a56e1b51b8b0a9bd.html?#additional-features-in-sap-fiori-elements-for-odata-v4", + "enum": [ + "Auto", + "Multi", + "None", + "Single" + ], + "type": "string" + }, + "QuickVariantSelectionV4": { + "type": "object", + "properties": { + "paths": { + "description": "List of annotation paths referring to SelectionVariant annotations.", + "type": "array", + "items": { + "$ref": "#/definitions/AnnotationPathAsObject" + }, + "artifactType": "Manifest" + }, + "hideTableTitle": { + "description": "Determines whether the table title is hidden and the tab titles are displayed.", + "type": "boolean", + "artifactType": "Manifest" + }, + "showCounts": { + "description": "Determines whether the entry view counts are shown.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "paths" + ] + }, + "AnnotationPathAsObject": { + "type": "object", + "properties": { + "annotationPath": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "annotationPath" + ] + }, + "OperationGroupingMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "enum": [ + "ChangeSet", + "Isolated" + ], + "type": "string" + }, + "Table": { + "description": "Table", + "isViewNode": true, + "type": "object", + "properties": { + "annotationPath": { + "description": "The secondary annotation path can be either UI.LineItem, UI.PresentationVariant, or UI.SelectionPresentationVariant.", + "type": "string", + "artifactType": "Manifest" + }, + "initialLoad": { + "$ref": "#/definitions/InitialLoadType", + "description": "Determines whether the data in the table is automatically loaded.\n- Auto (default): Data is loaded automatically if a default filter value has been set in the filter bar.\n- Enabled: Data is loaded automatically, as defined by the standard variant\n- Disabled: Data is not loaded automatically. Users have to click the Go button.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/9f4e1192f1384b85bc160288e17f69c4" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationType", + "description": "Defines the personalization mode, currently only effective if variant management on page is either set to Page or Control.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties \"Column\", \"Sort\" and \"Filter\" accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "views": { + "$ref": "#/definitions/MultiTableModeV4" + }, + "toolBar": { + "$ref": "#/definitions/ToolBar", + "description": "Tool Bar" + }, + "columns": { + "$ref": "#/definitions/GenericColumns" + }, + "type": { + "$ref": "#/definitions/TableTypeV4", + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/116b5d82e8c545e2a56e1b51b8b0a9bd" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4", + "description": "With quickVariantSelection you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + } + }, + "additionalProperties": false + }, + "PersonalizationType": { + "type": "object", + "properties": { + "column": { + "description": "Defines whether the user can add and remove columns to a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "sort": { + "description": "Defines whether the user can sort a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "filter": { + "description": "Defines whether the user can filter data of a given table.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "MultiTableModeV4": { + "description": "Views", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/LRTableView" + }, + { + "$ref": "#/definitions/LRChartView" + }, + { + "$ref": "#/definitions/TableViewExtension" + }, + { + "type": "boolean" + } + ] + }, + "properties": { + "showCounts": { + "description": "You can show the counts of entries of each view. To do so, add the showCounts option and set it to true.", + "type": "boolean", + "artifactType": "Manifest" + } + } + }, + "LRTableView": { + "description": "Table View", + "isViewNode": true, + "type": "object", + "properties": { + "key": { + "description": "Unique tab identifier.", + "hidden": true, + "type": "string", + "artifactType": "Manifest" + }, + "index": { + "hidden": true, + "type": "number", + "artifactType": "Manifest" + }, + "annotationPath": { + "description": "The annotation path can be either UI.LineItem, UI.PresentationVariant, or UI.SelectionPresentationVariant.", + "type": "string", + "artifactType": "Manifest" + }, + "entitySet": { + "description": "Each table can be based on a different entitySet.", + "type": "string", + "artifactType": "Manifest" + }, + "keepPreviousPersonalization": { + "description": "The tab keeps the default LineItem ID (without the key), so the variant is applied to it.", + "type": "boolean", + "artifactType": "Manifest" + }, + "personalization": { + "$ref": "#/definitions/ViewPersonalizationType", + "description": "Defines the personalization mode, currently only effective if variant management on page is either set to Page or Control.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties \"Column\", \"Sort\" and \"Filter\" accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ToolBar", + "description": "Table Toolbar" + }, + "columns": { + "$ref": "#/definitions/ViewColumns", + "description": "Columns" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines whether the view is visible.", + "artifactType": "Manifest" + }, + "type": { + "$ref": "#/definitions/TableTypeV4", + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "artifactType": "Manifest" + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4", + "description": "With quickVariantSelection you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "annotationPath", + "index", + "key" + ] + }, + "LRChartView": { + "description": "Chart View", + "isViewNode": true, + "type": "object", + "properties": { + "toolBar": { + "$ref": "#/definitions/ViewChartToolBar", + "description": "Chart Toolbar" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines whether the view is visible or not.", + "artifactType": "Manifest" + }, + "key": { + "description": "Unique tab identifier.", + "hidden": true, + "type": "string", + "artifactType": "Manifest" + }, + "index": { + "hidden": true, + "type": "number", + "artifactType": "Manifest" + }, + "annotationPath": { + "description": "The annotationPath refers to a SelectionPresentationVariant or PresentationVariant annotation.\nTo use charts in multiple table mode, define a UI.Chart annotation, including a qualifier, and reference the UI.Chart annotation in your SelectionPresentationVariant or PresentationVariant annotation.", + "type": "string", + "artifactType": "Manifest" + }, + "entitySet": { + "description": "Each chart can be based on a different entitySet.", + "type": "string", + "artifactType": "Manifest" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "annotationPath", + "index", + "key" + ] + }, + "TableViewExtension": { + "description": "Table View Extension", + "isViewNode": true, + "type": "object", + "properties": { + "key": { + "description": "Unique tab identifier.", + "hidden": true, + "type": "string", + "artifactType": "Manifest" + }, + "index": { + "hidden": true, + "type": "number", + "artifactType": "Manifest" + }, + "label": { + "description": "View title (localization supported).", + "i18nClassification": "TIT: Custom view title", + "type": "string", + "artifactType": "Manifest" + }, + "template": { + "description": "The name contains sap.app.id as a prefix, followed by the path in the app/webapp folder and the name of the XML view.", + "type": "string", + "artifactType": "Manifest" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines whether the view is visible.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "index", + "key", + "template" + ] + }, + "GenericColumns": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/TableColumn" + }, + { + "$ref": "#/definitions/TableColumnAction" + }, + { + "$ref": "#/definitions/TableCustomColumn" + } + ] + } + }, + "TableColumn": { + "description": "Table Column", + "isViewNode": true, + "type": "object", + "properties": { + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "TableColumnAction": { + "description": "Inline Action", + "isViewNode": true, + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfiguration", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "TableCustomColumn": { + "description": "Custom Column", + "isViewNode": true, + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/Position", + "description": "Defines the position of the column relative to other columns.", + "artifactType": "Manifest" + }, + "header": { + "description": "The header is shown on the table as header, as well as in the add/remove dialog.", + "i18nClassification": "COL: Custom column header text", + "artifactType": "Manifest", + "type": "string" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "artifactType": "Manifest", + "type": "string", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "template": { + "description": "Defines a target fragment.", + "artifactType": "Manifest", + "type": "string" + }, + "horizontalAlign": { + "$ref": "#/definitions/HorizontalAlign", + "description": "Aligns the header as well as the content horizontally.", + "artifactType": "Manifest" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\n- Default: it will be shown by default in the table.\n- Adaptation: it will initially not be shown in the table but be available via end user adaptation\n- Hidden: the column is neither available in the table nor in adaptation", + "artifactType": "Manifest" + }, + "properties": { + "description": "If provided and sorting for the table is enabled, the custom column header can be clicked.\nOnce clicked, a list of properties that can be sorted by are displayed.", + "artifactType": "Manifest", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "header", + "template" + ] + }, + "Position": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another column to be used as placement anchor.", + "type": "string", + "artifactType": "Manifest" + }, + "placement": { + "$ref": "#/definitions/Placement", + "description": "Define the placement, either before or after the anchor column.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "DefaultPathType": { + "enum": [ + "both", + "primary", + "secondary" + ], + "type": "string" + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} diff --git a/packages/project-analyser/test/fixtures/lrop-v4/schemas/ListReport_TravelList.json b/packages/project-analyser/test/fixtures/lrop-v4/schemas/ListReport_TravelList.json new file mode 100644 index 00000000000..e1f53e81ff3 --- /dev/null +++ b/packages/project-analyser/test/fixtures/lrop-v4/schemas/ListReport_TravelList.json @@ -0,0 +1,2251 @@ +{ + "type": "object", + "properties": { + "variantManagement": { + "$ref": "#/definitions/VariantManagementTypeListReport", + "description": "variantManagement defines how the variant management of page personalizations is controlled.\n- None - No variant management by default.\n- Control - Individual personalizations for each control.", + "artifactType": "Manifest" + }, + "header": { + "$ref": "#/definitions/Header", + "description": "Header", + "propertyIndex": 0 + }, + "filterBar": { + "$ref": "#/definitions/FilterBar", + "description": "Filter Bar", + "propertyIndex": 1 + }, + "chart": { + "$ref": "#/definitions/ALPChartView", + "description": "Chart", + "artifactType": "Manifest", + "hidden": true, + "propertyIndex": 2 + }, + "table": { + "description": "Table", + "$ref": "#/definitions/Table", + "propertyIndex": 3 + }, + "defaultTemplateAnnotationPath": { + "description": "defaultTemplateAnnotationPath must be a reference to a SelectionPresentationVariant.\nYou use the SelectionPresentationVariant to configure the default visualizations and default filter values of the main content area.", + "type": "string", + "artifactType": "Manifest", + "hidden": true + }, + "defaultPath": { + "$ref": "#/definitions/DefaultPathType", + "description": "Defines the initial view mode:\n- primary: This property loads the app in chart-only view.\n- secondary: This property loads the app in table-only view.\n- both: This property loads the app in hybrid view.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/2a9df06673d34f72b238549d49da8bfb", + "hidden": true + }, + "$schema": { + "type": "string" + } + }, + "additionalProperties": false, + "definitions": { + "VariantManagementTypeListReport": { + "enum": [ + "Control", + "None", + "Page" + ], + "type": "string" + }, + "Header": { + "description": "Header", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/HeaderActions" + } + }, + "additionalProperties": false + }, + "HeaderActions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/CustomHeaderAction" + }, + "isViewNode": true, + "description": "Actions", + "properties": { + "action1": { + "$ref": "#/definitions/CustomHeaderAction", + "description": "action 1", + "keys": [ + { + "name": "Key", + "value": "action1" + } + ], + "actionType": "Custom", + "propertyIndex": 0 + }, + "action2": { + "$ref": "#/definitions/CustomHeaderAction", + "description": "action 2", + "keys": [ + { + "name": "Key", + "value": "action2" + } + ], + "actionType": "Custom", + "propertyIndex": 1 + } + } + }, + "CustomHeaderAction": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomHeaderActionPosition", + "description": "Defines the position of the action relative to other actions.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ], + "isViewNode": true, + "description": "Custom Action" + }, + "CustomHeaderActionPosition": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string", + "oneOf": [ + { + "const": "action1", + "description": "action 1", + "custom": true + }, + { + "const": "action2", + "description": "action 2", + "custom": true + } + ] + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ActionPlacement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "FilterBar": { + "description": "Filter Bar", + "isViewNode": true, + "type": "object", + "properties": { + "hideFilterBar": { + "description": "Allows you to hide the filter bar.", + "artifactType": "Manifest", + "type": "boolean", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bd7590569c74c61a0124c6e370030f6" + }, + "selectionFields": { + "isViewNode": true, + "anyOf": [ + { + "$ref": "#/definitions/SelectionFields" + }, + { + "$ref": "#/definitions/CompactFilters" + } + ] + }, + "visualFilters": { + "$ref": "#/definitions/VisualFilters" + }, + "initialLayout": { + "$ref": "#/definitions/InitialLayoutType", + "description": "Allows you to specify the default filter mode on the initial load.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/33f3d807c10b47d9a8141692d2619dc2", + "hidden": true + }, + "layout": { + "$ref": "#/definitions/LayoutType", + "description": "Allows you to specify the layout of the filter bar.\n- Compact: This setting shows filter fields in compact mode.\n- CompactVisual: This setting shows filter fields in both compact and visual modes.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/33f3d807c10b47d9a8141692d2619dc2", + "hidden": true + } + }, + "additionalProperties": false + }, + "SelectionFields": { + "description": "Filter Fields", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/CustomFilterField" + }, + "properties": { + "SelectionField::TravelID": { + "$ref": "#/definitions/SelectionField::TravelID", + "propertyIndex": 0 + }, + "SelectionField::AgencyID": { + "$ref": "#/definitions/SelectionField::AgencyID", + "propertyIndex": 1 + }, + "SelectionField::CustomerID": { + "$ref": "#/definitions/SelectionField::CustomerID", + "propertyIndex": 2 + }, + "SelectionField::Status": { + "$ref": "#/definitions/SelectionField::Status", + "propertyIndex": 3 + }, + "filter1": { + "$ref": "#/definitions/CustomFilterField", + "description": "Filter 1", + "keys": [ + { + "name": "Key", + "value": "filter1" + } + ], + "actionType": "Custom", + "propertyIndex": 4 + } + }, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.SelectionFields" + }, + "CustomFilterField": { + "description": "Custom Filter Field", + "isViewNode": true, + "type": "object", + "properties": { + "label": { + "description": "A static or i18n binding string.", + "i18nClassification": "COL: Custom filter field label", + "type": "string", + "artifactType": "Manifest" + }, + "property": { + "description": "The full path to the property to be filtered.", + "type": "string", + "artifactType": "Manifest" + }, + "template": { + "description": "The path to the XML template containing the filter control.", + "type": "string", + "artifactType": "Manifest" + }, + "required": { + "description": "Determines whether the filter field requires a value.", + "type": "boolean", + "artifactType": "Manifest" + }, + "position": { + "$ref": "#/definitions/CustomFilterFieldPosition", + "description": "Defines the position of the filter field relative to another filter field.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "label", + "property", + "template" + ] + }, + "CustomFilterFieldPosition": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another filter field is to be used as a placement anchor.", + "type": "string", + "artifactType": "Manifest", + "oneOf": [ + { + "const": "TravelID", + "description": "TravelID" + }, + { + "const": "AgencyID", + "description": "AgencyID" + }, + { + "const": "CustomerID", + "description": "Kunden ID" + }, + { + "const": "Status", + "description": "Status" + }, + { + "const": "filter1", + "description": "Filter 1", + "custom": true + } + ] + }, + "placement": { + "$ref": "#/definitions/FilterFieldPlacement", + "description": "Define the placement, either before or after the anchor filter field.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "FilterFieldPlacement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "CompactFilters": { + "description": "Compact Filters", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "type": "object", + "properties": {} + }, + "hidden": true + }, + "VisualFilters": { + "description": "Visual Filters", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/VisualFilter" + }, + "hidden": true + }, + "VisualFilter": { + "description": "Visual Filter", + "isViewNode": true, + "type": "object", + "properties": { + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the selection field appears.\n- Default: The filter field appears by default in the filter bar (both the regular filter fields as well as the corresponding visual filter fields).\n- Adaptation: The filter field only appears under Adapt Filters.\n- Hidden: The filter field is hidden.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/33f3d807c10b47d9a8141692d2619dc2" + }, + "visualFilterValueList": { + "description": "The valuelist annotation corresponding to the visual filter representation.", + "artifactType": "Manifest", + "hidden": true, + "type": "string" + } + }, + "additionalProperties": false + }, + "Availability": { + "enum": [ + "Adaptation", + "Default", + "Hidden" + ], + "type": "string" + }, + "InitialLayoutType": { + "enum": [ + "Compact", + "Visual" + ], + "type": "string" + }, + "LayoutType": { + "enum": [ + "Compact", + "CompactVisual" + ], + "type": "string" + }, + "ALPChartView": { + "description": "Chart View", + "isViewNode": true, + "type": "object", + "properties": { + "annotationPath": { + "description": "The primary annotation path can be either UI.Chart, UI.PresentationVariant, or UI.SelectionPresentationVariant.", + "type": "string" + }, + "toolBar": { + "$ref": "#/definitions/ViewChartToolBar", + "description": "Chart Toolbar" + } + }, + "additionalProperties": false, + "required": [ + "annotationPath" + ] + }, + "ViewChartToolBar": { + "description": "Chart Toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/ViewActions" + } + }, + "additionalProperties": false, + "required": [ + "actions" + ] + }, + "ViewActions": { + "description": "Actions", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/ViewToolBarActionGroup" + }, + { + "$ref": "#/definitions/ViewToolBarAction" + }, + { + "type": "object", + "properties": {} + }, + { + "$ref": "#/definitions/ViewTableCustomAction" + } + ] + } + }, + "ViewToolBarActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ViewToolBarAction" + } + }, + "ViewToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "SelectType": { + "enum": [ + "multi", + "single" + ], + "type": "string" + }, + "ActionAfterExecutionConfigurationToolBarLR": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ViewTableCustomAction": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/ViewCustomActionPosition", + "description": "Defines the position of the action relative to other actions.", + "artifactType": "Manifest" + }, + "requiresSelection": { + "description": "Indicates whether the action requires a selection of items.", + "artifactType": "Manifest", + "type": "boolean" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "ViewCustomActionPosition": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "InitialLoadType": { + "enum": [ + "Auto", + "Disabled", + "Enabled" + ], + "type": "string" + }, + "ViewPersonalizationType": { + "type": "object", + "properties": { + "column": { + "description": "Defines whether the user can add and remove columns to a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "sort": { + "description": "Defines whether the user can sort a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "filter": { + "description": "Defines whether the user can filter data of a given table.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ToolBar": { + "description": "Table Toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/Actions" + } + }, + "additionalProperties": false, + "required": [ + "actions" + ] + }, + "Actions": { + "description": "Actions", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/ToolBarAction" + }, + { + "$ref": "#/definitions/ToolBarActionGroup" + }, + { + "$ref": "#/definitions/CustomTableAction" + } + ] + } + }, + "ToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action.", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ToolBarActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ToolBarAction" + } + }, + "CustomTableAction": { + "type": "object", + "properties": { + "requiresSelection": { + "description": "Indicates whether the action requires a selection of items.", + "artifactType": "Manifest", + "type": "boolean" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "position": { + "$ref": "#/definitions/CustomActionPosition", + "description": "Defines the position of the action relative to other actions.", + "artifactType": "Manifest" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "CustomActionPosition": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string", + "oneOf": [ + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createTravelDraft::Collection::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Create Draft" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Check::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Check Travel" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createDraftTemplate::Collection::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Template Draft" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createActiveTemplate::Collection::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Template Active" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.deductDiscount::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Deduct Discount" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToNew::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Set To New" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToBooked::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Set To Booked" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Activate", + "description": "Activate" + }, + { + "const": "action3", + "description": "Action 3", + "custom": true + } + ] + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ViewColumns": { + "description": "View Columns", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/ViewTableColumn" + }, + { + "$ref": "#/definitions/ViewTableColumnAction" + }, + { + "$ref": "#/definitions/ViewTableCustomColumn" + } + ] + } + }, + "ViewTableColumn": { + "description": "Table Column", + "isViewNode": true, + "type": "object", + "properties": { + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "ViewTableColumnAction": { + "description": "Inline Action", + "isViewNode": true, + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfiguration", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "ActionAfterExecutionConfiguration": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ViewTableCustomColumn": { + "description": "Custom Column", + "isViewNode": true, + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/ViewPosition", + "description": "Defines the position of the column relative to other columns.", + "artifactType": "Manifest" + }, + "header": { + "description": "The header appears in the table as a header, as well as in the add and remove dialogs.", + "i18nClassification": "COL: Custom column header text", + "artifactType": "Manifest", + "type": "string" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "artifactType": "Manifest", + "type": "string", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "template": { + "description": "Defines a target fragment.", + "artifactType": "Manifest", + "type": "string" + }, + "horizontalAlign": { + "$ref": "#/definitions/HorizontalAlign", + "description": "Aligns the header as well as the content horizontally.", + "artifactType": "Manifest" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\n- Default: it will be shown by default in the table.\n- Adaptation: it will initially not be shown in the table but be available via end user adaptation\n- Hidden: the column is neither available in the table nor in adaptation", + "artifactType": "Manifest" + }, + "properties": { + "description": "If provided and sorting for the table is enabled, the custom column header can be clicked.\nOnce clicked, a list of properties that can be sorted by are displayed.", + "artifactType": "Manifest", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "header", + "template" + ] + }, + "ViewPosition": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another column to be used as placement anchor.", + "type": "string", + "artifactType": "Manifest" + }, + "placement": { + "$ref": "#/definitions/Placement", + "description": "Define the placement, either before or after the anchor column.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "Placement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "HorizontalAlign": { + "enum": [ + "Begin", + "Center", + "End" + ], + "type": "string" + }, + "TableTypeV4": { + "enum": [ + "AnalyticalTable", + "GridTable", + "ResponsiveTable", + "TreeTable" + ], + "type": "string" + }, + "SelectionMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://help.sap.com/docs/SAPUI5/4a476671e9bd4e898445a16858d9cf24/116b5d82e8c545e2a56e1b51b8b0a9bd.html?#additional-features-in-sap-fiori-elements-for-odata-v4", + "enum": [ + "Auto", + "Multi", + "None", + "Single" + ], + "type": "string" + }, + "QuickVariantSelectionV4": { + "type": "object", + "properties": { + "paths": { + "description": "List of annotation paths referring to SelectionVariant annotations.", + "type": "array", + "items": { + "$ref": "#/definitions/AnnotationPathAsObject" + }, + "artifactType": "Manifest" + }, + "hideTableTitle": { + "description": "Determines whether the table title is hidden and the tab titles are displayed.", + "type": "boolean", + "artifactType": "Manifest" + }, + "showCounts": { + "description": "Determines whether the entry view counts are shown.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "paths" + ] + }, + "AnnotationPathAsObject": { + "type": "object", + "properties": { + "annotationPath": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "annotationPath" + ] + }, + "OperationGroupingMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "enum": [ + "ChangeSet", + "Isolated" + ], + "type": "string" + }, + "Table": { + "description": "Table", + "isViewNode": true, + "type": "object", + "additionalProperties": false, + "$ref": "#/definitions/TableSPV", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.PresentationVariant" + }, + "PersonalizationType": { + "type": "object", + "properties": { + "column": { + "description": "Defines whether the user can add and remove columns to a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "sort": { + "description": "Defines whether the user can sort a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "filter": { + "description": "Defines whether the user can filter data of a given table.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "MultiTableModeV4": { + "description": "Views", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/LRTableView" + }, + { + "$ref": "#/definitions/LRChartView" + }, + { + "$ref": "#/definitions/TableViewExtension" + }, + { + "type": "boolean" + } + ] + }, + "properties": {} + }, + "LRTableView": { + "description": "Table View", + "isViewNode": true, + "type": "object", + "properties": { + "key": { + "description": "Unique tab identifier.", + "hidden": true, + "type": "string", + "artifactType": "Manifest" + }, + "index": { + "hidden": true, + "type": "number", + "artifactType": "Manifest" + }, + "annotationPath": { + "description": "The annotation path can be either UI.LineItem, UI.PresentationVariant, or UI.SelectionPresentationVariant.", + "type": "string", + "artifactType": "Manifest" + }, + "entitySet": { + "description": "Each table can be based on a different entitySet.", + "type": "string", + "artifactType": "Manifest" + }, + "keepPreviousPersonalization": { + "description": "The tab keeps the default LineItem ID (without the key), so the variant is applied to it.", + "type": "boolean", + "artifactType": "Manifest" + }, + "personalization": { + "$ref": "#/definitions/ViewPersonalizationType", + "description": "Defines the personalization mode, currently only effective if variant management on page is either set to Page or Control.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties \"Column\", \"Sort\" and \"Filter\" accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ToolBar", + "description": "Table Toolbar" + }, + "columns": { + "$ref": "#/definitions/ViewColumns", + "description": "Columns" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines whether the view is visible.", + "artifactType": "Manifest" + }, + "type": { + "$ref": "#/definitions/TableTypeV4", + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "artifactType": "Manifest" + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4", + "description": "With quickVariantSelection you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "annotationPath", + "index", + "key" + ] + }, + "LRChartView": { + "description": "Chart View", + "isViewNode": true, + "type": "object", + "properties": { + "toolBar": { + "$ref": "#/definitions/ViewChartToolBar", + "description": "Chart Toolbar" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines whether the view is visible or not.", + "artifactType": "Manifest" + }, + "key": { + "description": "Unique tab identifier.", + "hidden": true, + "type": "string", + "artifactType": "Manifest" + }, + "index": { + "hidden": true, + "type": "number", + "artifactType": "Manifest" + }, + "annotationPath": { + "description": "The annotationPath refers to a SelectionPresentationVariant or PresentationVariant annotation.\nTo use charts in multiple table mode, define a UI.Chart annotation, including a qualifier, and reference the UI.Chart annotation in your SelectionPresentationVariant or PresentationVariant annotation.", + "type": "string", + "artifactType": "Manifest" + }, + "entitySet": { + "description": "Each chart can be based on a different entitySet.", + "type": "string", + "artifactType": "Manifest" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "annotationPath", + "index", + "key" + ] + }, + "TableViewExtension": { + "description": "Table View Extension", + "isViewNode": true, + "type": "object", + "properties": { + "key": { + "description": "Unique tab identifier.", + "hidden": true, + "type": "string", + "artifactType": "Manifest" + }, + "index": { + "hidden": true, + "type": "number", + "artifactType": "Manifest" + }, + "label": { + "description": "View title (localization supported).", + "i18nClassification": "TIT: Custom view title", + "type": "string", + "artifactType": "Manifest" + }, + "template": { + "description": "The name contains sap.app.id as a prefix, followed by the path in the app/webapp folder and the name of the XML view.", + "type": "string", + "artifactType": "Manifest" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true + ] + }, + { + "type": "string" + } + ], + "description": "Defines whether the view is visible.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "index", + "key", + "template" + ] + }, + "TableColumn": { + "description": "Table Column", + "isViewNode": true, + "type": "object", + "properties": { + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "TableColumnAction": { + "description": "Inline Action", + "isViewNode": true, + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfiguration", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "TableCustomColumn": { + "description": "Custom Column", + "isViewNode": true, + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/Position", + "description": "Defines the position of the column relative to other columns.", + "artifactType": "Manifest" + }, + "header": { + "description": "The header is shown on the table as header, as well as in the add/remove dialog.", + "i18nClassification": "COL: Custom column header text", + "artifactType": "Manifest", + "type": "string" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "artifactType": "Manifest", + "type": "string", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "template": { + "description": "Defines a target fragment.", + "artifactType": "Manifest", + "type": "string" + }, + "horizontalAlign": { + "$ref": "#/definitions/HorizontalAlign", + "description": "Aligns the header as well as the content horizontally.", + "artifactType": "Manifest" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\n- Default: it will be shown by default in the table.\n- Adaptation: it will initially not be shown in the table but be available via end user adaptation\n- Hidden: the column is neither available in the table nor in adaptation", + "artifactType": "Manifest" + }, + "properties": { + "description": "If provided and sorting for the table is enabled, the custom column header can be clicked.\nOnce clicked, a list of properties that can be sorted by are displayed.", + "artifactType": "Manifest", + "type": "array", + "items": { + "type": "string", + "enum": [ + "TravelID", + "AgencyID", + "CustomerID", + "BeginDate", + "EndDate", + "TotalPrice", + "Memo", + "Status", + "CustomerName" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "header", + "template" + ] + }, + "Position": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another column to be used as placement anchor.", + "type": "string", + "artifactType": "Manifest", + "enum": [ + "DataField::TravelID", + "DataField::AgencyID", + "DataField::CustomerID", + "DataField::BeginDate", + "DataField::EndDate", + "DataField::TotalPrice", + "DataField::Memo", + "DataField::Status", + "DataField::CustomerName", + "Custom1" + ] + }, + "placement": { + "$ref": "#/definitions/Placement", + "description": "Define the placement, either before or after the anchor column.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "DefaultPathType": { + "enum": [ + "both", + "primary", + "secondary" + ], + "type": "string" + }, + "SelectionField::TravelID": { + "type": "object", + "properties": {}, + "description": "TravelID", + "additionalProperties": false, + "dataType": "String", + "isViewNode": true, + "keys": [ + { + "name": "Value", + "value": "TravelID" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationType": "PropertyPath", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.SelectionFields/0" + }, + "SelectionField::AgencyID": { + "type": "object", + "properties": {}, + "description": "AgencyID", + "additionalProperties": false, + "dataType": "String", + "isViewNode": true, + "keys": [ + { + "name": "Value", + "value": "AgencyID" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationType": "PropertyPath", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.SelectionFields/1" + }, + "SelectionField::CustomerID": { + "type": "object", + "properties": {}, + "description": "Kunden ID", + "additionalProperties": false, + "dataType": "String", + "isViewNode": true, + "keys": [ + { + "name": "Value", + "value": "CustomerID" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationType": "PropertyPath", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.SelectionFields/2" + }, + "SelectionField::Status": { + "type": "object", + "properties": {}, + "description": "Status", + "additionalProperties": false, + "dataType": "String", + "isViewNode": true, + "keys": [ + { + "name": "Value", + "value": "Status" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationType": "PropertyPath", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.SelectionFields/3" + }, + "TableSPV": { + "description": "Table", + "type": "object", + "properties": { + "annotationPath": { + "description": "The secondary annotation path can be either UI.LineItem, UI.PresentationVariant, or UI.SelectionPresentationVariant.", + "type": "string", + "artifactType": "Manifest", + "hidden": true + }, + "initialLoad": { + "$ref": "#/definitions/InitialLoadType", + "description": "Determines whether the data in the table is automatically loaded.\n- Auto (default): Data is loaded automatically if a default filter value has been set in the filter bar.\n- Enabled: Data is loaded automatically, as defined by the standard variant\n- Disabled: Data is not loaded automatically. Users have to click the Go button.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/9f4e1192f1384b85bc160288e17f69c4" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationType", + "description": "Defines the personalization mode, currently only effective if variant management on page is either set to Page or Control.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties \"Column\", \"Sort\" and \"Filter\" accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "views": { + "$ref": "#/definitions/MultiTableModeV4" + }, + "toolBar": { + "$ref": "#/definitions/ToolBar", + "description": "Tool Bar" + }, + "columns": { + "$ref": "#/definitions/LineItemsOfSPV::LineItem" + }, + "type": { + "$ref": "#/definitions/TableTypeV4", + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/116b5d82e8c545e2a56e1b51b8b0a9bd" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4", + "description": "With quickVariantSelection you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "TravelID", + "AgencyID", + "CustomerID", + "BeginDate", + "EndDate", + "TotalPrice", + "Memo", + "Status", + "CustomerName" + ] + }, + "uniqueItems": true + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "TravelID", + "AgencyID", + "CustomerID", + "BeginDate", + "EndDate", + "TotalPrice", + "Memo", + "Status", + "CustomerName" + ] + }, + "uniqueItems": true + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem" + }, + "LineItemsOfSPV::LineItem": { + "type": "object", + "properties": { + "DataField::TravelID": { + "description": "TravelID", + "$ref": "#/definitions/TableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/0", + "propertyIndex": 0, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "TravelID" + } + ] + }, + "DataField::AgencyID": { + "description": "AgencyID", + "$ref": "#/definitions/TableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/1", + "propertyIndex": 1, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "AgencyID" + } + ] + }, + "DataField::CustomerID": { + "description": "Kunden ID", + "$ref": "#/definitions/TableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/2", + "propertyIndex": 2, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "CustomerID" + } + ] + }, + "DataField::BeginDate": { + "description": "BeginDate", + "$ref": "#/definitions/TableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/3", + "propertyIndex": 3, + "dataType": "Date", + "keys": [ + { + "name": "Value", + "value": "BeginDate" + } + ] + }, + "DataField::EndDate": { + "description": "EndDate", + "$ref": "#/definitions/TableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/4", + "propertyIndex": 4, + "dataType": "Date", + "keys": [ + { + "name": "Value", + "value": "EndDate" + } + ] + }, + "DataField::TotalPrice": { + "description": "TotalPrice", + "$ref": "#/definitions/TableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/5", + "propertyIndex": 5, + "dataType": "Decimal", + "keys": [ + { + "name": "Value", + "value": "TotalPrice" + } + ] + }, + "DataField::Memo": { + "description": "Memo", + "$ref": "#/definitions/TableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/6", + "propertyIndex": 6, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "Memo" + } + ] + }, + "DataField::Status": { + "description": "Status", + "$ref": "#/definitions/TableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/7", + "propertyIndex": 7, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "Status" + } + ] + }, + "DataField::CustomerName": { + "description": "CustomerName", + "$ref": "#/definitions/TableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/16", + "propertyIndex": 8, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "CustomerName" + } + ] + }, + "Custom1": { + "$ref": "#/definitions/TableCustomColumn", + "description": "Custom1", + "keys": [ + { + "name": "Key", + "value": "Custom1" + } + ], + "actionType": "Custom", + "propertyIndex": 9 + } + }, + "description": "Columns", + "isViewNode": true, + "additionalProperties": { + "$ref": "#/definitions/TableCustomColumn" + } + }, + "ToolBar": { + "description": "Table Toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/Actions" + } + }, + "additionalProperties": false, + "required": [ + "actions" + ], + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem" + }, + "Actions": { + "description": "Actions", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/CustomTableAction" + }, + "properties": { + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createTravelDraft::Collection::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "description": "Create Draft", + "$ref": "#/definitions/ToolBarAction", + "propertyIndex": 0, + "dataType": "DataFieldForAction", + "keys": [ + { + "name": "Action", + "value": "createTravelDraft" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction" + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Check::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "description": "Check Travel", + "$ref": "#/definitions/ToolBarAction", + "propertyIndex": 1, + "dataType": "DataFieldForAction", + "keys": [ + { + "name": "Action", + "value": "Check" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction" + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createDraftTemplate::Collection::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "description": "Template Draft", + "$ref": "#/definitions/ToolBarAction", + "propertyIndex": 2, + "dataType": "DataFieldForAction", + "keys": [ + { + "name": "Action", + "value": "createDraftTemplate" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction" + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createActiveTemplate::Collection::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "description": "Template Active", + "$ref": "#/definitions/ToolBarAction", + "propertyIndex": 3, + "dataType": "DataFieldForAction", + "keys": [ + { + "name": "Action", + "value": "createActiveTemplate" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction" + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.deductDiscount::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "description": "Deduct Discount", + "$ref": "#/definitions/ToolBarAction", + "propertyIndex": 4, + "dataType": "DataFieldForAction", + "keys": [ + { + "name": "Action", + "value": "deductDiscount" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction" + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToNew::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "description": "Set To New", + "$ref": "#/definitions/ToolBarAction", + "propertyIndex": 5, + "dataType": "DataFieldForAction", + "keys": [ + { + "name": "Action", + "value": "setToNew" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction" + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToBooked::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "description": "Set To Booked", + "$ref": "#/definitions/ToolBarAction", + "propertyIndex": 6, + "dataType": "DataFieldForAction", + "keys": [ + { + "name": "Action", + "value": "setToBooked" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction" + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Activate": { + "description": "Activate", + "$ref": "#/definitions/ToolBarAction", + "propertyIndex": 7, + "dataType": "DataFieldForAction", + "keys": [ + { + "name": "Action", + "value": "Activate" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction" + }, + "action3": { + "$ref": "#/definitions/CustomTableAction", + "description": "Action 3", + "keys": [ + { + "name": "Key", + "value": "action3" + } + ], + "actionType": "Custom", + "propertyIndex": 8 + } + } + }, + "ToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action.", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/8" + }, + "ToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action.", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/9" + }, + "ToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action.", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/10" + }, + "ToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action.", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/11" + }, + "ToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action.", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/12" + }, + "ToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action.", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/13" + }, + "ToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action.", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/14" + }, + "ToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action.", + "artifactType": "Manifest" + }, + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationToolBarLR", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.LineItem/15" + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} diff --git a/packages/project-analyser/test/fixtures/lrop-v4/schemas/ObjectPage.json b/packages/project-analyser/test/fixtures/lrop-v4/schemas/ObjectPage.json new file mode 100644 index 00000000000..3bd5cf9244b --- /dev/null +++ b/packages/project-analyser/test/fixtures/lrop-v4/schemas/ObjectPage.json @@ -0,0 +1,2339 @@ +{ + "type": "object", + "properties": { + "header": { + "$ref": "#/definitions/ObjectPageHeader" + }, + "layout": { + "$ref": "#/definitions/ObjectPageLayout" + }, + "variantManagement": { + "$ref": "#/definitions/VariantManagementTypeObjectPage", + "description": "Determines whether variant management is enabled for tables:\n- None (default): Variant management is disabled.\n- Control: Variant management can be enabled individually for each control using personalization.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f26d42bea11c4deda82c7a2e00c9bc05" + }, + "sections": { + "anyOf": [ + { + "$ref": "#/definitions/GenericSections" + }, + { + "$ref": "#/definitions/CustomSections" + } + ] + }, + "footer": { + "$ref": "#/definitions/ObjectPageFooter" + }, + "$schema": { + "type": "string" + } + }, + "additionalProperties": false, + "definitions": { + "ObjectPageHeader": { + "description": "Header", + "isViewNode": true, + "type": "object", + "properties": { + "editableHeaderContent": { + "description": "Set editableHeaderContent to true to make the header fields editable.", + "type": "boolean", + "artifactType": "Manifest" + }, + "visible": { + "description": "Set visible to true to make the header visible.", + "type": "boolean", + "artifactType": "Manifest" + }, + "anchorBarVisible": { + "description": "Determines whether the anchor bar is displayed.", + "type": "boolean", + "artifactType": "Manifest" + }, + "actions": { + "$ref": "#/definitions/ObjectPageHeaderActions" + }, + "sections": { + "$ref": "#/definitions/HeaderSections" + } + }, + "additionalProperties": false + }, + "ObjectPageHeaderActions": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/CustomHeaderActionOP" + }, + { + "$ref": "#/definitions/ObjectPageHeaderAction" + }, + { + "$ref": "#/definitions/RelatedApps" + }, + { + "$ref": "#/definitions/ObjectPageHeaderActionGroup" + } + ] + } + }, + "CustomHeaderActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomHeaderActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "CustomHeaderActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ActionPlacement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "ObjectPageHeaderAction": { + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationObjectPageHeader", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ActionAfterExecutionConfigurationObjectPageHeader": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "RelatedApps": { + "type": "object", + "properties": { + "showRelatedApps": { + "description": "Set showRelatedApps to true to show the navigation button for related apps.", + "type": "boolean", + "artifactType": "Manifest" + }, + "additionalSemanticObjects": { + "$ref": "#/definitions/AdditionalSemanticObjects", + "description": "Additional Semantic Objects.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "additionalSemanticObjects" + ] + }, + "AdditionalSemanticObjects": { + "description": "Adds additional links under the Related Apps button by specifying semantic objects.", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/AdditionalSemanticObject" + } + }, + "AdditionalSemanticObject": { + "isViewNode": true, + "type": "object", + "properties": { + "allowedActions": { + "description": "Define the list of semantic object links displayed under the Related Apps button.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/8dcfe2e4555f49db8859cb6eb838692e" + }, + "unavailableActions": { + "description": "Determines the navigation actions of the semantic object that are hidden from under the Related Apps button.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/8dcfe2e4555f49db8859cb6eb838692e" + }, + "mapping": { + "$ref": "#/definitions/SemanticObjectPropertyMapping", + "description": "Mapping, defined for a semantic object, consists of key value pairs. The key defines the way in which the source application (object page) passes the context. The value represents the term used for the same entity in the target app.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/8dcfe2e4555f49db8859cb6eb838692e" + } + }, + "additionalProperties": false + }, + "SemanticObjectPropertyMapping": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ObjectPageHeaderActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ObjectPageHeaderAction" + } + }, + "HeaderSections": { + "description": "Header Sections", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/CommonHeaderFacetSettings" + }, + { + "$ref": "#/definitions/ObjectPageHeaderSectionForm" + }, + { + "$ref": "#/definitions/ObjectPageHeaderSectionContact" + }, + { + "$ref": "#/definitions/ObjectPageHeaderSectionAddress" + }, + { + "$ref": "#/definitions/ObjectPageCustomHeaderSectionFragment" + } + ] + } + }, + "CommonHeaderFacetSettings": { + "type": "object", + "properties": { + "stashed": { + "description": "Header facets marked as stashed are initially not visible on the UI. Key users can add these header facets via key user adaptation.", + "type": "boolean", + "artifactType": "Manifest" + }, + "flexSettings": { + "$ref": "#/definitions/FlexSettings", + "description": "Defines the key user adaptation behavior of the header facet.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "FlexSettings": { + "type": "object", + "properties": { + "designtime": { + "$ref": "#/definitions/DesignTime", + "description": "Defines which settings are available for key user adaptation at design time.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/ccd45ba3f0b446a0901b2c9d42b8ad53" + } + }, + "additionalProperties": false + }, + "DesignTime": { + "enum": [ + "Default", + "not-adaptable", + "not-adaptable-tree", + "not-adaptable-visibility", + "not-removable" + ], + "type": "string" + }, + "ObjectPageHeaderSectionForm": { + "type": "object", + "properties": { + "form": { + "description": "Form", + "isViewNode": true, + "type": "object", + "properties": {}, + "additionalProperties": true + }, + "stashed": { + "description": "Header facets marked as stashed are initially not visible on the UI. Key users can add these header facets via key user adaptation.", + "type": "boolean", + "artifactType": "Manifest" + }, + "flexSettings": { + "$ref": "#/definitions/FlexSettings", + "description": "Defines the key user adaptation behavior of the header facet.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ObjectPageHeaderSectionContact": { + "type": "object", + "properties": { + "contact": { + "description": "Contact", + "isViewNode": true, + "type": "object", + "properties": {}, + "additionalProperties": true + }, + "stashed": { + "description": "Header facets marked as stashed are initially not visible on the UI. Key users can add these header facets via key user adaptation.", + "type": "boolean", + "artifactType": "Manifest" + }, + "flexSettings": { + "$ref": "#/definitions/FlexSettings", + "description": "Defines the key user adaptation behavior of the header facet.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ObjectPageHeaderSectionAddress": { + "type": "object", + "properties": { + "address": { + "description": "Address", + "isViewNode": true, + "type": "object", + "properties": {}, + "additionalProperties": true + }, + "stashed": { + "description": "Header facets marked as stashed are initially not visible on the UI. Key users can add these header facets via key user adaptation.", + "type": "boolean", + "artifactType": "Manifest" + }, + "flexSettings": { + "$ref": "#/definitions/FlexSettings", + "description": "Defines the key user adaptation behavior of the header facet.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ObjectPageCustomHeaderSectionFragment": { + "description": "Custom Section fragment", + "isViewNode": true, + "type": "object", + "properties": { + "subTitle": { + "description": "Subtitle of header section.", + "i18nClassification": "TIT: Custom header section subtitle", + "type": "string", + "artifactType": "Manifest" + }, + "templateEdit": { + "description": "The fragment for the editable version of the header facet.", + "type": "string", + "artifactType": "Manifest" + }, + "requestGroupId": { + "$ref": "#/definitions/RequestGroupId", + "description": "Defines the loading behavior of the Object Page header.", + "artifactType": "Manifest" + }, + "flexSettings": { + "$ref": "#/definitions/ObjectPageCustomHeaderSectionFlexSettings", + "description": "Defines the key user adaptation behavior of the header facet.", + "artifactType": "Manifest" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the header facet is displayed in the header area.", + "artifactType": "Manifest" + }, + "fragmentName": { + "description": "The path to the XML template containing the section control.", + "artifactType": "Manifest", + "type": "string" + }, + "relatedFacet": { + "description": "Use the key of another section as a placement anchor.", + "artifactType": "Manifest", + "displayName": "Anchor", + "type": "string" + }, + "relativePosition": { + "$ref": "#/definitions/SectionPosition", + "description": "Define the placement, either before or after the anchor section.", + "artifactType": "Manifest" + }, + "title": { + "description": "The label of a custom section, preferably as an i18n key.", + "artifactType": "Manifest", + "i18nClassification": "TIT: Custom section title", + "type": "string" + }, + "stashed": { + "description": "Header facets marked as stashed are initially not visible on the UI. Key users can add these header facets via key user adaptation.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "fragmentName", + "title" + ] + }, + "RequestGroupId": { + "enum": [ + "Decoration", + "Heroes", + "LongRunners", + "Workers" + ], + "type": "string" + }, + "ObjectPageCustomHeaderSectionFlexSettings": { + "type": "object", + "properties": { + "designtime": { + "$ref": "#/definitions/DesignTime", + "description": "Defines which settings are available for key user adaptation at design time.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "SectionPosition": { + "displayName": "Placement", + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "ObjectPageLayout": { + "description": "Page Layout", + "isViewNode": true, + "type": "object", + "properties": { + "sectionLayout": { + "$ref": "#/definitions/SectionLayoutType", + "description": "Defines the layout of the sections.\n- Page (default): In this mode, all the sections and subsections are added to the same page.\n- Tabs: In this mode, the sections are represented as tabs under the header facet.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/facfea09018d4376acaceddb7e3f03b6" + } + }, + "additionalProperties": false + }, + "SectionLayoutType": { + "enum": [ + "Page", + "Tabs" + ], + "type": "string" + }, + "VariantManagementTypeObjectPage": { + "enum": [ + "Control", + "None" + ], + "type": "string" + }, + "GenericSections": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/ObjectPageSectionTableV4" + }, + { + "$ref": "#/definitions/ObjectPageSectionForm" + }, + { + "$ref": "#/definitions/ObjectPageSectionDataPoint" + }, + { + "$ref": "#/definitions/ObjectPageSectionContact" + }, + { + "$ref": "#/definitions/ObjectPageSectionAddress" + }, + { + "$ref": "#/definitions/ObjectPageSectionPresentationVariant" + }, + { + "$ref": "#/definitions/ObjectPageSubSections" + } + ] + } + }, + "ObjectPageSectionTableV4": { + "description": "Table Section", + "isViewNode": true, + "type": "object", + "properties": { + "table": { + "anyOf": [ + { + "$ref": "#/definitions/ObjectPageAnalyticalTableV4" + }, + { + "$ref": "#/definitions/ObjectPageGridTableV4" + }, + { + "$ref": "#/definitions/ObjectPageResponsiveTableV4" + }, + { + "$ref": "#/definitions/ObjectPageTreeTableV4" + } + ] + } + }, + "additionalProperties": false + }, + "ObjectPageAnalyticalTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "AnalyticalTable", + "artifactType": "Manifest" + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ObjectPageToolBar": { + "description": "Toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/ObjectPageToolBarActions" + } + }, + "additionalProperties": false, + "required": [ + "actions" + ] + }, + "ObjectPageToolBarActions": { + "description": "Actions", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/ObjectPageToolBarAction" + }, + { + "$ref": "#/definitions/CustomTableActionOP" + }, + { + "$ref": "#/definitions/ObjectPageToolBarActionGroup" + } + ] + } + }, + "ObjectPageToolBarAction": { + "description": "Action", + "isViewNode": true, + "type": "object", + "properties": { + "enableOnSelect": { + "$ref": "#/definitions/SelectType", + "description": "Enables single selection for a bound action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "SelectType": { + "enum": [ + "multi", + "single" + ], + "type": "string" + }, + "CustomTableActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "requiresSelection": { + "description": "Indicates whether the action requires a selection of items.", + "artifactType": "Manifest", + "type": "boolean" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "CustomActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ObjectPageToolBarActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ObjectPageToolBarAction" + } + }, + "PersonalizationTypeOP": { + "type": "object", + "properties": { + "column": { + "description": "Defines whether the user can add and remove columns to a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "sort": { + "description": "Defines whether the user can sort a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "filter": { + "description": "Defines whether the user can filter data of a given table.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "QuickVariantSelectionV4OP": { + "type": "object", + "properties": { + "paths": { + "description": "List of annotation paths referring to SelectionVariant annotations.", + "type": "array", + "items": { + "$ref": "#/definitions/AnnotationPathAsObject" + }, + "artifactType": "Manifest" + }, + "hideTableTitle": { + "description": "You can hide the table and display only the titles of the tabs. To do so, add the hideTableTitle option and set it to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "showCounts": { + "description": "You can show the counts of entries of each view. To do so, add the showCounts option and set it to true.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "paths" + ] + }, + "AnnotationPathAsObject": { + "type": "object", + "properties": { + "annotationPath": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "annotationPath" + ] + }, + "GenericColumnsOP": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/ObjectPageTableColumn" + }, + { + "$ref": "#/definitions/ObjectPageTableColumnAction" + }, + { + "$ref": "#/definitions/TableCustomColumnOP" + } + ] + } + }, + "ObjectPageTableColumn": { + "description": "Table Column", + "isViewNode": true, + "type": "object", + "properties": { + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "Availability": { + "enum": [ + "Adaptation", + "Default", + "Hidden" + ], + "type": "string" + }, + "ObjectPageTableColumnAction": { + "description": "Inline Action for Object Page", + "isViewNode": true, + "type": "object", + "properties": { + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "TableCustomColumnOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/PositionOP", + "description": "Defines the position of the column relative to the anchor column.", + "artifactType": "Manifest" + }, + "header": { + "description": "The header is shown on the table as header, as well as in the add/remove dialog.", + "i18nClassification": "COL: Custom column header text", + "artifactType": "Manifest", + "type": "string" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "artifactType": "Manifest", + "type": "string", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "template": { + "description": "Defines a target fragment.", + "artifactType": "Manifest", + "type": "string" + }, + "horizontalAlign": { + "$ref": "#/definitions/HorizontalAlign", + "description": "Aligns the header as well as the content horizontally.", + "artifactType": "Manifest" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\n- Default: it will be shown by default in the table.\n- Adaptation: it will initially not be shown in the table but be available via end user adaptation\n- Hidden: the column is neither available in the table nor in adaptation", + "artifactType": "Manifest" + }, + "properties": { + "description": "If provided and sorting for the table is enabled, the custom column header can be clicked.\nOnce clicked, a list of properties that can be sorted by are displayed.", + "artifactType": "Manifest", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "header", + "template" + ] + }, + "PositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another column to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/Placement", + "description": "Define the placement, either before or after the anchor column.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "Placement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "HorizontalAlign": { + "enum": [ + "Begin", + "Center", + "End" + ], + "type": "string" + }, + "OperationGroupingMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "enum": [ + "ChangeSet", + "Isolated" + ], + "type": "string" + }, + "SelectionMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://help.sap.com/docs/SAPUI5/4a476671e9bd4e898445a16858d9cf24/116b5d82e8c545e2a56e1b51b8b0a9bd.html?#additional-features-in-sap-fiori-elements-for-odata-v4", + "enum": [ + "Auto", + "Multi", + "None", + "Single" + ], + "type": "string" + }, + "RowCountMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/api/sap.ui.mdc.enums.TableRowCountMode", + "enum": [ + "Auto", + "Fixed", + "Interactive" + ], + "type": "string" + }, + "ObjectPageGridTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "GridTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeInlineOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineCreationsRowsOPGridTable" + }, + { + "$ref": "#/definitions/TableCreationModeNewPageOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeExternalOPTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "TableCreationModeInlineOPTable": { + "description": "Inline creation mode", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "Inline", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "createAtEnd": { + "description": "Specifies if the new entry should be created at the top or bottom of a table when `creationMode` is set to `Inline`.\nThe default value is `false`.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false + }, + "TableCreationModeInlineCreationsRowsOPGridTable": { + "description": "InlineCreationsRows creation mode for the grid table", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "InlineCreationRows", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false + }, + "TableCreationModeNewPageOPTable": { + "description": "NewPage creation mode", + "defaultControlProperty": true, + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "NewPage", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false + }, + "TableCreationModeCreationDialogOPTable": { + "description": "CreationDialog creation mode", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "CreationDialog", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "creationFields": { + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7fee938d7cba4bfd86810cfe6d011eb0" + } + }, + "additionalProperties": false + }, + "TableCreationModeExternalOPTable": { + "description": "External creation mode", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "External", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "outbound": { + "description": "The navigation target where the document is created when `creationMode` is set to `External`.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/5c2bc2ea8a7e482e968124959354d736" + } + }, + "additionalProperties": false + }, + "ObjectPageResponsiveTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "defaultControlProperty": true, + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "ResponsiveTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeInlineOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeNewPageOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeExternalOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineCreationsRowsOPResponsiveTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "TableCreationModeInlineCreationsRowsOPResponsiveTable": { + "description": "InlineCreationsRows creation mode for the responsive table", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "InlineCreationRows", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "inlineCreationRowsHiddenInEditMode": { + "description": "Specifies if the new entry should be hidden when `creationMode` is set to `InlineCreationRows`. This only applies to responsive tables.\nThe default value is `false`.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false + }, + "ObjectPageTreeTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "TreeTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeNewPageOPTreeTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineOPTreeTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTreeTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "TableCreationModeNewPageOPTreeTable": { + "description": "NewPage creation mode for TreeTable", + "defaultControlProperty": true, + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are 'NewPage', 'Inline', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline.\n- CreationDialog: The creation is performed in a table. There is a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise, it is 'Inline'.", + "type": "string", + "const": "NewPage", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "createInPlace": { + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is `false`. When set to `false`, the new entry is placed as the first child below its parent.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + }, + "isCreateEnabled": { + "description": "Defines the extension point to control the enablement of the \"Create\" button or \"Create Menu\" buttons.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + } + }, + "additionalProperties": false + }, + "TableCreationModeInlineOPTreeTable": { + "description": "Inline creation mode for TreeTable", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are 'NewPage', 'Inline', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "Inline", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "createInPlace": { + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is `false`. When set to `false`, the new entry is placed as the first child below its parent.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + }, + "isCreateEnabled": { + "description": "Defines the extension point to control the enablement of the \"Create\" button or \"Create Menu\" buttons.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + } + }, + "additionalProperties": false + }, + "TableCreationModeCreationDialogOPTreeTable": { + "description": "CreationDialog creation mode for TreeTable", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are 'NewPage', 'Inline', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "CreationDialog", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "creationFields": { + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7fee938d7cba4bfd86810cfe6d011eb0" + }, + "createInPlace": { + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is `false`. When set to `false`, the new entry is placed as the first child below its parent.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + }, + "isCreateEnabled": { + "description": "Defines the extension point to control the enablement of the \"Create\" button or \"Create Menu\" buttons.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + } + }, + "additionalProperties": false + }, + "ObjectPageSectionForm": { + "type": "object", + "properties": { + "form": { + "$ref": "#/definitions/ObjectPageForm", + "description": "Form" + } + }, + "additionalProperties": false + }, + "ObjectPageForm": { + "description": "Object Page Form", + "isViewNode": true, + "type": "object", + "properties": { + "fields": { + "$ref": "#/definitions/ObjectPageFormFields" + }, + "actions": { + "$ref": "#/definitions/ObjectPageFormActions" + } + }, + "additionalProperties": false + }, + "ObjectPageFormFields": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "ObjectPageFormActions": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/CustomFormActionOP" + }, + { + "$ref": "#/definitions/FormAction" + }, + { + "$ref": "#/definitions/ObjectPageFormActionGroup" + } + ] + } + }, + "CustomFormActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "FormAction": { + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationForm", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ActionAfterExecutionConfigurationForm": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ObjectPageFormActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/FormAction" + } + }, + "ObjectPageSectionDataPoint": { + "type": "object", + "properties": { + "dataPoint": { + "description": "Data Point", + "isViewNode": true, + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false + }, + "ObjectPageSectionContact": { + "type": "object", + "properties": { + "contact": { + "description": "Contact", + "isViewNode": true, + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false + }, + "ObjectPageSectionAddress": { + "type": "object", + "properties": { + "address": { + "description": "Address", + "isViewNode": true, + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false + }, + "ObjectPageSectionPresentationVariant": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/ObjectPageSectionTableV4" + }, + { + "$ref": "#/definitions/ObjectPageSectionChart" + } + ] + } + }, + "ObjectPageSectionChart": { + "type": "object", + "properties": { + "chart": { + "$ref": "#/definitions/ObjectPageChart", + "description": "Chart" + } + }, + "additionalProperties": false + }, + "ObjectPageChart": { + "type": "object", + "properties": { + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Chart Toolbar" + } + }, + "additionalProperties": false + }, + "ObjectPageSubSections": { + "description": "Subsections", + "isViewNode": true, + "type": "object", + "properties": { + "subsections": { + "$ref": "#/definitions/GenericSubSections" + } + }, + "additionalProperties": false, + "required": [ + "subsections" + ] + }, + "GenericSubSections": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/ObjectPageSectionTableV4" + }, + { + "$ref": "#/definitions/ObjectPageSectionForm" + }, + { + "$ref": "#/definitions/ObjectPageSectionDataPoint" + }, + { + "$ref": "#/definitions/ObjectPageSectionContact" + }, + { + "$ref": "#/definitions/ObjectPageSectionAddress" + }, + { + "$ref": "#/definitions/ObjectPageSectionPresentationVariant" + }, + { + "$ref": "#/definitions/ObjectPageSubSections" + }, + { + "$ref": "#/definitions/ObjectPageCustomSubSectionFragment" + } + ] + } + }, + "ObjectPageCustomSubSectionFragment": { + "description": "Custom Sub Section", + "isViewNode": true, + "type": "object", + "properties": { + "fragmentName": { + "description": "The path to the XML template containing the section control.", + "artifactType": "Manifest", + "type": "string" + }, + "relatedFacet": { + "description": "Use the key of another section as a placement anchor.", + "artifactType": "Manifest", + "displayName": "Anchor", + "type": "string" + }, + "relativePosition": { + "$ref": "#/definitions/SectionPosition", + "description": "Define the placement, either before or after the anchor section.", + "artifactType": "Manifest" + }, + "title": { + "description": "The label of a custom section, preferably as an i18n key.", + "artifactType": "Manifest", + "i18nClassification": "TIT: Custom section title", + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "fragmentName", + "title" + ] + }, + "CustomSections": { + "description": "Custom Sections", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ObjectPageCustomSectionFragment" + } + }, + "ObjectPageCustomSectionFragment": { + "description": "Fragment", + "isViewNode": true, + "type": "object", + "properties": { + "fragmentName": { + "description": "The path to the XML template containing the section control.", + "artifactType": "Manifest", + "type": "string" + }, + "actions": { + "$ref": "#/definitions/ObjectPageCustomSectionActions" + }, + "relatedFacet": { + "description": "Use the key of another section as a placement anchor.", + "artifactType": "Manifest", + "displayName": "Anchor", + "type": "string" + }, + "relativePosition": { + "$ref": "#/definitions/SectionPosition", + "description": "Define the placement, either before or after the anchor section.", + "artifactType": "Manifest" + }, + "title": { + "description": "The label of a custom section, preferably as an i18n key.", + "artifactType": "Manifest", + "i18nClassification": "TIT: Custom section title", + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "fragmentName", + "title" + ] + }, + "ObjectPageCustomSectionActions": { + "description": "Actions", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/CustomSectionActionOP" + } + }, + "CustomSectionActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomSectionActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "CustomSectionActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ObjectPageFooter": { + "description": "Footer", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/ObjectPageFooterActions" + } + }, + "additionalProperties": false + }, + "ObjectPageFooterActions": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/CustomFooterActionOP" + }, + { + "$ref": "#/definitions/FooterActionV4" + } + ] + } + }, + "CustomFooterActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomFooterActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "CustomFooterActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "FooterActionV4": { + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationFooter", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ActionAfterExecutionConfigurationFooter": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} diff --git a/packages/project-analyser/test/fixtures/lrop-v4/schemas/ObjectPage_BookingObjectPage.json b/packages/project-analyser/test/fixtures/lrop-v4/schemas/ObjectPage_BookingObjectPage.json new file mode 100644 index 00000000000..a62842323c5 --- /dev/null +++ b/packages/project-analyser/test/fixtures/lrop-v4/schemas/ObjectPage_BookingObjectPage.json @@ -0,0 +1,3315 @@ +{ + "type": "object", + "properties": { + "header": { + "$ref": "#/definitions/ObjectPageHeader", + "propertyIndex": 0 + }, + "layout": { + "$ref": "#/definitions/ObjectPageLayout", + "propertyIndex": 1 + }, + "variantManagement": { + "$ref": "#/definitions/VariantManagementTypeObjectPage", + "description": "Determines whether variant management is enabled for tables:\n- None (default): Variant management is disabled.\n- Control: Variant management can be enabled individually for each control using personalization.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f26d42bea11c4deda82c7a2e00c9bc05" + }, + "sections": { + "$ref": "#/definitions/Sections", + "propertyIndex": 2 + }, + "footer": { + "$ref": "#/definitions/ObjectPageFooter", + "propertyIndex": 3 + }, + "$schema": { + "type": "string" + } + }, + "additionalProperties": false, + "definitions": { + "ObjectPageHeader": { + "description": "Header", + "isViewNode": true, + "type": "object", + "properties": { + "editableHeaderContent": { + "description": "Set editableHeaderContent to true to make the header fields editable.", + "type": "boolean", + "artifactType": "Manifest" + }, + "visible": { + "description": "Set visible to true to make the header visible.", + "type": "boolean", + "artifactType": "Manifest" + }, + "anchorBarVisible": { + "description": "Determines whether the anchor bar is displayed.", + "type": "boolean", + "artifactType": "Manifest" + }, + "actions": { + "$ref": "#/definitions/ObjectPageHeaderActions" + }, + "sections": { + "$ref": "#/definitions/HeaderSections" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.HeaderInfo" + }, + "ObjectPageHeaderActions": { + "type": "object", + "properties": { + "EditAction": { + "$ref": "#/definitions/ObjectPageHeaderAction", + "propertyIndex": 0 + }, + "DeleteAction": { + "$ref": "#/definitions/ObjectPageHeaderAction", + "propertyIndex": 1 + }, + "RelatedApps": { + "$ref": "#/definitions/RelatedApps", + "description": "Related Apps", + "propertyIndex": 2, + "artifactType": "Manifest", + "actionType": "Standard", + "isViewNode": true, + "keys": [ + { + "name": "Action", + "value": "RelatedApps" + } + ] + } + }, + "description": "Actions", + "additionalProperties": { + "$ref": "#/definitions/CustomHeaderActionOP" + }, + "isViewNode": true, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Identification" + }, + "CustomHeaderActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomHeaderActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ], + "isViewNode": true, + "description": "Custom Action" + }, + "CustomHeaderActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string", + "oneOf": [ + { + "const": "EditAction", + "description": "Edit" + }, + { + "const": "DeleteAction", + "description": "Delete" + } + ] + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ActionPlacement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "ObjectPageHeaderAction": { + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationObjectPageHeader", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ActionAfterExecutionConfigurationObjectPageHeader": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "RelatedApps": { + "type": "object", + "properties": { + "showRelatedApps": { + "description": "Set showRelatedApps to true to show the navigation button for related apps.", + "type": "boolean", + "artifactType": "Manifest" + }, + "additionalSemanticObjects": { + "$ref": "#/definitions/AdditionalSemanticObjects", + "description": "Additional Semantic Objects.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "additionalSemanticObjects" + ] + }, + "AdditionalSemanticObjects": { + "description": "Adds additional links under the Related Apps button by specifying semantic objects.", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/AdditionalSemanticObject" + } + }, + "AdditionalSemanticObject": { + "isViewNode": true, + "type": "object", + "properties": { + "allowedActions": { + "description": "Define the list of semantic object links displayed under the Related Apps button.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/8dcfe2e4555f49db8859cb6eb838692e" + }, + "unavailableActions": { + "description": "Determines the navigation actions of the semantic object that are hidden from under the Related Apps button.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/8dcfe2e4555f49db8859cb6eb838692e" + }, + "mapping": { + "$ref": "#/definitions/SemanticObjectPropertyMapping", + "description": "Mapping, defined for a semantic object, consists of key value pairs. The key defines the way in which the source application (object page) passes the context. The value represents the term used for the same entity in the target app.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/8dcfe2e4555f49db8859cb6eb838692e" + } + }, + "additionalProperties": false + }, + "SemanticObjectPropertyMapping": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ObjectPageHeaderActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ObjectPageHeaderAction" + } + }, + "HeaderSections": { + "description": "Header Sections", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ObjectPageCustomHeaderSectionFragment" + }, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.HeaderFacets", + "properties": {} + }, + "FlexSettings": { + "type": "object", + "properties": { + "designtime": { + "$ref": "#/definitions/DesignTime", + "description": "Defines which settings are available for key user adaptation at design time.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/ccd45ba3f0b446a0901b2c9d42b8ad53" + } + }, + "additionalProperties": false + }, + "DesignTime": { + "enum": [ + "Default", + "not-adaptable", + "not-adaptable-tree", + "not-adaptable-visibility", + "not-removable" + ], + "type": "string" + }, + "ObjectPageCustomHeaderSectionFragment": { + "description": "Custom Section fragment", + "isViewNode": true, + "type": "object", + "properties": { + "subTitle": { + "description": "Subtitle of header section.", + "i18nClassification": "TIT: Custom header section subtitle", + "type": "string", + "artifactType": "Manifest" + }, + "templateEdit": { + "description": "The fragment for the editable version of the header facet.", + "type": "string", + "artifactType": "Manifest" + }, + "requestGroupId": { + "$ref": "#/definitions/RequestGroupId", + "description": "Defines the loading behavior of the Object Page header.", + "artifactType": "Manifest" + }, + "flexSettings": { + "$ref": "#/definitions/ObjectPageCustomHeaderSectionFlexSettings", + "description": "Defines the key user adaptation behavior of the header facet.", + "artifactType": "Manifest" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the header facet is displayed in the header area.", + "artifactType": "Manifest" + }, + "fragmentName": { + "description": "The path to the XML template containing the section control.", + "artifactType": "Manifest", + "type": "string" + }, + "relatedFacet": { + "description": "Use the key of another section as a placement anchor.", + "artifactType": "Manifest", + "displayName": "Anchor", + "type": "string", + "oneOf": [] + }, + "relativePosition": { + "$ref": "#/definitions/SectionPosition", + "description": "Define the placement, either before or after the anchor section.", + "artifactType": "Manifest" + }, + "title": { + "description": "The label of a custom section, preferably as an i18n key.", + "artifactType": "Manifest", + "i18nClassification": "TIT: Custom section title", + "type": "string" + }, + "stashed": { + "description": "Header facets marked as stashed are initially not visible on the UI. Key users can add these header facets via key user adaptation.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "fragmentName", + "title" + ] + }, + "RequestGroupId": { + "enum": [ + "Decoration", + "Heroes", + "LongRunners", + "Workers" + ], + "type": "string" + }, + "ObjectPageCustomHeaderSectionFlexSettings": { + "type": "object", + "properties": { + "designtime": { + "$ref": "#/definitions/DesignTime", + "description": "Defines which settings are available for key user adaptation at design time.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "SectionPosition": { + "displayName": "Placement", + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "ObjectPageLayout": { + "description": "Page Layout", + "isViewNode": true, + "type": "object", + "properties": { + "sectionLayout": { + "$ref": "#/definitions/SectionLayoutType", + "description": "Defines the layout of the sections.\n- Page (default): In this mode, all the sections and subsections are added to the same page.\n- Tabs: In this mode, the sections are represented as tabs under the header facet.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/facfea09018d4376acaceddb7e3f03b6" + } + }, + "additionalProperties": false + }, + "SectionLayoutType": { + "enum": [ + "Page", + "Tabs" + ], + "type": "string" + }, + "VariantManagementTypeObjectPage": { + "enum": [ + "Control", + "None" + ], + "type": "string" + }, + "ObjectPageAnalyticalTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "AnalyticalTable", + "artifactType": "Manifest" + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "SelectType": { + "enum": [ + "multi", + "single" + ], + "type": "string" + }, + "CustomTableActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "requiresSelection": { + "description": "Indicates whether the action requires a selection of items.", + "artifactType": "Manifest", + "type": "boolean" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "CustomActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ObjectPageToolBarActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ObjectPageToolBarAction" + } + }, + "PersonalizationTypeOP": { + "type": "object", + "properties": { + "column": { + "description": "Defines whether the user can add and remove columns to a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "sort": { + "description": "Defines whether the user can sort a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "filter": { + "description": "Defines whether the user can filter data of a given table.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "AnnotationPathAsObject": { + "type": "object", + "properties": { + "annotationPath": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "annotationPath" + ] + }, + "ObjectPageTableColumn": { + "description": "Table Column", + "isViewNode": true, + "type": "object", + "properties": { + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "Availability": { + "enum": [ + "Adaptation", + "Default", + "Hidden" + ], + "type": "string" + }, + "ObjectPageTableColumnAction": { + "description": "Inline Action for Object Page", + "isViewNode": true, + "type": "object", + "properties": { + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "TableCustomColumnOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/PositionOP", + "description": "Defines the position of the column relative to the anchor column.", + "artifactType": "Manifest" + }, + "header": { + "description": "The header is shown on the table as header, as well as in the add/remove dialog.", + "i18nClassification": "COL: Custom column header text", + "artifactType": "Manifest", + "type": "string" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "artifactType": "Manifest", + "type": "string", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "template": { + "description": "Defines a target fragment.", + "artifactType": "Manifest", + "type": "string" + }, + "horizontalAlign": { + "$ref": "#/definitions/HorizontalAlign", + "description": "Aligns the header as well as the content horizontally.", + "artifactType": "Manifest" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\n- Default: it will be shown by default in the table.\n- Adaptation: it will initially not be shown in the table but be available via end user adaptation\n- Hidden: the column is neither available in the table nor in adaptation", + "artifactType": "Manifest" + }, + "properties": { + "description": "If provided and sorting for the table is enabled, the custom column header can be clicked.\nOnce clicked, a list of properties that can be sorted by are displayed.", + "artifactType": "Manifest", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "header", + "template" + ] + }, + "PositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another column to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/Placement", + "description": "Define the placement, either before or after the anchor column.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "Placement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "HorizontalAlign": { + "enum": [ + "Begin", + "Center", + "End" + ], + "type": "string" + }, + "OperationGroupingMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "enum": [ + "ChangeSet", + "Isolated" + ], + "type": "string" + }, + "SelectionMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://help.sap.com/docs/SAPUI5/4a476671e9bd4e898445a16858d9cf24/116b5d82e8c545e2a56e1b51b8b0a9bd.html?#additional-features-in-sap-fiori-elements-for-odata-v4", + "enum": [ + "Auto", + "Multi", + "None", + "Single" + ], + "type": "string" + }, + "RowCountMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/api/sap.ui.mdc.enums.TableRowCountMode", + "enum": [ + "Auto", + "Fixed", + "Interactive" + ], + "type": "string" + }, + "ObjectPageGridTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "GridTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeInlineOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineCreationsRowsOPGridTable" + }, + { + "$ref": "#/definitions/TableCreationModeNewPageOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeExternalOPTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "TableCreationModeInlineOPTable": { + "description": "Inline creation mode", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "Inline", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "createAtEnd": { + "description": "Specifies if the new entry should be created at the top or bottom of a table when `creationMode` is set to `Inline`.\nThe default value is `false`.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false, + "defaultControlProperty": true + }, + "TableCreationModeInlineCreationsRowsOPGridTable": { + "description": "InlineCreationsRows creation mode for the grid table", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "InlineCreationRows", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false + }, + "TableCreationModeNewPageOPTable": { + "description": "NewPage creation mode", + "defaultControlProperty": false, + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "NewPage", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false + }, + "TableCreationModeCreationDialogOPTable": { + "description": "CreationDialog creation mode", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "CreationDialog", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "creationFields": { + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7fee938d7cba4bfd86810cfe6d011eb0" + } + }, + "additionalProperties": false + }, + "TableCreationModeExternalOPTable": { + "description": "External creation mode", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "External", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "outbound": { + "description": "The navigation target where the document is created when `creationMode` is set to `External`.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/5c2bc2ea8a7e482e968124959354d736" + } + }, + "additionalProperties": false + }, + "ObjectPageResponsiveTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "defaultControlProperty": true, + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "ResponsiveTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeInlineOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeNewPageOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeExternalOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineCreationsRowsOPResponsiveTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "TableCreationModeInlineCreationsRowsOPResponsiveTable": { + "description": "InlineCreationsRows creation mode for the responsive table", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "InlineCreationRows", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "inlineCreationRowsHiddenInEditMode": { + "description": "Specifies if the new entry should be hidden when `creationMode` is set to `InlineCreationRows`. This only applies to responsive tables.\nThe default value is `false`.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false + }, + "ObjectPageTreeTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "TreeTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeNewPageOPTreeTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineOPTreeTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTreeTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "TableCreationModeNewPageOPTreeTable": { + "description": "NewPage creation mode for TreeTable", + "defaultControlProperty": false, + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are 'NewPage', 'Inline', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline.\n- CreationDialog: The creation is performed in a table. There is a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise, it is 'Inline'.", + "type": "string", + "const": "NewPage", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "createInPlace": { + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is `false`. When set to `false`, the new entry is placed as the first child below its parent.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + }, + "isCreateEnabled": { + "description": "Defines the extension point to control the enablement of the \"Create\" button or \"Create Menu\" buttons.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + } + }, + "additionalProperties": false + }, + "TableCreationModeInlineOPTreeTable": { + "description": "Inline creation mode for TreeTable", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are 'NewPage', 'Inline', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "Inline", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "createInPlace": { + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is `false`. When set to `false`, the new entry is placed as the first child below its parent.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + }, + "isCreateEnabled": { + "description": "Defines the extension point to control the enablement of the \"Create\" button or \"Create Menu\" buttons.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + } + }, + "additionalProperties": false, + "defaultControlProperty": true + }, + "TableCreationModeCreationDialogOPTreeTable": { + "description": "CreationDialog creation mode for TreeTable", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are 'NewPage', 'Inline', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "CreationDialog", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "creationFields": { + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7fee938d7cba4bfd86810cfe6d011eb0" + }, + "createInPlace": { + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is `false`. When set to `false`, the new entry is placed as the first child below its parent.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + }, + "isCreateEnabled": { + "description": "Defines the extension point to control the enablement of the \"Create\" button or \"Create Menu\" buttons.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + } + }, + "additionalProperties": false + }, + "ObjectPageForm": { + "description": "Object Page Form", + "isViewNode": true, + "type": "object", + "properties": { + "fields": { + "$ref": "#/definitions/ObjectPageFormFields" + }, + "actions": { + "$ref": "#/definitions/ObjectPageFormActions" + } + }, + "additionalProperties": false + }, + "ObjectPageFormFields": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "ObjectPageFormActions": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/CustomFormActionOP" + }, + { + "$ref": "#/definitions/FormAction" + }, + { + "$ref": "#/definitions/ObjectPageFormActionGroup" + } + ] + } + }, + "CustomFormActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "FormAction": { + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationForm", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ActionAfterExecutionConfigurationForm": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ObjectPageFormActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/FormAction" + } + }, + "ObjectPageCustomSubSectionFragment": { + "description": "Custom Sub Section", + "isViewNode": true, + "type": "object", + "properties": { + "fragmentName": { + "description": "The path to the XML template containing the section control.", + "artifactType": "Manifest", + "type": "string" + }, + "relatedFacet": { + "description": "Use the key of another section as a placement anchor.", + "artifactType": "Manifest", + "displayName": "Anchor", + "type": "string" + }, + "relativePosition": { + "$ref": "#/definitions/SectionPosition", + "description": "Define the placement, either before or after the anchor section.", + "artifactType": "Manifest" + }, + "title": { + "description": "The label of a custom section, preferably as an i18n key.", + "artifactType": "Manifest", + "i18nClassification": "TIT: Custom section title", + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "fragmentName", + "title" + ] + }, + "CustomSections": { + "description": "Custom Sections", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ObjectPageCustomSectionFragment" + } + }, + "ObjectPageCustomSectionFragment": { + "description": "Fragment", + "isViewNode": true, + "type": "object", + "properties": { + "fragmentName": { + "description": "The path to the XML template containing the section control.", + "artifactType": "Manifest", + "type": "string" + }, + "actions": { + "$ref": "#/definitions/ObjectPageCustomSectionActions" + }, + "relatedFacet": { + "description": "Use the key of another section as a placement anchor.", + "artifactType": "Manifest", + "displayName": "Anchor", + "type": "string", + "oneOf": [ + { + "const": "Booking", + "description": "Booking" + }, + { + "const": "BookingSupplement", + "description": "Booking Supplement" + } + ] + }, + "relativePosition": { + "$ref": "#/definitions/SectionPosition", + "description": "Define the placement, either before or after the anchor section.", + "artifactType": "Manifest" + }, + "title": { + "description": "The label of a custom section, preferably as an i18n key.", + "artifactType": "Manifest", + "i18nClassification": "TIT: Custom section title", + "type": "string" + }, + "controls": { + "type": "object" + } + }, + "additionalProperties": false, + "required": [ + "fragmentName", + "title" + ] + }, + "ObjectPageCustomSectionActions": { + "description": "Actions", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/CustomSectionActionOP" + }, + "properties": {} + }, + "CustomSectionActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomSectionActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "CustomSectionActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "CustomFooterActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomFooterActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ], + "isViewNode": true, + "description": "Custom Action" + }, + "CustomFooterActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string", + "oneOf": [] + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "FooterActionV4": { + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationFooter", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ActionAfterExecutionConfigurationFooter": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "Sections": { + "type": "object", + "properties": { + "@com.sap.vocabularies.UI.v1.Identification": { + "$ref": "#/definitions/ObjectPageSectionForm<@com.sap.vocabularies.UI.v1.Identification>", + "propertyIndex": 0 + }, + "_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem": { + "$ref": "#/definitions/ObjectPageSectionTableV4<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>", + "propertyIndex": 1 + } + }, + "additionalProperties": { + "$ref": "#/definitions/ObjectPageCustomSectionFragment" + }, + "description": "Sections", + "isViewNode": true, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Facets" + }, + "ObjectPageHeaderAction": { + "type": "object", + "description": "Edit", + "additionalProperties": true, + "isViewNode": true, + "propertyIndex": 0, + "keys": [ + { + "name": "Action", + "value": "Edit" + } + ], + "actionType": "Standard", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Container/Booking/@com.sap.vocabularies.UI.v1.UpdateHidden" + }, + "ObjectPageHeaderAction": { + "type": "object", + "description": "Delete", + "additionalProperties": true, + "isViewNode": true, + "propertyIndex": 1, + "keys": [ + { + "name": "Action", + "value": "Delete" + } + ], + "actionType": "Standard", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Container/Booking/@com.sap.vocabularies.UI.v1.DeleteHidden" + }, + "ObjectPageSectionForm<@com.sap.vocabularies.UI.v1.Identification>": { + "type": "object", + "properties": { + "form": { + "$ref": "#/definitions/SectionForm" + } + }, + "additionalProperties": false, + "title": "Facet ID: Booking", + "keys": [ + { + "name": "ID", + "value": "Booking" + } + ], + "description": "Booking", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Facets/0", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType", + "isViewNode": true + }, + "SectionForm": { + "type": "object", + "properties": { + "fields": { + "$ref": "#/definitions/SectionFields" + } + }, + "description": "Form", + "additionalProperties": false, + "keys": [ + { + "name": "Target", + "value": "Identification" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType", + "isViewNode": true, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Identification" + }, + "SectionFields": { + "type": "object", + "properties": { + "DataField::BookingID": { + "$ref": "#/definitions/BookingType::Identification::DataField::BookingID", + "propertyIndex": 0 + }, + "DataField::BookingDate": { + "$ref": "#/definitions/BookingType::Identification::DataField::BookingDate", + "propertyIndex": 1 + }, + "DataField::CustomerID": { + "$ref": "#/definitions/BookingType::Identification::DataField::CustomerID", + "propertyIndex": 2 + }, + "DataField::AirlineID": { + "$ref": "#/definitions/BookingType::Identification::DataField::AirlineID", + "propertyIndex": 3 + }, + "DataField::ConnectionID": { + "$ref": "#/definitions/BookingType::Identification::DataField::ConnectionID", + "propertyIndex": 4 + }, + "DataField::FlightDate": { + "$ref": "#/definitions/BookingType::Identification::DataField::FlightDate", + "propertyIndex": 5 + }, + "DataField::FlightPrice": { + "$ref": "#/definitions/BookingType::Identification::DataField::FlightPrice", + "propertyIndex": 6 + } + }, + "description": "Fields", + "additionalProperties": false, + "isViewNode": true + }, + "BookingType::Identification::DataField::BookingID": { + "type": "object", + "properties": {}, + "description": "BookingID", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "BookingID" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Identification/0", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "String" + }, + "BookingType::Identification::DataField::BookingDate": { + "type": "object", + "properties": {}, + "description": "BookingDate", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "BookingDate" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Identification/1", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "Date" + }, + "BookingType::Identification::DataField::CustomerID": { + "type": "object", + "properties": {}, + "description": "Kunden ID", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "CustomerID" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Identification/2", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "String" + }, + "BookingType::Identification::DataField::AirlineID": { + "type": "object", + "properties": {}, + "description": "AirlineID", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "AirlineID" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Identification/3", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "String" + }, + "BookingType::Identification::DataField::ConnectionID": { + "type": "object", + "properties": {}, + "description": "ConnectionID", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "ConnectionID" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Identification/4", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "String" + }, + "BookingType::Identification::DataField::FlightDate": { + "type": "object", + "properties": {}, + "description": "FlightDate", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "FlightDate" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Identification/5", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "Date" + }, + "BookingType::Identification::DataField::FlightPrice": { + "type": "object", + "properties": {}, + "description": "FlightPrice", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "FlightPrice" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Identification/6", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "Decimal" + }, + "ObjectPageSectionTableV4<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Booking Supplement", + "isViewNode": true, + "type": "object", + "properties": { + "table": { + "anyOf": [ + { + "$ref": "#/definitions/ObjectPageAnalyticalTableV4<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>" + }, + { + "$ref": "#/definitions/ObjectPageGridTableV4<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>" + }, + { + "$ref": "#/definitions/ObjectPageResponsiveTableV4<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>" + }, + { + "$ref": "#/definitions/ObjectPageTreeTableV4<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>" + } + ] + } + }, + "additionalProperties": false, + "title": "Facet ID: BookingSupplement", + "keys": [ + { + "name": "ID", + "value": "BookingSupplement" + } + ], + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Facets/1", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType" + }, + "ObjectPageResponsiveTableV4<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "defaultControlProperty": true, + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "ResponsiveTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeInlineOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeNewPageOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTable<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>" + }, + { + "$ref": "#/definitions/TableCreationModeExternalOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineCreationsRowsOPResponsiveTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingSupplementID", + "SupplementID", + "Price" + ] + }, + "uniqueItems": true + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingSupplementID", + "SupplementID", + "Price" + ] + }, + "uniqueItems": true + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType/@com.sap.vocabularies.UI.v1.LineItem", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType" + }, + "ObjectPageAnalyticalTableV4<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "AnalyticalTable", + "artifactType": "Manifest" + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingSupplementID", + "SupplementID", + "Price" + ] + }, + "uniqueItems": true + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingSupplementID", + "SupplementID", + "Price" + ] + }, + "uniqueItems": true + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType/@com.sap.vocabularies.UI.v1.LineItem", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType" + }, + "ObjectPageGridTableV4<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "GridTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeInlineOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineCreationsRowsOPGridTable" + }, + { + "$ref": "#/definitions/TableCreationModeNewPageOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTable<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>" + }, + { + "$ref": "#/definitions/TableCreationModeExternalOPTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingSupplementID", + "SupplementID", + "Price" + ] + }, + "uniqueItems": true + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingSupplementID", + "SupplementID", + "Price" + ] + }, + "uniqueItems": true + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType/@com.sap.vocabularies.UI.v1.LineItem", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType" + }, + "ObjectPageTreeTableV4<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "TreeTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeNewPageOPTreeTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineOPTreeTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTreeTable<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingSupplementID", + "SupplementID", + "Price" + ] + }, + "uniqueItems": true + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingSupplementID", + "SupplementID", + "Price" + ] + }, + "uniqueItems": true + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType/@com.sap.vocabularies.UI.v1.LineItem", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType" + }, + "QuickVariantSelectionV4OP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "paths": { + "description": "List of annotation paths referring to SelectionVariant annotations.", + "type": "array", + "items": { + "$ref": "#/definitions/AnnotationPathAsObject<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>" + }, + "artifactType": "Manifest" + }, + "hideTableTitle": { + "description": "You can hide the table and display only the titles of the tabs. To do so, add the hideTableTitle option and set it to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "showCounts": { + "description": "You can show the counts of entries of each view. To do so, add the showCounts option and set it to true.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "paths" + ] + }, + "AnnotationPathAsObject<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "annotationPath": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "annotationPath" + ] + }, + "_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem": { + "type": "object", + "properties": { + "DataField::BookingSupplementID": { + "description": "BookingSupplementID", + "$ref": "#/definitions/ObjectPageTableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType/@com.sap.vocabularies.UI.v1.LineItem/0", + "propertyIndex": 0, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "BookingSupplementID" + } + ] + }, + "DataField::SupplementID": { + "description": "SupplementID", + "$ref": "#/definitions/ObjectPageTableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType/@com.sap.vocabularies.UI.v1.LineItem/1", + "propertyIndex": 1, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "SupplementID" + } + ] + }, + "DataField::Price": { + "description": "Price", + "$ref": "#/definitions/ObjectPageTableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType/@com.sap.vocabularies.UI.v1.LineItem/2", + "propertyIndex": 2, + "dataType": "Decimal", + "keys": [ + { + "name": "Value", + "value": "Price" + } + ] + } + }, + "description": "Columns", + "isViewNode": true, + "additionalProperties": { + "$ref": "#/definitions/TableCustomColumnOP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>" + } + }, + "TableCustomColumnOP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/PositionOP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Defines the position of the column relative to the anchor column.", + "artifactType": "Manifest" + }, + "header": { + "description": "The header is shown on the table as header, as well as in the add/remove dialog.", + "i18nClassification": "COL: Custom column header text", + "artifactType": "Manifest", + "type": "string" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "artifactType": "Manifest", + "type": "string", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "template": { + "description": "Defines a target fragment.", + "artifactType": "Manifest", + "type": "string" + }, + "horizontalAlign": { + "$ref": "#/definitions/HorizontalAlign", + "description": "Aligns the header as well as the content horizontally.", + "artifactType": "Manifest" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\n- Default: it will be shown by default in the table.\n- Adaptation: it will initially not be shown in the table but be available via end user adaptation\n- Hidden: the column is neither available in the table nor in adaptation", + "artifactType": "Manifest" + }, + "properties": { + "description": "If provided and sorting for the table is enabled, the custom column header can be clicked.\nOnce clicked, a list of properties that can be sorted by are displayed.", + "artifactType": "Manifest", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingSupplementID", + "SupplementID", + "Price" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "header", + "template" + ], + "isViewNode": true, + "description": "Custom Column" + }, + "ObjectPageToolBar<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/Actions<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>" + } + }, + "additionalProperties": false, + "required": [ + "actions" + ], + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingSupplementType/@com.sap.vocabularies.UI.v1.LineItem" + }, + "Actions<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Actions", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/CustomTableActionOP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>" + }, + "properties": {} + }, + "CustomTableActionOP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomActionPositionOP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "requiresSelection": { + "description": "Indicates whether the action requires a selection of items.", + "artifactType": "Manifest", + "type": "boolean" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ], + "isViewNode": true, + "description": "Custom Action" + }, + "TableCreationModeCreationDialogOPTable<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "CreationDialog creation mode", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "CreationDialog", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "creationFields": { + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.", + "type": "array", + "items": { + "type": "string", + "oneOf": [ + { + "const": "BookingSupplementID", + "description": "BookingSupplementID", + "type": "Field" + }, + { + "const": "SupplementID", + "description": "SupplementID", + "type": "Field" + }, + { + "const": "Price", + "description": "Price", + "type": "Field" + } + ] + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7fee938d7cba4bfd86810cfe6d011eb0", + "uniqueItems": true + } + }, + "additionalProperties": false + }, + "TableCreationModeCreationDialogOPTreeTable<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "CreationDialog creation mode for TreeTable", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are 'NewPage', 'Inline', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "CreationDialog", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "creationFields": { + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.", + "type": "array", + "items": { + "type": "string", + "oneOf": [ + { + "const": "BookingSupplementID", + "description": "BookingSupplementID", + "type": "Field" + }, + { + "const": "SupplementID", + "description": "SupplementID", + "type": "Field" + }, + { + "const": "Price", + "description": "Price", + "type": "Field" + } + ] + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7fee938d7cba4bfd86810cfe6d011eb0", + "uniqueItems": true + }, + "createInPlace": { + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is `false`. When set to `false`, the new entry is placed as the first child below its parent.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + }, + "isCreateEnabled": { + "description": "Defines the extension point to control the enablement of the \"Create\" button or \"Create Menu\" buttons.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + } + }, + "additionalProperties": false + }, + "PositionOP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another column to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string", + "enum": [ + "DataField::BookingSupplementID", + "DataField::SupplementID", + "DataField::Price" + ] + }, + "placement": { + "$ref": "#/definitions/Placement", + "description": "Define the placement, either before or after the anchor column.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "CustomActionPositionOP<_BookSupplement::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string", + "oneOf": [] + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ObjectPageFooter": { + "description": "Footer", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/FooterActions" + } + }, + "additionalProperties": false + }, + "FooterActions": { + "type": "object", + "properties": {}, + "description": "Actions", + "additionalProperties": { + "$ref": "#/definitions/CustomFooterActionOP" + }, + "isViewNode": true, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.Identification" + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/packages/project-analyser/test/fixtures/lrop-v4/schemas/ObjectPage_TravelObjectPage.json b/packages/project-analyser/test/fixtures/lrop-v4/schemas/ObjectPage_TravelObjectPage.json new file mode 100644 index 00000000000..075586de19b --- /dev/null +++ b/packages/project-analyser/test/fixtures/lrop-v4/schemas/ObjectPage_TravelObjectPage.json @@ -0,0 +1,3881 @@ +{ + "type": "object", + "properties": { + "header": { + "$ref": "#/definitions/ObjectPageHeader", + "propertyIndex": 0 + }, + "layout": { + "$ref": "#/definitions/ObjectPageLayout", + "propertyIndex": 1 + }, + "variantManagement": { + "$ref": "#/definitions/VariantManagementTypeObjectPage", + "description": "Determines whether variant management is enabled for tables:\n- None (default): Variant management is disabled.\n- Control: Variant management can be enabled individually for each control using personalization.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f26d42bea11c4deda82c7a2e00c9bc05" + }, + "sections": { + "$ref": "#/definitions/Sections", + "propertyIndex": 2 + }, + "footer": { + "$ref": "#/definitions/ObjectPageFooter", + "propertyIndex": 3 + }, + "$schema": { + "type": "string" + } + }, + "additionalProperties": false, + "definitions": { + "ObjectPageHeader": { + "description": "Header", + "isViewNode": true, + "type": "object", + "properties": { + "editableHeaderContent": { + "description": "Set editableHeaderContent to true to make the header fields editable.", + "type": "boolean", + "artifactType": "Manifest" + }, + "visible": { + "description": "Set visible to true to make the header visible.", + "type": "boolean", + "artifactType": "Manifest" + }, + "anchorBarVisible": { + "description": "Determines whether the anchor bar is displayed.", + "type": "boolean", + "artifactType": "Manifest" + }, + "actions": { + "$ref": "#/definitions/ObjectPageHeaderActions" + }, + "sections": { + "$ref": "#/definitions/HeaderSections" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.HeaderInfo" + }, + "ObjectPageHeaderActions": { + "type": "object", + "properties": { + "EditAction": { + "$ref": "#/definitions/ObjectPageHeaderAction", + "propertyIndex": 0 + }, + "DeleteAction": { + "$ref": "#/definitions/ObjectPageHeaderAction", + "propertyIndex": 1 + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToBooked::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "$ref": "#/definitions/ObjectPageHeaderAction", + "propertyIndex": 2 + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToNew::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "$ref": "#/definitions/ObjectPageHeaderAction", + "propertyIndex": 3 + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Check::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "$ref": "#/definitions/ObjectPageHeaderAction", + "propertyIndex": 4 + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createBookingDraft::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "$ref": "#/definitions/ObjectPageHeaderAction", + "propertyIndex": 5 + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.deductDiscount::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "$ref": "#/definitions/ObjectPageHeaderAction", + "propertyIndex": 6 + }, + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Activate": { + "$ref": "#/definitions/ObjectPageHeaderAction", + "propertyIndex": 7 + }, + "Action4": { + "$ref": "#/definitions/CustomHeaderActionOP", + "description": "Action4", + "keys": [ + { + "name": "Key", + "value": "Action4" + } + ], + "actionType": "Custom", + "propertyIndex": 8 + }, + "RelatedApps": { + "$ref": "#/definitions/RelatedApps", + "description": "Related Apps", + "propertyIndex": 9, + "artifactType": "Manifest", + "actionType": "Standard", + "isViewNode": true, + "keys": [ + { + "name": "Action", + "value": "RelatedApps" + } + ] + } + }, + "description": "Actions", + "additionalProperties": { + "$ref": "#/definitions/CustomHeaderActionOP" + }, + "isViewNode": true, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification" + }, + "CustomHeaderActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomHeaderActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ], + "isViewNode": true, + "description": "Custom Action" + }, + "CustomHeaderActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string", + "oneOf": [ + { + "const": "EditAction", + "description": "Edit" + }, + { + "const": "DeleteAction", + "description": "Delete" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToBooked::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Set To Booked" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToNew::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Set To New" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Check::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Check Travel" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createBookingDraft::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Create new Booking" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.deductDiscount::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "description": "Deduct Discount" + }, + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Activate", + "description": "Activate" + }, + { + "const": "Action4", + "description": "Action4", + "custom": true + } + ] + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ActionPlacement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "ObjectPageHeaderAction": { + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationObjectPageHeader", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ActionAfterExecutionConfigurationObjectPageHeader": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "RelatedApps": { + "type": "object", + "properties": { + "showRelatedApps": { + "description": "Set showRelatedApps to true to show the navigation button for related apps.", + "type": "boolean", + "artifactType": "Manifest" + }, + "additionalSemanticObjects": { + "$ref": "#/definitions/AdditionalSemanticObjects", + "description": "Additional Semantic Objects.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "additionalSemanticObjects" + ] + }, + "AdditionalSemanticObjects": { + "description": "Adds additional links under the Related Apps button by specifying semantic objects.", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/AdditionalSemanticObject" + } + }, + "AdditionalSemanticObject": { + "isViewNode": true, + "type": "object", + "properties": { + "allowedActions": { + "description": "Define the list of semantic object links displayed under the Related Apps button.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/8dcfe2e4555f49db8859cb6eb838692e" + }, + "unavailableActions": { + "description": "Determines the navigation actions of the semantic object that are hidden from under the Related Apps button.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/8dcfe2e4555f49db8859cb6eb838692e" + }, + "mapping": { + "$ref": "#/definitions/SemanticObjectPropertyMapping", + "description": "Mapping, defined for a semantic object, consists of key value pairs. The key defines the way in which the source application (object page) passes the context. The value represents the term used for the same entity in the target app.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/8dcfe2e4555f49db8859cb6eb838692e" + } + }, + "additionalProperties": false + }, + "SemanticObjectPropertyMapping": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ObjectPageHeaderActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ObjectPageHeaderAction" + } + }, + "HeaderSections": { + "description": "Header Sections", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ObjectPageCustomHeaderSectionFragment" + }, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.HeaderFacets", + "properties": {} + }, + "FlexSettings": { + "type": "object", + "properties": { + "designtime": { + "$ref": "#/definitions/DesignTime", + "description": "Defines which settings are available for key user adaptation at design time.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/ccd45ba3f0b446a0901b2c9d42b8ad53" + } + }, + "additionalProperties": false + }, + "DesignTime": { + "enum": [ + "Default", + "not-adaptable", + "not-adaptable-tree", + "not-adaptable-visibility", + "not-removable" + ], + "type": "string" + }, + "ObjectPageCustomHeaderSectionFragment": { + "description": "Custom Section fragment", + "isViewNode": true, + "type": "object", + "properties": { + "subTitle": { + "description": "Subtitle of header section.", + "i18nClassification": "TIT: Custom header section subtitle", + "type": "string", + "artifactType": "Manifest" + }, + "templateEdit": { + "description": "The fragment for the editable version of the header facet.", + "type": "string", + "artifactType": "Manifest" + }, + "requestGroupId": { + "$ref": "#/definitions/RequestGroupId", + "description": "Defines the loading behavior of the Object Page header.", + "artifactType": "Manifest" + }, + "flexSettings": { + "$ref": "#/definitions/ObjectPageCustomHeaderSectionFlexSettings", + "description": "Defines the key user adaptation behavior of the header facet.", + "artifactType": "Manifest" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the header facet is displayed in the header area.", + "artifactType": "Manifest" + }, + "fragmentName": { + "description": "The path to the XML template containing the section control.", + "artifactType": "Manifest", + "type": "string" + }, + "relatedFacet": { + "description": "Use the key of another section as a placement anchor.", + "artifactType": "Manifest", + "displayName": "Anchor", + "type": "string", + "oneOf": [] + }, + "relativePosition": { + "$ref": "#/definitions/SectionPosition", + "description": "Define the placement, either before or after the anchor section.", + "artifactType": "Manifest" + }, + "title": { + "description": "The label of a custom section, preferably as an i18n key.", + "artifactType": "Manifest", + "i18nClassification": "TIT: Custom section title", + "type": "string" + }, + "stashed": { + "description": "Header facets marked as stashed are initially not visible on the UI. Key users can add these header facets via key user adaptation.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "fragmentName", + "title" + ] + }, + "RequestGroupId": { + "enum": [ + "Decoration", + "Heroes", + "LongRunners", + "Workers" + ], + "type": "string" + }, + "ObjectPageCustomHeaderSectionFlexSettings": { + "type": "object", + "properties": { + "designtime": { + "$ref": "#/definitions/DesignTime", + "description": "Defines which settings are available for key user adaptation at design time.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "SectionPosition": { + "displayName": "Placement", + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "ObjectPageLayout": { + "description": "Page Layout", + "isViewNode": true, + "type": "object", + "properties": { + "sectionLayout": { + "$ref": "#/definitions/SectionLayoutType", + "description": "Defines the layout of the sections.\n- Page (default): In this mode, all the sections and subsections are added to the same page.\n- Tabs: In this mode, the sections are represented as tabs under the header facet.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/facfea09018d4376acaceddb7e3f03b6" + } + }, + "additionalProperties": false + }, + "SectionLayoutType": { + "enum": [ + "Page", + "Tabs" + ], + "type": "string" + }, + "VariantManagementTypeObjectPage": { + "enum": [ + "Control", + "None" + ], + "type": "string" + }, + "ObjectPageAnalyticalTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "AnalyticalTable", + "artifactType": "Manifest" + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "SelectType": { + "enum": [ + "multi", + "single" + ], + "type": "string" + }, + "CustomTableActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "requiresSelection": { + "description": "Indicates whether the action requires a selection of items.", + "artifactType": "Manifest", + "type": "boolean" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "CustomActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ObjectPageToolBarActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ObjectPageToolBarAction" + } + }, + "PersonalizationTypeOP": { + "type": "object", + "properties": { + "column": { + "description": "Defines whether the user can add and remove columns to a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "sort": { + "description": "Defines whether the user can sort a given table.", + "type": "boolean", + "artifactType": "Manifest" + }, + "filter": { + "description": "Defines whether the user can filter data of a given table.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "AnnotationPathAsObject": { + "type": "object", + "properties": { + "annotationPath": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "annotationPath" + ] + }, + "ObjectPageTableColumn": { + "description": "Table Column", + "isViewNode": true, + "type": "object", + "properties": { + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "Availability": { + "enum": [ + "Adaptation", + "Default", + "Hidden" + ], + "type": "string" + }, + "ObjectPageTableColumnAction": { + "description": "Inline Action for Object Page", + "isViewNode": true, + "type": "object", + "properties": { + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\nDefault: it will be shown by default in the table.\nAdaptation: it will initially not be shown in the table but be available via end user adaptation.\nHidden: the column is neither available in the table nor in adaptation.", + "artifactType": "Manifest" + }, + "widthIncludingColumnHeader": { + "description": "By default, the column width is calculated based on the type of the content. You can include the column header in the width calculation using the widthIncludingColumnHeader setting in the manifest.json.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "TableCustomColumnOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/PositionOP", + "description": "Defines the position of the column relative to the anchor column.", + "artifactType": "Manifest" + }, + "header": { + "description": "The header is shown on the table as header, as well as in the add/remove dialog.", + "i18nClassification": "COL: Custom column header text", + "artifactType": "Manifest", + "type": "string" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "artifactType": "Manifest", + "type": "string", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "template": { + "description": "Defines a target fragment.", + "artifactType": "Manifest", + "type": "string" + }, + "horizontalAlign": { + "$ref": "#/definitions/HorizontalAlign", + "description": "Aligns the header as well as the content horizontally.", + "artifactType": "Manifest" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\n- Default: it will be shown by default in the table.\n- Adaptation: it will initially not be shown in the table but be available via end user adaptation\n- Hidden: the column is neither available in the table nor in adaptation", + "artifactType": "Manifest" + }, + "properties": { + "description": "If provided and sorting for the table is enabled, the custom column header can be clicked.\nOnce clicked, a list of properties that can be sorted by are displayed.", + "artifactType": "Manifest", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "header", + "template" + ] + }, + "PositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another column to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/Placement", + "description": "Define the placement, either before or after the anchor column.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "Placement": { + "enum": [ + "After", + "Before" + ], + "type": "string" + }, + "HorizontalAlign": { + "enum": [ + "Begin", + "Center", + "End" + ], + "type": "string" + }, + "OperationGroupingMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "enum": [ + "ChangeSet", + "Isolated" + ], + "type": "string" + }, + "SelectionMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://help.sap.com/docs/SAPUI5/4a476671e9bd4e898445a16858d9cf24/116b5d82e8c545e2a56e1b51b8b0a9bd.html?#additional-features-in-sap-fiori-elements-for-odata-v4", + "enum": [ + "Auto", + "Multi", + "None", + "Single" + ], + "type": "string" + }, + "RowCountMode": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/api/sap.ui.mdc.enums.TableRowCountMode", + "enum": [ + "Auto", + "Fixed", + "Interactive" + ], + "type": "string" + }, + "ObjectPageGridTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "GridTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeInlineOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineCreationsRowsOPGridTable" + }, + { + "$ref": "#/definitions/TableCreationModeNewPageOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeExternalOPTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "TableCreationModeInlineOPTable": { + "description": "Inline creation mode", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "Inline", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "createAtEnd": { + "description": "Specifies if the new entry should be created at the top or bottom of a table when `creationMode` is set to `Inline`.\nThe default value is `false`.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false, + "defaultControlProperty": false + }, + "TableCreationModeInlineCreationsRowsOPGridTable": { + "description": "InlineCreationsRows creation mode for the grid table", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "InlineCreationRows", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false + }, + "TableCreationModeNewPageOPTable": { + "description": "NewPage creation mode", + "defaultControlProperty": true, + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "NewPage", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false + }, + "TableCreationModeCreationDialogOPTable": { + "description": "CreationDialog creation mode", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "CreationDialog", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "creationFields": { + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7fee938d7cba4bfd86810cfe6d011eb0" + } + }, + "additionalProperties": false + }, + "TableCreationModeExternalOPTable": { + "description": "External creation mode", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "External", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "outbound": { + "description": "The navigation target where the document is created when `creationMode` is set to `External`.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/5c2bc2ea8a7e482e968124959354d736" + } + }, + "additionalProperties": false + }, + "ObjectPageResponsiveTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "defaultControlProperty": true, + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "ResponsiveTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeInlineOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeNewPageOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeExternalOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineCreationsRowsOPResponsiveTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false + }, + "TableCreationModeInlineCreationsRowsOPResponsiveTable": { + "description": "InlineCreationsRows creation mode for the responsive table", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "InlineCreationRows", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "inlineCreationRowsHiddenInEditMode": { + "description": "Specifies if the new entry should be hidden when `creationMode` is set to `InlineCreationRows`. This only applies to responsive tables.\nThe default value is `false`.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + } + }, + "additionalProperties": false + }, + "ObjectPageTreeTableV4": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "TreeTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeNewPageOPTreeTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineOPTreeTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTreeTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/GenericColumnsOP" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string" + } + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "TableCreationModeNewPageOPTreeTable": { + "description": "NewPage creation mode for TreeTable", + "defaultControlProperty": true, + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are 'NewPage', 'Inline', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline.\n- CreationDialog: The creation is performed in a table. There is a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise, it is 'Inline'.", + "type": "string", + "const": "NewPage", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "createInPlace": { + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is `false`. When set to `false`, the new entry is placed as the first child below its parent.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + }, + "isCreateEnabled": { + "description": "Defines the extension point to control the enablement of the \"Create\" button or \"Create Menu\" buttons.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + } + }, + "additionalProperties": false + }, + "TableCreationModeInlineOPTreeTable": { + "description": "Inline creation mode for TreeTable", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are 'NewPage', 'Inline', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "Inline", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "createInPlace": { + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is `false`. When set to `false`, the new entry is placed as the first child below its parent.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + }, + "isCreateEnabled": { + "description": "Defines the extension point to control the enablement of the \"Create\" button or \"Create Menu\" buttons.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + } + }, + "additionalProperties": false, + "defaultControlProperty": false + }, + "TableCreationModeCreationDialogOPTreeTable": { + "description": "CreationDialog creation mode for TreeTable", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are 'NewPage', 'Inline', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "CreationDialog", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "creationFields": { + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.", + "type": "array", + "items": { + "type": "string" + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7fee938d7cba4bfd86810cfe6d011eb0" + }, + "createInPlace": { + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is `false`. When set to `false`, the new entry is placed as the first child below its parent.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + }, + "isCreateEnabled": { + "description": "Defines the extension point to control the enablement of the \"Create\" button or \"Create Menu\" buttons.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + } + }, + "additionalProperties": false + }, + "ObjectPageForm": { + "description": "Object Page Form", + "isViewNode": true, + "type": "object", + "properties": { + "fields": { + "$ref": "#/definitions/ObjectPageFormFields" + }, + "actions": { + "$ref": "#/definitions/ObjectPageFormActions" + } + }, + "additionalProperties": false + }, + "ObjectPageFormFields": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "ObjectPageFormActions": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/CustomFormActionOP" + }, + { + "$ref": "#/definitions/FormAction" + }, + { + "$ref": "#/definitions/ObjectPageFormActionGroup" + } + ] + } + }, + "CustomFormActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "FormAction": { + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationForm", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ActionAfterExecutionConfigurationForm": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ObjectPageFormActionGroup": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/FormAction" + } + }, + "ObjectPageCustomSubSectionFragment": { + "description": "Custom Sub Section", + "isViewNode": true, + "type": "object", + "properties": { + "fragmentName": { + "description": "The path to the XML template containing the section control.", + "artifactType": "Manifest", + "type": "string" + }, + "relatedFacet": { + "description": "Use the key of another section as a placement anchor.", + "artifactType": "Manifest", + "displayName": "Anchor", + "type": "string" + }, + "relativePosition": { + "$ref": "#/definitions/SectionPosition", + "description": "Define the placement, either before or after the anchor section.", + "artifactType": "Manifest" + }, + "title": { + "description": "The label of a custom section, preferably as an i18n key.", + "artifactType": "Manifest", + "i18nClassification": "TIT: Custom section title", + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "fragmentName", + "title" + ] + }, + "CustomSections": { + "description": "Custom Sections", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ObjectPageCustomSectionFragment" + } + }, + "ObjectPageCustomSectionFragment": { + "description": "Fragment", + "isViewNode": true, + "type": "object", + "properties": { + "fragmentName": { + "description": "The path to the XML template containing the section control.", + "artifactType": "Manifest", + "type": "string" + }, + "actions": { + "$ref": "#/definitions/ObjectPageCustomSectionActions" + }, + "relatedFacet": { + "description": "Use the key of another section as a placement anchor.", + "artifactType": "Manifest", + "displayName": "Anchor", + "type": "string", + "oneOf": [ + { + "const": "Travel", + "description": "Travel - Managed with Semantic Key" + }, + { + "const": "Booking", + "description": "Booking" + } + ] + }, + "relativePosition": { + "$ref": "#/definitions/SectionPosition", + "description": "Define the placement, either before or after the anchor section.", + "artifactType": "Manifest" + }, + "title": { + "description": "The label of a custom section, preferably as an i18n key.", + "artifactType": "Manifest", + "i18nClassification": "TIT: Custom section title", + "type": "string" + }, + "controls": { + "type": "object" + } + }, + "additionalProperties": false, + "required": [ + "fragmentName", + "title" + ] + }, + "ObjectPageCustomSectionActions": { + "description": "Actions", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/CustomSectionActionOP" + }, + "properties": {} + }, + "CustomSectionActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomSectionActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ] + }, + "CustomSectionActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string" + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "CustomFooterActionOP": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomFooterActionPositionOP", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ], + "isViewNode": true, + "description": "Custom Action" + }, + "CustomFooterActionPositionOP": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string", + "oneOf": [ + { + "const": "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createActiveTemplate", + "description": "createActiveTemplate" + }, + { + "const": "footeraction", + "description": "footeraction", + "custom": true + } + ] + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "FooterActionV4": { + "type": "object", + "properties": { + "afterExecution": { + "$ref": "#/definitions/ActionAfterExecutionConfigurationFooter", + "description": "Settings that control the behavior after creating a new entry.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "ActionAfterExecutionConfigurationFooter": { + "type": "object", + "properties": { + "navigateToInstance": { + "description": "Allows you to disable the navigation. By default, navigation is automatically triggered after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/2c65f07f44094012a511d6bd83f50f2d" + }, + "enableAutoScroll": { + "description": "Allows you to scroll to the newly created or changed item after you have performed an action.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false + }, + "Sections": { + "type": "object", + "properties": { + "@com.sap.vocabularies.UI.v1.Identification": { + "$ref": "#/definitions/ObjectPageSectionForm<@com.sap.vocabularies.UI.v1.Identification>", + "propertyIndex": 0 + }, + "_Booking::@com.sap.vocabularies.UI.v1.LineItem": { + "$ref": "#/definitions/ObjectPageSectionTableV4<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "propertyIndex": 1 + } + }, + "additionalProperties": { + "$ref": "#/definitions/ObjectPageCustomSectionFragment" + }, + "description": "Sections", + "isViewNode": true, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Facets" + }, + "ObjectPageHeaderAction": { + "type": "object", + "description": "Edit", + "additionalProperties": true, + "isViewNode": true, + "propertyIndex": 0, + "keys": [ + { + "name": "Action", + "value": "Edit" + } + ], + "actionType": "Standard", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Container/Travel/@com.sap.vocabularies.UI.v1.UpdateHidden" + }, + "ObjectPageHeaderAction": { + "type": "object", + "description": "Delete", + "additionalProperties": true, + "isViewNode": true, + "propertyIndex": 1, + "keys": [ + { + "name": "Action", + "value": "Delete" + } + ], + "actionType": "Standard", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Container/Travel/@com.sap.vocabularies.UI.v1.DeleteHidden" + }, + "ObjectPageHeaderAction": { + "type": "object", + "$ref": "#/definitions/ObjectPageHeaderAction", + "description": "Set To Booked", + "isViewNode": true, + "dataType": "DataFieldForAction", + "propertyIndex": 2, + "keys": [ + { + "name": "Action", + "value": "setToBooked" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "actionType": "Annotation", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/9" + }, + "ObjectPageHeaderAction": { + "type": "object", + "$ref": "#/definitions/ObjectPageHeaderAction", + "description": "Set To New", + "isViewNode": true, + "dataType": "DataFieldForAction", + "propertyIndex": 3, + "keys": [ + { + "name": "Action", + "value": "setToNew" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "actionType": "Annotation", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/10" + }, + "ObjectPageHeaderAction": { + "type": "object", + "$ref": "#/definitions/ObjectPageHeaderAction", + "description": "Check Travel", + "isViewNode": true, + "dataType": "DataFieldForAction", + "propertyIndex": 4, + "keys": [ + { + "name": "Action", + "value": "Check" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "actionType": "Annotation", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/11" + }, + "ObjectPageHeaderAction": { + "type": "object", + "$ref": "#/definitions/ObjectPageHeaderAction", + "description": "Create new Booking", + "isViewNode": true, + "dataType": "DataFieldForAction", + "propertyIndex": 5, + "keys": [ + { + "name": "Action", + "value": "createBookingDraft" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "actionType": "Annotation", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/12" + }, + "ObjectPageHeaderAction": { + "type": "object", + "$ref": "#/definitions/ObjectPageHeaderAction", + "description": "Deduct Discount", + "isViewNode": true, + "dataType": "DataFieldForAction", + "propertyIndex": 6, + "keys": [ + { + "name": "Action", + "value": "deductDiscount" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "actionType": "Annotation", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/13" + }, + "ObjectPageHeaderAction": { + "type": "object", + "$ref": "#/definitions/ObjectPageHeaderAction", + "description": "Activate", + "isViewNode": true, + "dataType": "DataFieldForAction", + "propertyIndex": 7, + "keys": [ + { + "name": "Action", + "value": "Activate" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "actionType": "Annotation", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/14" + }, + "ObjectPageSectionForm<@com.sap.vocabularies.UI.v1.Identification>": { + "type": "object", + "properties": { + "form": { + "$ref": "#/definitions/SectionForm" + } + }, + "additionalProperties": false, + "title": "Facet ID: Travel", + "keys": [ + { + "name": "ID", + "value": "Travel" + } + ], + "description": "Travel - Managed with Semantic Key", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Facets/0", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "isViewNode": true + }, + "SectionForm": { + "type": "object", + "properties": { + "fields": { + "$ref": "#/definitions/SectionFields" + } + }, + "description": "Form", + "additionalProperties": false, + "keys": [ + { + "name": "Target", + "value": "Identification" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "isViewNode": true, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification" + }, + "SectionFields": { + "type": "object", + "properties": { + "DataField::TravelID": { + "$ref": "#/definitions/TravelType::Identification::DataField::TravelID", + "propertyIndex": 0 + }, + "DataField::AgencyID": { + "$ref": "#/definitions/TravelType::Identification::DataField::AgencyID", + "propertyIndex": 1 + }, + "DataField::CustomerID": { + "$ref": "#/definitions/TravelType::Identification::DataField::CustomerID", + "propertyIndex": 2 + }, + "DataField::BeginDate": { + "$ref": "#/definitions/TravelType::Identification::DataField::BeginDate", + "propertyIndex": 3 + }, + "DataField::EndDate": { + "$ref": "#/definitions/TravelType::Identification::DataField::EndDate", + "propertyIndex": 4 + }, + "DataField::BookingFee": { + "$ref": "#/definitions/TravelType::Identification::DataField::BookingFee", + "propertyIndex": 5 + }, + "DataField::TotalPrice": { + "$ref": "#/definitions/TravelType::Identification::DataField::TotalPrice", + "propertyIndex": 6 + }, + "DataField::Memo": { + "$ref": "#/definitions/TravelType::Identification::DataField::Memo", + "propertyIndex": 7 + }, + "DataField::Status": { + "$ref": "#/definitions/TravelType::Identification::DataField::Status", + "propertyIndex": 8 + } + }, + "description": "Fields", + "additionalProperties": false, + "isViewNode": true + }, + "TravelType::Identification::DataField::TravelID": { + "type": "object", + "properties": {}, + "description": "TravelID", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "TravelID" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/0", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "String" + }, + "TravelType::Identification::DataField::AgencyID": { + "type": "object", + "properties": {}, + "description": "AgencyID", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "AgencyID" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/1", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "String" + }, + "TravelType::Identification::DataField::CustomerID": { + "type": "object", + "properties": {}, + "description": "Kunden ID", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "CustomerID" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/2", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "String" + }, + "TravelType::Identification::DataField::BeginDate": { + "type": "object", + "properties": {}, + "description": "BeginDate", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "BeginDate" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/3", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "Date" + }, + "TravelType::Identification::DataField::EndDate": { + "type": "object", + "properties": {}, + "description": "EndDate", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "EndDate" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/4", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "Date" + }, + "TravelType::Identification::DataField::BookingFee": { + "type": "object", + "properties": {}, + "description": "BookingFee", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "BookingFee" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/5", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "Decimal" + }, + "TravelType::Identification::DataField::TotalPrice": { + "type": "object", + "properties": {}, + "description": "TotalPrice", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "TotalPrice" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/6", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "Decimal" + }, + "TravelType::Identification::DataField::Memo": { + "type": "object", + "properties": {}, + "description": "Comment", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "Memo" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/7", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "String" + }, + "TravelType::Identification::DataField::Status": { + "type": "object", + "properties": {}, + "description": "Status", + "additionalProperties": false, + "keys": [ + { + "name": "Value", + "value": "Status" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/8", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "isViewNode": true, + "dataType": "String" + }, + "TravelType::Identification::DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToBooked::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "type": "object", + "description": "Set To Booked", + "additionalProperties": false, + "keys": [ + { + "name": "Action", + "value": "TravelType)" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToBooked(com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/9", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction", + "isViewNode": true, + "dataType": "DataFieldForAction", + "$ref": "#/definitions/FormAction" + }, + "TravelType::Identification::DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToNew::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "type": "object", + "description": "Set To New", + "additionalProperties": false, + "keys": [ + { + "name": "Action", + "value": "TravelType)" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.setToNew(com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/10", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction", + "isViewNode": true, + "dataType": "DataFieldForAction", + "$ref": "#/definitions/FormAction" + }, + "TravelType::Identification::DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Check::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "type": "object", + "description": "Check Travel", + "additionalProperties": false, + "keys": [ + { + "name": "Action", + "value": "TravelType)" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Check(com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/11", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction", + "isViewNode": true, + "dataType": "DataFieldForAction", + "$ref": "#/definitions/FormAction" + }, + "TravelType::Identification::DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createBookingDraft::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "type": "object", + "description": "Create new Booking", + "additionalProperties": false, + "keys": [ + { + "name": "Action", + "value": "TravelType)" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createBookingDraft(com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/12", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction", + "isViewNode": true, + "dataType": "DataFieldForAction", + "$ref": "#/definitions/FormAction" + }, + "TravelType::Identification::DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.deductDiscount::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType": { + "type": "object", + "description": "Deduct Discount", + "additionalProperties": false, + "keys": [ + { + "name": "Action", + "value": "TravelType)" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.deductDiscount(com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/13", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction", + "isViewNode": true, + "dataType": "DataFieldForAction", + "$ref": "#/definitions/FormAction" + }, + "TravelType::Identification::DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.Activate": { + "type": "object", + "description": "Activate", + "additionalProperties": false, + "keys": [ + { + "name": "Action", + "value": "Activate" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/14", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction", + "isViewNode": true, + "dataType": "DataFieldForAction", + "$ref": "#/definitions/FormAction" + }, + "TravelType::Identification::DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createActiveTemplate": { + "type": "object", + "description": "createActiveTemplate", + "additionalProperties": false, + "keys": [ + { + "name": "Action", + "value": "createActiveTemplate" + } + ], + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/15", + "annotationType": "com.sap.vocabularies.UI.v1.DataFieldForAction", + "isViewNode": true, + "dataType": "DataFieldForAction", + "$ref": "#/definitions/FormAction" + }, + "ObjectPageSectionTableV4<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Booking", + "isViewNode": true, + "type": "object", + "properties": { + "table": { + "anyOf": [ + { + "$ref": "#/definitions/ObjectPageAnalyticalTableV4<_Booking::@com.sap.vocabularies.UI.v1.LineItem>" + }, + { + "$ref": "#/definitions/ObjectPageGridTableV4<_Booking::@com.sap.vocabularies.UI.v1.LineItem>" + }, + { + "$ref": "#/definitions/ObjectPageResponsiveTableV4<_Booking::@com.sap.vocabularies.UI.v1.LineItem>" + }, + { + "$ref": "#/definitions/ObjectPageTreeTableV4<_Booking::@com.sap.vocabularies.UI.v1.LineItem>" + } + ] + } + }, + "additionalProperties": false, + "title": "Facet ID: Booking", + "keys": [ + { + "name": "ID", + "value": "Booking" + } + ], + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Facets/1", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType" + }, + "ObjectPageResponsiveTableV4<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "defaultControlProperty": true, + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "ResponsiveTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeInlineOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeNewPageOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTable<_Booking::@com.sap.vocabularies.UI.v1.LineItem>" + }, + { + "$ref": "#/definitions/TableCreationModeExternalOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineCreationsRowsOPResponsiveTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/_Booking::@com.sap.vocabularies.UI.v1.LineItem" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingID", + "BookingDate", + "CustomerID", + "AirlineID", + "ConnectionID", + "FlightDate", + "FlightPrice", + "CurrencyCode" + ] + }, + "uniqueItems": true + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingID", + "BookingDate", + "CustomerID", + "AirlineID", + "ConnectionID", + "FlightDate", + "FlightPrice", + "CurrencyCode" + ] + }, + "uniqueItems": true + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType" + }, + "ObjectPageAnalyticalTableV4<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "AnalyticalTable", + "artifactType": "Manifest" + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/_Booking::@com.sap.vocabularies.UI.v1.LineItem" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingID", + "BookingDate", + "CustomerID", + "AirlineID", + "ConnectionID", + "FlightDate", + "FlightPrice", + "CurrencyCode" + ] + }, + "uniqueItems": true + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingID", + "BookingDate", + "CustomerID", + "AirlineID", + "ConnectionID", + "FlightDate", + "FlightPrice", + "CurrencyCode" + ] + }, + "uniqueItems": true + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType" + }, + "ObjectPageGridTableV4<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "GridTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeInlineOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineCreationsRowsOPGridTable" + }, + { + "$ref": "#/definitions/TableCreationModeNewPageOPTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTable<_Booking::@com.sap.vocabularies.UI.v1.LineItem>" + }, + { + "$ref": "#/definitions/TableCreationModeExternalOPTable" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/_Booking::@com.sap.vocabularies.UI.v1.LineItem" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingID", + "BookingDate", + "CustomerID", + "AirlineID", + "ConnectionID", + "FlightDate", + "FlightPrice", + "CurrencyCode" + ] + }, + "uniqueItems": true + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingID", + "BookingDate", + "CustomerID", + "AirlineID", + "ConnectionID", + "FlightDate", + "FlightPrice", + "CurrencyCode" + ] + }, + "uniqueItems": true + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType" + }, + "ObjectPageTreeTableV4<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Table", + "isViewNode": true, + "controlProperty": "type", + "type": "object", + "properties": { + "type": { + "description": "Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.", + "type": "string", + "const": "TreeTable", + "artifactType": "Manifest" + }, + "creationMode": { + "description": "Defines the page behavior when a new record is created.", + "anyOf": [ + { + "$ref": "#/definitions/TableCreationModeNewPageOPTreeTable" + }, + { + "$ref": "#/definitions/TableCreationModeInlineOPTreeTable" + }, + { + "$ref": "#/definitions/TableCreationModeCreationDialogOPTreeTable<_Booking::@com.sap.vocabularies.UI.v1.LineItem>" + } + ] + }, + "enableFullScreen": { + "description": "Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.", + "type": "boolean", + "artifactType": "Manifest" + }, + "enablePaste": { + "description": "In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "toolBar": { + "$ref": "#/definitions/ObjectPageToolBar<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Tool Bar" + }, + "personalization": { + "$ref": "#/definitions/PersonalizationTypeOP", + "description": "Defines the personalization mode which is only effective if the variant management on the page is set to `Page` or `Control`.\nBy default all table settings are enabled. You can change this for the different parts of the table by setting the properties 'Column', 'Sort' and 'Filter' accordingly.\nOmitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.", + "artifactType": "Manifest" + }, + "quickVariantSelection": { + "$ref": "#/definitions/QuickVariantSelectionV4OP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "With quickVariantSelection, you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.", + "artifactType": "Manifest" + }, + "columns": { + "$ref": "#/definitions/_Booking::@com.sap.vocabularies.UI.v1.LineItem" + }, + "enableMassEdit": { + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.", + "anyOf": [ + { + "type": "object", + "properties": { + "visibleFields": { + "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingID", + "BookingDate", + "CustomerID", + "AirlineID", + "ConnectionID", + "FlightDate", + "FlightPrice", + "CurrencyCode" + ] + }, + "uniqueItems": true + }, + "ignoredFields": { + "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingID", + "BookingDate", + "CustomerID", + "AirlineID", + "ConnectionID", + "FlightDate", + "FlightPrice", + "CurrencyCode" + ] + }, + "uniqueItems": true + }, + "operationGroupingMode": { + "$ref": "#/definitions/OperationGroupingMode", + "description": "Define how the changes using mass edit should be applied. The default mode for mass editing is 'ChangeSet' on the Object Page and 'Isolated' in the List Report.\n\n- ChangeSet: Grouped for all objects within the same request.\n- Isolated: Separately for each object (as an individual OData change set in the same request)." + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ] + }, + "selectionMode": { + "$ref": "#/definitions/SelectionMode", + "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.", + "artifactType": "Manifest" + }, + "selectAll": { + "description": "The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.", + "type": "boolean", + "artifactType": "Manifest" + }, + "selectionLimit": { + "description": "You can define how many items can be selected at a time using the selectionLimit.", + "type": "number", + "artifactType": "Manifest" + }, + "enableExport": { + "description": "Defines whether the Export button is displayed in the table toolbar. The default value is true.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/4bab6f2043814257974b52d4dafe1dcd" + }, + "condensedTableLayout": { + "description": "Determines whether the content density for ui.table is condensed.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/f3cc057e405c4fd58ee2ed42c557797c" + }, + "hierarchyQualifier": { + "description": "Leading property that decides between either a recursive hierarchy or data aggregation.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7f844f1021cd4791b8f7408eac7c1cec" + }, + "widthIncludingColumnHeader": { + "description": "Determines whether the column header is included in the column width calculation. By default, the column width is calculated based on the type of the content.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "disableCopyToClipboard": { + "description": "Determines the visibility of the Copy to Clipboard button. By default, the Copy to Clipboard button is displayed in the table toolbar if the selection mode is configured.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412" + }, + "rowCountMode": { + "$ref": "#/definitions/RowCountMode", + "description": "Defines how the table handles the visible rows. Does not apply to responsive tables. Allowed values are Auto and Fixed.\n - Fixed: The table always has as many rows as defined in the rowCount property.\n - Auto (default): The number of rows is changed by the table automatically. It will then adjust its row count to the space it is allowed to cover (limited by the surrounding container) but it cannot have less than defined in the rowCount property.\n - Interactive: The user can change the number of displayed rows by dragging a resize handle.", + "artifactType": "Manifest" + }, + "rowCount": { + "description": "Number of rows to be displayed in the table.", + "minimum": 0, + "type": "number", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem", + "target": "com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType" + }, + "QuickVariantSelectionV4OP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "paths": { + "description": "List of annotation paths referring to SelectionVariant annotations.", + "type": "array", + "items": { + "$ref": "#/definitions/AnnotationPathAsObject<_Booking::@com.sap.vocabularies.UI.v1.LineItem>" + }, + "artifactType": "Manifest" + }, + "hideTableTitle": { + "description": "You can hide the table and display only the titles of the tabs. To do so, add the hideTableTitle option and set it to true.", + "type": "boolean", + "artifactType": "Manifest" + }, + "showCounts": { + "description": "You can show the counts of entries of each view. To do so, add the showCounts option and set it to true.", + "type": "boolean", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "paths" + ] + }, + "AnnotationPathAsObject<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "annotationPath": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "annotationPath" + ] + }, + "_Booking::@com.sap.vocabularies.UI.v1.LineItem": { + "type": "object", + "properties": { + "DataField::BookingID": { + "description": "BookingID", + "$ref": "#/definitions/ObjectPageTableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem/0", + "propertyIndex": 0, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "BookingID" + } + ] + }, + "DataField::BookingDate": { + "description": "BookingDate", + "$ref": "#/definitions/ObjectPageTableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem/1", + "propertyIndex": 1, + "dataType": "Date", + "keys": [ + { + "name": "Value", + "value": "BookingDate" + } + ] + }, + "DataField::CustomerID": { + "description": "Kunden ID", + "$ref": "#/definitions/ObjectPageTableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem/2", + "propertyIndex": 2, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "CustomerID" + } + ] + }, + "DataField::AirlineID": { + "description": "AirlineID", + "$ref": "#/definitions/ObjectPageTableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem/3", + "propertyIndex": 3, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "AirlineID" + } + ] + }, + "DataField::ConnectionID": { + "description": "ConnectionID", + "$ref": "#/definitions/ObjectPageTableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem/4", + "propertyIndex": 4, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "ConnectionID" + } + ] + }, + "DataField::FlightDate": { + "description": "FlightDate", + "$ref": "#/definitions/ObjectPageTableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem/5", + "propertyIndex": 5, + "dataType": "Date", + "keys": [ + { + "name": "Value", + "value": "FlightDate" + } + ] + }, + "DataField::FlightPrice": { + "description": "FlightPrice", + "$ref": "#/definitions/ObjectPageTableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem/6", + "propertyIndex": 6, + "dataType": "Decimal", + "keys": [ + { + "name": "Value", + "value": "FlightPrice" + } + ] + }, + "DataField::CurrencyCode": { + "description": "CurrencyCode", + "$ref": "#/definitions/ObjectPageTableColumn", + "annotationType": "com.sap.vocabularies.UI.v1.DataField", + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem/7", + "propertyIndex": 7, + "dataType": "String", + "keys": [ + { + "name": "Value", + "value": "CurrencyCode" + } + ] + }, + "Cc1": { + "$ref": "#/definitions/TableCustomColumnOP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "cc1", + "keys": [ + { + "name": "Key", + "value": "Cc1" + } + ], + "actionType": "Custom", + "propertyIndex": 8 + } + }, + "description": "Columns", + "isViewNode": true, + "additionalProperties": { + "$ref": "#/definitions/TableCustomColumnOP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>" + } + }, + "TableCustomColumnOP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/PositionOP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Defines the position of the column relative to the anchor column.", + "artifactType": "Manifest" + }, + "header": { + "description": "The header is shown on the table as header, as well as in the add/remove dialog.", + "i18nClassification": "COL: Custom column header text", + "artifactType": "Manifest", + "type": "string" + }, + "width": { + "description": "A string type that represents CSS size values.\nRefer to https://ui5.sap.com/api/sap.ui.core.CSSSize", + "artifactType": "Manifest", + "type": "string", + "descriptionSrcURL": "https://ui5.sap.com/api/sap.ui.core.CSSSize" + }, + "template": { + "description": "Defines a target fragment.", + "artifactType": "Manifest", + "type": "string" + }, + "horizontalAlign": { + "$ref": "#/definitions/HorizontalAlign", + "description": "Aligns the header as well as the content horizontally.", + "artifactType": "Manifest" + }, + "availability": { + "$ref": "#/definitions/Availability", + "description": "Defines where the column should be shown.\n- Default: it will be shown by default in the table.\n- Adaptation: it will initially not be shown in the table but be available via end user adaptation\n- Hidden: the column is neither available in the table nor in adaptation", + "artifactType": "Manifest" + }, + "properties": { + "description": "If provided and sorting for the table is enabled, the custom column header can be clicked.\nOnce clicked, a list of properties that can be sorted by are displayed.", + "artifactType": "Manifest", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BookingID", + "BookingDate", + "CustomerID", + "AirlineID", + "ConnectionID", + "FlightDate", + "FlightPrice", + "CurrencyCode" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "header", + "template" + ], + "isViewNode": true, + "description": "Custom Column" + }, + "ObjectPageToolBar<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Toolbar", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/Actions<_Booking::@com.sap.vocabularies.UI.v1.LineItem>" + } + }, + "additionalProperties": false, + "required": [ + "actions" + ], + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.BookingType/@com.sap.vocabularies.UI.v1.LineItem" + }, + "Actions<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "Actions", + "isViewNode": true, + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/CustomTableActionOP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>" + }, + "properties": { + "custom4": { + "$ref": "#/definitions/CustomTableActionOP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "custom4", + "keys": [ + { + "name": "Key", + "value": "custom4" + } + ], + "actionType": "Custom", + "propertyIndex": 0 + } + } + }, + "CustomTableActionOP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "position": { + "$ref": "#/definitions/CustomActionPositionOP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>", + "description": "Defines the position of the action relative to the anchor action.", + "artifactType": "Manifest" + }, + "requiresSelection": { + "description": "Indicates whether the action requires a selection of items.", + "artifactType": "Manifest", + "type": "boolean" + }, + "text": { + "description": "The text that is displayed on the button (typically a binding to an i18n entry).", + "i18nClassification": "COL: Custom action text", + "artifactType": "Manifest", + "type": "string" + }, + "press": { + "description": "Relevant for extension actions; allows the definition of a target action handler.", + "artifactType": "Manifest", + "type": "string" + }, + "visible": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action button is visible.", + "artifactType": "Manifest" + }, + "enabled": { + "pattern": "^(false|true)$|^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\]\\/:=.]+}$", + "anyOf": [ + { + "enum": [ + false, + true, + "{ui>/isEditable}", + "{= !${ui>/isEditable}}" + ] + }, + { + "type": "string" + } + ], + "description": "Defines if the action is enabled. The default value is true.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "press", + "text" + ], + "isViewNode": true, + "description": "Custom Action" + }, + "TableCreationModeCreationDialogOPTable<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "CreationDialog creation mode", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the table.\nAllowed values are 'NewPage', 'Inline', 'InlineCreationsRows', 'External', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline\n- InlineCreationsRows: The creation is performed inline with an empty row\n- External: The creation is performed in a different application which is specified using the `outbound` parameter.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "CreationDialog", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "creationFields": { + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.", + "type": "array", + "items": { + "type": "string", + "oneOf": [ + { + "const": "BookingID", + "description": "BookingID", + "type": "Field" + }, + { + "const": "BookingDate", + "description": "BookingDate", + "type": "Field" + }, + { + "const": "CustomerID", + "description": "Kunden ID", + "type": "Field" + }, + { + "const": "AirlineID", + "description": "AirlineID", + "type": "Field" + }, + { + "const": "ConnectionID", + "description": "ConnectionID", + "type": "Field" + }, + { + "const": "FlightDate", + "description": "FlightDate", + "type": "Field" + }, + { + "const": "FlightPrice", + "description": "FlightPrice", + "type": "Field" + }, + { + "const": "CurrencyCode", + "description": "CurrencyCode", + "type": "Field" + } + ] + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7fee938d7cba4bfd86810cfe6d011eb0", + "uniqueItems": true + } + }, + "additionalProperties": false + }, + "TableCreationModeCreationDialogOPTreeTable<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "description": "CreationDialog creation mode for TreeTable", + "controlProperty": "name", + "type": "object", + "properties": { + "name": { + "description": "Defines the creation mode to be used by the tree table.\nAllowed values are 'NewPage', 'Inline', or 'CreationDialog'.\n\n- NewPage: The created document is shown in a new page, depending on whether 'Sync', 'Async', or 'Deferred' is specified in the metadata.\n- Inline: The creation is performed inline.\n- CreationDialog: The creation is performed in the table using a dialog which allows you to specify some initial property values which are listed in 'creationFields'.\n\nIf the 'name' property is not set:\nIf 'navigation' is defined, the default value is 'NewPage'. Otherwise it is 'Inline'.", + "type": "string", + "const": "CreationDialog", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/cfb04f0c58e7409992feb4c91aa9410b" + }, + "creationFields": { + "description": "Defines the list of properties that will be displayed in the creation dialog, when the creation mode is set to 'CreationDialog'.\nThe value is a comma-separated list of property names.", + "type": "array", + "items": { + "type": "string", + "oneOf": [ + { + "const": "BookingID", + "description": "BookingID", + "type": "Field" + }, + { + "const": "BookingDate", + "description": "BookingDate", + "type": "Field" + }, + { + "const": "CustomerID", + "description": "Kunden ID", + "type": "Field" + }, + { + "const": "AirlineID", + "description": "AirlineID", + "type": "Field" + }, + { + "const": "ConnectionID", + "description": "ConnectionID", + "type": "Field" + }, + { + "const": "FlightDate", + "description": "FlightDate", + "type": "Field" + }, + { + "const": "FlightPrice", + "description": "FlightPrice", + "type": "Field" + }, + { + "const": "CurrencyCode", + "description": "CurrencyCode", + "type": "Field" + } + ] + }, + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7fee938d7cba4bfd86810cfe6d011eb0", + "uniqueItems": true + }, + "createInPlace": { + "description": "Specifies if the new entry should be placed at the position computed by the backend (e.g. taking sorting into account).\nThe default value is `false`. When set to `false`, the new entry is placed as the first child below its parent.", + "type": "boolean", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + }, + "isCreateEnabled": { + "description": "Defines the extension point to control the enablement of the \"Create\" button or \"Create Menu\" buttons.", + "type": "string", + "artifactType": "Manifest", + "descriptionSrcURL": "https://ui5.sap.com/#/topic/7cf7a31fd1ee490ab816ecd941bd2f1f" + } + }, + "additionalProperties": false + }, + "PositionOP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another column to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string", + "enum": [ + "DataField::BookingID", + "DataField::BookingDate", + "DataField::CustomerID", + "DataField::AirlineID", + "DataField::ConnectionID", + "DataField::FlightDate", + "DataField::FlightPrice", + "DataField::CurrencyCode", + "Cc1" + ] + }, + "placement": { + "$ref": "#/definitions/Placement", + "description": "Define the placement, either before or after the anchor column.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "CustomActionPositionOP<_Booking::@com.sap.vocabularies.UI.v1.LineItem>": { + "type": "object", + "properties": { + "anchor": { + "description": "The key of another action to be used as placement anchor.", + "artifactType": "Manifest", + "type": "string", + "oneOf": [ + { + "const": "custom4", + "description": "custom4", + "custom": true + } + ] + }, + "placement": { + "$ref": "#/definitions/ActionPlacement", + "description": "Define the placement, either before or after the anchor action.", + "artifactType": "Manifest" + } + }, + "additionalProperties": false, + "required": [ + "placement" + ] + }, + "ObjectPageFooter": { + "description": "Footer", + "isViewNode": true, + "type": "object", + "properties": { + "actions": { + "$ref": "#/definitions/FooterActions" + } + }, + "additionalProperties": false + }, + "FooterActions": { + "type": "object", + "properties": { + "DataFieldForAction::com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.createActiveTemplate": { + "$ref": "#/definitions/ObjectPageFooterAction", + "propertyIndex": 0 + }, + "footeraction": { + "$ref": "#/definitions/CustomFooterActionOP", + "description": "footeraction", + "keys": [ + { + "name": "Key", + "value": "footeraction" + } + ], + "actionType": "Custom", + "propertyIndex": 1 + } + }, + "description": "Actions", + "additionalProperties": { + "$ref": "#/definitions/CustomFooterActionOP" + }, + "isViewNode": true, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification" + }, + "ObjectPageFooterAction": { + "type": "object", + "$ref": "#/definitions/FooterActionV4", + "description": "createActiveTemplate", + "isViewNode": true, + "actionType": "Annotation", + "propertyIndex": 0, + "annotationPath": "/com.sap.gateway.srvd.dmo.sd_travel_mdsk.v0001.TravelType/@com.sap.vocabularies.UI.v1.Identification/15" + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} diff --git a/packages/project-analyser/test/io/annotations.test.ts b/packages/project-analyser/test/io/annotations.test.ts new file mode 100644 index 00000000000..3ec08fe53ec --- /dev/null +++ b/packages/project-analyser/test/io/annotations.test.ts @@ -0,0 +1,109 @@ +import path from 'node:path'; +import { tmpdir } from 'node:os'; +import { promises as fs } from 'node:fs'; +import type { Logger } from '@sap-ux/logger'; + +jest.mock('fast-glob', () => jest.fn()); +import fg from 'fast-glob'; + +const realFastGlob: any = jest.requireActual('fast-glob'); + +import { loadAnnotationDocuments } from '../../src/io/annotations'; + +describe('loadAnnotationDocuments', () => { + let tempDir: string; + + beforeEach(async () => { + (fg as unknown as jest.Mock).mockImplementation((pattern: any, options: any) => realFastGlob(pattern, options)); + tempDir = await fs.mkdtemp(path.join(tmpdir(), 'project-analyser-')); + }); + + afterEach(async () => { + if (tempDir) { + await fs.rm(tempDir, { recursive: true, force: true }); + } + }); + + it('returns annotation documents with inferred formats', async () => { + const annotationsDir = path.join(tempDir, 'annotations'); + await fs.mkdir(annotationsDir, { recursive: true }); + + const fixtures = [ + { filename: 'travel.xml', content: '', format: 'xml' }, + { filename: 'travel.json', content: '{ "annotations": [] }', format: 'json' }, + { filename: 'travel.cds', content: 'annotate Travel with {};', format: 'cds' } + ] as const; + + for (const { filename, content } of fixtures) { + await fs.writeFile(path.join(annotationsDir, filename), content, 'utf8'); + } + + const documents = await loadAnnotationDocuments({ appPath: tempDir }); + + expect(documents).toHaveLength(fixtures.length); + for (const fixture of fixtures) { + const matchingDoc = documents.find((doc) => doc.path === path.join(annotationsDir, fixture.filename)); + expect(matchingDoc).toEqual( + expect.objectContaining({ + content: fixture.content, + format: fixture.format + }) + ); + } + }); + + it('filters out files that cannot be read', async () => { + const annotationsDir = path.join(tempDir, 'annotations'); + await fs.mkdir(annotationsDir, { recursive: true }); + + const goodFile = path.join(annotationsDir, 'good.xml'); + const badFile = path.join(annotationsDir, 'bad.xml'); + await fs.writeFile(goodFile, '', 'utf8'); + await fs.writeFile(badFile, '', 'utf8'); + + const originalReadFile = fs.readFile; + const readFileSpy = jest.spyOn(fs, 'readFile').mockImplementation(async (filePath: any, options: any) => { + if (typeof filePath === 'string' && filePath === badFile) { + throw new Error('read failure'); + } + return originalReadFile.call(fs, filePath, options); + }); + + try { + const documents = await loadAnnotationDocuments({ appPath: tempDir }); + + expect(documents).toHaveLength(1); + expect(documents[0]).toEqual( + expect.objectContaining({ + path: goodFile, + format: 'xml' + }) + ); + } finally { + readFileSpy.mockRestore(); + } + }); + + it('logs a debug message and returns empty array when globbing fails', async () => { + const logger = { + debug: jest.fn(), + info: jest.fn(), + warn: jest.fn(), + error: jest.fn(), + log: jest.fn(), + add: jest.fn().mockReturnThis(), + remove: jest.fn().mockReturnThis(), + transports: jest.fn().mockReturnValue([]), + child: jest.fn().mockReturnThis() + } as unknown as Logger; + + (fg as unknown as jest.Mock).mockImplementation(() => { + throw new Error('glob failure'); + }); + + const documents = await loadAnnotationDocuments({ appPath: tempDir }, logger); + + expect(documents).toEqual([]); + expect(logger.debug).toHaveBeenCalledWith(expect.stringContaining('Unable to load annotations directory')); + }); +}); diff --git a/packages/project-analyser/test/loadSpecification.test.ts b/packages/project-analyser/test/loadSpecification.test.ts new file mode 100644 index 00000000000..68c3292f4e2 --- /dev/null +++ b/packages/project-analyser/test/loadSpecification.test.ts @@ -0,0 +1,23 @@ +import { getSpecification } from './uxSpecificationSchemaLoader'; + +describe('load specification', () => { + it('returns contents of a specification json files sample', async () => { + const result = getSpecification('./test/fixtures/lrop-v4'); + expect(result).toBeDefined(); + expect(result.schemas).toBeDefined(); + expect(result.pages).toBeDefined(); + + expect(result.schemas.App).toBeDefined(); + expect(result.schemas.BuildingBlocks).toBeDefined(); + expect(result.schemas.ListReport).toBeDefined(); + expect(result.schemas.ListReport_TravelList).toBeDefined(); + expect(result.schemas.ObjectPage).toBeDefined(); + expect(result.schemas.ObjectPage_BookingObjectPage).toBeDefined(); + expect(result.schemas.ObjectPage_TravelObjectPage).toBeDefined(); + + expect(result.pages.app).toBeDefined(); + expect(result.pages.BookingObjectPage).toBeDefined(); + expect(result.pages.TravelList).toBeDefined(); + expect(result.pages.TravelObjectPage).toBeDefined(); + }); +}); diff --git a/packages/project-analyser/test/uxSpecificationSchemaLoader.ts b/packages/project-analyser/test/uxSpecificationSchemaLoader.ts new file mode 100644 index 00000000000..5b831697d47 --- /dev/null +++ b/packages/project-analyser/test/uxSpecificationSchemaLoader.ts @@ -0,0 +1,96 @@ +import { readFileSync, readdirSync, existsSync } from 'node:fs'; +import { join, extname, basename } from 'node:path'; + +/* Temporary solution until specification package implements API */ + +type AppSpecification = { + schemas: Record; + pages: Record; +}; + +const schemasFolder = 'schemas'; +const pagesFolder = 'pages'; + +/** + * Loads all JSON files from a specified folder and returns their parsed content. + * + * @param folderPath - Path to the folder containing JSON files + * @returns Object with filename (without extension) as key and parsed JSON content as value + */ +export function getSpecification(folderPath: string): AppSpecification { + const result: AppSpecification = { + schemas: {}, + pages: {} + }; + + // Check if folder exists + if (!existsSync(folderPath)) { + throw new Error(`Folder does not exist: ${folderPath}`); + } + + // Check if schemas and pages folders exist + const schemasPath = join(folderPath, schemasFolder); + const pagesPath = join(folderPath, pagesFolder); + + if (!existsSync(schemasPath)) { + throw new Error(`Schemas folder does not exist: ${schemasPath}`); + } + + if (!existsSync(pagesPath)) { + throw new Error(`Pages folder does not exist: ${pagesPath}`); + } + + // Read JSON files directly from each folder + const schemaFiles = readdirSync(schemasPath).filter((file: string) => extname(file).toLowerCase() === '.json'); + const pageFiles = readdirSync(pagesPath).filter((file: string) => extname(file).toLowerCase() === '.json'); + + // Process schema files + for (const file of schemaFiles) { + const filePath = join(schemasPath, file); + const fileName = basename(file, '.json'); + + try { + const fileContent = readFileSync(filePath, 'utf8'); + const parsedContent = JSON.parse(fileContent) as Record; + result.schemas[fileName] = parsedContent; + } catch (error) { + throw new Error( + `Error processing schema file ${file}: ${error instanceof Error ? error.message : 'Unknown error'}` + ); + } + } + + // Process page files + for (const file of pageFiles) { + const filePath = join(pagesPath, file); + const fileName = basename(file, '.json'); + + try { + const fileContent = readFileSync(filePath, 'utf8'); + const parsedContent = JSON.parse(fileContent) as Record; + result.pages[fileName] = parsedContent; + } catch (error) { + throw new Error( + `Error processing page file ${file}: ${error instanceof Error ? error.message : 'Unknown error'}` + ); + } + } + + return result; +} + +// Example usage: +// const specifications = getSpecification('./sample1_pps'); +// console.log("Loaded specifications:", Object.keys(specifications)); +// +// Expected result format: +// { +// schemas: { +// "schemaFile1": { ... parsed JSON content from /schemas/schemaFile1.json ... }, +// "schemaFile2": { ... parsed JSON content from /schemas/schemaFile2.json ... } +// }, +// pages: { +// "pageFile1": { ... parsed JSON content from /pages/pageFile1.json ... }, +// "pageFile2": { ... parsed JSON content from /pages/pageFile2.json ... } +// } +// } diff --git a/packages/project-analyser/tsconfig.eslint.json b/packages/project-analyser/tsconfig.eslint.json new file mode 100644 index 00000000000..bef7674caa0 --- /dev/null +++ b/packages/project-analyser/tsconfig.eslint.json @@ -0,0 +1,5 @@ +{ + "extends": "./tsconfig.json", + "include": ["src", "test", ".eslintrc.js"] +} + diff --git a/packages/project-analyser/tsconfig.json b/packages/project-analyser/tsconfig.json new file mode 100644 index 00000000000..faa563cd355 --- /dev/null +++ b/packages/project-analyser/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.json", + "include": [ + "src", + "src/**/*.json" + ], + "compilerOptions": { + "rootDir": "src", + "outDir": "dist" + }, + "references": [ + { + "path": "../logger" + } + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51568b31c9e..fadf630e1cf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2286,7 +2286,7 @@ importers: version: 0.22.0(apache-arrow@18.1.0) '@sap-ux/fiori-docs-embeddings': specifier: '*' - version: link:../fiori-docs-embeddings + version: 0.4.3 '@xenova/transformers': specifier: 2.17.2 version: 2.17.2 @@ -3286,6 +3286,9 @@ importers: '@sap-ux/i18n': specifier: workspace:* version: link:../i18n + '@sap-ux/project-analyser': + specifier: workspace:* + version: link:../project-analyser '@sap-ux/ui5-config': specifier: workspace:* version: link:../ui5-config @@ -3327,6 +3330,22 @@ importers: specifier: 3.0.7 version: 3.0.7 + packages/project-analyser: + dependencies: + '@sap-ux/logger': + specifier: workspace:* + version: link:../logger + '@sap/ux-specification': + specifier: 1.136.6 + version: 1.136.6(typescript@5.9.3) + fast-glob: + specifier: 3.3.3 + version: 3.3.3 + devDependencies: + '@ui5/manifest': + specifier: 1.76.0 + version: 1.76.0 + packages/project-input-validator: dependencies: '@sap-ux/project-access': @@ -9429,7 +9448,6 @@ packages: '@sap-ux/odata-vocabularies': 0.4.12 '@sap-ux/text-document-utils': 0.3.1 chevrotain: 7.1.1 - dev: true /@sap-ux/cds-odata-annotation-converter@0.6.7(@sap-ux/odata-annotation-core-types@0.4.5)(@sap-ux/project-access@1.30.13)(typescript@5.9.3): resolution: {integrity: sha512-XtZNt3bnICBWOt+l7ek2HHl6tNXhvJNnhM43H54RC4MZOqjacXFdIFlTSKpEMlZ+QYwTUIeBBqNArUyvV5SeXw==} @@ -9444,7 +9462,6 @@ packages: - '@sap-ux/odata-annotation-core-types' - '@sap-ux/project-access' - typescript - dev: true /@sap-ux/edmx-parser@0.9.1: resolution: {integrity: sha512-qgDXrJP+WtBbYJdedtCEVyIyKTs2eVcfplE2Mk4AbW8oxU85rqq8h8gNRoQlIUCcXXBJwXeoVlWTvSCF5mF7Rw==} @@ -9471,7 +9488,6 @@ packages: transitivePeerDependencies: - debug - typescript - dev: true /@sap-ux/fe-mockserver-core@1.4.25: resolution: {integrity: sha512-NoYqHT5cwR5rmOY5phQNHk9jIfZNL1rwTr4RSnEvz6gBQAXCmjOUhSK3N9RFRdCy749MJRKuftH65f9zS6lanQ==} @@ -9524,7 +9540,10 @@ packages: transitivePeerDependencies: - debug - typescript - dev: true + + /@sap-ux/fiori-docs-embeddings@0.4.3: + resolution: {integrity: sha512-BtiB/VLoEi3EpB6ZzwSRiCB3RQWoTslzsOnOgfy7/LH91FqaZ5OFldfsj9OhzWXMEENQBcF3AnKwFHBuafB5+w==} + dev: false /@sap-ux/i18n@0.3.3: resolution: {integrity: sha512-/h5h0oPYKXuEohZ/5KduoY0oTPSHgq/FzXrTrNtkaF+pRoroLB2ctKTyG6AzM7EarVwUCeb/DmYqHXXmJrXBrQ==} @@ -9533,7 +9552,6 @@ packages: '@sap-ux/text-document-utils': 0.3.1 jsonc-parser: 3.2.0 vscode-languageserver-textdocument: 1.0.11 - dev: true /@sap-ux/logger@0.7.0: resolution: {integrity: sha512-1SoumSMkMCNRbO58IdI0+IwO1JUGq0cBtqZOS/BTbpZhGLaZ8X6Sd2ZkhLVG6eVQC+hn4rGelrnD2L2Bbgjx/A==} @@ -9543,30 +9561,25 @@ packages: lodash: 4.17.21 winston: 3.11.0 winston-transport: 4.7.0 - dev: true /@sap-ux/odata-annotation-core-types@0.4.5: resolution: {integrity: sha512-rGKcIeE5BF5VvWWavYu2n8Dc+EQtpaJgoIS1GMBJngK7lqTkl0mjSWH5ufss6wEkAl1DHmMSdHUsdyQbJRYU4w==} dependencies: '@sap-ux/text-document-utils': 0.3.1 - dev: true /@sap-ux/odata-annotation-core@0.2.6: resolution: {integrity: sha512-9/rDUN+MZS+WT60tUCMZ4Yh4e8G2t16aUsm9lc7ANpgGehpqlGtjMURGeSnvuTWYqvFoDgC1dvMyfOQIF5UDNA==} dependencies: '@sap-ux/odata-annotation-core-types': 0.4.5 '@sap-ux/text-document-utils': 0.3.1 - dev: true /@sap-ux/odata-entity-model@0.3.1: resolution: {integrity: sha512-mHyprQ26uRezlkTPrtHHRZFO/hWYnJcZkxGMftZZ0FLEZpzg5diO5sUgCsZZu6Qg3iVOS5+lPWaNmpPXhsGgqA==} - dev: true /@sap-ux/odata-vocabularies@0.4.12: resolution: {integrity: sha512-I64LPdH9Njln7U483R4ql7HllzaAS93C4ZNRvTpfCWh8w7Dy2RcQj5qY9KbTXNNzq10kdRz6aYxO/OmpA8wpVA==} dependencies: '@sap-ux/odata-annotation-core-types': 0.4.5 - dev: true /@sap-ux/project-access@1.30.13: resolution: {integrity: sha512-GW5vXmADmlpH0T0Tsqfw3UU/ZaFslNFaG1FZxUWSXPZUK7a/GqpAIEsIplHYJl/Ir3th/qjiThwLZGzF3lQg7w==} @@ -9582,7 +9595,6 @@ packages: semver: 7.5.4 transitivePeerDependencies: - debug - dev: true /@sap-ux/store@1.1.3(typescript@5.9.3): resolution: {integrity: sha512-uF/Q/OaAVNqBY0axt+K+k4FQUjbHYAoewPikdm8fkKeBmjWK94MsqY+12TDZ+HEsQlZRgXgmxQOY2jSxeFyDIA==} @@ -9603,7 +9615,6 @@ packages: engines: {node: '>=20.x'} dependencies: vscode-languageserver-types: 3.17.2 - dev: true /@sap-ux/ui5-config@0.29.3: resolution: {integrity: sha512-GqmLDKtrv43PEmPii/kR3EhDhp72mVnfgNMFV9jfKsjZ7Q7+r9e83eBGrlxp/hugX9VoBlsvhRR91WNwPrwQjQ==} @@ -9617,7 +9628,6 @@ packages: semver: 7.5.4 transitivePeerDependencies: - debug - dev: true /@sap-ux/ui5-middleware-fe-mockserver@2.2.97: resolution: {integrity: sha512-QQBvLo0EkmVJd+VfF99xvrgiIanSiwS8SrsqMgMzu7ZL1I2iKIC719QQcXCW2trEntRKmvgCKghbBxceuTa9JA==} @@ -9635,7 +9645,6 @@ packages: resolution: {integrity: sha512-Ecy3+vY+yrPaLZ8yuDUt2j9rLjrLm/i5eGYs7aEPLUG5KuvXJ5yXRYUEnAtx3OXzmCwOHV6JPQ7YH+OQfuO2rw==} dependencies: '@sap-ux/odata-annotation-core': 0.2.6 - dev: true /@sap-ux/yaml@0.17.0: resolution: {integrity: sha512-hik046T8+M+Qybydvk6Lsk8BhdSXUQAyUgNYDvllppF9yBMPJ+ThU7LboQbp9Mb7rTWNVJek85eg5UXCIm1NYQ==} @@ -9643,7 +9652,6 @@ packages: dependencies: lodash: 4.17.21 yaml: 2.2.2 - dev: true /@sap/bas-sdk@3.12.0: resolution: {integrity: sha512-7PHLhBtJYNAYkgCuLz8TPHuIYhqlKZxqyT0MAtF05bNLKOLpcMhX3OG0FyypVWmjhGo9qKeG78NTlmMHOMcsQg==} @@ -9731,7 +9739,6 @@ packages: '@sap-ux/odata-annotation-core': 0.2.6 '@sap-ux/odata-annotation-core-types': 0.4.5 '@sap-ux/project-access': 1.30.13 - dev: true /@sap/ux-cds-compiler-facade@1.19.0(@sap-ux/odata-annotation-core-types@packages+odata-annotation-core-types)(@sap-ux/odata-annotation-core@packages+odata-annotation-core)(@sap-ux/project-access@packages+project-access): resolution: {integrity: sha512-lPjt+K7Xyxwr0hm3lUW7Lzt3MYMVvbkzhpzDbNpG0guBp4l+8FgXl1/2ZrHoQ8ZjHv6e3YUTWm9ICZkb+7s8Qg==} @@ -9755,7 +9762,6 @@ packages: transitivePeerDependencies: - debug - typescript - dev: true /@sapui5/types@1.120.5: resolution: {integrity: sha512-5n0pzbS4sP1eA0m1bFgnD1cKQT7BJQn9b1JADWanteElZTbyJjoaTFzSHIUjrCU+vxOwkHTajCjp+/6UNJ1KbQ==} @@ -16621,7 +16627,6 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.8 - dev: true /fast-json-parse@1.0.3: resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} @@ -17457,7 +17462,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.3.3 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -17467,7 +17472,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.3.3 ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 diff --git a/tsconfig.json b/tsconfig.json index f8b513234bb..7f94c10b1de 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -192,6 +192,9 @@ { "path": "packages/project-access" }, + { + "path": "packages/project-analyser" + }, { "path": "packages/project-input-validator" },