Moved to spine 1.2.2.

This commit is contained in:
Martin Edenhofer 2013-10-31 23:36:57 +01:00
parent a7a48cfa96
commit cd119e4fae
14 changed files with 287 additions and 293 deletions

View file

@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.6.2 // Generated by CoffeeScript 1.6.3
(function() { (function() {
var $, Ajax, Base, Collection, Extend, Include, Model, Queue, Singleton, Spine, var $, Ajax, Base, Collection, Extend, Include, Model, Queue, Singleton, Spine,
__slice = [].slice, __slice = [].slice,
@ -18,12 +18,20 @@
getURL: function(object) { getURL: function(object) {
return (typeof object.url === "function" ? object.url() : void 0) || object.url; return (typeof object.url === "function" ? object.url() : void 0) || object.url;
}, },
getCollectionURL: function(object) {
if (object) {
if (typeof object.url === "function") {
return this.generateURL(object);
} else {
return object.url;
}
}
},
getScope: function(object) { getScope: function(object) {
return (typeof object.scope === "function" ? object.scope() : void 0) || object.scope; return (typeof object.scope === "function" ? object.scope() : void 0) || object.scope;
}, },
generateURL: function() { generateURL: function() {
var args, collection, object, path, scope; var args, collection, object, path, scope;
object = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; object = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
if (object.className) { if (object.className) {
collection = object.className.toLowerCase() + 's'; collection = object.className.toLowerCase() + 's';
@ -50,7 +58,6 @@
enabled: true, enabled: true,
disable: function(callback) { disable: function(callback) {
var e; var e;
if (this.enabled) { if (this.enabled) {
this.enabled = false; this.enabled = false;
try { try {
@ -94,9 +101,8 @@
return $.ajax(this.ajaxSettings(params, defaults)); return $.ajax(this.ajaxSettings(params, defaults));
}; };
Base.prototype.ajaxQueue = function(params, defaults) { Base.prototype.ajaxQueue = function(params, defaults, record) {
var deferred, jqXHR, promise, request, settings; var deferred, jqXHR, promise, request, settings;
jqXHR = null; jqXHR = null;
deferred = $.Deferred(); deferred = $.Deferred();
promise = deferred.promise(); promise = deferred.promise();
@ -105,11 +111,22 @@
} }
settings = this.ajaxSettings(params, defaults); settings = this.ajaxSettings(params, defaults);
request = function(next) { request = function(next) {
var _ref;
if ((record != null ? record.id : void 0) != null) {
if (settings.url == null) {
settings.url = Ajax.getURL(record);
}
if ((_ref = settings.data) != null) {
_ref.id = record.id;
}
}
if (typeof settings.data !== 'string' && settings.processData !== true) {
settings.data = JSON.stringify(settings.data);
}
return jqXHR = $.ajax(settings).done(deferred.resolve).fail(deferred.reject).then(next, next); return jqXHR = $.ajax(settings).done(deferred.resolve).fail(deferred.reject).then(next, next);
}; };
promise.abort = function(statusText) { promise.abort = function(statusText) {
var index; var index;
if (jqXHR) { if (jqXHR) {
return jqXHR.abort(statusText); return jqXHR.abort(statusText);
} }
@ -141,29 +158,33 @@
this.recordsResponse = __bind(this.recordsResponse, this); this.recordsResponse = __bind(this.recordsResponse, this);
} }
Collection.prototype.find = function(id, params) { Collection.prototype.find = function(id, params, options) {
var record; var record;
if (options == null) {
options = {};
}
record = new this.model({ record = new this.model({
id: id id: id
}); });
return this.ajaxQueue(params, { return this.ajaxQueue(params, {
type: 'GET', type: 'GET',
url: Ajax.getURL(record) url: options.url || Ajax.getURL(record)
}).done(this.recordsResponse).fail(this.failResponse); }).done(this.recordsResponse).fail(this.failResponse);
}; };
Collection.prototype.all = function(params) { Collection.prototype.all = function(params, options) {
if (options == null) {
options = {};
}
return this.ajaxQueue(params, { return this.ajaxQueue(params, {
type: 'GET', type: 'GET',
url: Ajax.getURL(this.model) url: options.url || Ajax.getURL(this.model)
}).done(this.recordsResponse).fail(this.failResponse); }).done(this.recordsResponse).fail(this.failResponse);
}; };
Collection.prototype.fetch = function(params, options) { Collection.prototype.fetch = function(params, options) {
var id, var id,
_this = this; _this = this;
if (params == null) { if (params == null) {
params = {}; params = {};
} }
@ -172,11 +193,11 @@
} }
if (id = params.id) { if (id = params.id) {
delete params.id; delete params.id;
return this.find(id, params).done(function(record) { return this.find(id, params, options).done(function(record) {
return _this.model.refresh(record, options); return _this.model.refresh(record, options);
}); });
} else { } else {
return this.all(params).done(function(records) { return this.all(params, options).done(function(records) {
return _this.model.refresh(records, options); return _this.model.refresh(records, options);
}); });
} }
@ -205,57 +226,62 @@
} }
Singleton.prototype.reload = function(params, options) { Singleton.prototype.reload = function(params, options) {
if (options == null) {
options = {};
}
return this.ajaxQueue(params, { return this.ajaxQueue(params, {
type: 'GET', type: 'GET',
url: Ajax.getURL(this.record) url: options.url
}).done(this.recordResponse(options)).fail(this.failResponse(options)); }, this.record).done(this.recordResponse(options)).fail(this.failResponse(options));
}; };
Singleton.prototype.create = function(params, options) { Singleton.prototype.create = function(params, options) {
if (options == null) {
options = {};
}
return this.ajaxQueue(params, { return this.ajaxQueue(params, {
type: 'POST', type: 'POST',
contentType: 'application/json', contentType: 'application/json',
data: JSON.stringify(this.record), data: this.record.toJSON(),
url: Ajax.getURL(this.model) url: options.url || Ajax.getCollectionURL(this.record)
}).done(this.recordResponse(options)).fail(this.failResponse(options)); }).done(this.recordResponse(options)).fail(this.failResponse(options));
}; };
Singleton.prototype.update = function(params, options) { Singleton.prototype.update = function(params, options) {
if (options == null) {
options = {};
}
return this.ajaxQueue(params, { return this.ajaxQueue(params, {
type: 'PUT', type: 'PUT',
contentType: 'application/json', contentType: 'application/json',
data: JSON.stringify(this.record), data: this.record.toJSON(),
url: Ajax.getURL(this.record) url: options.url
}).done(this.recordResponse(options)).fail(this.failResponse(options)); }, this.record).done(this.recordResponse(options)).fail(this.failResponse(options));
}; };
Singleton.prototype.destroy = function(params, options) { Singleton.prototype.destroy = function(params, options) {
if (options == null) {
options = {};
}
return this.ajaxQueue(params, { return this.ajaxQueue(params, {
type: 'DELETE', type: 'DELETE',
url: Ajax.getURL(this.record) url: options.url
}).done(this.recordResponse(options)).fail(this.failResponse(options)); }, this.record).done(this.recordResponse(options)).fail(this.failResponse(options));
}; };
Singleton.prototype.recordResponse = function(options) { Singleton.prototype.recordResponse = function(options) {
var _this = this; var _this = this;
if (options == null) { if (options == null) {
options = {}; options = {};
} }
return function(data, status, xhr) { return function(data, status, xhr) {
var _ref, _ref1; var _ref, _ref1;
if (Spine.isBlank(data) || _this.record.destroyed) {
data = false;
} else {
data = _this.model.fromJSON(data);
}
Ajax.disable(function() { Ajax.disable(function() {
if (data) { if (!(Spine.isBlank(data) || _this.record.destroyed)) {
if (data.id && _this.record.id !== data.id) { if (data.id && _this.record.id !== data.id) {
_this.record.changeID(data.id); _this.record.changeID(data.id);
} }
return _this.record.updateAttributes(data.attributes()); return _this.record.refresh(data);
} }
}); });
_this.record.trigger('ajaxSuccess', data, status, xhr); _this.record.trigger('ajaxSuccess', data, status, xhr);
@ -268,13 +294,11 @@
Singleton.prototype.failResponse = function(options) { Singleton.prototype.failResponse = function(options) {
var _this = this; var _this = this;
if (options == null) { if (options == null) {
options = {}; options = {};
} }
return function(xhr, statusText, error) { return function(xhr, statusText, error) {
var _ref, _ref1; var _ref, _ref1;
_this.record.trigger('ajaxError', xhr, statusText, error); _this.record.trigger('ajaxError', xhr, statusText, error);
if ((_ref = options.error) != null) { if ((_ref = options.error) != null) {
_ref.apply(_this.record); _ref.apply(_this.record);
@ -295,7 +319,6 @@
}, },
url: function() { url: function() {
var args; var args;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
args.unshift(encodeURIComponent(this.id)); args.unshift(encodeURIComponent(this.id));
return Ajax.generateURL.apply(Ajax, [this].concat(__slice.call(args))); return Ajax.generateURL.apply(Ajax, [this].concat(__slice.call(args)));
@ -308,7 +331,6 @@
}, },
url: function() { url: function() {
var args; var args;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
return Ajax.generateURL.apply(Ajax, [this].concat(__slice.call(args))); return Ajax.generateURL.apply(Ajax, [this].concat(__slice.call(args)));
} }
@ -323,7 +345,6 @@
}, },
ajaxFetch: function() { ajaxFetch: function() {
var _ref; var _ref;
return (_ref = this.ajax()).fetch.apply(_ref, arguments); return (_ref = this.ajax()).fetch.apply(_ref, arguments);
}, },
ajaxChange: function(record, type, options) { ajaxChange: function(record, type, options) {
@ -346,6 +367,12 @@
Ajax.defaults = Base.prototype.defaults; Ajax.defaults = Base.prototype.defaults;
Ajax.Base = Base;
Ajax.Singleton = Singleton;
Ajax.Collection = Collection;
Spine.Ajax = Ajax; Spine.Ajax = Ajax;
if (typeof module !== "undefined" && module !== null) { if (typeof module !== "undefined" && module !== null) {

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.6.2 // Generated by CoffeeScript 1.6.3
(function() { (function() {
var $, Spine, var $, Spine,
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
@ -19,7 +19,8 @@
List.prototype.selectFirst = false; List.prototype.selectFirst = false;
function List() { function List() {
this.change = __bind(this.change, this); List.__super__.constructor.apply(this, arguments); this.change = __bind(this.change, this);
List.__super__.constructor.apply(this, arguments);
this.bind('change', this.change); this.bind('change', this.change);
} }
@ -56,7 +57,6 @@
List.prototype.click = function(e) { List.prototype.click = function(e) {
var item; var item;
item = this.items[$(e.currentTarget).index()]; item = this.items[$(e.currentTarget).index()];
this.trigger('change', item); this.trigger('change', item);
return true; return true;

View file

@ -6,5 +6,5 @@
"src/list.coffee" "src/list.coffee"
], ],
"names": [], "names": [],
"mappings": ";AAAA;CAAA,KAAA,EAAA;KAAA;;oSAAA;;CAAA,CAAA,CAAS,CAAC,CAAV,EAAmB;;CAAnB,CACA,CAAS,EAAK;;CADd,CAGM,GAAK;CACT;;CAAA,EACE,GADF;CACE,CAAe,IAAf,CAAA,MAAA;CADF,KAAA;;CAAA,EAGa,EAHb,MAGA;;CAEa,EAAA,CAAA,UAAA;CACX,KAAA,GAAA,8BAAA;CAAA,CACgB,EAAf,EAAD,EAAA;CAPF,IAKa;;CALb,EASU,KAAV,CAAU;CACR,WAAM,OAAN;CAVF,IASU;;CATV,EAYQ,CAAA,EAAR,GAAS;CACP,EAAW,CAAV,EAAD,CAAA;AAEO,CAAP,GAAA,EAAA,CAAA;CACE,GAAC,IAAD,GAAA;CACA,aAAA;QAJF;CAAA,GAMC,EAAD,EAAA,GAAA;CACA,EAAE,CAAC,CAAqB,EAAN,CAAhB,KAAF;CApBF,IAYQ;;CAZR,EAsBQ,EAAA,CAAR,GAAS;CACP,GAAkB,CAAlB,CAAA;CAAA,EAAS,CAAR,CAAD,GAAA;QAAA;CAAA,GACC,CAAK,CAAN,EAAM;CADN,GAEC,EAAD,CAAA;CACA,GAAG,EAAH,KAAA;AACS,CAAP,GAAA,EAAA,EAAA,CAAO;CACJ,GAAA,CAAD,GAAA,SAAA;UAFJ;QAJM;CAtBR,IAsBQ;;CAtBR,EA8BU,KAAV,CAAW;CACR,CAAE,CAAH,CAAC,IAAD,KAAA;CA/BF,IA8BU;;CA9BV,EAiCO,EAAP,IAAQ;CACN,GAAA,MAAA;;CAAA,EAAO,CAAP,CAAc,CAAd,OAAc;CAAd,CACmB,EAAlB,EAAD,CAAA,CAAA;CAFK,YAGL;CApCF,IAiCO;;CAjCP;;CADuB,IAAK;;;CAuCtB,EAAU,CAAlB,CAAuB,CAAjB,CAAN;IA1CA;CAAA" "mappings": ";AAAA;CAAA,KAAA,EAAA;KAAA;;oSAAA;;CAAA,CAAA,CAAS,CAAC,CAAV,EAAmB;;CAAnB,CACA,CAAS,EAAK;;CADd,CAGM,GAAK;CACT;;CAAA,EACE,GADF;CACE,CAAe,IAAf,CAAA,MAAA;CADF,KAAA;;CAAA,EAGa,EAHb,MAGA;;CAEa,EAAA,CAAA,UAAA;CACX,sCAAA;CAAA,KAAA,GAAA,8BAAA;CAAA,CACgB,EAAf,EAAD,EAAA;CAPF,IAKa;;CALb,EASU,KAAV,CAAU;CACR,WAAM,OAAN;CAVF,IASU;;CATV,EAYQ,CAAA,EAAR,GAAS;CACP,EAAW,CAAV,EAAD,CAAA;AAEO,CAAP,GAAA,EAAA,CAAA;CACE,GAAC,IAAD,GAAA;CACA,aAAA;QAJF;CAAA,GAMC,EAAD,EAAA,GAAA;CACA,EAAE,CAAC,CAAqB,EAAN,CAAhB,KAAF;CApBF,IAYQ;;CAZR,EAsBQ,EAAA,CAAR,GAAS;CACP,GAAkB,CAAlB,CAAA;CAAA,EAAS,CAAR,CAAD,GAAA;QAAA;CAAA,GACC,CAAK,CAAN,EAAM;CADN,GAEC,EAAD,CAAA;CACA,GAAG,EAAH,KAAA;AACS,CAAP,GAAA,EAAA,EAAA,CAAO;CACJ,GAAA,CAAD,GAAA,SAAA;UAFJ;QAJM;CAtBR,IAsBQ;;CAtBR,EA8BU,KAAV,CAAW;CACR,CAAE,CAAH,CAAC,IAAD,KAAA;CA/BF,IA8BU;;CA9BV,EAiCO,EAAP,IAAQ;CACN,GAAA,MAAA;CAAA,EAAO,CAAP,CAAc,CAAd,OAAc;CAAd,CACmB,EAAlB,EAAD,CAAA,CAAA;CAFK,YAGL;CApCF,IAiCO;;CAjCP;;CADuB,IAAK;;;CAuCtB,EAAU,CAAlB,CAAuB,CAAjB,CAAN;IA1CA;CAAA"
} }

View file

@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.6.2 // Generated by CoffeeScript 1.6.3
(function() { (function() {
var Spine; var Spine;
@ -11,17 +11,19 @@
}, },
saveLocal: function() { saveLocal: function() {
var result; var result;
result = JSON.stringify(this); result = JSON.stringify(this);
return localStorage[this.className] = result; return localStorage[this.className] = result;
}, },
loadLocal: function() { loadLocal: function(options) {
var result; var result;
if (options == null) {
options = {};
}
if (!options.hasOwnProperty('clear')) {
options.clear = true;
}
result = localStorage[this.className]; result = localStorage[this.className];
return this.refresh(result || [], { return this.refresh(result || [], options);
clear: true
});
} }
}; };

View file

@ -6,5 +6,5 @@
"src/local.coffee" "src/local.coffee"
], ],
"names": [], "names": [],
"mappings": ";AAAA;CAAA,IAAA,CAAA;;CAAA,CAAA,CAAQ,CAAC,CAAT,EAAkB;;CAAlB,CAEA,CACE,EADG;CACH,CAAU,CAAA,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,GAAA;CACC,GAAA,CAAD,IAAA,IAAA;CAFF,IAAU;CAAV,CAIW,CAAA,CAAX,KAAA;CACE,KAAA,IAAA;;CAAA,EAAS,CAAI,EAAb,GAAS;CACI,EAAc,CAAb,KAAD,GAAA,CAAb;CANF,IAIW;CAJX,CAQW,CAAA,CAAX,KAAA;CACE,KAAA,IAAA;;CAAA,EAAS,CAAc,EAAvB,GAAsB,GAAA;CACrB,CAAD,EAAC,EAAQ,CAAT,MAAA;CAAuB,CAAO,EAAP,CAAA,GAAA;CAFd,OAET;CAVF,IAQW;CAXb,GAAA;;;CAeQ,EAAU,CAAlB,CAAuB,CAAjB,CAAN;IAfA;CAAA" "mappings": ";AAAA;CAAA,IAAA,CAAA;;CAAA,CAAA,CAAQ,CAAC,CAAT,EAAkB;;CAAlB,CAEA,CACE,EADG;CACH,CAAU,CAAA,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,GAAA;CACC,GAAA,CAAD,IAAA,IAAA;CAFF,IAAU;CAAV,CAIW,CAAA,CAAX,KAAA;CACE,KAAA,IAAA;CAAA,EAAS,CAAI,EAAb,GAAS;CACI,EAAc,CAAb,KAAD,GAAA,CAAb;CANF,IAIW;CAJX,CAQW,CAAA,CAAX,GAAW,EAAX;CACE,KAAA,IAAA;;GADoB,KAAV;QACV;AAA4B,CAA5B,GAAA,EAAA,CAAmC,OAAP;CAA5B,EAAgB,CAAhB,CAAA,EAAO,CAAP;QAAA;CAAA,EACS,CAAc,EAAvB,GAAsB,GAAA;CACrB,CAAD,EAAC,EAAQ,CAAT,MAAA;CAXF,IAQW;CAXb,GAAA;;;CAgBQ,EAAU,CAAlB,CAAuB,CAAjB,CAAN;IAhBA;CAAA"
} }

View file

@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.6.2 // Generated by CoffeeScript 1.6.3
(function() { (function() {
var $, Spine, var $, Spine,
__hasProp = {}.hasOwnProperty, __hasProp = {}.hasOwnProperty,
@ -22,7 +22,6 @@
Manager.prototype.add = function() { Manager.prototype.add = function() {
var cont, controllers, _i, _len, _results; var cont, controllers, _i, _len, _results;
controllers = 1 <= arguments.length ? __slice.call(arguments, 0) : []; controllers = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
_results = []; _results = [];
for (_i = 0, _len = controllers.length; _i < _len; _i++) { for (_i = 0, _len = controllers.length; _i < _len; _i++) {
@ -34,10 +33,8 @@
Manager.prototype.addOne = function(controller) { Manager.prototype.addOne = function(controller) {
var _this = this; var _this = this;
controller.bind('active', function() { controller.bind('active', function() {
var args; var args;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
return _this.trigger.apply(_this, ['change', controller].concat(__slice.call(args))); return _this.trigger.apply(_this, ['change', controller].concat(__slice.call(args)));
}); });
@ -52,20 +49,18 @@
}; };
Manager.prototype.change = function() { Manager.prototype.change = function() {
var args, cont, current, _i, _len, _ref, _results; var args, cont, current, _i, _len, _ref;
current = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; current = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
_ref = this.controllers; _ref = this.controllers;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
cont = _ref[_i]; cont = _ref[_i];
if (cont === current) { if (cont !== current) {
_results.push(cont.activate.apply(cont, args)); cont.deactivate.apply(cont, args);
} else {
_results.push(cont.deactivate.apply(cont, args));
} }
} }
return _results; if (current) {
return current.activate.apply(current, args);
}
}; };
return Manager; return Manager;
@ -75,7 +70,6 @@
Spine.Controller.include({ Spine.Controller.include({
active: function() { active: function() {
var args; var args;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
if (typeof args[0] === 'function') { if (typeof args[0] === 'function') {
this.bind('active', args[0]); this.bind('active', args[0]);
@ -110,7 +104,6 @@
function Stack() { function Stack() {
var key, value, _fn, _ref, _ref1, var key, value, _fn, _ref, _ref1,
_this = this; _this = this;
Stack.__super__.constructor.apply(this, arguments); Stack.__super__.constructor.apply(this, arguments);
this.manager = new Spine.Manager; this.manager = new Spine.Manager;
_ref = this.controllers; _ref = this.controllers;
@ -127,13 +120,11 @@
_ref1 = this.routes; _ref1 = this.routes;
_fn = function(key, value) { _fn = function(key, value) {
var callback; var callback;
if (typeof value === 'function') { if (typeof value === 'function') {
callback = value; callback = value;
} }
callback || (callback = function() { callback || (callback = function() {
var _ref2; var _ref2;
return (_ref2 = _this[value]).active.apply(_ref2, arguments); return (_ref2 = _this[value]).active.apply(_ref2, arguments);
}); });
return _this.route(key, callback); return _this.route(key, callback);

View file

@ -6,5 +6,5 @@
"src/manager.coffee" "src/manager.coffee"
], ],
"names": [], "names": [],
"mappings": "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" "mappings": "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"
} }

View file

@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.6.2 // Generated by CoffeeScript 1.6.3
(function() { (function() {
var Collection, Instance, Singleton, Spine, association, isArray, require, singularize, underscore, var Collection, Instance, Singleton, Spine, association, isArray, require, singularize, underscore,
__hasProp = {}.hasOwnProperty, __hasProp = {}.hasOwnProperty,
@ -17,7 +17,6 @@
function Collection(options) { function Collection(options) {
var key, value; var key, value;
if (options == null) { if (options == null) {
options = {}; options = {};
} }
@ -29,7 +28,6 @@
Collection.prototype.all = function() { Collection.prototype.all = function() {
var _this = this; var _this = this;
return this.model.select(function(rec) { return this.model.select(function(rec) {
return _this.associated(rec); return _this.associated(rec);
}); });
@ -41,7 +39,6 @@
Collection.prototype.last = function() { Collection.prototype.last = function() {
var values; var values;
values = this.all(); values = this.all();
return values[values.length - 1]; return values[values.length - 1];
}; };
@ -53,7 +50,6 @@
Collection.prototype.find = function(id) { Collection.prototype.find = function(id) {
var records, var records,
_this = this; _this = this;
records = this.select(function(rec) { records = this.select(function(rec) {
return ("" + rec.id) === ("" + id); return ("" + rec.id) === ("" + id);
}); });
@ -65,7 +61,6 @@
Collection.prototype.findAllByAttribute = function(name, value) { Collection.prototype.findAllByAttribute = function(name, value) {
var _this = this; var _this = this;
return this.model.select(function(rec) { return this.model.select(function(rec) {
return _this.associated(rec) && rec[name] === value; return _this.associated(rec) && rec[name] === value;
}); });
@ -77,7 +72,6 @@
Collection.prototype.select = function(cb) { Collection.prototype.select = function(cb) {
var _this = this; var _this = this;
return this.model.select(function(rec) { return this.model.select(function(rec) {
return _this.associated(rec) && cb(rec); return _this.associated(rec) && cb(rec);
}); });
@ -85,7 +79,6 @@
Collection.prototype.refresh = function(values) { Collection.prototype.refresh = function(values) {
var i, match, record, _i, _j, _k, _len, _len1, _len2, _ref, _ref1; var i, match, record, _i, _j, _k, _len, _len1, _len2, _ref, _ref1;
if (values == null) { if (values == null) {
return this; return this;
} }
@ -141,7 +134,6 @@
function Instance(options) { function Instance(options) {
var key, value; var key, value;
if (options == null) { if (options == null) {
options = {}; options = {};
} }
@ -182,7 +174,6 @@
function Singleton(options) { function Singleton(options) {
var key, value; var key, value;
if (options == null) { if (options == null) {
options = {}; options = {};
} }

View file

@ -6,5 +6,5 @@
"src/relation.coffee" "src/relation.coffee"
], ],
"names": [], "names": [],
"mappings": "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" "mappings": "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"
} }

View file

@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.6.2 // Generated by CoffeeScript 1.6.3
(function() { (function() {
var $, Spine, escapeRegExp, hashStrip, namedParam, splatParam, var $, Spine, escapeRegExp, hashStrip, namedParam, splatParam,
__hasProp = {}.hasOwnProperty, __hasProp = {}.hasOwnProperty,
@ -32,12 +32,12 @@
trigger: true, trigger: true,
history: false, history: false,
shim: false, shim: false,
replace: false replace: false,
redirect: false
}; };
Route.add = function(path, callback) { Route.add = function(path, callback) {
var key, value, _results; var key, value, _results;
if (typeof path === 'object' && !(path instanceof RegExp)) { if (typeof path === 'object' && !(path instanceof RegExp)) {
_results = []; _results = [];
for (key in path) { for (key in path) {
@ -81,8 +81,7 @@
}; };
Route.navigate = function() { Route.navigate = function() {
var args, lastArg, options, path; var args, lastArg, options, path, route;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
options = {}; options = {};
lastArg = args[args.length - 1]; lastArg = args[args.length - 1];
@ -99,11 +98,20 @@
this.path = path; this.path = path;
this.trigger('navigate', this.path); this.trigger('navigate', this.path);
if (options.trigger) { if (options.trigger) {
this.matchRoute(this.path, options); route = this.matchRoute(this.path, options);
} }
if (options.shim) { if (options.shim) {
return; return;
} }
if (!route) {
if (typeof options.redirect === 'function') {
return options.redirect.apply(this, [this.path, options]);
} else {
if (options.redirect === true) {
this.redirect(this.path);
}
}
}
if (this.history && options.replace) { if (this.history && options.replace) {
return history.replaceState({}, document.title, this.path); return history.replaceState({}, document.title, this.path);
} else if (this.history) { } else if (this.history) {
@ -115,7 +123,6 @@
Route.getPath = function() { Route.getPath = function() {
var path; var path;
if (this.history) { if (this.history) {
path = window.location.pathname; path = window.location.pathname;
if (path.substr(0, 1) !== '/') { if (path.substr(0, 1) !== '/') {
@ -134,7 +141,6 @@
Route.change = function() { Route.change = function() {
var path; var path;
path = this.getPath(); path = this.getPath();
if (path === this.path) { if (path === this.path) {
return; return;
@ -145,7 +151,6 @@
Route.matchRoute = function(path, options) { Route.matchRoute = function(path, options) {
var route, _i, _len, _ref1; var route, _i, _len, _ref1;
_ref1 = this.routes; _ref1 = this.routes;
for (_i = 0, _len = _ref1.length; _i < _len; _i++) { for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
route = _ref1[_i]; route = _ref1[_i];
@ -157,9 +162,12 @@
} }
}; };
Route.redirect = function(path) {
return window.location = path;
};
function Route(path, callback) { function Route(path, callback) {
var match; var match;
this.path = path; this.path = path;
this.callback = callback; this.callback = callback;
this.names = []; this.names = [];
@ -181,7 +189,6 @@
Route.prototype.match = function(path, options) { Route.prototype.match = function(path, options) {
var i, match, param, params, _i, _len; var i, match, param, params, _i, _len;
if (options == null) { if (options == null) {
options = {}; options = {};
} }
@ -212,7 +219,6 @@
}, },
routes: function(routes) { routes: function(routes) {
var key, value, _results; var key, value, _results;
_results = []; _results = [];
for (key in routes) { for (key in routes) {
value = routes[key]; value = routes[key];

View file

@ -6,5 +6,5 @@
"src/route.coffee" "src/route.coffee"
], ],
"names": [], "names": [],
"mappings": "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" "mappings": "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"
} }

View file

@ -1,4 +1,10 @@
// Generated by CoffeeScript 1.6.2 // Generated by CoffeeScript 1.6.3
/*
Spine.js MVC library
Released under the MIT License
*/
(function() { (function() {
var $, Controller, Events, Log, Model, Module, Spine, createObject, isArray, isBlank, makeArray, moduleKeywords, var $, Controller, Events, Log, Model, Module, Spine, createObject, isArray, isBlank, makeArray, moduleKeywords,
__slice = [].slice, __slice = [].slice,
@ -10,7 +16,6 @@
Events = { Events = {
bind: function(ev, callback) { bind: function(ev, callback) {
var calls, evs, name, _i, _len; var calls, evs, name, _i, _len;
evs = ev.split(' '); evs = ev.split(' ');
calls = this.hasOwnProperty('_callbacks') && this._callbacks || (this._callbacks = {}); calls = this.hasOwnProperty('_callbacks') && this._callbacks || (this._callbacks = {});
for (_i = 0, _len = evs.length; _i < _len; _i++) { for (_i = 0, _len = evs.length; _i < _len; _i++) {
@ -22,7 +27,6 @@
}, },
one: function(ev, callback) { one: function(ev, callback) {
var handler; var handler;
return this.bind(ev, handler = function() { return this.bind(ev, handler = function() {
this.unbind(ev, handler); this.unbind(ev, handler);
return callback.apply(this, arguments); return callback.apply(this, arguments);
@ -30,7 +34,6 @@
}, },
trigger: function() { trigger: function() {
var args, callback, ev, list, _i, _len, _ref; var args, callback, ev, list, _i, _len, _ref;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
ev = args.shift(); ev = args.shift();
list = this.hasOwnProperty('_callbacks') && ((_ref = this._callbacks) != null ? _ref[ev] : void 0); list = this.hasOwnProperty('_callbacks') && ((_ref = this._callbacks) != null ? _ref[ev] : void 0);
@ -48,30 +51,44 @@
listenTo: function(obj, ev, callback) { listenTo: function(obj, ev, callback) {
obj.bind(ev, callback); obj.bind(ev, callback);
this.listeningTo || (this.listeningTo = []); this.listeningTo || (this.listeningTo = []);
this.listeningTo.push(obj); this.listeningTo.push({
obj: obj,
ev: ev,
callback: callback
});
return this; return this;
}, },
listenToOnce: function(obj, ev, callback) { listenToOnce: function(obj, ev, callback) {
var listeningToOnce; var handler, listeningToOnce;
listeningToOnce = this.listeningToOnce || (this.listeningToOnce = []); listeningToOnce = this.listeningToOnce || (this.listeningToOnce = []);
listeningToOnce.push(obj); obj.bind(ev, handler = function() {
obj.one(ev, function() { var i, idx, lt, _i, _len;
var idx; idx = -1;
for (i = _i = 0, _len = listeningToOnce.length; _i < _len; i = ++_i) {
idx = listeningToOnce.indexOf(obj); lt = listeningToOnce[i];
if (lt.obj === obj) {
if (lt.ev === ev && lt.callback === callback) {
idx = i;
}
}
}
obj.unbind(ev, handler);
if (idx !== -1) { if (idx !== -1) {
listeningToOnce.splice(idx, 1); listeningToOnce.splice(idx, 1);
} }
return callback.apply(this, arguments); return callback.apply(this, arguments);
}); });
listeningToOnce.push({
obj: obj,
ev: ev,
callback: callback,
handler: handler
});
return this; return this;
}, },
stopListening: function(obj, ev, callback) { stopListening: function(obj, events, callback) {
var idx, listeningTo, retain, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _results; var ev, evts, i, idx, listeningTo, lt, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _results;
if (arguments.length === 0) { if (arguments.length === 0) {
retain = [];
_ref = [this.listeningTo, this.listeningToOnce]; _ref = [this.listeningTo, this.listeningToOnce];
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
listeningTo = _ref[_i]; listeningTo = _ref[_i];
@ -79,23 +96,13 @@
continue; continue;
} }
for (_j = 0, _len1 = listeningTo.length; _j < _len1; _j++) { for (_j = 0, _len1 = listeningTo.length; _j < _len1; _j++) {
obj = listeningTo[_j]; lt = listeningTo[_j];
if (!(!(__indexOf.call(retain, obj) >= 0))) { lt.obj.unbind(lt.ev, lt.handler || lt.callback);
continue;
}
obj.unbind();
retain.push(obj);
} }
} }
this.listeningTo = void 0; this.listeningTo = void 0;
return this.listeningToOnce = void 0; return this.listeningToOnce = void 0;
} else if (obj) { } else if (obj) {
if (ev) {
obj.unbind(ev, callback);
}
if (!ev) {
obj.unbind();
}
_ref1 = [this.listeningTo, this.listeningToOnce]; _ref1 = [this.listeningTo, this.listeningToOnce];
_results = []; _results = [];
for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) { for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) {
@ -103,19 +110,48 @@
if (!listeningTo) { if (!listeningTo) {
continue; continue;
} }
idx = listeningTo.indexOf(obj); events = events ? events.split(' ') : [void 0];
_results.push((function() {
var _l, _len3, _results1;
_results1 = [];
for (_l = 0, _len3 = events.length; _l < _len3; _l++) {
ev = events[_l];
_results1.push((function() {
var _m, _ref2, _results2;
_results2 = [];
for (idx = _m = _ref2 = listeningTo.length - 1; _ref2 <= 0 ? _m <= 0 : _m >= 0; idx = _ref2 <= 0 ? ++_m : --_m) {
lt = listeningTo[idx];
if ((!ev) || (ev === lt.ev)) {
lt.obj.unbind(lt.ev, lt.handler || lt.callback);
if (idx !== -1) { if (idx !== -1) {
_results.push(listeningTo.splice(idx, 1)); _results2.push(listeningTo.splice(idx, 1));
} else { } else {
_results.push(void 0); _results2.push(void 0);
} }
} else if (ev) {
evts = lt.ev.split(' ');
if (~(i = evts.indexOf(ev))) {
evts.splice(i, 1);
lt.ev = $.trim(evts.join(' '));
_results2.push(lt.obj.unbind(ev, lt.handler || lt.callback));
} else {
_results2.push(void 0);
}
} else {
_results2.push(void 0);
}
}
return _results2;
})());
}
return _results1;
})());
} }
return _results; return _results;
} }
}, },
unbind: function(ev, callback) { unbind: function(ev, callback) {
var cb, evs, i, list, name, _i, _j, _len, _len1, _ref; var cb, evs, i, list, name, _i, _j, _len, _len1, _ref;
if (arguments.length === 0) { if (arguments.length === 0) {
this._callbacks = {}; this._callbacks = {};
return this; return this;
@ -158,7 +194,6 @@
logPrefix: '(App)', logPrefix: '(App)',
log: function() { log: function() {
var args; var args;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
if (!this.trace) { if (!this.trace) {
return; return;
@ -180,7 +215,6 @@
Module = (function() { Module = (function() {
Module.include = function(obj) { Module.include = function(obj) {
var key, value, _ref; var key, value, _ref;
if (!obj) { if (!obj) {
throw new Error('include(obj) requires obj'); throw new Error('include(obj) requires obj');
} }
@ -198,7 +232,6 @@
Module.extend = function(obj) { Module.extend = function(obj) {
var key, value, _ref; var key, value, _ref;
if (!obj) { if (!obj) {
throw new Error('extend(obj) requires obj'); throw new Error('extend(obj) requires obj');
} }
@ -216,7 +249,6 @@
Module.proxy = function(func) { Module.proxy = function(func) {
var _this = this; var _this = this;
return function() { return function() {
return func.apply(_this, arguments); return func.apply(_this, arguments);
}; };
@ -224,7 +256,6 @@
Module.prototype.proxy = function(func) { Module.prototype.proxy = function(func) {
var _this = this; var _this = this;
return function() { return function() {
return func.apply(_this, arguments); return func.apply(_this, arguments);
}; };
@ -249,13 +280,10 @@
Model.irecords = {}; Model.irecords = {};
Model.crecords = {};
Model.attributes = []; Model.attributes = [];
Model.configure = function() { Model.configure = function() {
var attributes, name; var attributes, name;
name = arguments[0], attributes = 2 <= arguments.length ? __slice.call(arguments, 1) : []; name = arguments[0], attributes = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
this.className = name; this.className = name;
this.deleteAll(); this.deleteAll();
@ -274,7 +302,6 @@
Model.find = function(id) { Model.find = function(id) {
var record; var record;
record = this.exists(id); record = this.exists(id);
if (!record) { if (!record) {
throw new Error("\"" + this.className + "\" model could not find a record for the ID \"" + id + "\""); throw new Error("\"" + this.className + "\" model could not find a record for the ID \"" + id + "\"");
@ -283,14 +310,22 @@
}; };
Model.exists = function(id) { Model.exists = function(id) {
var _ref, _ref1; var _ref;
return (_ref = this.irecords[id]) != null ? _ref.clone() : void 0;
};
return (_ref = (_ref1 = this.irecords[id]) != null ? _ref1 : this.crecords[id]) != null ? _ref.clone() : void 0; Model.addRecord = function(record) {
if (record.id && this.irecords[record.id]) {
this.irecords[record.id].remove();
}
record.id || (record.id = record.cid);
this.records.push(record);
this.irecords[record.id] = record;
return this.irecords[record.cid] = record;
}; };
Model.refresh = function(values, options) { Model.refresh = function(values, options) {
var record, records, result, _i, _len; var record, records, result, _i, _len;
if (options == null) { if (options == null) {
options = {}; options = {};
} }
@ -303,24 +338,16 @@
} }
for (_i = 0, _len = records.length; _i < _len; _i++) { for (_i = 0, _len = records.length; _i < _len; _i++) {
record = records[_i]; record = records[_i];
if (record.id && this.irecords[record.id]) { this.addRecord(record);
this.records[this.records.indexOf(this.irecords[record.id])] = record;
} else {
record.id || (record.id = record.cid);
this.records.push(record);
}
this.irecords[record.id] = record;
this.crecords[record.cid] = record;
} }
this.sort(); this.sort();
result = this.cloneArray(records); result = this.cloneArray(records);
this.trigger('refresh', this.cloneArray(records)); this.trigger('refresh', result, options);
return result; return result;
}; };
Model.select = function(callback) { Model.select = function(callback) {
var record, _i, _len, _ref, _results; var record, _i, _len, _ref, _results;
_ref = this.records; _ref = this.records;
_results = []; _results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@ -334,7 +361,6 @@
Model.findByAttribute = function(name, value) { Model.findByAttribute = function(name, value) {
var record, _i, _len, _ref; var record, _i, _len, _ref;
_ref = this.records; _ref = this.records;
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
record = _ref[_i]; record = _ref[_i];
@ -353,7 +379,6 @@
Model.each = function(callback) { Model.each = function(callback) {
var record, _i, _len, _ref, _results; var record, _i, _len, _ref, _results;
_ref = this.records; _ref = this.records;
_results = []; _results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@ -367,16 +392,32 @@
return this.cloneArray(this.records); return this.cloneArray(this.records);
}; };
Model.first = function() { Model.slice = function(begin, end) {
var _ref; if (begin == null) {
begin = 0;
return (_ref = this.records[0]) != null ? _ref.clone() : void 0; }
return this.cloneArray(this.records.slice(begin, end));
}; };
Model.last = function() { Model.first = function(end) {
var _ref; var _ref;
if (end == null) {
end = 1;
}
if (end > 1) {
return this.cloneArray(this.records.slice(0, end));
} else {
return (_ref = this.records[0]) != null ? _ref.clone() : void 0;
}
};
Model.last = function(begin) {
var _ref;
if (typeof begin === 'number') {
return this.cloneArray(this.records.slice(-begin));
} else {
return (_ref = this.records[this.records.length - 1]) != null ? _ref.clone() : void 0; return (_ref = this.records[this.records.length - 1]) != null ? _ref.clone() : void 0;
}
}; };
Model.count = function() { Model.count = function() {
@ -385,13 +426,11 @@
Model.deleteAll = function() { Model.deleteAll = function() {
this.records = []; this.records = [];
this.irecords = {}; return this.irecords = {};
return this.crecords = {};
}; };
Model.destroyAll = function(options) { Model.destroyAll = function(options) {
var record, _i, _len, _ref, _results; var record, _i, _len, _ref, _results;
_ref = this.records; _ref = this.records;
_results = []; _results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@ -407,7 +446,6 @@
Model.create = function(atts, options) { Model.create = function(atts, options) {
var record; var record;
record = new this(atts); record = new this(atts);
return record.save(options); return record.save(options);
}; };
@ -438,7 +476,6 @@
Model.fromJSON = function(objects) { Model.fromJSON = function(objects) {
var value, _i, _len, _results; var value, _i, _len, _results;
if (!objects) { if (!objects) {
return; return;
} }
@ -459,7 +496,6 @@
Model.fromForm = function() { Model.fromForm = function() {
var _ref; var _ref;
return (_ref = new this).fromForm.apply(_ref, arguments); return (_ref = new this).fromForm.apply(_ref, arguments);
}; };
@ -467,12 +503,11 @@
if (this.comparator) { if (this.comparator) {
this.records.sort(this.comparator); this.records.sort(this.comparator);
} }
return this.records; return this;
}; };
Model.cloneArray = function(array) { Model.cloneArray = function(array) {
var value, _i, _len, _results; var value, _i, _len, _results;
_results = []; _results = [];
for (_i = 0, _len = array.length; _i < _len; _i++) { for (_i = 0, _len = array.length; _i < _len; _i++) {
value = array[_i]; value = array[_i];
@ -485,7 +520,6 @@
Model.uid = function(prefix) { Model.uid = function(prefix) {
var uid; var uid;
if (prefix == null) { if (prefix == null) {
prefix = ''; prefix = '';
} }
@ -501,7 +535,7 @@
if (atts) { if (atts) {
this.load(atts); this.load(atts);
} }
this.cid = this.constructor.uid('c-'); this.cid = (atts != null ? atts.cid : void 0) || this.constructor.uid('c-');
} }
Model.prototype.isNew = function() { Model.prototype.isNew = function() {
@ -516,7 +550,6 @@
Model.prototype.load = function(atts) { Model.prototype.load = function(atts) {
var key, value; var key, value;
if (atts.id) { if (atts.id) {
this.id = atts.id; this.id = atts.id;
} }
@ -533,7 +566,6 @@
Model.prototype.attributes = function() { Model.prototype.attributes = function() {
var key, result, _i, _len, _ref; var key, result, _i, _len, _ref;
result = {}; result = {};
_ref = this.constructor.attributes; _ref = this.constructor.attributes;
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@ -553,12 +585,11 @@
}; };
Model.prototype.eql = function(rec) { Model.prototype.eql = function(rec) {
return !!(rec && rec.constructor === this.constructor && (rec.cid === this.cid) || (rec.id && rec.id === this.id)); return !!(rec && rec.constructor === this.constructor && ((rec.cid === this.cid) || (rec.id && rec.id === this.id)));
}; };
Model.prototype.save = function(options) { Model.prototype.save = function(options) {
var error, record; var error, record;
if (options == null) { if (options == null) {
options = {}; options = {};
} }
@ -578,7 +609,6 @@
Model.prototype.stripCloneAttrs = function() { Model.prototype.stripCloneAttrs = function() {
var key, value; var key, value;
if (this.hasOwnProperty('cid')) { if (this.hasOwnProperty('cid')) {
return; return;
} }
@ -594,7 +624,6 @@
Model.prototype.updateAttribute = function(name, value, options) { Model.prototype.updateAttribute = function(name, value, options) {
var atts; var atts;
atts = {}; atts = {};
atts[name] = value; atts[name] = value;
return this.updateAttributes(atts, options); return this.updateAttributes(atts, options);
@ -607,21 +636,20 @@
Model.prototype.changeID = function(id) { Model.prototype.changeID = function(id) {
var records; var records;
if (id === this.id) {
return;
}
records = this.constructor.irecords; records = this.constructor.irecords;
records[id] = records[this.id]; records[id] = records[this.id];
if (this.cid !== this.id) {
delete records[this.id]; delete records[this.id];
}
this.id = id; this.id = id;
return this.save(); return this.save();
}; };
Model.prototype.destroy = function(options) { Model.prototype.remove = function() {
var i, record, records, _i, _len; var i, record, records, _i, _len;
if (options == null) {
options = {};
}
this.trigger('beforeDestroy', options);
records = this.constructor.records.slice(0); records = this.constructor.records.slice(0);
for (i = _i = 0, _len = records.length; _i < _len; i = ++_i) { for (i = _i = 0, _len = records.length; _i < _len; i = ++_i) {
record = records[i]; record = records[i];
@ -633,7 +661,15 @@
} }
this.constructor.records = records; this.constructor.records = records;
delete this.constructor.irecords[this.id]; delete this.constructor.irecords[this.id];
delete this.constructor.crecords[this.cid]; return delete this.constructor.irecords[this.cid];
};
Model.prototype.destroy = function(options) {
if (options == null) {
options = {};
}
this.trigger('beforeDestroy', options);
this.remove();
this.destroyed = true; this.destroyed = true;
this.trigger('destroy', options); this.trigger('destroy', options);
this.trigger('change', 'destroy', options); this.trigger('change', 'destroy', options);
@ -645,15 +681,17 @@
}; };
Model.prototype.dup = function(newRecord) { Model.prototype.dup = function(newRecord) {
var result; var atts;
if (newRecord == null) {
result = new this.constructor(this.attributes()); newRecord = true;
if (newRecord === false) {
result.cid = this.cid;
} else {
delete result.id;
} }
return result; atts = this.attributes();
if (newRecord) {
delete atts.id;
} else {
atts.cid = this.cid;
}
return new this.constructor(atts);
}; };
Model.prototype.clone = function() { Model.prototype.clone = function() {
@ -662,7 +700,6 @@
Model.prototype.reload = function() { Model.prototype.reload = function() {
var original; var original;
if (this.isNew()) { if (this.isNew()) {
return this; return this;
} }
@ -671,6 +708,14 @@
return original; return original;
}; };
Model.prototype.refresh = function(data) {
var root;
root = this.constructor.irecords[this.id];
root.load(data);
this.trigger('refresh');
return this;
};
Model.prototype.toJSON = function() { Model.prototype.toJSON = function() {
return this.attributes(); return this.attributes();
}; };
@ -680,13 +725,26 @@
}; };
Model.prototype.fromForm = function(form) { Model.prototype.fromForm = function(form) {
var key, result, _i, _len, _ref; var checkbox, key, name, result, _i, _j, _k, _len, _len1, _len2, _name, _ref, _ref1, _ref2;
result = {}; result = {};
_ref = $(form).serializeArray(); _ref = $(form).find('[type=checkbox]:not([value])');
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
key = _ref[_i]; checkbox = _ref[_i];
result[key.name] = key.value; result[checkbox.name] = $(checkbox).prop('checked');
}
_ref1 = $(form).find('[type=checkbox][name$="[]"]');
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
checkbox = _ref1[_j];
name = checkbox.name.replace(/\[\]$/, '');
result[name] || (result[name] = []);
if ($(checkbox).prop('checked')) {
result[name].push(checkbox.value);
}
}
_ref2 = $(form).serializeArray();
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
key = _ref2[_k];
result[_name = key.name] || (result[_name] = key.value);
} }
return this.load(result); return this.load(result);
}; };
@ -697,7 +755,6 @@
Model.prototype.update = function(options) { Model.prototype.update = function(options) {
var clone, records; var clone, records;
this.trigger('beforeUpdate', options); this.trigger('beforeUpdate', options);
records = this.constructor.irecords; records = this.constructor.irecords;
records[this.id].load(this.attributes()); records[this.id].load(this.attributes());
@ -710,15 +767,10 @@
Model.prototype.create = function(options) { Model.prototype.create = function(options) {
var clone, record; var clone, record;
this.trigger('beforeCreate', options); this.trigger('beforeCreate', options);
if (!this.id) { this.id || (this.id = this.cid);
this.id = this.cid;
}
record = this.dup(false); record = this.dup(false);
this.constructor.records.push(record); this.constructor.addRecord(record);
this.constructor.irecords[this.id] = record;
this.constructor.crecords[this.cid] = record;
this.constructor.sort(); this.constructor.sort();
clone = record.clone(); clone = record.clone();
clone.trigger('create', options); clone.trigger('create', options);
@ -729,7 +781,6 @@
Model.prototype.bind = function(events, callback) { Model.prototype.bind = function(events, callback) {
var binder, singleEvent, _fn, _i, _len, _ref, var binder, singleEvent, _fn, _i, _len, _ref,
_this = this; _this = this;
this.constructor.bind(events, binder = function(record) { this.constructor.bind(events, binder = function(record) {
if (record && _this.eql(record)) { if (record && _this.eql(record)) {
return callback.apply(_this, arguments); return callback.apply(_this, arguments);
@ -738,7 +789,6 @@
_ref = events.split(' '); _ref = events.split(' ');
_fn = function(singleEvent) { _fn = function(singleEvent) {
var unbinder; var unbinder;
return _this.constructor.bind("unbind", unbinder = function(record, event, cb) { return _this.constructor.bind("unbind", unbinder = function(record, event, cb) {
if (record && _this.eql(record)) { if (record && _this.eql(record)) {
if (event && event !== singleEvent) { if (event && event !== singleEvent) {
@ -762,7 +812,6 @@
Model.prototype.one = function(events, callback) { Model.prototype.one = function(events, callback) {
var handler, var handler,
_this = this; _this = this;
return this.bind(events, handler = function() { return this.bind(events, handler = function() {
_this.unbind(events, handler); _this.unbind(events, handler);
return callback.apply(_this, arguments); return callback.apply(_this, arguments);
@ -771,89 +820,25 @@
Model.prototype.trigger = function() { Model.prototype.trigger = function() {
var args, _ref; var args, _ref;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
args.splice(1, 0, this); args.splice(1, 0, this);
return (_ref = this.constructor).trigger.apply(_ref, args); return (_ref = this.constructor).trigger.apply(_ref, args);
}; };
Model.prototype.listenTo = function(obj, events, callback) { Model.prototype.listenTo = function() {
obj.bind(events, callback); return Events.listenTo.apply(this, arguments);
this.listeningTo || (this.listeningTo = []);
return this.listeningTo.push(obj);
}; };
Model.prototype.listenToOnce = function(obj, events, callback) { Model.prototype.listenToOnce = function() {
var handler, listeningToOnce, return Events.listenToOnce.apply(this, arguments);
_this = this;
listeningToOnce = this.listeningToOnce || (this.listeningToOnce = []);
listeningToOnce.push(obj);
return obj.bind(events, handler = function() {
var idx;
idx = listeningToOnce.indexOf(obj);
if (idx !== -1) {
listeningToOnce.splice(idx, 1);
}
obj.unbind(events, handler);
return callback.apply(obj, arguments);
});
}; };
Model.prototype.stopListening = function(obj, events, callback) { Model.prototype.stopListening = function() {
var idx, listeningTo, retain, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results; return Events.stopListening.apply(this, arguments);
if (arguments.length === 0) {
retain = [];
_ref = [this.listeningTo, this.listeningToOnce];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
listeningTo = _ref[_i];
if (!listeningTo) {
continue;
}
_ref1 = this.listeningTo;
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
obj = _ref1[_j];
if (!(!(__indexOf.call(retain, obj) >= 0))) {
continue;
}
obj.unbind();
retain.push(obj);
}
}
this.listeningTo = void 0;
this.listeningToOnce = void 0;
return;
}
if (obj) {
if (!events) {
obj.unbind();
}
if (events) {
obj.unbind(events, callback);
}
_ref2 = [this.listeningTo, this.listeningToOnce];
_results = [];
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
listeningTo = _ref2[_k];
if (!listeningTo) {
continue;
}
idx = listeningTo.indexOf(obj);
if (idx !== -1) {
_results.push(listeningTo.splice(idx, 1));
} else {
_results.push(void 0);
}
}
return _results;
}
}; };
Model.prototype.unbind = function(events, callback) { Model.prototype.unbind = function(events, callback) {
var event, _i, _len, _ref, _results; var event, _i, _len, _ref, _results;
if (arguments.length === 0) { if (arguments.length === 0) {
return this.trigger('unbind'); return this.trigger('unbind');
} else if (events) { } else if (events) {
@ -889,7 +874,6 @@
function Controller(options) { function Controller(options) {
this.release = __bind(this.release, this); this.release = __bind(this.release, this);
var context, key, parent_prototype, value, _ref; var context, key, parent_prototype, value, _ref;
this.options = options; this.options = options;
_ref = this.options; _ref = this.options;
for (key in _ref) { for (key in _ref) {
@ -946,7 +930,6 @@
Controller.prototype.delegateEvents = function(events) { Controller.prototype.delegateEvents = function(events) {
var eventName, key, match, method, selector, _results, var eventName, key, match, method, selector, _results,
_this = this; _this = this;
_results = []; _results = [];
for (key in events) { for (key in events) {
method = events[key]; method = events[key];
@ -974,7 +957,7 @@
if (selector === '') { if (selector === '') {
_results.push(this.el.bind(eventName, method)); _results.push(this.el.bind(eventName, method));
} else { } else {
_results.push(this.el.delegate(selector, eventName, method)); _results.push(this.el.on(eventName, selector, method));
} }
} }
return _results; return _results;
@ -982,7 +965,6 @@
Controller.prototype.refreshElements = function() { Controller.prototype.refreshElements = function() {
var key, value, _ref, _results; var key, value, _ref, _results;
_ref = this.elements; _ref = this.elements;
_results = []; _results = [];
for (key in _ref) { for (key in _ref) {
@ -1004,11 +986,9 @@
Controller.prototype.append = function() { Controller.prototype.append = function() {
var e, elements, _ref; var e, elements, _ref;
elements = 1 <= arguments.length ? __slice.call(arguments, 0) : []; elements = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
elements = (function() { elements = (function() {
var _i, _len, _results; var _i, _len, _results;
_results = []; _results = [];
for (_i = 0, _len = elements.length; _i < _len; _i++) { for (_i = 0, _len = elements.length; _i < _len; _i++) {
e = elements[_i]; e = elements[_i];
@ -1029,11 +1009,9 @@
Controller.prototype.prepend = function() { Controller.prototype.prepend = function() {
var e, elements, _ref; var e, elements, _ref;
elements = 1 <= arguments.length ? __slice.call(arguments, 0) : []; elements = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
elements = (function() { elements = (function() {
var _i, _len, _results; var _i, _len, _results;
_results = []; _results = [];
for (_i = 0, _len = elements.length; _i < _len; _i++) { for (_i = 0, _len = elements.length; _i < _len; _i++) {
e = elements[_i]; e = elements[_i];
@ -1047,9 +1025,12 @@
}; };
Controller.prototype.replace = function(element) { Controller.prototype.replace = function(element) {
var previous, _ref; var previous, _ref, _ref1;
element = element.el || element;
_ref = [this.el, $(element.el || element)], previous = _ref[0], this.el = _ref[1]; if (typeof element === "string") {
element = $.trim(element);
}
_ref1 = [this.el, $(((_ref = $.parseHTML(element)) != null ? _ref[0] : void 0) || element)], previous = _ref1[0], this.el = _ref1[1];
previous.replaceWith(this.el); previous.replaceWith(this.el);
this.delegateEvents(this.events); this.delegateEvents(this.events);
this.refreshElements(); this.refreshElements();
@ -1066,7 +1047,6 @@
createObject = Object.create || function(o) { createObject = Object.create || function(o) {
var Func; var Func;
Func = function() {}; Func = function() {};
Func.prototype = o; Func.prototype = o;
return new Func(); return new Func();
@ -1078,7 +1058,6 @@
isBlank = function(value) { isBlank = function(value) {
var key; var key;
if (!value) { if (!value) {
return true; return true;
} }
@ -1098,7 +1077,7 @@
module.exports = Spine; module.exports = Spine;
} }
Spine.version = '1.1.0'; Spine.version = '1.2.2';
Spine.isArray = isArray; Spine.isArray = isArray;
@ -1120,7 +1099,6 @@
Module.create = Module.sub = Controller.create = Controller.sub = Model.sub = function(instances, statics) { Module.create = Module.sub = Controller.create = Controller.sub = Model.sub = function(instances, statics) {
var Result, _ref; var Result, _ref;
Result = (function(_super) { Result = (function(_super) {
__extends(Result, _super); __extends(Result, _super);
@ -1146,7 +1124,6 @@
Model.setup = function(name, attributes) { Model.setup = function(name, attributes) {
var Instance, _ref; var Instance, _ref;
if (attributes == null) { if (attributes == null) {
attributes = []; attributes = [];
} }

File diff suppressed because one or more lines are too long