class IuguUI.View extends IuguUI.Base layout: "iugu-ui-view" secondaryView: false initialize: -> super window.Events.on "fillSlots", @fillSlots window.Events.on "resetSlots", @resetSlots @defaultLayout = @layout @secondaryView = @options.secondaryView if @options.secondaryView @firstRender = true if @model Backbone.Validation.bind @, forceUpdate: true valid: (view, attr, selector, cid) -> view.valid view, attr, selector, cid invalid: (view, attr, error, selector, cid) -> view.invalid view, attr, error, selector, cid @model.on 'error', @addErrors, @ @ redirectBack: -> history.back() fillSlots: ( context ) -> _.each( _.keys(context) ( key ) -> renderContext = context[key] if renderContext.el context[key].$el.detach() @$(key).empty().append context[key].el else @$(key).empty().append context[key] ) resetSlots: ( slots ) -> _.each( slots, ( slot ) -> @$(slot).empty() ) enableLoader: -> debug "ENABLED LOADER" @viewLoader = $('
') $(@el).append @viewLoader disableLoader: -> debug "DISABLED LOADER" if @viewLoader @viewLoader.remove() load: -> debug "ON LOAD" @disableLoader() @render() valid: (view, attr, selector, cid) -> sel = '[' + selector + '~="' + attr + '"]' sel = sel + '[cid="' + cid + '"]' if cid control = view.$ sel group = view.$ ".form-group" list = group.find ".error-list" return if view.model.preValidate attr, control.val() new_attr = attr.replace '.', '-' @$(".error-" + new_attr).remove() control.parents('.iugu-ui-form-wrapper').removeClass "input-with-errors" list.parent().remove() if list.find(".error").length == 0 invalid: (view, attr, error, selector, cid) -> sel = '[' + selector + '~="' + attr + '"]' sel = sel + '[cid="' + cid + '"]' if cid control = view.$ sel group = view.$ ".form-group" list = group.find ".error-list" control.parents('.iugu-ui-form-wrapper').addClass "input-with-errors" if list.length == 0 group.prepend "

#{_t 'phrases.error_title'}

" list = group.find ".error-list" new_attr = attr.replace '.', '-' list.find(".error-" + new_attr).remove() parent_model = "" parent_model = "error-" + attr.split('.')[0] if cid? model_name = @model.identifier right_attr = attr.split '.' right_attr = right_attr[right_attr.length-1] right_attr = attr unless model_name? if _.isArray(error) _.each(error, (err) -> list.append "
  • #{_t(model_name + '_fields.' + right_attr)} #{err}
  • " ) else list.append "
  • #{error}
  • " addErrors: (model, errors) -> invalid = @invalid view = @ errors_json = JSON.parse errors.responseText _.each(errors_json.errors, (val, key) -> invalid view, key, val, "name" ) doEmptyCollectionLogic: -> if @collection? && @collection.length == 0 @layout = @emptyCollection.layout || 'iugu-ui-view-empty' @extendContextWithEmptyCollection() else @layout = @defaultLayout if @defaultLayout? extendContextWithEmptyCollection: -> ctx = @context() @context = -> _.extend ctx, emptyCollection: @emptyCollection render: -> if @emptyCollection? && @firstRender @doEmptyCollectionLogic() @firstRender = false super @secondaryView = @options.secondaryView if @options.secondaryView? if app.activeView != @ and @secondaryView == false app.activeView.close() if app.activeView app.activeView = @ if window.app.rootWindow? and window.app.rootWindow.setTitle window.app.rootWindow.setTitle @title bindToRivets = {} bindToRivets['model'] = @model if @model bindToRivets['collection'] = @collection if @collection rivets.bind @$el, bindToRivets if @model or @collection IuguUI.Combobox.load( @$el ) IuguUI.Button.load( @$el ) IuguUI.Checkbox.load( @$el ) IuguUI.Radio.load( @$el ) IuguUI.Money.load( @$el ) @ unload: () -> debug 'Called IuguUI.View:unload' if @model Backbone.Validation.unbind @ @model.off null, null, @ if @collection @collection.off null, null, @ super @IuguUI.View = IuguUI.View