--- /dev/null
+/*-\r
+ * ================================================================================\r
+ * ECOMP Portal\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ================================================================================\r
+ */\r
+'use strict';\r
+(function () {\r
+\r
+ class WidgetCatalogCtrl {\r
+ constructor(widgetsService, $log, $cookies, $scope, conf, beReaderService, widgetsCatalogService, userProfileService,dashboardService,$compile, ngDialog) {\r
+ \r
+ $scope.editWidgetModalPopup = function(availableData, resourceType) {\r
+ $scope.editData = JSON.stringify(availableData);\r
+ $scope.availableDataTemp = $scope.availableData;\r
+ ngDialog.open({\r
+ templateUrl : 'app/views/dashboard/dashboard-widget-manage.html',\r
+ controller : 'CommonWidgetController',\r
+ resolve : {\r
+ message : function message() {\r
+ var message = {\r
+ type : resourceType,\r
+ availableData : $scope.editData\r
+ };\r
+ return message;\r
+ }\r
+ }\r
+ }).closePromise.then(needUpdate => { \r
+ if(resourceType=='NEWS'){\r
+ $scope.updateNews();\r
+ }else if(resourceType=='EVENTS'){\r
+ $scope.updateEvents();\r
+ }else if(resourceType=='IMPORTANTRESOURCES'){\r
+ $scope.updateImportRes();\r
+ }\r
+ }); \r
+ };\r
+ \r
+ $scope.WidgetCatView = []; \r
+ $scope.applyPresentationDetailsToWidgetsCatalog = function(widgetsReturned){\r
+ var rowNo = 0;\r
+ for (var i = 0; i < widgetsReturned.length; i++) {\r
+ $scope.WidgetCatView[i] = {\r
+ sizeX : 2,\r
+ sizeY : 2,\r
+ headerText:'',\r
+ widgetIdentifier : '',\r
+ url : '',\r
+ widgetid: '',\r
+ attrb:'',\r
+ select: false,\r
+ };\r
+ $scope.WidgetCatView[i].widgetid = widgetsReturned[i].id;\r
+ $scope.WidgetCatView[i].headerText = widgetsReturned[i].headerName;\r
+\r
+ if(widgetsReturned[i].headerName === 'widget-news'){\r
+ $scope.WidgetCatView[i].widgetIdentifier = 'NEWS';\r
+ }\r
+ else\r
+ if(widgetsReturned[i].headerName === 'widget-resources'){\r
+ $scope.WidgetCatView[i].widgetIdentifier = 'IMPORTANTRESOURCES';\r
+ }\r
+ else\r
+ if(widgetsReturned[i].headerName === 'widget-events'){\r
+ $scope.WidgetCatView[i].widgetIdentifier = 'EVENTS';\r
+ }\r
+\r
+ $scope.WidgetCatView[i].url = widgetsReturned[i].url;\r
+ $scope.WidgetCatView[i].attrb = widgetsReturned[i].attrs;\r
+ $scope.WidgetCatView[i].select = widgetsReturned[i].select; \r
+ }\r
+\r
+ $scope.widgetViewData = $scope.WidgetCatView;\r
+ \r
+ }\r
+ \r
+ /** Widget code starts */\r
+ let getUserWidgets = (loginName) => {\r
+ \r
+ this.isCommError = false;\r
+ var conf = this.conf;\r
+ widgetsCatalogService.getUserWidgets(loginName).then(res => {\r
+ \r
+ if(!(res instanceof Array)){\r
+ this.isCommError = true;\r
+ return;\r
+ }\r
+ for(var i = 0; i < res.length; i++){ \r
+ var widget_id = res[i][0];\r
+ var widget_name = res[i][1];\r
+ let url = this.conf.api.widgetCommon + "/" + widget_id + "/framework.js";\r
+ $scope.widgetsList.push({\r
+ id: widget_id,\r
+ name: widget_name,\r
+ headerName: widget_name,\r
+ url: url,\r
+ attrs: [{attr: 'data-' + widget_id, value: ''}],\r
+ status: res[i][4],\r
+ select: (res[i][4] == 'S' || res[i][4] === null) ? true : false\r
+ }); \r
+ var script = document\r
+ .createElement('script');\r
+ script.src = url;\r
+ script.async = true;\r
+ var entry = document\r
+ .getElementsByTagName('script')[0];\r
+ entry.parentNode\r
+ .insertBefore(script, entry);\r
+ }\r
+ $scope.applyPresentationDetailsToWidgetsCatalog($scope.widgetsList);\r
+ }).catch(err => {\r
+ $log.error('WidgetCatalogCtrl::getUserWidgets caught error', err);\r
+ }).finally(()=> {\r
+ \r
+ });\r
+ };\r
+ \r
+ let init = () => {\r
+ userProfileService.getUserProfile()\r
+ .then(profile=> {\r
+ // $log.info('WidgetCatalogCtrl::getUserProfile: ',\r
+ // profile);\r
+ $scope.orgUserId = profile.orgUserId;\r
+ $scope.widgetsViewData = [];\r
+ $scope.widgetsView = []; \r
+ getUserWidgets($scope.orgUserId); \r
+ });\r
+ this.conf = conf;\r
+ $scope.widgetsList = [];\r
+ };\r
+ \r
+ /** Widget code ends */\r
+ \r
+ $scope.activateThis = function(ele){\r
+ $compile(ele.contents())($scope);\r
+ $scope.$apply();\r
+ };\r
+ $scope.setCommonWidget = function() {\r
+ /* News Events Resources */\r
+ var widgetLength = ($scope.widgetsViewData==null || $scope.widgetsViewData.length==0) ? 0:$scope.widgetsViewData.length;\r
+ $scope.widgetsViewData[widgetLength] = {\r
+ sizeX: 2,\r
+ sizeY: 2,\r
+ headerText: 'News',\r
+ width: '',\r
+ height: '',\r
+ url: '',\r
+ selected:true\r
+ };\r
+ $scope.widgetsViewData[widgetLength+1] = {\r
+ sizeX: 2,\r
+ sizeY: 2,\r
+ headerText: 'Calendar Events',\r
+ width: '',\r
+ height: '',\r
+ url: '',\r
+ selected:true\r
+ };\r
+ $scope.widgetsViewData[widgetLength+2] = {\r
+ sizeX: 2,\r
+ sizeY: 2,\r
+ headerText: 'Resources',\r
+ width: '',\r
+ height: '',\r
+ url: '',\r
+ selected:true\r
+ };\r
+ \r
+ /* Setting News data */\r
+ $scope.newsData = [];\r
+ $scope.updateNews = function() {\r
+ $scope.newsData.length=0;\r
+ dashboardService.getCommonWidgetData('NEWS').then(function(res) {\r
+ // $log.info(res.message);\r
+ var newsDataJsonArray = res.response.items;\r
+ for (var i = 0; i < newsDataJsonArray.length; i++) {\r
+ $scope.newsData.push(newsDataJsonArray[i]);\r
+ }\r
+ })['catch'](function(err) {\r
+ $log.error('dashboard controller: failed to get news list', err); \r
+ });\r
+ }\r
+ $scope.updateNews();\r
+ /* Setting Events data */\r
+\r
+ $scope.eventData = [];\r
+ \r
+ $scope.updateEvents = function() {\r
+ $scope.eventData.length=0;\r
+ dashboardService.getCommonWidgetData('EVENTS').then(function(res) {\r
+ var eventDataJsonArray = res.response.items; \r
+ for (var i = 0; i < eventDataJsonArray.length; i++) {\r
+ if(eventDataJsonArray[i].eventDate !=null) {\r
+ // yyyy-mm-dd\r
+ eventDataJsonArray[i].year = eventDataJsonArray[i].eventDate.substring(2,4);\r
+ eventDataJsonArray[i].mon = eventDataJsonArray[i].eventDate.substring(5,7);\r
+ eventDataJsonArray[i].day = eventDataJsonArray[i].eventDate.substring(8,10);\r
+ }\r
+ $scope.eventData.push(eventDataJsonArray[i]);\r
+ }\r
+ })['catch'](function(err) {\r
+ $log.error('dashboard controller: failed to get Events list', err); \r
+ });\r
+ }\r
+ $scope.updateEvents();\r
+ /* Setting Important Resources data */\r
+\r
+ $scope.importResData = [];\r
+ $scope.updateImportRes = function() {\r
+ $scope.importResData.length=0;\r
+ dashboardService.getCommonWidgetData('IMPORTANTRESOURCES').then(\r
+ function(res) {\r
+ // $log.info(res);\r
+ var importResDataJSONArray = res.response.items;\r
+ for (var i = 0; i < importResDataJSONArray.length; i++) {\r
+ $scope.importResData.push(importResDataJSONArray[i]);\r
+ }\r
+ })['catch'](function(err) {\r
+ $log.error('dashboard controller: failed to get resources list...', err);\r
+ });\r
+ }\r
+ $scope.updateImportRes();\r
+ \r
+ /** ******End hardcoded news events and resources*************** */\r
+ \r
+ }\r
+ \r
+ $scope.newsGridsterItem = {\r
+ headerText : 'Test',\r
+ subHeaderText : ''\r
+ };\r
+ \r
+ $scope.newsGridsterItem = {\r
+ headerText : 'News',\r
+ subHeaderText : ''\r
+ };\r
+ \r
+ $scope.eventsGridsterItem = {\r
+ headerText : 'Events',\r
+ subHeaderText : ''\r
+ };\r
+\r
+ $scope.impoResGridsterItem = {\r
+ headerText : 'Resources',\r
+ subHeaderText : ''\r
+ };\r
+ \r
+ this.gridsterOpts = {\r
+ columns: 6,\r
+ colWidth: 190,\r
+ rowHeight: 190,\r
+ margins: [20, 20],\r
+ outerMargin: true,\r
+ pushing: true,\r
+ floating: true,\r
+ swapping: true,\r
+ draggable: {\r
+ handle: '.icon-content-gridguide'\r
+ }\r
+ };\r
+ \r
+ // Run this function when user clicks on checkbox.\r
+ $scope.storeSelection = function(widget) {\r
+ \r
+ // not needed as only 'SHOW' and 'HIDE' status_cd is expected from the micro service now\r
+ /*var pendingFlag = false; \r
+ if(widget.access) \r
+ pendingFlag = false;\r
+ else\r
+ pendingFlag = widget.pending; */ \r
+ \r
+ var appData = { \r
+ widgetId: widget.widgetid,\r
+ select : widget.select,\r
+ // pending : pendingFlag \r
+ };\r
+\r
+ widgetsCatalogService.updateWidgetCatalog(appData).then(\r
+ function(result) {\r
+ // $log.debug('CatalogCtrl:storeSelection result is ', result);\r
+ })['catch'](function(err) {\r
+ $log.error('CatalogCtrl:storeSelection: exception: ', err);\r
+ });\r
+ };\r
+\r
+ init();\r
+ }\r
+ }\r
+ \r
+ \r
+ \r
+ WidgetCatalogCtrl.$inject = ['widgetsService', '$log', '$cookies', '$scope', 'conf', 'beReaderService', 'widgetsCatalogService', 'userProfileService','dashboardService','$compile','ngDialog'];\r
+ angular.module('ecompApp').controller('WidgetCatalogCtrl', WidgetCatalogCtrl);\r
+\r
+ angular.module('ecompApp').constant('refreshInterval', '30000');\r
+\r
+ angular.module('ecompApp').directive('refreshIframe', ['$interval', 'refreshInterval', function ($interval, refreshInterval) {\r
+\r
+ function link(scope, element, attrs) {\r
+ var timeoutId;\r
+\r
+ function updateIframe() {\r
+ if(attrs.isEnlarged == "false")\r
+ {\r
+ element.attr('src', element.attr('src'));\r
+ }\r
+ }\r
+\r
+ element.on('$destroy', function () {\r
+ $interval.cancel(timeoutId);\r
+ });\r
+\r
+ // start the UI update process; save the timeoutId for cancelling\r
+ /*\r
+ * timeoutId = $interval(function () { updateIframe(); // update DOM },\r
+ * refreshInterval);\r
+ */\r
+ }\r
+\r
+ return {\r
+ link: link\r
+ };\r
+ } ]);\r
+\r
+})();\r
+\r
+\r
+app.directive('dynAttr', function() {\r
+ return {\r
+ scope: { list: '=dynAttr' },\r
+ link: function(scope, elem, attrs){\r
+ for(var attr in scope.list){\r
+ elem.attr(scope.list[attr].attr, scope.list[attr].value); \r
+ }\r
+ }\r
+ };\r
+}); \r