Sha256: 08789c8158be0b27ecb2db82d923cd5bb6fc5e2bd8db4d8f7d29ae8b4dede6bf

Contents?: true

Size: 1.95 KB

Versions: 21

Compression:

Stored size: 1.95 KB

Contents

(function(app, kea, ko) {
  "use strict";

  var viewmodel_name = '<%= name.camelize %>',
      ViewmodelClass;

  ViewmodelClass = function <%= name.camelize %>() {
    kea.viewmodels.Parent.apply(this);
    kea.viewmodels.Child.apply(this);
    kea.viewmodels.Validatable.apply(this);

    var that = this;

    this._viewmodelName = function _viewmodelName() { return viewmodel_name; };

    this.exit       = ko.observable(false);
    this.shouldExit = function shouldExit() {
      var previous = that.exit();
      
      that.reset();
      that.exit(true);
      if (previous) { that.exit.valueHasMutated(); }
    };

    // this.context = ko.observable();
    // this.validatableName('context');

    this.submitInProgress = ko.observable(false);
    this.submitComplete   = ko.observable(false);
    
    // this.isSubmittable = ko.computed(function() {
    //   return !that.hasFieldsWithErrors() && !that.hasValidationsInProgress();
    // }, this, {deferEvaluation: true});
    
    this.ajaxInProgress   = ko.observable(false);
    this.ajaxDisabled     = ko.observable(false);
    this.submitComplete   = ko.observable(false);

    this.reset = function reset() {
      that.submitComplete(false);
      that.ajaxInProgress(false);
      that.ajaxDisabled(false);
    };

    this.setup = function setup(context) {
      this.reset();
      
      // context.makeValidatable();
      // that.context(context);
    };
    
    this.submit = function submit() {
      that.context().validate();

      // if (that.context().hasErrors() || that.submitInProgress() || !that.isSubmittable()) {
      //   return;
      // }
      
      that.submitInProgress(true);
      
      // return that.context().update()
      //   .done(function(asset) {
      //     that.submitComplete(true);
      //   })
      //   .always(function() {
      //     that.submitInProgress(false);
      //   });
    };
  };

  app.viewmodels[viewmodel_name] = ViewmodelClass;

})(window.app, window.kea, ko);

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
kea-rails-1.0.9 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha14 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha13 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha12 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha11 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha10 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha9 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha8 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha7 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha6 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha5 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha4 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha3 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha2 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-1.0.8 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-2.0.0.pre.alpha1 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-1.0.7 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-1.0.6 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-1.0.5 lib/generators/kea/viewmodel/templates/viewmodel.js.erb
kea-rails-1.0.4 lib/generators/kea/viewmodel/templates/viewmodel.js.erb