You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

245 regels
9.5 KiB

  1. var ECharts = {
  2. ChartDataFormate: {
  3. FormateNOGroupData: function (data) {
  4. //data的格式如上的Result1,这种格式的数据,多用于饼图、单一的柱形图的数据源
  5. var categories = [];
  6. var datas = [];
  7. for (var i = 0; i < data.length; i++) {
  8. categories.push(data[i].name || "");
  9. datas.push({ name: data[i].name, value: data[i].value || 0 });
  10. }
  11. return { category: categories, data: datas };
  12. },
  13. FormateGroupData: function (data, type, is_stack) {
  14. //data[{name:"",value:"",group:""},...]
  15. //data的格式如上的Result2,type为要渲染的图表类型:可以为line,bar,is_stack表示为是否是堆积图,这种格式的数据多用于展示多条折线图、分组的柱图
  16. var chart_type = 'line';
  17. if (type)
  18. chart_type = type || 'line';
  19. var xAxis = [];
  20. var group = [];
  21. var series = [];
  22. for (var i = 0; i < data.length; i++) {
  23. for (var j = 0; j < xAxis.length && xAxis[j] != data[i].name; j++);
  24. if (j == xAxis.length)
  25. xAxis.push(data[i].name);
  26. for (var k = 0; k < group.length && group[k] != data[i].group; k++);
  27. if (k == group.length)
  28. group.push(data[i].group);
  29. }
  30. for (var i = 0; i < group.length; i++) {
  31. var temp = [];
  32. for (var j = 0; j < data.length; j++) {
  33. if (group[i] == data[j].group) {
  34. if (type == "map") {
  35. temp.push({ name: data[j].name, value: data[i].value });
  36. } else {
  37. temp.push(data[j].value);
  38. }
  39. }
  40. }
  41. switch (type) {
  42. case 'bar':
  43. var series_temp = { name: group[i], data: temp, type: chart_type };
  44. series_temp = $.extend({}, {
  45. markPoint: {
  46. data: [
  47. { type: 'max', name: '最大值' },
  48. { type: 'min', name: '最小值' }
  49. ]
  50. },
  51. markLine: {
  52. data: [
  53. { type: 'average', name: '平均值' }
  54. ]
  55. }
  56. }, series_temp);
  57. break;
  58. case 'map':
  59. var series_temp = {
  60. name: group[i], type: chart_type, mapType: 'china', selectedMode: 'multiple',
  61. itemStyle: {
  62. normal: { label: { show: true } },
  63. emphasis: { label: { show: true } }
  64. },
  65. data: temp
  66. };
  67. break;
  68. case 'line':
  69. var series_temp = { name: group[i], data: temp, type: chart_type };
  70. if (is_stack)
  71. series_temp = $.extend({}, { stack: 'stack' }, series_temp);
  72. series_temp = $.extend({}, {
  73. markPoint: {
  74. data: [
  75. { type: 'max', name: '最大值' },
  76. { type: 'min', name: '最小值' }
  77. ]
  78. },
  79. markLine: {
  80. data: [
  81. { type: 'average', name: '平均值' }
  82. ]
  83. }
  84. }, series_temp);
  85. break;
  86. default:
  87. var series_temp = { name: group[i], data: temp, type: chart_type };
  88. }
  89. series.push(series_temp);
  90. }
  91. return { category: group, xAxis: xAxis, series: series };
  92. }
  93. }
  94. ,
  95. ChartOptionTemplates: {
  96. CommonOption: {
  97. title: {
  98. text: '力软智能图表',
  99. left: "40%"
  100. },
  101. //通用的图表基本配置
  102. tooltip: {
  103. trigger: 'item'//tooltip触发方式:axis以X轴线触发,item以每一个数据项触发
  104. },
  105. toolbox: {
  106. show: true,
  107. orient: 'vertical',
  108. left: 'left',
  109. top: 'top',
  110. feature: {
  111. mark: { show: true },
  112. dataView: { show: true, readOnly: false },
  113. restore: { show: true },
  114. saveAsImage: { show: true }
  115. }
  116. }
  117. },
  118. CommonLineOption: {//通用的折线图表的基本配置
  119. title: {
  120. text: '力软智能图表',
  121. left:"40%"
  122. },
  123. tooltip: {
  124. trigger: 'axis'
  125. },
  126. calculable: true,
  127. toolbox: {
  128. show: true,
  129. //orient : 'vertical',
  130. left: 'right',
  131. top: 'top',
  132. feature: {
  133. mark: { show: true },
  134. dataView: { show: true, readOnly: false },
  135. restore: { show: true },
  136. magicType: ['line', 'bar'],//支持柱形图和折线图的切换
  137. saveAsImage: { show: true }
  138. }
  139. }
  140. },
  141. Pie: function (data, name) {
  142. //data:数据格式:{name:xxx,value:xxx}...
  143. var pie_datas = ECharts.ChartDataFormate.FormateNOGroupData(data);
  144. var option = {
  145. tooltip: {
  146. trigger: 'item',
  147. formatter: '{b} : {c} ({d}/%)',
  148. show: true
  149. },
  150. legend: {
  151. orient: 'vertical',
  152. x: 'left',
  153. data: pie_datas.category
  154. },
  155. calculable: true,
  156. toolbox: {
  157. show: true,
  158. feature: {
  159. mark: { show: true },
  160. dataView: { show: true, readOnly: true },
  161. restore: { show: true },
  162. saveAsImage: { show: true }
  163. }
  164. },
  165. series: [
  166. {
  167. name: name || "",
  168. type: 'pie',
  169. radius: '65%',
  170. center: ['50%', '50%'],
  171. data: pie_datas.data
  172. }
  173. ]
  174. };
  175. return $.extend({}, ECharts.ChartOptionTemplates.CommonOption, option);
  176. },
  177. Lines: function (data, name, is_stack) {
  178. //data:数据格式:{name:xxx,group:xxx,value:xxx}...
  179. var stackline_datas = ECharts.ChartDataFormate.FormateGroupData(data, 'line', is_stack);
  180. var option = {
  181. legend: {
  182. data: stackline_datas.xAxis
  183. },
  184. xAxis: [{
  185. type: 'category', //X轴均为category,Y轴均为value
  186. data: stackline_datas.xAxis,
  187. boundaryGap: false//数值轴两端的空白策略
  188. }],
  189. yAxis: [{
  190. type: 'value',
  191. splitArea: { show: true }
  192. }],
  193. series: stackline_datas.series
  194. };
  195. return $.extend({}, ECharts.ChartOptionTemplates.CommonLineOption, option);
  196. },
  197. Bars: function (data, name, is_stack) {
  198. //data:数据格式:{name:xxx,group:xxx,value:xxx}...
  199. var bars_dates = ECharts.ChartDataFormate.FormateGroupData(data, 'bar', is_stack);
  200. var option = {
  201. legend: { data: bars_dates.category },
  202. xAxis: [{
  203. type: 'category',
  204. data: bars_dates.xAxis
  205. }],
  206. yAxis: [{
  207. type: 'value'
  208. }],
  209. toolbox: bars_dates.toolbox,
  210. series: bars_dates.series
  211. };
  212. return $.extend({}, ECharts.ChartOptionTemplates.CommonLineOption, option);
  213. },
  214. Maps: function (data, name, is_stack) {
  215. //data:数据格式:{name:xxx,group:xxx,value:xxx}...
  216. var maps_dates = ECharts.ChartDataFormate.FormateGroupData(data, 'map', is_stack);
  217. var option = {
  218. tooltip: {
  219. trigger: 'item'
  220. },
  221. legend: {
  222. orient: 'vertical',
  223. left: 'left',
  224. data: ['iphone3', 'iphone4', 'iphone5']
  225. },
  226. visualMap: {
  227. min: 0,
  228. max: 2500,
  229. left: 'left',
  230. top: 'bottom',
  231. text: ['高', '低'], // 文本,默认为数值文本
  232. calculable: true
  233. },
  234. series: maps_dates.series
  235. };
  236. return $.extend({}, ECharts.ChartOptionTemplates.CommonOption, option);
  237. }
  238. }
  239. };