@cplace/test-mcp-server 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -36
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +7 -1
- package/dist/api.js.map +1 -1
- package/dist/conditional-registration.d.ts.map +1 -1
- package/dist/conditional-registration.js +7 -1
- package/dist/conditional-registration.js.map +1 -1
- package/dist/index.js +56 -3
- package/dist/index.js.map +1 -1
- package/dist/profiles.d.ts.map +1 -1
- package/dist/profiles.js +8 -4
- package/dist/profiles.js.map +1 -1
- package/dist/tool-metadata.d.ts.map +1 -1
- package/dist/tool-metadata.js +3 -1
- package/dist/tool-metadata.js.map +1 -1
- package/dist/tools/board-widget.d.ts +432 -0
- package/dist/tools/board-widget.d.ts.map +1 -0
- package/dist/tools/board-widget.js +820 -0
- package/dist/tools/board-widget.js.map +1 -0
- package/dist/tools/generic-layouts.d.ts +1 -1
- package/dist/tools/generic-layouts.d.ts.map +1 -1
- package/dist/tools/generic-layouts.js +23 -1
- package/dist/tools/generic-layouts.js.map +1 -1
- package/dist/tools/jobs.d.ts +32 -0
- package/dist/tools/jobs.d.ts.map +1 -0
- package/dist/tools/jobs.js +193 -0
- package/dist/tools/jobs.js.map +1 -0
- package/dist/tools/script.d.ts +25 -0
- package/dist/tools/script.d.ts.map +1 -0
- package/dist/tools/script.js +121 -0
- package/dist/tools/script.js.map +1 -0
- package/dist/tools/search.d.ts +1 -1
- package/dist/tools/search.js +1 -1
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/type-management.d.ts +2 -2
- package/dist/tools/widgets.d.ts +8 -5
- package/dist/tools/widgets.d.ts.map +1 -1
- package/dist/tools/widgets.js +143 -40
- package/dist/tools/widgets.js.map +1 -1
- package/dist/tools/workspace-admin.d.ts +11 -1
- package/dist/tools/workspace-admin.d.ts.map +1 -1
- package/dist/tools/workspace-admin.js +67 -8
- package/dist/tools/workspace-admin.js.map +1 -1
- package/dist/tools/workspace-core.d.ts +4 -1
- package/dist/tools/workspace-core.d.ts.map +1 -1
- package/dist/tools/workspace-core.js +38 -7
- package/dist/tools/workspace-core.js.map +1 -1
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +107 -1
- package/dist/utils.js.map +1 -1
- package/dist/widget-specifications/CLAUDE.md +288 -0
- package/dist/widget-specifications/DOCUMENTATION-STATUS.md +424 -0
- package/dist/widget-specifications/GENERATING-FROM-RESEARCH.md +61 -0
- package/dist/widget-specifications/WIDGET-TAGGING-SCHEME.md +217 -0
- package/dist/widget-specifications/_research_from_ga_products/.claude-settings.local.json +48 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-api-common-config-metadata-SyncMetadataTable/research.md +168 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-breadcrumbs-breadcrumbsWidget/research.md +125 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-cboard-main-board/research.md +373 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-citizenAi-askYourPageWidget/research.md +319 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-cplaceReportGeneration-generateReportWidget/research.md +295 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-ctts-main-employeeReportChart/research.md +230 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-ctts-main-employeeReportGrid/research.md +215 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-ctts-main-projectmanagerReportChart/research.md +192 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-ctts-main-projectmanagerReportGrid/research.md +178 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-ctts-main-widget/research.md +332 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-demoWidgets-demoRichString/research.md +194 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-documentation-navigationWidget/research.md +426 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-dragAndDropImageView-imageWithTextAndListWidget/research.md +326 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-dragAndDropImageView-imageWithTextWidget/research.md +580 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-dragAndDropImageView-widget/research.md +281 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-draggablePageList-widget/research.md +210 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-dynamicCodeBlockWidget-dynamicCodeBlockWidget/research.md +250 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-ecf-attribute-conversion-widget-enumMappingTable/research.md +260 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-ecf-configuration-widget-attributeMappingTable/research.md +148 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-ecf-connector-extension-widget-cleanupConfigTable/research.md +138 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-ecf-connector-extension-widget-connectorSyncConfigsTable/research.md +150 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-ecf-connector-extension-widget-serverConnectionTable/research.md +181 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-extendedTreeTableWidget/research.md +253 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-formsWizard-horizontalDivider/research.md +261 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-formsWizard-startWizardWidget/research.md +211 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-formsWizard-stepEditorForWizardWidget/research.md +183 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-formsWizard-stepEditorWidget/research.md +298 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-formsWizard-stepManager/research.md +419 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-formsWizard-stepPreview/research.md +256 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-formsWizard-wizardActivation/research.md +174 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-formsWizard-wizardAnalysis/research.md +283 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-formsWizard-wizardLocalizations/research.md +193 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-genericInterface-api-widgets-triggerInterfaceButton/research.md +180 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-landingPageFromPage-quickOverview/research.md +186 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-landingPageFromPage-sessionUserNameWidget/research.md +158 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-landingPageFromPage-simpleListWithAttachment/research.md +135 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-layoutTabsWidget-widget/research.md +238 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-lowCodeWidgets-lowCodeButton/research.md +272 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-lowcode-ai-chatWidget/research.md +194 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-meeting-pageHeader/research.md +208 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-navigationTileWidget-widget/research.md +259 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-officeReports-headlineForReports/research.md +174 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-officeReports-scriptPlaceholders/research.md +233 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-officeReports-templatePlaceholders/research.md +150 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-orgaTree-edit/research.md +353 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-outlookMessageIntegration-outlookMessages/research.md +233 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-pageViewHeadline-widget/research.md +217 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-pdfPreview-widget/research.md +235 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-platform-attributesGroup/research.md +525 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-platform-batchJobQuickGlance/research.md +372 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-platform-connectedAttributesGroup/research.md +408 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-platform-dynamicIframe/research.md +198 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-platform-tableWidget/research.md +427 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-pptexport-pgPreviewWidget/research.md +151 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-projectTree-editProjects/research.md +163 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-projektplanung-scheduleLockState/research.md +174 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-projektplanung-subscriptions/research.md +316 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-qrCodeWidget/research.md +130 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-resourceManagement-resourcePlannerDefinition/research.md +331 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-rest-config-widget-productionModeHintWidget/research.md +332 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-simpleCalendar-calendar/research.md +284 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-simpleForm-widget/research.md +193 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-tableDetailViewWidget-widget/research.md +311 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-treeTableWidget/research.md +420 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-tuplesWidget-widget/research.md +295 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-videoWidget/research.md +154 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-visualizations-scriptingHighcharts/research.md +249 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-visualizations-scriptingLineChart/research.md +279 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-visualizations-tupleLineChart/research.md +221 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-attributeHistory/research.md +421 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-attributes/research.md +377 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-comments/research.md +254 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-connectedBarChart/research.md +275 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-connectedMatrix/research.md +396 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-connectedPieChart/research.md +150 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-connectedSingleAttribute/research.md +430 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-connectedTableFilter/research.md +468 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-customRichStringAttribute/research.md +120 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-embeddedSearchAsList/research.md +485 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-embeddedSearchAsTable/research.md +428 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-files/research.md +240 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-iframe/research.md +358 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-incomingLinks/research.md +242 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-incomingReferences/research.md +488 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-makeover-attributes/research.md +219 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-modificationInfo/research.md +141 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-myElements/research.md +116 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-richString/research.md +437 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-singleAttribute/research.md +1094 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-tags/research.md +332 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-platform-wiki/research.md +258 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-projektplanung-gantt/research.md +268 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-projektplanung-ganttTaskDemo/research.md +271 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-projektplanung-multiGantt/research.md +343 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-projektplanung-scheduleTreeTable/research.md +261 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-projektplanung-singleGantt/research.md +184 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-projektplanung-singleGanttLink/research.md +188 -0
- package/dist/widget-specifications/_research_from_ga_products/de-2lforge-curves-widget/research.md +341 -0
- package/dist/widget-specifications/_research_from_ga_products/de-2lforge-toolbar-datePickerWidget/research.md +232 -0
- package/dist/widget-specifications/_research_from_ga_products/de-2lforge-toolbar-dropDownWidget/research.md +417 -0
- package/dist/widget-specifications/_research_from_ga_products/de-2lforge-toolbar-miscWidget/research.md +172 -0
- package/dist/widget-specifications/_research_from_ga_products/de-visualistik-visualRoadmap-widget/research.md +277 -0
- package/dist/widget-specifications/_research_from_ga_products/msg-scripts-imagegallery-basic/research.md +112 -0
- package/dist/widget-specifications/_research_from_ga_products/phase-0-discovery-approach.md +248 -0
- package/dist/widget-specifications/_research_from_ga_products/widget-definition-mapping.md +168 -0
- package/dist/widget-specifications/_research_from_ga_products/widget-documentation-project.md +259 -0
- package/dist/widget-specifications/_research_from_ga_products/widget-research-generation/generate.sh +100 -0
- package/dist/widget-specifications/_research_from_ga_products/widget-research-generation/parse-mapping.sh +35 -0
- package/dist/widget-specifications/_research_from_ga_products/widget-research-generation/template.md +38 -0
- package/dist/widget-specifications/_research_from_ga_products/widget-research-generation/widgets.txt +107 -0
- package/dist/widget-specifications/cf.cplace.api.common.config.metadata.SyncMetadataTable/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.api.common.config.metadata.SyncMetadataTable/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.api.common.config.metadata.SyncMetadataTable/_overview.md +40 -0
- package/dist/widget-specifications/cf.cplace.api.common.config.metadata.SyncMetadataTable/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.breadcrumbs.breadcrumbsWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.breadcrumbs.breadcrumbsWidget/_meta.json +8 -0
- package/dist/widget-specifications/cf.cplace.breadcrumbs.breadcrumbsWidget/_overview.md +74 -0
- package/dist/widget-specifications/cf.cplace.breadcrumbs.breadcrumbsWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.cboard.main.board/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.cboard.main.board/_implementation.md +37 -0
- package/dist/widget-specifications/cf.cplace.cboard.main.board/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.cboard.main.board/_overview.md +117 -0
- package/dist/widget-specifications/cf.cplace.cboard.main.board/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.citizenAi.askYourPageWidget/_meta.json +3 -0
- package/dist/widget-specifications/cf.cplace.citizenAi.askYourPageWidget/_overview.md +123 -0
- package/dist/widget-specifications/cf.cplace.citizenAi.askYourPageWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.cplaceReportGeneration.generateReportWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.cplaceReportGeneration.generateReportWidget/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.cplaceReportGeneration.generateReportWidget/_overview.md +45 -0
- package/dist/widget-specifications/cf.cplace.cplaceReportGeneration.generateReportWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.employeeReportChart/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.employeeReportChart/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.employeeReportChart/_overview.md +79 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.employeeReportChart/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.employeeReportGrid/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.employeeReportGrid/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.employeeReportGrid/_overview.md +45 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.employeeReportGrid/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.projectmanagerReportChart/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.projectmanagerReportChart/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.projectmanagerReportChart/_overview.md +68 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.projectmanagerReportChart/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.projectmanagerReportGrid/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.projectmanagerReportGrid/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.projectmanagerReportGrid/_overview.md +45 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.projectmanagerReportGrid/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.widget/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.widget/_overview.md +157 -0
- package/dist/widget-specifications/cf.cplace.ctts.main.widget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.demoWidgets.demoRichString/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.demoWidgets.demoRichString/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.demoWidgets.demoRichString/_overview.md +200 -0
- package/dist/widget-specifications/cf.cplace.demoWidgets.demoRichString/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.documentation.navigationWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.documentation.navigationWidget/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.documentation.navigationWidget/_overview.md +27 -0
- package/dist/widget-specifications/cf.cplace.documentation.navigationWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.imageWithTextAndListWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.imageWithTextAndListWidget/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.imageWithTextAndListWidget/_overview.md +79 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.imageWithTextAndListWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.imageWithTextWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.imageWithTextWidget/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.imageWithTextWidget/_overview.md +176 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.imageWithTextWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.widget/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.widget/_overview.md +85 -0
- package/dist/widget-specifications/cf.cplace.dragAndDropImageView.widget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.draggablePageList.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.draggablePageList.widget/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.draggablePageList.widget/_overview.md +93 -0
- package/dist/widget-specifications/cf.cplace.draggablePageList.widget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.dynamicCodeBlockWidget.dynamicCodeBlockWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.dynamicCodeBlockWidget.dynamicCodeBlockWidget/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.dynamicCodeBlockWidget.dynamicCodeBlockWidget/_overview.md +75 -0
- package/dist/widget-specifications/cf.cplace.dynamicCodeBlockWidget.dynamicCodeBlockWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.ecf.attribute.conversion.widget.enumMappingTable/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.ecf.attribute.conversion.widget.enumMappingTable/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.ecf.attribute.conversion.widget.enumMappingTable/_overview.md +167 -0
- package/dist/widget-specifications/cf.cplace.ecf.attribute.conversion.widget.enumMappingTable/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.ecf.configuration.widget.attributeMappingTable/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.ecf.configuration.widget.attributeMappingTable/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.ecf.configuration.widget.attributeMappingTable/_overview.md +64 -0
- package/dist/widget-specifications/cf.cplace.ecf.configuration.widget.attributeMappingTable/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.cleanupConfigTable/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.cleanupConfigTable/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.cleanupConfigTable/_overview.md +61 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.cleanupConfigTable/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.connectorSyncConfigsTable/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.connectorSyncConfigsTable/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.connectorSyncConfigsTable/_overview.md +94 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.connectorSyncConfigsTable/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.serverConnectionTable/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.serverConnectionTable/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.serverConnectionTable/_overview.md +28 -0
- package/dist/widget-specifications/cf.cplace.ecf.connector.extension.widget.serverConnectionTable/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.extendedTreeTableWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.extendedTreeTableWidget/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.extendedTreeTableWidget/_overview.md +116 -0
- package/dist/widget-specifications/cf.cplace.extendedTreeTableWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.horizontalDivider/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.horizontalDivider/_meta.json +8 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.horizontalDivider/_overview.md +44 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.horizontalDivider/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.startWizardWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.startWizardWidget/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.startWizardWidget/_overview.md +40 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.startWizardWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepEditorForWizardWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepEditorForWizardWidget/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepEditorForWizardWidget/_overview.md +47 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepEditorForWizardWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepEditorWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepEditorWidget/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepEditorWidget/_overview.md +23 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepEditorWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepManager/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepManager/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepManager/_overview.md +32 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepManager/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepPreview/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepPreview/_meta.json +8 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepPreview/_overview.md +29 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.stepPreview/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardActivation/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardActivation/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardActivation/_overview.md +69 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardActivation/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardAnalysis/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardAnalysis/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardAnalysis/_overview.md +91 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardAnalysis/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardLocalizations/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardLocalizations/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardLocalizations/_overview.md +48 -0
- package/dist/widget-specifications/cf.cplace.formsWizard.wizardLocalizations/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.genericInterface.api.widgets.triggerInterfaceButton/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.genericInterface.api.widgets.triggerInterfaceButton/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.genericInterface.api.widgets.triggerInterfaceButton/_overview.md +58 -0
- package/dist/widget-specifications/cf.cplace.genericInterface.api.widgets.triggerInterfaceButton/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.quickOverview/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.quickOverview/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.quickOverview/_overview.md +66 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.quickOverview/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.sessionUserNameWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.sessionUserNameWidget/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.sessionUserNameWidget/_overview.md +52 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.sessionUserNameWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.simpleListWithAttachment/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.simpleListWithAttachment/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.simpleListWithAttachment/_overview.md +53 -0
- package/dist/widget-specifications/cf.cplace.landingPageFromPage.simpleListWithAttachment/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.layoutTabsWidget.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.layoutTabsWidget.widget/_implementation.md +6 -0
- package/dist/widget-specifications/cf.cplace.layoutTabsWidget.widget/_meta.json +7 -0
- package/dist/widget-specifications/cf.cplace.layoutTabsWidget.widget/_overview.md +115 -0
- package/dist/widget-specifications/cf.cplace.layoutTabsWidget.widget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.layoutTabsWidget.widget/cf.cplace.layoutTabsWidget.layoutSelection.md +2 -0
- package/dist/widget-specifications/cf.cplace.layoutTabsWidget.widget/cf.cplace.layoutTabsWidget.layouts.md +3 -0
- package/dist/widget-specifications/cf.cplace.layoutTabsWidget.widget/cf.cplace.layoutTabsWidget.sourceForLayouts.md +1 -0
- package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeButton/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeButton/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeButton/_overview.md +137 -0
- package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeButton/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.lowcode.ai.chatWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.lowcode.ai.chatWidget/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.lowcode.ai.chatWidget/_overview.md +63 -0
- package/dist/widget-specifications/cf.cplace.lowcode.ai.chatWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.meeting.pageHeader/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.meeting.pageHeader/_meta.json +12 -0
- package/dist/widget-specifications/cf.cplace.meeting.pageHeader/_overview.md +31 -0
- package/dist/widget-specifications/cf.cplace.meeting.pageHeader/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.navigationTileWidget.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.navigationTileWidget.widget/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.navigationTileWidget.widget/_overview.md +71 -0
- package/dist/widget-specifications/cf.cplace.navigationTileWidget.widget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.officeReports.headlineForReports/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.officeReports.headlineForReports/_meta.json +8 -0
- package/dist/widget-specifications/cf.cplace.officeReports.headlineForReports/_overview.md +57 -0
- package/dist/widget-specifications/cf.cplace.officeReports.headlineForReports/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.officeReports.scriptPlaceholders/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.officeReports.scriptPlaceholders/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.officeReports.scriptPlaceholders/_overview.md +22 -0
- package/dist/widget-specifications/cf.cplace.officeReports.scriptPlaceholders/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.officeReports.templatePlaceholders/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.officeReports.templatePlaceholders/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.officeReports.templatePlaceholders/_overview.md +24 -0
- package/dist/widget-specifications/cf.cplace.officeReports.templatePlaceholders/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.orgaTree.edit/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.orgaTree.edit/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.orgaTree.edit/_overview.md +62 -0
- package/dist/widget-specifications/cf.cplace.orgaTree.edit/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.outlookMessageIntegration.outlookMessages/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.outlookMessageIntegration.outlookMessages/_meta.json +12 -0
- package/dist/widget-specifications/cf.cplace.outlookMessageIntegration.outlookMessages/_overview.md +50 -0
- package/dist/widget-specifications/cf.cplace.outlookMessageIntegration.outlookMessages/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.pageViewHeadline.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.pageViewHeadline.widget/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.pageViewHeadline.widget/_overview.md +62 -0
- package/dist/widget-specifications/cf.cplace.pageViewHeadline.widget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.pdfPreview.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.pdfPreview.widget/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.pdfPreview.widget/_overview.md +79 -0
- package/dist/widget-specifications/cf.cplace.pdfPreview.widget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.platform.attributesGroup/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.platform.attributesGroup/_implementation.md +13 -0
- package/dist/widget-specifications/cf.cplace.platform.attributesGroup/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.platform.attributesGroup/_overview.md +108 -0
- package/dist/widget-specifications/cf.cplace.platform.attributesGroup/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.platform.attributesGroup/absoluteSelection.md +9 -0
- package/dist/widget-specifications/cf.cplace.platform.attributesGroup/layout.md +8 -0
- package/dist/widget-specifications/cf.cplace.platform.attributesGroup/pageSelection.md +12 -0
- package/dist/widget-specifications/cf.cplace.platform.attributesGroup/relativeSelection.md +14 -0
- package/dist/widget-specifications/cf.cplace.platform.batchJobQuickGlance/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.platform.batchJobQuickGlance/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.platform.batchJobQuickGlance/_overview.md +52 -0
- package/dist/widget-specifications/cf.cplace.platform.batchJobQuickGlance/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.platform.connectedAttributesGroup/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.platform.connectedAttributesGroup/_implementation.md +17 -0
- package/dist/widget-specifications/cf.cplace.platform.connectedAttributesGroup/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.platform.connectedAttributesGroup/_overview.md +103 -0
- package/dist/widget-specifications/cf.cplace.platform.connectedAttributesGroup/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.platform.connectedAttributesGroup/cf.cplace.platform.attributesGroup.layout.md +8 -0
- package/dist/widget-specifications/cf.cplace.platform.connectedAttributesGroup/singleSelectionWidgetId.md +15 -0
- package/dist/widget-specifications/cf.cplace.platform.dynamicIframe/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.platform.dynamicIframe/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.platform.dynamicIframe/_overview.md +49 -0
- package/dist/widget-specifications/cf.cplace.platform.dynamicIframe/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.platform.tableWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.platform.tableWidget/_meta.json +12 -0
- package/dist/widget-specifications/cf.cplace.platform.tableWidget/_overview.md +188 -0
- package/dist/widget-specifications/cf.cplace.platform.tableWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.pptexport.pgPreviewWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.pptexport.pgPreviewWidget/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.pptexport.pgPreviewWidget/_overview.md +92 -0
- package/dist/widget-specifications/cf.cplace.pptexport.pgPreviewWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.projectTree.editProjects/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.projectTree.editProjects/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.projectTree.editProjects/_overview.md +81 -0
- package/dist/widget-specifications/cf.cplace.projectTree.editProjects/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.projektplanung.scheduleLockState/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.projektplanung.scheduleLockState/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.projektplanung.scheduleLockState/_overview.md +60 -0
- package/dist/widget-specifications/cf.cplace.projektplanung.scheduleLockState/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.projektplanung.subscriptions/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.projektplanung.subscriptions/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.projektplanung.subscriptions/_overview.md +59 -0
- package/dist/widget-specifications/cf.cplace.projektplanung.subscriptions/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.qrCodeWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.qrCodeWidget/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.qrCodeWidget/_overview.md +25 -0
- package/dist/widget-specifications/cf.cplace.qrCodeWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.resourceManagement.resourcePlannerDefinition/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.resourceManagement.resourcePlannerDefinition/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.resourceManagement.resourcePlannerDefinition/_overview.md +78 -0
- package/dist/widget-specifications/cf.cplace.resourceManagement.resourcePlannerDefinition/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.rest.config.widget.productionModeHintWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.rest.config.widget.productionModeHintWidget/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.rest.config.widget.productionModeHintWidget/_overview.md +44 -0
- package/dist/widget-specifications/cf.cplace.rest.config.widget.productionModeHintWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.simpleCalendar.calendar/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.simpleCalendar.calendar/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.simpleCalendar.calendar/_overview.md +42 -0
- package/dist/widget-specifications/cf.cplace.simpleCalendar.calendar/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.simpleForm.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.simpleForm.widget/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.simpleForm.widget/_overview.md +85 -0
- package/dist/widget-specifications/cf.cplace.simpleForm.widget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.tableDetailViewWidget.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.tableDetailViewWidget.widget/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.tableDetailViewWidget.widget/_overview.md +92 -0
- package/dist/widget-specifications/cf.cplace.tableDetailViewWidget.widget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.tableDetailViewWidget.widget/attributes.md +7 -0
- package/dist/widget-specifications/cf.cplace.treeTableWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.treeTableWidget/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.treeTableWidget/_overview.md +51 -0
- package/dist/widget-specifications/cf.cplace.treeTableWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.tuplesWidget.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.tuplesWidget.widget/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.tuplesWidget.widget/_overview.md +202 -0
- package/dist/widget-specifications/cf.cplace.tuplesWidget.widget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.videoWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.videoWidget/_meta.json +10 -0
- package/dist/widget-specifications/cf.cplace.videoWidget/_overview.md +65 -0
- package/dist/widget-specifications/cf.cplace.videoWidget/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingHighcharts/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingHighcharts/_implementation.md +12 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingHighcharts/_meta.json +9 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingHighcharts/_overview.md +117 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingHighcharts/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingHighcharts/cf.cplace.visualization.dataSource.md +5 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingHighcharts/cf.cplace.visualization.search.md +10 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingHighcharts/script.md +29 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingHighcharts/tableWidgetId.md +10 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingLineChart/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingLineChart/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingLineChart/_overview.md +72 -0
- package/dist/widget-specifications/cf.cplace.visualizations.scriptingLineChart/_summary.md +1 -0
- package/dist/widget-specifications/cf.cplace.visualizations.tupleLineChart/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.visualizations.tupleLineChart/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.visualizations.tupleLineChart/_overview.md +50 -0
- package/dist/widget-specifications/cf.cplace.visualizations.tupleLineChart/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.attributeHistory/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.attributeHistory/_meta.json +11 -0
- package/dist/widget-specifications/cf.platform.attributeHistory/_overview.md +79 -0
- package/dist/widget-specifications/cf.platform.attributeHistory/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.attributes/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.attributes/_meta.json +9 -0
- package/dist/widget-specifications/cf.platform.attributes/_overview.md +89 -0
- package/dist/widget-specifications/cf.platform.attributes/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.comments/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.comments/_meta.json +9 -0
- package/dist/widget-specifications/cf.platform.comments/_overview.md +52 -0
- package/dist/widget-specifications/cf.platform.comments/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.connectedBarChart/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.connectedBarChart/_implementation.md +10 -0
- package/dist/widget-specifications/cf.platform.connectedBarChart/_meta.json +11 -0
- package/dist/widget-specifications/cf.platform.connectedBarChart/_overview.md +70 -0
- package/dist/widget-specifications/cf.platform.connectedBarChart/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.connectedBarChart/search.md +15 -0
- package/dist/widget-specifications/cf.platform.connectedMatrix/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.connectedMatrix/_meta.json +11 -0
- package/dist/widget-specifications/cf.platform.connectedMatrix/_overview.md +189 -0
- package/dist/widget-specifications/cf.platform.connectedMatrix/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.connectedPieChart/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.connectedPieChart/_implementation.md +10 -0
- package/dist/widget-specifications/cf.platform.connectedPieChart/_meta.json +11 -0
- package/dist/widget-specifications/cf.platform.connectedPieChart/_overview.md +70 -0
- package/dist/widget-specifications/cf.platform.connectedPieChart/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.connectedPieChart/search.md +10 -0
- package/dist/widget-specifications/cf.platform.connectedSingleAttribute/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.connectedSingleAttribute/_implementation.md +15 -0
- package/dist/widget-specifications/cf.platform.connectedSingleAttribute/_meta.json +10 -0
- package/dist/widget-specifications/cf.platform.connectedSingleAttribute/_overview.md +69 -0
- package/dist/widget-specifications/cf.platform.connectedSingleAttribute/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.connectedSingleAttribute/attributeName.md +10 -0
- package/dist/widget-specifications/cf.platform.connectedSingleAttribute/singleColumn.md +9 -0
- package/dist/widget-specifications/cf.platform.connectedSingleAttribute/singleSelectionWidgetId.md +3 -0
- package/dist/widget-specifications/cf.platform.connectedSingleAttribute/withLabel.md +11 -0
- package/dist/widget-specifications/cf.platform.connectedSingleAttribute/withValue.md +12 -0
- package/dist/widget-specifications/cf.platform.connectedTableFilter/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.connectedTableFilter/_meta.json +10 -0
- package/dist/widget-specifications/cf.platform.connectedTableFilter/_overview.md +89 -0
- package/dist/widget-specifications/cf.platform.connectedTableFilter/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.customRichStringAttribute/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.customRichStringAttribute/_meta.json +9 -0
- package/dist/widget-specifications/cf.platform.customRichStringAttribute/_overview.md +39 -0
- package/dist/widget-specifications/cf.platform.customRichStringAttribute/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsList/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsList/_meta.json +10 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsList/_overview.md +66 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsList/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsList/search.md +8 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsTable/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsTable/_implementation.md +10 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsTable/_meta.json +11 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsTable/_overview.md +109 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsTable/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsTable/columns.md +14 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsTable/multiSortColumns.md +16 -0
- package/dist/widget-specifications/cf.platform.embeddedSearchAsTable/search.md +8 -0
- package/dist/widget-specifications/cf.platform.files/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.files/_meta.json +10 -0
- package/dist/widget-specifications/cf.platform.files/_overview.md +74 -0
- package/dist/widget-specifications/cf.platform.files/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.iframe/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.iframe/_meta.json +9 -0
- package/dist/widget-specifications/cf.platform.iframe/_overview.md +77 -0
- package/dist/widget-specifications/cf.platform.iframe/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.incomingLinks/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.incomingLinks/_meta.json +10 -0
- package/dist/widget-specifications/cf.platform.incomingLinks/_overview.md +83 -0
- package/dist/widget-specifications/cf.platform.incomingLinks/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.incomingReferences/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.incomingReferences/_meta.json +10 -0
- package/dist/widget-specifications/cf.platform.incomingReferences/_overview.md +48 -0
- package/dist/widget-specifications/cf.platform.incomingReferences/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.makeover.attributes/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.makeover.attributes/_meta.json +9 -0
- package/dist/widget-specifications/cf.platform.makeover.attributes/_overview.md +48 -0
- package/dist/widget-specifications/cf.platform.makeover.attributes/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.modificationInfo/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.modificationInfo/_meta.json +9 -0
- package/dist/widget-specifications/cf.platform.modificationInfo/_overview.md +27 -0
- package/dist/widget-specifications/cf.platform.modificationInfo/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.myElements/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.myElements/_meta.json +10 -0
- package/dist/widget-specifications/cf.platform.myElements/_overview.md +69 -0
- package/dist/widget-specifications/cf.platform.myElements/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.richString/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.richString/_meta.json +10 -0
- package/dist/widget-specifications/cf.platform.richString/_overview.md +43 -0
- package/dist/widget-specifications/cf.platform.richString/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.singleAttribute/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.singleAttribute/_implementation.md +18 -0
- package/dist/widget-specifications/cf.platform.singleAttribute/_meta.json +10 -0
- package/dist/widget-specifications/cf.platform.singleAttribute/_overview.md +83 -0
- package/dist/widget-specifications/cf.platform.singleAttribute/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.singleAttribute/cf.platform.entity.md +10 -0
- package/dist/widget-specifications/cf.platform.singleAttribute/cf.platform.quotedAttributeName.md +12 -0
- package/dist/widget-specifications/cf.platform.singleAttribute/cf.platform.singleColumn.md +9 -0
- package/dist/widget-specifications/cf.platform.singleAttribute/cf.platform.useParent.md +11 -0
- package/dist/widget-specifications/cf.platform.singleAttribute/cf.platform.withLabel.md +11 -0
- package/dist/widget-specifications/cf.platform.singleAttribute/cf.platform.withValue.md +12 -0
- package/dist/widget-specifications/cf.platform.tags/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.tags/_meta.json +10 -0
- package/dist/widget-specifications/cf.platform.tags/_overview.md +49 -0
- package/dist/widget-specifications/cf.platform.tags/_summary.md +1 -0
- package/dist/widget-specifications/cf.platform.wiki/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.platform.wiki/_meta.json +9 -0
- package/dist/widget-specifications/cf.platform.wiki/_overview.md +32 -0
- package/dist/widget-specifications/cf.platform.wiki/_summary.md +1 -0
- package/dist/widget-specifications/cf.projektplanung.gantt/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.projektplanung.gantt/_meta.json +11 -0
- package/dist/widget-specifications/cf.projektplanung.gantt/_overview.md +61 -0
- package/dist/widget-specifications/cf.projektplanung.gantt/_summary.md +1 -0
- package/dist/widget-specifications/cf.projektplanung.ganttTaskDemo/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.projektplanung.ganttTaskDemo/_meta.json +10 -0
- package/dist/widget-specifications/cf.projektplanung.ganttTaskDemo/_overview.md +65 -0
- package/dist/widget-specifications/cf.projektplanung.ganttTaskDemo/_summary.md +1 -0
- package/dist/widget-specifications/cf.projektplanung.multiGantt/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.projektplanung.multiGantt/_meta.json +11 -0
- package/dist/widget-specifications/cf.projektplanung.multiGantt/_overview.md +73 -0
- package/dist/widget-specifications/cf.projektplanung.multiGantt/_summary.md +1 -0
- package/dist/widget-specifications/cf.projektplanung.scheduleTreeTable/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.projektplanung.scheduleTreeTable/_meta.json +10 -0
- package/dist/widget-specifications/cf.projektplanung.scheduleTreeTable/_overview.md +84 -0
- package/dist/widget-specifications/cf.projektplanung.scheduleTreeTable/_summary.md +1 -0
- package/dist/widget-specifications/cf.projektplanung.singleGantt/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.projektplanung.singleGantt/_meta.json +12 -0
- package/dist/widget-specifications/cf.projektplanung.singleGantt/_overview.md +27 -0
- package/dist/widget-specifications/cf.projektplanung.singleGantt/_summary.md +1 -0
- package/dist/widget-specifications/cf.projektplanung.singleGanttLink/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.projektplanung.singleGanttLink/_meta.json +10 -0
- package/dist/widget-specifications/cf.projektplanung.singleGanttLink/_overview.md +84 -0
- package/dist/widget-specifications/cf.projektplanung.singleGanttLink/_summary.md +1 -0
- package/dist/widget-specifications/de.2lforge.curves.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/de.2lforge.curves.widget/_meta.json +12 -0
- package/dist/widget-specifications/de.2lforge.curves.widget/_overview.md +73 -0
- package/dist/widget-specifications/de.2lforge.curves.widget/_summary.md +1 -0
- package/dist/widget-specifications/de.2lforge.toolbar.datePickerWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/de.2lforge.toolbar.datePickerWidget/_meta.json +9 -0
- package/dist/widget-specifications/de.2lforge.toolbar.datePickerWidget/_overview.md +67 -0
- package/dist/widget-specifications/de.2lforge.toolbar.datePickerWidget/_summary.md +1 -0
- package/dist/widget-specifications/de.2lforge.toolbar.dropDownWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/de.2lforge.toolbar.dropDownWidget/_meta.json +10 -0
- package/dist/widget-specifications/de.2lforge.toolbar.dropDownWidget/_overview.md +58 -0
- package/dist/widget-specifications/de.2lforge.toolbar.dropDownWidget/_summary.md +1 -0
- package/dist/widget-specifications/de.2lforge.toolbar.miscWidget/_catalog-data.json +12 -0
- package/dist/widget-specifications/de.2lforge.toolbar.miscWidget/_meta.json +8 -0
- package/dist/widget-specifications/de.2lforge.toolbar.miscWidget/_overview.md +43 -0
- package/dist/widget-specifications/de.2lforge.toolbar.miscWidget/_summary.md +1 -0
- package/dist/widget-specifications/de.visualistik.visualRoadmap.widget/_catalog-data.json +12 -0
- package/dist/widget-specifications/de.visualistik.visualRoadmap.widget/_meta.json +11 -0
- package/dist/widget-specifications/de.visualistik.visualRoadmap.widget/_overview.md +47 -0
- package/dist/widget-specifications/de.visualistik.visualRoadmap.widget/_summary.md +1 -0
- package/dist/widget-specifications/index.d.ts.map +1 -0
- package/dist/widget-specifications/index.js +55 -0
- package/dist/widget-specifications/index.js.map +1 -0
- package/dist/widget-specifications/msg.scripts.imagegallery.basic/_catalog-data.json +12 -0
- package/dist/widget-specifications/msg.scripts.imagegallery.basic/_meta.json +10 -0
- package/dist/widget-specifications/msg.scripts.imagegallery.basic/_overview.md +55 -0
- package/dist/widget-specifications/msg.scripts.imagegallery.basic/_summary.md +1 -0
- package/dist/widget-specifications/tag-registry.json +63 -0
- package/package.json +3 -2
|
@@ -0,0 +1,1094 @@
|
|
|
1
|
+
# Widget Research: cf.platform.singleAttribute
|
|
2
|
+
|
|
3
|
+
**Date**: 2026-01-16
|
|
4
|
+
**Widget ID**: `cf.platform.singleAttribute`
|
|
5
|
+
**Repository**: main
|
|
6
|
+
**Definition Class**: `cf.cplace.platform.frontend.widgets.SingleAttributeWidgetDefinition`
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Executive Summary
|
|
11
|
+
|
|
12
|
+
### Widget Description
|
|
13
|
+
|
|
14
|
+
The Single Attribute Widget displays a single attribute (either custom or built-in) from a page with fine-grained control over label, value, and editing behavior. It provides flexible attribute presentation with optional in-place editing, alternative labels, and conditional visibility.
|
|
15
|
+
|
|
16
|
+
### Primary Purpose
|
|
17
|
+
|
|
18
|
+
This widget enables precise control over individual attribute display by allowing users to choose exactly which attribute to show, customize its presentation (label, value, or both), enable in-place editing, and conditionally show/hide the attribute based on business logic. Unlike the full Attributes widget, this focuses on a single attribute with maximum configuration flexibility.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Core Functionality
|
|
23
|
+
|
|
24
|
+
### What This Widget Does
|
|
25
|
+
|
|
26
|
+
1. **Single Attribute Display**: Shows one specific attribute from a page (custom or built-in)
|
|
27
|
+
2. **Flexible Presentation**: Configurable to display label only, value only, or both
|
|
28
|
+
3. **In-Place Editing**: Optional inline editing without form submission
|
|
29
|
+
4. **Custom Labels**: Support for alternative/localized labels instead of default attribute names
|
|
30
|
+
5. **Layout Control**: Single or two-column display modes
|
|
31
|
+
6. **Conditional Visibility**: cplaceJS script support to show/hide attributes dynamically
|
|
32
|
+
7. **Parent Navigation**: Can display attributes from the parent page in hierarchical structures
|
|
33
|
+
|
|
34
|
+
### Key Characteristics
|
|
35
|
+
|
|
36
|
+
- **Attribute Selection**: Dynamic enumeration of available attributes (both custom and built-in) based on target entity type
|
|
37
|
+
- **Configuration Flexibility**: 11 configuration parameters providing extensive customization
|
|
38
|
+
- **Embedding Context**: Can be embedded directly on pages or within Attributes Group widgets
|
|
39
|
+
- **Frontend Duality**: Supports both legacy template rendering and new Angular component architecture
|
|
40
|
+
- **Migration Support**: Handles legacy configurations with unquoted attribute names
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Use Cases
|
|
45
|
+
|
|
46
|
+
### Primary Use Cases
|
|
47
|
+
|
|
48
|
+
#### 1. Custom Attribute Layout
|
|
49
|
+
|
|
50
|
+
**Scenario**: Display specific attributes in a custom page layout without showing all attributes
|
|
51
|
+
|
|
52
|
+
**Example**: Create a summary section at the top of a page showing only critical attributes (status, priority, owner) while keeping detailed attributes in a separate section.
|
|
53
|
+
|
|
54
|
+
**Configuration**:
|
|
55
|
+
- `ATTRIBUTE_NAME`: `cf.cplace.solution.status` (or built-in like `name`)
|
|
56
|
+
- `WITH_LABEL`: `true`
|
|
57
|
+
- `WITH_VALUE`: `true`
|
|
58
|
+
- `IN_PLACE_EDITING`: `false`
|
|
59
|
+
|
|
60
|
+
**When to use**:
|
|
61
|
+
- Need precise control over which attributes appear where
|
|
62
|
+
- Building custom dashboards or summary views
|
|
63
|
+
- Creating multi-section page layouts
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
#### 2. Read-Only Attribute Display with Alternative Labels
|
|
68
|
+
|
|
69
|
+
**Scenario**: Show attribute values with custom, user-friendly labels
|
|
70
|
+
|
|
71
|
+
**Example**: Display a technical attribute like `cf.cplace.solution.internalCode` with a friendlier label "Product Code" for business users.
|
|
72
|
+
|
|
73
|
+
**Configuration**:
|
|
74
|
+
- `ATTRIBUTE_NAME`: `cf.cplace.solution.internalCode`
|
|
75
|
+
- `LOCALIZED_ALTERNATIVE_LABEL`: {"en": "Product Code", "de": "Produktcode"}
|
|
76
|
+
- `WITH_LABEL`: `true`
|
|
77
|
+
- `WITH_VALUE`: `true`
|
|
78
|
+
- `IN_PLACE_EDITING`: `false`
|
|
79
|
+
|
|
80
|
+
**Benefits**:
|
|
81
|
+
- Improve UX with domain-specific terminology
|
|
82
|
+
- Support multiple languages with localized labels
|
|
83
|
+
- Hide technical attribute names from end users
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
#### 3. Quick Edit Interface
|
|
88
|
+
|
|
89
|
+
**Scenario**: Enable rapid editing of specific attributes without opening full edit forms
|
|
90
|
+
|
|
91
|
+
**Example**: Allow users to quickly update task status or priority directly from a page view.
|
|
92
|
+
|
|
93
|
+
**Configuration**:
|
|
94
|
+
- `ATTRIBUTE_NAME`: `cf.cplace.solution.status`
|
|
95
|
+
- `WITH_LABEL`: `true`
|
|
96
|
+
- `WITH_VALUE`: `true`
|
|
97
|
+
- `IN_PLACE_EDITING`: `true`
|
|
98
|
+
- `RELOAD_AFTER_CHANGE`: `true` (if other widgets depend on this attribute)
|
|
99
|
+
|
|
100
|
+
**Benefits**:
|
|
101
|
+
- Reduce clicks and page transitions
|
|
102
|
+
- Improve user productivity for frequent updates
|
|
103
|
+
- Maintain context while editing
|
|
104
|
+
|
|
105
|
+
**Note**: The widget wraps the attribute in a `<span class="cplace-single-attribute">` with JavaScript handling for in-place editing.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
#### 4. Conditional Attribute Display
|
|
110
|
+
|
|
111
|
+
**Scenario**: Show/hide attributes based on dynamic conditions
|
|
112
|
+
|
|
113
|
+
**Example**: Display "Rejection Reason" only when a request's status is "Rejected", or show "Approval Date" only for approved items.
|
|
114
|
+
|
|
115
|
+
**Configuration**:
|
|
116
|
+
- `ATTRIBUTE_NAME`: `cf.cplace.solution.rejectionReason`
|
|
117
|
+
- `SHOW_ATTRIBUTE_SCRIPT`: cplaceJS script
|
|
118
|
+
- Script bindings: `targetEntity`, `embeddingPage`
|
|
119
|
+
|
|
120
|
+
```javascript
|
|
121
|
+
// Example: Only show rejection reason if status is 'Rejected'
|
|
122
|
+
return targetEntity.get('cf.cplace.solution.status') === 'Rejected';
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Benefits**:
|
|
126
|
+
- Reduce visual clutter by hiding irrelevant fields
|
|
127
|
+
- Implement state-dependent UIs
|
|
128
|
+
- Create dynamic forms that adapt to data
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
#### 5. Parent Page Attribute Display
|
|
133
|
+
|
|
134
|
+
**Scenario**: Display attributes from a parent page in a hierarchical structure
|
|
135
|
+
|
|
136
|
+
**Example**: Show project-level attributes on task pages without duplicating data.
|
|
137
|
+
|
|
138
|
+
**Configuration**:
|
|
139
|
+
- `TARGET_ENTITY`: (leave empty)
|
|
140
|
+
- `USE_PARENT`: `true`
|
|
141
|
+
- `ATTRIBUTE_NAME`: `cf.cplace.solution.projectBudget`
|
|
142
|
+
|
|
143
|
+
**Use case**:
|
|
144
|
+
- Hierarchical page structures (projects → tasks → subtasks)
|
|
145
|
+
- Avoid data duplication
|
|
146
|
+
- Show contextual information from parent entities
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
#### 6. Label-Only Display
|
|
151
|
+
|
|
152
|
+
**Scenario**: Show just the attribute label without its value
|
|
153
|
+
|
|
154
|
+
**Example**: Create headers or section labels using attribute names.
|
|
155
|
+
|
|
156
|
+
**Configuration**:
|
|
157
|
+
- `ATTRIBUTE_NAME`: `cf.cplace.solution.description`
|
|
158
|
+
- `WITH_LABEL`: `true`
|
|
159
|
+
- `WITH_VALUE`: `false`
|
|
160
|
+
|
|
161
|
+
**Note**: According to code validation (line 371-372), you cannot set both `WITH_LABEL` and `WITH_VALUE` to false - at least one must be enabled.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
#### 7. Value-Only Display (Clean Display)
|
|
166
|
+
|
|
167
|
+
**Scenario**: Show attribute values without labels in compact layouts
|
|
168
|
+
|
|
169
|
+
**Example**: Display status badges, icons, or values in dense UIs where labels would be redundant.
|
|
170
|
+
|
|
171
|
+
**Configuration**:
|
|
172
|
+
- `ATTRIBUTE_NAME`: `cf.cplace.solution.status`
|
|
173
|
+
- `WITH_LABEL`: `false`
|
|
174
|
+
- `WITH_VALUE`: `true`
|
|
175
|
+
- `IN_PLACE_EDITING`: `false`
|
|
176
|
+
|
|
177
|
+
**Behavior**: When embedded in a regular page (not DummyWidgetContainer), uses `getCleanValueRepresentation()` which renders:
|
|
178
|
+
- **References**: As clickable links
|
|
179
|
+
- **Enumerations**: With icons and colors
|
|
180
|
+
- **Attributes**: As plain values
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
#### 8. Embedded in Attributes Group Widget
|
|
185
|
+
|
|
186
|
+
**Scenario**: Build custom forms by embedding multiple single attribute widgets in an Attributes Group layout
|
|
187
|
+
|
|
188
|
+
**Example**: Create a two-column form where left column shows general info and right column shows technical details.
|
|
189
|
+
|
|
190
|
+
**Configuration**:
|
|
191
|
+
- Embedded within `cf.cplace.platform.attributesGroup` widget
|
|
192
|
+
- `SINGLE_COLUMN` setting inherited from parent widget
|
|
193
|
+
- Multiple single attribute widgets arranged in rows and columns
|
|
194
|
+
|
|
195
|
+
**Benefits**:
|
|
196
|
+
- Maximum layout flexibility
|
|
197
|
+
- Mix different widget types (single attributes + other widgets)
|
|
198
|
+
- Responsive to parent widget settings
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
### When to Use This Widget
|
|
203
|
+
|
|
204
|
+
Choose `cf.platform.singleAttribute` when you need:
|
|
205
|
+
|
|
206
|
+
- **Specific Attribute Display**: Show one particular attribute, not all attributes
|
|
207
|
+
- **Custom Labels**: Alternative or localized labels instead of default names
|
|
208
|
+
- **In-Place Editing**: Quick editing without form submission
|
|
209
|
+
- **Conditional Visibility**: Show/hide based on business logic
|
|
210
|
+
- **Layout Precision**: Exact placement of individual attributes in custom layouts
|
|
211
|
+
- **Value-Only Display**: Clean rendering without labels
|
|
212
|
+
- **Parent Navigation**: Display attributes from parent pages
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
### When NOT to Use This Widget
|
|
217
|
+
|
|
218
|
+
Use alternatives when:
|
|
219
|
+
|
|
220
|
+
- **All Attributes Needed**: Use `cf.platform.attributes` (Attributes widget) for complete display
|
|
221
|
+
- **Multiple Attributes with Custom Layout**: Use `cf.cplace.platform.attributesGroup` (Attributes Group widget) for complex layouts
|
|
222
|
+
- **Table-Connected Display**: Use `cf.platform.connectedSingleAttribute` for displaying attributes from selected table rows
|
|
223
|
+
- **Simple Default Display**: Standard Attributes widget may be simpler for basic needs
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Configuration Concepts
|
|
228
|
+
|
|
229
|
+
### Configuration Parameters Overview
|
|
230
|
+
|
|
231
|
+
The widget provides 11 configuration parameters grouped into several categories:
|
|
232
|
+
|
|
233
|
+
#### 1. Target Entity Selection
|
|
234
|
+
|
|
235
|
+
**1.1 TARGET_ENTITY** (Page Reference, optional)
|
|
236
|
+
- **Default**: Current embedding page
|
|
237
|
+
- **Purpose**: Specify which page's attribute to display
|
|
238
|
+
- **Type**: `SinglePageReferenceAttributeDef`
|
|
239
|
+
- **Constraint**: Links to any page type
|
|
240
|
+
- **Help**: "The page of which an attribute is shown. Leave empty for current page."
|
|
241
|
+
|
|
242
|
+
**1.2 USE_PARENT** (Boolean, default: false)
|
|
243
|
+
- **Purpose**: Display attribute from the parent page instead of the target entity
|
|
244
|
+
- **Use case**: Hierarchical structures where child pages need parent information
|
|
245
|
+
- **Behavior**: If enabled and target entity has a parent, uses parent entity
|
|
246
|
+
|
|
247
|
+
**Note**: When embedded in a DummyWidgetContainer (within Attributes Group), these parameters are hidden and inherited from the parent configuration.
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
#### 2. Attribute Selection
|
|
252
|
+
|
|
253
|
+
**2.1 ATTRIBUTE_NAME** (String Enumeration, required)
|
|
254
|
+
- **Internal Name**: `cf.platform.quotedAttributeName`
|
|
255
|
+
- **Purpose**: Select which attribute to display
|
|
256
|
+
- **Type**: `SingleStringAttributeDef` with `DynamicStringEnumerationConstraint`
|
|
257
|
+
- **Provider**: `AttributeNameEnumerationProvider`
|
|
258
|
+
- **Options**: Dynamic list of available attributes from target entity type
|
|
259
|
+
- **Custom Attributes**: Names like `cf.cplace.solution.status` (quoted)
|
|
260
|
+
- **Built-in Attributes**: Feature names like `name`, `creator`, `created`
|
|
261
|
+
- **Sorting**: Alphabetically by localized display name
|
|
262
|
+
- **Migration**: Handles legacy unquoted names (deprecated `UNQUOTED_ATTRIBUTE_NAME`)
|
|
263
|
+
|
|
264
|
+
**Implementation Details**:
|
|
265
|
+
- The enumeration provider analyzes the target entity's type definition
|
|
266
|
+
- Lists all custom attributes from `getAttributeDefinitions()`
|
|
267
|
+
- Lists all built-in features from `getFeaturesInSearchIndexExceptDummyAttributes()`
|
|
268
|
+
- Options show localized names but store technical attribute names
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
#### 3. Display Options
|
|
273
|
+
|
|
274
|
+
**3.1 WITH_LABEL** (Boolean, default: false)
|
|
275
|
+
- **Purpose**: Show the attribute name/label
|
|
276
|
+
- **When true**: Displays the attribute label (or alternative label if configured)
|
|
277
|
+
- **When false**: Hides the label, shows only value
|
|
278
|
+
|
|
279
|
+
**3.2 WITH_VALUE** (Boolean, default: true)
|
|
280
|
+
- **Purpose**: Show the attribute value
|
|
281
|
+
- **When true**: Displays the attribute's current value
|
|
282
|
+
- **When false**: Shows only the label
|
|
283
|
+
- **Help**: "Determines if the attribute value should be shown. If not, the parameter 'Show attribute name' has to be set, and only the localized display name of the attribute will be shown."
|
|
284
|
+
|
|
285
|
+
**Validation**: At least one of `WITH_LABEL` or `WITH_VALUE` must be `true` (validated in `isConfigurationComplete()` line 371-372).
|
|
286
|
+
|
|
287
|
+
**3.3 LOCALIZED_ALTERNATIVE_LABEL** (Localized String, optional)
|
|
288
|
+
- **Purpose**: Use a custom label instead of the attribute's default name
|
|
289
|
+
- **Type**: `SingleLocalizedStringAttributeDef`
|
|
290
|
+
- **Format**: Multi-language support (e.g., {"en": "Project Code", "de": "Projektcode"})
|
|
291
|
+
- **Behavior**: If empty, uses attribute's default localized name
|
|
292
|
+
- **Migration**: Replaces deprecated `ALTERNATIVE_LABEL` (plain string)
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
#### 4. Editing Behavior
|
|
297
|
+
|
|
298
|
+
**4.1 IN_PLACE_EDITING** (Boolean, default: false)
|
|
299
|
+
- **Purpose**: Enable inline editing without form submission
|
|
300
|
+
- **When true**: Attribute becomes editable directly in the display
|
|
301
|
+
- **Implementation**: Uses `ShowControlSubstitution` with `NO_IN_PLACE_EDITING` parameter
|
|
302
|
+
- **Frontend**: Wrapped in `<span class="cplace-single-attribute">` with JavaScript handler
|
|
303
|
+
|
|
304
|
+
**4.2 RELOAD_AFTER_CHANGE** (Boolean, default: false)
|
|
305
|
+
- **Purpose**: Reload the parent grouped widget after attribute value changes
|
|
306
|
+
- **Use case**: When other widgets depend on this attribute's value
|
|
307
|
+
- **Behavior**: Triggers page/widget refresh after edit
|
|
308
|
+
- **State**: Passed to frontend as `reloadAfterChange` in widget state
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
#### 5. Layout Control
|
|
313
|
+
|
|
314
|
+
**5.1 SINGLE_COLUMN** (Boolean, default: false)
|
|
315
|
+
- **Purpose**: Display attribute in single-column layout instead of two-column
|
|
316
|
+
- **Relevance**: Only effective when `WITH_LABEL` is `true`
|
|
317
|
+
- **Help**: "Only is relevant if the attribute name is also shown."
|
|
318
|
+
- **Inheritance**: When embedded in Attributes Group widget, inherited from parent's `SINGLE_COLUMN` setting
|
|
319
|
+
- **Implementation**: Passed to `ShowControlSubstitution` as `SHOW_IN_ONE_COLUMN` parameter
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
#### 6. Conditional Visibility
|
|
324
|
+
|
|
325
|
+
**6.1 SHOW_ATTRIBUTE_SCRIPT** (cplaceJS Script, optional)
|
|
326
|
+
- **Purpose**: Dynamically determine if attribute should be shown
|
|
327
|
+
- **Type**: `SingleStringAttributeDef` with `ScriptConstraint`
|
|
328
|
+
- **Bindings**:
|
|
329
|
+
- `targetEntity`: The entity whose attribute is displayed
|
|
330
|
+
- `embeddingPage`: The page where the widget is embedded
|
|
331
|
+
- **Behavior**:
|
|
332
|
+
- If script is empty: Attribute always shown (if feature exists)
|
|
333
|
+
- If script evaluates to `false`: Attribute is hidden (returns empty string)
|
|
334
|
+
- If script evaluates to `true` or any truthy value: Attribute is shown
|
|
335
|
+
- **Evaluation**: Performed by `ConnectedSingleAttributeHandler.evaluateShowAttributeScript()`
|
|
336
|
+
- **Help**: "A cplaceJS script to determine if the attribute should be shown. If the provided script is not empty AND if it evaluates to false, the attribute will be hidden."
|
|
337
|
+
|
|
338
|
+
**Example Scripts**:
|
|
339
|
+
|
|
340
|
+
```javascript
|
|
341
|
+
// Show only for specific status
|
|
342
|
+
return targetEntity.get('cf.cplace.solution.status') === 'In Progress';
|
|
343
|
+
|
|
344
|
+
// Show based on user permissions
|
|
345
|
+
return embeddingPage.get('cf.cplace.solution.owner') === cplace.session().user();
|
|
346
|
+
|
|
347
|
+
// Show if value is not empty
|
|
348
|
+
return targetEntity.get('cf.cplace.solution.description') !== null;
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
#### 7. Frontend Technology
|
|
354
|
+
|
|
355
|
+
**7.1 USE_NEW_FRONTEND** (Boolean, copied from WidgetTypes.FRONTEND_CONFIGURATION_MIXIN)
|
|
356
|
+
- **Purpose**: Toggle between legacy HTML template and new Angular component rendering
|
|
357
|
+
- **When true**: Uses `<cf-wc-bridge>` Angular component
|
|
358
|
+
- **When false**: Uses legacy `<span class="cplace-single-attribute">` with template rendering
|
|
359
|
+
- **State**: Different state objects passed to frontend based on this flag
|
|
360
|
+
- New: `SingleAttributeWidgetComponentInputs` wrapping `SingleAttributeWidgetState`
|
|
361
|
+
- Old: Simple JSON with `reloadAfterChange`, `attributeParameterName`, `widgetId`
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
### Configuration Type Definition
|
|
366
|
+
|
|
367
|
+
**TypeDef**: `CONFIGURATION.TYPE` (line 284-299)
|
|
368
|
+
|
|
369
|
+
Includes all configuration attributes:
|
|
370
|
+
```java
|
|
371
|
+
public static final TypeDef TYPE = new TypeDef(
|
|
372
|
+
KIND,
|
|
373
|
+
TARGET_ENTITY, // Page selection
|
|
374
|
+
USE_PARENT, // Parent navigation
|
|
375
|
+
UNQUOTED_ATTRIBUTE_NAME, // Deprecated
|
|
376
|
+
ATTRIBUTE_NAME, // Current attribute selection
|
|
377
|
+
WITH_VALUE, // Display value
|
|
378
|
+
WITH_LABEL, // Display label
|
|
379
|
+
ALTERNATIVE_LABEL, // Deprecated
|
|
380
|
+
LOCALIZED_ALTERNATIVE_LABEL, // Alternative label
|
|
381
|
+
IN_PLACE_EDITING, // Editing
|
|
382
|
+
SINGLE_COLUMN, // Layout
|
|
383
|
+
RELOAD_AFTER_CHANGE, // Refresh behavior
|
|
384
|
+
SHOW_ATTRIBUTE_SCRIPT, // Conditional visibility
|
|
385
|
+
USE_NEW_FRONTEND // Technology toggle
|
|
386
|
+
);
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
### Configuration Visibility Rules
|
|
392
|
+
|
|
393
|
+
**Conditional Display** (`showPropertyInEdit()`, line 432-451):
|
|
394
|
+
|
|
395
|
+
When embedded in `DummyWidgetContainer` (inside Attributes Group), the following properties are **hidden**:
|
|
396
|
+
- `TARGET_ENTITY`: Inherited from parent widget
|
|
397
|
+
- `USE_PARENT`: Inherited from parent widget
|
|
398
|
+
- `SINGLE_COLUMN`: Inherited from parent widget
|
|
399
|
+
- `USE_NEW_FRONTEND`: Inherited from parent widget
|
|
400
|
+
|
|
401
|
+
Always hidden (deprecated):
|
|
402
|
+
- `UNQUOTED_ATTRIBUTE_NAME`: Migrated to `ATTRIBUTE_NAME`
|
|
403
|
+
- `ALTERNATIVE_LABEL`: Migrated to `LOCALIZED_ALTERNATIVE_LABEL`
|
|
404
|
+
|
|
405
|
+
---
|
|
406
|
+
|
|
407
|
+
### Configuration Validation
|
|
408
|
+
|
|
409
|
+
**Completeness Check** (`isConfigurationComplete()`, line 360-392):
|
|
410
|
+
|
|
411
|
+
A configuration is complete when:
|
|
412
|
+
|
|
413
|
+
1. **Base validation**: `super.isConfigurationComplete()` passes
|
|
414
|
+
2. **Attribute selected**: `ATTRIBUTE_NAME` is not empty
|
|
415
|
+
3. **Display option**: At least one of `WITH_LABEL` or `WITH_VALUE` is `true`
|
|
416
|
+
4. **Attribute exists**: The selected attribute exists in at least one target type definition
|
|
417
|
+
- For custom attributes: Checks `getAttributeDefinitionByName()`
|
|
418
|
+
- For built-in attributes: Checks `getFeatureOrNull()`
|
|
419
|
+
|
|
420
|
+
If any check fails, configuration is incomplete and widget may show error message.
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## Context and Related Widgets
|
|
425
|
+
|
|
426
|
+
### Widget Family: Attribute Display Widgets
|
|
427
|
+
|
|
428
|
+
The cplace platform provides several widgets for displaying attributes, each serving different use cases:
|
|
429
|
+
|
|
430
|
+
| Widget | Purpose | Attributes Shown | Configuration Level | Primary Use Case |
|
|
431
|
+
|--------|---------|------------------|---------------------|------------------|
|
|
432
|
+
| **cf.platform.attributes** | Show all attributes | All (automatic) | None | Complete attribute overview, default forms |
|
|
433
|
+
| **cf.platform.singleAttribute** | Show one attribute | One (selected) | High (11 params) | Precise single attribute control with custom labels |
|
|
434
|
+
| **cf.cplace.platform.attributesGroup** | Show selected attributes | Multiple (manual layout) | Very High | Custom forms with complex layouts |
|
|
435
|
+
| **cf.platform.connectedSingleAttribute** | Show attribute from table row | One (from selection) | High + Connection | Dynamic attribute display based on table selection |
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
### Comparison: cf.platform.singleAttribute vs. Related Widgets
|
|
440
|
+
|
|
441
|
+
#### vs. cf.platform.attributes
|
|
442
|
+
|
|
443
|
+
| Aspect | cf.platform.singleAttribute | cf.platform.attributes |
|
|
444
|
+
|--------|----------------------------|------------------------|
|
|
445
|
+
| **Attributes Shown** | One (manually selected) | All (automatic) |
|
|
446
|
+
| **Configuration** | 11 parameters | None |
|
|
447
|
+
| **Label Customization** | Yes (alternative labels) | No |
|
|
448
|
+
| **Conditional Display** | Yes (cplaceJS script) | No |
|
|
449
|
+
| **In-place Editing** | Direct inline editing | Form-based editing |
|
|
450
|
+
| **Layout Control** | Single/double column | Fixed vertical list |
|
|
451
|
+
| **Use Case** | Precise control over one attribute | Quick display of all data |
|
|
452
|
+
|
|
453
|
+
#### vs. cf.cplace.platform.attributesGroup
|
|
454
|
+
|
|
455
|
+
| Aspect | cf.platform.singleAttribute | cf.cplace.platform.attributesGroup |
|
|
456
|
+
|--------|-----------------------------|-------------------------------------|
|
|
457
|
+
| **Scope** | Single attribute | Multiple attributes + widgets |
|
|
458
|
+
| **Layout** | Individual widget placement | Row/column grid system |
|
|
459
|
+
| **Embedding** | Standalone or within group | Standalone, contains other widgets |
|
|
460
|
+
| **Configuration** | Per-attribute settings | Layout + child widget configurations |
|
|
461
|
+
| **Complexity** | Simple | Complex |
|
|
462
|
+
| **Typical Usage** | Building block | Container/orchestrator |
|
|
463
|
+
|
|
464
|
+
**Relationship**: `cf.platform.singleAttribute` is designed to be embedded within `cf.cplace.platform.attributesGroup` widgets. The group widget provides the layout structure, while single attribute widgets populate individual cells.
|
|
465
|
+
|
|
466
|
+
**Implementation Note**: `canBeEmbeddedInsideWidgetOfType()` (line 792-794) returns `true` only for `AttributesGroupWidgetDefinition.class`.
|
|
467
|
+
|
|
468
|
+
#### vs. cf.platform.connectedSingleAttribute
|
|
469
|
+
|
|
470
|
+
| Aspect | cf.platform.singleAttribute | cf.platform.connectedSingleAttribute |
|
|
471
|
+
|--------|----------------------------|-------------------------------------|
|
|
472
|
+
| **Data Source** | Fixed page (embedding or selected) | Dynamic (from table selection) |
|
|
473
|
+
| **Selection Mode** | Static configuration | Dynamic user selection |
|
|
474
|
+
| **Update Behavior** | Static (page reload to change) | Real-time (selection changes) |
|
|
475
|
+
| **Use Case** | Fixed attribute display | Master-detail interfaces |
|
|
476
|
+
| **Configuration** | Similar parameters + target entity | Similar parameters + connection config |
|
|
477
|
+
|
|
478
|
+
**Key Difference**: The "connected" variant implements `ISingleEntitySelectionProducer` interface and reacts to entity selections from connected table widgets.
|
|
479
|
+
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
### Embedding Rules and Restrictions
|
|
483
|
+
|
|
484
|
+
#### Where This Widget Can Be Embedded
|
|
485
|
+
|
|
486
|
+
**Allowed**:
|
|
487
|
+
1. **CustomEntity pages**: Standard entity pages with type definitions
|
|
488
|
+
2. **Rich string content**: Can be embedded in rich text fields
|
|
489
|
+
3. **Widget containers**: Specifically within `AttributesGroupWidgetDefinition`
|
|
490
|
+
|
|
491
|
+
**Validation**: `checkEmbeddableIn()` (line 336-338)
|
|
492
|
+
```java
|
|
493
|
+
checkIsEmbeddedInRichStringOrInWidget(entity, embedding);
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
This allows embedding:
|
|
497
|
+
- Directly on pages
|
|
498
|
+
- Inside rich text attributes
|
|
499
|
+
- Within compatible widget containers (Attributes Group)
|
|
500
|
+
|
|
501
|
+
#### Embedding Context Detection
|
|
502
|
+
|
|
503
|
+
The widget determines its embedding context in `init()` (line 544-583):
|
|
504
|
+
|
|
505
|
+
**Case 1: Embedded in DummyWidgetContainer** (inside Attributes Group)
|
|
506
|
+
- `embeddingEntity`: The page where the Attributes Group widget is embedded
|
|
507
|
+
- `singleColumn`: Inherited from parent widget's setting
|
|
508
|
+
- Configuration: Some parameters hidden in edit mode
|
|
509
|
+
|
|
510
|
+
**Case 2: Direct Embedding** (on page or rich string)
|
|
511
|
+
- `embeddingEntity`: The page itself
|
|
512
|
+
- `singleColumn`: Uses widget's own setting
|
|
513
|
+
- Configuration: All parameters visible in edit mode
|
|
514
|
+
|
|
515
|
+
---
|
|
516
|
+
|
|
517
|
+
### Template and Rendering
|
|
518
|
+
|
|
519
|
+
#### Template File
|
|
520
|
+
|
|
521
|
+
**Location**: `cf.cplace.platform/src/main/resources/cf/cplace/platform/frontend/widgets/singleAttributeWidgetDefinition.htm`
|
|
522
|
+
|
|
523
|
+
**Content** (line 1):
|
|
524
|
+
```html
|
|
525
|
+
$[useNewFrontend$<cf-wc-bridge ng-cloak route="cplace-single-attribute-widget" name="cf-platform" remoteurl="$cfPlatformAppRemoteUrl()$" data="$singleAttributeWidgetState$"></cf-wc-bridge>$]useNewFrontend[$<span class="cplace-single-attribute" cplace-single-attribute="$state$" data-qa-element-name="$internalName$">$value$</span>$useNewFrontend]$
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
**Structure**:
|
|
529
|
+
- **Conditional rendering** based on `useNewFrontend` flag
|
|
530
|
+
- **New Frontend**: Angular component via `<cf-wc-bridge>`
|
|
531
|
+
- Route: `cplace-single-attribute-widget`
|
|
532
|
+
- State: `singleAttributeWidgetState` (JSON)
|
|
533
|
+
- **Legacy Frontend**: HTML span with JavaScript directive
|
|
534
|
+
- Class: `cplace-single-attribute`
|
|
535
|
+
- Directive: `cplace-single-attribute="$state$"`
|
|
536
|
+
- Content: `$value$` (rendered attribute)
|
|
537
|
+
- QA Element: `data-qa-element-name="$internalName$"` for testing
|
|
538
|
+
|
|
539
|
+
#### Template Substitutions
|
|
540
|
+
|
|
541
|
+
**WidgetTemplateSubstitution** (`widgetSubstitution()`, line 523-719):
|
|
542
|
+
|
|
543
|
+
**Substitution Variables**:
|
|
544
|
+
|
|
545
|
+
1. **useNewFrontend** (Conditional)
|
|
546
|
+
- Type: `ConditionalSubstitution`
|
|
547
|
+
- Purpose: Controls template branching
|
|
548
|
+
|
|
549
|
+
2. **singleAttributeWidgetState** (New Frontend Only)
|
|
550
|
+
- Type: JSON string (HTML attribute escaped)
|
|
551
|
+
- Content: `SingleAttributeWidgetComponentInputs` wrapping `SingleAttributeWidgetState`
|
|
552
|
+
- Generated by: `getWidgetState()` method
|
|
553
|
+
|
|
554
|
+
3. **state** (Legacy Frontend Only)
|
|
555
|
+
- Type: JSON string (HTML attribute escaped)
|
|
556
|
+
- Content: `{ reloadAfterChange, attributeParameterName, widgetId }`
|
|
557
|
+
|
|
558
|
+
4. **value** (Legacy Frontend Only)
|
|
559
|
+
- Type: HTML content (no escaping)
|
|
560
|
+
- Generated by: `showAttribute()` method
|
|
561
|
+
- Uses: `threadLocalNestedPrintingContext` to prevent infinite recursion
|
|
562
|
+
|
|
563
|
+
5. **internalName** (Legacy Frontend Only)
|
|
564
|
+
- Type: Attribute name (HTML attribute escaped)
|
|
565
|
+
- Purpose: Test automation and debugging
|
|
566
|
+
|
|
567
|
+
#### Attribute Rendering Methods
|
|
568
|
+
|
|
569
|
+
**showAttribute()** (line 621-694):
|
|
570
|
+
|
|
571
|
+
**Rendering Logic**:
|
|
572
|
+
|
|
573
|
+
1. **Validation**:
|
|
574
|
+
- Check if `targetEntity` exists → Returns `entityNotFound` message
|
|
575
|
+
- Check if `feature` exists → Returns empty string
|
|
576
|
+
- Check if hidden by extension → Returns empty string
|
|
577
|
+
- Evaluate `SHOW_ATTRIBUTE_SCRIPT` → Returns empty string if should hide
|
|
578
|
+
|
|
579
|
+
2. **Read Configuration**:
|
|
580
|
+
- `withValue`, `withLabel`, `inPlaceEditing` from widget config
|
|
581
|
+
- `localizedAlternativeLabel` from widget config (or empty)
|
|
582
|
+
|
|
583
|
+
3. **Cycle Prevention**:
|
|
584
|
+
- Track `targetEntity.uid + '/' + attributeName` in thread-local set
|
|
585
|
+
- Prevent infinite recursion if attribute references create cycles
|
|
586
|
+
- Return `configurationError` message if cycle detected
|
|
587
|
+
|
|
588
|
+
4. **Type Validation**:
|
|
589
|
+
- For custom attributes: Verify attribute exists in type definition
|
|
590
|
+
- Return `null` if attribute not found
|
|
591
|
+
|
|
592
|
+
5. **Rendering Strategy** (three paths):
|
|
593
|
+
|
|
594
|
+
**Path A: Clean Value Representation** (no label, no editing, not in dummy)
|
|
595
|
+
- Uses: `getCleanValueRepresentation(feature)`
|
|
596
|
+
- Renders: Plain values, links for references, enumerations with icons
|
|
597
|
+
|
|
598
|
+
**Path B: Label Only** (no value, no editing)
|
|
599
|
+
- Uses: Alternative label or `feature.getLabelOrName().get()`
|
|
600
|
+
- Renders: Plain text label
|
|
601
|
+
|
|
602
|
+
**Path C: Standard Show Control** (default)
|
|
603
|
+
- Uses: `FunctionsHelper.proxy("show", feature, ...)`
|
|
604
|
+
- Parameters:
|
|
605
|
+
- `NO_VALUE`: Inverted `withValue`
|
|
606
|
+
- `NO_LABEL`: Inverted `withLabel`
|
|
607
|
+
- `NO_IN_PLACE_EDITING`: Inverted `inPlaceEditing`
|
|
608
|
+
- `ALTERNATIVE_LABEL`: Custom label text
|
|
609
|
+
- `SHOW_IN_ONE_COLUMN`: `singleColumn` setting
|
|
610
|
+
- `PARAMETER_HIDE_OVERRIDDEN`: Flag
|
|
611
|
+
- Renders: Full show control with label, value, and optional editing
|
|
612
|
+
|
|
613
|
+
**getCleanValueRepresentation()** (line 721-751):
|
|
614
|
+
|
|
615
|
+
Handles different feature types:
|
|
616
|
+
|
|
617
|
+
- **CustomAttribute**: Uses `ValuesWithConstraintSubstitutions` template
|
|
618
|
+
- **TypeLayoutAttribute / CustomTypeAttribute**: Renders as link
|
|
619
|
+
- **Regular Attribute**: Renders as plain value
|
|
620
|
+
- **OneReference**: Renders as link (handles `InheritRightsOnePersonReference`)
|
|
621
|
+
- **ManyReference**: Renders as comma-separated links (handles `InheritRightsManyReference`)
|
|
622
|
+
|
|
623
|
+
---
|
|
624
|
+
|
|
625
|
+
### Widget Title Generation
|
|
626
|
+
|
|
627
|
+
**getTitle()** (line 697-717):
|
|
628
|
+
|
|
629
|
+
**Logic**:
|
|
630
|
+
1. Collect all possible attribute display names from target type definitions
|
|
631
|
+
2. For custom attributes: Use `getLocalizedName()` from `AttributeDefinition`
|
|
632
|
+
3. For built-in attributes: Use `getLabelOrName().get()` from `Feature`
|
|
633
|
+
4. Sort alphabetically and join with `, ` separator
|
|
634
|
+
5. Return as dynamic message
|
|
635
|
+
|
|
636
|
+
**Use case**: Displayed in widget chrome/frame or layout editors.
|
|
637
|
+
|
|
638
|
+
**Example**: If attribute exists in multiple type definitions with different names, shows all: "Status, State"
|
|
639
|
+
|
|
640
|
+
---
|
|
641
|
+
|
|
642
|
+
## Implementation Details
|
|
643
|
+
|
|
644
|
+
### Widget Definition Properties
|
|
645
|
+
|
|
646
|
+
| Property | Value |
|
|
647
|
+
|----------|-------|
|
|
648
|
+
| **Widget Kind** | `cf.platform.singleAttribute` |
|
|
649
|
+
| **Definition Class** | `SingleAttributeWidgetDefinition` |
|
|
650
|
+
| **Package** | `cf.cplace.platform.frontend.widgets` |
|
|
651
|
+
| **Icon** | `fa-pen-square` |
|
|
652
|
+
| **App** | `PlatformPlugin.INSTANCE().platformApp` |
|
|
653
|
+
| **Configuration Type** | `CONFIGURATION.TYPE` (11 attributes) |
|
|
654
|
+
| **Template** | `singleAttributeWidgetDefinition.htm` |
|
|
655
|
+
| **Widget Name (EN)** | "Single Attribute of a page" |
|
|
656
|
+
| **Widget Name (DE)** | "Einzelnes Attribut einer Seite" |
|
|
657
|
+
|
|
658
|
+
---
|
|
659
|
+
|
|
660
|
+
### Migration and Backward Compatibility
|
|
661
|
+
|
|
662
|
+
#### Attribute Name Migration
|
|
663
|
+
|
|
664
|
+
**Original Implementation** (pre-4.36):
|
|
665
|
+
- Only custom attributes supported
|
|
666
|
+
- Names stored unquoted in `UNQUOTED_ATTRIBUTE_NAME`
|
|
667
|
+
- Format: Simple name (e.g., `status`)
|
|
668
|
+
|
|
669
|
+
**Current Implementation** (since 4.36):
|
|
670
|
+
- Both custom and built-in attributes supported
|
|
671
|
+
- Names stored quoted in `ATTRIBUTE_NAME`
|
|
672
|
+
- Format: Fully qualified name (e.g., `cf.cplace.solution.status` or `name`)
|
|
673
|
+
|
|
674
|
+
**Migration Process** (`migrateWidgetConfiguration()`, line 398-429):
|
|
675
|
+
|
|
676
|
+
1. Check if `ATTRIBUTE_NAME` is empty
|
|
677
|
+
2. If empty, read `UNQUOTED_ATTRIBUTE_NAME`
|
|
678
|
+
3. If unquoted name exists:
|
|
679
|
+
- If already quoted: Use as-is
|
|
680
|
+
- If unquoted: Convert using `CustomAttribute.getNameFromSimpleName()`
|
|
681
|
+
4. Set `ATTRIBUTE_NAME` with converted value
|
|
682
|
+
5. Clear `UNQUOTED_ATTRIBUTE_NAME`
|
|
683
|
+
6. Log migration event
|
|
684
|
+
|
|
685
|
+
**Backward Compatibility**: `getAttributeName()` helper (line 347-357) checks both attributes, preferring the new one.
|
|
686
|
+
|
|
687
|
+
#### Alternative Label Migration
|
|
688
|
+
|
|
689
|
+
**Original**: `ALTERNATIVE_LABEL` (plain string)
|
|
690
|
+
**Current**: `LOCALIZED_ALTERNATIVE_LABEL` (LocalizedString)
|
|
691
|
+
|
|
692
|
+
**Migration**: Handled by `migrateUnlocalizedStringToLocalizedString()` (line 423-428)
|
|
693
|
+
|
|
694
|
+
---
|
|
695
|
+
|
|
696
|
+
### Permission and Security
|
|
697
|
+
|
|
698
|
+
#### Entity-Level Permissions
|
|
699
|
+
|
|
700
|
+
**Read Permission**: Required to view the widget and attribute value
|
|
701
|
+
|
|
702
|
+
**Edit Permission**: Required for in-place editing (when `IN_PLACE_EDITING` is enabled)
|
|
703
|
+
|
|
704
|
+
**Attribute-Level Permissions**: Attributes may have additional read/write restrictions based on type definition
|
|
705
|
+
|
|
706
|
+
#### Attribute Hiding Extensions
|
|
707
|
+
|
|
708
|
+
**Pro-Code Extension Point**: `HideAttributeInGroupedAttributesWidget`
|
|
709
|
+
|
|
710
|
+
**Purpose**: Allow custom code to hide attributes based on business logic
|
|
711
|
+
|
|
712
|
+
**Evaluation Points**:
|
|
713
|
+
1. In `showAttribute()` (line 626): During template rendering
|
|
714
|
+
2. In `shouldShowAttributeValue()` (line 882-885): During state generation
|
|
715
|
+
|
|
716
|
+
**Implementation**:
|
|
717
|
+
```java
|
|
718
|
+
if (HideAttributeInGroupedAttributesWidget.shouldHide(feature, embeddingEntity)) {
|
|
719
|
+
return "";
|
|
720
|
+
}
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
---
|
|
724
|
+
|
|
725
|
+
### State Management
|
|
726
|
+
|
|
727
|
+
#### Widget State Object
|
|
728
|
+
|
|
729
|
+
**Class**: `SingleAttributeWidgetState` (DTO)
|
|
730
|
+
|
|
731
|
+
**Generated by**: `getWidgetState()` (line 803-864)
|
|
732
|
+
|
|
733
|
+
**State Properties**:
|
|
734
|
+
- `targetEntityUid`: UID of entity whose attribute is shown
|
|
735
|
+
- `embeddingEntityUid`: UID of page where widget is embedded
|
|
736
|
+
- `widgetId`: Unique widget identifier
|
|
737
|
+
- `attributeName`: Fully qualified attribute name
|
|
738
|
+
- `withValue`: Display value flag
|
|
739
|
+
- `withLabel`: Display label flag
|
|
740
|
+
- `alternativeLabel`: Custom label text (or null)
|
|
741
|
+
- `noInPlaceEditing`: Inverted `IN_PLACE_EDITING` flag
|
|
742
|
+
- `reload`: `RELOAD_AFTER_CHANGE` flag
|
|
743
|
+
- `singleColumn`: Layout mode
|
|
744
|
+
- `parentWidgetId`: ID of parent Attributes Group widget (or null)
|
|
745
|
+
- `invalidConfigurationMessage`: Error message if incomplete (or null)
|
|
746
|
+
- `showAttribute`: Result of visibility evaluation
|
|
747
|
+
- `attributeValue`: Reserved (currently null)
|
|
748
|
+
|
|
749
|
+
**Usage**:
|
|
750
|
+
- **New Frontend**: Wrapped in `SingleAttributeWidgetComponentInputs` and serialized to JSON
|
|
751
|
+
- **Legacy Frontend**: Partial state (only `reloadAfterChange`, `attributeParameterName`, `widgetId`) serialized to JSON
|
|
752
|
+
|
|
753
|
+
---
|
|
754
|
+
|
|
755
|
+
### Thread-Local Context
|
|
756
|
+
|
|
757
|
+
**Purpose**: Prevent infinite recursion when attributes reference each other
|
|
758
|
+
|
|
759
|
+
**Implementation**: `threadLocalNestedPrintingContext` (line 514-521)
|
|
760
|
+
|
|
761
|
+
**Context Class**: `NestedPrintingContext` with `Set<String> idsForCyclePrevention`
|
|
762
|
+
|
|
763
|
+
**Usage** (in `showAttribute()`):
|
|
764
|
+
1. Build ID: `targetEntity.uid + '/' + attributeName`
|
|
765
|
+
2. Check if ID already in set → Return error
|
|
766
|
+
3. Add ID to set
|
|
767
|
+
4. Render attribute
|
|
768
|
+
5. Remove ID from set
|
|
769
|
+
|
|
770
|
+
**Example Cycle**:
|
|
771
|
+
- Task A displays project attribute
|
|
772
|
+
- Project widget displays "recent task" attribute
|
|
773
|
+
- Recent task is Task A
|
|
774
|
+
- Without cycle prevention: Infinite loop
|
|
775
|
+
- With cycle prevention: Returns `configurationError` message
|
|
776
|
+
|
|
777
|
+
---
|
|
778
|
+
|
|
779
|
+
### Dynamic Attribute Enumeration
|
|
780
|
+
|
|
781
|
+
#### AttributeNameEnumerationProvider
|
|
782
|
+
|
|
783
|
+
**Class**: `AttributeNameEnumerationProvider` (line 109-164)
|
|
784
|
+
|
|
785
|
+
**Extends**: `DynamicEnumerationProvider.DynamicStringEnumerationProvider`
|
|
786
|
+
|
|
787
|
+
**Purpose**: Populate attribute dropdown in widget configuration based on target entity type
|
|
788
|
+
|
|
789
|
+
**Method**: `getStringEnumOptions()` (line 113-127)
|
|
790
|
+
|
|
791
|
+
**Process**:
|
|
792
|
+
1. Verify owner entity is a `WidgetConfiguration`
|
|
793
|
+
2. Get target type definitions using `getTargetTypeDefinitions()`
|
|
794
|
+
3. Collect custom attribute options
|
|
795
|
+
4. Collect built-in attribute options
|
|
796
|
+
5. Sort and return combined list
|
|
797
|
+
|
|
798
|
+
**Custom Attributes** (`getCustomStringEnumOptions()`, line 129-144):
|
|
799
|
+
- Iterate through type definition's attribute definitions
|
|
800
|
+
- Extract simple name from `_name().get()`
|
|
801
|
+
- Convert to fully qualified name using `CustomAttribute.getNameFromSimpleName()`
|
|
802
|
+
- Create option with name and localized display name
|
|
803
|
+
- Use `Set` to deduplicate across multiple type definitions
|
|
804
|
+
|
|
805
|
+
**Built-in Attributes** (`getBuiltinStringEnumOptions()`, line 146-157):
|
|
806
|
+
- Get prototype entity from type definition
|
|
807
|
+
- Iterate through `getFeaturesInSearchIndexExceptDummyAttributes()`
|
|
808
|
+
- Create option with feature name and localized label
|
|
809
|
+
- Use `Set` to deduplicate
|
|
810
|
+
|
|
811
|
+
**Sorting**: `sortOptions()` (line 159-163) sorts by display name using `DynamicEnumerationOption.SORT_BY_NAME`
|
|
812
|
+
|
|
813
|
+
---
|
|
814
|
+
|
|
815
|
+
## Code References
|
|
816
|
+
|
|
817
|
+
### Core Files
|
|
818
|
+
|
|
819
|
+
| Component | Path | Line Range |
|
|
820
|
+
|-----------|------|------------|
|
|
821
|
+
| **Widget Definition** | `cf.cplace.platform/src/main/java/cf/cplace/platform/frontend/widgets/SingleAttributeWidgetDefinition.java` | 83-900 |
|
|
822
|
+
| **Template** | `cf.cplace.platform/src/main/resources/cf/cplace/platform/frontend/widgets/singleAttributeWidgetDefinition.htm` | 1-2 |
|
|
823
|
+
| **English Messages** | `cf.cplace.platform/src/main/resources/cf/cplace/platform/messages_en.properties` | 4306-4323 |
|
|
824
|
+
| **German Messages** | `cf.cplace.platform/src/main/resources/cf/cplace/platform/messages_de.properties` | 4306-4323 |
|
|
825
|
+
|
|
826
|
+
### Key Classes and Methods
|
|
827
|
+
|
|
828
|
+
**Configuration**:
|
|
829
|
+
- `CONFIGURATION.TYPE`: Line 284-299
|
|
830
|
+
- `getConfigurationType()`: Line 324-327
|
|
831
|
+
- `showPropertyInEdit()`: Line 432-451
|
|
832
|
+
- `isConfigurationComplete()`: Line 360-392
|
|
833
|
+
- `migrateWidgetConfiguration()`: Line 398-429
|
|
834
|
+
|
|
835
|
+
**Rendering**:
|
|
836
|
+
- `getContentSubstitution()`: Line 330-333
|
|
837
|
+
- `widgetSubstitution()`: Line 527-719
|
|
838
|
+
- `putSubstitutions()`: Line 586-619
|
|
839
|
+
- `showAttribute()`: Line 621-694
|
|
840
|
+
- `getCleanValueRepresentation()`: Line 721-751
|
|
841
|
+
|
|
842
|
+
**Utility**:
|
|
843
|
+
- `getAttributeName()`: Line 347-357
|
|
844
|
+
- `getTarget()`: Line 454-469
|
|
845
|
+
- `getTargetTypeDefinitions()`: Line 480-507
|
|
846
|
+
- `AttributeNameEnumerationProvider`: Line 109-164
|
|
847
|
+
|
|
848
|
+
**State Management**:
|
|
849
|
+
- `getWidgetState()`: Line 803-864
|
|
850
|
+
- `shouldShowAttributeValue()`: Line 873-899
|
|
851
|
+
|
|
852
|
+
---
|
|
853
|
+
|
|
854
|
+
## Internationalization
|
|
855
|
+
|
|
856
|
+
### English Translations
|
|
857
|
+
|
|
858
|
+
**Widget**:
|
|
859
|
+
- `name`: "Single Attribute of a page"
|
|
860
|
+
|
|
861
|
+
**Configuration Labels**:
|
|
862
|
+
- `entity_name`: "Page"
|
|
863
|
+
- `entity_shortHelp`: "The page of which an attribute is shown. Leave empty for current page."
|
|
864
|
+
- `attributeName_name`: "Attribute name"
|
|
865
|
+
- `withLabel_name`: "Show attribute name"
|
|
866
|
+
- `withValue_name`: "Show attribute value"
|
|
867
|
+
- `withValue_shortHelp`: "Determines if the attribute value should be shown. If not, the parameter 'Show attribute name' has to be set, and only the localized display name of the attribute will be shown."
|
|
868
|
+
- `inPlaceEditing_name`: "Allow in-place editing"
|
|
869
|
+
- `singleColumn_name`: "Show attribute in single column"
|
|
870
|
+
- `singleColumn_shortHelp`: "Only is relevant if the attribute name is also shown."
|
|
871
|
+
- `alternativeLabel_name`: "Alternative Attribute Label"
|
|
872
|
+
- `useParent_name`: "Use parent page"
|
|
873
|
+
- `reloadAfterChange_name`: "Reload grouped widget after attribute change"
|
|
874
|
+
- `showAttributeScript_name`: "Show attribute"
|
|
875
|
+
- `showAttributeScript_shortHelp`: "A cplaceJS script to determine if the attribute should be shown. If the provided script is not empty AND if it evaluates to false, the attribute will be hidden. Use 'targetEntity' to access the target entity and use 'embeddingPage' to access the current embedding entity."
|
|
876
|
+
|
|
877
|
+
**Messages**:
|
|
878
|
+
- `entityNotFound`: "No page selected"
|
|
879
|
+
- `configurationError`: "Configuration error"
|
|
880
|
+
- `configuration_error`: "Configuration error"
|
|
881
|
+
|
|
882
|
+
### German Translations
|
|
883
|
+
|
|
884
|
+
**Widget**:
|
|
885
|
+
- `name`: "Einzelnes Attribut einer Seite"
|
|
886
|
+
|
|
887
|
+
**Configuration Labels**:
|
|
888
|
+
- `entity_name`: "Seite"
|
|
889
|
+
- `entity_shortHelp`: "Die Seite, deren Attribut angezeigt werden soll. Lassen Sie den Wert leer, um die aktuelle Seite zu verwenden."
|
|
890
|
+
- `attributeName_name`: "Attributname"
|
|
891
|
+
- `withLabel_name`: "Auch den Attributnamen anzeigen"
|
|
892
|
+
- `withValue_name`: "Attributwert anzeigen"
|
|
893
|
+
- `withValue_shortHelp`: "Bestimmt, ob der Wert des Attributs angezeigt werden soll. Wenn nein, muss die Option 'Auch den Attributnamen anzeigen' gesetzt sein, und es wird nur der Anzeigename des Attributs ausgegeben."
|
|
894
|
+
- `inPlaceEditing_name`: "Bearbeitung zulassen"
|
|
895
|
+
- `singleColumn_name`: "Attribut einspaltig anzeigen"
|
|
896
|
+
- `singleColumn_shortHelp`: "Attribut einspaltig anzeigen hat nur Auswirkungen wenn Attributname angezeigt wird."
|
|
897
|
+
- `alternativeLabel_name`: "Alternatives Attributlabel"
|
|
898
|
+
- `useParent_name`: "Übergeordnete Seite verwenden"
|
|
899
|
+
- `reloadAfterChange_name`: "Gruppierungswidget bei Wertänderung des Attributs neu laden"
|
|
900
|
+
- `showAttributeScript_name`: "Attribut anzeigen"
|
|
901
|
+
- `showAttributeScript_shortHelp`: "Ein cplaceJS Skript um zu bestimmen ob das Attribut angezeigt werden soll oder nicht. Wenn das angegebene Skript nicht leer ist UND wenn dessen Ergebnis false liefert, wird das Attribut versteckt. Über 'targetEntity' kann auf die aktuell ausgewählte Entität zugegriffen werden, und 'embeddingPage' kann verwendet werden, um auf die aktuelle Einbettungseinheit Entität."
|
|
902
|
+
|
|
903
|
+
---
|
|
904
|
+
|
|
905
|
+
## Architecture and Design Patterns
|
|
906
|
+
|
|
907
|
+
### Design Philosophy
|
|
908
|
+
|
|
909
|
+
The `cf.platform.singleAttribute` widget embodies the "flexible building block" principle:
|
|
910
|
+
|
|
911
|
+
- **Composability**: Designed to be embedded within larger layouts (Attributes Group widgets)
|
|
912
|
+
- **Configurability**: Extensive parameters for precise control
|
|
913
|
+
- **Reusability**: Same widget serves multiple use cases through configuration
|
|
914
|
+
- **Separation of Concerns**: Rendering logic separated into template, state, and helper methods
|
|
915
|
+
|
|
916
|
+
### Template Pattern Usage
|
|
917
|
+
|
|
918
|
+
The widget uses cplace's template system with substitution pattern:
|
|
919
|
+
|
|
920
|
+
```
|
|
921
|
+
WidgetTemplateSubstitution
|
|
922
|
+
→ putSubstitutions()
|
|
923
|
+
→ Conditional: useNewFrontend
|
|
924
|
+
→ PrintSubstitution: state / singleAttributeWidgetState
|
|
925
|
+
→ PrintSubstitution: value (calls showAttribute())
|
|
926
|
+
→ PrintSubstitution: internalName
|
|
927
|
+
```
|
|
928
|
+
|
|
929
|
+
**showAttribute() Call Chain**:
|
|
930
|
+
```
|
|
931
|
+
showAttribute()
|
|
932
|
+
→ FunctionsHelper.proxy("show", feature, parameters)
|
|
933
|
+
→ ShowControlSubstitution
|
|
934
|
+
→ Template rendering of attribute control
|
|
935
|
+
```
|
|
936
|
+
|
|
937
|
+
### State Object Pattern
|
|
938
|
+
|
|
939
|
+
The widget implements a clear separation between configuration and runtime state:
|
|
940
|
+
|
|
941
|
+
**Configuration** (persisted):
|
|
942
|
+
- Stored in `WidgetConfiguration` entity
|
|
943
|
+
- 11 configuration attributes
|
|
944
|
+
- Editable by users with permissions
|
|
945
|
+
|
|
946
|
+
**Runtime State** (computed):
|
|
947
|
+
- Generated by `getWidgetState()` at render time
|
|
948
|
+
- Combines configuration, entity data, and evaluation results
|
|
949
|
+
- Passed to frontend as JSON
|
|
950
|
+
|
|
951
|
+
**Benefits**:
|
|
952
|
+
- Clean architecture
|
|
953
|
+
- Frontend can be stateless
|
|
954
|
+
- Easy to debug and test
|
|
955
|
+
|
|
956
|
+
### Cycle Prevention Pattern
|
|
957
|
+
|
|
958
|
+
Uses thread-local storage to prevent infinite recursion:
|
|
959
|
+
|
|
960
|
+
```java
|
|
961
|
+
ThreadLocalNestingContext<NestedPrintingContext>
|
|
962
|
+
→ createContext() → new NestedPrintingContext()
|
|
963
|
+
→ idsForCyclePrevention: Set<String>
|
|
964
|
+
```
|
|
965
|
+
|
|
966
|
+
**Pattern**:
|
|
967
|
+
1. Store currently rendering entity+attribute combinations in thread-local set
|
|
968
|
+
2. Check before rendering each attribute
|
|
969
|
+
3. Clean up after rendering
|
|
970
|
+
|
|
971
|
+
**Use case**: Prevents infinite loops when attributes reference each other in complex object graphs.
|
|
972
|
+
|
|
973
|
+
### Dynamic Enumeration Pattern
|
|
974
|
+
|
|
975
|
+
**Challenge**: Attribute dropdown options depend on target entity type, which varies per widget instance
|
|
976
|
+
|
|
977
|
+
**Solution**: `DynamicEnumerationProvider` pattern
|
|
978
|
+
- Provider class registered in configuration
|
|
979
|
+
- Invoked at runtime when widget is configured
|
|
980
|
+
- Analyzes current context (widget configuration, embedding entity)
|
|
981
|
+
- Returns type-specific options
|
|
982
|
+
|
|
983
|
+
**Benefits**:
|
|
984
|
+
- Type-safe attribute selection
|
|
985
|
+
- Prevents configuration errors
|
|
986
|
+
- Better UX with searchable dropdowns
|
|
987
|
+
|
|
988
|
+
---
|
|
989
|
+
|
|
990
|
+
## Related Research Documents
|
|
991
|
+
|
|
992
|
+
- **AttributesWidgetDefinition**: `/Users/thomasbuechner/dev/repos/cplace-ga-products/specs/2026-01-16/cf-platform-attributes/research.md`
|
|
993
|
+
- **AttributesGroupWidgetDefinition**: `/Users/thomasbuechner/dev/repos/cplace-ga-products/specs/2026-01-16/cf-cplace-platform-attributesGroup/research.md`
|
|
994
|
+
- **ConnectedSingleAttributeWidgetDefinition**: `/Users/thomasbuechner/dev/repos/cplace-ga-products/specs/2026-01-16/cf-platform-connectedSingleAttribute/research.md`
|
|
995
|
+
|
|
996
|
+
---
|
|
997
|
+
|
|
998
|
+
## Key Takeaways
|
|
999
|
+
|
|
1000
|
+
1. **Maximum Flexibility**: 11 configuration parameters provide fine-grained control over single attribute display
|
|
1001
|
+
2. **Composable Design**: Intended to be embedded in Attributes Group widgets for complex layouts
|
|
1002
|
+
3. **Conditional Logic**: cplaceJS script support enables dynamic, business-rule-driven UIs
|
|
1003
|
+
4. **Migration Ready**: Handles legacy configurations and supports gradual frontend migration
|
|
1004
|
+
5. **Type-Safe Configuration**: Dynamic enumeration ensures only valid attributes can be selected
|
|
1005
|
+
6. **Edit Optimization**: In-place editing reduces user friction for frequent updates
|
|
1006
|
+
7. **Multi-Language Support**: Localized alternative labels for international deployments
|
|
1007
|
+
8. **Parent Navigation**: Hierarchical page structures supported via `USE_PARENT` flag
|
|
1008
|
+
9. **Cycle Prevention**: Thread-local tracking prevents infinite recursion in complex object graphs
|
|
1009
|
+
10. **Dual Frontend**: Supports both legacy and modern Angular architecture
|
|
1010
|
+
|
|
1011
|
+
---
|
|
1012
|
+
|
|
1013
|
+
## Recommendations for Documentation
|
|
1014
|
+
|
|
1015
|
+
### Short Description
|
|
1016
|
+
|
|
1017
|
+
"Displays a single attribute from a page with flexible label, value, and editing options, including in-place editing and conditional visibility."
|
|
1018
|
+
|
|
1019
|
+
### Use Case Summary
|
|
1020
|
+
|
|
1021
|
+
**Best suited for**:
|
|
1022
|
+
- Custom page layouts requiring precise attribute placement
|
|
1023
|
+
- In-place editing of specific attributes without form submission
|
|
1024
|
+
- Conditional attribute display based on business logic
|
|
1025
|
+
- Alternative or localized attribute labels
|
|
1026
|
+
- Building blocks within Attributes Group layouts
|
|
1027
|
+
- Parent page attribute display in hierarchical structures
|
|
1028
|
+
|
|
1029
|
+
**Consider alternatives when**:
|
|
1030
|
+
- All attributes need to be displayed → Use `cf.platform.attributes`
|
|
1031
|
+
- Complex multi-attribute layouts needed → Use `cf.cplace.platform.attributesGroup` (as container)
|
|
1032
|
+
- Table-connected dynamic display needed → Use `cf.platform.connectedSingleAttribute`
|
|
1033
|
+
|
|
1034
|
+
### Configuration Guidance
|
|
1035
|
+
|
|
1036
|
+
**Essential Settings**:
|
|
1037
|
+
1. **ATTRIBUTE_NAME** (required): Select which attribute to display
|
|
1038
|
+
2. **WITH_LABEL** / **WITH_VALUE**: At least one must be enabled
|
|
1039
|
+
|
|
1040
|
+
**Common Configurations**:
|
|
1041
|
+
|
|
1042
|
+
**Standard Display**: Show label and value
|
|
1043
|
+
- `WITH_LABEL`: true
|
|
1044
|
+
- `WITH_VALUE`: true
|
|
1045
|
+
- `IN_PLACE_EDITING`: false
|
|
1046
|
+
|
|
1047
|
+
**Quick Edit**: Enable inline editing
|
|
1048
|
+
- `WITH_LABEL`: true
|
|
1049
|
+
- `WITH_VALUE`: true
|
|
1050
|
+
- `IN_PLACE_EDITING`: true
|
|
1051
|
+
- `RELOAD_AFTER_CHANGE`: true (if other widgets depend on this)
|
|
1052
|
+
|
|
1053
|
+
**Custom Label**: Use alternative label
|
|
1054
|
+
- `LOCALIZED_ALTERNATIVE_LABEL`: {"en": "Custom Name", "de": "Benutzerdefinierter Name"}
|
|
1055
|
+
- `WITH_LABEL`: true
|
|
1056
|
+
- `WITH_VALUE`: true
|
|
1057
|
+
|
|
1058
|
+
**Conditional Display**: Show/hide based on logic
|
|
1059
|
+
- `SHOW_ATTRIBUTE_SCRIPT`: cplaceJS code
|
|
1060
|
+
- Example: `return targetEntity.get('status') === 'Active';`
|
|
1061
|
+
|
|
1062
|
+
**Parent Navigation**: Display parent attribute
|
|
1063
|
+
- `USE_PARENT`: true
|
|
1064
|
+
- `ATTRIBUTE_NAME`: Attribute from parent entity
|
|
1065
|
+
|
|
1066
|
+
**Layout Options**:
|
|
1067
|
+
- `SINGLE_COLUMN`: true (full-width display when label is shown)
|
|
1068
|
+
- `SINGLE_COLUMN`: false (default two-column layout)
|
|
1069
|
+
|
|
1070
|
+
---
|
|
1071
|
+
|
|
1072
|
+
## Appendix: Configuration Matrix
|
|
1073
|
+
|
|
1074
|
+
### All Configuration Parameters
|
|
1075
|
+
|
|
1076
|
+
| # | Parameter | Type | Default | Required | Description |
|
|
1077
|
+
|---|-----------|------|---------|----------|-------------|
|
|
1078
|
+
| 1 | `TARGET_ENTITY` | Page Reference | Current page | No | Page whose attribute is displayed |
|
|
1079
|
+
| 2 | `USE_PARENT` | Boolean | false | No | Use parent page instead of target |
|
|
1080
|
+
| 3 | `ATTRIBUTE_NAME` | String Enum | - | Yes | Attribute to display |
|
|
1081
|
+
| 4 | `WITH_LABEL` | Boolean | false | No* | Show attribute label |
|
|
1082
|
+
| 5 | `WITH_VALUE` | Boolean | true | No* | Show attribute value |
|
|
1083
|
+
| 6 | `LOCALIZED_ALTERNATIVE_LABEL` | Localized String | - | No | Custom label |
|
|
1084
|
+
| 7 | `IN_PLACE_EDITING` | Boolean | false | No | Enable inline editing |
|
|
1085
|
+
| 8 | `SINGLE_COLUMN` | Boolean | false | No | Full-width layout |
|
|
1086
|
+
| 9 | `RELOAD_AFTER_CHANGE` | Boolean | false | No | Reload parent widget after edit |
|
|
1087
|
+
| 10 | `SHOW_ATTRIBUTE_SCRIPT` | cplaceJS | - | No | Conditional visibility script |
|
|
1088
|
+
| 11 | `USE_NEW_FRONTEND` | Boolean | - | No | Use Angular component |
|
|
1089
|
+
|
|
1090
|
+
\* At least one of `WITH_LABEL` or `WITH_VALUE` must be true
|
|
1091
|
+
|
|
1092
|
+
---
|
|
1093
|
+
|
|
1094
|
+
**End of Research Document**
|