2@     !" #$ % & #' ( ) *+ ,- ./ 0123 4 5 6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] ^_ ` #ab c de fg fhijklmnopqr stu v wx yz { y| y} ~      _otherLibs[Ljava/lang/String; _bodyContent_plotCodeStart _plotCodeEnd3(Lptolemy/kernel/util/NamedObj;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis; StackMapTable 2()V SourceFileDygraphsJSPlotterAttribute.java l2 hCustomize by clicking "Configure". DyGraphsJSPlotter is free under the MIT license: http://dygraphs.com/ X logarithmic  B   D  !"java/lang/StringBuilder  #$� graphTitle %&�java/lang/String� '( )* var mainChart;  var data = dataJSON;  var events =  eventsJSON var config = {graphTitle: '', enableLegend:  enableLegend, horizontalAlign: 'horizontalAlign, verticalAlign: ' verticalAlign, dataConnectWidth: dataConnectWidth, enableDataMarker: enableDataMarker, dataMarkerRadius: dataMarkerRadius, eventsConnectWidth: eventsConnectWidth, enableEventsMarker: enableEventsMarker, eventsMarkerRadius: eventsMarkerRadius, xAxisMode: ' xAxisMode, drawVerticalGridLine: drawVerticalGridLine, xAxisTitle: ' xAxisTitle, yAxisMode: ' yAxisMode, drawHorizontalGridLine: drawHorizontalGridLine, yAxisTitle: ' yAxisTitle'};  + ,( -.  autoResize/ 01 23 min-widthwidth min-heightheight%
4#
56outputHTMLFileWebAttribute 78 9(outputHTMLFile : ;<saveDataToFileoutputDataFileWebAttributeoutputDataFileX @ O
N
T




Instructions:


    
  1. Hide/show a data trace or event trace by clicking the corresponding checkbox.
  2. 
  3. Get all events that happened at a particular point on the X axis by single click on a data point on the upper chart
  4. 
  5. Zoom-in/out to/from an interval by dragging on the lower chart.
  6. 
+ var pieChart, dataTable, seriesLabels; " $(document).ready(function() {( // parse data and create main chart parseJSON(); createMainChart(); });! function createMainChart() { mainChart = new Dygraph(6 document.getElementById("mainChart-container"), dataTable, { labels: seriesLabels," xlabel: config.xAxisTitle," ylabel: config.yAxisTitle,! title: config.graphTitle, avoidMinZero: true,/ drawXGrid: config.drawVerticalGridLine,1 drawYGrid: config.drawHorizontalGridLine,6 logscale: (config.yAxisMode == 'logarithmic'),? legend: config.enableLegend ? 'always' : 'onmouseover', rangeSelectorHeight: 60, showRangeSelector: true,% connectSeparatedPoints: true,& labelsDiv: "legend-container"," labelsSeparateLines: true,0 pointClickCallback: function(e, point) {; $("#eventsInfo-container").html('Events at ' + 5 parseDatetime(point.xval) + ':
' +" getEvents(point.xval)); } } );// End of new Dygraph() " // customize for each series? var seriesOpts = [], pointShapes = [], panelContent = '';) for (var shape in Dygraph.Circles){0 pointShapes.push(Dygraph.Circles[shape]); }? var strokePatterns = [null, [6, 3], [2, 3], [6, 2, 2, 2],6 [6, 2, 2, 2, 2, 2], [2, 4],; [12, 5], [18, 5], [12, 5, 2, 5],@ [18, 5, 2, 5], [18, 5, 2, 5, 2, 5]]; 8 jQuery.each(seriesLabels, function(i, seriesName){- // add checkbox for visibility control if (i >= 1){\ panelContent += '' + seriesName + '
'; }  // customize data series% if (isEventTrace(seriesName)){" seriesOpts[seriesName] = {0 drawPoints: config.enableEventsMarker,0 strokeWidth: config.eventsConnectWidth }; }else {. drawPoints: config.enableDataMarker,- pointSize: config.dataMarkerRadius,A drawPointCallback: pointShapes[i % pointShapes.length],C strokePattern: strokePatterns[i % strokePatterns.length],/ strokeWidth: config.dataConnectWidth,; highlightCircleSize: config.dataMarkerRadius + 2,I drawHighlightPointCallback: pointShapes[i % pointShapes.length] });/ $("#panel-container").html(panelContent);* mainChart.updateOptions(seriesOpts);! }// End of createMainChart() = // Parse the data and events series to the native format function parseJSON(){+ seriesLabels = ['x'], dataTable = []; var dataObj = {}; / jQuery.each(data, function(i, dataTrace){* seriesLabels.push(dataTrace.name); 6 jQuery.each(dataTrace.value, function(j, item){' var rowObj = {}, pointObj = {};* pointObj[dataTrace.name] = item.y;" rowObj[item.x] = pointObj;7 dataObj = jQuery.extend(true, dataObj, rowObj); });2 jQuery.each(events, function(i, eventTrace){* seriesLabels.push(eventTrace.name);7 jQuery.each(eventTrace.value, function(j, item){+ pointObj[eventTrace.name] = item.y; }); / jQuery.each(dataObj, function(x, rowObj){ var row = [];+ if (config.xAxisMode == 'datetime'){& row.push(new Date(Number(x))); row.push(Number(x));3 jQuery.each(seriesLabels, function(i, name){ if (i >= 1){ if (name in rowObj){! row.push(rowObj[name]); }else { row.push(null); } dataTable.push(row); } 0 // Get all events at a certain X axis point function getEvents(xPoint){ var text = '';G var tempArray = jQuery.grep(eventTrace.value, function(item, j){" return (item.x == xPoint); ! if (tempArray.length > 0){3 text += '' + eventTrace.name + ': ';1 jQuery.each(tempArray, function(j, item){ if (j > 0) text += ', '; text += item.text; }); text += '
'; return text||'None'; } // Parse Datetime# function parseDatetime(value){) if (config.xAxisMode == 'datetime'), return new Date(value).toUTCString(); else  return value;! function isEventTrace(name){ var count = 0;# if (eventTrace.name == name) count++; return (count > 0);:ptolemy/vergil/basic/export/web/DygraphsJSPlotterAttribute2ptolemy/vergil/basic/export/web/JSPlotterAttribute*ptolemy/kernel/util/IllegalActionException,ptolemy/kernel/util/NameDuplicationException+ptolemy/vergil/basic/export/web/WebExporterjava/util/HashMap*ptolemy/vergil/basic/export/web/WebElementLptolemy/data/expr/Parameter;ptolemy/data/expr/Parameter setExpression(Ljava/lang/String;)V#Lptolemy/data/expr/StringParameter;!ptolemy/data/expr/StringParameter addChoiceNONE> Visibility InnerClasses)Lptolemy/kernel/util/Settable$Visibility; setVisibility,(Lptolemy/kernel/util/Settable$Visibility;)VgetBasicConfig()Ljava/util/HashMap;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;get&(Ljava/lang/Object;)Ljava/lang/Object;toString()Ljava/lang/String;insertHeaderContent(ZZLjava/lang/String;)V customContent getExpressionequals(Ljava/lang/Object;)Zjava/lang/BooleanvalueOf'(Ljava/lang/String;)Ljava/lang/Boolean; booleanValue()ZinsertBodyContent getContainer ()Lptolemy/kernel/util/NamedObj;createWebElementp(Lptolemy/kernel/util/NamedObj;Ljava/lang/String;Ljava/lang/String;)Lptolemy/vergil/basic/export/web/WebElement;getHTMLPageContent setParent defineElement0(Lptolemy/vergil/basic/export/web/WebElement;Z)V?'ptolemy/kernel/util/Settable$Visibilityptolemy/kernel/util/Settable! 3*+,*** * * TUVXY(Z2[ 333 *+*M*Y,N-66-2:***Y,*Y, *Y!,"#,$%,&"',("),*+,,-,./,01,23,45,6"7,89,:";,<"=,>?,@ABN-66)-2:*YC*D)*DE*DEFG**DEHN-66)-2:*YC,IJKLMN,IJKNO:*YP-Q,RSQ,TUV*YW-Q,RXVY:66(2:*YCV*Z[[\:*]^,_`+a,bJKS*Zcc\:Y,C, ^,d`+a@jk n0qHrPqVv^xpyxz{z} 1BSdu}%:ERj 14Ogmzf HjO  Y > z    d;,, ,AA+YeSYfS YgSYhSYiSYjSYkSYlSYmSYnSYoSY pSY YqSYrSYsSYtSYuSYvSYwSYxSYySY zSY {SBY|SY}SY~SYSYSYSYSYSYSY SY SY SY SY SYSYSYSYSYSYSYSYSYSYSYSYSYSYSYSYSYSYSY SY!SY"SY#SY$SY%SY&SY'SY(SY)SY*SY+SY,SY-SY.SY/SY0SY1SY2SY3SY4SY5SY6SY7SY8SY9SY:SY;SY<SY=SY>SY?SY@SYASYBSYCSYDSYESYFSYGSYHSYISYJSYKSYLSYMSYNSYOSYPSYQSYRSYSSYTSYUSYVSYWSYXSYYSYZSY[SY\SY]SY^SY_SY`SYaSYbSYcSYdSYeSYfSYgSYhSYiSYjSYkSYlSYmSYnSYoSYpSYqSYrSYsSYtSYuSYvSYwSYxSYyFSYzSY{SY|SY}SY~SYSYSYSYSYSYSYSYSYSYSHO =