@sapui5/sap.suite.ui.generic.template 1.148.0 → 1.148.2
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/package.json +1 -1
- package/src/sap/suite/ui/generic/template/.library +1 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_fr_CA.properties +2 -2
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +6 -3
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_fr.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/Actions.fragment.xml +13 -13
- package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartFilterBarWrapper.js +20 -1
- package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
- package/src/sap/suite/ui/generic/template/lib/CRUDManager.js +0 -7
- package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +57 -6
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillAIOrchestrator.js +216 -0
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillApplyHandler.js +325 -0
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillDialogController.js +358 -0
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillFieldCollector.js +848 -0
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillFormRenderer.js +292 -0
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillHandler.js +652 -1071
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillTableRenderer.js +940 -0
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/fragments/EasyFillDialog.fragment.xml +41 -26
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +90 -73
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +35 -8
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +30 -8
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +31 -9
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +30 -8
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +30 -8
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +29 -7
- package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +1 -1
- package/src/sap/suite/ui/generic/template/library.js +1 -1
- package/src/sap/suite/ui/generic/template/themes/base/ObjectPage.less +30 -4
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/ObjectPageSectionHandler.js +0 -282
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/fragments/EasyFillNonUpdatableSmartForm.fragment.xml +0 -18
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/fragments/EasyFillUpdatebleSmartForm.fragment.xml +0 -15
|
@@ -500,11 +500,11 @@ RTA_CONTEXT_MENU_CONFIG=\u914D\u7F6E
|
|
|
500
500
|
|
|
501
501
|
EASY_FILL_TITLE=\u8F7B\u677E\u586B\u5145
|
|
502
502
|
|
|
503
|
-
EASY_FILL_FIRST_LABEL_TEXT=\u53EF\u4EE5\u4F7F\u7528\u8F7B\u677E\u586B\u5145\u540C\u65F6\u586B\u5145\u591A\u4E2A\u5B57\u6BB5\u3002
|
|
503
|
+
EASY_FILL_FIRST_LABEL_TEXT=\u53EF\u4EE5\u4F7F\u7528\u8F7B\u677E\u586B\u5145\u529F\u80FD\u4EE5\u81EA\u7136\u8BED\u8A00\u540C\u65F6\u586B\u5145\u591A\u4E2A\u5B57\u6BB5\u3002
|
|
504
504
|
|
|
505
|
-
EASY_FILL_SECOND_LABEL_TEXT=\
|
|
505
|
+
EASY_FILL_SECOND_LABEL_TEXT=\u63D0\u4F9B\u4EFB\u4F55\u6709\u52A9\u4E8E AI \u586B\u5145\u76F8\u5E94\u5B57\u6BB5\u7684\u4FE1\u606F\u3002\u8FD8\u53EF\u4EE5\u4E0A\u8F7D\u5305\u542B\u76F8\u5173\u4FE1\u606F\u7684\u6587\u4EF6\u3002
|
|
506
506
|
|
|
507
|
-
EASY_FILL_TEXTAREA_PLACEHOLDER=\
|
|
507
|
+
EASY_FILL_TEXTAREA_PLACEHOLDER=\u63D0\u4F9B\u4EFB\u4F55\u6709\u52A9\u4E8E AI \u586B\u5145\u76F8\u5E94\u5B57\u6BB5\u7684\u4FE1\u606F\u3002\u8BF7\u6CE8\u610F\uFF0CAI \u53EA\u80FD\u534F\u52A9\u5904\u7406\u53EF\u89C1\u5B57\u6BB5\u548C\u884C\u3002
|
|
508
508
|
|
|
509
509
|
EASY_FILL_ILLUSTRATION_TITLE_INITIAL=\u8BA9\u6211\u4EEC\u6765\u586B\u5199\u4E00\u4E9B\u5B57\u6BB5
|
|
510
510
|
|
|
@@ -520,9 +520,7 @@ EASY_FILL_ILLUSTRATION_DESCRIPTION_ERROR=\u4F3C\u4E4E\u51FA\u73B0\u9519\u8BEF\u3
|
|
|
520
520
|
|
|
521
521
|
EASY_FILL_CONFIRM=\u786E\u8BA4
|
|
522
522
|
|
|
523
|
-
AI_LINK_NOTICE_TITLE=\u4F7F\u7528 AI \u521B\u5EFA\u3002
|
|
524
|
-
|
|
525
|
-
AI_WARNING_TEXT=\u5728\u4F7F\u7528\u524D\u5BF9\u7ED3\u679C\u8FDB\u884C\u68C0\u9A8C\u3002
|
|
523
|
+
AI_LINK_NOTICE_TITLE=\u4F7F\u7528 AI \u521B\u5EFA\u3002\u4F7F\u7528\u524D\u5BF9\u7ED3\u679C\u8FDB\u884C\u68C0\u9A8C\u3002
|
|
526
524
|
|
|
527
525
|
EASY_FILL_FILLED_FIELDS=\u5DF2\u586B\u5145\u5B57\u6BB5
|
|
528
526
|
|
|
@@ -534,7 +532,7 @@ EASY_FILL_PROPOSED_VALUES=\u5EFA\u8BAE\u503C
|
|
|
534
532
|
|
|
535
533
|
EASY_FILL_PREVIOUS_VALUES=\u5148\u524D\u503C
|
|
536
534
|
|
|
537
|
-
EASY_FILL_POPOVER_AI_TEXT_1=\u5185\u5BB9\u90E8\u5206\u6216\u5168\u90E8\u7531
|
|
535
|
+
EASY_FILL_POPOVER_AI_TEXT_1=\u5185\u5BB9\u90E8\u5206\u6216\u5168\u90E8\u7531 AI \u751F\u6210\u3002
|
|
538
536
|
|
|
539
537
|
EASY_FILL_POPOVER_AI_TEXT_2=\u7531\u4E8E\u4F7F\u7528\u4E86\u591A\u4E2A\u4FE1\u606F\u6E90\uFF0CAI \u751F\u6210\u7684\u5185\u5BB9\u53EF\u80FD\u6709\u4E0D\u51C6\u786E\u4E4B\u5904\u3002\u4F7F\u7528\u524D\u5BF9\u7ED3\u679C\u8FDB\u884C\u68C0\u9A8C\u3002
|
|
540
538
|
|
|
@@ -543,3 +541,27 @@ EASY_FILL_POPOVER_AI_TITLE=\u4F7F\u7528 AI \u521B\u5EFA
|
|
|
543
541
|
EASYFILL_RESULT_FEEDBACK=\u53CD\u9988\u5DF2\u53D1\u9001
|
|
544
542
|
|
|
545
543
|
EASYFILL_CLEAR_ALL=\u5220\u9664\u67E5\u8BE2
|
|
544
|
+
|
|
545
|
+
EASY_FILL_TABLE_UPDATES_INFO=\u68C0\u6D4B\u5230\u8868\u884C\u66F4\u65B0\uFF0C\u5C06\u5728\u786E\u8BA4\u65F6\u4E88\u4EE5\u5E94\u7528\u3002
|
|
546
|
+
|
|
547
|
+
EASY_FILL_TABLE_VIEW_PREVIOUS=\u5148\u524D
|
|
548
|
+
|
|
549
|
+
EASY_FILL_TABLE_VIEW_NEW=\u65B0
|
|
550
|
+
|
|
551
|
+
EASYFILL_TABLE_READONLY_TAG=\u672A\u586B\u5145\u7A81\u51FA\u663E\u793A\u7684\u5B57\u6BB5
|
|
552
|
+
|
|
553
|
+
EASY_FILL_TABLE_ROW_LABEL=\u884C {0}
|
|
554
|
+
|
|
555
|
+
EASY_FILL_TABLE_VALIDATION_MESSAGE=\u67D0\u4E9B\u8868\u503C\u5BF9\u503C\u5E2E\u52A9\u65E0\u6548\uFF1A{0}\u3002\u66F4\u65B0\u8BF7\u6C42\u5E76\u91CD\u8BD5\u3002
|
|
556
|
+
|
|
557
|
+
EASY_FILL_TABLE_INVALID_CELL_SUFFIX=\uFF08\u65E0\u6548\uFF09
|
|
558
|
+
|
|
559
|
+
EASY_FILL_SECTION_HEADER=\u62AC\u5934
|
|
560
|
+
|
|
561
|
+
EASY_FILL_CONDENSED_VIEW_TOOLTIP=\u5207\u6362\u5230\u7CBE\u7B80\u5E03\u5C40
|
|
562
|
+
|
|
563
|
+
EASY_FILL_DETAILED_VIEW_TOOLTIP=\u5207\u6362\u5230\u5BF9\u8C61\u9875\u9762\u5E03\u5C40
|
|
564
|
+
|
|
565
|
+
EASY_FILL_ENTER_FULL_SCREEN_TOOLTIP=\u6700\u5927\u5316\u5DF2\u586B\u5145\u5B57\u6BB5\u9762\u677F
|
|
566
|
+
|
|
567
|
+
EASY_FILL_EXIT_FULL_SCREEN_TOOLTIP=\u6700\u5C0F\u5316\u5DF2\u586B\u5145\u5B57\u6BB5\u9762\u677F
|
|
@@ -500,11 +500,11 @@ RTA_CONTEXT_MENU_CONFIG=\u7D44\u614B
|
|
|
500
500
|
|
|
501
501
|
EASY_FILL_TITLE=\u7C21\u6613\u586B\u5165
|
|
502
502
|
|
|
503
|
-
EASY_FILL_FIRST_LABEL_TEXT=\u60A8\u53EF\
|
|
503
|
+
EASY_FILL_FIRST_LABEL_TEXT=\u60A8\u53EF\u904B\u7528 [\u7C21\u6613\u586B\u5165] \u529F\u80FD\u4EE5\u4F7F\u7528\u81EA\u7136\u8A9E\u8A00\u540C\u6642\u586B\u5165\u591A\u500B\u6B04\u4F4D\u3002
|
|
504
504
|
|
|
505
|
-
EASY_FILL_SECOND_LABEL_TEXT=\
|
|
505
|
+
EASY_FILL_SECOND_LABEL_TEXT=\u63D0\u4F9B\u5354\u52A9 AI \u586B\u5165\u9069\u7576\u6B04\u4F4D\u7684\u8CC7\u8A0A\uFF0C\u60A8\u4E5F\u53EF\u4E0A\u50B3\u5305\u542B\u76F8\u95DC\u8CC7\u8A0A\u7684\u6A94\u6848\u3002
|
|
506
506
|
|
|
507
|
-
EASY_FILL_TEXTAREA_PLACEHOLDER=\
|
|
507
|
+
EASY_FILL_TEXTAREA_PLACEHOLDER=\u63D0\u4F9B\u5354\u52A9 AI \u586B\u5165\u9069\u7576\u6B04\u4F4D\u7684\u8CC7\u8A0A\u3002\u8ACB\u6CE8\u610F\uFF0CAI \u53EA\u80FD\u5354\u52A9\u586B\u5165\u53EF\u770B\u5230\u7684\u6B04\u4F4D\u548C\u5217\u3002
|
|
508
508
|
|
|
509
509
|
EASY_FILL_ILLUSTRATION_TITLE_INITIAL=\u586B\u5165\u90E8\u4EFD\u6B04\u4F4D
|
|
510
510
|
|
|
@@ -520,9 +520,7 @@ EASY_FILL_ILLUSTRATION_DESCRIPTION_ERROR=\u4F3C\u4E4E\u767C\u751F\u932F\u8AA4\uF
|
|
|
520
520
|
|
|
521
521
|
EASY_FILL_CONFIRM=\u78BA\u8A8D
|
|
522
522
|
|
|
523
|
-
AI_LINK_NOTICE_TITLE=\
|
|
524
|
-
|
|
525
|
-
AI_WARNING_TEXT=\u8ACB\u5728\u4F7F\u7528\u7D50\u679C\u524D\u5148\u52A0\u4EE5\u9A57\u8B49\u3002
|
|
523
|
+
AI_LINK_NOTICE_TITLE=\u4F7F\u7528 AI \u5EFA\u7ACB\u3002\u8ACB\u5728\u4F7F\u7528\u7D50\u679C\u524D\u5148\u9A57\u8B49\u3002
|
|
526
524
|
|
|
527
525
|
EASY_FILL_FILLED_FIELDS=\u5DF2\u586B\u5165\u6B04\u4F4D
|
|
528
526
|
|
|
@@ -534,7 +532,7 @@ EASY_FILL_PROPOSED_VALUES=\u5EFA\u8B70\u503C
|
|
|
534
532
|
|
|
535
533
|
EASY_FILL_PREVIOUS_VALUES=\u5148\u524D\u503C
|
|
536
534
|
|
|
537
|
-
EASY_FILL_POPOVER_AI_TEXT_1=\
|
|
535
|
+
EASY_FILL_POPOVER_AI_TEXT_1=\u90E8\u4EFD\u6216\u5168\u90E8\u5167\u5BB9\u5DF2\u7531 AI \u7522\u751F\u3002
|
|
538
536
|
|
|
539
537
|
EASY_FILL_POPOVER_AI_TEXT_2=\u7531\u65BC\u4F7F\u7528\u591A\u500B\u8CC7\u8A0A\u4F86\u6E90\uFF0C\u4EBA\u5DE5\u667A\u6167\u7522\u751F\u7684\u5167\u5BB9\u53EF\u80FD\u5305\u542B\u4E0D\u6E96\u78BA\u7684\u5167\u5BB9\u3002\u4F7F\u7528\u7522\u751F\u7684\u7D50\u679C\u524D\u8ACB\u5148\u52A0\u4EE5\u9A57\u8B49\u3002
|
|
540
538
|
|
|
@@ -543,3 +541,27 @@ EASY_FILL_POPOVER_AI_TITLE=\u5DF2\u4F7F\u7528 AI \u5EFA\u7ACB
|
|
|
543
541
|
EASYFILL_RESULT_FEEDBACK=\u5DF2\u50B3\u9001\u53CD\u994B
|
|
544
542
|
|
|
545
543
|
EASYFILL_CLEAR_ALL=\u522A\u9664\u67E5\u8A62
|
|
544
|
+
|
|
545
|
+
EASY_FILL_TABLE_UPDATES_INFO=\u5DF2\u5075\u6E2C\u5230\u8868\u683C\u5217\u66F4\u65B0\uFF0C\u7576\u60A8\u78BA\u8A8D\u5F8C\u5C07\u6703\u5957\u7528\u3002
|
|
546
|
+
|
|
547
|
+
EASY_FILL_TABLE_VIEW_PREVIOUS=\u4E0A\u4E00\u500B
|
|
548
|
+
|
|
549
|
+
EASY_FILL_TABLE_VIEW_NEW=\u65B0\u589E
|
|
550
|
+
|
|
551
|
+
EASYFILL_TABLE_READONLY_TAG=\u672A\u586B\u5165\u53CD\u767D\u7684\u6B04\u4F4D
|
|
552
|
+
|
|
553
|
+
EASY_FILL_TABLE_ROW_LABEL=\u5217 {0}
|
|
554
|
+
|
|
555
|
+
EASY_FILL_TABLE_VALIDATION_MESSAGE=\u90E8\u4EFD\u8868\u683C\u503C\u4E0D\u9069\u7528\u65BC\u8F38\u5165\u8F14\u52A9\u8AAA\u660E\uFF1A{0}\u3002\u8ACB\u66F4\u65B0\u8ACB\u6C42\u4E26\u518D\u8A66\u4E00\u6B21\u3002
|
|
556
|
+
|
|
557
|
+
EASY_FILL_TABLE_INVALID_CELL_SUFFIX=(\u7121\u6548)
|
|
558
|
+
|
|
559
|
+
EASY_FILL_SECTION_HEADER=\u8868\u982D
|
|
560
|
+
|
|
561
|
+
EASY_FILL_CONDENSED_VIEW_TOOLTIP=\u5207\u63DB\u81F3\u58D3\u7E2E\u914D\u7F6E
|
|
562
|
+
|
|
563
|
+
EASY_FILL_DETAILED_VIEW_TOOLTIP=\u5207\u63DB\u81F3\u7269\u4EF6\u9801\u9762\u914D\u7F6E
|
|
564
|
+
|
|
565
|
+
EASY_FILL_ENTER_FULL_SCREEN_TOOLTIP=\u6700\u5927\u5316\u586B\u5165\u7684\u6B04\u4F4D\u9762\u677F
|
|
566
|
+
|
|
567
|
+
EASY_FILL_EXIT_FULL_SCREEN_TOOLTIP=\u6700\u5C0F\u5316\u586B\u5165\u7684\u6B04\u4F4D\u9762\u677F
|
|
@@ -3222,7 +3222,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
3222
3222
|
* @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
|
|
3223
3223
|
* @public
|
|
3224
3224
|
* @extends sap.ui.base.Object
|
|
3225
|
-
* @version 1.148.
|
|
3225
|
+
* @version 1.148.2
|
|
3226
3226
|
* @since 1.30.0
|
|
3227
3227
|
* @alias sap.suite.ui.generic.template.lib.NavigationController
|
|
3228
3228
|
*/
|
|
@@ -413,9 +413,17 @@ html[dir='rtl'] .sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageSubSect
|
|
|
413
413
|
|
|
414
414
|
.sapSmartTemplatesObjectPageEasyFillReviewArea {
|
|
415
415
|
background-color: var(--sapShell_Background);
|
|
416
|
-
|
|
416
|
+
height: 100%;
|
|
417
|
+
|
|
418
|
+
.sapUiFormCL .sapUiFormCLElement .sapEasyFillPreviouslyLabel {
|
|
419
|
+
min-width: 5rem;
|
|
420
|
+
}
|
|
417
421
|
|
|
418
|
-
|
|
422
|
+
.sapUxAPBlockContainer {
|
|
423
|
+
min-width: 20rem;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
.sapSmartTemplatesObjectPageEasyFillReviewAreaTitleUpdatable {
|
|
419
427
|
bottom: 1.5rem;
|
|
420
428
|
}
|
|
421
429
|
|
|
@@ -458,6 +466,19 @@ html[dir='rtl'] .sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageSubSect
|
|
|
458
466
|
.sapSmartTemplatesObjectPageEasyFillTablePreview {
|
|
459
467
|
margin-top: 0.5rem;
|
|
460
468
|
}
|
|
469
|
+
|
|
470
|
+
/* For Easy Fill table uneditable fields, the background style
|
|
471
|
+
--sapField_ReadOnly_BackgroundStyle is applied to display dotted lines for the fields */
|
|
472
|
+
.sapUiEasyFillWarningCell {
|
|
473
|
+
background: var(--sapField_ReadOnly_BackgroundStyle) !important;
|
|
474
|
+
background-color: var(--sapField_WarningBackground) !important;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/* For Easy Fill SmartForm read-only fields, keep read-only semantics but show input-like shell */
|
|
478
|
+
.sapUiEasyFillReadOnlyInputLike {
|
|
479
|
+
background: var(--sapField_ReadOnly_BackgroundStyle) !important;
|
|
480
|
+
background-color: var(--sapField_ReadOnly_Background) !important;
|
|
481
|
+
}
|
|
461
482
|
}
|
|
462
483
|
|
|
463
484
|
.sapMDialogScrollCont {
|
|
@@ -467,9 +488,14 @@ html[dir='rtl'] .sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageSubSect
|
|
|
467
488
|
}
|
|
468
489
|
|
|
469
490
|
.sapSmartTemplatesObjectPageEasyFillAINoticePopover {
|
|
470
|
-
width: 22.8125rem;
|
|
471
|
-
|
|
472
491
|
.sapSmartTemplatesObjectPageEasyFillAINotice {
|
|
473
492
|
padding: 1rem 1rem 0.5rem 1rem;
|
|
474
493
|
}
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
.sapUxAPObjectPageHeaderContent .sapUxAPObjectPageHeaderContentItem {
|
|
497
|
+
line-height: 2rem;
|
|
498
|
+
.sapMBtn {
|
|
499
|
+
padding-top: 0px;
|
|
500
|
+
}
|
|
475
501
|
}
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
sap.ui.define([
|
|
2
|
-
],function(){
|
|
3
|
-
"use strict";
|
|
4
|
-
/**
|
|
5
|
-
* This class extracts the what sections are present according to the property from the manifest and EntityType and show it in objectpage
|
|
6
|
-
* Currently it only supports the default annotations from the ObjectPage, In future we should make sure to add Custom Sections and Reusable Components to integrate in it
|
|
7
|
-
* @namespace suite.ui.generic.template.lib.ai.EasyFill.ObjectPageSectionHandler.js
|
|
8
|
-
* @private
|
|
9
|
-
*/
|
|
10
|
-
return {
|
|
11
|
-
getSectionsForObjectPageView: function (oEntityType,oLLMResult,oRb) {
|
|
12
|
-
let aSections = [];
|
|
13
|
-
//Extract the Header Information,Section and SubObject table information
|
|
14
|
-
aSections = aSections.concat(this.getSectionsForHeader(oEntityType,oRb))
|
|
15
|
-
.concat(this.getSectionsForObjectPageFacets(oEntityType));
|
|
16
|
-
const aTree = this.transformToTree(aSections,oEntityType);
|
|
17
|
-
// return aTree;
|
|
18
|
-
return this.filterTreeByLLMResult(aTree,oLLMResult);
|
|
19
|
-
},
|
|
20
|
-
|
|
21
|
-
getSectionsForCondensedView: function (oLLMResult) {
|
|
22
|
-
return this.transformToTreeExpanded(oLLMResult);
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
getSectionsForObjectPageFacets: function (oEntityType) {
|
|
26
|
-
const aSectionFacets = oEntityType["com.sap.vocabularies.UI.v1.Facets"];
|
|
27
|
-
if (aSectionFacets && aSectionFacets.length > 0) {
|
|
28
|
-
return this.extractFacetInfoRecursively(oEntityType,aSectionFacets,[]);
|
|
29
|
-
}
|
|
30
|
-
return [];
|
|
31
|
-
},
|
|
32
|
-
|
|
33
|
-
//We have to write a recursive code, as there might be nested CollectionFacets
|
|
34
|
-
extractFacetInfoRecursively: function(oEntityType,aFacets,aTitle) {
|
|
35
|
-
let aRes = [];
|
|
36
|
-
aFacets.forEach((oFacet) => {
|
|
37
|
-
if (oFacet.RecordType === "com.sap.vocabularies.UI.v1.CollectionFacet") {
|
|
38
|
-
const aInnerFacets = oFacet.Facets;
|
|
39
|
-
if (aInnerFacets && aInnerFacets.length > 0) {
|
|
40
|
-
aRes = aRes.concat(this.extractFacetInfoRecursively(oEntityType,aInnerFacets,aTitle.concat(oFacet.Label.String ? oFacet.Label.String : [])));
|
|
41
|
-
}
|
|
42
|
-
} else {
|
|
43
|
-
aRes = aRes.concat(this.extractSectionInfoFromReferenceFacet(oEntityType,[oFacet],aTitle));
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
return aRes;
|
|
47
|
-
},
|
|
48
|
-
|
|
49
|
-
//For HeaderFacets we only have one section and the rest of the fields will be part of it, currently we are not supporting multiple subsections in the header
|
|
50
|
-
getSectionsForHeader: function (oEntityType,oRb) {
|
|
51
|
-
let aRes = [];
|
|
52
|
-
//Fetch the HeaderInfo and HeaderFacets, if not present return empty array, as we will not be able to find any section without it
|
|
53
|
-
const oHeaderInfo = oEntityType["com.sap.vocabularies.UI.v1.HeaderInfo"];
|
|
54
|
-
const aHeaderFacets = oEntityType["com.sap.vocabularies.UI.v1.HeaderFacets"];
|
|
55
|
-
|
|
56
|
-
if (oHeaderInfo && Object.keys(oHeaderInfo).length > 0) {
|
|
57
|
-
const aKeys = Object.keys(oHeaderInfo).filter(sKey => oHeaderInfo[sKey].RecordType === "com.sap.vocabularies.UI.v1.DataField");
|
|
58
|
-
aKeys?.forEach((sKey) => {
|
|
59
|
-
aRes.push({title:[oRb.getText("EASY_FILL_SECTION_HEADER"),oRb.getText("EASY_FILL_SECTION_HEADER")],property: oHeaderInfo[sKey].Value.Path});
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (aHeaderFacets && aHeaderFacets.length > 0) {
|
|
64
|
-
const aSection = this.extractSectionInfoFromReferenceFacet(oEntityType,aHeaderFacets);
|
|
65
|
-
aSection.forEach((oSection) => {
|
|
66
|
-
oSection.title = [oRb.getText("EASY_FILL_SECTION_HEADER"),oRb.getText("EASY_FILL_SECTION_HEADER")];
|
|
67
|
-
});
|
|
68
|
-
aRes.push(...aSection);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return aRes;
|
|
72
|
-
},
|
|
73
|
-
|
|
74
|
-
//Use it once you get the reference facets, if the sText is already known then we will give that as priority
|
|
75
|
-
extractSectionInfoFromReferenceFacet: function(oEntityType,aFacets,aText = []) {
|
|
76
|
-
// eslint-disable-next-line no-warning-comments
|
|
77
|
-
//TODO: Handle the LineItem Code here only and SemanticObjects for intentbased Navigation
|
|
78
|
-
const aRes = [];
|
|
79
|
-
aFacets.forEach((oFacet) => {
|
|
80
|
-
//We are skipping the IntentBased Navigation for now, as we will be handling it in a different way, as we need to check the SemanticObject and Action for it,
|
|
81
|
-
//so we will be doing it in a different method
|
|
82
|
-
if (oFacet.RecordType === "com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation") {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const aTempText = [...aText];
|
|
87
|
-
const sAnnotationPath = oFacet.Target.AnnotationPath.substring(1);
|
|
88
|
-
const oAnnotation = oEntityType[sAnnotationPath];
|
|
89
|
-
let sTitle = null;
|
|
90
|
-
|
|
91
|
-
if (oFacet?.Label) {
|
|
92
|
-
sTitle = oFacet.Label.String;
|
|
93
|
-
} else if (oAnnotation?.Label) {
|
|
94
|
-
sTitle = oAnnotation.Label.String;
|
|
95
|
-
} else if (oFacet?.Title) {
|
|
96
|
-
sTitle = oFacet.Title.String;
|
|
97
|
-
} else if (oAnnotation?.Title) {
|
|
98
|
-
sTitle = oAnnotation.Title.String;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
// if (oFacet.Label) {
|
|
103
|
-
// sTitle = oFacet.Label.String;
|
|
104
|
-
// } else if (oFacet.Title) {
|
|
105
|
-
// sTitle = oFacet.Title.String;
|
|
106
|
-
// }
|
|
107
|
-
|
|
108
|
-
if (sTitle) {
|
|
109
|
-
aTempText.push(sTitle);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (oAnnotation) {
|
|
113
|
-
if (oAnnotation.Data) {
|
|
114
|
-
oAnnotation.Data.forEach((oData) => {
|
|
115
|
-
if (!this.isSupportedRecordType(oData.RecordType)) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
aRes.push({title:aTempText,property:oData.Value.Path});
|
|
119
|
-
});
|
|
120
|
-
} else if (Array.isArray(oAnnotation)) {
|
|
121
|
-
const aArray = oAnnotation;
|
|
122
|
-
aArray.forEach((oAnno) => {
|
|
123
|
-
if (!this.isSupportedRecordType(oAnno.RecordType)) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
aRes.push({title:aTempText,property:oAnno.Value.Path});
|
|
127
|
-
});
|
|
128
|
-
} else if (oAnnotation.Value && oAnnotation.Value.Path) {
|
|
129
|
-
aRes.push({title:aTempText,property:oAnnotation.Value.Path});
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
return aRes;
|
|
134
|
-
},
|
|
135
|
-
|
|
136
|
-
//We have to support most of the below annotations in our future waves
|
|
137
|
-
isSupportedRecordType: function(sRecordType) {
|
|
138
|
-
if (sRecordType === "com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation" || sRecordType === "com.sap.vocabularies.UI.v1.DataFieldForAnnotation"
|
|
139
|
-
|| sRecordType === "com.sap.vocabularies.UI.v1.DataFieldForAction"
|
|
140
|
-
) {
|
|
141
|
-
return false;
|
|
142
|
-
}
|
|
143
|
-
return true;
|
|
144
|
-
},
|
|
145
|
-
|
|
146
|
-
transformToTreeExpanded: function(oLLMRes) {
|
|
147
|
-
return [
|
|
148
|
-
{
|
|
149
|
-
title: "",
|
|
150
|
-
fields: [],
|
|
151
|
-
children: [{
|
|
152
|
-
title: "",
|
|
153
|
-
fields: Object.keys(oLLMRes),
|
|
154
|
-
id: this.generateId("", Object.keys(oLLMRes))
|
|
155
|
-
}]
|
|
156
|
-
}
|
|
157
|
-
];
|
|
158
|
-
},
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
transformToTree: function (data, oEntityType) {
|
|
162
|
-
const rootMap = {};
|
|
163
|
-
const seen = new Set();
|
|
164
|
-
const that = this;
|
|
165
|
-
|
|
166
|
-
data.forEach(({ title, property }) => {
|
|
167
|
-
if (seen.has(property)) {
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
seen.add(property);
|
|
171
|
-
|
|
172
|
-
let currentMap = rootMap;
|
|
173
|
-
let sTitlePath = "";
|
|
174
|
-
|
|
175
|
-
title.forEach((level, index) => {
|
|
176
|
-
const isLast = index === title.length - 1;
|
|
177
|
-
|
|
178
|
-
// Build cumulative title path: "Header_Header", "GeneralInformation_SalesOrdertotalamount"
|
|
179
|
-
sTitlePath = sTitlePath ? `${sTitlePath}_${level}` : level;
|
|
180
|
-
|
|
181
|
-
if (!currentMap[level]) {
|
|
182
|
-
currentMap[level] = {
|
|
183
|
-
title: level,
|
|
184
|
-
titlePath: sTitlePath, // ✅ Store full path for ID generation later
|
|
185
|
-
fields: [],
|
|
186
|
-
_childrenMap: {}
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (isLast) {
|
|
191
|
-
currentMap[level].fields.push(property);
|
|
192
|
-
} else {
|
|
193
|
-
currentMap = currentMap[level]._childrenMap;
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
// ID is generated here - after all fields are collected
|
|
199
|
-
function convertToArray(oMap) {
|
|
200
|
-
return Object.values(oMap).map((oNode) => ({
|
|
201
|
-
title: oNode.title,
|
|
202
|
-
id: that.generateId(oNode.titlePath, oNode.fields), // ✅ title path + fields combined
|
|
203
|
-
fields: oNode.fields,
|
|
204
|
-
children: oNode._childrenMap ? convertToArray(oNode._childrenMap) : []
|
|
205
|
-
}));
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
return convertToArray(rootMap);
|
|
209
|
-
},
|
|
210
|
-
|
|
211
|
-
generateId: function(sTitlePath, aFields) {
|
|
212
|
-
const sSanitizedTitle = sTitlePath
|
|
213
|
-
.replace(/\s+/g, "_")
|
|
214
|
-
.replace(/[^a-zA-Z0-9_]/g, "")
|
|
215
|
-
.toLowerCase();
|
|
216
|
-
|
|
217
|
-
// Join fields to make it unique per section content
|
|
218
|
-
const sFieldsPart = aFields
|
|
219
|
-
.join("_")
|
|
220
|
-
.replace(/[^a-zA-Z0-9_]/g, "")
|
|
221
|
-
.toLowerCase();
|
|
222
|
-
|
|
223
|
-
return "EasyFillSmartForm_" + sSanitizedTitle + (sFieldsPart ? "_" + sFieldsPart : "");
|
|
224
|
-
},
|
|
225
|
-
|
|
226
|
-
filterTreeByLLMResult: function(aTree, oLLMResult) {
|
|
227
|
-
const aRequestedKeys = Object.keys(oLLMResult);
|
|
228
|
-
const aMatchedKeys = new Set();
|
|
229
|
-
|
|
230
|
-
function generateId(sTitlePath, aFields) {
|
|
231
|
-
const sSanitizedTitle = sTitlePath
|
|
232
|
-
.replace(/\s+/g, "_")
|
|
233
|
-
.replace(/[^a-zA-Z0-9_]/g, "")
|
|
234
|
-
.toLowerCase();
|
|
235
|
-
const sFieldsPart = aFields
|
|
236
|
-
.join("_")
|
|
237
|
-
.replace(/[^a-zA-Z0-9_]/g, "")
|
|
238
|
-
.toLowerCase();
|
|
239
|
-
return "EasyFillSmartForm_" + sSanitizedTitle + (sFieldsPart ? "_" + sFieldsPart : "");
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
function filterNode(oNode, sParentPath) {
|
|
243
|
-
const sTitlePath = sParentPath ? `${sParentPath}_${oNode.title}` : oNode.title;
|
|
244
|
-
|
|
245
|
-
const aFilteredFields = oNode.fields.filter((sField) => {
|
|
246
|
-
if (aRequestedKeys.includes(sField)) {
|
|
247
|
-
aMatchedKeys.add(sField);
|
|
248
|
-
return true;
|
|
249
|
-
}
|
|
250
|
-
return false;
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
const aFilteredChildren = oNode.children
|
|
254
|
-
.map((oChild) => filterNode(oChild, sTitlePath))
|
|
255
|
-
.filter((oChild) => oChild.fields.length > 0 || oChild.children.length > 0);
|
|
256
|
-
|
|
257
|
-
return {
|
|
258
|
-
title: oNode.title,
|
|
259
|
-
id: generateId(sTitlePath, aFilteredFields), // ✅ Regenerate ID with filtered fields
|
|
260
|
-
fields: aFilteredFields,
|
|
261
|
-
children: aFilteredChildren
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
const aFilteredTree = aTree
|
|
266
|
-
.map((oNode) => filterNode(oNode, ""))
|
|
267
|
-
.filter((oNode) => oNode.fields.length > 0 || oNode.children.length > 0);
|
|
268
|
-
|
|
269
|
-
const aUnmatchedKeys = aRequestedKeys.filter((sKey) => !aMatchedKeys.has(sKey));
|
|
270
|
-
if (aUnmatchedKeys.length > 0) {
|
|
271
|
-
aFilteredTree.push({
|
|
272
|
-
title: "unableToFill",
|
|
273
|
-
id: generateId("unableToFill", aUnmatchedKeys),
|
|
274
|
-
fields: aUnmatchedKeys,
|
|
275
|
-
children: []
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
return aFilteredTree;
|
|
280
|
-
}
|
|
281
|
-
};
|
|
282
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:sfo="sap.ui.comp.smartform" xmlns:smartField="sap.ui.comp.smartfield"
|
|
2
|
-
xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
|
|
3
|
-
template:require="{AH: 'sap/suite/ui/generic/template/js/AnnotationHelper'}">
|
|
4
|
-
<Title text="{i18n>EASY_FILL_UNABLE_FILL}" class="sapSmartTemplatesObjectPageEasyFillReviewAreaSmartFormNonUpdatableTitle"/>
|
|
5
|
-
<MessageStrip
|
|
6
|
-
text="{i18n>EASY_FILL_WARNING_MESSAGE}"
|
|
7
|
-
showIcon="true"
|
|
8
|
-
type="Warning">
|
|
9
|
-
</MessageStrip>
|
|
10
|
-
<sfo:SmartForm
|
|
11
|
-
id="EasyFillNonUpdatebleForm"
|
|
12
|
-
class = "sapSmartTemplatesObjectPageEasyFillReviewAreaSmartForm sapSmartTemplatesObjectPageEasyFillReviewAreaSmartFormNonUpdatable"
|
|
13
|
-
editable="false">
|
|
14
|
-
<sfo:layout>
|
|
15
|
-
<sfo:ColumnLayout columnsM="2" columnsL="3" columnsXL="4"/>
|
|
16
|
-
</sfo:layout>
|
|
17
|
-
</sfo:SmartForm>
|
|
18
|
-
</core:FragmentDefinition>
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
<core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:sfo="sap.ui.comp.smartform" xmlns:smartField="sap.ui.comp.smartfield"
|
|
2
|
-
xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
|
|
3
|
-
template:require="{AH: 'sap/suite/ui/generic/template/js/AnnotationHelper'}">
|
|
4
|
-
|
|
5
|
-
<Title class="sapSmartTemplatesObjectPageEasyFillReviewAreaTitleUpdatable" text="{i18n>EASY_FILL_FILLED_FIELDS}"></Title>
|
|
6
|
-
<sfo:SmartForm
|
|
7
|
-
id="EasyFillUpdatebleForm"
|
|
8
|
-
validationMode = "Async"
|
|
9
|
-
class="sapSmartTemplatesObjectPageEasyFillReviewAreaSmartForm"
|
|
10
|
-
editable="true">
|
|
11
|
-
<sfo:layout>
|
|
12
|
-
<sfo:ColumnLayout columnsM="2" columnsL="3" columnsXL="4"/>
|
|
13
|
-
</sfo:layout>
|
|
14
|
-
</sfo:SmartForm>
|
|
15
|
-
</core:FragmentDefinition>
|