diff --git a/src/includes/functions.inc.php b/src/includes/functions.inc.php index 1ec75374..1be0093d 100755 --- a/src/includes/functions.inc.php +++ b/src/includes/functions.inc.php @@ -288,7 +288,7 @@ function psm_date($time) { if(empty($time) || $time == '0000-00-00 00:00:00') return 'never'; - return date('d/m/Y H:i:s', strtotime($time)); + return date(psm_get_lang('system', 'date_time_format'), strtotime($time)); } /** diff --git a/src/lang/bg.lang.php b/src/lang/bg.lang.php index 1a065ec0..4ba14ded 100755 --- a/src/lang/bg.lang.php +++ b/src/lang/bg.lang.php @@ -44,6 +44,8 @@ $sm_lang = array( 'update_available' => 'Налична е нова версия. Може да я свалите от тук.', 'back_to_top' => 'Нагоре', 'go_back' => 'Go back', + + 'date_time_format' => 'd.m.Y H:i:s', // date/time format according the date php function format parameter http://php.net/manual/function.date.php ), 'menu' => array( 'config' => 'Настройки', @@ -111,6 +113,11 @@ $sm_lang = array( 'hour' => 'Hour', 'warning_threshold' => 'Warning threshold', 'warning_threshold_description' => 'Number of failed checks required before it is marked offline.', + + // Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html + 'chart_long_date_format' => '%d.%m.%Y %H:%M:%S', + 'chart_short_date_format' => '%d.%m %H:%M', + 'chart_short_time_format' => '%H:%M', ), 'config' => array( 'general' => 'Основни настройки', diff --git a/src/lang/br.lang.php b/src/lang/br.lang.php index f508dbe7..d79adca9 100755 --- a/src/lang/br.lang.php +++ b/src/lang/br.lang.php @@ -44,6 +44,8 @@ $sm_lang = array( 'update_available' => 'Uma atualização disponível em http://www.phpservermonitor.org.', 'back_to_top' => 'Voltar ao topo', 'go_back' => 'Go back', + + 'date_time_format' => 'd/m/Y H:i:s', // date/time format according the date php function format parameter http://php.net/manual/function.date.php ), 'menu' => array( 'config' => 'Configuração', @@ -111,6 +113,11 @@ $sm_lang = array( 'hour' => 'Hour', 'warning_threshold' => 'Warning threshold', 'warning_threshold_description' => 'Number of failed checks required before it is marked offline.', + + // Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html + 'chart_long_date_format' => '%d/%m/%Y %H:%M:%S', + 'chart_short_date_format' => '%d/%m %H:%M', + 'chart_short_time_format' => '%H:%M', ), 'config' => array( 'general' => 'Geral', diff --git a/src/lang/de.lang.php b/src/lang/de.lang.php index 0e43ea18..e8ac0bd1 100755 --- a/src/lang/de.lang.php +++ b/src/lang/de.lang.php @@ -44,6 +44,8 @@ $sm_lang = array( 'update_available' => 'Ein neues Update ist verfügbar auf http://www.phpservermonitor.org.', 'back_to_top' => 'Back to top', 'go_back' => 'Go back', + + 'date_time_format' => 'd.m.Y H:i:s', // date/time format according the date php function format parameter http://php.net/manual/function.date.php ), 'menu' => array( 'config' => 'Einstellungen', @@ -111,6 +113,11 @@ $sm_lang = array( 'hour' => 'Hour', 'warning_threshold' => 'Warning threshold', 'warning_threshold_description' => 'Number of failed checks required before it is marked offline.', + + // Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html + 'chart_long_date_format' => '%d.%m.%Y %H:%M:%S', + 'chart_short_date_format' => '%d.%m %H:%M', + 'chart_short_time_format' => '%H:%M', ), 'config' => array( 'general' => 'General', diff --git a/src/lang/en.lang.php b/src/lang/en.lang.php index 7f71c52f..337d8872 100755 --- a/src/lang/en.lang.php +++ b/src/lang/en.lang.php @@ -44,6 +44,8 @@ $sm_lang = array( 'update_available' => 'A new update is available from http://www.phpservermonitor.org.', 'back_to_top' => 'Back to top', 'go_back' => 'Go back', + + 'date_time_format' => 'Y-m-d H:i:s', // date/time format according the date php function format parameter http://php.net/manual/function.date.php ), 'menu' => array( 'config' => 'Config', @@ -111,6 +113,11 @@ $sm_lang = array( 'hour' => 'Hour', 'warning_threshold' => 'Warning threshold', 'warning_threshold_description' => 'Number of failed checks required before it is marked offline.', + + // Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html + 'chart_long_date_format' => '%Y-%m-%d %H:%M:%S', + 'chart_short_date_format' => '%m/%d %H:%M', + 'chart_short_time_format' => '%H:%M', ), 'config' => array( 'general' => 'General', diff --git a/src/lang/fr.lang.php b/src/lang/fr.lang.php index 79095a75..40299325 100755 --- a/src/lang/fr.lang.php +++ b/src/lang/fr.lang.php @@ -44,6 +44,8 @@ $sm_lang = array( 'update_available' => 'Une nouvelle version est disponible à l\'adresse http://www.phpservermonitor.org.', 'back_to_top' => 'Haut de page', 'go_back' => 'Retour', + + 'date_time_format' => 'd/m/Y H:i:s', // date/time format according the date php function format parameter http://php.net/manual/function.date.php ), 'menu' => array( 'config' => 'Configuration', @@ -111,6 +113,11 @@ $sm_lang = array( 'hour' => 'Heure', 'warning_threshold' => 'Warning threshold', 'warning_threshold_description' => 'Number of failed checks required before it is marked offline.', + + // Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html + 'chart_long_date_format' => '%d/%m/%Y %H:%M:%S', + 'chart_short_date_format' => '%d/%m %H:%M', + 'chart_short_time_format' => '%H:%M', ), 'config' => array( 'general' => 'Général', diff --git a/src/lang/kr.lang.php b/src/lang/kr.lang.php index e2788aab..e60399c5 100755 --- a/src/lang/kr.lang.php +++ b/src/lang/kr.lang.php @@ -44,6 +44,8 @@ $sm_lang = array( 'update_available' => '새로운 업데이트가 있습니다. 다음사이트를 방문 해 주십시오. http://www.phpservermonitor.org.', 'back_to_top' => 'Back to top', 'go_back' => 'Go back', + + 'date_time_format' => 'Y-m-d H:i:s', // date/time format according the date php function format parameter http://php.net/manual/function.date.php ), 'menu' => array( 'config' => '설정', @@ -111,6 +113,11 @@ $sm_lang = array( 'hour' => 'Hour', 'warning_threshold' => 'Warning threshold', 'warning_threshold_description' => 'Number of failed checks required before it is marked offline.', + + // Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html + 'chart_long_date_format' => '%Y-%m-%d %H:%M:%S', + 'chart_short_date_format' => '%m/%d %H:%M', + 'chart_short_time_format' => '%H:%M', ), 'config' => array( 'general' => '일반', diff --git a/src/lang/nl.lang.php b/src/lang/nl.lang.php index aeffa909..849904c3 100755 --- a/src/lang/nl.lang.php +++ b/src/lang/nl.lang.php @@ -44,6 +44,8 @@ $sm_lang = array( 'update_available' => 'Een nieuwe update is beschikbaar op http://www.phpservermonitor.org.', 'back_to_top' => 'Terug naar boven', 'go_back' => 'Terug', + + 'date_time_format' => 'd-m-Y H:i:s', // date/time format according the date php function format parameter http://php.net/manual/function.date.php ), 'menu' => array( 'config' => 'Config', @@ -111,6 +113,11 @@ $sm_lang = array( 'hour' => 'Hour', 'warning_threshold' => 'Warning threshold', 'warning_threshold_description' => 'Number of failed checks required before it is marked offline.', + + // Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html + 'chart_long_date_format' => '%d-%m-%Y %H:%M:%S', + 'chart_short_date_format' => '%d-%m %H:%M', + 'chart_short_time_format' => '%H:%M', ), 'config' => array( 'general' => 'Algemeen', diff --git a/src/psm/Module/Server/Controller/HistoryController.class.php b/src/psm/Module/Server/Controller/HistoryController.class.php index a96753ef..24bac648 100644 --- a/src/psm/Module/Server/Controller/HistoryController.class.php +++ b/src/psm/Module/Server/Controller/HistoryController.class.php @@ -101,7 +101,7 @@ class HistoryController extends AbstractServerController { 'server_name' => $server['label'], 'server_lines' => sizeof($lines) ? '[' . implode(',', $lines) . ']' : '', 'server_down' => sizeof($down) ? '[' . implode(',', $down) . ']' : '', - 'server_online' => $server['last_online'], + 'server_online' => psm_date($server['last_online']), 'server_rtime' => round((float)$server['rtime'], 3), ); } @@ -123,6 +123,9 @@ class HistoryController extends AbstractServerController { 'label_week' => psm_get_lang('servers', 'week'), 'label_day' => psm_get_lang('servers', 'day'), 'label_hour' => psm_get_lang('servers', 'hour'), + 'long_date_format' => psm_get_lang('servers', 'chart_long_date_format'), + 'short_date_format' => psm_get_lang('servers', 'chart_short_date_format'), + 'short_time_format' => psm_get_lang('servers', 'chart_short_time_format'), ) ); diff --git a/src/templates/history.tpl.html b/src/templates/history.tpl.html index 0fbaf328..e274ceeb 100644 --- a/src/templates/history.tpl.html +++ b/src/templates/history.tpl.html @@ -3,10 +3,16 @@ + +
diff --git a/static/js/history.js b/static/js/history.js index 7633bfdf..976b6ca2 100644 --- a/static/js/history.js +++ b/static/js/history.js @@ -51,20 +51,20 @@ function create_plot($this, mode) { case 'month': timeStamp = 1000 * 60 * 60 * 24 * 30; - tickFormat = '%d/%m %H:%M'; + tickFormat = short_date_format; break; case 'week': timeStamp = 1000 * 60 * 60 * 24 * 7; - tickFormat = '%d/%m %H:%M'; + tickFormat = short_date_format; break; case 'day': timeStamp = 1000 * 60 * 60 *24; - tickFormat = '%H:%M'; + tickFormat = short_time_format; break; case 'hour': default: timeStamp = 1000 * 60 * 60; - tickFormat = '%H:%M'; + tickFormat = short_time_format; break; } @@ -85,7 +85,7 @@ function create_plot($this, mode) color: '#fe5d5d', showTooltip: true, showTooltipPrecision: 1.0, - tooltipFormatString: "↓ " + d.strftime('%d/%m/%y %H:%M:%S') + tooltipFormatString: "↓ " + d.strftime(long_date_format) }}); } } @@ -108,7 +108,7 @@ function create_plot($this, mode) { var point = plot.series[seriesIndex].data[pointIndex]; var d = new $.jsDate(point[0]); - return "↑ " + d.strftime('%d/%m/%y %H:%M:%S') + ' - ' + $.jqplot.sprintf('%.3fs', point[1]); + return "↑ " + d.strftime(long_date_format) + ' - ' + $.jqplot.sprintf('%.3fs', point[1]); } }, seriesDefaults: { @@ -117,7 +117,14 @@ function create_plot($this, mode) canvasOverlay: { show: true, objects: downArray - } + }, + cursor:{ + show: true, + zoom: true, + showTooltip:false, + dblClickReset: true, + constrainZoomTo: 'x' + } }); $this.data('psm_plot', plot); } diff --git a/static/plugin/jqplot/jqplot.cursor.min.js b/static/plugin/jqplot/jqplot.cursor.min.js new file mode 100644 index 00000000..51580bad --- /dev/null +++ b/static/plugin/jqplot/jqplot.cursor.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(j){j.jqplot.Cursor=function(q){this.style="crosshair";this.previousCursor="auto";this.show=j.jqplot.config.enablePlugins;this.showTooltip=true;this.followMouse=false;this.tooltipLocation="se";this.tooltipOffset=6;this.showTooltipGridPosition=false;this.showTooltipUnitPosition=true;this.showTooltipDataPosition=false;this.tooltipFormatString="%.4P, %.4P";this.useAxesFormatters=true;this.tooltipAxisGroups=[];this.zoom=false;this.zoomProxy=false;this.zoomTarget=false;this.looseZoom=true;this.clickReset=false;this.dblClickReset=true;this.showVerticalLine=false;this.showHorizontalLine=false;this.constrainZoomTo="none";this.shapeRenderer=new j.jqplot.ShapeRenderer();this._zoom={start:[],end:[],started:false,zooming:false,isZoomed:false,axes:{start:{},end:{}},gridpos:{},datapos:{}};this._tooltipElem;this.zoomCanvas;this.cursorCanvas;this.intersectionThreshold=2;this.showCursorLegend=false;this.cursorLegendFormatString=j.jqplot.Cursor.cursorLegendFormatString;this._oldHandlers={onselectstart:null,ondrag:null,onmousedown:null};this.constrainOutsideZoom=true;this.showTooltipOutsideZoom=false;this.onGrid=false;j.extend(true,this,q)};j.jqplot.Cursor.cursorLegendFormatString="%s x:%s, y:%s";j.jqplot.Cursor.init=function(t,s,r){var q=r||{};this.plugins.cursor=new j.jqplot.Cursor(q.cursor);var u=this.plugins.cursor;if(u.show){j.jqplot.eventListenerHooks.push(["jqplotMouseEnter",b]);j.jqplot.eventListenerHooks.push(["jqplotMouseLeave",f]);j.jqplot.eventListenerHooks.push(["jqplotMouseMove",i]);if(u.showCursorLegend){r.legend=r.legend||{};r.legend.renderer=j.jqplot.CursorLegendRenderer;r.legend.formatString=this.plugins.cursor.cursorLegendFormatString;r.legend.show=true}if(u.zoom){j.jqplot.eventListenerHooks.push(["jqplotMouseDown",a]);if(u.clickReset){j.jqplot.eventListenerHooks.push(["jqplotClick",k])}if(u.dblClickReset){j.jqplot.eventListenerHooks.push(["jqplotDblClick",c])}}this.resetZoom=function(){var x=this.axes;if(!u.zoomProxy){for(var w in x){x[w].reset();x[w]._ticks=[];if(u._zoom.axes[w]!==undefined){x[w]._autoFormatString=u._zoom.axes[w].tickFormatString}}this.redraw()}else{var v=this.plugins.cursor.zoomCanvas._ctx;v.clearRect(0,0,v.canvas.width,v.canvas.height);v=null}this.plugins.cursor._zoom.isZoomed=false;this.target.trigger("jqplotResetZoom",[this,this.plugins.cursor])};if(u.showTooltipDataPosition){u.showTooltipUnitPosition=false;u.showTooltipGridPosition=false;if(q.cursor.tooltipFormatString==undefined){u.tooltipFormatString=j.jqplot.Cursor.cursorLegendFormatString}}}};j.jqplot.Cursor.postDraw=function(){var x=this.plugins.cursor;if(x.zoomCanvas){x.zoomCanvas.resetCanvas();x.zoomCanvas=null}if(x.cursorCanvas){x.cursorCanvas.resetCanvas();x.cursorCanvas=null}if(x._tooltipElem){x._tooltipElem.emptyForce();x._tooltipElem=null}if(x.zoom){x.zoomCanvas=new j.jqplot.GenericCanvas();this.eventCanvas._elem.before(x.zoomCanvas.createElement(this._gridPadding,"jqplot-zoom-canvas",this._plotDimensions,this));x.zoomCanvas.setContext()}var v=document.createElement("div");x._tooltipElem=j(v);v=null;x._tooltipElem.addClass("jqplot-cursor-tooltip");x._tooltipElem.css({position:"absolute",display:"none"});if(x.zoomCanvas){x.zoomCanvas._elem.before(x._tooltipElem)}else{this.eventCanvas._elem.before(x._tooltipElem)}if(x.showVerticalLine||x.showHorizontalLine){x.cursorCanvas=new j.jqplot.GenericCanvas();this.eventCanvas._elem.before(x.cursorCanvas.createElement(this._gridPadding,"jqplot-cursor-canvas",this._plotDimensions,this));x.cursorCanvas.setContext()}if(x.showTooltipUnitPosition){if(x.tooltipAxisGroups.length===0){var t=this.series;var u;var q=[];for(var r=0;r6&&Math.abs(G.y-I._zoom.start[1])>6)||(I.constrainZoomTo=="x"&&Math.abs(G.x-I._zoom.start[0])>6)||(I.constrainZoomTo=="y"&&Math.abs(G.y-I._zoom.start[1])>6)){if(!C.plugins.cursor.zoomProxy){for(var y in t){if(I._zoom.axes[y]==undefined){I._zoom.axes[y]={};I._zoom.axes[y].numberTicks=F[y].numberTicks;I._zoom.axes[y].tickInterval=F[y].tickInterval;I._zoom.axes[y].daTickInterval=F[y].daTickInterval;I._zoom.axes[y].min=F[y].min;I._zoom.axes[y].max=F[y].max;I._zoom.axes[y].tickFormatString=(F[y].tickOptions!=null)?F[y].tickOptions.formatString:""}if((I.constrainZoomTo=="none")||(I.constrainZoomTo=="x"&&y.charAt(0)=="x")||(I.constrainZoomTo=="y"&&y.charAt(0)=="y")){z=t[y];if(z!=null){if(z>w[y]){v=w[y];x=z}else{D=w[y]-z;v=z;x=w[y]}q=F[y];H=null;if(q.alignTicks){if(q.name==="x2axis"&&C.axes.xaxis.show){H=C.axes.xaxis.numberTicks}else{if(q.name.charAt(0)==="y"&&q.name!=="yaxis"&&q.name!=="yMidAxis"&&C.axes.yaxis.show){H=C.axes.yaxis.numberTicks}}}if(this.looseZoom&&(F[y].renderer.constructor===j.jqplot.LinearAxisRenderer||F[y].renderer.constructor===j.jqplot.LogAxisRenderer)){J=j.jqplot.LinearTickGenerator(v,x,q._scalefact,H);if(F[y].tickInset&&J[0]F[y].max-F[y].tickInset*F[y].tickInterval){J[1]-=J[4];J[2]-=1}if(F[y].renderer.constructor===j.jqplot.LogAxisRenderer&&J[0]"}if(J.useAxesFormatters){for(var D=0;D"}w+=j.jqplot.sprintf(J.tooltipFormatString,t,z,x);N=true}}}}J._tooltipElem.html(w)}function g(C,A){var E=A.plugins.cursor;var z=E.cursorCanvas._ctx;z.clearRect(0,0,z.canvas.width,z.canvas.height);if(E.showVerticalLine){E.shapeRenderer.draw(z,[[C.x,0],[C.x,z.canvas.height]])}if(E.showHorizontalLine){E.shapeRenderer.draw(z,[[0,C.y],[z.canvas.width,C.y]])}var G=d(A,C.x,C.y);if(E.showCursorLegend){var r=j(A.targetId+" td.jqplot-cursor-legend-label");for(var B=0;B0;r--){s=v[r-1];if(q[s].show){u[s]=q[s].series_p2u(w[s.charAt(0)])}}return{offsets:t,gridPos:w,dataPos:u}}function h(z){var x=z.data.plot;var y=x.plugins.cursor;if(y.show&&y.zoom&&y._zoom.started&&!y.zoomTarget){z.preventDefault();var B=y.zoomCanvas._ctx;var v=o(z);var w=v.gridPos;var t=v.dataPos;y._zoom.gridpos=w;y._zoom.datapos=t;y._zoom.zooming=true;var u=w.x;var s=w.y;var A=B.canvas.height;var q=B.canvas.width;if(y.showTooltip&&!y.onGrid&&y.showTooltipOutsideZoom){e(w,t,x);if(y.followMouse){n(w,x)}}if(y.constrainZoomTo=="x"){y._zoom.end=[u,A]}else{if(y.constrainZoomTo=="y"){y._zoom.end=[q,s]}else{y._zoom.end=[u,s]}}var r=window.getSelection;if(document.selection&&document.selection.empty){document.selection.empty()}else{if(r&&!r().isCollapsed){r().collapse()}}l.call(y);B=null}}function a(w,s,r,x,t){var v=t.plugins.cursor;if(t.plugins.mobile){j(document).one("vmouseup.jqplot_cursor",{plot:t},p)}else{j(document).one("mouseup.jqplot_cursor",{plot:t},p)}var u=t.axes;if(document.onselectstart!=undefined){v._oldHandlers.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!=undefined){v._oldHandlers.ondrag=document.ondrag;document.ondrag=function(){return false}}if(document.onmousedown!=undefined){v._oldHandlers.onmousedown=document.onmousedown;document.onmousedown=function(){return false}}if(v.zoom){if(!v.zoomProxy){var y=v.zoomCanvas._ctx;y.clearRect(0,0,y.canvas.width,y.canvas.height);y=null}if(v.constrainZoomTo=="x"){v._zoom.start=[s.x,0]}else{if(v.constrainZoomTo=="y"){v._zoom.start=[0,s.y]}else{v._zoom.start=[s.x,s.y]}}v._zoom.started=true;for(var q in r){v._zoom.axes.start[q]=r[q]}if(t.plugins.mobile){j(document).bind("vmousemove.jqplotCursor",{plot:t},h)}else{j(document).bind("mousemove.jqplotCursor",{plot:t},h)}}}function p(y){var v=y.data.plot;var x=v.plugins.cursor;if(x.zoom&&x._zoom.zooming&&!x.zoomTarget){var u=x._zoom.gridpos.x;var r=x._zoom.gridpos.y;var t=x._zoom.datapos;var z=x.zoomCanvas._ctx.canvas.height;var q=x.zoomCanvas._ctx.canvas.width;var w=v.axes;if(x.constrainOutsideZoom&&!x.onGrid){if(u<0){u=0}else{if(u>q){u=q}}if(r<0){r=0}else{if(r>z){r=z}}for(var s in t){if(t[s]){if(s.charAt(0)=="x"){t[s]=w[s].series_p2u(u)}else{t[s]=w[s].series_p2u(r)}}}}if(x.constrainZoomTo=="x"){r=z}else{if(x.constrainZoomTo=="y"){u=q}}x._zoom.end=[u,r];x._zoom.gridpos={x:u,y:r};x.doZoom(x._zoom.gridpos,t,v,x)}x._zoom.started=false;x._zoom.zooming=false;j(document).unbind("mousemove.jqplotCursor",h);if(document.onselectstart!=undefined&&x._oldHandlers.onselectstart!=null){document.onselectstart=x._oldHandlers.onselectstart;x._oldHandlers.onselectstart=null}if(document.ondrag!=undefined&&x._oldHandlers.ondrag!=null){document.ondrag=x._oldHandlers.ondrag;x._oldHandlers.ondrag=null}if(document.onmousedown!=undefined&&x._oldHandlers.onmousedown!=null){document.onmousedown=x._oldHandlers.onmousedown;x._oldHandlers.onmousedown=null}}function l(){var y=this._zoom.start;var u=this._zoom.end;var s=this.zoomCanvas._ctx;var r,v,x,q;if(u[0]>y[0]){r=y[0];q=u[0]-y[0]}else{r=u[0];q=y[0]-u[0]}if(u[1]>y[1]){v=y[1];x=u[1]-y[1]}else{v=u[1];x=y[1]-u[1]}s.fillStyle="rgba(0,0,0,0.2)";s.strokeStyle="#999999";s.lineWidth=1;s.clearRect(0,0,s.canvas.width,s.canvas.height);s.fillRect(0,0,s.canvas.width,s.canvas.height);s.clearRect(r,v,q,x);s.strokeRect(r,v,q,x);s=null}j.jqplot.CursorLegendRenderer=function(q){j.jqplot.TableLegendRenderer.call(this,q);this.formatString="%s"};j.jqplot.CursorLegendRenderer.prototype=new j.jqplot.TableLegendRenderer();j.jqplot.CursorLegendRenderer.prototype.constructor=j.jqplot.CursorLegendRenderer;j.jqplot.CursorLegendRenderer.prototype.draw=function(){if(this._elem){this._elem.emptyForce();this._elem=null}if(this.show){var w=this._series,A;var r=document.createElement("table");this._elem=j(r);r=null;this._elem.addClass("jqplot-legend jqplot-cursor-legend");this._elem.css("position","absolute");var q=false;for(var x=0;x').appendTo(this._elem);E.data("seriesIndex",s);j('
').appendTo(E);var G=j('');G.appendTo(E);G.data("seriesIndex",s);if(this.escapeHtml){G.text(D)}else{G.html(D)}E=null;G=null}return this._elem}})(jQuery); \ No newline at end of file