Skip to content

Instantly share code, notes, and snippets.

@swestner
Created February 6, 2015 18:26
Show Gist options
  • Save swestner/1a0eea718a71f07b1d77 to your computer and use it in GitHub Desktop.
Save swestner/1a0eea718a71f07b1d77 to your computer and use it in GitHub Desktop.
/**
* Created by steve.westner on 2015-02-06.
*/
function pushDownDecorator(){
return {
ok: function (target, $pushDownInstance) {
target.ok = $pushDownInstance.close;
},
cancel: function (target, $pushDownInstance) {
target.close = $pushDownInstance.close;
},
all : function (target, $pushDownInstance){
this.ok(target);
this.close(target);
}
}
}
function arrayDecorator(){
return {
page : function(array, size, current){
array.page.size = size || 10;
array.page.current = current || 1;
array.page.count = function(){
return Math.ceil(array.length / array.page.size)
}
array.page.valid = function(page){
if(page > array.page.count()){return false;}
if(page < 1){return false;}
return true;
}
array.page.get = function(page){
if(!array.page.valid(page)){
throw new Error(page + " is not a valid page. Page should be a number ranging between 1 and " + array.page.count())
}
array.page.current = page;
return _.chain(array)
.rest(array.page.size * page)
.first(array.page.size)
.value();
}
},
toggle : function(array, property){
var pname = property || "activated";
array.toggle = function(item){
return _.chain(array)
.map(function(d){
d[pname] = false;
return d;
})
.find(function(d){return d == item;})
.value()
.activated = true;
}
}
}
function rudDecorator(){
return {
save: {
regular : function (target, mapFn, deferedSaveFn, preFn, postFn)
{
target.save = function (item) {
var pre = preFn || function(){};
var post = postFn || function(){};
if (target.saving) {
return;
}
target.saving = true;
var mapped = mapFn(item);
if(!mapped){return;}
pre(mapped);
return deferedSaveFn(item).then(function(d){
post(d)
});
}
},
animated : function(target, mapFn, existingKeys){
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment