UNPKG

landers.base

Version:

landers.base

154 lines (152 loc) 5.66 kB
; (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);