@sap-ux/preview-middleware 0.20.0 → 0.20.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.
Files changed (96) hide show
  1. package/dist/client/adp/add-fragment.js +46 -46
  2. package/dist/client/adp/api-handler.js +159 -159
  3. package/dist/client/adp/command-executor.js +75 -75
  4. package/dist/client/adp/command-executor.ts +4 -4
  5. package/dist/client/adp/control-utils.js +44 -44
  6. package/dist/client/adp/controllers/AddFragment.controller.js +1 -1
  7. package/dist/client/adp/controllers/AddFragment.controller.ts +2 -2
  8. package/dist/client/adp/controllers/AddTableColumnFragments.controller.js +1 -1
  9. package/dist/client/adp/controllers/AddTableColumnFragments.controller.ts +2 -2
  10. package/dist/client/adp/controllers/BaseDialog.controller.js +2 -13
  11. package/dist/client/adp/controllers/BaseDialog.controller.ts +7 -25
  12. package/dist/client/adp/controllers/ControllerExtension.controller.js +268 -210
  13. package/dist/client/adp/controllers/ControllerExtension.controller.ts +110 -22
  14. package/dist/client/adp/controllers/ExtensionPoint.controller.js +139 -139
  15. package/dist/client/adp/controllers/FileExistsDialog.controller.js +66 -66
  16. package/dist/client/adp/dialog-factory.js +135 -135
  17. package/dist/client/adp/dialog-factory.ts +3 -1
  18. package/dist/client/adp/extend-controller.js +48 -0
  19. package/dist/client/adp/extend-controller.ts +49 -0
  20. package/dist/client/adp/init-dialogs.js +143 -163
  21. package/dist/client/adp/init-dialogs.ts +42 -20
  22. package/dist/client/adp/init.js +9 -1
  23. package/dist/client/adp/init.ts +6 -1
  24. package/dist/client/adp/quick-actions/add-new-subpage-quick-action-base.js +96 -96
  25. package/dist/client/adp/quick-actions/common/add-controller-to-page.js +74 -60
  26. package/dist/client/adp/quick-actions/common/add-controller-to-page.ts +25 -3
  27. package/dist/client/adp/quick-actions/common/create-page-action.js +54 -54
  28. package/dist/client/adp/quick-actions/common/op-add-custom-section.js +39 -39
  29. package/dist/client/adp/quick-actions/common/op-add-header-field.js +67 -67
  30. package/dist/client/adp/quick-actions/common/utils.js +18 -18
  31. package/dist/client/adp/quick-actions/control-types.js +23 -23
  32. package/dist/client/adp/quick-actions/dialog-enablement-validator.js +24 -24
  33. package/dist/client/adp/quick-actions/enablement-validator.js +4 -4
  34. package/dist/client/adp/quick-actions/fe-v2/add-new-subpage.js +81 -81
  35. package/dist/client/adp/quick-actions/fe-v2/change-table-actions.js +67 -67
  36. package/dist/client/adp/quick-actions/fe-v2/change-table-columns.js +101 -101
  37. package/dist/client/adp/quick-actions/fe-v2/create-table-action.js +107 -107
  38. package/dist/client/adp/quick-actions/fe-v2/create-table-custom-column.js +99 -99
  39. package/dist/client/adp/quick-actions/fe-v2/lr-enable-semantic-date-range-filter-bar.js +78 -78
  40. package/dist/client/adp/quick-actions/fe-v2/lr-enable-table-filtering.js +77 -77
  41. package/dist/client/adp/quick-actions/fe-v2/lr-enable-variant-management.js +69 -69
  42. package/dist/client/adp/quick-actions/fe-v2/lr-toggle-clear-filter-bar.js +59 -59
  43. package/dist/client/adp/quick-actions/fe-v2/op-enable-empty-row-mode.js +93 -93
  44. package/dist/client/adp/quick-actions/fe-v2/op-enable-variant-management.js +84 -84
  45. package/dist/client/adp/quick-actions/fe-v2/registry.js +77 -77
  46. package/dist/client/adp/quick-actions/fe-v2/utils.js +116 -116
  47. package/dist/client/adp/quick-actions/fe-v4/add-new-subpage.js +138 -138
  48. package/dist/client/adp/quick-actions/fe-v4/change-table-actions.js +79 -79
  49. package/dist/client/adp/quick-actions/fe-v4/change-table-columns.js +75 -75
  50. package/dist/client/adp/quick-actions/fe-v4/create-table-action.js +53 -53
  51. package/dist/client/adp/quick-actions/fe-v4/create-table-custom-column.js +49 -49
  52. package/dist/client/adp/quick-actions/fe-v4/enable-variant-management.js +81 -81
  53. package/dist/client/adp/quick-actions/fe-v4/lr-enable-semantic-date-range-filter-bar.js +56 -56
  54. package/dist/client/adp/quick-actions/fe-v4/lr-enable-table-filtering.js +84 -84
  55. package/dist/client/adp/quick-actions/fe-v4/lr-toggle-clear-filter-bar.js +53 -53
  56. package/dist/client/adp/quick-actions/fe-v4/op-enable-empty-row-mode.js +89 -89
  57. package/dist/client/adp/quick-actions/fe-v4/registry.js +60 -60
  58. package/dist/client/adp/quick-actions/fe-v4/utils.js +72 -72
  59. package/dist/client/adp/quick-actions/load.js +44 -44
  60. package/dist/client/adp/quick-actions/quick-action-base.js +64 -64
  61. package/dist/client/adp/ui/ControllerExtension.fragment.xml +14 -3
  62. package/dist/client/adp/utils.js +259 -218
  63. package/dist/client/adp/utils.ts +55 -7
  64. package/dist/client/cpe/additional-change-info/add-xml-additional-info.js +75 -75
  65. package/dist/client/cpe/changes/generic-change.js +326 -326
  66. package/dist/client/cpe/changes/index.js +10 -10
  67. package/dist/client/cpe/changes/validator.js +39 -39
  68. package/dist/client/cpe/connector-service.ts +1 -0
  69. package/dist/client/cpe/documentation.js +164 -164
  70. package/dist/client/cpe/feature-service.js +36 -36
  71. package/dist/client/cpe/logger.js +30 -30
  72. package/dist/client/cpe/outline/editable.js +37 -37
  73. package/dist/client/cpe/outline/nodes.js +203 -203
  74. package/dist/client/cpe/quick-actions/quick-action-definition.js +4 -4
  75. package/dist/client/cpe/quick-actions/registry.js +143 -143
  76. package/dist/client/cpe/quick-actions/utils.js +92 -92
  77. package/dist/client/cpe/types.js +4 -4
  78. package/dist/client/cpe/ui5-utils.js +33 -33
  79. package/dist/client/cpe/utils.js +111 -111
  80. package/dist/client/flp/WorkspaceConnector.js +92 -92
  81. package/dist/client/flp/common.js +28 -28
  82. package/dist/client/flp/enableFakeConnector.js +89 -89
  83. package/dist/client/flp/homepage/Component.js +14 -14
  84. package/dist/client/flp/initCdm.js +117 -117
  85. package/dist/client/flp/initConnectors.js +28 -28
  86. package/dist/client/flp/initRta.js +178 -178
  87. package/dist/client/i18n.js +56 -56
  88. package/dist/client/messagebundle.properties +5 -0
  89. package/dist/client/utils/additional-change-info.js +54 -54
  90. package/dist/client/utils/application.js +32 -32
  91. package/dist/client/utils/core.js +84 -84
  92. package/dist/client/utils/error.js +19 -19
  93. package/dist/client/utils/fe-v2.js +56 -56
  94. package/dist/client/utils/fe-v4.js +140 -140
  95. package/dist/client/utils/version.js +104 -104
  96. package/package.json +4 -4
