landers.base
Version:
landers.base
154 lines (152 loc) • 5.66 kB
JavaScript
; (function (window, $, Landers) {
Landers = Landers || {};
Landers.helpers = {
loadmod_call:function(mod, call){
if (!call) return;
if (Landers.utils.is_string(call)) mod[call].call(mod);
else if (Landers.utils.is_fun(call)) call.call(mod);
},
parse_args:function(args, maps){
var ret = {}, enums; maps = maps || {};
//找出enum项
for(var k in maps) {
var arr = k.match(/^__ENUM:(.*)$/);
if (arr) {
enums = enums || {};
enums[k] = eval('(' + arr[1] + ')');
}
}
for (var i=0; i<args.length; i++) {
var type = Landers.utils.type(args[i]);
if (type == 'jQuery') type = 'jobject';
if (enums && (type == 'string' || type == 'number')) {
var tmp = false;
for (var j in enums) {
if (Landers.utils.arr.is_in(args[i], enums[j])) {
ret[maps[j]] = args[i];
delete enums[j];
tmp = true;
}
}
if (tmp) continue;
}
if (maps[type]) {
ret[maps[type]] = args[i];
} else {
ret[type] = args[i];
}
};
return ret;
},
parseArgs: function(args, maps){
return this.parse_args(args, maps);
},
debug : function(xvar){
if (Landers.env.config.debug) {
console.log(xvar);
alert(xvar);
}
},
throttle : function(seconds){
var last;
this.getTime = function(){
return (new Date()).getTime();
};
this.check = function(){
if ( this.getTime() - last >= seconds * 1000 || !last) {
last = this.getTime();
return true;
} else {
return false;
}
};
},
eventstop:function(e){
if (e && e.stopPropagation) {
e.stopPropagation();
} else if (window.event) {
window.event.cancelBubble = true;
}
},
reload:function(){
setTimeout(function(){
document.location.reload();
}, 200);
},
noimg:function(oimg, is_bg, src){
var path = Landers.env.path.ui.img;
var def_bg = path + 'noimg.jpg', $o = $(oimg);
oimg.src = src || $o.attr('nosrc') || path + 'spacer.gif';
if (is_bg) $o.css('background', 'url('+def_bg+') center'); oimg.onload = null;
},
noavatar:function(oimg){
oimg.src = Landers.env.path.ui.img + 'noavatar_middle.gif';
},
gotop:function(callback){
var $o = $('html body');
$o.animate({
scrollTop: 0
}, {
easing: 'easeOutExpo',
duration: $o.scrollTop() * 0.5 ,
complete: callback
});
},
disable : function($o) {
return $o.prop('disabled', true).addClass('disabled');
},
enable : function($o) {
return $o.prop('disabled', false).removeClass('disabled');
},
countdown : {
_countdown: function(seconds, callback_run, callback_stop){
var that = this;
var is_stop = false;
this.start = this.run = function(){
if(seconds >= 0 && !is_stop){
setTimeout(function(){
callback_run(seconds--);
that.run(seconds, callback_run, callback_stop);
}, 1000);
} else {
callback_stop();
}
return this;
};
this.stop = function(){
is_stop = true;
callback_stop();
return this;
};
},
make : function(seconds, callback_run, callback_stop){
return new this._countdown(seconds, callback_run, callback_stop);
},
show: function($elem, seconds, callback_run, callback_stop){
$elem.prop('disabled', true).addClass('disabled');
var content = $elem.attr('data-countdown-content');
var backup = $elem.html();
return this.make(seconds, function(seconds){
$elem.html(content.replace('%s', seconds));
}, function(){
$elem.html(backup)
.prop('disabled', false)
.removeClass('disabled');
callback_stop && callback_stop();
}).run();
},
sms : function($elem, seconds, callback_stop){
$elem.attr('data-countdown-content', '%s 秒后可再次发送');
this.show($elem, seconds, null, callback_stop);
}
},
parseErrors: function(errors){
var results = [];
for (var key in errors) {
results.push(errors[key][0]);
}
return results;
}
};
$.extend(Landers, Landers.helpers);
})(this, jQuery, Landers);