Skip to content

Instantly share code, notes, and snippets.

@aaronpowell
Created April 10, 2013 06:10
Show Gist options
  • Select an option

  • Save aaronpowell/5352192 to your computer and use it in GitHub Desktop.

Select an option

Save aaronpowell/5352192 to your computer and use it in GitHub Desktop.
glimpse.render.engine = (function($, pubsub) {
var providers = {},
addition = function (scope, data, metadata, insertType, filterType) {
var html = $('<div>' + build(data, metadata) + '</div>').find('.glimpse-row-holder:first > .glimpse-row'),
rowHolder = scope.find('.glimpse-row-holder:first'),
scopeTarget = rowHolder.find('> .glimpse-row:' + filterType);
if (scopeTarget.length == 0) {
scopeTarget = rowHolder;
insertType = 'appendTo';
}
var elements = $(html)[insertType](scopeTarget);
pubsub.publish('trigger.panel.render.style', { scope: elements });
},
retrieve = function(name) {
return providers[name];
},
register = function(name, engine) {
providers[name] = engine;
},
build = function(data, metadata) {
return providers.master.build(data, 0, true, metadata, 1);
},
insert = function(scope, data, metadata) {
scope.html(build(data, metadata));
pubsub.publish('trigger.panel.render.style', { scope: scope });
}, ret = {
_providers: providers,
retrieve: retrieve,
register: register,
build: build,
insert: insert
};
$.each([{ 'append': ['insertAfter', 'last' ]}, { 'prepend': ['insertBefore', 'first' }], function (i, x) {
ret[x] = function (scope, data, metadata) {
addition(scope, data, metadata, x[0], x[1]);
};
});
return ret;
})(jQueryGlimpse, glimpse.pubsub);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment