echarts-block4.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. function loadBlock4() {
  2. const block4 = echarts.init(document.getElementById("block4"), "shine");
  3. const block4Opt = {
  4. legend: {
  5. show: true,
  6. top: "center",
  7. left: '70%',
  8. itemWidth: 30,
  9. itemHeight: 20,
  10. width: 50,
  11. padding: [0, 5],
  12. itemGap: 25,
  13. formatter: function (name) {
  14. return "{title|" + name + "}\n{value|" + (objData[name].value) + "}"
  15. },
  16. textStyle: {
  17. rich: {
  18. title: {
  19. fontSize: 10,
  20. lineHeight: 10,
  21. color: "rgba(255,255,255,.85)"
  22. },
  23. value: {
  24. fontSize: 14,
  25. lineHeight: 18,
  26. color: "rgba(255,255,255,1)"
  27. }
  28. }
  29. },
  30. },
  31. tooltip: {
  32. show: true,
  33. trigger: "item",
  34. formatter: "{a}<br>{b}:{c}"
  35. },
  36. color: ['#FF8700', '#ffc300', '#00e473', '#009DFF'],
  37. grid: {
  38. top: '20%',
  39. bottom: '48%',
  40. left: "30%",
  41. containLabel: false
  42. },
  43. yAxis: [{
  44. type: 'category',
  45. inverse: true,
  46. axisLine: {
  47. show: false
  48. },
  49. axisTick: {
  50. show: false
  51. },
  52. axisLabel: {
  53. interval: 0,
  54. inside: true,
  55. textStyle: {
  56. color: "#fff",
  57. fontSize: 12,
  58. },
  59. show: true
  60. }
  61. }],
  62. xAxis: [{
  63. show: false
  64. }]
  65. };
  66. $.ajax({
  67. url: ajaxBaseUrl + "data/house.json",
  68. dataType: "json"
  69. }).done(function () {
  70. $("#block4").addClass("chart-done");
  71. }).done(function (data) {
  72. arrName = getArrayValue(data, "name");
  73. arrValue = getArrayValue(data, "value");
  74. sumValue = eval(arrValue.join('+'));
  75. objData = array2obj(data, "name");
  76. optionData = getData(data);
  77. block4.setOption(block4Opt);
  78. block4.setOption({
  79. yAxis: {
  80. data: optionData.yAxis
  81. },
  82. series: optionData.series,
  83. legend: {
  84. data: arrName
  85. }
  86. });
  87. }).fail(function (jqXHR) {
  88. console.log("Ajax Fail: ", jqXHR.status, jqXHR.statusText);
  89. });
  90. function getArrayValue(array, key) {
  91. var key = key || "value";
  92. var res = [];
  93. if (array) {
  94. array.forEach(function (t) {
  95. res.push(t[key]);
  96. });
  97. }
  98. return res;
  99. }
  100. function array2obj(array, key) {
  101. var resObj = {};
  102. for (var i = 0; i < array.length; i++) {
  103. resObj[array[i][key]] = array[i];
  104. }
  105. return resObj;
  106. }
  107. function getData(data) {
  108. var res = {
  109. series: [],
  110. yAxis: []
  111. };
  112. for (let i = 0; i < data.length; i++) {
  113. res.series.push({
  114. name: '房屋管理',
  115. type: 'pie',
  116. clockWise: false, //顺时加载
  117. hoverAnimation: false, //鼠标移入变大
  118. radius: [65 - i * 15 + '%', 57 - i * 15 + '%'],
  119. center: ["30%", "55%"],
  120. label: {
  121. show: false
  122. },
  123. itemStyle: {
  124. label: {
  125. show: false,
  126. },
  127. labelLine: {
  128. show: false
  129. },
  130. borderWidth: 5,
  131. },
  132. data: [{
  133. value: data[i].value,
  134. name: data[i].name
  135. }, {
  136. value: sumValue - data[i].value,
  137. name: '',
  138. itemStyle: {
  139. color: "rgba(0,0,0,0)",
  140. borderWidth: 0
  141. },
  142. tooltip: {
  143. show: false
  144. },
  145. hoverAnimation: false
  146. }]
  147. });
  148. res.series.push({
  149. name: '',
  150. type: 'pie',
  151. silent: true,
  152. z: 1,
  153. clockWise: false, //顺时加载
  154. hoverAnimation: false, //鼠标移入变大
  155. radius: [65 - i * 15 + '%', 57 - i * 15 + '%'],
  156. center: ["30%", "55%"],
  157. label: {
  158. show: false
  159. },
  160. itemStyle: {
  161. label: {
  162. show: false,
  163. },
  164. labelLine: {
  165. show: false
  166. },
  167. borderWidth: 5,
  168. },
  169. data: [{
  170. value: 7.5,
  171. itemStyle: {
  172. color: "#E3F0FF",
  173. borderWidth: 0
  174. },
  175. tooltip: {
  176. show: false
  177. },
  178. hoverAnimation: false
  179. }, {
  180. value: 2.5,
  181. name: '',
  182. itemStyle: {
  183. color: "rgba(0,0,0,0)",
  184. borderWidth: 0
  185. },
  186. tooltip: {
  187. show: false
  188. },
  189. hoverAnimation: false
  190. }]
  191. });
  192. res.yAxis.push(data[i].value);
  193. }
  194. return res;
  195. }
  196. }