D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
vitalityhealth
/
public_html
/
superadmin
/
vendor
/
flot.tooltip
/
Filename :
jquery.flot.tooltip.js
back
Copy
(function($){var defaultOptions={tooltip:{show:false,cssClass:"flotTip",content:"%s | X: %x | Y: %y",xDateFormat:null,yDateFormat:null,monthNames:null,dayNames:null,shifts:{x:10,y:20},defaultTheme:true,snap:true,lines:false,clickTips:false,onHover:function(flotItem,$tooltipEl){},$compat:false}};defaultOptions.tooltipOpts=defaultOptions.tooltip;var FlotTooltip=function(plot){this.tipPosition={x:0,y:0};this.init(plot);};FlotTooltip.prototype.init=function(plot){var that=this;var plotPluginsLength=$.plot.plugins.length;this.plotPlugins=[];if(plotPluginsLength){for(var p=0;p<plotPluginsLength;p++){this.plotPlugins.push($.plot.plugins[p].name);}} plot.hooks.bindEvents.push(function(plot,eventHolder){that.plotOptions=plot.getOptions();if(typeof(that.plotOptions.tooltip)==='boolean'){that.plotOptions.tooltipOpts.show=that.plotOptions.tooltip;that.plotOptions.tooltip=that.plotOptions.tooltipOpts;delete that.plotOptions.tooltipOpts;} if(that.plotOptions.tooltip.show===false||typeof that.plotOptions.tooltip.show==='undefined')return;that.tooltipOptions=that.plotOptions.tooltip;if(that.tooltipOptions.$compat){that.wfunc='width';that.hfunc='height';}else{that.wfunc='innerWidth';that.hfunc='innerHeight';} var $tip=that.getDomElement();$(plot.getPlaceholder()).bind("plothover",plothover);if(that.tooltipOptions.clickTips){$(plot.getPlaceholder()).bind("plotclick",plotclick);} that.clickmode=false;$(eventHolder).bind('mousemove',mouseMove);});plot.hooks.shutdown.push(function(plot,eventHolder){$(plot.getPlaceholder()).unbind("plothover",plothover);$(plot.getPlaceholder()).unbind("plotclick",plotclick);plot.removeTooltip();$(eventHolder).unbind("mousemove",mouseMove);});function mouseMove(e){var pos={};pos.x=e.pageX;pos.y=e.pageY;plot.setTooltipPosition(pos);} function plotclick(event,pos,item){if(!that.clickmode){plothover(event,pos,item);if(that.getDomElement().is(":visible")){$(plot.getPlaceholder()).unbind("plothover",plothover);that.clickmode=true;}}else{$(plot.getPlaceholder()).bind("plothover",plothover);plot.hideTooltip();that.clickmode=false;}} function plothover(event,pos,item){var lineDistance=function(p1x,p1y,p2x,p2y){return Math.sqrt((p2x-p1x)*(p2x-p1x)+(p2y-p1y)*(p2y-p1y));};var dotLineLength=function(x,y,x0,y0,x1,y1,o){if(o&&!(o=function(x,y,x0,y0,x1,y1){if(typeof x0!=='undefined')return{x:x0,y:y};else if(typeof y0!=='undefined')return{x:x,y:y0};var left,tg=-1/((y1-y0)/(x1-x0));return{x:left=(x1*(x*tg-y+y0)+x0*(x*-tg+y-y1))/(tg*(x1-x0)+y0-y1),y:tg*left-tg*x+y};}(x,y,x0,y0,x1,y1),o.x>=Math.min(x0,x1)&&o.x<=Math.max(x0,x1)&&o.y>=Math.min(y0,y1)&&o.y<=Math.max(y0,y1))){var l1=lineDistance(x,y,x0,y0),l2=lineDistance(x,y,x1,y1);return l1>l2?l2:l1;}else{var a=y0-y1,b=x1-x0,c=x0*y1-y0*x1;return Math.abs(a*x+b*y+c)/Math.sqrt(a*a+b*b);}};if(item){plot.showTooltip(item,that.tooltipOptions.snap?item:pos);}else if(that.plotOptions.series.lines.show&&that.tooltipOptions.lines===true){var maxDistance=that.plotOptions.grid.mouseActiveRadius;var closestTrace={distance:maxDistance+1};var ttPos=pos;$.each(plot.getData(),function(i,series){var xBeforeIndex=0,xAfterIndex=-1;for(var j=1;j<series.data.length;j++){if(series.data[j-1][0]<=pos.x&&series.data[j][0]>=pos.x){xBeforeIndex=j-1;xAfterIndex=j;}} if(xAfterIndex===-1){plot.hideTooltip();return;} var pointPrev={x:series.data[xBeforeIndex][0],y:series.data[xBeforeIndex][1]},pointNext={x:series.data[xAfterIndex][0],y:series.data[xAfterIndex][1]};var distToLine=dotLineLength(series.xaxis.p2c(pos.x),series.yaxis.p2c(pos.y),series.xaxis.p2c(pointPrev.x),series.yaxis.p2c(pointPrev.y),series.xaxis.p2c(pointNext.x),series.yaxis.p2c(pointNext.y),false);if(distToLine<closestTrace.distance){var closestIndex=lineDistance(pointPrev.x,pointPrev.y,pos.x,pos.y)<lineDistance(pos.x,pos.y,pointNext.x,pointNext.y)?xBeforeIndex:xAfterIndex;var pointSize=series.datapoints.pointsize;var pointOnLine=[pos.x,pointPrev.y+((pointNext.y-pointPrev.y)*((pos.x-pointPrev.x)/(pointNext.x-pointPrev.x)))];var item={datapoint:pointOnLine,dataIndex:closestIndex,series:series,seriesIndex:i};closestTrace={distance:distToLine,item:item};if(that.tooltipOptions.snap){ttPos={pageX:series.xaxis.p2c(pointOnLine[0]),pageY:series.yaxis.p2c(pointOnLine[1])};}}});if(closestTrace.distance<maxDistance+1) plot.showTooltip(closestTrace.item,ttPos);else plot.hideTooltip();}else{plot.hideTooltip();}} plot.setTooltipPosition=function(pos){var $tip=that.getDomElement();var totalTipWidth=$tip.outerWidth()+that.tooltipOptions.shifts.x;var totalTipHeight=$tip.outerHeight()+that.tooltipOptions.shifts.y;if((pos.x-$(window).scrollLeft())>($(window)[that.wfunc]()-totalTipWidth)){pos.x-=totalTipWidth;pos.x=Math.max(pos.x,0);} if((pos.y-$(window).scrollTop())>($(window)[that.hfunc]()-totalTipHeight)){pos.y-=totalTipHeight;} if(isNaN(pos.x)){that.tipPosition.x=that.tipPosition.xPrev;} else{that.tipPosition.x=pos.x;that.tipPosition.xPrev=pos.x;} if(isNaN(pos.y)){that.tipPosition.y=that.tipPosition.yPrev;} else{that.tipPosition.y=pos.y;that.tipPosition.yPrev=pos.y;}};plot.showTooltip=function(target,position,targetPosition){var $tip=that.getDomElement();var tipText=that.stringFormat(that.tooltipOptions.content,target);if(tipText==='') return;$tip.html(tipText);plot.setTooltipPosition({x:that.tipPosition.x,y:that.tipPosition.y});$tip.css({left:that.tipPosition.x+that.tooltipOptions.shifts.x,top:that.tipPosition.y+that.tooltipOptions.shifts.y}).show();if(typeof that.tooltipOptions.onHover==='function'){that.tooltipOptions.onHover(target,$tip);}};plot.hideTooltip=function(){that.getDomElement().hide().html('');};plot.removeTooltip=function(){that.getDomElement().remove();};};FlotTooltip.prototype.getDomElement=function(){var $tip=$('<div>');if(this.tooltipOptions&&this.tooltipOptions.cssClass){$tip=$('.'+this.tooltipOptions.cssClass);if($tip.length===0){$tip=$('<div />').addClass(this.tooltipOptions.cssClass);$tip.appendTo('body').hide().css({position:'absolute'});if(this.tooltipOptions.defaultTheme){$tip.css({'background':'#fff','z-index':'1040','padding':'0.4em 0.6em','border-radius':'0.5em','font-size':'0.8em','border':'1px solid #111','display':'none','white-space':'nowrap'});}}} return $tip;};FlotTooltip.prototype.stringFormat=function(content,item){var percentPattern=/%p\.{0,1}(\d{0,})/;var seriesPattern=/%s/;var colorPattern=/%c/;var xLabelPattern=/%lx/;var yLabelPattern=/%ly/;var xPattern=/%x\.{0,1}(\d{0,})/;var yPattern=/%y\.{0,1}(\d{0,})/;var xPatternWithoutPrecision="%x";var yPatternWithoutPrecision="%y";var customTextPattern="%ct";var nPiePattern="%n";var x,y,customText,p,n;if(typeof item.series.threshold!=="undefined"){x=item.datapoint[0];y=item.datapoint[1];customText=item.datapoint[2];} else if(typeof item.series.curvedLines!=="undefined"){x=item.datapoint[0];y=item.datapoint[1];} else if(typeof item.series.lines!=="undefined"&&item.series.lines.steps){x=item.series.datapoints.points[item.dataIndex*2];y=item.series.datapoints.points[item.dataIndex*2+1];customText="";}else{x=item.series.data[item.dataIndex][0];y=item.series.data[item.dataIndex][1];customText=item.series.data[item.dataIndex][2];} if(item.series.label===null&&item.series.originSeries){item.series.label=item.series.originSeries.label;} if(typeof(content)==='function'){content=content(item.series.label,x,y,item);} if(typeof(content)==='boolean'&&!content){return '';} if(customText){content=content.replace(customTextPattern,customText);} if(typeof(item.series.percent)!=='undefined'){p=item.series.percent;}else if(typeof(item.series.percents)!=='undefined'){p=item.series.percents[item.dataIndex];} if(typeof p==='number'){content=this.adjustValPrecision(percentPattern,content,p);} if(item.series.hasOwnProperty('pie')){if(typeof item.series.data[0][1]!=='undefined'){n=item.series.data[0][1];}} if(typeof n==='number'){content=content.replace(nPiePattern,n);} if(typeof(item.series.label)!=='undefined'){content=content.replace(seriesPattern,item.series.label);}else{content=content.replace(seriesPattern,"");} if(typeof(item.series.color)!=='undefined'){content=content.replace(colorPattern,item.series.color);}else{content=content.replace(colorPattern,"");} if(this.hasAxisLabel('xaxis',item)){content=content.replace(xLabelPattern,item.series.xaxis.options.axisLabel);}else{content=content.replace(xLabelPattern,"");} if(this.hasAxisLabel('yaxis',item)){content=content.replace(yLabelPattern,item.series.yaxis.options.axisLabel);}else{content=content.replace(yLabelPattern,"");} if(this.isTimeMode('xaxis',item)&&this.isXDateFormat(item)){content=content.replace(xPattern,this.timestampToDate(x,this.tooltipOptions.xDateFormat,item.series.xaxis.options));} if(this.isTimeMode('yaxis',item)&&this.isYDateFormat(item)){content=content.replace(yPattern,this.timestampToDate(y,this.tooltipOptions.yDateFormat,item.series.yaxis.options));} if(typeof x==='number'){content=this.adjustValPrecision(xPattern,content,x);} if(typeof y==='number'){content=this.adjustValPrecision(yPattern,content,y);} if(typeof item.series.xaxis.ticks!=='undefined'){var ticks;if(this.hasRotatedXAxisTicks(item)){ticks='rotatedTicks';}else{ticks='ticks';} var tickIndex=item.dataIndex+item.seriesIndex;for(var xIndex in item.series.xaxis[ticks]){if(item.series.xaxis[ticks].hasOwnProperty(tickIndex)&&!this.isTimeMode('xaxis',item)){var valueX=(this.isCategoriesMode('xaxis',item))?item.series.xaxis[ticks][tickIndex].label:item.series.xaxis[ticks][tickIndex].v;if(valueX===x){content=content.replace(xPattern,item.series.xaxis[ticks][tickIndex].label.replace(/\$/g,'$$$$'));}}}} if(typeof item.series.yaxis.ticks!=='undefined'){for(var yIndex in item.series.yaxis.ticks){if(item.series.yaxis.ticks.hasOwnProperty(yIndex)){var valueY=(this.isCategoriesMode('yaxis',item))?item.series.yaxis.ticks[yIndex].label:item.series.yaxis.ticks[yIndex].v;if(valueY===y){content=content.replace(yPattern,item.series.yaxis.ticks[yIndex].label.replace(/\$/g,'$$$$'));}}}} if(typeof item.series.xaxis.tickFormatter!=='undefined'){content=content.replace(xPatternWithoutPrecision,item.series.xaxis.tickFormatter(x,item.series.xaxis).replace(/\$/g,'$$'));} if(typeof item.series.yaxis.tickFormatter!=='undefined'){content=content.replace(yPatternWithoutPrecision,item.series.yaxis.tickFormatter(y,item.series.yaxis).replace(/\$/g,'$$'));} return content;};FlotTooltip.prototype.isTimeMode=function(axisName,item){return(typeof item.series[axisName].options.mode!=='undefined'&&item.series[axisName].options.mode==='time');};FlotTooltip.prototype.isXDateFormat=function(item){return(typeof this.tooltipOptions.xDateFormat!=='undefined'&&this.tooltipOptions.xDateFormat!==null);};FlotTooltip.prototype.isYDateFormat=function(item){return(typeof this.tooltipOptions.yDateFormat!=='undefined'&&this.tooltipOptions.yDateFormat!==null);};FlotTooltip.prototype.isCategoriesMode=function(axisName,item){return(typeof item.series[axisName].options.mode!=='undefined'&&item.series[axisName].options.mode==='categories');};FlotTooltip.prototype.timestampToDate=function(tmst,dateFormat,options){var theDate=$.plot.dateGenerator(tmst,options);return $.plot.formatDate(theDate,dateFormat,this.tooltipOptions.monthNames,this.tooltipOptions.dayNames);};FlotTooltip.prototype.adjustValPrecision=function(pattern,content,value){var precision;var matchResult=content.match(pattern);if(matchResult!==null){if(RegExp.$1!==''){precision=RegExp.$1;value=value.toFixed(precision);content=content.replace(pattern,value);}} return content;};FlotTooltip.prototype.hasAxisLabel=function(axisName,item){return($.inArray('axisLabels',this.plotPlugins)!==-1&&typeof item.series[axisName].options.axisLabel!=='undefined'&&item.series[axisName].options.axisLabel.length>0);};FlotTooltip.prototype.hasRotatedXAxisTicks=function(item){return($.inArray('tickRotor',this.plotPlugins)!==-1&&typeof item.series.xaxis.rotatedTicks!=='undefined');};var init=function(plot){new FlotTooltip(plot);};$.plot.plugins.push({init:init,options:defaultOptions,name:'tooltip',version:'0.8.5'});})(jQuery);