<!DOCTYPE html> <html> <head> <title>Pyramid Charts 2</title> <link class="include" rel="stylesheet" type="text/css" href="../jquery.jqplot.min.css" /> <link rel="stylesheet" type="text/css" href="examples.min.css" /> <link type="text/css" rel="stylesheet" href="syntaxhighlighter/styles/shCoreDefault.min.css" /> <link type="text/css" rel="stylesheet" href="syntaxhighlighter/styles/shThemejqPlot.min.css" /> <!--[if lt IE 9]><script language="javascript" type="text/javascript" src="../excanvas.js"></script><![endif]--> <script class="include" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> </head> <body> <div id="header"> <div class="nav"> <a class="nav" href="../../../index.php"><span>></span>Home</a> <a class="nav" href="../../../docs/"><span>></span>Docs</a> <a class="nav" href="../../download/"><span>></span>Download</a> <a class="nav" href="../../../info.php"><span>></span>Info</a> <a class="nav" href="../../../donate.php"><span>></span>Donate</a> </div> </div> <div class="colmask leftmenu"> <div class="colleft"> <div class="col1" id="example-content"> <!-- Example scripts go here --> <link class="include" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/themes/smoothness/jquery-ui.css" rel="Stylesheet" /> <style type="text/css"> .chart-container { border: 1px solid darkblue; padding: 30px; width: 600px; height: 700px; } #chart1 { width: 96%; height: 96%; } .jqplot-datestamp { font-size: 0.8em; color: #777; /* margin-top: 1em; text-align: right;*/ font-style: italic; position: absolute; bottom: 15px; right: 15px; } td.controls li { list-style-type: none; } td.controls ul { margin-top: 0.5em; padding-left: 0.2em; } pre.code { margin-top: 45px; clear: both; } </style> <table class="app"> <td class="controls"> <div style="margin-bottom: 15px;"> Axes: <select name="axisPosition"> <option value="both">Left & Right</option> <option value = "left">Left</option> <option value = "right">Right</option> <option value = "mid">Mid</option> </select> </div> <div> Background Color: <ul> <li><input name="backgroundColor" value="white" type="radio" checked />Default</li> <li><input name="backgroundColor" value="#efefef" type="radio" />Gray</li> </ul> </div> <div> Pyramid Color: <ul> <li><input name="seriesColor" value="green" type="radio" checked />Green</li> <li><input name="seriesColor" value="blue" type="radio" />Blue</li> </ul> </div> <div> Grids: <ul> <li><input name="gridsVertical" value="vertical" type="checkbox" checked />Vertical</li> <li><input name="gridsHorizontal" value="horizontal" type="checkbox" checked />Horizontal</li> <li><input name="showMinorTicks" value="true" type="checkbox" />Only major</li> <li><input name="plotBands" value="true" type="checkbox" />Plot Bands</li> </ul> </div> <div> <ul> <li><input name="barPadding" value="4" type="checkbox" checked />Gap between bars</li> <!-- value for showContour is speed at which to fade lines in/out --> <li><input name="showContour" value="500" type="checkbox" />Comparison Line</li> </ul> </div> <div class="tooltip"> <table> <tr> <td>Age: </td><td><div class="tooltip-item" id="tooltipAge"> </div></td> </tr> <tr> <td>Male: </td><td><div class="tooltip-item" id="tooltipMale"> </div></td> </tr> <tr> <td>Female: </td><td><div class="tooltip-item" id="tooltipFemale"> </div></td> </tr> <tr> <td>Ratio: </td><td><div class="tooltip-item" id="tooltipRatio"> </div></td> </tr> </table> </div> </td> <td class="chart"> <div class="chart-container"> <div id="chart1"></div> <div class="jqplot-datestamp"></div> </div> </td> </table> <pre class="code brush:js"></pre> <script class="code" type="text/javascript" language="javascript"> $(document).ready(function(){ // the "x" values from the data will go into the ticks array. // ticks should be strings for this case where we have values like "75+" var ticks = ["0-4", "5-9", "10-14", "15-19", "20-24", "25-29", "30-34", "35-39", "40-44", "45-49", "50-54", "55-59", "60-64", "65-69", "70-74", "75+"]; // The "y" values of the data are put into seperate series arrays. var male = [4.425251, 5.064975, 4.401382, 3.787731, 2.306403, 3.110203, 2.824716, 3.846422, 3.067799, 2.936013, 2.505067, 2.018346, 1.90446, 1.357237, 0.909704, 0.988836]; var female = [4.28698, 4.343237, 4.710053, 3.99281, 2.811107, 3.191518, 4.855351, 4.62347, 4.032976, 4.414623, 3.210845, 2.426347, 2.635736, 1.811459, 1.515899, 1.683044]; var male2 = [1.445677, 2.088224, 2.159879, 2.401152, 3.701622, 3.897444, 5.048783, 4.367545, 3.304588, 3.784367, 3.059088, 2.052513, 1.412907, 0.934326, 0.541234, 0.784258]; var female2 =[2.238284, 2.974165, 2.360351, 3.03517, 4.80941, 6.229139, 7.257596, 5.847782, 5.226342, 6.201237, 4.474141, 2.769444, 2.048169, 1.47749, 0.87372, 1.193951]; // Custom color arrays are set up for each series to get the look that is desired. // Two color arrays are created for the default and optional color which the user can pick. var greenColors = ["#526D2C", "#77933C", "#C57225", "#C57225"]; var blueColors = ["#3F7492", "#4F9AB8", "#C57225", "#C57225"]; // To accomodate changing y axis, need to keep track of plot options. // changing axes will require recreating the plot, so need to keep // track of state changes. var plotOptions = { // We set up a customized title which acts as labels for the left and right sides of the pyramid. title: '<div style="float:left;width:50%;text-align:center">Male</div><div style="float:right;width:50%;text-align:center">Female</div>', // by default, the series will use the green color scheme. seriesColors: greenColors, grid: { drawBorder: false, shadow: false, background: "white", rendererOptions: { // plotBands is an option of the pyramidGridRenderer. // it will put banding at starting at a specified value // along the y axis with an adjustable interval. plotBands: { show: false, interval: 2 } }, }, // This makes the effective starting value of the axes 0 instead of 1. // For display, the y axis will use the ticks we supplied. defaultAxisStart: 0, seriesDefaults: { renderer: $.jqplot.PyramidRenderer, rendererOptions: { barPadding: 4 }, yaxis: "yaxis", shadow: false }, // We have 4 series, the left and right pyramid bars and // the left and rigt overlay lines. series: [ // For pyramid plots, the default side is right. // We want to override here to put first set of bars // on left. { rendererOptions:{ side: 'left', synchronizeHighlight: 1 } }, { yaxis: "y2axis", rendererOptions:{ synchronizeHighlight: 0 } }, // Pyramid series are filled bars by default. // The overlay series will be unfilled lines. { rendererOptions: { fill: false, side: "left" } }, { yaxis: "y2axis", rendererOptions: { fill: false } } ], // Set up all the y axes, since users are allowed to switch between them. // The only axis that will show is the one that the series are "attached" to. // We need the appropriate options for the others for when the user switches. axes: { xaxis: { tickOptions: {}, rendererOptions: { baselineWidth: 2 } }, yaxis: { label: "Age", // Use canvas label renderer to get rotated labels. labelRenderer: $.jqplot.CanvasAxisLabelRenderer, // include empty tick options, they will be used // as users set options with plot controls. tickOptions: {}, showMinorTicks: true, ticks: ticks, rendererOptions: { category: true, baselineWidth: 2 } }, yMidAxis: { label: "Age", // include empty tick options, they will be used // as users set options with plot controls. tickOptions: {}, showMinorTicks: true, ticks: ticks, rendererOptions: { category: true, baselineWidth: 2 } }, y2axis: { label: "Age", // Use canvas label renderer to get rotated labels. labelRenderer: $.jqplot.CanvasAxisLabelRenderer, // include empty tick options, they will be used // as users set options with plot controls. tickOptions: {}, showMinorTicks: true, ticks: ticks, rendererOptions: { category: true, baselineWidth: 2 } } } }; // initialize form elements // set these before attaching event handlers. $("input[type=checkbox][name=gridsVertical]").attr("checked", true); $("input[type=checkbox][name=gridsHorizontal]").attr("checked", true); $("input[type=checkbox][name=showMinorTicks]").attr("checked", false); $("input[type=checkbox][name=plotBands]").attr("checked", false); $("input[type=checkbox][name=showContour]").attr("checked", true); $("input[type=checkbox][name=barPadding]").attr("checked", true); $("select[name=axisPosition]").val("both"); $("input[type=radio][name=backgroundColor]").attr("checked", false); $("input[type=radio][name=backgroundColor][value=white]").attr("checked", true); $("input[type=radio][name=backgroundColor]").attr("checked", false); $("input[type=radio][name=backgroundColor][value=white]").attr("checked", true); $("input[type=radio][name=seriesColor]").attr("checked", false); $("input[type=radio][name=seriesColor][value=green]").attr("checked", true); plot1 = $.jqplot("chart1", [male, female, male2, female2], plotOptions); // After plot creation, check to see if contours should be displayed checkContour(); ////// // The followng functions use verbose css selectors to make // it clear exactly which elements they are binging to/operating on ////// ////// // Function which checkes if the countour lines checkbox is checked. // If not, hide the contour lines. ////// function checkContour() { if (!$("input[type=checkbox][name=showContour]").get(0).checked) { plot1.series[2].canvas._elem.addClass("jqplot-series-hidden"); plot1.series[2].canvas._elem.hide(); plot1.series[3].canvas._elem.addClass("jqplot-series-hidden"); plot1.series[3].canvas._elem.hide(); } } $("select[name=axisPosition]").change(function(){ // this refers to the html element we are binding to. // $(this) is jQuery object on that element. switch ($(this).val()) { case "both": plotOptions.series[0].yaxis = "yaxis"; plotOptions.series[1].yaxis = "y2axis"; plotOptions.series[2].yaxis = "yaxis"; plotOptions.series[3].yaxis = "y2axis"; break; case "left": plotOptions.series[0].yaxis = "yaxis"; plotOptions.series[1].yaxis = "yaxis"; plotOptions.series[2].yaxis = "yaxis"; plotOptions.series[3].yaxis = "yaxis"; break; case "right": plotOptions.series[0].yaxis = "y2axis"; plotOptions.series[1].yaxis = "y2axis"; plotOptions.series[2].yaxis = "y2axis"; plotOptions.series[3].yaxis = "y2axis"; break; case "mid": plotOptions.series[0].yaxis = "yMidAxis"; plotOptions.series[1].yaxis = "yMidAxis"; plotOptions.series[2].yaxis = "yMidAxis"; plotOptions.series[3].yaxis = "yMidAxis"; break; default: break; } plot1.destroy(); plot1 = $.jqplot("chart1", [male, female, male2, female2], plotOptions); // Finally, check to see if we need to hide contour lines. checkContour(); }); $("input[type=radio][name=backgroundColor]").change(function(){ // this refers to the html element we are binding to. // $(this) is jQuery object on that element. plot1.grid.background = $(this).val(); plotOptions.grid.background = $(this).val(); plot1.replot(); // Finally, check to see if we need to hide contour lines. checkContour(); }); $("input[type=radio][name=seriesColor]").change(function(){ // this refers to the html element we are binding to. // $(this) is jQuery object on that element. if ($(this).val() === "blue") { // reset highlight colors so they will be recalculated. plot1.series[0].highlightColors = []; plot1.series[1].highlightColors = []; // reset series color to properly calculate highlight color. plot1.series[0].color = blueColors[0]; plot1.series[1].color = blueColors[1]; // to actually draw a new color, have to set the color on the shaperenderer. plot1.series[0].renderer.shapeRenderer.fillStyle = blueColors[0]; plot1.series[1].renderer.shapeRenderer.fillStyle = blueColors[1]; // update plot options state. plotOptions.seriesColors = blueColors; } else if ($(this).val() === "green") { // reset highlight colors so they will be recalculated. plot1.series[0].highlightColors = []; plot1.series[1].highlightColors = []; // reset series color to properly calculate highlight color. plot1.series[0].color = greenColors[0]; plot1.series[1].color = greenColors[1]; // to actually draw a new color, have to set the color on the shaperenderer. plot1.series[0].renderer.shapeRenderer.fillStyle = greenColors[0]; plot1.series[1].renderer.shapeRenderer.fillStyle = greenColors[1]; // update plot options state. plotOptions.seriesColors = blueColors; } plot1.replot(); // Finally, check to see if we need to hide contour lines. checkContour(); }); $("input[type=checkbox][name=gridsVertical]").change(function(){ // this refers to the html element we are binding to. // $(this) is jQuery object on that element. plot1.axes.xaxis.tickOptions.showGridline = this.checked; plotOptions.axes.xaxis.tickOptions.showGridline = this.checked; plot1.replot(); // Finally, check to see if we need to hide contour lines. checkContour(); }); $("input[type=checkbox][name=gridsHorizontal]").change(function(){ // this refers to the html element we are binding to. // $(this) is jQuery object on that element. plot1.axes.yaxis.tickOptions.showGridline = this.checked; plot1.axes.y2axis.tickOptions.showGridline = this.checked; plot1.axes.yMidAxis.tickOptions.showGridline = this.checked; plotOptions.axes.yaxis.tickOptions.showGridline = this.checked; plotOptions.axes.y2axis.tickOptions.showGridline = this.checked; plotOptions.axes.yMidAxis.tickOptions.showGridline = this.checked; plot1.replot(); // Finally, check to see if we need to hide contour lines. checkContour(); }); $("input[type=checkbox][name=showMinorTicks]").change(function(){ // this refers to the html element we are binding to. // $(this) is jQuery object on that element. plot1.axes.yaxis.showMinorTicks = !this.checked; plot1.axes.y2axis.showMinorTicks = !this.checked; plot1.axes.yMidAxis.showMinorTicks = !this.checked; plotOptions.axes.yaxis.showMinorTicks = !this.checked; plotOptions.axes.y2axis.showMinorTicks = !this.checked; plotOptions.axes.yMidAxis.showMinorTicks = !this.checked; plot1.replot(); // Finally, check to see if we need to hide contour lines. checkContour(); }); $("input[type=checkbox][name=plotBands]").change(function(){ // this refers to the html element we are binding to. // $(this) is jQuery object on that element. plot1.grid.plotBands.show = this.checked; plotOptions.grid.rendererOptions.plotBands.show = this.checked; plot1.replot(); // Finally, check to see if we need to hide contour lines. checkContour(); }); $("input[type=checkbox][name=showContour]").change(function(){ // this refers to the html element we are binding to. // $(this) is jQuery object on that element. var speed = $(this).val(); if (this.checked) { plot1.series[2].canvas._elem.removeClass("jqplot-series-hidden"); plot1.series[2].canvas._elem.fadeIn(speed); plot1.series[3].canvas._elem.removeClass("jqplot-series-hidden"); plot1.series[3].canvas._elem.fadeIn(speed); } else { plot1.series[2].canvas._elem.addClass("jqplot-series-hidden"); plot1.series[2].canvas._elem.fadeOut(speed); plot1.series[3].canvas._elem.addClass("jqplot-series-hidden"); plot1.series[3].canvas._elem.fadeOut(speed); } }); $("input[type=checkbox][name=barPadding]").change(function(){ // this refers to the html element we are binding to. // $(this) is jQuery object on that element. if (this.checked) { var val = parseFloat($(this).val()); plot1.series[0].barPadding = val; plot1.series[1].barPadding = val; plotOptions.seriesDefaults.rendererOptions.barPadding = val; } else { plot1.series[0].barPadding = 0; plot1.series[1].barPadding = 0; plotOptions.seriesDefaults.rendererOptions.barPadding = 0; } plot1.replot(); // Finally, check to see if we need to hide contour lines. checkContour(); }); // bind to the data highlighting event to make custom tooltip: $(".jqplot-target").bind("jqplotDataHighlight", function(evt, seriesIndex, pointIndex, data) { // Here, assume first series is male poulation and second series is female population. // Adjust series indices as appropriate. var malePopulation = Math.abs(plot1.series[0].data[pointIndex][1]); var femalePopulation = Math.abs(plot1.series[1].data[pointIndex][1]); var ratio = femalePopulation / malePopulation * 100; $("#tooltipMale").stop(true, true).fadeIn(250).html(malePopulation.toPrecision(4)); $("#tooltipFemale").stop(true, true).fadeIn(250).html(femalePopulation.toPrecision(4)); $("#tooltipRatio").stop(true, true).fadeIn(250).html(ratio.toPrecision(4)); // Since we don't know which axis is rendererd and acive with out a little extra work, // just use the supplied ticks array to get the age label. $("#tooltipAge").stop(true, true).fadeIn(250).html(ticks[pointIndex]); }); // bind to the data highlighting event to make custom tooltip: $(".jqplot-target").bind("jqplotDataUnhighlight", function(evt, seriesIndex, pointIndex, data) { // clear out all the tooltips. $(".tooltip-item").stop(true, true).fadeOut(200).html(''); }); // add a date at the bottom. var d = new $.jsDate(); $("div.jqplot-datestamp").html("Generated on "+d.strftime("%v")); $("div.chart-container").resizable({delay:20}); $("div.chart-container").bind("resize", function(event, ui) { plot1.replot(); }); }); </script> <!-- End example scripts --> <!-- Don't touch this! --> <script class="include" type="text/javascript" src="../jquery.jqplot.min.js"></script> <script type="text/javascript" src="syntaxhighlighter/scripts/shCore.min.js"></script> <script type="text/javascript" src="syntaxhighlighter/scripts/shBrushJScript.min.js"></script> <script type="text/javascript" src="syntaxhighlighter/scripts/shBrushXml.min.js"></script> <!-- End Don't touch this! --> <!-- Additional plugins go here --> <script class="include" type="text/javascript" src="../plugins/jqplot.categoryAxisRenderer.min.js"></script> <!-- load the pyramidAxis and Grid renderers in production. pyramidRenderer will try to load via ajax if not present, but that is not optimal and depends on paths being set. --> <script class="include" type="text/javascript" src="../plugins/jqplot.pyramidAxisRenderer.min.js"></script> <script class="include" type="text/javascript" src="../plugins/jqplot.pyramidGridRenderer.min.js"></script> <script class="include" type="text/javascript" src="../plugins/jqplot.pyramidRenderer.min.js"></script> <script class="include" type="text/javascript" src="../plugins/jqplot.canvasTextRenderer.min.js"></script> <script class="include" type="text/javascript" src="../plugins/jqplot.canvasAxisLabelRenderer.min.js"></script> <script class="include" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js"></script> <!-- End additional plugins --> </div> <div class="col2"> <div class="example-link"><a class="example-link" href="data-renderers.html">AJAX and JSON Data Loading via Data Renderers</a></div> <div class="example-link"><a class="example-link" href="barLineAnimated.html">Animated Charts</a></div> <div class="example-link"><a class="example-link" href="dashboardWidget.html">Animated Dashboard Sample - Filled Line with Log Axis</a></div> <div class="example-link"><a class="example-link" href="kcp_area.html">Area Chart</a></div> <div class="example-link"><a class="example-link" href="kcp_area2.html">Area Chart 2</a></div> <div class="example-link"><a class="example-link" href="axisLabelTests.html">Axis Labels</a></div> <div class="example-link"><a class="example-link" href="axisLabelsRotatedText.html">Axis Labels and Rotated Text</a></div> <div class="example-link"><a class="example-link" href="barTest.html">Bar Charts</a></div> <div class="example-link"><a class="example-link" href="multipleBarColors.html">Bar Colors Example</a></div> <div class="example-link"><a class="example-link" href="bezierCurve.html">Bezier Curve Plots</a></div> <div class="example-link"><a class="example-link" href="blockPlot.html">Block Plots</a></div> <div class="example-link"><a class="example-link" href="bubbleChart.html">Bubble Charts</a></div> <div class="example-link"><a class="example-link" href="bubble-plots.html">Bubble Plots</a></div> <div class="example-link"><a class="example-link" href="candlestick.html">Candlestick and Open Hi Low Close Charts</a></div> <div class="example-link"><a class="example-link" href="theming.html">Chart Theming</a></div> <div class="example-link"><a class="example-link" href="fillBetweenLines.html">Charts with Fill Between Lines</a></div> <div class="example-link"><a class="example-link" href="kcp_cdf.html">Cumulative Density Function Chart</a></div> <div class="example-link"><a class="example-link" href="dashedLines.html">Dashed Lines with Smoothing</a></div> <div class="example-link"><a class="example-link" href="cursor-highlighter.html">Data Point Highlighting, Tooltips and Cursor Tracking</a></div> <div class="example-link"><a class="example-link" href="point-labels.html">Data Point labels</a></div> <div class="example-link"><a class="example-link" href="date-axes.html">Date Axes</a></div> <div class="example-link"><a class="example-link" href="dateAxisRenderer.html">Date Axes 2</a></div> <div class="example-link"><a class="example-link" href="rotatedTickLabelsZoom.html">Date Axes, Rotated Labels and Zooming</a></div> <div class="example-link"><a class="example-link" href="canvas-overlay.html">Draw Lines on Plots - Canvas Overlay</a></div> <div class="example-link"><a class="example-link" href="draw-rectangles.html">Draw Rectangles on Plots</a></div> <div class="example-link"><a class="example-link" href="kcp_engel.html">Engel Curves</a></div> <div class="example-link"><a class="example-link" href="bandedLine.html">Error Bands and Confidence Intervals</a></div> <div class="example-link"><a class="example-link" href="area.html">Filled (Area) Charts</a></div> <div class="example-link"><a class="example-link" href="axisScalingForceTickAt.html">Force Plot to Have Tick at 0 or 100</a></div> <div class="example-link"><a class="example-link" href="hiddenPlotsInTabs.html">Hidden Plots</a></div> <div class="example-link"><a class="example-link" href="customHighlighterCursorTrendline.html">Highlighting, Dragging Points, Cursor and Trend Lines</a></div> <div class="example-link"><a class="example-link" href="line-charts.html">Line Charts and Options</a></div> <div class="example-link"><a class="example-link" href="kcp_lorenz.html">Lorenz Curves</a></div> <div class="example-link"><a class="example-link" href="mekkoCharts.html">Mekko Charts</a></div> <div class="example-link"><a class="example-link" href="meterGauge.html">Meter Gauge</a></div> <div class="example-link"><a class="example-link" href="candlestick-charts.html">Open Hi Low Close and Candlestick Charts</a></div> <div class="example-link"><a class="example-link" href="pieTest.html">Pie Charts and Options</a></div> <div class="example-link"><a class="example-link" href="pieTest4.html">Pie Charts and Options 2</a></div> <div class="example-link"><a class="example-link" href="pie-donut-charts.html">Pie and Donut Charts</a></div> <div class="example-link"><a class="example-link" href="selectorSyntax.html">Plot Creation with jQuery Selectors</a></div> <div class="example-link"><a class="example-link" href="zooming.html">Plot Zooming and Cursor Control</a></div> <div class="example-link"><a class="example-link" href="kcp_pdf.html">Probability Density Function Chart</a></div> <div class="example-link"><a class="example-link" href="kcp_pyramid_by_age.html">Pyramid Chart By Age</a></div> <div class="example-link"><a class="example-link" href="kcp_pyramid.html">Pyramid Charts</a></div> <div class="example-link"><a class="example-link" href="kcp_pyramid2.html">Pyramid Charts 2</a></div> <div class="example-link"><a class="example-link" href="kcp_quintiles.html">Quintile Pyramid Charts</a></div> <div class="example-link"><a class="example-link" href="resizablePlot.html">Resizable Plots</a></div> <div class="example-link"><a class="example-link" href="rotated-tick-labels.html">Rotated Labels and Font Styling</a></div> <div class="example-link"><a class="example-link" href="smoothedLine.html">Smoothed Lines</a></div> <div class="example-link"><a class="example-link" href="bar-charts.html">Vertical and Horizontal Bar Charts</a></div> <div class="example-link"><a class="example-link" href="waterfall.html">Waterfall Charts</a></div> <div class="example-link"><a class="example-link" href="waterfall2.html">Waterfall Charts 2</a></div> <div class="example-link"><a class="example-link" href="zoomOptions.html">Zoom Options</a></div> <div class="example-link"><a class="example-link" href="zoomProxy.html">Zoom Proxy - Control one plot from another</a></div> <div class="example-link"><a class="example-link" href="zoom1.html">Zooming</a></div> <div class="example-link"><a class="example-link" href="dateAxisLogAxisZooming.html">Zooming with Date and Log Axes</a></div> </div> </div> </div> <script type="text/javascript" src="example.min.js"></script> </body> </html>