2 * ================================================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 AT&T Intellectual Property
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ================================================================================
\r
23 class WidgetCatalogCtrl {
\r
24 constructor(widgetsService, $log, $cookies, $scope, conf, beReaderService, widgetsCatalogService, userProfileService,dashboardService,$compile, ngDialog) {
\r
26 $scope.editWidgetModalPopup = function(availableData, resourceType) {
\r
27 $scope.editData = JSON.stringify(availableData);
\r
28 $scope.availableDataTemp = $scope.availableData;
\r
30 templateUrl : 'app/views/dashboard/dashboard-widget-manage.html',
\r
31 controller : 'CommonWidgetController',
\r
33 message : function message() {
\r
35 type : resourceType,
\r
36 availableData : $scope.editData
\r
41 }).closePromise.then(needUpdate => {
\r
42 if(resourceType=='NEWS'){
\r
43 $scope.updateNews();
\r
44 }else if(resourceType=='EVENTS'){
\r
45 $scope.updateEvents();
\r
46 }else if(resourceType=='IMPORTANTRESOURCES'){
\r
47 $scope.updateImportRes();
\r
52 $scope.WidgetCatView = [];
\r
53 $scope.applyPresentationDetailsToWidgetsCatalog = function(widgetsReturned){
\r
55 for (var i = 0; i < widgetsReturned.length; i++) {
\r
56 $scope.WidgetCatView[i] = {
\r
60 widgetIdentifier : '',
\r
66 $scope.WidgetCatView[i].widgetid = widgetsReturned[i].id;
\r
67 $scope.WidgetCatView[i].headerText = widgetsReturned[i].headerName;
\r
69 if(widgetsReturned[i].headerName === 'widget-news'){
\r
70 $scope.WidgetCatView[i].widgetIdentifier = 'NEWS';
\r
73 if(widgetsReturned[i].headerName === 'widget-resources'){
\r
74 $scope.WidgetCatView[i].widgetIdentifier = 'IMPORTANTRESOURCES';
\r
77 if(widgetsReturned[i].headerName === 'widget-events'){
\r
78 $scope.WidgetCatView[i].widgetIdentifier = 'EVENTS';
\r
81 $scope.WidgetCatView[i].url = widgetsReturned[i].url;
\r
82 $scope.WidgetCatView[i].attrb = widgetsReturned[i].attrs;
\r
83 $scope.WidgetCatView[i].select = widgetsReturned[i].select;
\r
86 $scope.widgetViewData = $scope.WidgetCatView;
\r
90 /** Widget code starts */
\r
91 let getUserWidgets = (loginName) => {
\r
93 this.isCommError = false;
\r
94 var conf = this.conf;
\r
95 widgetsCatalogService.getUserWidgets(loginName).then(res => {
\r
97 if(!(res instanceof Array)){
\r
98 this.isCommError = true;
\r
101 for(var i = 0; i < res.length; i++){
\r
102 var widget_id = res[i][0];
\r
103 var widget_name = res[i][1];
\r
104 let url = this.conf.api.widgetCommon + "/" + widget_id + "/framework.js";
\r
105 $scope.widgetsList.push({
\r
108 headerName: widget_name,
\r
110 attrs: [{attr: 'data-' + widget_id, value: ''}],
\r
112 select: (res[i][4] == 'S' || res[i][4] === null) ? true : false
\r
114 var script = document
\r
115 .createElement('script');
\r
117 script.async = true;
\r
118 var entry = document
\r
119 .getElementsByTagName('script')[0];
\r
121 .insertBefore(script, entry);
\r
123 $scope.applyPresentationDetailsToWidgetsCatalog($scope.widgetsList);
\r
125 $log.error('WidgetCatalogCtrl::getUserWidgets caught error', err);
\r
132 userProfileService.getUserProfile()
\r
134 // $log.info('WidgetCatalogCtrl::getUserProfile: ',
\r
136 $scope.orgUserId = profile.orgUserId;
\r
137 $scope.widgetsViewData = [];
\r
138 $scope.widgetsView = [];
\r
139 getUserWidgets($scope.orgUserId);
\r
142 $scope.widgetsList = [];
\r
145 /** Widget code ends */
\r
147 $scope.activateThis = function(ele){
\r
148 $compile(ele.contents())($scope);
\r
151 $scope.setCommonWidget = function() {
\r
152 /* News Events Resources */
\r
153 var widgetLength = ($scope.widgetsViewData==null || $scope.widgetsViewData.length==0) ? 0:$scope.widgetsViewData.length;
\r
154 $scope.widgetsViewData[widgetLength] = {
\r
157 headerText: 'News',
\r
163 $scope.widgetsViewData[widgetLength+1] = {
\r
166 headerText: 'Calendar Events',
\r
172 $scope.widgetsViewData[widgetLength+2] = {
\r
175 headerText: 'Resources',
\r
182 /* Setting News data */
\r
183 $scope.newsData = [];
\r
184 $scope.updateNews = function() {
\r
185 $scope.newsData.length=0;
\r
186 dashboardService.getCommonWidgetData('NEWS').then(function(res) {
\r
187 // $log.info(res.message);
\r
188 var newsDataJsonArray = res.response.items;
\r
189 for (var i = 0; i < newsDataJsonArray.length; i++) {
\r
190 $scope.newsData.push(newsDataJsonArray[i]);
\r
192 })['catch'](function(err) {
\r
193 $log.error('dashboard controller: failed to get news list', err);
\r
196 $scope.updateNews();
\r
197 /* Setting Events data */
\r
199 $scope.eventData = [];
\r
201 $scope.updateEvents = function() {
\r
202 $scope.eventData.length=0;
\r
203 dashboardService.getCommonWidgetData('EVENTS').then(function(res) {
\r
204 var eventDataJsonArray = res.response.items;
\r
205 for (var i = 0; i < eventDataJsonArray.length; i++) {
\r
206 if(eventDataJsonArray[i].eventDate !=null) {
\r
208 eventDataJsonArray[i].year = eventDataJsonArray[i].eventDate.substring(2,4);
\r
209 eventDataJsonArray[i].mon = eventDataJsonArray[i].eventDate.substring(5,7);
\r
210 eventDataJsonArray[i].day = eventDataJsonArray[i].eventDate.substring(8,10);
\r
212 $scope.eventData.push(eventDataJsonArray[i]);
\r
214 })['catch'](function(err) {
\r
215 $log.error('dashboard controller: failed to get Events list', err);
\r
218 $scope.updateEvents();
\r
219 /* Setting Important Resources data */
\r
221 $scope.importResData = [];
\r
222 $scope.updateImportRes = function() {
\r
223 $scope.importResData.length=0;
\r
224 dashboardService.getCommonWidgetData('IMPORTANTRESOURCES').then(
\r
227 var importResDataJSONArray = res.response.items;
\r
228 for (var i = 0; i < importResDataJSONArray.length; i++) {
\r
229 $scope.importResData.push(importResDataJSONArray[i]);
\r
231 })['catch'](function(err) {
\r
232 $log.error('dashboard controller: failed to get resources list...', err);
\r
235 $scope.updateImportRes();
\r
237 /** ******End hardcoded news events and resources*************** */
\r
241 $scope.newsGridsterItem = {
\r
242 headerText : 'Test',
\r
246 $scope.newsGridsterItem = {
\r
247 headerText : 'News',
\r
251 $scope.eventsGridsterItem = {
\r
252 headerText : 'Events',
\r
256 $scope.impoResGridsterItem = {
\r
257 headerText : 'Resources',
\r
261 this.gridsterOpts = {
\r
271 handle: '.icon-content-gridguide'
\r
275 // Run this function when user clicks on checkbox.
\r
276 $scope.storeSelection = function(widget) {
\r
278 // not needed as only 'SHOW' and 'HIDE' status_cd is expected from the micro service now
\r
279 /*var pendingFlag = false;
\r
281 pendingFlag = false;
\r
283 pendingFlag = widget.pending; */
\r
286 widgetId: widget.widgetid,
\r
287 select : widget.select,
\r
288 // pending : pendingFlag
\r
291 widgetsCatalogService.updateWidgetCatalog(appData).then(
\r
293 // $log.debug('CatalogCtrl:storeSelection result is ', result);
\r
294 })['catch'](function(err) {
\r
295 $log.error('CatalogCtrl:storeSelection: exception: ', err);
\r
305 WidgetCatalogCtrl.$inject = ['widgetsService', '$log', '$cookies', '$scope', 'conf', 'beReaderService', 'widgetsCatalogService', 'userProfileService','dashboardService','$compile','ngDialog'];
\r
306 angular.module('ecompApp').controller('WidgetCatalogCtrl', WidgetCatalogCtrl);
\r
308 angular.module('ecompApp').constant('refreshInterval', '30000');
\r
310 angular.module('ecompApp').directive('refreshIframe', ['$interval', 'refreshInterval', function ($interval, refreshInterval) {
\r
312 function link(scope, element, attrs) {
\r
315 function updateIframe() {
\r
316 if(attrs.isEnlarged == "false")
\r
318 element.attr('src', element.attr('src'));
\r
322 element.on('$destroy', function () {
\r
323 $interval.cancel(timeoutId);
\r
326 // start the UI update process; save the timeoutId for cancelling
\r
328 * timeoutId = $interval(function () { updateIframe(); // update DOM },
\r
329 * refreshInterval);
\r
341 app.directive('dynAttr', function() {
\r
343 scope: { list: '=dynAttr' },
\r
344 link: function(scope, elem, attrs){
\r
345 for(var attr in scope.list){
\r
346 elem.attr(scope.list[attr].attr, scope.list[attr].value);
\r