diff --git a/app/assets/javascripts/app/controllers/_application_controller_form.js.coffee b/app/assets/javascripts/app/controllers/_application_controller_form.js.coffee index 5d107afb8..0ea55400f 100644 --- a/app/assets/javascripts/app/controllers/_application_controller_form.js.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller_form.js.coffee @@ -324,7 +324,7 @@ class App.ControllerForm extends App.Controller item = $( App.view('generic/textarea')( attribute: attribute ) ) if attribute.upload fileUploaderId = 'file-uploader-' + new Date().getTime() + '-' + Math.floor( Math.random() * 99999 ) - item = $( item.html() + '
' ) + item = $( App.view('generic/textarea')( attribute: attribute ) + '' ) # add file uploader u = => diff --git a/app/assets/javascripts/app/controllers/network.js.coffee b/app/assets/javascripts/app/controllers/network.js.coffee index 4c2769959..a83bff450 100644 --- a/app/assets/javascripts/app/controllers/network.js.coffee +++ b/app/assets/javascripts/app/controllers/network.js.coffee @@ -1,10 +1,3 @@ -Note = App.Note - -$.fn.item = -> - elementID = $(@).data('id') - elementID or= $(@).parents('[data-id]').data('id') - Note.find(elementID) - class Index extends App.ControllerContent events: 'click [data-type=network-new]': 'network_new' diff --git a/app/assets/javascripts/app/lib/spine/ajax.js b/app/assets/javascripts/app/lib/spine/ajax.js index 720f9f1c6..ea30304c7 100755 --- a/app/assets/javascripts/app/lib/spine/ajax.js +++ b/app/assets/javascripts/app/lib/spine/ajax.js @@ -1,10 +1,10 @@ -// Generated by CoffeeScript 1.4.0 +// Generated by CoffeeScript 1.6.2 (function() { var $, Ajax, Base, Collection, Extend, Include, Model, Queue, Singleton, Spine, + __slice = [].slice, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - __slice = [].slice; + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Spine = this.Spine || require('spine'); @@ -16,15 +16,47 @@ Ajax = { getURL: function(object) { - return object && (typeof object.url === "function" ? object.url() : void 0) || object.url; + return (typeof object.url === "function" ? object.url() : void 0) || object.url; + }, + getScope: function(object) { + return (typeof object.scope === "function" ? object.scope() : void 0) || object.scope; + }, + generateURL: function() { + var args, collection, object, path, scope; + + object = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; + if (object.className) { + collection = object.className.toLowerCase() + 's'; + scope = Ajax.getScope(object); + } else { + if (typeof object.constructor.url === 'string') { + collection = object.constructor.url; + } else { + collection = object.constructor.className.toLowerCase() + 's'; + } + scope = Ajax.getScope(object) || Ajax.getScope(object.constructor); + } + args.unshift(collection); + args.unshift(scope); + path = args.join('/'); + path = path.replace(/(\/\/)/g, "/"); + path = path.replace(/^\/|\/$/g, ""); + if (path.indexOf("../") !== 0) { + return Model.host + "/" + path; + } else { + return path; + } }, enabled: true, disable: function(callback) { + var e; + if (this.enabled) { this.enabled = false; try { return callback(); - } catch (e) { + } catch (_error) { + e = _error; throw e; } finally { this.enabled = true; @@ -46,11 +78,9 @@ }; Base = (function() { - function Base() {} Base.prototype.defaults = { - contentType: 'application/json', dataType: 'json', processData: false, headers: { @@ -66,6 +96,7 @@ Base.prototype.ajaxQueue = function(params, defaults) { var deferred, jqXHR, promise, request, settings; + jqXHR = null; deferred = $.Deferred(); promise = deferred.promise(); @@ -78,6 +109,7 @@ }; promise.abort = function(statusText) { var index; + if (jqXHR) { return jqXHR.abort(statusText); } @@ -101,19 +133,17 @@ })(); Collection = (function(_super) { - __extends(Collection, _super); function Collection(model) { this.model = model; this.failResponse = __bind(this.failResponse, this); - this.recordsResponse = __bind(this.recordsResponse, this); - } Collection.prototype.find = function(id, params) { var record; + record = new this.model({ id: id }); @@ -133,6 +163,7 @@ Collection.prototype.fetch = function(params, options) { var id, _this = this; + if (params == null) { params = {}; } @@ -164,15 +195,12 @@ })(Base); Singleton = (function(_super) { - __extends(Singleton, _super); function Singleton(record) { this.record = record; this.failResponse = __bind(this.failResponse, this); - this.recordResponse = __bind(this.recordResponse, this); - this.model = this.record.constructor; } @@ -186,6 +214,7 @@ Singleton.prototype.create = function(params, options) { return this.ajaxQueue(params, { type: 'POST', + contentType: 'application/json', data: JSON.stringify(this.record), url: Ajax.getURL(this.model) }).done(this.recordResponse(options)).fail(this.failResponse(options)); @@ -194,6 +223,7 @@ Singleton.prototype.update = function(params, options) { return this.ajaxQueue(params, { type: 'PUT', + contentType: 'application/json', data: JSON.stringify(this.record), url: Ajax.getURL(this.record) }).done(this.recordResponse(options)).fail(this.failResponse(options)); @@ -208,11 +238,13 @@ Singleton.prototype.recordResponse = function(options) { var _this = this; + if (options == null) { options = {}; } return function(data, status, xhr) { var _ref, _ref1; + if (Spine.isBlank(data) || _this.record.destroyed) { data = false; } else { @@ -236,11 +268,13 @@ Singleton.prototype.failResponse = function(options) { var _this = this; + if (options == null) { options = {}; } return function(xhr, statusText, error) { var _ref, _ref1; + _this.record.trigger('ajaxError', xhr, statusText, error); if ((_ref = options.error) != null) { _ref.apply(_this.record); @@ -260,15 +294,11 @@ return new Singleton(this); }, url: function() { - var args, url; + var args; + args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; - url = Ajax.getURL(this.constructor); - if (url.charAt(url.length - 1) !== '/') { - url += '/'; - } - url += encodeURIComponent(this.id); - args.unshift(url); - return args.join('/'); + args.unshift(encodeURIComponent(this.id)); + return Ajax.generateURL.apply(Ajax, [this].concat(__slice.call(args))); } }; @@ -278,10 +308,9 @@ }, url: function() { var args; + args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; - args.unshift(this.className.toLowerCase() + 's'); - args.unshift(Model.host); - return args.join('/'); + return Ajax.generateURL.apply(Ajax, [this].concat(__slice.call(args))); } }; @@ -294,6 +323,7 @@ }, ajaxFetch: function() { var _ref; + return (_ref = this.ajax()).fetch.apply(_ref, arguments); }, ajaxChange: function(record, type, options) { @@ -323,3 +353,7 @@ } }).call(this); + +/* +//@ sourceMappingURL=ajax.map +*/ diff --git a/app/assets/javascripts/app/lib/spine/ajax.map b/app/assets/javascripts/app/lib/spine/ajax.map new file mode 100755 index 000000000..68d7f576b --- /dev/null +++ b/app/assets/javascripts/app/lib/spine/ajax.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "ajax.js", + "sourceRoot": "..", + "sources": [ + "src/ajax.coffee" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/app/assets/javascripts/app/lib/spine/list.js b/app/assets/javascripts/app/lib/spine/list.js index 5ccd95a04..8512a822a 100755 --- a/app/assets/javascripts/app/lib/spine/list.js +++ b/app/assets/javascripts/app/lib/spine/list.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.4.0 +// Generated by CoffeeScript 1.6.2 (function() { var $, Spine, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, @@ -10,7 +10,6 @@ $ = Spine.$; Spine.List = (function(_super) { - __extends(List, _super); List.prototype.events = { @@ -20,8 +19,7 @@ List.prototype.selectFirst = false; 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); } @@ -58,6 +56,7 @@ List.prototype.click = function(e) { var item; + item = this.items[$(e.currentTarget).index()]; this.trigger('change', item); return true; @@ -72,3 +71,7 @@ } }).call(this); + +/* +//@ sourceMappingURL=list.map +*/ diff --git a/app/assets/javascripts/app/lib/spine/list.map b/app/assets/javascripts/app/lib/spine/list.map new file mode 100755 index 000000000..2c2faba33 --- /dev/null +++ b/app/assets/javascripts/app/lib/spine/list.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "list.js", + "sourceRoot": "..", + "sources": [ + "src/list.coffee" + ], + "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" +} \ No newline at end of file diff --git a/app/assets/javascripts/app/lib/spine/local.js b/app/assets/javascripts/app/lib/spine/local.js index 7d8a4ae04..e9cd63877 100755 --- a/app/assets/javascripts/app/lib/spine/local.js +++ b/app/assets/javascripts/app/lib/spine/local.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.4.0 +// Generated by CoffeeScript 1.6.2 (function() { var Spine; @@ -11,11 +11,13 @@ }, saveLocal: function() { var result; + result = JSON.stringify(this); return localStorage[this.className] = result; }, loadLocal: function() { var result; + result = localStorage[this.className]; return this.refresh(result || [], { clear: true @@ -28,3 +30,7 @@ } }).call(this); + +/* +//@ sourceMappingURL=local.map +*/ diff --git a/app/assets/javascripts/app/lib/spine/local.map b/app/assets/javascripts/app/lib/spine/local.map new file mode 100755 index 000000000..e5c6d2758 --- /dev/null +++ b/app/assets/javascripts/app/lib/spine/local.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "local.js", + "sourceRoot": "..", + "sources": [ + "src/local.coffee" + ], + "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" +} \ No newline at end of file diff --git a/app/assets/javascripts/app/lib/spine/manager.js b/app/assets/javascripts/app/lib/spine/manager.js index 8945092f8..d1cf0dee4 100755 --- a/app/assets/javascripts/app/lib/spine/manager.js +++ b/app/assets/javascripts/app/lib/spine/manager.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.4.0 +// Generated by CoffeeScript 1.6.2 (function() { var $, Spine, __hasProp = {}.hasOwnProperty, @@ -10,7 +10,6 @@ $ = Spine.$; Spine.Manager = (function(_super) { - __extends(Manager, _super); Manager.include(Spine.Events); @@ -23,6 +22,7 @@ Manager.prototype.add = function() { var cont, controllers, _i, _len, _results; + controllers = 1 <= arguments.length ? __slice.call(arguments, 0) : []; _results = []; for (_i = 0, _len = controllers.length; _i < _len; _i++) { @@ -34,8 +34,10 @@ Manager.prototype.addOne = function(controller) { var _this = this; + controller.bind('active', function() { var args; + args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; return _this.trigger.apply(_this, ['change', controller].concat(__slice.call(args))); }); @@ -51,6 +53,7 @@ Manager.prototype.change = function() { var args, cont, current, _i, _len, _ref, _results; + current = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; _ref = this.controllers; _results = []; @@ -72,6 +75,7 @@ Spine.Controller.include({ active: function() { var args; + args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; if (typeof args[0] === 'function') { this.bind('active', args[0]); @@ -95,7 +99,6 @@ }); Spine.Stack = (function(_super) { - __extends(Stack, _super); Stack.prototype.controllers = {}; @@ -107,6 +110,7 @@ function Stack() { var key, value, _fn, _ref, _ref1, _this = this; + Stack.__super__.constructor.apply(this, arguments); this.manager = new Spine.Manager; _ref = this.controllers; @@ -123,11 +127,13 @@ _ref1 = this.routes; _fn = function(key, value) { var callback; + if (typeof value === 'function') { callback = value; } callback || (callback = function() { var _ref2; + return (_ref2 = _this[value]).active.apply(_ref2, arguments); }); return _this.route(key, callback); @@ -159,3 +165,7 @@ } }).call(this); + +/* +//@ sourceMappingURL=manager.map +*/ diff --git a/app/assets/javascripts/app/lib/spine/manager.map b/app/assets/javascripts/app/lib/spine/manager.map new file mode 100755 index 000000000..2ef71d8ff --- /dev/null +++ b/app/assets/javascripts/app/lib/spine/manager.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "manager.js", + "sourceRoot": "..", + "sources": [ + "src/manager.coffee" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/app/assets/javascripts/app/lib/spine/relation.js b/app/assets/javascripts/app/lib/spine/relation.js index 81345a13c..922dc3dad 100755 --- a/app/assets/javascripts/app/lib/spine/relation.js +++ b/app/assets/javascripts/app/lib/spine/relation.js @@ -1,6 +1,6 @@ -// Generated by CoffeeScript 1.4.0 +// Generated by CoffeeScript 1.6.2 (function() { - var Collection, Instance, Singleton, Spine, isArray, require, singularize, underscore, + var Collection, Instance, Singleton, Spine, association, isArray, require, singularize, underscore, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; @@ -13,11 +13,11 @@ }); Collection = (function(_super) { - __extends(Collection, _super); function Collection(options) { var key, value; + if (options == null) { options = {}; } @@ -29,6 +29,7 @@ Collection.prototype.all = function() { var _this = this; + return this.model.select(function(rec) { return _this.associated(rec); }); @@ -40,13 +41,19 @@ Collection.prototype.last = function() { var values; + values = this.all(); return values[values.length - 1]; }; + Collection.prototype.count = function() { + return this.all().length; + }; + Collection.prototype.find = function(id) { var records, _this = this; + records = this.select(function(rec) { return ("" + rec.id) === ("" + id); }); @@ -58,6 +65,7 @@ Collection.prototype.findAllByAttribute = function(name, value) { var _this = this; + return this.model.select(function(rec) { return _this.associated(rec) && rec[name] === value; }); @@ -69,34 +77,55 @@ Collection.prototype.select = function(cb) { var _this = this; + return this.model.select(function(rec) { return _this.associated(rec) && cb(rec); }); }; Collection.prototype.refresh = function(values) { - var record, records, _i, _j, _len, _len1, _ref; + var i, match, record, _i, _j, _k, _len, _len1, _len2, _ref, _ref1; + + if (values == null) { + return this; + } _ref = this.all(); for (_i = 0, _len = _ref.length; _i < _len; _i++) { record = _ref[_i]; - delete this.model.records[record.id]; + delete this.model.irecords[record.id]; + _ref1 = this.model.records; + for (i = _j = 0, _len1 = _ref1.length; _j < _len1; i = ++_j) { + match = _ref1[i]; + if (!(match.id === record.id)) { + continue; + } + this.model.records.splice(i, 1); + break; + } } - records = this.model.fromJSON(values); - if (!isArray(records)) { - records = [records]; + if (!isArray(values)) { + values = [values]; } - for (_j = 0, _len1 = records.length; _j < _len1; _j++) { - record = records[_j]; + for (_k = 0, _len2 = values.length; _k < _len2; _k++) { + record = values[_k]; record.newRecord = false; record[this.fkey] = this.record.id; - this.model.records[record.id] = record; } - return this.model.trigger('refresh', this.model.cloneArray(records)); + this.model.refresh(values); + return this; }; - Collection.prototype.create = function(record) { + Collection.prototype.create = function(record, options) { record[this.fkey] = this.record.id; - return this.model.create(record); + return this.model.create(record, options); + }; + + Collection.prototype.add = function(record, options) { + return record.updateAttribute(this.fkey, this.record.id, options); + }; + + Collection.prototype.remove = function(record, options) { + return record.updateAttribute(this.fkey, null, options); }; Collection.prototype.associated = function(record) { @@ -108,11 +137,11 @@ })(Spine.Module); Instance = (function(_super) { - __extends(Instance, _super); function Instance(options) { var key, value; + if (options == null) { options = {}; } @@ -123,17 +152,25 @@ } Instance.prototype.exists = function() { - return this.record[this.fkey] && this.model.exists(this.record[this.fkey]); + if (this.record[this.fkey]) { + return this.model.exists(this.record[this.fkey]); + } else { + return false; + } }; Instance.prototype.update = function(value) { + if (value == null) { + return this; + } if (!(value instanceof this.model)) { value = new this.model(value); } if (value.isNew()) { value.save(); } - return this.record[this.fkey] = value && value.id; + this.record[this.fkey] = value && value.id; + return this; }; return Instance; @@ -141,11 +178,11 @@ })(Spine.Module); Singleton = (function(_super) { - __extends(Singleton, _super); function Singleton(options) { var key, value; + if (options == null) { options = {}; } @@ -160,11 +197,15 @@ }; Singleton.prototype.update = function(value) { + if (value == null) { + return this; + } if (!(value instanceof this.model)) { value = this.model.fromJSON(value); } value[this.fkey] = this.record.id; - return value.save(); + value.save(); + return this; }; return Singleton; @@ -179,75 +220,42 @@ return str.replace(/::/g, '/').replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2').replace(/([a-z\d])([A-Z])/g, '$1_$2').replace(/-/g, '_').toLowerCase(); }; + association = function(name, model, record, fkey, Ctor) { + if (typeof model === 'string') { + model = require(model); + } + return new Ctor({ + name: name, + model: model, + record: record, + fkey: fkey + }); + }; + Spine.Model.extend({ hasMany: function(name, model, fkey) { - var association; if (fkey == null) { fkey = "" + (underscore(this.className)) + "_id"; } - association = function(record) { - if (typeof model === 'string') { - model = require(model); - } - return new Collection({ - name: name, - model: model, - record: record, - fkey: fkey - }); - }; return this.prototype[name] = function(value) { - if (value != null) { - association(this).refresh(value); - } - return association(this); + return association(name, model, this, fkey, Collection).refresh(value); }; }, belongsTo: function(name, model, fkey) { - var association; if (fkey == null) { - fkey = "" + (singularize(name)) + "_id"; + fkey = "" + (underscore(singularize(name))) + "_id"; } - association = function(record) { - if (typeof model === 'string') { - model = require(model); - } - return new Instance({ - name: name, - model: model, - record: record, - fkey: fkey - }); - }; this.prototype[name] = function(value) { - if (value != null) { - association(this).update(value); - } - return association(this).exists(); + return association(name, model, this, fkey, Instance).update(value).exists(); }; return this.attributes.push(fkey); }, hasOne: function(name, model, fkey) { - var association; if (fkey == null) { fkey = "" + (underscore(this.className)) + "_id"; } - association = function(record) { - if (typeof model === 'string') { - model = require(model); - } - return new Singleton({ - name: name, - model: model, - record: record, - fkey: fkey - }); - }; return this.prototype[name] = function(value) { - if (value != null) { - association(this).update(value); - } - return association(this).find(); + return association(name, model, this, fkey, Singleton).update(value).find(); }; } }); @@ -259,3 +267,7 @@ Spine.Instance = Instance; }).call(this); + +/* +//@ sourceMappingURL=relation.map +*/ diff --git a/app/assets/javascripts/app/lib/spine/relation.map b/app/assets/javascripts/app/lib/spine/relation.map new file mode 100755 index 000000000..7a5a7df85 --- /dev/null +++ b/app/assets/javascripts/app/lib/spine/relation.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "relation.js", + "sourceRoot": "..", + "sources": [ + "src/relation.coffee" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/app/assets/javascripts/app/lib/spine/route.js b/app/assets/javascripts/app/lib/spine/route.js index 9f7af79f9..b562d7bf1 100755 --- a/app/assets/javascripts/app/lib/spine/route.js +++ b/app/assets/javascripts/app/lib/spine/route.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.4.0 +// Generated by CoffeeScript 1.6.2 (function() { var $, Spine, escapeRegExp, hashStrip, namedParam, splatParam, __hasProp = {}.hasOwnProperty, @@ -37,6 +37,7 @@ Route.add = function(path, callback) { var key, value, _results; + if (typeof path === 'object' && !(path instanceof RegExp)) { _results = []; for (key in path) { @@ -81,6 +82,7 @@ Route.navigate = function() { var args, lastArg, options, path; + args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; options = {}; lastArg = args[args.length - 1]; @@ -113,6 +115,7 @@ Route.getPath = function() { var path; + if (this.history) { path = window.location.pathname; if (path.substr(0, 1) !== '/') { @@ -131,6 +134,7 @@ Route.change = function() { var path; + path = this.getPath(); if (path === this.path) { return; @@ -141,6 +145,7 @@ Route.matchRoute = function(path, options) { var route, _i, _len, _ref1; + _ref1 = this.routes; for (_i = 0, _len = _ref1.length; _i < _len; _i++) { route = _ref1[_i]; @@ -154,6 +159,7 @@ function Route(path, callback) { var match; + this.path = path; this.callback = callback; this.names = []; @@ -175,6 +181,7 @@ Route.prototype.match = function(path, options) { var i, match, param, params, _i, _len; + if (options == null) { options = {}; } @@ -205,6 +212,7 @@ }, routes: function(routes) { var key, value, _results; + _results = []; for (key in routes) { value = routes[key]; @@ -222,3 +230,7 @@ } }).call(this); + +/* +//@ sourceMappingURL=route.map +*/ diff --git a/app/assets/javascripts/app/lib/spine/route.map b/app/assets/javascripts/app/lib/spine/route.map new file mode 100755 index 000000000..1a135d154 --- /dev/null +++ b/app/assets/javascripts/app/lib/spine/route.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "route.js", + "sourceRoot": "..", + "sources": [ + "src/route.coffee" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/app/assets/javascripts/app/lib/spine/spine.js b/app/assets/javascripts/app/lib/spine/spine.js index c0aa6dc8b..e94a4cb83 100755 --- a/app/assets/javascripts/app/lib/spine/spine.js +++ b/app/assets/javascripts/app/lib/spine/spine.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.4.0 +// Generated by CoffeeScript 1.6.2 (function() { var $, Controller, Events, Log, Model, Module, Spine, createObject, isArray, isBlank, makeArray, moduleKeywords, __slice = [].slice, @@ -10,6 +10,7 @@ Events = { bind: function(ev, callback) { var calls, evs, name, _i, _len; + evs = ev.split(' '); calls = this.hasOwnProperty('_callbacks') && this._callbacks || (this._callbacks = {}); for (_i = 0, _len = evs.length; _i < _len; _i++) { @@ -20,13 +21,16 @@ return this; }, one: function(ev, callback) { - return this.bind(ev, function() { - this.unbind(ev, arguments.callee); + var handler; + + return this.bind(ev, handler = function() { + this.unbind(ev, handler); return callback.apply(this, arguments); }); }, trigger: function() { var args, callback, ev, list, _i, _len, _ref; + args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; ev = args.shift(); list = this.hasOwnProperty('_callbacks') && ((_ref = this._callbacks) != null ? _ref[ev] : void 0); @@ -41,12 +45,84 @@ } return true; }, + listenTo: function(obj, ev, callback) { + obj.bind(ev, callback); + this.listeningTo || (this.listeningTo = []); + this.listeningTo.push(obj); + return this; + }, + listenToOnce: function(obj, ev, callback) { + var listeningToOnce; + + listeningToOnce = this.listeningToOnce || (this.listeningToOnce = []); + listeningToOnce.push(obj); + obj.one(ev, function() { + var idx; + + idx = listeningToOnce.indexOf(obj); + if (idx !== -1) { + listeningToOnce.splice(idx, 1); + } + return callback.apply(this, arguments); + }); + return this; + }, + stopListening: function(obj, ev, callback) { + var idx, listeningTo, retain, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _results; + + 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; + } + for (_j = 0, _len1 = listeningTo.length; _j < _len1; _j++) { + obj = listeningTo[_j]; + if (!(!(__indexOf.call(retain, obj) >= 0))) { + continue; + } + obj.unbind(); + retain.push(obj); + } + } + this.listeningTo = void 0; + return this.listeningToOnce = void 0; + } else if (obj) { + if (ev) { + obj.unbind(ev, callback); + } + if (!ev) { + obj.unbind(); + } + _ref1 = [this.listeningTo, this.listeningToOnce]; + _results = []; + for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) { + listeningTo = _ref1[_k]; + if (!listeningTo) { + continue; + } + idx = listeningTo.indexOf(obj); + if (idx !== -1) { + _results.push(listeningTo.splice(idx, 1)); + } else { + _results.push(void 0); + } + } + return _results; + } + }, unbind: function(ev, callback) { var cb, evs, i, list, name, _i, _j, _len, _len1, _ref; - if (!ev) { + + if (arguments.length === 0) { this._callbacks = {}; return this; } + if (!ev) { + return this; + } evs = ev.split(' '); for (_i = 0, _len = evs.length; _i < _len; _i++) { name = evs[_i]; @@ -82,6 +158,7 @@ logPrefix: '(App)', log: function() { var args; + args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; if (!this.trace) { return; @@ -101,9 +178,9 @@ moduleKeywords = ['included', 'extended']; Module = (function() { - Module.include = function(obj) { var key, value, _ref; + if (!obj) { throw new Error('include(obj) requires obj'); } @@ -121,6 +198,7 @@ Module.extend = function(obj) { var key, value, _ref; + if (!obj) { throw new Error('extend(obj) requires obj'); } @@ -138,6 +216,7 @@ Module.proxy = function(func) { var _this = this; + return function() { return func.apply(_this, arguments); }; @@ -145,6 +224,7 @@ Module.prototype.proxy = function(func) { var _this = this; + return function() { return func.apply(_this, arguments); }; @@ -161,12 +241,13 @@ })(); Model = (function(_super) { - __extends(Model, _super); Model.extend(Events); - Model.records = {}; + Model.records = []; + + Model.irecords = {}; Model.crecords = {}; @@ -174,10 +255,10 @@ Model.configure = function() { var attributes, name; + name = arguments[0], attributes = 2 <= arguments.length ? __slice.call(arguments, 1) : []; this.className = name; - this.records = {}; - this.crecords = {}; + this.deleteAll(); if (attributes.length) { this.attributes = attributes; } @@ -193,41 +274,28 @@ Model.find = function(id) { var record; - record = this.records[id]; - if (!record && ("" + id).match(/c-\d+/)) { - return this.findCID(id); - } - if (!record) { - throw new Error("\"" + this.className + "\" model could not find a record for the ID \"" + id + "\""); - } - return record.clone(); - }; - Model.findCID = function(cid) { - var record; - record = this.crecords[cid]; + record = this.exists(id); if (!record) { throw new Error("\"" + this.className + "\" model could not find a record for the ID \"" + id + "\""); } - return record.clone(); + return record; }; Model.exists = function(id) { - try { - return this.find(id); - } catch (e) { - return false; - } + var _ref, _ref1; + + return (_ref = (_ref1 = this.irecords[id]) != null ? _ref1 : this.crecords[id]) != null ? _ref.clone() : void 0; }; Model.refresh = function(values, options) { - var record, records, _i, _len; + var record, records, result, _i, _len; + if (options == null) { options = {}; } if (options.clear) { - this.records = {}; - this.crecords = {}; + this.deleteAll(); } records = this.fromJSON(values); if (!isArray(records)) { @@ -235,36 +303,41 @@ } for (_i = 0, _len = records.length; _i < _len; _i++) { record = records[_i]; - record.id || (record.id = record.cid); - this.records[record.id] = record; + if (record.id && this.irecords[record.id]) { + 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(); + result = this.cloneArray(records); this.trigger('refresh', this.cloneArray(records)); - return this; + return result; }; Model.select = function(callback) { - var id, record, result; - result = (function() { - var _ref, _results; - _ref = this.records; - _results = []; - for (id in _ref) { - record = _ref[id]; - if (callback(record)) { - _results.push(record); - } + var record, _i, _len, _ref, _results; + + _ref = this.records; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + record = _ref[_i]; + if (callback(record)) { + _results.push(record.clone()); } - return _results; - }).call(this); - return this.cloneArray(result); + } + return _results; }; Model.findByAttribute = function(name, value) { - var id, record, _ref; + var record, _i, _len, _ref; + _ref = this.records; - for (id in _ref) { - record = _ref[id]; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + record = _ref[_i]; if (record[name] === value) { return record.clone(); } @@ -279,55 +352,51 @@ }; Model.each = function(callback) { - var key, value, _ref, _results; + var record, _i, _len, _ref, _results; + _ref = this.records; _results = []; - for (key in _ref) { - value = _ref[key]; - _results.push(callback(value.clone())); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + record = _ref[_i]; + _results.push(callback(record.clone())); } return _results; }; Model.all = function() { - return this.cloneArray(this.recordsValues()); + return this.cloneArray(this.records); }; Model.first = function() { - var record; - record = this.recordsValues()[0]; - return record != null ? record.clone() : void 0; + var _ref; + + return (_ref = this.records[0]) != null ? _ref.clone() : void 0; }; Model.last = function() { - var record, values; - values = this.recordsValues(); - record = values[values.length - 1]; - return record != null ? record.clone() : void 0; + var _ref; + + return (_ref = this.records[this.records.length - 1]) != null ? _ref.clone() : void 0; }; Model.count = function() { - return this.recordsValues().length; + return this.records.length; }; Model.deleteAll = function() { - var key, value, _ref, _results; - _ref = this.records; - _results = []; - for (key in _ref) { - value = _ref[key]; - _results.push(delete this.records[key]); - } - return _results; + this.records = []; + this.irecords = {}; + return this.crecords = {}; }; Model.destroyAll = function(options) { - var key, value, _ref, _results; + var record, _i, _len, _ref, _results; + _ref = this.records; _results = []; - for (key in _ref) { - value = _ref[key]; - _results.push(this.records[key].destroy(options)); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + record = _ref[_i]; + _results.push(record.destroy(options)); } return _results; }; @@ -338,6 +407,7 @@ Model.create = function(atts, options) { var record; + record = new this(atts); return record.save(options); }; @@ -350,7 +420,7 @@ if (typeof callbackOrParams === 'function') { return this.bind('change', callbackOrParams); } else { - return this.trigger('change', callbackOrParams); + return this.trigger.apply(this, ['change'].concat(__slice.call(arguments))); } }; @@ -358,16 +428,17 @@ if (typeof callbackOrParams === 'function') { return this.bind('fetch', callbackOrParams); } else { - return this.trigger('fetch', callbackOrParams); + return this.trigger.apply(this, ['fetch'].concat(__slice.call(arguments))); } }; Model.toJSON = function() { - return this.recordsValues(); + return this.records; }; Model.fromJSON = function(objects) { var value, _i, _len, _results; + if (!objects) { return; } @@ -388,22 +459,20 @@ Model.fromForm = function() { var _ref; + return (_ref = new this).fromForm.apply(_ref, arguments); }; - Model.recordsValues = function() { - var key, result, value, _ref; - result = []; - _ref = this.records; - for (key in _ref) { - value = _ref[key]; - result.push(value); + Model.sort = function() { + if (this.comparator) { + this.records.sort(this.comparator); } - return result; + return this.records; }; Model.cloneArray = function(array) { var value, _i, _len, _results; + _results = []; for (_i = 0, _len = array.length; _i < _len; _i++) { value = array[_i]; @@ -416,6 +485,7 @@ Model.uid = function(prefix) { var uid; + if (prefix == null) { prefix = ''; } @@ -446,9 +516,13 @@ Model.prototype.load = function(atts) { var key, value; + + if (atts.id) { + this.id = atts.id; + } for (key in atts) { value = atts[key]; - if (typeof this[key] === 'function') { + if (atts.hasOwnProperty(key) && typeof this[key] === 'function') { this[key](value); } else { this[key] = value; @@ -459,6 +533,7 @@ Model.prototype.attributes = function() { var key, result, _i, _len, _ref; + result = {}; _ref = this.constructor.attributes; for (_i = 0, _len = _ref.length; _i < _len; _i++) { @@ -483,6 +558,7 @@ Model.prototype.save = function(options) { var error, record; + if (options == null) { options = {}; } @@ -502,6 +578,7 @@ Model.prototype.stripCloneAttrs = function() { var key, value; + if (this.hasOwnProperty('cid')) { return; } @@ -517,6 +594,7 @@ Model.prototype.updateAttribute = function(name, value, options) { var atts; + atts = {}; atts[name] = value; return this.updateAttributes(atts, options); @@ -529,7 +607,8 @@ Model.prototype.changeID = function(id) { var records; - records = this.constructor.records; + + records = this.constructor.irecords; records[id] = records[this.id]; delete records[this.id]; this.id = id; @@ -537,21 +616,37 @@ }; Model.prototype.destroy = function(options) { + var i, record, records, _i, _len; + if (options == null) { options = {}; } this.trigger('beforeDestroy', options); - delete this.constructor.records[this.id]; + records = this.constructor.records.slice(0); + for (i = _i = 0, _len = records.length; _i < _len; i = ++_i) { + record = records[i]; + if (!(this.eql(record))) { + continue; + } + records.splice(i, 1); + break; + } + this.constructor.records = records; + delete this.constructor.irecords[this.id]; delete this.constructor.crecords[this.cid]; this.destroyed = true; this.trigger('destroy', options); this.trigger('change', 'destroy', options); + if (this.listeningTo) { + this.stopListening(); + } this.unbind(); return this; }; Model.prototype.dup = function(newRecord) { var result; + result = new this.constructor(this.attributes()); if (newRecord === false) { result.cid = this.cid; @@ -567,6 +662,7 @@ Model.prototype.reload = function() { var original; + if (this.isNew()) { return this; } @@ -585,6 +681,7 @@ Model.prototype.fromForm = function(form) { var key, result, _i, _len, _ref; + result = {}; _ref = $(form).serializeArray(); for (_i = 0, _len = _ref.length; _i < _len; _i++) { @@ -595,14 +692,16 @@ }; Model.prototype.exists = function() { - return this.id && this.id in this.constructor.records; + return this.constructor.exists(this.id); }; Model.prototype.update = function(options) { var clone, records; + this.trigger('beforeUpdate', options); - records = this.constructor.records; + records = this.constructor.irecords; records[this.id].load(this.attributes()); + this.constructor.sort(); clone = records[this.id].clone(); clone.trigger('update', options); clone.trigger('change', 'update', options); @@ -611,13 +710,16 @@ Model.prototype.create = function(options) { var clone, record; + this.trigger('beforeCreate', options); if (!this.id) { this.id = this.cid; } record = this.dup(false); - this.constructor.records[this.id] = record; + this.constructor.records.push(record); + this.constructor.irecords[this.id] = record; this.constructor.crecords[this.cid] = record; + this.constructor.sort(); clone = record.clone(); clone.trigger('create', options); clone.trigger('change', 'create', options); @@ -625,48 +727,155 @@ }; Model.prototype.bind = function(events, callback) { - var binder, unbinder, + var binder, singleEvent, _fn, _i, _len, _ref, _this = this; + this.constructor.bind(events, binder = function(record) { if (record && _this.eql(record)) { return callback.apply(_this, arguments); } }); - this.constructor.bind('unbind', unbinder = function(record) { - if (record && _this.eql(record)) { - _this.constructor.unbind(events, binder); - return _this.constructor.unbind('unbind', unbinder); - } - }); - return binder; + _ref = events.split(' '); + _fn = function(singleEvent) { + var unbinder; + + return _this.constructor.bind("unbind", unbinder = function(record, event, cb) { + if (record && _this.eql(record)) { + if (event && event !== singleEvent) { + return; + } + if (cb && cb !== callback) { + return; + } + _this.constructor.unbind(singleEvent, binder); + return _this.constructor.unbind("unbind", unbinder); + } + }); + }; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + singleEvent = _ref[_i]; + _fn(singleEvent); + } + return this; }; Model.prototype.one = function(events, callback) { - var binder, + var handler, _this = this; - return binder = this.bind(events, function() { - _this.constructor.unbind(events, binder); + + return this.bind(events, handler = function() { + _this.unbind(events, handler); return callback.apply(_this, arguments); }); }; Model.prototype.trigger = function() { var args, _ref; + args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; args.splice(1, 0, this); return (_ref = this.constructor).trigger.apply(_ref, args); }; - Model.prototype.unbind = function() { - return this.trigger('unbind'); + Model.prototype.listenTo = function(obj, events, callback) { + obj.bind(events, callback); + this.listeningTo || (this.listeningTo = []); + return this.listeningTo.push(obj); + }; + + Model.prototype.listenToOnce = function(obj, events, callback) { + var handler, listeningToOnce, + _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) { + var idx, listeningTo, retain, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results; + + 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) { + var event, _i, _len, _ref, _results; + + if (arguments.length === 0) { + return this.trigger('unbind'); + } else if (events) { + _ref = events.split(' '); + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + event = _ref[_i]; + _results.push(this.trigger('unbind', event, callback)); + } + return _results; + } }; return Model; })(Module); - Controller = (function(_super) { + Model.prototype.on = Model.prototype.bind; + Model.prototype.off = Model.prototype.unbind; + + Controller = (function(_super) { __extends(Controller, _super); Controller.include(Events); @@ -679,8 +888,8 @@ function Controller(options) { this.release = __bind(this.release, this); + var context, key, parent_prototype, value, _ref; - var key, value, _ref; this.options = options; _ref = this.options; for (key in _ref) { @@ -704,6 +913,16 @@ if (!this.elements) { this.elements = this.constructor.elements; } + context = this; + while (parent_prototype = context.constructor.__super__) { + if (parent_prototype.events) { + this.events = $.extend({}, parent_prototype.events, this.events); + } + if (parent_prototype.elements) { + this.elements = $.extend({}, parent_prototype.elements, this.elements); + } + context = parent_prototype; + } if (this.events) { this.delegateEvents(this.events); } @@ -714,9 +933,10 @@ } Controller.prototype.release = function() { - this.trigger('release'); + this.trigger('release', this); this.el.remove(); - return this.unbind(); + this.unbind(); + return this.stopListening(); }; Controller.prototype.$ = function(selector) { @@ -726,6 +946,7 @@ Controller.prototype.delegateEvents = function(events) { var eventName, key, match, method, selector, _results, _this = this; + _results = []; for (key in events) { method = events[key]; @@ -761,6 +982,7 @@ Controller.prototype.refreshElements = function() { var key, value, _ref, _results; + _ref = this.elements; _results = []; for (key in _ref) { @@ -782,9 +1004,11 @@ Controller.prototype.append = function() { var e, elements, _ref; + elements = 1 <= arguments.length ? __slice.call(arguments, 0) : []; elements = (function() { var _i, _len, _results; + _results = []; for (_i = 0, _len = elements.length; _i < _len; _i++) { e = elements[_i]; @@ -805,9 +1029,11 @@ Controller.prototype.prepend = function() { var e, elements, _ref; + elements = 1 <= arguments.length ? __slice.call(arguments, 0) : []; elements = (function() { var _i, _len, _results; + _results = []; for (_i = 0, _len = elements.length; _i < _len; _i++) { e = elements[_i]; @@ -822,6 +1048,7 @@ Controller.prototype.replace = function(element) { var previous, _ref; + _ref = [this.el, $(element.el || element)], previous = _ref[0], this.el = _ref[1]; previous.replaceWith(this.el); this.delegateEvents(this.events); @@ -839,6 +1066,7 @@ createObject = Object.create || function(o) { var Func; + Func = function() {}; Func.prototype = o; return new Func(); @@ -850,6 +1078,7 @@ isBlank = function(value) { var key; + if (!value) { return true; } @@ -869,7 +1098,7 @@ module.exports = Spine; } - Spine.version = '1.0.9'; + Spine.version = '1.1.0'; Spine.isArray = isArray; @@ -890,13 +1119,14 @@ Module.extend.call(Spine, Events); Module.create = Module.sub = Controller.create = Controller.sub = Model.sub = function(instances, statics) { - var Result; - Result = (function(_super) { + var Result, _ref; + Result = (function(_super) { __extends(Result, _super); function Result() { - return Result.__super__.constructor.apply(this, arguments); + _ref = Result.__super__.constructor.apply(this, arguments); + return _ref; } return Result; @@ -915,16 +1145,17 @@ }; Model.setup = function(name, attributes) { - var Instance; + var Instance, _ref; + if (attributes == null) { attributes = []; } Instance = (function(_super) { - __extends(Instance, _super); function Instance() { - return Instance.__super__.constructor.apply(this, arguments); + _ref = Instance.__super__.constructor.apply(this, arguments); + return _ref; } return Instance; @@ -937,3 +1168,7 @@ Spine.Class = Module; }).call(this); + +/* +//@ sourceMappingURL=spine.map +*/ diff --git a/app/assets/javascripts/app/lib/spine/spine.map b/app/assets/javascripts/app/lib/spine/spine.map new file mode 100755 index 000000000..c0382d939 --- /dev/null +++ b/app/assets/javascripts/app/lib/spine/spine.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "spine.js", + "sourceRoot": "..", + "sources": [ + "src/spine.coffee" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file