Commit 2e7eed79f9365fb0932ffb516c6e22dd6626f0f8
1 parent
d43995ea
UI: Fix dashboard layout. Fix dashboard states processing.
Showing
3 changed files
with
65 additions
and
26 deletions
... | ... | @@ -89,7 +89,7 @@ function Dashboard() { |
89 | 89 | } |
90 | 90 | |
91 | 91 | /*@ngInject*/ |
92 | -function DashboardController($scope, $rootScope, $element, $timeout, $mdMedia, $mdUtil, timeService, types, utils) { | |
92 | +function DashboardController($scope, $rootScope, $element, $timeout, $mdMedia, $mdUtil, $q, timeService, types, utils) { | |
93 | 93 | |
94 | 94 | var highlightedMode = false; |
95 | 95 | var highlightedWidget = null; |
... | ... | @@ -311,11 +311,13 @@ function DashboardController($scope, $rootScope, $element, $timeout, $mdMedia, $ |
311 | 311 | if (vm.gridsterOpts.mobileBreakPoint != mobileBreakPoint) { |
312 | 312 | vm.gridsterOpts.mobileBreakPoint = mobileBreakPoint; |
313 | 313 | } |
314 | - var rowHeight = detectRowSize(isMobile); | |
315 | - if (vm.gridsterOpts.rowHeight != rowHeight) { | |
316 | - vm.gridsterOpts.rowHeight = rowHeight; | |
317 | - } | |
318 | - | |
314 | + detectRowSize(isMobile).then( | |
315 | + function(rowHeight) { | |
316 | + if (vm.gridsterOpts.rowHeight != rowHeight) { | |
317 | + vm.gridsterOpts.rowHeight = rowHeight; | |
318 | + } | |
319 | + } | |
320 | + ); | |
319 | 321 | vm.isMobileSize = checkIsMobileSize(); |
320 | 322 | } |
321 | 323 | |
... | ... | @@ -403,11 +405,14 @@ function DashboardController($scope, $rootScope, $element, $timeout, $mdMedia, $ |
403 | 405 | $scope.$on('gridster-mobile-changed', function (event, theGridster) { |
404 | 406 | if (checkIsLocalGridsterElement(theGridster)) { |
405 | 407 | vm.gridster = theGridster; |
406 | - var rowHeight = detectRowSize(vm.gridster.isMobile); | |
407 | - if (vm.gridsterOpts.rowHeight != rowHeight) { | |
408 | - vm.gridsterOpts.rowHeight = rowHeight; | |
409 | - updateGridsterParams(); | |
410 | - } | |
408 | + detectRowSize(vm.gridster.isMobile).then( | |
409 | + function(rowHeight) { | |
410 | + if (vm.gridsterOpts.rowHeight != rowHeight) { | |
411 | + vm.gridsterOpts.rowHeight = rowHeight; | |
412 | + updateGridsterParams(); | |
413 | + } | |
414 | + } | |
415 | + ); | |
411 | 416 | vm.isMobileSize = checkIsMobileSize(); |
412 | 417 | |
413 | 418 | //TODO: widgets visibility |
... | ... | @@ -425,29 +430,54 @@ function DashboardController($scope, $rootScope, $element, $timeout, $mdMedia, $ |
425 | 430 | } |
426 | 431 | } |
427 | 432 | |
433 | + function detectViewportHeight() { | |
434 | + var deferred = $q.defer(); | |
435 | + var viewportHeight = gridsterParent.height(); | |
436 | + if (viewportHeight) { | |
437 | + deferred.resolve(viewportHeight); | |
438 | + } else { | |
439 | + $scope.viewportHeightWatch = $scope.$watch(function() { return gridsterParent.height(); }, | |
440 | + function(viewportHeight) { | |
441 | + if (viewportHeight) { | |
442 | + $scope.viewportHeightWatch(); | |
443 | + deferred.resolve(viewportHeight); | |
444 | + } | |
445 | + } | |
446 | + ); | |
447 | + } | |
448 | + return deferred.promise; | |
449 | + } | |
450 | + | |
428 | 451 | function detectRowSize(isMobile) { |
452 | + var deferred = $q.defer(); | |
429 | 453 | var rowHeight; |
430 | 454 | if (autofillHeight()) { |
431 | - var viewportHeight = gridsterParent.height(); | |
432 | - var totalRows = 0; | |
433 | - for (var i = 0; i < vm.widgets.length; i++) { | |
434 | - var w = vm.widgets[i]; | |
435 | - var sizeY = widgetSizeY(w); | |
436 | - if (isMobile) { | |
437 | - totalRows += sizeY; | |
438 | - } else { | |
439 | - var row = widgetRow(w); | |
440 | - var bottom = row + sizeY; | |
441 | - totalRows = Math.max(totalRows, bottom); | |
455 | + detectViewportHeight().then( | |
456 | + function(viewportHeight) { | |
457 | + var totalRows = 0; | |
458 | + for (var i = 0; i < vm.widgets.length; i++) { | |
459 | + var w = vm.widgets[i]; | |
460 | + var sizeY = widgetSizeY(w); | |
461 | + if (isMobile) { | |
462 | + totalRows += sizeY; | |
463 | + } else { | |
464 | + var row = widgetRow(w); | |
465 | + var bottom = row + sizeY; | |
466 | + totalRows = Math.max(totalRows, bottom); | |
467 | + } | |
468 | + } | |
469 | + rowHeight = (viewportHeight - vm.gridsterOpts.margins[1]*(vm.widgets.length+1) + vm.gridsterOpts.margins[0]*vm.widgets.length) / totalRows; | |
470 | + deferred.resolve(rowHeight); | |
442 | 471 | } |
443 | - } | |
444 | - rowHeight = (viewportHeight - vm.gridsterOpts.margins[1]*(vm.widgets.length+1) + vm.gridsterOpts.margins[0]*vm.widgets.length) / totalRows; | |
472 | + ); | |
445 | 473 | } else if (isMobile) { |
446 | 474 | rowHeight = angular.isDefined(vm.mobileRowHeight) ? vm.mobileRowHeight : 70; |
475 | + deferred.resolve(rowHeight); | |
447 | 476 | } else { |
448 | 477 | rowHeight = 'match'; |
478 | + deferred.resolve(rowHeight); | |
449 | 479 | } |
450 | - return rowHeight; | |
480 | + return deferred.promise; | |
451 | 481 | } |
452 | 482 | |
453 | 483 | function widgetOrder(widget) { | ... | ... |
... | ... | @@ -135,7 +135,12 @@ export default function DefaultStateController($scope, $location, $state, $state |
135 | 135 | } |
136 | 136 | if (!result.length) { |
137 | 137 | result[0] = { id: null, params: {} } |
138 | + } else if (result.length > 1) { | |
139 | + var newResult = []; | |
140 | + newResult.push(result[result.length-1]); | |
141 | + result = newResult; | |
138 | 142 | } |
143 | + | |
139 | 144 | if (!result[0].id) { |
140 | 145 | result[0].id = dashboardUtils.getRootStateId(vm.states); |
141 | 146 | } | ... | ... |
... | ... | @@ -183,8 +183,12 @@ export default function EntityStateController($scope, $location, $state, $stateP |
183 | 183 | if (!result.length) { |
184 | 184 | result[0] = { id: null, params: {} } |
185 | 185 | } |
186 | + var rootStateId = dashboardUtils.getRootStateId(vm.states); | |
186 | 187 | if (!result[0].id) { |
187 | - result[0].id = dashboardUtils.getRootStateId(vm.states); | |
188 | + result[0].id = rootStateId; | |
189 | + } | |
190 | + if (result[0].id !== rootStateId) { | |
191 | + result = [ { id: rootStateId, params: {} } ]; | |
188 | 192 | } |
189 | 193 | return result; |
190 | 194 | } | ... | ... |