Merge pull request #5844 from bcornwellmott/quoteditemplot-1
Added C3.JS Plot to compare quotes in Print view
diff --git a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.html b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.html
new file mode 100644
index 0000000..e26636e
--- /dev/null
+++ b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.html
@@ -0,0 +1,132 @@
+
+<head>
+
+
+ <link href="/assets/frappe/css/c3.min.css" rel="stylesheet" type="text/css">
+
+
+ <script type="text/javascript" src="/assets/frappe/js/lib/d3.min.js"></script>
+ <script type="text/javascript" src="/assets/frappe/js/lib/c3.min.js"></script>
+ <script type="text/javascript">
+
+ onReady("#chart_div", function() {
+ var chartData = [];
+ {% var q = 0; %}
+ {% for(var j=0, m=data.length+1; j<m; j++) { %}
+
+ var tempData{%=j%} = [];
+
+ {% for(var i=1, l=report.columns.length; i<l; i++) { %}
+ {% if(__(report.columns[i].label) != __("Quotation")) { %}
+
+ {% if(j == 0) { %}
+ {% if(i == 1) { %}
+ tempData{%=j%}[{%=i%}-1] = \"x\";
+ {% } else { %}
+
+ tempData{%=j%}[{%=i%}-1] = Math.log(parseInt(\"{%= report.columns[i].label %}\".replace(\"Qty: \",\"\"))) / Math.LN10;
+ {% } %}
+ {% } else { %}
+ {% if(i == 1) { %}
+ tempData{%=j%}[{%=i%}-1] = \"{%= data[j-1][report.columns[i].field] %} \";
+ {% } else { %}
+ tempData{%=j%}[{%=i%}-1] = {% if(data[j-1][report.columns[i].field] == "") { if (i > 2) { %}
+ tempData{%=j%}[{%=i%}-2]
+ {% } else { %}
+ 0
+ {% } } else { %}
+ {%= data[j-1][report.columns[i].field] %}
+ {% } %};
+ {% } %};
+ {% } %}
+ {% } else { %}
+ {% if(j == 0) { %}
+ {% if(i < l-1) { %}
+ tempData{%=j%}[{%=i%}-1] = Math.log(parseInt(\"{%= report.columns[i+1].label %}\".replace(\"Qty: \",\"\"))-1) / Math.LN10;
+ {% } else { %}
+ tempData{%=j%}[{%=i%}-1] = Math.log(2*parseInt(\"{%= report.columns[i-1].label %}\".replace(\"Qty: \",\"\"))) / Math.LN10;
+ {% } %}
+ {% } else { %}
+
+ tempData{%=j%}[{%=i%}-1] = tempData{%=j%}[{%=i%}-2];
+ {% } %}
+
+ {% } %}
+
+ {% } %}
+ chartData[{%=j%}] = tempData{%=j%};
+ {% } %}
+ console.log(chartData);
+
+ hold = {
+ bindto: "#chart_div" ,data: {
+ x: "x",
+ columns: chartData
+ },
+ axis: {
+ x: {
+ tick: {
+ format: function (x22) { return Math.pow(10,x22).toFixed(0); },
+ culling: {
+ max: {%=report.columns.length%} / 2
+ }
+
+ }
+ }
+ },
+ point: {
+ show: false
+ }
+ };
+ console.log(hold);
+ var chart = c3.generate(hold);
+ });
+
+ function onReady(selector, callback) {
+ var intervalID = window.setInterval(function() {
+ if (document.querySelector(selector) !== undefined) {
+ window.clearInterval(intervalID);
+ callback.call(this);
+ }
+ }, 500);}
+
+
+ </script>
+
+ </head>
+<div style="margin-bottom: 7px;" class="text-center">
+ {%= frappe.boot.letter_heads[frappe.defaults.get_default("letter_head")] %}
+</div>
+<h2 class="text-center">{%= __(report.report_name) %}</h2>
+<h4 class="text-center">{%= filters.item %} </h4>
+
+<hr>
+<table class="table table-bordered">
+ <thead>
+ <tr>
+ {% for(var i=0, l=report.columns.length; i<l; i++) { %}
+ <th style="width: 15%">{%= report.columns[i].label %}</th>
+ {% } %}
+
+ </tr>
+ </thead>
+ <tbody>
+
+ {% for(var i=0, l=data.length; i<l; i++) { %}
+ <tr>
+
+ {% for(var j=0,m=report.columns.length; j<m; j++) { %}
+ <td style="width: 15%">{%= data[i][report.columns[j].field] %}</td>
+ {% } %}
+
+ </tr>
+ {% } %}
+ </tbody>
+</table>
+
+<h4 class="text-center"> Analysis Chart </h4>
+<div id="chart_div"></div>
+
+
+
+<p class="text-right text-muted">Printed On {%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}</p>
\ No newline at end of file