Showing
3 changed files
with
44 additions
and
6 deletions
@@ -161,10 +161,20 @@ function DashboardController($scope, $rootScope, $element, $timeout, $log, toast | @@ -161,10 +161,20 @@ function DashboardController($scope, $rootScope, $element, $timeout, $log, toast | ||
161 | 161 | ||
162 | $scope.$watch('vm.columns', function () { | 162 | $scope.$watch('vm.columns', function () { |
163 | vm.gridsterOpts.columns = vm.columns ? vm.columns : 24; | 163 | vm.gridsterOpts.columns = vm.columns ? vm.columns : 24; |
164 | + if (gridster) { | ||
165 | + gridster.columns = vm.columns; | ||
166 | + updateGridsterParams(); | ||
167 | + } | ||
168 | + updateVisibleRect(); | ||
164 | }); | 169 | }); |
165 | 170 | ||
166 | $scope.$watch('vm.margins', function () { | 171 | $scope.$watch('vm.margins', function () { |
167 | vm.gridsterOpts.margins = vm.margins ? vm.margins : [10, 10]; | 172 | vm.gridsterOpts.margins = vm.margins ? vm.margins : [10, 10]; |
173 | + if (gridster) { | ||
174 | + gridster.margins = vm.margins; | ||
175 | + updateGridsterParams(); | ||
176 | + } | ||
177 | + updateVisibleRect(); | ||
168 | }); | 178 | }); |
169 | 179 | ||
170 | $scope.$watch('vm.isEdit', function () { | 180 | $scope.$watch('vm.isEdit', function () { |
@@ -230,6 +240,26 @@ function DashboardController($scope, $rootScope, $element, $timeout, $log, toast | @@ -230,6 +240,26 @@ function DashboardController($scope, $rootScope, $element, $timeout, $log, toast | ||
230 | }, 0, false); | 240 | }, 0, false); |
231 | } | 241 | } |
232 | 242 | ||
243 | + function updateGridsterParams() { | ||
244 | + if (gridster) { | ||
245 | + if (gridster.colWidth === 'auto') { | ||
246 | + gridster.curColWidth = (gridster.curWidth + (gridster.outerMargin ? -gridster.margins[1] : gridster.margins[1])) / gridster.columns; | ||
247 | + } else { | ||
248 | + gridster.curColWidth = gridster.colWidth; | ||
249 | + } | ||
250 | + gridster.curRowHeight = gridster.rowHeight; | ||
251 | + if (angular.isString(gridster.rowHeight)) { | ||
252 | + if (gridster.rowHeight === 'match') { | ||
253 | + gridster.curRowHeight = Math.round(gridster.curColWidth); | ||
254 | + } else if (gridster.rowHeight.indexOf('*') !== -1) { | ||
255 | + gridster.curRowHeight = Math.round(gridster.curColWidth * gridster.rowHeight.replace('*', '').replace(' ', '')); | ||
256 | + } else if (gridster.rowHeight.indexOf('/') !== -1) { | ||
257 | + gridster.curRowHeight = Math.round(gridster.curColWidth / gridster.rowHeight.replace('/', '').replace(' ', '')); | ||
258 | + } | ||
259 | + } | ||
260 | + } | ||
261 | + } | ||
262 | + | ||
233 | function updateVisibleRect (force, containerResized) { | 263 | function updateVisibleRect (force, containerResized) { |
234 | if (gridster) { | 264 | if (gridster) { |
235 | var position = $(gridster.$element).position() | 265 | var position = $(gridster.$element).position() |
@@ -159,6 +159,7 @@ export default function WidgetController($scope, $timeout, $window, $element, $q | @@ -159,6 +159,7 @@ export default function WidgetController($scope, $timeout, $window, $element, $q | ||
159 | }; | 159 | }; |
160 | 160 | ||
161 | vm.gridsterItemInitialized = gridsterItemInitialized; | 161 | vm.gridsterItemInitialized = gridsterItemInitialized; |
162 | + vm.visibleRectChanged = visibleRectChanged; | ||
162 | 163 | ||
163 | function gridsterItemInitialized(item) { | 164 | function gridsterItemInitialized(item) { |
164 | if (item) { | 165 | if (item) { |
@@ -167,6 +168,11 @@ export default function WidgetController($scope, $timeout, $window, $element, $q | @@ -167,6 +168,11 @@ export default function WidgetController($scope, $timeout, $window, $element, $q | ||
167 | } | 168 | } |
168 | } | 169 | } |
169 | 170 | ||
171 | + function visibleRectChanged(newVisibleRect) { | ||
172 | + visibleRect = newVisibleRect; | ||
173 | + updateVisibility(); | ||
174 | + } | ||
175 | + | ||
170 | initWidget(); | 176 | initWidget(); |
171 | 177 | ||
172 | function initWidget() { | 178 | function initWidget() { |
@@ -221,11 +227,6 @@ export default function WidgetController($scope, $timeout, $window, $element, $q | @@ -221,11 +227,6 @@ export default function WidgetController($scope, $timeout, $window, $element, $q | ||
221 | $scope.$emit("widgetPositionChanged", widget); | 227 | $scope.$emit("widgetPositionChanged", widget); |
222 | }); | 228 | }); |
223 | 229 | ||
224 | - $scope.$on('visibleRectChanged', function (event, newVisibleRect) { | ||
225 | - visibleRect = newVisibleRect; | ||
226 | - updateVisibility(); | ||
227 | - }); | ||
228 | - | ||
229 | $scope.$on('onWidgetFullscreenChanged', function(event, isWidgetExpanded, fullscreenWidget) { | 230 | $scope.$on('onWidgetFullscreenChanged', function(event, isWidgetExpanded, fullscreenWidget) { |
230 | if (widget === fullscreenWidget) { | 231 | if (widget === fullscreenWidget) { |
231 | onRedraw(0); | 232 | onRedraw(0); |
@@ -34,12 +34,19 @@ function Widget($controller, $compile, widgetService) { | @@ -34,12 +34,19 @@ function Widget($controller, $compile, widgetService) { | ||
34 | var widget = locals.widget; | 34 | var widget = locals.widget; |
35 | var gridsterItem; | 35 | var gridsterItem; |
36 | 36 | ||
37 | + scope.$on('visibleRectChanged', function (event, newVisibleRect) { | ||
38 | + locals.visibleRect = newVisibleRect; | ||
39 | + if (widgetController) { | ||
40 | + widgetController.visibleRectChanged(newVisibleRect); | ||
41 | + } | ||
42 | + }); | ||
43 | + | ||
37 | scope.$on('gridster-item-initialized', function (event, item) { | 44 | scope.$on('gridster-item-initialized', function (event, item) { |
38 | gridsterItem = item; | 45 | gridsterItem = item; |
39 | if (widgetController) { | 46 | if (widgetController) { |
40 | widgetController.gridsterItemInitialized(gridsterItem); | 47 | widgetController.gridsterItemInitialized(gridsterItem); |
41 | } | 48 | } |
42 | - }) | 49 | + }); |
43 | 50 | ||
44 | elem.html('<div flex layout="column" layout-align="center center" style="height: 100%;">' + | 51 | elem.html('<div flex layout="column" layout-align="center center" style="height: 100%;">' + |
45 | ' <md-progress-circular md-mode="indeterminate" class="md-accent md-hue-2" md-diameter="120"></md-progress-circular>' + | 52 | ' <md-progress-circular md-mode="indeterminate" class="md-accent md-hue-2" md-diameter="120"></md-progress-circular>' + |