Skip to content

Instantly share code, notes, and snippets.

// @browsertest-depend library.js.rm.models.Model.js
// @browsertest-depend library.js.view.View.js
// @browsertest-depend library.js.view.mixin.Skeleton.js
// @browsertest-depend test.js.library.view.GraphPersonDirectoryFixture.js
// @browsertest-depend test.js.library.view.ViewDemo.html
// @browsertest-depend test.js.library.view.ViewDemo.css
module('View.Layout');
function defineViews() {
@diurnalist
diurnalist / gist:2364690
Created April 12, 2012 04:59
Lightweight Relation Modeling with Backbone (1)
var album_json = {
name: "My Album",
releaseYear: "2010",
trackList: [
{
name: "My First Track",
order: 0,
duration: 3600,
streamUrl: "http://example.com/stream.mp3"}
]
@diurnalist
diurnalist / gist:2364696
Created April 12, 2012 05:03
Lightweight Relation Modeling with Backbone (2)
var Track = Backbone.Model.extend(),
TrackList = Backbone.Collection.extend({
model: Track
}),
Album = Backbone.Model.extend();​
@diurnalist
diurnalist / gist:2364700
Created April 12, 2012 05:04
Lightweight Relation Modeling with Backbone (3)
var model = new Album(album_json);
model.set({
trackList: [{
name: "A different track",
order: 0,
duration: 1800,
streamUrl: "http://example.com/stream2.mp3"}]
});​
@diurnalist
diurnalist / gist:2364701
Created April 12, 2012 05:05
Lightweight Relation Modeling with Backbone (4)
{
"album_id": "1",
"name": "My Track",
"duration": 3600,
"streamUrl": "http://example.com/stream.mp3"
}​
@diurnalist
diurnalist / gist:2364703
Created April 12, 2012 05:05
Lightweight Relation Modeling with Backbone (5)
function delegateModelEvents(from, to, eventKey) {
from.bind('all', function(eventName) {
var args = _.toArray(arguments);
if (eventKey) {
args[0] = eventKey + ':' + args[0];
}
to.trigger.apply(to, args);
});
}
@diurnalist
diurnalist / gist:2364707
Created April 12, 2012 05:06
Lightweight Relation Modeling with Backbone (6)
var Track = Backbone.Model.extend(),
TrackList = Backbone.Collection.extend({
model: Track
}),
Album = Backbone.RelationalModel.extend({
relations: {
trackList: TrackList
}
});​
@diurnalist
diurnalist / gist:2364711
Created April 12, 2012 05:07
Lightweight Relation Modeling with Backbone (7)
album.bind('trackList:change:name', function(track) { ... });
@diurnalist
diurnalist / gist:2364744
Created April 12, 2012 05:14
Simple JS Multiton/Factory
var Multiton = (function() {
var _instances = {},
_products, _default;
function create_instance(name) {
var prefix = 'Product_',
product_name;
product_name = prefix + name.slice(0, 1).toUpperCase() + name.substring(1);
if (typeof _products[product_name] === 'function') {
@diurnalist
diurnalist / gzip-css-bench.js
Last active August 29, 2015 14:14
Effects of GZip Compression on Randomly-generated CSS Sheets
#!/env/node
/**
* Measure the effect of "bloat" (repeated property chunks in a stylesheet, as might
* be introduced by a preprocessor and @mixin directives) in a randomly generated
* style sheet. Uses a small pool of property names and possible values for the purposes
* of the benchmark. Can configure the "bloat" factor by tweaking DUPE_FACTOR. That
* factor determines what % of the rules generated will be treated as repeatable,
* mixin-like rules.
*