| 1 |
- var MTooltips=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"",axis:"y",position:{x:"auto",y:"auto"},priorityOfAuto:{x:["center","right","left"],y:["middle","bottom","top"]},isFitToContainer:true,event:"mouseenter",hiddenDelay:200,displayDelay:0,hasArrow:true,isAutoShow:true,isAutoHide:true,hasCloseAction:false,overflow:"hidden"},initialize:function(t,i,e,s,o,h){if(o){this.setOptions(o)}this.container=t;this.target=i;this.targetCoordinates=h;this.app=e;if(e)this.lp=e.lp;this.data=s;this.path="/x_component_Template/$MTooltips/";if(this.target){this.setTargetEvents()}this.fireEvent("postInitialize",[this])},setTargetEvents:function(){if(this.options.event=="click"){if(this.options.isAutoShow){this.target.addEvents({click:function(t){this.load();t.stopPropagation()}.bind(this)})}}else{if(this.options.isAutoHide||this.options.isAutoShow){this.target.addEvents({mouseenter:function(){if(this.timer_hide){clearTimeout(this.timer_hide)}}.bind(this)})}if(this.options.isAutoShow){this.target.addEvents({mouseenter:function(){if(this.status!="display"){this.timer_show=setTimeout(this.load.bind(this),this.options.displayDelay)}}.bind(this)})}if(this.options.isAutoHide||this.options.isAutoShow){this.target.addEvents({mouseleave:function(){if(this.timer_show){clearTimeout(this.timer_show)}}.bind(this)})}if(this.options.isAutoHide){this.target.addEvents({mouseleave:function(){if(this.status=="display"){this.timer_hide=setTimeout(this.hide.bind(this),this.options.hiddenDelay)}}.bind(this)})}}},load:function(){this.fireEvent("queryLoad",[this]);if(this.isEnable()){if(this.node){this.show()}else{this.create()}}this.fireEvent("postLoad",[this])},hide:function(){if(this.node){this.node.setStyle("display","none");this.status="hidden";if(this.maskNode){this.maskNode.setStyle("display","none")}this.fireEvent("hide",[this])}},show:function(){this.status="display";if(this.maskNode){this.maskNode.setStyle("display","")}this.node.setStyle("display","");this.setCoondinates();this.fireEvent("show",[this])},create:function(){this.status="display";this.fireEvent("queryCreate",[this]);this.loadStyle();this.node=new Element("div.tooltipNode",{styles:this.nodeStyles}).inject(this.container);if(this.contentNode){this.contentNode.inject(this.node)}else{this.contentNode=new Element("div",{styles:this.contentStyles}).inject(this.node);this.contentNode.set("html",this._getHtml())}this._customNode(this.node,this.contentNode);if(this.options.hasArrow){this.arrowNode=new Element("div.arrowNode",{styles:this.arrowStyles}).inject(this.node)}if(this.options.hasCloseAction){this.closeActionNode=new Element("div",{styles:this.closeActionStyles,events:{click:function(){this.hide()}.bind(this)}}).inject(this.node)}this._loadCustom(function(){this.setCoondinates()}.bind(this));if(this.options.event=="click"){if(this.options.isAutoHide){this.maskNode=new Element("div.maskNode",{styles:this.maskStyles,events:{mouseover:function(t){t.stopPropagation()},mouseout:function(t){t.stopPropagation()},click:function(t){this.hide();t.stopPropagation()}.bind(this)}}).inject(this.container);if(this.app){this.hideFun_resize=this.hide.bind(this);this.app.addEvent("resize",this.hideFun_resize)}}}else{if(this.options.isAutoHide||this.options.isAutoShow){this.node.addEvents({mouseenter:function(){if(this.timer_hide)clearTimeout(this.timer_hide)}.bind(this)})}if(this.options.isAutoHide){this.node.addEvents({mouseleave:function(){this.timer_hide=setTimeout(this.hide.bind(this),this.options.hiddenDelay)}.bind(this)})}}this.fireEvent("postCreate",[this])},loadStyle:function(){if(this.options.style){this.cssPath=this.path+this.options.style+"/css.wcss";this._loadCss()}this.nodeStyles={"font-size":"12px",position:"absolute","max-width":"500px","min-width":"260px","z-index":"11","background-color":"#fff",padding:"10px","border-radius":"8px","box-shadow":"0 0 18px 0 #999999","-webkit-user-select":"text","-moz-user-select":"text"};if(this.options.nodeStyles){this.nodeStyles=Object.merge(this.nodeStyles,this.options.nodeStyles)}else if(this.css&&this.css.nodeStyles){this.nodeStyles=this.css.nodeStyles}if(this.css&&this.css.contentStyles){this.contentStyles=this.css.contentStyles}else{this.contentStyles={width:"100%",height:"100%"}}if(this.options.hasArrow){if(this.css&&this.css.arrowStyles){this.arrowStyles=this.css.arrowStyles}else{this.arrowStyles={width:this.options.axis=="x"?"9px":"17px",height:this.options.axis=="x"?"17px":"9px",position:"absolute",background:"no-repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAlCAYAAACgc9J8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP9JREFUeNq01oENhCAMBdCWuIgTuP8WOoGj9GhSDaeUfjiuCSEm+iKFVllESGNdVzrPk55xHIfewHnItm1MrVDMG/u+i0aeyWZp3R9CJRaBIWRB5YUHItAL80AEqmI1EIFcrAQ1rwjUxEoQgULsAue+2ayc/W83p5+z6RXggOO1WQGhrsFXP/Oip58tAaQTZ4QMbEbyEB2GCKEBdtpmru4NsC4aHg8PLJ/3lim2xDv02jYDz1kNQsGEQgiYeqAQBPuZQF1jFKqBYTn1RLK1D4+v3E3NGfgNkJlfdKi0XrUZgc1OWyt0Dwz/z37tGhA20s+WR4t+1iBbzTJyaD8CDAB7WgNSzh/AnwAAAABJRU5ErkJggg==)"}}}if(this.options.event=="click"&&this.options.isAutoHide){if(this.css&&this.css.maskStyles){this.maskStyles=this.css.maskStyles}else{this.maskStyles={width:"100%",height:"100%",opacity:0,position:"absolute","background-color":"#fff",top:"0px",left:"0px"}}}if(this.options.hasCloseAction){if(this.css&&this.css.closeActionStyles){this.closeActionStyles=this.css.closeActionStyles}else{this.closeActionStyles={width:"24px",height:"24px",position:"absolute",top:"0px",right:"0px",background:"url(/x_component_Template/$MTooltips/default/icon/off_gray.png) no-repeat center center",cursor:"pointer"}}}},isEnable:function(){return!this.disable},setCoondinates:function(){if(this.options.axis=="x"){this.setCoondinates_x()}else{this.setCoondinates_y()}},setCoondinates_x:function(){var t=this.target?this.target.getCoordinates(this.container):this.targetCoordinates;var i=this.node;if(this.resetWidth){i.setStyles({overflow:"visible",width:"auto"});if(this.arrowNode)this.arrowNode.setStyle("display","");this.resetWidth=false}var e=this.container.getScroll();var s=this.container.getSize();var o=i.getSize();var h;var n,r;var a=this.options.hasArrow?10:0;if(this.options.position.x=="left"){h=t.left-o.x-a;n="right"}else if(this.options.position.x=="right"){h=t.right+a;n="left"}else{var l=this.options.priorityOfAuto;if(l&&l.x){for(var d=0;d<l.x.length;d++){if(l.x[d]=="left"){if(t.left-e.x>s.x-t.right){h=t.left-o.x-a;n="right";break}}if(l.x[d]=="right"){if(s.x+e.x-t.right>o.x){h=t.right+a;n="left";break}}}}if(!h){if(t.left-e.x>s.x-t.right){h=t.left-o.x-a;n="right"}else{h=t.right+a;n="left"}}}var f;if(this.options.position.y=="middle"){f=t.top+t.height/2-o.y/2;r="middle"}else if(this.options.position.y=="top"){f=t.bottom-o.y;r="bottom"}else if(this.options.position.y=="bottom"){f=t.top;r="top"}else{var l=this.options.priorityOfAuto;if(l&&l.y){for(var d=0;d<l.y.length;d++){if(l.y[d]=="middle"){if(t.top+t.height/2-o.y/2>e.y&&t.bottom-t.height/2+o.y/2-e.y<s.y){f=t.top+t.height/2-o.y/2;r="middle";break}}if(l.y[d]=="top"){if(t.top-e.y>s.y-t.bottom){f=t.bottom-o.y;r="bottom";break}}if(l.y[d]=="bottom"){if(s.y+e.y-t.bottom>o.y){f=t.top;r="top";break}}}}if(!f){if(t.top+t.height/2-o.y/2>e.y&&t.bottom-t.height/2+o.y/2-e.y<s.y){f=t.top+t.height/2-o.y/2;r="middle"}else if(t.top-e.y>s.y-t.bottom){f=t.bottom-o.y;r="bottom"}else{f=t.top;r="top"}}}var p=0;if(this.options.isFitToContainer){if(f<e.y){p=e.y-f;f=e.y}else if(f+o.y>s.y+e.y){p=s.y+e.y-f-o.y;f=s.y+e.y-o.y}}if(this.options.overflow=="scroll"){if(h<0){i.setStyles({overflow:"auto",width:o.x+h-a});this.resetWidth=true;h=0}else if(h+o.x>s.x+e.x){i.setStyles({overflow:"auto",width:Math.abs(s.x+e.x-h+a)});h=h-a;this.resetWidth=true}}if(this.resetWidth){if(this.arrowNode)this.arrowNode.setStyle("display","none")}else if(this.options.hasArrow&&this.arrowNode){if(n=="left"){this.arrowNode.setStyles({left:"-8px",right:"auto","background-position":"0px 0px"})}else{this.arrowNode.setStyles({left:"auto",right:"-8px","background-position":"-11px 0px"})}var y=this.arrowNode.getSize().y/2;var c=Math.min(t.height,o.y)/2-y;var u=0;var x=0;if(r=="middle"){this.arrowNode.setStyles({top:o.y/2-y-p+"px",bottom:"auto"})}else if(r=="top"){x=this.node.getStyle("border-top-"+n+"-radius");x=x?parseInt(x):0;if(x>c){u=x-c}this.arrowNode.setStyles({top:c+u-p+"px",bottom:"auto"})}else{x=this.node.getStyle("border-bottom-"+n+"-radius");x=x?parseInt(x):0;if(x>c){u=x-c}this.arrowNode.setStyles({top:"auto",bottom:c+u+p+"px"})}var g=f;if(u){if(r=="top"){g=g-u}else if(r=="bottom"){g=g+u}}}i.setStyles({left:h,top:g||f})},setCoondinates_y:function(){var t=this.target?this.target.getCoordinates(this.container):this.targetCoordinates;var i=this.node;if(this.resetHeight){i.setStyles({overflow:"visible",height:"auto"});if(this.arrowNode)this.arrowNode.setStyle("display","");this.resetHeight=false}var e=this.container.getScroll();var s=this.container.getSize();var o=i.getSize();var h;var n,r;var a=this.options.hasArrow?10:0;if(this.options.position.y=="top"){h=t.top-o.y-a;r="bottom"}else if(this.options.position.y=="bottom"){h=t.bottom+a;r="top"}else{var l=this.options.priorityOfAuto;if(l&&l.y){for(var d=0;d<l.y.length;d++){if(l.y[d]=="top"){if(t.top-e.y>s.y-t.bottom){h=t.top-o.y-a;r="bottom";break}}if(l.y[d]=="bottom"){if(s.y+e.y-t.bottom>o.y){h=t.bottom+a;r="top";break}}}}if(!h){if(t.top-e.y>s.y-t.bottom){h=t.top-o.y-a;r="bottom"}else{h=t.bottom+a;r="top"}}}var f;if(this.options.position.x=="center"){f=t.left+t.width/2-o.x/2;n="center"}else if(this.options.position.x=="left"){f=t.right-o.x;n="right"}else if(this.options.position.x=="right"){f=t.left;n="left"}else{var l=this.options.priorityOfAuto;if(l&&l.x){for(var d=0;d<l.x.length;d++){if(l.x[d]=="center"){if(t.left+t.width/2-o.x/2>e.x&&t.right-t.width/2+o.x/2-e.x<s.x){f=t.left+t.width/2-o.x/2;n="center";break}}if(l.x[d]=="left"){if(t.left-e.x>s.x-t.right){f=t.right-o.x;n="right";break}}if(l.x[d]=="right"){if(s.x+e.x-t.right>o.x){f=t.left;n="left";break}}}}if(!f){if(t.left+t.width/2-o.x/2>e.x&&t.right-t.width/2+o.x/2-e.x<s.x){f=t.left+t.width/2-o.x/2;n="center"}else if(t.left-e.x>s.x-t.right){f=t.right-o.x;n="right"}else{f=t.left;n="left"}}}var p=0;if(this.options.isFitToContainer){if(f<e.x){p=e.x-f;f=e.x}else if(f+o.x>s.x+e.x){p=s.x+e.x-f-o.x;f=s.x+e.x-o.x}}if(this.options.overflow=="scroll"){if(h<0){i.setStyles({overflow:"auto",height:o.y+h-a});this.resetHeight=true;h=0}else if(h+o.y>s.y+e.y){i.setStyles({overflow:"auto",height:Math.abs(s.y+e.y-h+a)});h=h-a;this.resetHeight=true}}if(this.resetHeight){if(this.arrowNode)this.arrowNode.setStyle("display","none")}else if(this.options.hasArrow&&this.arrowNode){if(r=="top"){this.arrowNode.setStyles({top:"-8px",bottom:"auto","background-position":"0px -18px"})}else{this.arrowNode.setStyles({top:"auto",bottom:"-8px","background-position":"0px -28px"})}var y=this.arrowNode.getSize().x/2;var c=Math.min(t.width,o.x)/2-y;var u=0;var x=0;if(n=="center"){this.arrowNode.setStyles({left:o.x/2-y-p+"px",right:"auto"})}else if(n=="left"){x=this.node.getStyle("border-"+r+"-left-radius");x=x?parseInt(x):0;if(x>c){u=x-c}this.arrowNode.setStyles({left:c+u-p+"px",right:"auto"})}else{x=this.node.getStyle("border-"+r+"-right-radius");x=x?parseInt(x):0;if(x>c){u=x-c}this.arrowNode.setStyles({left:"auto",right:c+u+p+"px"})}var g=f;if(u){if(n=="left"){g=g-u}else if(n=="right"){g=g+u}}}i.setStyles({left:g||f,top:h})},destroy:function(){if(this.options.event=="click"&&this.app&&this.hideFun_resize){this.app.removeEvent("resize",this.hideFun_resize)}if(this.node){this.node.destroy();this.node=null}this.fireEvent("destroy",[this]);MWF.release(this)},_getHtml:function(){return""},_customNode:function(t,i){},_setContent:function(t){this.contentNode=t;if(this.node){this.node.empty();this.contentNode.inject(this.node)}},_loadCustom:function(t){if(t)t()}});
|