Fixing bug that caused references to stale DOM objects to be kept and used by Panels service

Was causing panels to break when used in conjuction with ng-repeat + filters
This commit is contained in:
Rob Harrington
2016-12-02 09:52:28 +11:00
parent 50b84c4ced
commit 27b22acd37
2 changed files with 24 additions and 23 deletions

View File

@@ -1,14 +1,16 @@
angular.module("admin.indexUtils").factory 'Panels', ->
new class Panels
panels: []
all: []
register: (ctrl, object, selected=null) ->
if ctrl? && object?
@panels.push { ctrl: ctrl, object: object, selected: selected }
existing = @panelFor(object)
newPanel = { ctrl: ctrl, object: object, selected: selected }
if existing then angular.extend(existing, newPanel) else @all.push(newPanel)
ctrl.select(selected) if selected?
toggle: (object, name, state=null) ->
panel = @findPanelByObject(object)
panel = @panelFor(object)
if panel.selected == name
@select(panel, null) unless state == "open"
else
@@ -18,5 +20,5 @@ angular.module("admin.indexUtils").factory 'Panels', ->
panel.selected = name
panel.ctrl.select(name)
findPanelByObject: (object) ->
(panel for panel in @panels when panel.object == object)[0]
panelFor: (object) ->
(@all.filter (panel) -> panel.object == object)[0]