[PORTAL-16 PORTAL-18] Widget ms; staging
[portal.git] / ecomp-portal-FE-common / client / app / views / dashboard / dashboard-widget.controller.js
index fe0bf45..aff4e0c 100644 (file)
-/*-\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
-\r
-(function () {\r
-    class CommonWidgetController {\r
-        constructor(dashboardService, $scope, message, $q, $http, conf, $filter,confirmBoxService,$log) {\r
-               $scope.widgetType = message.type;\r
-               $scope.widgetTypeDisplay = message.type;\r
-               $scope.modflag = false;\r
-               \r
-               switch (message.type) {\r
-            case 'EVENTS':\r
-               $scope.widgetTypeDisplay = 'Events'\r
-                break;\r
-            case 'NEWS':\r
-               $scope.widgetTypeDisplay = 'News'\r
-                break;\r
-            case 'IMPORTANTRESOURCES':\r
-               $scope.widgetTypeDisplay = 'Resources'\r
-                break;\r
-               }\r
\r
-               $scope.widgetData = [];\r
-               dashboardService.getCommonWidgetData(message.type)\r
-               .then(function (res) {\r
-                        // console.log('CommonWidgetController: result is ' + res);\r
-                        $scope.widgetData = res.response.items;\r
-                });\r
-                 \r
-                \r
-                \r
-               $scope.setEdit = function(index) {\r
-                       \r
-                       //for(var i=0; i<$scope.widgetData )\r
-                       \r
-                       if($scope.modflag === false){\r
-                               $scope.widgetData[index].showEdit = true;\r
-                               $scope.modflag = true;\r
-                       }\r
-                }               \r
-               \r
-                $scope.modify = function(index) {\r
-                       \r
-                       $scope.widgetObject = {};\r
-                       $scope.widgetObject.id = $scope.widgetData[parseInt(index)].id;\r
-                       $scope.widgetObject.category = $scope.widgetData[parseInt(index)].category;\r
-                       $scope.widgetObject.title = $scope.widgetData[parseInt(index)].title;\r
-                       $scope.widgetObject.href = $scope.widgetData[parseInt(index)].href;\r
-                       $scope.widgetObject.eventDate = $scope.widgetData[parseInt(index)].eventDate;\r
-                       $scope.widgetObject.content = $scope.widgetData[parseInt(index)].content;\r
-                       $scope.widgetObject.sortOrder = $scope.widgetData[parseInt(index)].sortOrder;\r
-                       \r
-                       var validateMsg = $scope.validateWidgetObject($scope.widgetObject);\r
-                       if (validateMsg) {\r
-                               confirmBoxService.showInformation(validateMsg).then(isConfirmed => {return;});\r
-                               return;\r
-                       }\r
-                       \r
-                       dashboardService.saveCommonWidgetData($scope.widgetObject)\r
-                       .then(function(res){\r
-                               if (res.status == 'OK') {\r
-                               dashboardService.getCommonWidgetData(message.type)\r
-                               .then(function(res){\r
-                                       $scope.widgetData = res.response.items;\r
-                               $scope.modflag = false;\r
-                                       $scope.cancelEdit(index);\r
-                                       });\r
-                               }\r
-                               else {\r
-                                       // Save failed\r
-                                       confirmBoxService.showInformation("Save failed").then(isConfirmed => {return;});\r
-                                       return;\r
-                               }\r
-                       });   \r
-\r
-               };      \r
-               \r
-               $scope.newWidgetObject = {};\r
-               \r
-               // Answers string error if validation fails; \r
-               // answers null if all is well.\r
-               $scope.validateWidgetObject = function(wo) {\r
-                       if (wo.title == null || wo.title == '')\r
-                               return "Please enter a title.";\r
-                       if (wo.href == null || wo.href == '' || !validateUrl(wo.href))\r
-                               return "Please enter a valid URL that starts with http.";\r
-                       if (wo.sortOrder == null || wo.sortOrder == '' || isNaN(parseInt(wo.sortOrder)))\r
-                               return "Please enter a number for the sort order.";\r
-                       if (wo.category=='EVENTS') {\r
-                               if (wo.eventDate == null || wo.eventDate == '')\r
-                                       return "Please enter a date for the event.";\r
-                               // Parses and normalizes the date with rollover.\r
-                               var filteredDate = $filter('date')(wo.eventDate, "yyyy-MM-dd");\r
-                               // $log.debug('dashboard-widget-controller: date filter yields ' + filteredDate);\r
-                               // The date picker shows mm/dd/yy.\r
-                               if (filteredDate == null || filteredDate.length != 10)\r
-                                       return "Please enter a valid date as YYYY-MM-DD";\r
-                               if (wo.content==null || wo.content=='')\r
-                                       return "Please enter content for the event.";\r
-                       }\r
-                       return null;\r
-               };\r
-               \r
-               $scope.saveNew = function() {\r
-                       $scope.newWidgetObject.category = message.type;\r
-                       // $log.info($scope.newWidgetObject);\r
-                       var validateMsg = $scope.validateWidgetObject($scope.newWidgetObject);\r
-                       if (validateMsg) {\r
-                               confirmBoxService.showInformation(validateMsg).then(isConfirmed => {return;});\r
-                               return;\r
-                       }\r
-                       // Transform date into expected storage format\r
-                       $scope.newWidgetObject.eventDate = $filter('date')($scope.newWidgetObject.eventDate, "yyyy-MM-dd");\r
-\r
-                       dashboardService.saveCommonWidgetData($scope.newWidgetObject)\r
-                       .then(function(res){\r
-                               if (res.status == 'OK') {\r
-                                       $scope.widgetForm.$setPristine();  \r
-                                       confirmBoxService.showInformation('You have added a new item').then(isConfirmed => {\r
-                                       });\r
-                                       dashboardService.getCommonWidgetData(message.type)\r
-                                       .then(function(res){\r
-                                               $scope.widgetData = res.response.items;\r
-                                               $scope.newWidgetObject = {};\r
-                               });  \r
-                               }\r
-                               else {\r
-                                       confirmBoxService.showInformation("Save failed").then(isConfirmed => {return;});\r
-                                       return;\r
-                               }                               \r
-                       });                     \r
-               };\r
-               \r
-               $scope.remove = function(index) {\r
-                       var confirmMsg = 'Are you sure you want to delete this item from the list?' + ' Press OK to delete.';\r
-                       confirmBoxService.confirm(confirmMsg).then(function (confirmed) {\r
-                    if (confirmed == true) { \r
-                       $scope.widgetObject = {};\r
-                               $scope.widgetObject.id = $scope.widgetData[parseInt(index)].id;\r
-                               $scope.widgetObject.category = $scope.widgetData[parseInt(index)].category;\r
-                               $scope.widgetObject.title = $scope.widgetData[parseInt(index)].title;\r
-                               $scope.widgetObject.href = $scope.widgetData[parseInt(index)].href;\r
-                               $scope.widgetObject.sortOrder = $scope.widgetData[parseInt(index)].sortOrder;\r
-                               \r
-                               \r
-                               dashboardService.removeCommonWidgetData($scope.widgetObject)\r
-                               .then(function(res){\r
-                                       dashboardService.getCommonWidgetData(message.type)\r
-                                       .then(function(res){\r
-                                               $scope.widgetData = res.response.items;\r
-                                               $scope.cancelEdit(index);\r
-                                       });                             \r
-                               });                             \r
-                    }\r
-                });\r
-                                       \r
-               };      \r
-               $scope.closeDialog = function(){\r
-                       $scope.closeThisDialog( $scope.widgetData);\r
-               }\r
-               $scope.deleteSpeedDial = function(widget){\r
-                       \r
-                }\r
-                \r
-                $scope.manage = function(index) {\r
-                               $scope.modflag = true;\r
-                               \r
-                               var thisdata = $scope.widgetData[index];\r
-                       $scope.editMode=true;\r
-                       var category = "#category"+index;\r
-                       var categoryEdit = "#categoryEdit"+index;\r
-                       \r
-                       var title = "#title"+index;\r
-                       var titleEdit = "#titleEdit"+index;\r
-\r
-                       var url = "#href"+index;\r
-                       var urlEdit = "#hrefEdit"+index;\r
-                       \r
-                       var order = "#order"+index;\r
-                       var orderEdit = "#orderEdit"+index;\r
-                 \r
-                       var eventDate = "#eventDate"+index;\r
-                       var eventDateEdit = "#eventDateEdit"+index;\r
-                 \r
-                       \r
-                       var dsavebutton  ="#savebutton"+index;\r
-                       var dremovebutton="#removebutton"+index;\r
-                       var dmanagebutton="#managebutton"+index;\r
-                       var deditRbutton="#editRbutton"+index;\r
-                       \r
-                       $(title).css('display', 'none');\r
-                       $(titleEdit).css('display', 'inherit'); \r
-                       $(url).css('display', 'none');\r
-                       $(urlEdit).css('display', 'inherit'); \r
-                       $(order).css('display', 'none');\r
-                       $(orderEdit).css('display', 'inherit');\r
-                       $(eventDate).css('display', 'none');\r
-                       $(eventDateEdit).css('display', 'inherit');\r
-                       \r
-                       $(dsavebutton).css('display', 'inherit');\r
-                       $(dremovebutton).css('display', 'inherit');\r
-                       $(dmanagebutton).css('display', 'none');\r
-                       $(deditRbutton).css('display', 'inherit');\r
-                       \r
-                     };\r
-                     \r
-                  $scope.cancelEdit = function(index) {\r
-                       \r
-                       $scope.editMode=false;\r
-                       var category = "#category"+index;\r
-                       var categoryEdit = "#categoryEdit"+index;\r
-                       \r
-                       var title = "#title"+index;\r
-                       var titleEdit = "#titleEdit"+index;\r
-       \r
-                       var url = "#href"+index;\r
-                       var urlEdit = "#hrefEdit"+index;\r
-                       \r
-                       var order = "#order"+index;\r
-                       var orderEdit = "#orderEdit"+index;\r
-\r
-                       var eventDate = "#eventDate"+index;\r
-                       var eventDateEdit = "#eventDateEdit"+index;\r
-\r
-                       var dsavebutton  ="#savebutton"+index;\r
-                       var dremovebutton  ="#removebutton"+index;\r
-                       var dmanagebutton="#managebutton"+index;\r
-                       var deditRbutton="#editRbutton"+index;\r
-               \r
-                       $(title).css('display', 'inherit');\r
-                       $(titleEdit).css('display', 'none'); \r
-                       \r
-                       $(url).css('display', 'inherit');\r
-                       $(urlEdit).css('display', 'none'); \r
-                       \r
-                       $(order).css('display', 'inherit');\r
-                       $(orderEdit).css('display', 'none');\r
-\r
-                       $(eventDate).css('display', 'inherit');\r
-                       $(eventDateEdit).css('display', 'none');\r
-\r
-                       $(dsavebutton).css('display', 'none');\r
-                       $(dremovebutton).css('display', 'none');\r
-                       $(dmanagebutton).css('display', 'inherit');\r
-                       $(deditRbutton).css('display', 'none');\r
-                       \r
-                    };\r
-               \r
-               $scope.popupConfirmWin = function(title, msgBody, callback){\r
-               modalService.popupConfirmWin.apply(null, arguments);\r
-            };\r
-        }           \r
-    }\r
-    CommonWidgetController.$inject = ['dashboardService', '$scope', 'message', '$q', '$http', 'conf', '$filter','confirmBoxService','$log'];\r
-    angular.module('ecompApp').controller('CommonWidgetController', CommonWidgetController); \r
-})();\r
-\r
-angular.module('ecompApp').filter('cut', function () {\r
-    return function (value, wordwise, max, tail) {\r
-        if (!value) return '';\r
-\r
-        max = parseInt(max, 10);\r
-        if (!max) return value;\r
-        if (value.length <= max) return value;\r
-\r
-        value = value.substr(0, max);\r
-        if (wordwise) {\r
-            var lastspace = value.lastIndexOf(' ');\r
-            if (lastspace != -1) {\r
-              //Also remove . and , so its gives a cleaner result.\r
-              if (value.charAt(lastspace-1) == '.' || value.charAt(lastspace-1) == ',') {\r
-                lastspace = lastspace - 1;\r
-              }\r
-              value = value.substr(0, lastspace);\r
-            }\r
-        }\r
-\r
-        return value + (tail || ' …');\r
-    };\r
-});\r
-\r
-angular.module('ecompApp').controller('DatePickerController', function ($scope, uibDateParser) {\r
-                 $scope.today = function() {\r
-                   $scope.dt = new Date();\r
-                 };\r
-                 $scope.today();\r
-\r
-                 $scope.clear = function() {\r
-                   $scope.dt = null;\r
-                 };\r
-\r
-                 $scope.inlineOptions = {\r
-                   customClass: getDayClass,\r
-                   minDate: new Date(),\r
-                   showWeeks: true\r
-                 };\r
-\r
-                 $scope.dateOptions = {\r
-                   dateDisabled: disabled,\r
-                   formatYear: 'yy',\r
-                   minDate: new Date(),\r
-                   startingDay: 1\r
-                 };\r
-\r
-                 // Disable weekend selection\r
-                 function disabled(data) {\r
-                   var date = data.date,\r
-                     mode = data.mode;\r
-                   return mode === 'day' && (date.getDay() === 0 || date.getDay() === 6);\r
-                 }\r
-\r
-                 $scope.toggleMin = function() {\r
-                   $scope.inlineOptions.minDate = $scope.inlineOptions.minDate ? null : new Date();\r
-                   $scope.dateOptions.minDate = $scope.inlineOptions.minDate;\r
-                 };\r
-\r
-                 $scope.toggleMin();\r
-\r
-                 $scope.open1 = function() {\r
-                       // console.log('In open1');\r
-                   $scope.popup1.opened = true;\r
-                 };\r
-\r
-                 $scope.open2 = function() {\r
-                       // console.log('In open2');\r
-                       $scope.popup2.opened = true;\r
-                 };\r
-\r
-                 \r
-                 $scope.setDate = function(year, month, day) {\r
-                   $scope.dt = new Date(year, month, day);\r
-                 };\r
-\r
-                 $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];\r
-                 $scope.format = $scope.formats[3];\r
-                 $scope.altInputFormats = ['M!/d!/yyyy'];\r
-\r
-                 $scope.popup1 = {\r
-                   opened: false\r
-                 };\r
-\r
-                 $scope.popup2 = {\r
-                   opened: false\r
-                 };\r
-\r
-                 var tomorrow = new Date();\r
-                 tomorrow.setDate(tomorrow.getDate() + 1);\r
-                 var afterTomorrow = new Date();\r
-                 afterTomorrow.setDate(tomorrow.getDate() + 1);\r
-                 $scope.events = [\r
-                   {\r
-                     date: tomorrow,\r
-                     status: 'full'\r
-                   },\r
-                   {\r
-                     date: afterTomorrow,\r
-                     status: 'partially'\r
-                   }\r
-                 ];\r
-\r
-                 function getDayClass(data) {\r
-                   var date = data.date,\r
-                     mode = data.mode;\r
-                   if (mode === 'day') {\r
-                     var dayToCheck = new Date(date).setHours(0,0,0,0);\r
-\r
-                     for (var i = 0; i < $scope.events.length; i++) {\r
-                       var currentDay = new Date($scope.events[i].date).setHours(0,0,0,0);\r
-\r
-                       if (dayToCheck === currentDay) {\r
-                         return $scope.events[i].status;\r
-                       }\r
-                     }\r
-                   }\r
-\r
-                   return '';\r
-                 }\r
-});\r
-\r
-\r
-\r
-function toggleCollapsible(id, clickedIconId, subtitutingIconId){\r
-       $("#"+id).toggle();\r
-       $("#"+clickedIconId).toggle();\r
-       $("#"+subtitutingIconId).toggle();\r
-       setTimeout(function(){focusFirstEle(id);}, 1000);\r
-}\r
-\r
-function focusFirstEle(id){\r
-       var focusItems = $("#"+id).find(":focusable");\r
-       for(var i=0; i<focusItems.length; i++){\r
-               if(!isHidden(focusItems[i])){\r
-                       var targetClassName = focusItems[i].className;\r
-                       if(targetClassName!='collapsibleArrow'){\r
-                               focusItems[i].focus();\r
-                               return;\r
-                       }\r
-               }\r
-       }\r
-}     \r
-\r
-function validateUrl(value){\r
-    return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);\r
-  }\r
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+'use strict';
+
+(function () {
+    class CommonWidgetController {
+        constructor(dashboardService, $scope, message, $q, $http, conf, $filter,confirmBoxService,$log) {
+               $scope.widgetType = message.type;
+               $scope.widgetTypeDisplay = message.type;
+               $scope.modflag = false;
+               
+               switch (message.type) {
+            case 'EVENTS':
+               $scope.widgetTypeDisplay = 'Events'
+                break;
+            case 'NEWS':
+               $scope.widgetTypeDisplay = 'News'
+                break;
+            case 'IMPORTANTRESOURCES':
+               $scope.widgetTypeDisplay = 'Resources'
+                break;
+               }
+               $scope.widgetData = [];
+               dashboardService.getCommonWidgetData(message.type)
+               .then(function (res) {
+                        // console.log('CommonWidgetController: result is ' + res);
+                        $scope.widgetData = res.response.items;
+                });
+                 
+                
+                
+               $scope.setEdit = function(index) {
+                       
+                       //for(var i=0; i<$scope.widgetData )
+                       
+                       if($scope.modflag === false){
+                               $scope.widgetData[index].showEdit = true;
+                               $scope.modflag = true;
+                       }
+                }               
+               
+                $scope.modify = function(index) {
+                       
+                       $scope.widgetObject = {};
+                       $scope.widgetObject.id = $scope.widgetData[parseInt(index)].id;
+                       $scope.widgetObject.category = $scope.widgetData[parseInt(index)].category;
+                       $scope.widgetObject.title = $scope.widgetData[parseInt(index)].title;
+                       $scope.widgetObject.href = $scope.widgetData[parseInt(index)].href;
+                       $scope.widgetObject.eventDate = $scope.widgetData[parseInt(index)].eventDate;
+                       $scope.widgetObject.content = $scope.widgetData[parseInt(index)].content;
+                       $scope.widgetObject.sortOrder = $scope.widgetData[parseInt(index)].sortOrder;
+                       
+                       var validateMsg = $scope.validateWidgetObject($scope.widgetObject);
+                       if (validateMsg) {
+                               confirmBoxService.showInformation(validateMsg).then(isConfirmed => {return;});
+                               return;
+                       }
+                       
+                       dashboardService.saveCommonWidgetData($scope.widgetObject)
+                       .then(function(res){
+                               if (res.status == 'OK') {
+                               dashboardService.getCommonWidgetData(message.type)
+                               .then(function(res){
+                                       $scope.widgetData = res.response.items;
+                               $scope.modflag = false;
+                                       $scope.cancelEdit(index);
+                                       });
+                               }
+                               else {
+                                       // Save failed
+                                       confirmBoxService.showInformation("Save failed").then(isConfirmed => {return;});
+                                       return;
+                               }
+                       });   
+
+               };      
+               
+               $scope.newWidgetObject = {};
+               
+               // Answers string error if validation fails; 
+               // answers null if all is well.
+               $scope.validateWidgetObject = function(wo) {
+                       if (wo.title == null || wo.title == '')
+                               return "Please enter a title.";
+                       if (wo.href == null || wo.href == '' || !validateUrl(wo.href))
+                               return "Please enter a valid URL that starts with http.";
+                       if (wo.sortOrder == null || wo.sortOrder == '' || isNaN(parseInt(wo.sortOrder)))
+                               return "Please enter a number for the sort order.";
+                       if (wo.category=='EVENTS') {
+                               if (wo.eventDate == null || wo.eventDate == '')
+                                       return "Please enter a date for the event.";
+                               // Parses and normalizes the date with rollover.
+                               var filteredDate = $filter('date')(wo.eventDate, "yyyy-MM-dd");
+                               // $log.debug('dashboard-widget-controller: date filter yields ' + filteredDate);
+                               // The date picker shows mm/dd/yy.
+                               if (filteredDate == null || filteredDate.length != 10)
+                                       return "Please enter a valid date as YYYY-MM-DD";
+                               if (wo.content==null || wo.content=='')
+                                       return "Please enter content for the event.";
+                       }
+                       return null;
+               };
+               
+               $scope.saveNew = function() {
+                       $scope.newWidgetObject.category = message.type;
+                       // $log.info($scope.newWidgetObject);
+                       var validateMsg = $scope.validateWidgetObject($scope.newWidgetObject);
+                       if (validateMsg) {
+                               confirmBoxService.showInformation(validateMsg).then(isConfirmed => {return;});
+                               return;
+                       }
+                       // Transform date into expected storage format
+                       $scope.newWidgetObject.eventDate = $filter('date')($scope.newWidgetObject.eventDate, "yyyy-MM-dd");
+
+                       dashboardService.saveCommonWidgetData($scope.newWidgetObject)
+                       .then(function(res){
+                               if (res.status == 'OK') {
+                                       $scope.widgetForm.$setPristine();  
+                                       confirmBoxService.showInformation('You have added a new item').then(isConfirmed => {
+                                       });
+                                       dashboardService.getCommonWidgetData(message.type)
+                                       .then(function(res){
+                                               $scope.widgetData = res.response.items;
+                                               $scope.newWidgetObject = {};
+                               });  
+                               }
+                               else {
+                                       confirmBoxService.showInformation("Save failed").then(isConfirmed => {return;});
+                                       return;
+                               }                               
+                       });                     
+               };
+               
+               $scope.remove = function(index) {
+                       var confirmMsg = 'Are you sure you want to delete this item from the list?' + ' Press OK to delete.';
+                       confirmBoxService.confirm(confirmMsg).then(function (confirmed) {
+                    if (confirmed == true) { 
+                       $scope.widgetObject = {};
+                               $scope.widgetObject.id = $scope.widgetData[parseInt(index)].id;
+                               $scope.widgetObject.category = $scope.widgetData[parseInt(index)].category;
+                               $scope.widgetObject.title = $scope.widgetData[parseInt(index)].title;
+                               $scope.widgetObject.href = $scope.widgetData[parseInt(index)].href;
+                               $scope.widgetObject.sortOrder = $scope.widgetData[parseInt(index)].sortOrder;
+                               
+                               
+                               dashboardService.removeCommonWidgetData($scope.widgetObject)
+                               .then(function(res){
+                                       dashboardService.getCommonWidgetData(message.type)
+                                       .then(function(res){
+                                               $scope.widgetData = res.response.items;
+                                               $scope.cancelEdit(index);
+                                       });                             
+                               });                             
+                    }
+                });
+                                       
+               };      
+               $scope.closeDialog = function(){
+                       $scope.closeThisDialog( $scope.widgetData);
+               }
+               $scope.deleteSpeedDial = function(widget){
+                       
+                }
+                
+                $scope.manage = function(index) {
+                               $scope.modflag = true;
+                               
+                               var thisdata = $scope.widgetData[index];
+                       $scope.editMode=true;
+                       var category = "#category"+index;
+                       var categoryEdit = "#categoryEdit"+index;
+                       
+                       var title = "#title"+index;
+                       var titleEdit = "#titleEdit"+index;
+
+                       var url = "#href"+index;
+                       var urlEdit = "#hrefEdit"+index;
+                       
+                       var order = "#order"+index;
+                       var orderEdit = "#orderEdit"+index;
+                 
+                       var eventDate = "#eventDate"+index;
+                       var eventDateEdit = "#eventDateEdit"+index;
+                 
+                       
+                       var dsavebutton  ="#savebutton"+index;
+                       var dremovebutton="#removebutton"+index;
+                       var dmanagebutton="#managebutton"+index;
+                       var deditRbutton="#editRbutton"+index;
+                       
+                       $(title).css('display', 'none');
+                       $(titleEdit).css('display', 'inherit'); 
+                       $(url).css('display', 'none');
+                       $(urlEdit).css('display', 'inherit'); 
+                       $(order).css('display', 'none');
+                       $(orderEdit).css('display', 'inherit');
+                       $(eventDate).css('display', 'none');
+                       $(eventDateEdit).css('display', 'inherit');
+                       
+                       $(dsavebutton).css('display', 'inherit');
+                       $(dremovebutton).css('display', 'inherit');
+                       $(dmanagebutton).css('display', 'none');
+                       $(deditRbutton).css('display', 'inherit');
+                       
+                     };
+                     
+                  $scope.cancelEdit = function(index) {
+                       
+                       $scope.editMode=false;
+                       var category = "#category"+index;
+                       var categoryEdit = "#categoryEdit"+index;
+                       
+                       var title = "#title"+index;
+                       var titleEdit = "#titleEdit"+index;
+       
+                       var url = "#href"+index;
+                       var urlEdit = "#hrefEdit"+index;
+                       
+                       var order = "#order"+index;
+                       var orderEdit = "#orderEdit"+index;
+
+                       var eventDate = "#eventDate"+index;
+                       var eventDateEdit = "#eventDateEdit"+index;
+
+                       var dsavebutton  ="#savebutton"+index;
+                       var dremovebutton  ="#removebutton"+index;
+                       var dmanagebutton="#managebutton"+index;
+                       var deditRbutton="#editRbutton"+index;
+               
+                       $(title).css('display', 'inherit');
+                       $(titleEdit).css('display', 'none'); 
+                       
+                       $(url).css('display', 'inherit');
+                       $(urlEdit).css('display', 'none'); 
+                       
+                       $(order).css('display', 'inherit');
+                       $(orderEdit).css('display', 'none');
+
+                       $(eventDate).css('display', 'inherit');
+                       $(eventDateEdit).css('display', 'none');
+
+                       $(dsavebutton).css('display', 'none');
+                       $(dremovebutton).css('display', 'none');
+                       $(dmanagebutton).css('display', 'inherit');
+                       $(deditRbutton).css('display', 'none');
+                       
+                    };
+               
+               $scope.popupConfirmWin = function(title, msgBody, callback){
+               modalService.popupConfirmWin.apply(null, arguments);
+            };
+        }           
+    }
+    CommonWidgetController.$inject = ['dashboardService', '$scope', 'message', '$q', '$http', 'conf', '$filter','confirmBoxService','$log'];
+    angular.module('ecompApp').controller('CommonWidgetController', CommonWidgetController); 
+})();
+
+angular.module('ecompApp').filter('cut', function () {
+    return function (value, wordwise, max, tail) {
+        if (!value) return '';
+
+        max = parseInt(max, 10);
+        if (!max) return value;
+        if (value.length <= max) return value;
+
+        value = value.substr(0, max);
+        if (wordwise) {
+            var lastspace = value.lastIndexOf(' ');
+            if (lastspace != -1) {
+              //Also remove . and , so its gives a cleaner result.
+              if (value.charAt(lastspace-1) == '.' || value.charAt(lastspace-1) == ',') {
+                lastspace = lastspace - 1;
+              }
+              value = value.substr(0, lastspace);
+            }
+        }
+
+        return value + (tail || ' …');
+    };
+});
+
+angular.module('ecompApp').controller('DatePickerController', function ($scope, uibDateParser) {
+                 $scope.today = function() {
+                   $scope.dt = new Date();
+                 };
+                 $scope.today();
+
+                 $scope.clear = function() {
+                   $scope.dt = null;
+                 };
+
+                 $scope.inlineOptions = {
+                   customClass: getDayClass,
+                   minDate: new Date(),
+                   showWeeks: true
+                 };
+
+                 $scope.dateOptions = {
+                   dateDisabled: disabled,
+                   formatYear: 'yy',
+                   minDate: new Date(),
+                   startingDay: 1
+                 };
+
+                 // Disable weekend selection
+                 function disabled(data) {
+                   var date = data.date,
+                     mode = data.mode;
+                   return mode === 'day' && (date.getDay() === 0 || date.getDay() === 6);
+                 }
+
+                 $scope.toggleMin = function() {
+                   $scope.inlineOptions.minDate = $scope.inlineOptions.minDate ? null : new Date();
+                   $scope.dateOptions.minDate = $scope.inlineOptions.minDate;
+                 };
+
+                 $scope.toggleMin();
+
+                 $scope.open1 = function() {
+                       // console.log('In open1');
+                   $scope.popup1.opened = true;
+                 };
+
+                 $scope.open2 = function() {
+                       // console.log('In open2');
+                       $scope.popup2.opened = true;
+                 };
+
+                 
+                 $scope.setDate = function(year, month, day) {
+                   $scope.dt = new Date(year, month, day);
+                 };
+
+                 $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];
+                 $scope.format = $scope.formats[3];
+                 $scope.altInputFormats = ['M!/d!/yyyy'];
+
+                 $scope.popup1 = {
+                   opened: false
+                 };
+
+                 $scope.popup2 = {
+                   opened: false
+                 };
+
+                 var tomorrow = new Date();
+                 tomorrow.setDate(tomorrow.getDate() + 1);
+                 var afterTomorrow = new Date();
+                 afterTomorrow.setDate(tomorrow.getDate() + 1);
+                 $scope.events = [
+                   {
+                     date: tomorrow,
+                     status: 'full'
+                   },
+                   {
+                     date: afterTomorrow,
+                     status: 'partially'
+                   }
+                 ];
+
+                 function getDayClass(data) {
+                   var date = data.date,
+                     mode = data.mode;
+                   if (mode === 'day') {
+                     var dayToCheck = new Date(date).setHours(0,0,0,0);
+
+                     for (var i = 0; i < $scope.events.length; i++) {
+                       var currentDay = new Date($scope.events[i].date).setHours(0,0,0,0);
+
+                       if (dayToCheck === currentDay) {
+                         return $scope.events[i].status;
+                       }
+                     }
+                   }
+
+                   return '';
+                 }
+});
+
+
+
+function toggleCollapsible(id, clickedIconId, subtitutingIconId){
+       $("#"+id).toggle();
+       $("#"+clickedIconId).toggle();
+       $("#"+subtitutingIconId).toggle();
+       setTimeout(function(){focusFirstEle(id);}, 1000);
+}
+
+function focusFirstEle(id){
+       var focusItems = $("#"+id).find(":focusable");
+       for(var i=0; i<focusItems.length; i++){
+               if(!isHidden(focusItems[i])){
+                       var targetClassName = focusItems[i].className;
+                       if(targetClassName!='collapsibleArrow'){
+                               focusItems[i].focus();
+                               return;
+                       }
+               }
+       }
+}     
+
+function validateUrl(value){
+    return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
+  }