widget-flot-charts.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. //[widget flot charts Javascript]
  2. //Project: Riday Admin - Responsive Admin Template
  3. //Primary use: Used only for the widget flot charts
  4. $(function () {
  5. /*
  6. * Flot Interactive Chart
  7. * -----------------------
  8. */
  9. // We use an inline data source in the example, usually data would
  10. // be fetched from a server
  11. var data = [], totalPoints = 1000
  12. function getRandomData() {
  13. if (data.length > 0)
  14. data = data.slice(1)
  15. // Do a random walk
  16. while (data.length < totalPoints) {
  17. var prev = data.length > 0 ? data[data.length - 1] : 50,
  18. y = prev + Math.random() * 10 - 5
  19. if (y < 0) {
  20. y = 0
  21. } else if (y > 200) {
  22. y = 200
  23. }
  24. data.push(y)
  25. }
  26. // Zip the generated y values with the x values
  27. var res = []
  28. for (var i = 0; i < data.length; ++i) {
  29. res.push([i, data[i]])
  30. }
  31. return res
  32. }
  33. var interactive_plot = $.plot('#interactive', [getRandomData()], {
  34. grid: {
  35. color: "#AFAFAF"
  36. , hoverable: true
  37. , borderWidth: 0
  38. , backgroundColor: 'rgba(255, 255, 255, 0)'
  39. },
  40. series: {
  41. shadowSize: 0, // Drawing is faster without shadows
  42. color : '#689f38'
  43. },
  44. tooltip: true,
  45. lines : {
  46. fill : false, //Converts the line chart to area chart
  47. color: '#689f38'
  48. },
  49. tooltipOpts: {
  50. content: "Visit: %y"
  51. , defaultTheme: false
  52. },
  53. yaxis : {
  54. min : 0,
  55. max : 200,
  56. show: true
  57. },
  58. xaxis : {
  59. show: true
  60. }
  61. })
  62. var updateInterval = 30 //Fetch data ever x milliseconds
  63. var realtime = 'on' //If == to on then fetch data every x seconds. else stop fetching
  64. function update() {
  65. interactive_plot.setData([getRandomData()])
  66. // Since the axes don't change, we don't need to call plot.setupGrid()
  67. interactive_plot.draw()
  68. if (realtime === 'on')
  69. setTimeout(update, updateInterval)
  70. }
  71. //INITIALIZE REALTIME DATA FETCHING
  72. if (realtime === 'on') {
  73. update()
  74. }
  75. //REALTIME TOGGLE
  76. $('#realtime .btn').click(function () {
  77. if ($(this).data('toggle') === 'on') {
  78. realtime = 'on'
  79. }
  80. else {
  81. realtime = 'off'
  82. }
  83. update()
  84. })
  85. /*
  86. * END INTERACTIVE CHART
  87. */
  88. /*
  89. * LINE CHART
  90. * ----------
  91. */
  92. //LINE randomly generated data
  93. var sin = [], cos = []
  94. for (var i = -0.1; i < 8; i += 0.5) {
  95. sin.push([i, Math.sin(i)])
  96. cos.push([i, Math.cos(i)])
  97. }
  98. var line_data1 = {
  99. data : sin,
  100. color: '#689f38'
  101. }
  102. var line_data2 = {
  103. data : cos,
  104. color: '#38649f'
  105. }
  106. $.plot('#line-chart', [line_data1, line_data2], {
  107. grid : {
  108. hoverable : true,
  109. borderColor: '#f3f3f3',
  110. borderWidth: 1,
  111. tickColor : '#f3f3f3'
  112. },
  113. series: {
  114. shadowSize: 0,
  115. lines : {
  116. show: true
  117. },
  118. points : {
  119. show: true
  120. }
  121. },
  122. lines : {
  123. fill : false,
  124. color: ['#689f38', '#38649f']
  125. },
  126. yaxis : {
  127. show: true
  128. },
  129. xaxis : {
  130. show: true
  131. }
  132. })
  133. //Initialize tooltip on hover
  134. $('<div class="tooltip-inner" id="line-chart-tooltip"></div>').css({
  135. position: 'absolute',
  136. display : 'none',
  137. opacity : 0.8
  138. }).appendTo('body')
  139. $('#line-chart').bind('plothover', function (event, pos, item) {
  140. if (item) {
  141. var x = item.datapoint[0].toFixed(2),
  142. y = item.datapoint[1].toFixed(2)
  143. $('#line-chart-tooltip').html(item.series.label + ' of ' + x + ' = ' + y)
  144. .css({ top: item.pageY + 5, left: item.pageX + 5 })
  145. .fadeIn(200)
  146. } else {
  147. $('#line-chart-tooltip').hide()
  148. }
  149. })
  150. /* END LINE CHART */
  151. /*
  152. * FULL WIDTH STATIC AREA CHART
  153. * -----------------
  154. */
  155. var areaData = [[3.5, 58.0], [4.5, 93.4], [5.5, 122.4], [6.5, 128.4], [7.5, 135.7], [8.5, 139.7],
  156. [9.5, 134.6], [10.5, 120.3], [11.5, 155.3], [12.5, 165.4], [13.5, 166.5], [14.5, 161.7], [15.5, 179.9],
  157. [16.5, 195.4], [17.5, 157.8], [18.5, 158.2], [19.5, 199.5], [20.5, 200.0]]
  158. $.plot('#area-chart', [areaData], {
  159. grid : {
  160. borderWidth: 0
  161. },
  162. series: {
  163. shadowSize: 0, // Drawing is faster without shadows
  164. color : '#389f99'
  165. },
  166. lines : {
  167. fill: true //Converts the line chart to area chart
  168. },
  169. yaxis : {
  170. show: true
  171. },
  172. xaxis : {
  173. show: true
  174. }
  175. })
  176. /* END AREA CHART */
  177. /*
  178. * BAR CHART
  179. * ---------
  180. */
  181. var bar_data = {
  182. data : [['Jan', 19], ['Feb', 25], ['Mar', 27], ['Apr', 28], ['May', 15], ['Jun', 6], ['Jul', 17], ['Aug', 7], ['Sep', 14], ['Oct', 24], ['Nov', 16], ['Dec', 2]],
  183. color: '#ee1044', borderWidth:'0.5'
  184. }
  185. $.plot('#bar-chart', [bar_data], {
  186. grid : {
  187. borderWidth: 1,
  188. borderColor: '#f3f3f3',
  189. tickColor : '#f3f3f3'
  190. },
  191. series: {
  192. bars: {
  193. show : true,
  194. barWidth: 0.5,
  195. lineWidth: 0,
  196. fillColor:'#ee1044',
  197. align : 'center',
  198. }
  199. },
  200. xaxis : {
  201. mode : 'categories',
  202. tickLength: 0
  203. }
  204. })
  205. /* END BAR CHART */
  206. /*
  207. * DONUT CHART
  208. * -----------
  209. */
  210. var donutData = [
  211. { label: 'Jan-Apr', data: 85, color: '#ee1044' },
  212. { label: 'May-Aug', data: 68, color: '#ff8f00' },
  213. { label: 'Sep-Dec', data: 42, color: '#689f38' }
  214. ]
  215. $.plot('#donut-chart', donutData, {
  216. series: {
  217. pie: {
  218. show : true,
  219. radius : 1,
  220. innerRadius: 0.3,
  221. label : {
  222. show : true,
  223. radius : 1,
  224. formatter : labelFormatter,
  225. threshold : 0.1,
  226. background : {opacity: 0.5,color: '#000'}
  227. }
  228. }
  229. },
  230. legend: {
  231. show: true
  232. },
  233. grid: {
  234. hoverable: true,
  235. clickable: true
  236. }
  237. })
  238. /*
  239. * END DONUT CHART
  240. */
  241. })
  242. /*
  243. * Custom Label formatter
  244. * ----------------------
  245. */
  246. function labelFormatter(label, series) {
  247. return '<div style="font-size:13px; text-align:center; padding:2px; color: #fff; font-weight: 600;">'
  248. + label
  249. + '<br>'
  250. + Math.round(series.percent) + '%</div>'
  251. }