汇联通执法队后台管理系统
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

jquery.chart.taiji.js 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /**
  2. * 说明:
  3. * var mychart=$("#chart").mychart(options);
  4. * 参数:options
  5. * url:获取图表数据的url,页面配置有form通过提交form获取图表数据,否则通过get方法获取图表数据。
  6. * optionsCallback:通过回调设置图表参数。
  7. * chartOptions:图表插件jqplot参数。
  8. * 返回值:mychart
  9. * mychart.chart();手工调用绘图。
  10. *
  11. * 1、自动根据数字的小数最大位数计算formatString
  12. * 2、动态传参
  13. *
  14. */
  15. (function($){
  16. $.fn.extend({
  17. mychart:function(options){
  18. this.settings=$.extend({},$.fn.mychart.defaults,options);
  19. this.settings.chartOptions= $.extend({},$.fn.mychart.defaults.chartOptions,options.chartOptions);
  20. this.settings.chartId = this[0].id;
  21. this.chart=chart;
  22. this.chart();
  23. return this;
  24. }
  25. });
  26. var chart=function(){
  27. var opts=this.settings.chartOptions;
  28. var myThis=this;
  29. var options = {
  30. success: function submitSuccess(chartModel){
  31. opts.series=$.map( chartModel.legendLabel, function(n){
  32. return {"label":n};
  33. });
  34. opts.axes.xaxis.label=chartModel.xlabel;
  35. opts.axes.xaxis.ticks=chartModel.xticks;
  36. opts.axes.yaxis.label=chartModel.ylabel;
  37. if( chartModel.yticks){
  38. opts.axes.yaxis.ticks=chartModel.yticks;
  39. }
  40. opts.axes.yaxis.tickOptions.formatString=getFormatString(chartModel.data);
  41. if(myThis.settings.optionsCallback instanceof Function){
  42. myThis.settings.optionsCallback(chartModel,opts);
  43. }
  44. if(window.console){
  45. console.dir( opts);
  46. }
  47. recurJson(opts,chartModel);
  48. var plot=$.jqplot(myThis.settings.chartId,chartModel.data , opts);
  49. myThis.chart=plot;
  50. }
  51. };
  52. var pform=$(myThis.settings.pagerForm);
  53. if(pform.size()>0){
  54. var action= pform.attr("action");
  55. pform.attr("action",this.settings.url);
  56. pform.ajaxSubmit(options);
  57. pform.attr("action",action);
  58. }else{
  59. $.getJSON(this.settings.url, options.success);
  60. }
  61. };
  62. //递归遍历JSON所有键值
  63. function recurJson(json,chartModel)
  64. {
  65. for(var i in json){
  66. if(typeof json[i]=="object"){
  67. recurJson(json[i],chartModel);
  68. }else if(/{other\[(\d+)\]}/g.test(json[i])){
  69. var index= /{other\[(\d+)\]}/g.exec(json[i])[1];
  70. json[i]=chartModel.other[index];
  71. }
  72. }
  73. }
  74. function getFormatString(data){
  75. var maxLength=0;
  76. for(var i=0;i<data.length;i++){
  77. var dt=data[i];
  78. for(var intValue = 0; intValue < dt.length; intValue++) {
  79. var a =dt[intValue]+"";
  80. if(a.indexOf(".")==-1){
  81. break;
  82. }
  83. var l=a.replace(/\d+\./,"").length;
  84. if(l>maxLength){
  85. maxLength=l;
  86. }
  87. }
  88. }
  89. return '%.'+maxLength+'f';
  90. }
  91. $.fn.mychart.defaults = {
  92. pagerForm:'#listForm',
  93. chartId:"chart",
  94. url:false,
  95. optionsCallback:function(){},
  96. chartOptions:{
  97. animate: true,
  98. seriesDefaults:{
  99. renderer:$.jqplot.LineRenderer
  100. },
  101. legend: {
  102. show: true,
  103. placement: 'outsideGrid'
  104. },
  105. highlighter: {
  106. show: true,
  107. sizeAdjust: 7.5,
  108. tooltipAxes: 'y'
  109. },
  110. axes: {
  111. xaxis: {
  112. renderer: $.jqplot.CategoryAxisRenderer,
  113. tickRenderer: $.jqplot.CanvasAxisTickRenderer ,
  114. tickOptions: {
  115. angle: -30,
  116. fontSize: '10pt'
  117. },
  118. label:"xlabel"
  119. },
  120. yaxis: {
  121. label:"ylabel",
  122. tickOptions: {
  123. formatString: '%.0f'
  124. }
  125. }
  126. },
  127. }
  128. };
  129. })(jQuery);