"use strict"; /** * Created by Abhranil Naha on 7/10/2017. */ (function () { 'use strict'; angular.module('layoutConfigModule').service('layoutConfigurationService', ['$resource', '$http', '$q', function ($resource, $http, $q) { var resource = $resource('/smartit/rest/customization', {}, { loadLayout: { url: '/smartit/rest/v2/customization/screenlayout', method: 'GET', transformResponse: [ $http.defaults.transformResponse[0], function (data) { return [].concat(data); } ], isArray: true }, updateLayout: { url: '/smartit/rest/customization/save/layout', method: 'POST' } }); /** * Public functions */ /** * Loads screen layout * * @param {Object} params * @returns {*} */ this.loadLayout = function (params) { return resource.loadLayout(params).$promise.then(function (response) { var layouts = response; return layouts.map(function (layout) { var layoutVO = new LayoutConfigurationVO().build(layout); // Remove empty additional info section var additionalInfo = _.find(layoutVO.panels, { name: "additionalInfo" }); if (additionalInfo) { var additionalData1Index = _.findIndex(additionalInfo.panels, { name: "additionalData" }); var additionalData2Index = _.findIndex(additionalInfo.panels, { name: "additionalData2" }); var additionalData3Index = _.findIndex(additionalInfo.panels, { name: "additionalData3" }); var additionalData4Index = _.findIndex(additionalInfo.panels, { name: "additionalData4" }); if ((additionalData1Index === -1 || !additionalInfo.panels[additionalData1Index].children || additionalInfo.panels[additionalData1Index].children.length === 0) && (additionalData2Index === -1 || !additionalInfo.panels[additionalData2Index].children || additionalInfo.panels[additionalData2Index].children.length === 0) && (additionalData3Index === -1 || !additionalInfo.panels[additionalData3Index].children || additionalInfo.panels[additionalData3Index].children.length === 0) && (additionalData4Index === -1 || !additionalInfo.panels[additionalData4Index].children || additionalInfo.panels[additionalData4Index].children.length === 0)) { additionalInfo.emptyPanel = true; } } return layoutVO; }); }); }; this.updateScreenLayout = function (screenName, layout) { return resource.updateLayout({ screen: screenName }, layout).$promise; }; }]); })();