From 3f089d68112ccd7c5a37826e8aa0d03745c97f16 Mon Sep 17 00:00:00 2001 From: YNH Webdev Date: Tue, 24 Sep 2013 00:18:38 +0200 Subject: [PATCH] Implement remove --- examples/widgetapp/widget.coffee | 25 ++++++++++++++++++++++--- examples/widgetapp/widget.js | 26 +++++++++++++++++++++----- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/examples/widgetapp/widget.coffee b/examples/widgetapp/widget.coffee index b4656ea3..97dd5a11 100644 --- a/examples/widgetapp/widget.coffee +++ b/examples/widgetapp/widget.coffee @@ -75,6 +75,7 @@ class WSF_CONTROL @state = @fullstate.state @load_subcontrols() @isolation = (""+@$el.data('isolation')=="1") + @$el.data('control',@) return load_subcontrols: ()-> @@ -93,6 +94,7 @@ class WSF_CONTROL update: (state)-> return + process_actions: (actions)-> for action in actions try @@ -146,6 +148,7 @@ class WSF_CONTROL if new_states.actions? self.process_actions(new_states.actions) self.process_update(new_states) + #Simple event listener #subscribe to an event @@ -165,6 +168,11 @@ class WSF_CONTROL ev.callback.call(ev.context) return @ + remove:()-> + console.log "Removed #{@control_name}" + @$el.remove() + + class WSF_PAGE_CONTROL extends WSF_CONTROL constructor: (@fullstate)-> @state = @fullstate.state @@ -173,11 +181,16 @@ class WSF_PAGE_CONTROL extends WSF_CONTROL @control_name = @state.id @url = @state['url'] @url_params = jQuery.unparam(@state['url_params']) + @$el.data('control',@) @load_subcontrols() wrap : (cname,state)-> state + remove:()-> + console.log "Removed #{@control_name}" + @$el.remove() + controls = {} class WSF_BUTTON_CONTROL extends WSF_CONTROL @@ -357,14 +370,17 @@ class WSF_PROGRESS_CONTROL extends WSF_CONTROL fetch: ()-> @trigger_callback(@control_name, 'progress_fetch') - if @$el.closest('body').length <= 0 - clearInterval(@int) + update: (state)-> if state.progress? @state['progress'] = state.progress @$el.children('.progress-bar').attr('aria-valuenow', state.progress).width(state.progress + '%') + remove: ()-> + clearInterval(@int) + super + class WSF_PAGINATION_CONTROL extends WSF_CONTROL attach_events: ()-> @@ -436,7 +452,10 @@ start_modal = (action)-> modal.appendTo('body') modal.modal('show') modal.on 'hidden.bs.modal', ()-> - modal.remove() + $(modal.find('[data-name]').get().reverse()).each (i,value)-> + $(value).data('control').remove() + return + return $.get( action.url, { ajax: 1 } ) .done (data) -> modal.find('.modal-body').append(data) diff --git a/examples/widgetapp/widget.js b/examples/widgetapp/widget.js index fcd4e37b..40324b2e 100644 --- a/examples/widgetapp/widget.js +++ b/examples/widgetapp/widget.js @@ -139,6 +139,7 @@ WSF_CONTROL = (function() { this.state = this.fullstate.state; this.load_subcontrols(); this.isolation = "" + this.$el.data('isolation') === "1"; + this.$el.data('control', this); return; } @@ -287,6 +288,11 @@ WSF_CONTROL = (function() { return this; }; + WSF_CONTROL.prototype.remove = function() { + console.log("Removed " + this.control_name); + return this.$el.remove(); + }; + return WSF_CONTROL; })(); @@ -303,6 +309,7 @@ WSF_PAGE_CONTROL = (function(_super) { this.control_name = this.state.id; this.url = this.state['url']; this.url_params = jQuery.unparam(this.state['url_params']); + this.$el.data('control', this); this.load_subcontrols(); } @@ -310,6 +317,11 @@ WSF_PAGE_CONTROL = (function(_super) { return state; }; + WSF_PAGE_CONTROL.prototype.remove = function() { + console.log("Removed " + this.control_name); + return this.$el.remove(); + }; + return WSF_PAGE_CONTROL; })(WSF_CONTROL); @@ -642,10 +654,7 @@ WSF_PROGRESS_CONTROL = (function(_super) { }; WSF_PROGRESS_CONTROL.prototype.fetch = function() { - this.trigger_callback(this.control_name, 'progress_fetch'); - if (this.$el.closest('body').length <= 0) { - return clearInterval(this.int); - } + return this.trigger_callback(this.control_name, 'progress_fetch'); }; WSF_PROGRESS_CONTROL.prototype.update = function(state) { @@ -655,6 +664,11 @@ WSF_PROGRESS_CONTROL = (function(_super) { } }; + WSF_PROGRESS_CONTROL.prototype.remove = function() { + clearInterval(this.int); + return WSF_PROGRESS_CONTROL.__super__.remove.apply(this, arguments); + }; + return WSF_PROGRESS_CONTROL; })(WSF_CONTROL); @@ -763,7 +777,9 @@ start_modal = function(action) { modal.appendTo('body'); modal.modal('show'); modal.on('hidden.bs.modal', function() { - return modal.remove(); + $(modal.find('[data-name]').get().reverse()).each(function(i, value) { + $(value).data('control').remove(); + }); }); return $.get(action.url, { ajax: 1