永洪社区

标题: 组件图表拖动到左侧,代码提示找不到getProps这个函数 [打印本页]

作者: yhdata_1Jv09Unl    时间: 2021-11-4 15:55
标题: 组件图表拖动到左侧,代码提示找不到getProps这个函数

作者: 永洪Tech-CIDX    时间: 2021-11-4 15:57
麻烦上传报错截图
作者: yhdata_1Jv09Unl    时间: 2021-11-4 16:04
永洪Tech-wj 发表于 2021-11-4 15:57
麻烦上传报错截图

传了三个图麻烦看下,谢谢

作者: yhdata_1Jv09Unl    时间: 2021-11-4 16:17
永洪Tech-wj 发表于 2021-11-4 15:57
麻烦上传报错截图
  1. import {register} from 'yh-plugin-manager';
  2. import echarts from "echarts";

  3. const plugin = {
  4.    getProps: () => {
  5.      return [
  6.        {
  7.          group: "titleOption",
  8.          type: "string",
  9.          key: "title",
  10.          value: "漏斗图"
  11.        },
  12.        {
  13.          group: "titleOption",
  14.          type: "boolean",
  15.          key: "titleOption_visible",
  16.          value: true
  17.        },
  18.        {
  19.          group: "titleOption",
  20.          type: "font",
  21.          key: "titleFont",
  22.        },
  23.        {
  24.          group: "titleOption",
  25.          type: "combo",
  26.          key: "titlePosition",
  27.          value: "top",
  28.          option: ["top", "bottom"],
  29.        },
  30.        {
  31.          group: "legendOption",
  32.          type: "chartColor",
  33.          key: "chartColor"
  34.        },
  35.        {
  36.          group: "legendOption",
  37.          type: "boolean",
  38.          key: "legendOption_visible",
  39.          value: true
  40.        },
  41.        {
  42.          group: "legendOption",
  43.          type: "font",
  44.          key: "legendFont"
  45.        },
  46.        {
  47.          group: "legendOption",
  48.          type: "combo",
  49.          key: "legendPosition",
  50.          value: "right",
  51.          option: ["left", "top", "right", "bottom"],
  52.        },
  53.        {
  54.          group: "valueOption",
  55.          type: "boolean",
  56.          key: "valueOption_visible",
  57.          value: true
  58.        },
  59.        {
  60.          group: "valueOption",
  61.          type: "font",
  62.          key: "valueFont"
  63.        },
  64.        {
  65.          group: "valueOption",
  66.          type: "combo",
  67.          key: "valuePosition",
  68.          option: ["left", "right", "inside"],
  69.          value: "inside"
  70.        },
  71.      ];
  72.    },
  73.    getLocalView: (key) => {
  74.      const LocalSetting = {
  75.        "PluginName": {"zh_CN": "漏斗图\n1个维度\n1个度量", "en_US": "Funnel\n1 dimension\n1 measure", "ja_JP": "ファンネルチャート\n1次元\n1指標", "zh_TW": "漏斗圖\n1個維度\n1個度量"},
  76.        "title": {"zh_CN": "漏斗图", "en_US": "Funnel", "ja_JP": "ファンネルチャート", "zh_TW": "漏斗圖"},
  77.        "valueFont": {"zh_CN": "", "en_US": "", "ja_JP": "", "zh_TW": ""},
  78.        "legendFont": {"zh_CN": "", "en_US": "", "ja_JP": "", "zh_TW": ""},
  79.        "chartColor": {"zh_CN": "图例颜色", "en_US": "Legend Color", "ja_JP": "凡例の色", "zh_TW": "圖例顏色"},
  80.        "titlePosition": {"zh_CN": "位置", "en_US": "Position", "ja_JP": "位置", "zh_TW": "位置"},
  81.        "titleFont": {"zh_CN": "", "en_US": "", "ja_JP": "", "zh_TW": ""},
  82.        "titleOption": {"zh_CN": "标题选项", "en_US": "Title", "ja_JP": "タイトル", "zh_TW": "標題選項"},
  83.        "left": {"zh_CN": "左", "en_US": "Left", "ja_JP": "左", "zh_TW": "左"},
  84.        "top": {"zh_CN": "上", "en_US": "Top", "ja_JP": "上", "zh_TW": "上"},
  85.        "right": {"zh_CN": "右", "en_US": "Right", "ja_JP": "右", "zh_TW": "右"},
  86.        "bottom": {"zh_CN": "下", "en_US": "Bottom", "ja_JP": "下", "zh_TW": "下"},
  87.        "inside": {"zh_CN": "内部", "en_US": "Inside", "ja_JP": "内部", "zh_TW": "內部"},
  88.        "legendOption": {"zh_CN": "图例选项", "en_US": "Legent", "ja_JP": "凡例", "zh_TW": "圖例選項"},
  89.        "valueOption": {"zh_CN": "数值选项", "en_US": "Value", "ja_JP": "数値", "zh_TW": "數值選項"},
  90.        "legendPosition": {"zh_CN": "位置", "en_US": "Position", "ja_JP": "位置", "zh_TW": "位置"},
  91.        "valuePosition": {"zh_CN": "位置", "en_US": "Position", "ja_JP": "位置", "zh_TW": "位置"},
  92.      }

  93.      return LocalSetting[key];
  94.    },
  95.    getBindInfo: () => {
  96.      return {
  97.        xcolumns: [
  98.        {
  99.          index: 0,
  100.          isDim: true
  101.        }],
  102.        ycolumns: [
  103.        {
  104.          index: 0,
  105.          isDim: false
  106.        }]
  107.      };
  108.    },
  109.    render: (domName, props, grid = null, qinfo = null) => {
  110.       if(document.getElementById(domName) == null) {
  111.          return;
  112.       }

  113.       let funnel = echarts.init(document.getElementById(domName));
  114.       funnel.resize();

  115.       if(grid == null || grid.csize() < 2) {
  116.          funnel.dispose();
  117.          funnel = null;
  118.          return;
  119.       }

  120.       funnel.resize({
  121.          width: "auto",
  122.          height: "auto"
  123.       });
  124.       let option = {
  125.          toolbox: {
  126.             feature: {
  127.             }
  128.          },
  129.          legend: {
  130.             icon: 'rect'
  131.          },
  132.          cursor: "default",
  133.          calculable: true,
  134.          series: [
  135.          ]
  136.       };

  137.       let funnel0 = {
  138.          type:'funnel',
  139.          min: 0,
  140.          max: 100,
  141.          minSize: '0%',
  142.          maxSize: '100%',
  143.          sort: 'descending',
  144.          gap: 2,
  145.          label: {
  146.             normal: {
  147.                show: true,
  148.                position: 'inside'
  149.             },
  150.             emphasis: {
  151.                textStyle: {
  152.                   fontSize: 20
  153.                }
  154.             }
  155.          },
  156.          labelLine: {
  157.             normal: {
  158.                length: 10,
  159.                lineStyle: {
  160.                   width: 1,
  161.                   type: 'solid'
  162.                }
  163.             }
  164.          },
  165.          itemStyle: {
  166.             normal: {
  167.                borderColor: '#fff',
  168.                borderWidth: 1
  169.             }
  170.          }
  171.       };

  172.       if(props.chartColor) {
  173.         option.color = props.chartColor;
  174.       }

  175.       if(props.legendFont) {
  176.          let legendFont = props.legendFont;

  177.          option.legend.textStyle = {
  178.             color: legendFont.fontColor,
  179.             fontFamily: legendFont.fontFamily,
  180.             fontStyle: legendFont.fontStyle,
  181.             fontWeight: legendFont.fontWeight,
  182.             fontSize: legendFont.fontSize
  183.          };
  184.       }

  185.       //legend position.
  186.       switch(props.legendPosition) {
  187.       case "left":
  188.          option.legend.y = 'center';
  189.          option.legend.orient = 'vertical';
  190.          break;
  191.       case "top":
  192.          option.legend.left = "center";
  193.          option.legend.orient = 'horizontal';
  194.          break;
  195.       case "right":
  196.          option.legend.left = "auto";
  197.          option.legend.y = 'center';
  198.          option.legend.orient = 'vertical';
  199.          break;
  200.       case "bottom":
  201.          option.legend.left = "center";
  202.          option.legend.orient = 'horizontal';
  203.          break;
  204.       }

  205.       if(props.legendOption_visible != undefined) {
  206.          option.legend.show = props.legendOption_visible;
  207.       }

  208.       // legend page
  209.       option.legend.type = 'scroll';
  210.       option.legend.pageButtonItemGap = 0;
  211.       // texture in right of icon.
  212.       option.legend.align = 'left';


  213.      // graph bounds
  214.      let data = [];

  215.      for(let i = 1; i < grid.rsize(); i++) {
  216.        if(grid.get(i, 0) != null && grid.get(i, 1) != 0) {
  217.           data.push({value: Number(grid.get(i, 1)), name: grid.get(i, 0), value0: Number(grid.get(i, 1))});
  218.        }
  219.      }

  220.      let maxName = data[0].name;

  221.      for(let i = 1; i< data.length; i++) {
  222.         if(data[i].name.length > maxName.length) {
  223.            maxName = data[i].name;
  224.         }
  225.      }

  226.      data.sort(function(a, b) {
  227.        return b.value == a.value ? 0 : (b.value > a.value ? 1 : -1);
  228.      });

  229.      for(let i = 0; i < data.length; i++) {
  230.         data[i].value = data[i].value / data[0].value0 * 100;
  231.      }

  232.      funnel0.data = data;
  233.      option.series.push(funnel0);
  234.      funnel.off('legendselectchanged');
  235.      funnel.on('legendselectchanged', function (params) {
  236.         const result = [];
  237.         let view = qinfo.xcols[0].col.getView(false);

  238.         if(params.selected) {
  239.             for(let key in params.selected) {
  240.                params.selected[key] && result.push([{[view]: key}]);
  241.             }
  242.         }

  243.         props.filter(result);
  244.      });
  245.      funnel.setOption(option, true);
  246.    }
  247. }

  248. /**
  249. * The YHPluginManager register the user-customized plugin.
  250. */
  251. register(plugin);
复制代码





欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4