landers.dialog
Version:
landers.dialog
290 lines (276 loc) • 9.34 kB
JavaScript
artDialog.fn.shake = function (){
var style = this.DOM.wrap[0].style,
p = [4, 8, 4, 0, -4, -8, -4, 0],
fx = function () {
style.marginLeft = p.shift() + 'px';
if (p.length <= 0) {
style.marginLeft = 0;
clearInterval(timerId);
};
};
p = p.concat(p.concat(p));
timerId = setInterval(fx, 13);
return this;
};
artDialog.fn.getLockMask = function(){
return $(this._lockMaskWrap);
}
artDialog.fn.getContent = function(){
return $(this.content());
};
artDialog.fn.find = function(selector){
return $(this.content()).find(selector);
};
artDialog.fn.getOuter = function(){
return this.getWraper().children();
};
artDialog.fn.getWraper = function(){
return this.DOM.wrap;
};
artDialog.fn.getStatus = function(){
var dlg = this, $dlg = dlg.getContent();
var data_key = 'dialog_status';
return $dlg.data(data_key);
}
artDialog.fn.status = function(status){
var dlg = this, $dlg = dlg.getContent();
var data_key = 'dialog_status';
var current = $dlg.data(data_key);
if (status) status = status.toLowerCase();
var statuses = {
free : ['busy', 'closed', undefined],
busy : ['free', 'closed'],
closing : ['free'],
closed : ['closing']
};
var froms = statuses[status];
if (!froms) return current;
if ($.inArray(current, froms) < 0 && current !== undefined && current != status) {
alert('artDialog.fn.status提示:【' + dlg.config.title + '】“' + current + '” 不能转为 “' + status + '”');
return dlg;
};
$dlg.data(data_key, status);
// if (status == 'free') dlg.btn().enable(); else dlg.btn().disable();
return dlg;
};
artDialog.fn.loading = function(params, callback){
if (typeof(params) == 'function') {
callback = params;
params = {};
};
if (params) {
if (typeof(params) == 'string') {
params = {text:params, size:'long'};
};
var dlg = this.status('busy');
Landers.response.loading({
wrap:dlg.getContent(),
text:params.text,
size:params.size,
delay:params.delay
}, function(){
callback && callback(function(rspn, newsize, delay, callback){
dlg.done(rspn, newsize || 'long', delay || 2000, callback);
});
});
};
return dlg;
};
artDialog.fn.done = function(){
var args = [];
for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);
var dlg = this.status('free');
var $dlg = dlg.getContent();
args.push($dlg);
setTimeout(function(){
Landers.response.show(args);
if (args.length == 2 && typeof args[0] == 'object' && args[0].status_code == 403) {
dlg.close();
}
}, 200);
return dlg;
};
artDialog.fn.error = function(msg){
this.done({
success : false,
message : msg
});
};
artDialog.fn.success = function(msg){
this.done({
success : true,
message : msg
});
}
// artDialog.fn.response = function(aret, delay){
// var dlg = this, $dlg = dlg.getContent();
// Landers.response.show(aret, $dlg, delay);
// return dlg;
// }
artDialog.fn.minimize = function(){
var dlg = this, $dlg = dlg.getContent();
var $button = $dlg.closest('tr').next();
var $close = $dlg.closest('tr').prev().find('.aui_close');
var text1 = '<span class="mt-2 inblock hand">_</span>';
var text2 = '<span class="ml-1 mt-1 inblock hand"';
text2 += ' style="font-family:webdings">c</span>';
var $min = $close.clone().html(text1).removeClass('aui_close').addClass('aui_min')
.click(function(){
var $me = $(this); if ($dlg.css('display')=='none'){
$dlg.css($dlg.data('cssdata')).slideDown(200);
$me.html(text1); if ($button.text()) $button.show();
} else {
var cssdata = {}; cssdata.height = $dlg.height();
$dlg.parent().css('height','auto');
$dlg.data('cssdata',cssdata).slideUp(200);
$me.html(text2); if ($button.text()) $button.hide();
};
}); $close.before($min);
};
artDialog.fn.appendBottom = function($_html){
var dlg = this, $dlg = dlg.getContent();
var $btn_wrap = this.button.wrap($dlg);
var $cont = $btn_wrap.parent();
var $html = $($_html);
$cont.css({position:'relative'});
$html.css({position:'absolute', 'line-height':'39px', top:'0px'});
$cont.append($html);
};
artDialog.fn.statusBar = function() {
var dlg = this, $dlg = dlg.getOuter();
$aui_footer = $dlg.find('.aui_footer');
var $aui_status = $aui_footer.children('.aui_status');
if ( $aui_status.length ) return $aui_status;
$aui_status = $('<div class="aui_status"></div>');
$aui_footer.css({position:'relative'});
$aui_status.css({position:'absolute', 'line-height':'30px', top:'0px', left:'0px', padding:'8px'});
return $aui_status.appendTo($aui_footer);
}
artDialog.fn.bottomBar = function() {
var dlg = this, $dlg = dlg.getOuter();
$aui_footer = $dlg.find('.aui_footer');
var $aui_bottom = $aui_footer.children('.aui_bottom');
if ( $aui_bottom.length ) return $aui_bottom;
$aui_bottom = $('<div class="aui_bottom"></div>');
$aui_footer.css({position:'relative'});
return $aui_bottom.appendTo($aui_footer);
}
artDialog.fn.btn = function(){
var dlg = this, $dlg = dlg.getContent();
var $tr = $dlg.parent().parent().next();
return {
row:function(){
return $tr;
},
get:function(i_text){
var $btns = $tr.find('button');
if (i_text===undefined) return $btns;
var $btn = $(); if (typeof i_text == 'string') {
$btns.each(function(){
if ($(this).text()==i_text) {
$btn = $(this); return false;
}
}); return $btn;
} else if ($.isNumeric(i_text)) {
return $btns.eq(i_text);
} else return $btns;
},
wrap:function(){
var $btn = this.get($_dlg, 0);
if (!$btn.length) return $();
return $btn.parent();
},
show:function(i_text){
return this.get(i_text).show();
},
hide:function(i_text){
return this.get(i_text).hide();
},
fadeIn:function(i_text){
return this.get(i_text).fadeIn(400);
},
fadeOut:function(i_text){
return this.get(i_text).fadeOut(400);
},
disable:function(i_text){
return this.get(i_text).prop('disabled',true);
},
enable:function(i_text){
return this.get(i_text).prop('disabled',false);
},
remove:function(i_text){
this.get(i_text).remove();
}
}
};
artDialog.fn.transition = function(effect){
var dlg = this;
if (effect == 'random') {
effect = Landers.animate.random();
}
return {
show:function(){
if (effect && dlg.config.show !== false) {
var $in = dlg.getWraper().hide();
Landers.animate.show($in, effect)
};
},
hide:function() {
var $out = dlg.show().getWraper();
dlg.status('closing');
Landers.animate.hide($out, effect, function(){
$('.art-dialog-lockmask')
.removeClass('art_dialog-lockmask')
.removeClass('art-dialog-lockmask');
dlg.close();
})
}
}
};
artDialog.fn.noclose = function(){
var dlg = this, $dlg = dlg.getContent();
$dlg.closest('tr').prev().find('.aui_close').remove();
};
artDialog.fn.scroll = function(){
var dlg = this, $dlg = dlg.getContent();
$dlg.css({'overflow-x': 'hidden', 'postion':'static', 'height':'inherit'}); //'overflow':'scroll',
var init_scroll = function(){
Landers.css.add([
'.art-dialog .mCSB_inside>.mCSB_container{margin-right:5px;}',
'.art-dialog .mCSB_scrollTools {width:5px;}'
]);
$dlg.mCustomScrollbar({
autoHideScrollbar:true,
scrollInertia:200,
theme:'dark',
preventDefault:true,
mouseWheel:true,
callbacks:{
onScrollStart:function(){},
onScroll:function(){},
onTotalScroll:function(){},
onTotalScrollBack:function(){},
onTotalScrollOffset:0,
whileScrolling:false,
whileScrollingInterval:30
}
});
$dlg.append($dlg.find('.' + Landers.response.classname));
}
if ( $.fn.mCustomScrollbar ) {
init_scroll();
}
};
artDialog.fn._click = function (name) {
var that = this,
fn = that._listeners[name] && that._listeners[name].callback;
return typeof fn !== 'function' || fn.call(that, window, that._listeners[name].elem) !== false ?
that.close() : that;
};
artDialog.fn.destory = function(){
var that = this;
that.unlock();
that.getContent().remove();
that.getOuter().remove();
return that;
};