UNPKG

ui5_easy_use

Version:

CLI tool for SAP ui5 and SAPUI5 projects to initialize apps, generate pages, insert form and table components, manage routing, and automate i18n bindings

67 lines (48 loc) 2.05 kB
sap.ui.define([ "sap/ui/core/mvc/Controller", ], function (Controller) { "use strict"; return Controller.extend("${ez5.appName}.utilities.SetVisibleSlcView", { constructor: function (currentController, prefix = 'View', allFields = []) { this._currentController = currentController; this.prefix = prefix; this.modelName = "/view"; this.allFields = allFields; }, setVisbile: function (fieldsName, visible, editable, required) { const viewHelper = {}; const normalizedFields = this._normalizeFields(fieldsName); normalizedFields.forEach(function (fieldName) { viewHelper[fieldName] = { visible: visible, editable: editable, required: required }; }); const oldView = this._currentController.helperModelInstance.getProperty(this.modelName); const newView = this.deepMerge(oldView, viewHelper); this._currentController.helperModelInstance.setProperty(this.modelName, newView); }, deepMerge: function (target, source) { if (!this._isMergeableObject(target)) { target = {}; } if (!this._isMergeableObject(source)) { return target; } for (const key in source) { if (this._isMergeableObject(source[key])) { if (!target[key]) { target[key] = {}; } target[key] = this.deepMerge(target[key], source[key]); } else { target[key] = source[key]; } } return target; }, _normalizeFields: function (fieldsName) { return Array.isArray(fieldsName) ? fieldsName : [fieldsName]; }, _isMergeableObject: function (value) { return typeof value === "object" && value !== null && !Array.isArray(value); } }); });