opt-pos-chart-tmpl-with-tabs.html 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <html>
  2. <head>
  3. <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
  4. <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
  5. <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
  6. <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  7. <script type="text/javascript">
  8. google.load("visualization", "1.1", {packages:["bar", 'table','gauge']});
  9. // google.load('visualization', '1', {'packages':['table']});
  10. // google.load("visualization", "1.1", {packages:["corechart"]});
  11. google.setOnLoadCallback(drawChart);
  12. function drawChart() {
  13. var data = google.visualization.arrayToDataTable([
  14. ['Strike Price', 'P', 'C', ],
  15. {{{dataPCpos}}}
  16. ]);
  17. var dataTbl = google.visualization.arrayToDataTable([
  18. {{{dataTablePos}}}
  19. ]);
  20. var options = {
  21. width: 900,
  22. chart: {
  23. title: 'Option Postion Distribution. PUT:CALL Ratio [{{{PRvsCR}}}}]',
  24. subtitle: 'for the month of {{{option_months}}}',
  25. },
  26. };
  27. var chart = new google.charts.Bar(document.getElementById('barchart_material'));
  28. chart.draw(data, options);
  29. // chart table display implied volatilities in a nicely formatted table
  30. var chartTbl = new google.visualization.Table(document.getElementById('chartTbl_div'));
  31. //var portTbl = new google.visualization.Table(document.getElementById('portTblDiv'));
  32. var formatter = new google.visualization.NumberFormat({pattern:'0.00'});
  33. for (var i = 2; i < 9; i++)
  34. formatter.format(dataTbl, i);
  35. var options2 = {
  36. displayAnnotations: true,
  37. showRowNumber: true, width: '100%', height: '100%', allowHtml: true,
  38. };
  39. chartTbl.draw(dataTbl, options2);
  40. $('input[id="b_reload"]').click();
  41. ////////////////////////////////////////////////////////////////////////////////
  42. // guage functions
  43. var dataG = google.visualization.arrayToDataTable([
  44. ['Label', 'Value'],
  45. ['Delta', 0],
  46. ['Delta-C', 0],
  47. ['Delta-P', 0]
  48. ]);
  49. var optionsG = {
  50. width: 400, height: 120,
  51. redFrom: -50, redTo: -25,
  52. yellowFrom:-24, yellowTo: -15,
  53. greenFrom: -10, greenTo: 10,
  54. minorTicks: 5,
  55. min: -50, max: 50
  56. };
  57. var dataT = google.visualization.arrayToDataTable([
  58. ['Label', 'Value'],
  59. ['Theta', 0],
  60. ['Theta-C', 0],
  61. ['Theta-P', 0]
  62. ]);
  63. var optionsT = {
  64. width: 400, height: 120,
  65. redFrom: -3000, redTo: -2000,
  66. yellowFrom:-1999, yellowTo: 500,
  67. greenFrom: 5000, greenTo: 15000,
  68. minorTicks: 5,
  69. min: -3000, max: 15000
  70. };
  71. var gchart = new google.visualization.Gauge(document.getElementById('chart_div'));
  72. // refreshPortSummary();
  73. // gchart.draw(dataG, optionsG);
  74. var tchart = new google.visualization.Gauge(document.getElementById('chartTheta_div'));
  75. refreshPortSummary();
  76. function refreshPortSummary(){
  77. $.ajax({
  78. type: 'Post',
  79. url: '/ws_port_summary',
  80. success: function (data) {
  81. //alert(data);
  82. var jdata = JSON.parse(data);
  83. $('#temp').text(data);
  84. //alert(jdata.delta_all);
  85. dataG.setValue(0, 1, Math.round(jdata.delta_all*100)/100);
  86. dataG.setValue(1, 1, Math.round(jdata.delta_c*100)/100);
  87. dataG.setValue(2, 1, Math.round(jdata.delta_p*100)/100);
  88. gchart.draw(dataG, optionsG);
  89. dataT.setValue(0, 1, Math.round(jdata.theta_all));
  90. dataT.setValue(1, 1, Math.round(jdata.theta_c));
  91. dataT.setValue(2, 1, Math.round(jdata.theta_p));
  92. tchart.draw(dataT, optionsT);
  93. $('#pt_status').text("Unreal P/L: " + Math.round(jdata.unreal_pl*100)/100 + " Cal Status: " + jdata.status);
  94. }
  95. });
  96. };
  97. setInterval(function() {
  98. refreshPortSummary();
  99. }, 9500);
  100. } // end drawChart
  101. //})
  102. // });
  103. </script>
  104. <script>
  105. $(function() {
  106. $( "#tabs" ).tabs();
  107. });
  108. </script>
  109. </head>
  110. <body>
  111. <div id="tabs">
  112. <ul>
  113. <li><a href="#tabs-1">Dashboard</a></li>
  114. <li><a href="#tabs-2">Position Distribution</a></li>
  115. <li><a href="#tabs-3">Risk Distribution</a></li>
  116. </ul>
  117. <div id="tabs-1">
  118. <div id='pt_status'></div>
  119. <div id="chart_div" style="width: 400px; height: 120px;"></div>
  120. <div id="chartTheta_div" style="width: 400px; height: 120px;"></div>
  121. </div>
  122. <div id="tabs-2">
  123. <div id="barchart_material" style="width: 900px; height: 500px;"></div>
  124. </div>
  125. <div id="tabs-3">
  126. <div id='chartTbl_div' style='width: 900px; height: 500px;'></div>
  127. </div>
  128. </div>
  129. </body>
  130. </html>