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
JavaScript
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);
}
});
});