> 웹 프론트엔드 > JS 튜토리얼 > ExtJs 통합 Echarts 메소드 공유

ExtJs 통합 Echarts 메소드 공유

小云云
풀어 주다: 2018-03-01 09:02:11
원래의
1805명이 탐색했습니다.

이 글에서는 주로 Echarts를 통합한 ExtJ의 예제 코드를 소개합니다. 편집자는 꽤 좋다고 생각해서 지금 공유하고 참고용으로 제공하겠습니다. 편집자를 따라가서 모두에게 도움이 되기를 바랍니다.

Echarts에서는 테이블 기능을 제공하지 않기 때문에 위 그림과 아래 테이블을 구현하려면 테이블 태그를 직접 추가해야 합니다.

ExtJs와 Echarts 통합

Echarts 공식 웹사이트에서 js 파일을 다운로드하고 참조를 가져와서 새 페이지를 만듭니다. 조판은 두 개의 p가 수직으로 배치되어 이루어지며 맨 위는 Echarts용으로 예약되어 있고 맨 아래는 테이블용으로 예약되어 있습니다. 태그


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

initPanel : function() {

 if (this.panel) {

  return

 }

  

 var panel = new Ext.Panel({

  id : 'echart',

  html :   &#39;<p id="mainEchart" style="height:50%;border:1px solid #ccc;padding:10px;"></p>&#39;

        + &#39;<p id="mainTable" style="position:relative;text-align:center;padding:10px;">&#39;

        +&#39;<label for="mainTable"><h1>档案调用次数表</h1></label>&#39;

        +&#39;<table id="content-table" border="1" style="width:100%;text-align:center;">&#39;

        + &#39;<tr><th>月份</th><th>调用次数</th></tr>&#39;,

  buttonAlign : &#39;center&#39;,

  autoScroll : true,//允许滚动

  bodyStyle : &#39;overflow-x:hidden; overflow-y:scroll&#39;

  //开启竖直滚动条,关闭水平滚动条

 });

  

 this.panel = panel;

 return this.panel;

}

로그인 후 복사

Echarts 초기화 및 데이터 로딩

공식문은 한 번에 하나의 echart만 생성하고 관련 스타일을 정의하며 백그라운드에서 데이터를 쿼리하여 echarts를 제공할 수 있습니다


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

initData : function(id, personName, year) {

 this.id = id;

 var p = document.getElementById("mainEchart");

 var myChart = echarts.init(p);

 // myChart.showLoading({

 // text: "图表数据正在努力加载..."

 // });

 this.myChart = myChart;

 // 初始化数据

 var data = [];

 var yearStr = "";

 var flag = false;

 var monthData = [];

  

 var res = QueryData();//调用数据查询,涉及项目名,略

  

 for (var i = 0; i < res.json.body.length; i++) {

  var map = res.json.body[i];

  monthData.push(map.MM);//月份

  data.push(map.DYCS);//调用次数

 }

 var options = {

  arg : {

   id : this.id

  },

  noDataLoadingOption : {

   text : &#39;暂无数据&#39;,

   effect : &#39;bubble&#39;,

   effectOption : {

    effect : {

     n : 0

    }

   }

  },

  title : {

   text : personName + "的档案调用情况",

   x : &#39;west&#39;

  },

  tooltip : {

   trigger : &#39;axis&#39;

  },

  legend : {

   data : [&#39;调用次数&#39;]

  },

  toolbox : {

   show : true,

   feature : {

    mark : {

     show : true

    },

    dataView : {

    //重写dataView

    //在切换视图的时候能够以<table>的形式显示

     show : true,

     readOnly : true,

     optionToContent : function(opt) {

      var axisData = opt.xAxis[0].data;

      var series = opt.series;

      var table = &#39;<table style="width:100%;text-align:center" border="1"><tbody><tr>&#39;

        + &#39;<td>时间</td>&#39;

        + &#39;<td>&#39;

        + series[0].name + &#39;</td>&#39;

        // + &#39;<td>&#39;

        // + series[1].name

        // + &#39;</td>&#39;

        + &#39;</tr>&#39;;

      for (var i = 0, l = axisData.length; i < l; i++) {

       table += &#39;<tr>&#39; + &#39;<td>&#39; + axisData[i]

         + &#39;</td>&#39; + &#39;<td>&#39;

         + series[0].data[i] + &#39;</td>&#39;

         // + &#39;<td>&#39; + series[1].data[i]

         // + &#39;</td>&#39;

         + &#39;</tr>&#39;;

      }

      table += &#39;</tbody></table>&#39;;

      return table;

     }

    },

    magicType : {

     show : true,

     type : [&#39;line&#39;, &#39;bar&#39;]

    },

    restore : {

     show : true

    },

    saveAsImage : {

     show : true

    }

   }

  },

  calculable : true,

  xAxis : [{

     type : &#39;category&#39;,

     data : monthData

    }],

  yAxis : [{

     type : &#39;value&#39;,

     splitArea : {

      show : true

     }

    }],

  series : [{

   name : &#39;调用次数&#39;,

   type : &#39;bar&#39;,

   barWidth : 35,

   data : data,

   itemStyle : {//修改柱状图的颜色并在顶部显示数值

    normal : {

     color : &#39;#3575a8&#39;,

     label : {

      show : true,

      position : &#39;top&#39;,

      formatter : &#39;{c}&#39;//&#39;{b}\n{c}&#39;

     }

    }

   }

  }]

 };

 myChart.setOption(options, true);

 myChart.on(&#39;click&#39;, function eConsole(param) {

   });

 this.tableData(personName, monthData, data)

 //表格的加载

}

로그인 후 복사

테이블 할당 data

테이블 부분은 간단합니다. html 할당에 대해서는 별로 할 말이 없습니다. 다만 splicing 후에 html을 새로 고치는 것만 주의하세요. 코드는 다음과 같습니다.


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

tableData : function(personName, monthData, data) {

 // 表格部分

 var html = &#39;<p id="mainTable" style="position:relative;text-align:center;padding:10px;">&#39;

   +&#39;<label for="mainTable"><h1>&#39;

   + personName

   + &#39;档案调用情况表</h1></label>&#39;

   +&#39;<table id="content-table" border="1" style="width: 100%;text-align: center;">&#39;

   + &#39;<tr style="height: 30px;text-align:center;"><th>月份</th><th>调用次数</th></tr>&#39;;

 // if(monthData.length != data.length)

 // throw new Error("数据条数不对,请检查!");

 for (var i = 0; i < data.length; i++) {

  html += &#39;<tr style="height: 30px;text-align: center;">&#39;

     +&#39;<td id="data-month-&#39;+i+&#39;">&#39;

     + monthData[i]

     + &#39;</td><td id="data-value-&#39;+i+&#39;">&#39;

     + data[i]

     + &#39;</td></tr>&#39;

 }

 html += &#39;</table></p>&#39;;

 document.getElementById(&#39;mainTable&#39;).innerHTML = html;

}

로그인 후 복사

관련 권장 사항:

H5의 WebGL을 사용하여 동일한 인터페이스에서 json 및 echarts 차트를 만드는 방법

jQuery 플러그인 echarts 수직 그리드를 제거하는 사용법에 대한 자세한 설명 line

PHP 사용법 통계 보고서를 생성하는 Echart에 대한 자세한 설명

위 내용은 ExtJs 통합 Echarts 메소드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