diff options
| -rw-r--r-- | www/js/DataModel.js | 3 | ||||
| -rw-r--r-- | www/js/MontageCtrl.js | 187 | ||||
| -rw-r--r-- | www/templates/reorder-modal.html | 44 |
3 files changed, 156 insertions, 78 deletions
diff --git a/www/js/DataModel.js b/www/js/DataModel.js index e42c96a7..0af087f0 100644 --- a/www/js/DataModel.js +++ b/www/js/DataModel.js @@ -450,6 +450,9 @@ angular.module('zmApp.controllers').service('ZMDataModel', else { zmDebug("No PIN set, skipping"); + d.resolve(true); + return (d.promise); + } }, diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js index d0fdd1b3..4ee543d4 100644 --- a/www/js/MontageCtrl.js +++ b/www/js/MontageCtrl.js @@ -84,6 +84,26 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', ' ZMDataModel.zmDebug("MontageCtrl: Hidden order is " + myhiddenorder); if (myorder) montageOrder = myorder.split(","); if (myhiddenorder) hiddenOrder = myhiddenorder.split(","); + + // handle add/delete monitors after the array has been + // saved + + if ($scope.monitors.length != montageOrder.length) + { + ZMDataModel.zmLog("Monitors array length different from stored hidden/order array. It's possible monitors were added/removed. Resetting..."); + montageOrder = []; + hiddenOrder = []; + for (i = 0; i < $scope.monitors.length; i++) { + montageOrder[i] = i; // order to show is order ZM returns + hiddenOrder[i] = 0; // don't hide them + } + window.localStorage.setItem("montageOrder", + montageOrder.toString()); + window.localStorage.setItem("montageHiddenOrder", + hiddenOrder.toString()); + + + } } // at this stage, the monitor arrangement is not matching // the montage order. Its in true order. Let us first process the hiddenOrder part @@ -208,65 +228,68 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', ' var modalIntervalHandle; + $scope.closeReorderModal = function () { + console.log("Close & Destroy Monitor Modal"); + // switch off awake, as liveview is finished + //ZMDataModel.setAwake(false); + $scope.modal.remove(); + }; //------------------------------------------------------------- // Called when user taps on the reorder button //------------------------------------------------------------- - $scope.toggleReorder = function () { - $scope.isReorder = !$scope.isReorder; - - var i; - oldMonitors = angular.copy($scope.monitors); - /*for (i=0; i<$scope.monitors.length; i++) - { - $scope.monitors[i].Monitor.listDisplay="show"; - }*/ + $scope.reorderList = function() + { + console.log ("REORDER"); + $scope.data.showDelete = false; + $scope.data.showReorder = !$scope.data.showReorder; + }; + + $scope.deleteList = function() + { + console.log ("DELETE"); + $scope.data.showDelete = !$scope.data.showDelete; + $scope.data.showReorder = false; + }; + + $scope.reloadReorder = function() + { + var refresh = ZMDataModel.getMonitors(1); + refresh.then(function (data) { + $scope.monitors = data; + $scope.MontageMonitors = data; + oldMonitors = angular.copy($scope.monitors); + var i; + montageOrder = []; + for (i = 0; i < $scope.monitors.length; i++) { + montageOrder[i] = i; + hiddenOrder[i] = 0; + } + window.localStorage.setItem("montageOrder", montageOrder.toString()); + window.localStorage.setItem("montageHiddenOrder", hiddenOrder.toString()); + ZMDataModel.zmLog("Montage order saved on refresh: " + montageOrder.toString() + " and hidden order: " + hiddenOrder.toString()); - ld = ZMDataModel.getLogin(); - if (ld.enableDebug) - { - // Lets show the re-order list - for (i=0; i < $scope.MontageMonitors.length; i++) - { - ZMDataModel.zmDebug ("Montage reorder list: " + $scope.MontageMonitors[i].Monitor.Name + - ":listdisplay->"+$scope.MontageMonitors[i].Monitor.listDisplay); - - } - } - - var getConfig = $ionicPopup.show({ - scope: $scope, - template: '<ion-scroll><ion-list show-delete="true" show-reorder="true">' + - '<ion-item class="item-remove-animate" ng-repeat="item in MontageMonitors"> ' + - '{{item.Monitor.Name}}' + - '<ion-delete-button ng-class="' + - '{\'ion-eye\':item.Monitor.listDisplay==\'show\',' + - '\'ion-eye-disabled\':item.Monitor.listDisplay!=\'show\'}"' + - 'ng-click="deleteItem($index)">' + - '</ion-delete-button>' + - '<ion-reorder-button class="ion-navicon" ' + - 'on-reorder="reorderItem(item, $fromIndex, $toIndex)">' + - '</ion-reorder-button></ion-item></ion-list></ion-scroll>', - - title: "Edit Montage", - buttons: [ - { - // user tapped Ok - type: 'button-block icon ion-checkmark-round', - onTap: function (e) { - window.localStorage.setItem("montageOrder", montageOrder.toString()); - window.localStorage.setItem("montageHiddenOrder", hiddenOrder.toString()); + }); + }; + + $scope.saveReorder = function() + { + window.localStorage.setItem("montageOrder", montageOrder.toString()); + window.localStorage.setItem("montageHiddenOrder", + hiddenOrder.toString()); console.log("Saved " + montageOrder.toString()); - ZMDataModel.zmLog("User press OK. Saved Monitor Order as: " + montageOrder.toString() + " and hidden order as " + hiddenOrder.toString()); - } - }, - { - type: 'button-block icon ion-close-round', - onTap: function (e) { - // user tapped cancel + ZMDataModel.zmLog("User press OK. Saved Monitor Order as: " + + montageOrder.toString() + + " and hidden order as " + hiddenOrder.toString()); + $scope.modal.remove(); + }; + + $scope.cancelReorder = function() + { + // user tapped cancel var i,myhiddenorder; if (window.localStorage.getItem("montageOrder") == undefined) { for (i = 0; i < $scope.MontageMonitors.length; i++) { @@ -304,37 +327,45 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', ' ZMDataModel.zmLog("User press Cancel. Restored Monitor Order as: " + montageOrder.toString() + " and hidden order as: " + hiddenOrder.toString()); } + $scope.modal.remove(); + }; + + $scope.toggleReorder = function () { + $scope.isReorder = !$scope.isReorder; + $scope.data={}; + $scope.data.showDelete = false; + $scope.data.showReorder = false; - } - }, - { - type: 'button-block icon ion-loop', - onTap: function (e) { - // user tapped refresh, so don't close this dialog - e.preventDefault(); - - // FIXME: list visually expands then resets - // why? - var refresh = ZMDataModel.getMonitors(1); - refresh.then(function (data) { - $scope.monitors = data; - $scope.MontageMonitors = data; - oldMonitors = angular.copy($scope.monitors); - var i; - montageOrder = []; - for (i = 0; i < $scope.monitors.length; i++) { - montageOrder[i] = i; - hiddenOrder[i] = 0; - } - window.localStorage.setItem("montageOrder", montageOrder.toString()); - window.localStorage.setItem("montageHiddenOrder", hiddenOrder.toString()); - ZMDataModel.zmLog("Montage order saved on refresh: " + montageOrder.toString() + " and hidden order: " + hiddenOrder.toString()); + var i; + oldMonitors = angular.copy($scope.monitors); + /*for (i=0; i<$scope.monitors.length; i++) + { + $scope.monitors[i].Monitor.listDisplay="show"; + }*/ - }); - } - } - ] + ld = ZMDataModel.getLogin(); + if (ld.enableDebug) + { + // Lets show the re-order list + for (i=0; i < $scope.MontageMonitors.length; i++) + { + ZMDataModel.zmDebug ("Montage reorder list: " + $scope.MontageMonitors[i].Monitor.Name + + ":listdisplay->"+$scope.MontageMonitors[i].Monitor.listDisplay); + + } + } + + $ionicModal.fromTemplateUrl('templates/reorder-modal.html', { + scope:$scope, + animation: 'slide-in-up' + }) + .then (function(modal) { + $scope.modal = modal; + $scope.modal.show(); }); + + + }; $scope.onSwipeLeft = function ($index) diff --git a/www/templates/reorder-modal.html b/www/templates/reorder-modal.html new file mode 100644 index 00000000..97bd367f --- /dev/null +++ b/www/templates/reorder-modal.html @@ -0,0 +1,44 @@ + + <ion-modal-view cache-view="false" > + + <ion-header-bar class="bar-positive"> + <div class="buttons"> + <button class="button button-icon icon ion-ios-minus-outline" + ng-click="deleteList();"></button> + <button class="button button-icon icon ion-ios-drag" ng-click="reorderList();"> + + </button> + </div> + + <h1 class="title">Edit</h1> + <div class="buttons"> + + <button class="button button-icon icon ion-ios-refresh-empty" ng-click="reloadReorder()"></button> + + <button class="button button-icon icon ion-ios-checkmark-empty" ng-click="saveReorder()"></button> + + <button class="button button-icon icon ion-ios-close-empty" ng-click="cancelReorder()"></button> + + </div> + </ion-header-bar> + + + <ion-content > + <ion-list show-delete="data.showDelete" show-reorder="data.showReorder"> + <ion-item ng-repeat="item in MontageMonitors"> + {{item.Monitor.Name}}<ion-delete-button ng-class="{'ion-eye':item.Monitor.listDisplay=='show','ion-eye-disabled':item.Monitor.listDisplay!='show'}" ng-click="deleteItem($index)"></ion-delete-button> + + <ion-reorder-button class="ion-navicon" on-reorder="reorderItem(item,$fromIndex, $toIndex)"></ion-reorder-button> + </ion-item> + </ion-list> + + + </ion-content> + + </ion-modal-view> + + + + + + |
