Soonsu_chart.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. //차트를 선택하여 포현한다.
  2. function dataCharPicture()
  3. {
  4. var arArg = arguments;
  5. if (arArg.length <= 0)
  6. {
  7. return;
  8. }
  9. switch (arArg[0])
  10. {
  11. case "line":
  12. {
  13. dataCharPicture_line(arArg[1], arArg[3], arArg[4], arArg[5], arArg[6], arArg[7], arArg[2]);
  14. break;
  15. }
  16. case "column":
  17. {
  18. dataCharPicture_column(arArg[1], arArg[3], arArg[4], arArg[5], arArg[6], arArg[7], arArg[2]);
  19. break;
  20. }
  21. case "pie":
  22. {
  23. dataCharPicture_pie(arArg[1], arArg[3], arArg[4], arArg[5], arArg[6], arArg[7], arArg[2]);
  24. break;
  25. }
  26. }
  27. }
  28. //line으로 그려준다.
  29. function dataCharPicture_line()
  30. {
  31. var arArg = arguments;
  32. if (arArg.length <= 0)
  33. {
  34. return;
  35. }
  36. if (null != arArg[4] && null != arArg[5])
  37. {
  38. var heCont = document.getElementById("container");
  39. heCont.style.width = parseInt(arArg[4]) + "px";
  40. heCont.style.height = parseInt(arArg[5]) + "px";
  41. }
  42. var objPrint = arArg[0]?{}:{buttons : null};
  43. var strTitle = arArg[1];
  44. var arCategories = arArg[2].split("^");
  45. var arSeries = new Array();
  46. var arSeqData = arArg[3].split("|");
  47. var arStatus = new Array();
  48. for (var i=0; i<arSeqData.length; i++)
  49. {
  50. var arStrList = arSeqData[i].split("^");
  51. var strName = arStrList[0];
  52. var arData = new Array();
  53. for (var j=1; j<arStrList.length; j++)
  54. {
  55. if ("" == arStrList[j])
  56. {
  57. arData.push(null);
  58. //arCategories = arCategories.slice(j-1,j-1);
  59. }
  60. else
  61. {
  62. if (isNaN(parseFloat(arStrList[j])))
  63. {
  64. arData.push(null);
  65. //arCategories = arCategories.slice(j-1,j-1);
  66. }
  67. else
  68. {
  69. arData.push(parseFloat(arStrList[j]));
  70. arStatus[j-1] = true;
  71. }
  72. }
  73. }
  74. arSeries.push({
  75. name: strName,
  76. data: arData
  77. });
  78. }
  79. var nDataLength = arCategories.length;
  80. var ntempCnt = 0;
  81. for (var i=0; i<nDataLength; i++)
  82. {
  83. if (!arStatus[i])
  84. {
  85. arCategories.splice(ntempCnt,1);
  86. for (var j=0; j<arSeries.length; j++)
  87. {
  88. arSeries[j].data.splice(ntempCnt,1);
  89. }
  90. }
  91. else
  92. {
  93. ntempCnt++;
  94. }
  95. }
  96. $(document).ready(function() {
  97. chart = new Highcharts.Chart({
  98. chart: {
  99. renderTo: 'container',
  100. defaultSeriesType: 'line',
  101. marginRight: 130,
  102. marginBottom: 25
  103. },
  104. credits: {
  105. enabled: false
  106. },
  107. exporting:objPrint,
  108. title: {
  109. text: arArg[6],
  110. x: -20 //center
  111. },
  112. subtitle: {
  113. text: '',
  114. x: -20
  115. },
  116. xAxis: {
  117. categories: arCategories
  118. },
  119. yAxis: {
  120. title: {
  121. text: strTitle
  122. },
  123. plotLines: [{
  124. value: 0,
  125. width: 1,
  126. color: '#808080'
  127. }]
  128. },
  129. tooltip: {
  130. formatter: function() {
  131. return '<b>'+ this.series.name +'</b><br/>'+
  132. this.x +': '+ this.y ;
  133. }
  134. },
  135. legend: {
  136. layout: 'vertical',
  137. align: 'right',
  138. verticalAlign: 'top',
  139. x: -10,
  140. y: 100,
  141. borderWidth: 0
  142. },
  143. series: arSeries
  144. });
  145. });
  146. }
  147. //column 그려준다
  148. function dataCharPicture_column()
  149. {
  150. var arArg = arguments;
  151. if (arArg.length <= 0)
  152. {
  153. return;
  154. }
  155. if (null != arArg[4] && null != arArg[5])
  156. {
  157. var heCont = document.getElementById("container");
  158. heCont.style.width = parseInt(arArg[4]) + "px";
  159. heCont.style.height = parseInt(arArg[5]) + "px";
  160. }
  161. var objPrint = arArg[0]?{}:{buttons : null};
  162. var strTitle = arArg[1];
  163. var heTable = document.getElementById("datatable");
  164. document.body.removeChild(heTable);
  165. heTable = document.createElement("table");
  166. var heHead = document.createElement("thead");
  167. var heBody = document.createElement("tbody");
  168. heTable.id = "datatable";
  169. heTable.style.display = "none";
  170. heTable.appendChild(heHead);
  171. heTable.appendChild(heBody);
  172. for (var i=2; i<4; i++)
  173. {
  174. if (2 == i)
  175. {
  176. var arData = arArg[i].split("^");
  177. var heTr = document.createElement("tr");
  178. heHead.appendChild(heTr);
  179. heTr.appendChild(document.createElement("th"));
  180. for (var j=0; j<arData.length; j++)
  181. {
  182. var heTh = document.createElement("th");
  183. heTh.innerHTML = arData[j];
  184. heTr.appendChild(heTh);
  185. }
  186. }
  187. else
  188. {
  189. var arSeqData = arArg[i].split("|");
  190. for (var k=0; k<arSeqData.length; k++)
  191. {
  192. var arData = arSeqData[k].split("^");
  193. var heTr = document.createElement("tr");
  194. heBody.appendChild(heTr);
  195. for (var j=0; j<arData.length; j++)
  196. {
  197. if (0 == j)
  198. {
  199. var heTh = document.createElement("th");
  200. heTh.innerHTML = arData[j];
  201. heTr.appendChild(heTh);
  202. }
  203. else
  204. {
  205. var heTd = document.createElement("td");
  206. heTd.innerHTML = arData[j];
  207. heTr.appendChild(heTd);
  208. }
  209. }
  210. }
  211. }
  212. }
  213. document.body.appendChild(heTable);
  214. $(document).ready(function() {
  215. var table = document.getElementById('datatable'),
  216. options = {
  217. chart: {
  218. renderTo: 'container',
  219. defaultSeriesType: 'column'
  220. },
  221. credits: {
  222. enabled: false
  223. },
  224. exporting:objPrint,
  225. title: {
  226. text: arArg[6]
  227. },
  228. xAxis: {
  229. },
  230. yAxis: {
  231. title: {
  232. text: strTitle
  233. }
  234. },
  235. tooltip: {
  236. formatter: function() {
  237. return '<b>'+ this.series.name +'</b><br/>'+
  238. this.x.toLowerCase() + ':' + this.y ;
  239. }
  240. }
  241. };
  242. Highcharts.visualize(table, options);
  243. });
  244. }
  245. //pie으로 그려준다.
  246. function dataCharPicture_pie()
  247. {
  248. var arArg = arguments;
  249. if (arArg.length <= 0)
  250. {
  251. return;
  252. }
  253. if (null != arArg[4] && null != arArg[5])
  254. {
  255. var heCont = document.getElementById("container");
  256. heCont.style.width = parseInt(arArg[4]) + "px";
  257. heCont.style.height = parseInt(arArg[5]) + "px";
  258. }
  259. var objPrint = arArg[0]?{}:{buttons : null};
  260. var strTitle = arArg[1];
  261. var arCategories = arArg[2].split("^");
  262. var arSeries = new Array();
  263. var arSeqData = arArg[3].split("|");
  264. var arDataMatrix = new Array();
  265. for (var i=0; i<arSeqData.length; i++)
  266. {
  267. var arStrList = arSeqData[i].split("^");
  268. arDataMatrix.push(arStrList);
  269. }
  270. var arData = new Array();
  271. for (var i=0; i<arCategories.length; i++)
  272. {
  273. var arPieData = new Array();
  274. var nTotal = 0;
  275. for (var j=0; j<arSeqData.length; j++)
  276. {
  277. nTotal += parseFloat(arDataMatrix[j][i+1]);
  278. }
  279. if (0 == i)
  280. {
  281. arData.push({
  282. name : arCategories[i],
  283. y : nTotal,
  284. sliced: true,
  285. selected: true
  286. }
  287. );
  288. }
  289. else
  290. {
  291. arPieData.push(arCategories[i]);
  292. arPieData.push(nTotal);
  293. arData.push(arPieData);
  294. }
  295. }
  296. arSeries.push({
  297. type: 'pie',
  298. name: strTitle,
  299. data: arData
  300. });
  301. $(document).ready(function() {
  302. chart = new Highcharts.Chart({
  303. chart: {
  304. renderTo: 'container',
  305. plotBackgroundColor: null,
  306. plotBorderWidth: null,
  307. plotShadow: false
  308. },
  309. credits: {
  310. enabled: false
  311. },
  312. exporting:objPrint,
  313. title: {
  314. text: arArg[6]
  315. },
  316. plotOptions: {
  317. pie: {
  318. allowPointSelect: true,
  319. cursor: 'pointer',
  320. dataLabels: {
  321. enabled: true,
  322. color: '#000000',
  323. connectorColor: '#000000',
  324. formatter: function() {
  325. return '<b>'+ this.point.name +'</b>: '+ this.y ;
  326. }
  327. }
  328. }
  329. },
  330. series:arSeries,
  331. tooltip: {
  332. formatter: function() {
  333. return '<b>'+ this.point.name +'</b>: '+ this.y ;
  334. }
  335. }
  336. });
  337. });
  338. }
  339. function dataCharPicture_combo()
  340. {
  341. var arArg = arguments;
  342. if (arArg.length <= 0)
  343. {
  344. return;
  345. }
  346. var objPrint = arArg[0]?{}:{buttons : null};
  347. var strTitle = arArg[1];
  348. var arCategories = arArg[2].split("^");
  349. var arSeries = new Array();
  350. var arSeqData = arArg[3].split("|");
  351. var arDataMatrix = new Array();
  352. for (var i=0; i<arSeqData.length; i++)
  353. {
  354. var arStrList = arSeqData[i].split("^");
  355. arDataMatrix.push(arStrList);
  356. }
  357. var arData = new Array();
  358. for (var i=0; i<arCategories.length; i++)
  359. {
  360. var arPieData = new Array();
  361. var nTotal = 0;
  362. for (var j=0; j<arSeqData.length; j++)
  363. {
  364. nTotal += parseInt(arDataMatrix[j][i+1]);
  365. }
  366. if (0 == i)
  367. {
  368. arData.push({
  369. name : arCategories[i],
  370. y : nTotal,
  371. sliced: true,
  372. selected: true
  373. }
  374. );
  375. }
  376. else
  377. {
  378. arPieData.push(arCategories[i]);
  379. arPieData.push(nTotal);
  380. arData.push(arPieData);
  381. }
  382. }
  383. arSeries.push({
  384. type: 'pie',
  385. name: strTitle,
  386. data: arData
  387. });
  388. $(document).ready(function() {
  389. chart = new Highcharts.Chart({
  390. chart: {
  391. renderTo: 'container'
  392. },
  393. title: {
  394. text: 'Combination chart'
  395. },
  396. xAxis: {
  397. categories: ['Apples', 'Oranges', 'Pears', 'Bananas', 'Plums']
  398. },
  399. tooltip: {
  400. formatter: function() {
  401. var s;
  402. if (this.point.name) { // the pie chart
  403. s = ''+
  404. this.point.name +': '+ this.y +' fruits';
  405. } else {
  406. s = ''+
  407. this.x +': '+ this.y;
  408. }
  409. return s;
  410. }
  411. },
  412. labels: {
  413. items: [{
  414. html: 'Total fruit consumption',
  415. style: {
  416. left: '40px',
  417. top: '8px',
  418. color: 'black'
  419. }
  420. }]
  421. },
  422. series: [{
  423. type: 'column',
  424. name: 'Jane',
  425. data: [3, 2, 1, 3, 4]
  426. }, {
  427. type: 'column',
  428. name: 'John',
  429. data: [2, 3, 5, 7, 6]
  430. }, {
  431. type: 'column',
  432. name: 'Joe',
  433. data: [4, 3, 3, 9, 0]
  434. }, {
  435. type: 'spline',
  436. name: 'Average',
  437. data: [3, 2.67, 3, 6.33, 3.33]
  438. }, {
  439. type: 'pie',
  440. name: 'Total consumption',
  441. data: [{
  442. name: 'Jane',
  443. y: 13,
  444. color: '#4572A7' // Jane's color
  445. }, {
  446. name: 'John',
  447. y: 23,
  448. color: '#AA4643' // John's color
  449. }, {
  450. name: 'Joe',
  451. y: 19,
  452. color: '#89A54E' // Joe's color
  453. }],
  454. center: [100, 80],
  455. size: 100,
  456. showInLegend: false,
  457. dataLabels: {
  458. enabled: false
  459. }
  460. }]
  461. });
  462. });
  463. }