-2

我正在尝试在 ServerFaces 应用程序中使用 echarts 创建图形。

如何将 un JSON 从托管 bean 发送到 javascript 图形?

4

1 回答 1

1

您可以在 JSF 中创建 json 并将必要的参数传递给呈现图形的 javascript 函数。RemoteConmand 调用 rnder 图表函数:

<p:remoteCommand name="rc" autoRun="true" 
                                 oncomplete="renderChart('${disponibilidadController.titulo}', 
                                 '${disponibilidadController.chartDataTic}',
                                 '${disponibilidadController.chartDataComp}',
                                 '${disponibilidadController.chartDataImpr}',
                                 '${disponibilidadController.chartDataComu}',
                                 '${disponibilidadController.chartSerie}',
                                 '${disponibilidadController.miny}');"/>

echart 的 JavaScript 代码:

<script type="text/javascript">
            // based on prepared DOM, initialize echarts instance
            function renderChart(titulo, dataYTic, dataYComp, dataYImpr, dataYComu, dataX, minY) {
                myChart = echarts.init(document.getElementById('myChartC'));
                var option = {
                    title: {
                        text: titulo
                    },
                    color: ['#5793f3', '#d14a61', '#675bba', '#107533'],
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {
                            type: 'shadow'
                        }
                    },
                    grid: {
                        left: '3%',
                        right: '4%',
                        bottom: '3%',
                        containLabel: true
                    },
                    legend: {
                        data: ['Disponibilidad']
                    },
                    xAxis: [
                        {
                            type: 'category',
                            axisTick: {
                                alignWithLabel: true
                            },
                            data: $.parseJSON(dataX)
                        }
                    ],
                    yAxis: [
                        {type: 'value',
                            min: minY,
                            max: 100,
                            axisLabel: {
                                formatter: function (val) {
                                    return val + '%';
                                }
                            }
                        }
                    ],
                    series: [{
                            name: ' TICS',
                            type: 'line',
                            barWidth: '70%',
                            data: $.parseJSON(dataYTic)

                        },
                        {
                            name: 'Computadoras',
                            type: 'line',
                            barWidth: '70%',
                            data: $.parseJSON(dataYComp)

                        },
                        {
                            name: 'Impresoras',
                            type: 'line',
                            barWidth: '70%',
                            data: $.parseJSON(dataYImpr)

                        },
                        {
                            name: 'Comunicaciones',
                            type: 'line',
                            barWidth: '70%',
                            data: $.parseJSON(dataYComu)

                        }]

                };

                // use configuration item and data specified to show chart
                myChart.setOption(option);


            }

            window.onresize = function () {
                myChart.resize();
            };

        </script>

支持豆:

private String titulo;
private String dataY;
private String chartDataTic;
private String chartDataComp;
private String chartDataImpr;
private String chartDataComu;
private BigDecimal miny;

public void initChart() throws Exception {

titulo = "My Chart Title";
dataY = "5, 20, 36, 10, 10, 20";
this.miny = new BigDecimal(100);

List<BigDecimal> listaValoresTic = new ArrayList<>();
List<BigDecimal> listaValoresComp = new ArrayList<>();
List<BigDecimal> listaValoresImpr = new ArrayList<>();
List<BigDecimal> listaValoresComu = new ArrayList<>();

List<String> listaX = new ArrayList<>();

try {
    List<DisponibilidadHistorico> dhs = this.eJBController.getDisponibilidadEJB().disponibilidadHistPorSemanas(8);
    for (int i = 0; i < dhs.size(); i++) {
        DisponibilidadHistorico get = dhs.get(i);
        listaValoresTic.add(get.getDispTics());
        listaValoresComp.add(get.getDispComp());
        listaValoresImpr.add(get.getDispImpr());
        listaValoresComu.add(get.getDispComu());

        listaX.add(utilMB.toStringfechaDatosSemana(get.getFecha()));
        if (this.miny.compareTo(get.getDispComp()) == 1) {
            this.miny = get.getDispComp();
        }
        if (this.miny.compareTo(get.getDispComp()) == 1) {
            this.miny = get.getDispComp();
        }
        if (this.miny.compareTo(get.getDispImpr()) == 1) {
            this.miny = get.getDispImpr();
        }
        if (this.miny.compareTo(get.getDispComu()) == 1) {
            this.miny = get.getDispComu();
        }

    }

    setChartDataTic(new Gson().toJson(listaValoresTic));
    setChartDataComp(new Gson().toJson(listaValoresComp));
    setChartDataImpr(new Gson().toJson(listaValoresImpr));
    setChartDataComu(new Gson().toJson(listaValoresComu));
    setChartSerie(new Gson().toJson(listaX));
} catch (Exception e) {
}

在此处输入图像描述

于 2017-05-31T16:32:54.950 回答