@@ -1,212 +1,270 @@
1
- "use strict";
2
-
3
- sap.ui.define(["sap/m/MessageToast", "sap/ui/core/library", "sap/ui/model/json/JSONModel", "../api-handler", "./BaseDialog.controller", "../utils"], function (MessageToast, sap_ui_core_library, JSONModel, ___api_handler, __BaseDialog, ___utils) {
4
- "use strict";
5
-
6
- function _interopRequireDefault(obj) {
7
- return obj && obj.__esModule && typeof obj.default !== "undefined" ? obj.default : obj;
8
- }
9
- /** sap.ui.core */
10
- const ValueState = sap_ui_core_library["ValueState"];
11
- /** sap.ui.base */
12
- const getExistingController = ___api_handler["getExistingController"];
13
- const readControllers = ___api_handler["readControllers"];
14
- const writeChange = ___api_handler["writeChange"];
15
- const writeController = ___api_handler["writeController"];
16
- const BaseDialog = _interopRequireDefault(__BaseDialog);
17
- const getControllerInfo = ___utils["getControllerInfo"];
18
- /**
19
- * @namespace open.ux.preview.client.adp.controllers
20
- */
21
- const ControllerExtension = BaseDialog.extend("open.ux.preview.client.adp.controllers.ControllerExtension", {
22
- constructor: function _constructor(name, overlays, rta, telemetryData) {
23
- BaseDialog.prototype.constructor.call(this, name, telemetryData);
24
- this.rta = rta;
25
- this.overlays = overlays;
26
- this.model = new JSONModel();
27
- },
28
- /**
29
- * Setups the Dialog and the JSON Model
30
- *
31
- * @param {Dialog} dialog - Dialog instance
32
- */
33
- setup: async function _setup(dialog) {
34
- this.dialog = dialog;
35
- this.setEscapeHandler();
36
- await this.buildDialogData();
37
- this.dialog.setModel(this.model);
38
- this.dialog.open();
39
- },
40
- /**
41
- * Handles fragment name input change
42
- *
43
- * @param event Event
44
- */
45
- onControllerNameInputChange: function _onControllerNameInputChange(event) {
46
- const input = event.getSource();
47
- const beginBtn = this.dialog.getBeginButton();
48
- const controllerName = input.getValue();
49
- const controllerList = this.model.getProperty('/controllersList');
50
- const updateDialogState = function (valueState) {
51
- let valueStateText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
52
- input.setValueState(valueState).setValueStateText(valueStateText);
53
- beginBtn.setEnabled(valueState === ValueState.Success);
54
- };
55
- if (controllerName.length <= 0) {
56
- updateDialogState(ValueState.None);
57
- this.model.setProperty('/newControllerName', null);
58
- return;
59
- }
60
- const fileExists = controllerList.some(f => f.controllerName === controllerName);
61
- if (fileExists) {
62
- updateDialogState(ValueState.Error, 'Enter a different name. The controller name that you entered already exists in your project.');
63
- return;
64
- }
65
- const isValidName = /^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(controllerName);
66
- if (!isValidName) {
67
- updateDialogState(ValueState.Error, 'The controller name cannot contain white spaces or special characters.');
68
- return;
69
- }
70
- if (controllerName.length > 64) {
71
- updateDialogState(ValueState.Error, 'A controller file name cannot contain more than 64 characters.');
72
- return;
73
- }
74
- updateDialogState(ValueState.Success);
75
- this.model.setProperty('/newControllerName', controllerName);
76
- },
77
- /**
78
- * Handles create button press
79
- *
80
- * @param event Event
81
- */
82
- onCreateBtnPress: async function _onCreateBtnPress(event) {
83
- const source = event.getSource();
84
- await BaseDialog.prototype.onCreateBtnPressHandler.call(this);
85
- const controllerExists = this.model.getProperty('/controllerExists');
86
- if (!controllerExists) {
87
- source.setEnabled(false);
88
- const controllerName = this.model.getProperty('/newControllerName');
89
- const viewId = this.model.getProperty('/viewId');
90
- await this.createNewController(controllerName, viewId);
91
- } else {
92
- const controllerPath = this.model.getProperty('/controllerPath');
93
- window.open(`vscode://file${controllerPath}`);
94
- }
95
- this.handleDialogClose();
96
- },
97
- /**
98
- * Builds data that is used in the dialog.
99
- */
100
- buildDialogData: async function _buildDialogData() {
101
- const selectorId = this.overlays.getId();
102
- const overlayControl = sap.ui.getCore().byId(selectorId);
103
- const {
104
- controllerName,
105
- viewId
106
- } = getControllerInfo(overlayControl);
107
- const data = await this.getExistingController(controllerName);
108
- if (data) {
109
- if (data?.controllerExists) {
110
- this.updateModelForExistingController(data);
111
- } else {
112
- this.updateModelForNewController(viewId, data.isTsSupported);
113
- await this.getControllers();
114
- }
115
- }
116
- },
117
- /**
118
- * Updates the model properties for an existing controller.
119
- *
120
- * @param {CodeExtResponse} data - Existing controller data from the server.
121
- */
122
- updateModelForExistingController: function _updateModelForExistingController(data) {
123
- const {
124
- controllerExists,
125
- controllerPath,
126
- controllerPathFromRoot,
127
- isRunningInBAS
128
- } = data;
129
- this.model.setProperty('/controllerExists', controllerExists);
130
- this.model.setProperty('/controllerPath', controllerPath);
131
- this.model.setProperty('/controllerPathFromRoot', controllerPathFromRoot);
132
- const content = this.dialog.getContent();
133
- const form = content[0];
134
- form.setVisible(false);
135
- const messageForm = content[1];
136
- messageForm.setVisible(true);
137
- if (isRunningInBAS) {
138
- this.dialog.getBeginButton().setVisible(false);
139
- } else {
140
- this.dialog.getBeginButton().setText('Open in VS Code').setEnabled(true);
141
- }
142
- this.dialog.getEndButton().setText('Close');
143
- },
144
- /**
145
- * Updates the model property for a new controller.
146
- *
147
- * @param {string} viewId - The view ID.
148
- * @param {boolean} isTsSupported - Whether TypeScript supported for the current project.
149
- */
150
- updateModelForNewController: function _updateModelForNewController(viewId, isTsSupported) {
151
- this.model.setProperty('/viewId', viewId);
152
- this.model.setProperty('/controllerExtension', isTsSupported ? '.ts' : '.js');
153
- },
154
- /**
155
- * Retrieves existing controller data if found in the project's workspace.
156
- *
157
- * @param controllerName Controller name that exists in the view.
158
- * @returns Returns existing controller data.
159
- */
160
- getExistingController: async function _getExistingController(controllerName) {
161
- let data;
162
- try {
163
- data = await getExistingController(controllerName);
164
- } catch (e) {
165
- this.handleError(e);
166
- }
167
- return data;
168
- },
169
- /**
170
- * Retrieves controller files and fills the model with data
171
- */
172
- getControllers: async function _getControllers() {
173
- try {
174
- const {
175
- controllers
176
- } = await readControllers();
177
- this.model.setProperty('/controllersList', controllers);
178
- } catch (e) {
179
- this.handleError(e);
180
- }
181
- },
182
- /**
183
- * Creates a new fragment for the specified control
184
- *
185
- * @param controllerName Controller Name
186
- * @param viewId View Id
187
- */
188
- createNewController: async function _createNewController(controllerName, viewId) {
189
- try {
190
- await writeController({
191
- controllerName
192
- });
193
- const controllerRef = {
194
- codeRef: `coding/${controllerName}.js`,
195
- viewId
196
- };
197
- const service = await this.rta.getService('controllerExtension');
198
- const change = await service.add(controllerRef.codeRef, controllerRef.viewId);
199
- change.creation = new Date().toISOString();
200
- await writeChange(change);
201
- MessageToast.show(`Controller extension with name '${controllerName}' was created.`);
202
- } catch (e) {
203
- // We want to update the model incase we have already created a controller file but failed when creating a change file,
204
- // so when the user types the same controller name again he does not get 409 from the server, instead an error is shown in the UI
205
- await this.getControllers();
206
- this.handleError(e);
207
- }
208
- }
209
- });
210
- return ControllerExtension;
1
+ "use strict";
2
+
3
+ sap.ui.define(["sap/m/MessageToast", "sap/ui/core/library", "sap/ui/model/json/JSONModel", "../api-handler", "./BaseDialog.controller", "../../i18n", "../utils", "../../utils/version", "../command-executor", "../../utils/core"], function (MessageToast, sap_ui_core_library, JSONModel, ___api_handler, __BaseDialog, ____i18n, ___utils, ____utils_version, __CommandExecutor, ____utils_core) {
4
+ "use strict";
5
+
6
+ function _interopRequireDefault(obj) {
7
+ return obj && obj.__esModule && typeof obj.default !== "undefined" ? obj.default : obj;
8
+ }
9
+ /** sap.ui.core */
10
+ const ValueState = sap_ui_core_library["ValueState"];
11
+ /** sap.ui.base */
12
+ const getExistingController = ___api_handler["getExistingController"];
13
+ const readControllers = ___api_handler["readControllers"];
14
+ const writeChange = ___api_handler["writeChange"];
15
+ const writeController = ___api_handler["writeController"];
16
+ const BaseDialog = _interopRequireDefault(__BaseDialog);
17
+ const getResourceModel = ____i18n["getResourceModel"];
18
+ const getTextBundle = ____i18n["getTextBundle"];
19
+ const notifyUser = ___utils["notifyUser"];
20
+ const checkForExistingChange = ___utils["checkForExistingChange"];
21
+ const getControllerInfo = ___utils["getControllerInfo"];
22
+ const getUi5Version = ____utils_version["getUi5Version"];
23
+ const isLowerThanMinimalUi5Version = ____utils_version["isLowerThanMinimalUi5Version"];
24
+ const CommandExecutor = _interopRequireDefault(__CommandExecutor);
25
+ const getControlById = ____utils_core["getControlById"];
26
+ /**
27
+ * @namespace open.ux.preview.client.adp.controllers
28
+ */
29
+ const ControllerExtension = BaseDialog.extend("open.ux.preview.client.adp.controllers.ControllerExtension", {
30
+ constructor: function _constructor(name, overlays, rta, data, telemetryData) {
31
+ BaseDialog.prototype.constructor.call(this, name, telemetryData);
32
+ this.rta = rta;
33
+ this.overlays = overlays;
34
+ this.model = new JSONModel();
35
+ this.data = data;
36
+ },
37
+ /**
38
+ * Setups the Dialog and the JSON Model
39
+ *
40
+ * @param {Dialog} dialog - Dialog instance
41
+ */
42
+ setup: async function _setup(dialog) {
43
+ this.dialog = dialog;
44
+ this.setEscapeHandler();
45
+ const resourceModel = await getResourceModel('open.ux.preview.client');
46
+ this.bundle = await getTextBundle();
47
+ await this.buildDialogData();
48
+ this.dialog.setModel(resourceModel, 'i18n');
49
+ this.dialog.setModel(this.model);
50
+ this.dialog.open();
51
+ },
52
+ /**
53
+ * Handles fragment name input change
54
+ *
55
+ * @param event Event
56
+ */
57
+ onControllerNameInputChange: function _onControllerNameInputChange(event) {
58
+ const input = event.getSource();
59
+ const beginBtn = this.dialog.getBeginButton();
60
+ const controllerName = input.getValue();
61
+ const controllerList = this.model.getProperty('/controllersList');
62
+ const updateDialogState = function (valueState) {
63
+ let valueStateText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
64
+ input.setValueState(valueState).setValueStateText(valueStateText);
65
+ beginBtn.setEnabled(valueState === ValueState.Success);
66
+ };
67
+ if (controllerName.length <= 0) {
68
+ updateDialogState(ValueState.None);
69
+ this.model.setProperty('/newControllerName', null);
70
+ return;
71
+ }
72
+ const fileExists = controllerList.some(f => f.controllerName === controllerName);
73
+ const pendingChangeExists = checkForExistingChange(this.rta, 'codeExt', 'content.codeRef', `${controllerName}.js`);
74
+ if (fileExists) {
75
+ updateDialogState(ValueState.Error, 'Enter a different name. The controller name that you entered already exists in your project.');
76
+ return;
77
+ }
78
+ if (pendingChangeExists) {
79
+ updateDialogState(ValueState.Error, 'Enter a different name. The controller name that you entered already exists as a pending change.');
80
+ return;
81
+ }
82
+ const isValidName = /^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(controllerName);
83
+ if (!isValidName) {
84
+ updateDialogState(ValueState.Error, 'The controller name cannot contain white spaces or special characters.');
85
+ return;
86
+ }
87
+ if (controllerName.length > 64) {
88
+ updateDialogState(ValueState.Error, 'A controller file name cannot contain more than 64 characters.');
89
+ return;
90
+ }
91
+ updateDialogState(ValueState.Success);
92
+ this.model.setProperty('/newControllerName', controllerName);
93
+ },
94
+ /**
95
+ * Handles create button press
96
+ *
97
+ * @param event Event
98
+ */
99
+ onCreateBtnPress: async function _onCreateBtnPress(event) {
100
+ const source = event.getSource();
101
+ await BaseDialog.prototype.onCreateBtnPressHandler.call(this);
102
+ const controllerExists = this.model.getProperty('/controllerExists');
103
+ if (!controllerExists) {
104
+ source.setEnabled(false);
105
+ const controllerName = this.model.getProperty('/newControllerName');
106
+ const viewId = this.model.getProperty('/viewId');
107
+ const controllerRef = {
108
+ codeRef: `coding/${controllerName}.js`,
109
+ viewId
110
+ };
111
+ if (this.data) {
112
+ this.data.deferred.resolve(controllerRef);
113
+ } else {
114
+ await this.createNewController(controllerName, controllerRef);
115
+ }
116
+ } else {
117
+ const controllerPath = this.model.getProperty('/controllerPath');
118
+ window.open(`vscode://file${controllerPath}`);
119
+ }
120
+ this.handleDialogClose();
121
+ },
122
+ /**
123
+ * Builds data that is used in the dialog.
124
+ */
125
+ buildDialogData: async function _buildDialogData() {
126
+ const selectorId = this.overlays.getId();
127
+ const overlayControl = sap.ui.getCore().byId(selectorId);
128
+ const {
129
+ controllerName,
130
+ viewId
131
+ } = getControllerInfo(overlayControl);
132
+ const data = await this.getExistingController(controllerName);
133
+ const hasPendingChangeForView = checkForExistingChange(this.rta, 'codeExt', 'selector.controllerName', controllerName);
134
+ if (data) {
135
+ if (hasPendingChangeForView) {
136
+ this.updateModelForExistingPendingChange();
137
+ } else if (data?.controllerExists) {
138
+ this.updateModelForExistingController(data);
139
+ } else {
140
+ this.updateModelForNewController(viewId, data.isTsSupported);
141
+ await this.getControllers();
142
+ }
143
+ }
144
+ },
145
+ /**
146
+ * Updates the model properties for an existing controller.
147
+ *
148
+ * @param {CodeExtResponse} data - Existing controller data from the server.
149
+ */
150
+ updateModelForExistingController: function _updateModelForExistingController(data) {
151
+ const {
152
+ controllerExists,
153
+ controllerPath,
154
+ controllerPathFromRoot,
155
+ isRunningInBAS
156
+ } = data;
157
+ this.model.setProperty('/controllerExists', controllerExists);
158
+ this.model.setProperty('/controllerPath', controllerPath);
159
+ this.model.setProperty('/controllerPathFromRoot', controllerPathFromRoot);
160
+ this.model.setProperty('/inputFormVisibility', false);
161
+ this.model.setProperty('/pendingChangeFormVisibility', false);
162
+ this.model.setProperty('/existingControllerFormVisibility', true);
163
+ if (isRunningInBAS) {
164
+ this.dialog.getBeginButton().setVisible(false);
165
+ } else {
166
+ this.dialog.getBeginButton().setText('Open in VS Code').setEnabled(true);
167
+ }
168
+ this.dialog.getEndButton().setText('Close');
169
+ },
170
+ /**
171
+ * Updates the model properties for an existing controller in a pending change.
172
+ */
173
+ updateModelForExistingPendingChange: function _updateModelForExistingPendingChange() {
174
+ this.model.setProperty('/inputFormVisibility', false);
175
+ this.model.setProperty('/existingControllerFormVisibility', false);
176
+ this.model.setProperty('/pendingChangeFormVisibility', true);
177
+ this.dialog.getBeginButton().setVisible(false);
178
+ this.dialog.getEndButton().setText('Close');
179
+ },
180
+ /**
181
+ * Updates the model property for a new controller.
182
+ *
183
+ * @param {string} viewId - The view ID.
184
+ * @param {boolean} isTsSupported - Whether TypeScript supported for the current project.
185
+ */
186
+ updateModelForNewController: function _updateModelForNewController(viewId, isTsSupported) {
187
+ this.model.setProperty('/viewId', viewId);
188
+ this.model.setProperty('/controllerExtension', isTsSupported ? '.ts' : '.js');
189
+ this.model.setProperty('/existingControllerFormVisibility', false);
190
+ this.model.setProperty('/pendingChangeFormVisibility', false);
191
+ this.model.setProperty('/inputFormVisibility', true);
192
+ },
193
+ /**
194
+ * Retrieves existing controller data if found in the project's workspace.
195
+ *
196
+ * @param controllerName Controller name that exists in the view.
197
+ * @returns Returns existing controller data.
198
+ */
199
+ getExistingController: async function _getExistingController(controllerName) {
200
+ let data;
201
+ try {
202
+ data = await getExistingController(controllerName);
203
+ } catch (e) {
204
+ this.handleError(e);
205
+ }
206
+ return data;
207
+ },
208
+ /**
209
+ * Retrieves controller files and fills the model with data
210
+ */
211
+ getControllers: async function _getControllers() {
212
+ try {
213
+ const {
214
+ controllers
215
+ } = await readControllers();
216
+ this.model.setProperty('/controllersList', controllers);
217
+ } catch (e) {
218
+ this.handleError(e);
219
+ }
220
+ },
221
+ /**
222
+ * Creates a new fragment for the specified control
223
+ *
224
+ * @param controllerName Controller Name
225
+ * @param controllerRef Controller reference
226
+ */
227
+ createNewController: async function _createNewController(controllerName, controllerRef) {
228
+ const ui5Version = await getUi5Version();
229
+ if (!isLowerThanMinimalUi5Version(ui5Version, {
230
+ major: 1,
231
+ minor: 135
232
+ })) {
233
+ await this.createControllerCommand(controllerName, controllerRef);
234
+ return;
235
+ }
236
+ try {
237
+ await writeController({
238
+ controllerName
239
+ });
240
+ const service = await this.rta.getService('controllerExtension');
241
+ const change = await service.add(controllerRef.codeRef, controllerRef.viewId);
242
+ change.creation = new Date().toISOString();
243
+ await writeChange(change);
244
+ MessageToast.show(`Controller extension with name '${controllerName}' was created.`);
245
+ } catch (e) {
246
+ // We want to update the model incase we have already created a controller file but failed when creating a change file,
247
+ // so when the user types the same controller name again he does not get 409 from the server, instead an error is shown in the UI
248
+ await this.getControllers();
249
+ this.handleError(e);
250
+ }
251
+ },
252
+ /**
253
+ * Creates a controller command and executes it.
254
+ *
255
+ * @param controllerName Controller name
256
+ * @param controllerRef Controller reference
257
+ */
258
+ createControllerCommand: async function _createControllerCommand(controllerName, controllerRef) {
259
+ const flexSettings = this.rta.getFlexSettings();
260
+ const commandExecutor = new CommandExecutor(this.rta);
261
+ const view = getControlById(controllerRef.viewId);
262
+ const command = await commandExecutor.getCommand(view, 'codeExt', controllerRef, flexSettings);
263
+ await commandExecutor.pushAndExecuteCommand(command);
264
+ const bundle = await getTextBundle();
265
+ notifyUser(bundle.getText('ADP_CREATE_CONTROLLER_EXTENSION', [controllerName]), 8000);
266
+ }
267
+ });
268
+ return ControllerExtension;
211
269
  });
212
270
  //# sourceMappingURL=ControllerExtension.controller.js.map