updated jslibraries

This commit is contained in:
Keivan Beigi 2013-07-24 17:41:19 -07:00
parent 478caf15f8
commit df705b79cf
3 changed files with 55 additions and 106 deletions

View File

@ -198,9 +198,9 @@
column-width: @width; column-width: @width;
} }
.column-rule(@args){ .column-rule(@args){
-webkit-column-rule: @rule; -webkit-column-rule: @args;
-moz-column-rule: @rule; -moz-column-rule: @args;
column-rule: @rule; column-rule: @args;
} }

View File

@ -1,6 +1,6 @@
// MarionetteJS (Backbone.Marionette) // MarionetteJS (Backbone.Marionette)
// ---------------------------------- // ----------------------------------
// v1.0.3 // v1.0.4
// //
// Copyright (c)2013 Derick Bailey, Muted Solutions, LLC. // Copyright (c)2013 Derick Bailey, Muted Solutions, LLC.
// Distributed under MIT license // Distributed under MIT license
@ -19,7 +19,7 @@
// Backbone.BabySitter // Backbone.BabySitter
// ------------------- // -------------------
// v0.0.5 // v0.0.6
// //
// Copyright (c)2013 Derick Bailey, Muted Solutions, LLC. // Copyright (c)2013 Derick Bailey, Muted Solutions, LLC.
// Distributed under MIT license // Distributed under MIT license
@ -37,14 +37,13 @@ Backbone.ChildViewContainer = (function(Backbone, _){
// Container Constructor // Container Constructor
// --------------------- // ---------------------
var Container = function(initialViews){ var Container = function(views){
this._views = {}; this._views = {};
this._indexByModel = {}; this._indexByModel = {};
this._indexByCollection = {};
this._indexByCustom = {}; this._indexByCustom = {};
this._updateLength(); this._updateLength();
this._addInitialViews(initialViews); _.each(views, this.add, this);
}; };
// Container Methods // Container Methods
@ -54,7 +53,7 @@ Backbone.ChildViewContainer = (function(Backbone, _){
// Add a view to this container. Stores the view // Add a view to this container. Stores the view
// by `cid` and makes it searchable by the model // by `cid` and makes it searchable by the model
// and/or collection of the view. Optionally specify // cid (and model itself). Optionally specify
// a custom key to store an retrieve the view. // a custom key to store an retrieve the view.
add: function(view, customIndex){ add: function(view, customIndex){
var viewCid = view.cid; var viewCid = view.cid;
@ -67,11 +66,6 @@ Backbone.ChildViewContainer = (function(Backbone, _){
this._indexByModel[view.model.cid] = viewCid; this._indexByModel[view.model.cid] = viewCid;
} }
// index it by collection
if (view.collection){
this._indexByCollection[view.collection.cid] = viewCid;
}
// index by custom // index by custom
if (customIndex){ if (customIndex){
this._indexByCustom[customIndex] = viewCid; this._indexByCustom[customIndex] = viewCid;
@ -81,18 +75,16 @@ Backbone.ChildViewContainer = (function(Backbone, _){
}, },
// Find a view by the model that was attached to // Find a view by the model that was attached to
// it. Uses the model's `cid` to find it, and // it. Uses the model's `cid` to find it.
// retrieves the view by it's `cid` from the result
findByModel: function(model){ findByModel: function(model){
var viewCid = this._indexByModel[model.cid]; return this.findByModelCid(model.cid);
return this.findByCid(viewCid);
}, },
// Find a view by the collection that was attached to // Find a view by the `cid` of the model that was attached to
// it. Uses the collection's `cid` to find it, and // it. Uses the model's `cid` to find the view `cid` and
// retrieves the view by it's `cid` from the result // retrieve the view using it.
findByCollection: function(col){ findByModelCid: function(modelCid){
var viewCid = this._indexByCollection[col.cid]; var viewCid = this._indexByModel[modelCid];
return this.findByCid(viewCid); return this.findByCid(viewCid);
}, },
@ -122,26 +114,13 @@ Backbone.ChildViewContainer = (function(Backbone, _){
delete this._indexByModel[view.model.cid]; delete this._indexByModel[view.model.cid];
} }
// delete collection index
if (view.collection){
delete this._indexByCollection[view.collection.cid];
}
// delete custom index // delete custom index
var cust; _.any(this._indexByCustom, function(cid, key) {
if (cid === viewCid) {
for (var key in this._indexByCustom){ delete this._indexByCustom[key];
if (this._indexByCustom.hasOwnProperty(key)){ return true;
if (this._indexByCustom[key] === viewCid){
cust = key;
break;
}
}
}
if (cust){
delete this._indexByCustom[cust];
} }
}, this);
// remove the view from the container // remove the view from the container
delete this._views[viewCid]; delete this._views[viewCid];
@ -153,44 +132,24 @@ Backbone.ChildViewContainer = (function(Backbone, _){
// Call a method on every view in the container, // Call a method on every view in the container,
// passing parameters to the call method one at a // passing parameters to the call method one at a
// time, like `function.call`. // time, like `function.call`.
call: function(method, args){ call: function(method){
args = Array.prototype.slice.call(arguments, 1); this.apply(method, _.tail(arguments));
this.apply(method, args);
}, },
// Apply a method on every view in the container, // Apply a method on every view in the container,
// passing parameters to the call method one at a // passing parameters to the call method one at a
// time, like `function.apply`. // time, like `function.apply`.
apply: function(method, args){ apply: function(method, args){
var view; _.each(this._views, function(view){
// fix for IE < 9
args = args || [];
_.each(this._views, function(view, key){
if (_.isFunction(view[method])){ if (_.isFunction(view[method])){
view[method].apply(view, args); view[method].apply(view, args || []);
} }
}); });
}, },
// Update the `.length` attribute on this container // Update the `.length` attribute on this container
_updateLength: function(){ _updateLength: function(){
this.length = _.size(this._views); this.length = _.size(this._views);
},
// set up an initial list of views
_addInitialViews: function(views){
if (!views){ return; }
var view, i,
length = views.length;
for (i=0; i<length; i++){
view = views[i];
this.add(view);
}
} }
}); });
@ -1420,6 +1379,12 @@ Marionette.View = Backbone.View.extend({
// and calling several methods on extended views, such as `onRender`. // and calling several methods on extended views, such as `onRender`.
Marionette.ItemView = Marionette.View.extend({ Marionette.ItemView = Marionette.View.extend({
// Setting up the inheritance chain which allows changes to
// Marionette.View.prototype.constructor which allows overriding
constructor: function(){
Marionette.View.prototype.constructor.apply(this, slice(arguments));
},
// Serialize the model or collection for the view. If a model is // Serialize the model or collection for the view. If a model is
// found, `.toJSON()` is called. If a collection is found, `.toJSON()` // found, `.toJSON()` is called. If a collection is found, `.toJSON()`
// is also called, but is used to populate an `items` array in the // is also called, but is used to populate an `items` array in the
@ -1750,6 +1715,12 @@ Marionette.CollectionView = Marionette.View.extend({
// an item view as `modelView`, for the top leaf // an item view as `modelView`, for the top leaf
Marionette.CompositeView = Marionette.CollectionView.extend({ Marionette.CompositeView = Marionette.CollectionView.extend({
// Setting up the inheritance chain which allows changes to
// Marionette.CollectionView.prototype.constructor which allows overriding
constructor: function(){
Marionette.CollectionView.prototype.constructor.apply(this, slice(arguments));
},
// Configured the initial events that the composite view // Configured the initial events that the composite view
// binds to. Override this method to prevent the initial // binds to. Override this method to prevent the initial
// events, or to add your own initial events. // events, or to add your own initial events.
@ -1893,7 +1864,7 @@ Marionette.Layout = Marionette.ItemView.extend({
this._firstRender = true; this._firstRender = true;
this._initializeRegions(options); this._initializeRegions(options);
Marionette.ItemView.call(this, options); Marionette.ItemView.prototype.constructor.call(this, options);
}, },
// Layout's render will use the existing region objects the // Layout's render will use the existing region objects the

View File

@ -1,5 +1,5 @@
/* /*
backbone-pageable 1.3.1 backbone-pageable 1.3.2
http://github.com/wyuenho/backbone-pageable http://github.com/wyuenho/backbone-pageable
Copyright (c) 2013 Jimmy Yuen Ho Wong Copyright (c) 2013 Jimmy Yuen Ho Wong
@ -19,7 +19,7 @@
// Browser // Browser
else if (typeof _ !== "undefined" && typeof Backbone !== "undefined") { else if (typeof _ !== "undefined" && typeof Backbone !== "undefined") {
var oldPageableCollection = Backbone.PageableCollection; var oldPageableCollection = Backbone.PageableCollection;
var PageableCollection = Backbone.PageableCollection = factory(_, Backbone); var PageableCollection = factory(_, Backbone);
/** /**
__BROWSER ONLY__ __BROWSER ONLY__
@ -102,7 +102,7 @@
@class Backbone.PageableCollection @class Backbone.PageableCollection
@extends Backbone.Collection @extends Backbone.Collection
*/ */
var PageableCollection = Backbone.Collection.extend({ var PageableCollection = Backbone.PageableCollection = Backbone.Collection.extend({
/** /**
The container object to store all pagination states. The container object to store all pagination states.
@ -615,12 +615,14 @@
var state = this.state; var state = this.state;
var totalPages = ceil(state.totalRecords / pageSize); var totalPages = ceil(state.totalRecords / pageSize);
var currentPage = max(state.firstPage, var currentPage = totalPages ?
max(state.firstPage,
floor(totalPages * floor(totalPages *
(state.firstPage ? (state.firstPage ?
state.currentPage : state.currentPage :
state.currentPage + 1) / state.currentPage + 1) /
state.totalPages)); state.totalPages)) :
state.firstPage;
state = this.state = this._checkState(_extend({}, state, { state = this.state = this._checkState(_extend({}, state, {
pageSize: pageSize, pageSize: pageSize,
@ -803,8 +805,8 @@
can be forced in client mode before resetting the current page. Under can be forced in client mode before resetting the current page. Under
infinite mode, if the index is less than the current page, a reset is infinite mode, if the index is less than the current page, a reset is
done as in client mode. If the index is greater than the current page done as in client mode. If the index is greater than the current page
number, a fetch is made with the results **appended** to number, a fetch is made with the results **appended** to #fullCollection.
#fullCollection. The current page will then be reset after fetching. The current page will then be reset after fetching.
@param {number|string} index The page index to go to, or the page name to @param {number|string} index The page index to go to, or the page name to
look up from #links in infinite mode. look up from #links in infinite mode.
@ -926,9 +928,9 @@
is assumed to be the `first` URL. If `prev` or `next` is missing, it is is assumed to be the `first` URL. If `prev` or `next` is missing, it is
assumed to be `null`. An empty object hash must be returned if there are assumed to be `null`. An empty object hash must be returned if there are
no links found. If either the response or the header contains information no links found. If either the response or the header contains information
pertaining to the total number of records on the server, pertaining to the total number of records on the server, #state.totalRecords
#state.totalRecords must be set to that number. The default must be set to that number. The default implementation uses the `last`
implementation uses the `last` link from the header to calculate it. link from the header to calculate it.
@param {*} resp The deserialized response body. @param {*} resp The deserialized response body.
@param {Object} [options] @param {Object} [options]
@ -1175,11 +1177,8 @@
if (v != null) data[kvp[0]] = v; if (v != null) data[kvp[0]] = v;
} }
var fullCol = this.fullCollection, links = this.links;
if (mode != "server") { if (mode != "server") {
var self = this, fullCol = this.fullCollection;
var self = this;
var success = options.success; var success = options.success;
options.success = function (col, resp, opts) { options.success = function (col, resp, opts) {
@ -1189,28 +1188,7 @@
else opts.silent = options.silent; else opts.silent = options.silent;
var models = col.models; var models = col.models;
var currentPage = state.currentPage;
if (mode == "client") fullCol.reset(models, opts); if (mode == "client") fullCol.reset(models, opts);
else if (links[currentPage]) { // refetching a page
var pageSize = state.pageSize;
var pageStart = (state.firstPage === 0 ?
currentPage :
currentPage - 1) * pageSize;
var fullModels = fullCol.models;
var head = fullModels.slice(0, pageStart);
var tail = fullModels.slice(pageStart + pageSize);
fullModels = head.concat(models).concat(tail);
var updateFunc = fullCol.set || fullCol.update;
// Must silent update and trigger reset later because the event
// sychronization handler is temporarily taken out during either add
// or remove, which Collection#set does, so the pageable collection
// will be out of sync if not silenced because adding will trigger
// the sychonization event handler
updateFunc.call(fullCol, fullModels, _extend({silent: true}, opts));
fullCol.trigger("reset", fullCol, opts);
}
// fetching new page
else fullCol.add(models, _extend({at: fullCol.length}, opts)); else fullCol.add(models, _extend({at: fullCol.length}, opts));
if (success) success(col, resp, opts); if (success) success(col, resp, opts);