Sha256: a7c3f28d5127cd0dd7cd168ab991dbe955e5f8ad031fdace9b4bab53fddbc313

Contents?: true

Size: 1.5 KB

Versions: 12

Compression:

Stored size: 1.5 KB

Contents

'use strict';
var dirtyable, model, record;

dirtyable = {
  ignores: ['dirty', 'resource', 'route', 'initial_route', 'after_initialize', 'before_initialize', 'parent_resource', 'nested_attributes', 'reloading', 'ready', 'saving', 'salvation', 'sustained', 'element', 'default', 'lock', 'validated', 'validation', 'errors', 'dirty'],
  reserved_filter: function(name) {
    return this.ignores.indexOf(name) === -1;
  },
  record: {
    after_initialize: [
      function() {
        return this.subscribe(function(added, removed, changed, past) {
          return this.dirty || (this.dirty = !!Object.keys($.extend({}, added, removed, changed)).filter(dirtyable.reserved_filter, dirtyable).length);
        });
      }
    ]
  }
};

if (!Object.observe) {
  $.extend(dirtyable, {
    descriptor: {
      get: function() {
        return this.observed.dirty;
      },
      set: function(value) {
        this.observed.dirty = value;
        this.observation.scheduler.schedule();
        return value;
      }
    }
  });
  dirtyable.record.after_initialize.push(function() {
    return Object.defineProperty(this, 'dirty', dirtyable.descriptor);
  });
}

dirtyable.record.after_initialize.push(function() {
  return this.dirty = !!this._id;
});

model = window.model;

record = window.record;

model.dirtyable = true;

record.mix(function(recordable) {
  return recordable.after_initialize = recordable.after_initialize.concat(dirtyable.record.after_initialize);
});

model.mix(function(modelable) {});

export default dirtyable;

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
ende-0.5.20 components/indefinido/indemma/master/lib/record/dirtyable.js
ende-0.5.19 components/indefinido/indemma/master/lib/record/dirtyable.js
ende-0.5.18 components/indefinido/indemma/master/lib/record/dirtyable.js
ende-0.5.17 components/indefinido/indemma/master/lib/record/dirtyable.js
ende-0.5.16 components/indefinido/indemma/master/lib/record/dirtyable.js
ende-0.5.15 components/indefinido/indemma/master/lib/record/dirtyable.js
ende-0.5.14 components/indefinido/indemma/master/lib/record/dirtyable.js
ende-0.5.13 components/indefinido/indemma/master/lib/record/dirtyable.js
ende-0.5.12 components/indefinido/indemma/master/lib/record/dirtyable.js
ende-0.5.10 components/indefinido/indemma/master/lib/record/dirtyable.js
ende-0.5.9 components/indefinido/indemma/master/lib/record/dirtyable.js
ende-0.5.8 components/indefinido/indemma/master/lib/record/dirtyable.js