执行图表生成时出现0x03错误:请检查您在Highchart中的输入数据

阅读: 评论:0

执行图表生成时出现0x03错误:请检查您在Highchart中的输入数据

执行图表生成时出现0x03错误:请检查您在Highchart中的输入数据

  1. 我正在使用highchart导出服务器在NodeJ中生成图表
  2. 但是当我生成许多图表时,它会给出错误,例如执行图表生成时出现0x03错误:请检查您的输入数据
  3. 这是我的代码

我一次生成所有图表,所以我该如何解决此问题。

回答如下:

我对您的代码进行了一些修改(并使用了getPieChartImg,因为它是唯一可用的代码),并尝试导出大量图表(在本例中为35)。我没有遇到0x03错误。这是修改后的代码:

(test.js)

const exporter = require('./promise-based.js');

let numberOfCharts = 35;
let chartsData = [];

for (let i = 0; i < numberOfCharts; i++) {
    chartsData.push([1, 2, 3, 4, 5]);
}

ateAllCharts(chartsData, results => {
    if (de === '0') {
        console.log('All charts exported!');
        console.log(results);
    } else {
        console.log('Error #' + de + ': ' + results.msg);
        if () {
            console.);
        }
    }
    it();
});

((promise-based.js)

const highchartsExporter = require('highcharts-export-server');

let promiseId = 0;

ateAllCharts = (chartData, callback) => {
    let allPromises = [];
    let chartsLen = chartData.length;

    highchartsExporter.logLevel(4);
    highchartsExporter.initPool({
        maxWorkers: 100,
        initialWorkers: 50,
        workLimit: 100,
        queueSize: 50,
        timeoutThreshold: 10000
    });

    if (!chartData || !chartsLen) {
        highchartsExporter.killPool();

        return callback({
            code: '4',
            msg: 'Please send chartdata'
        });
    }

    for (let i = 0; i < chartsLen; i++) {
        allPromises.push(
            new Promise((resolve, reject) => {
                PieChartImg(chartData[i], false, results => {
                    if (de !== '0') {
                        return reject(results);
                    }

                    return resolve(results);
                });
            })
        );
    }

    Promise.all(allPromises)
        .then(data => {
            highchartsExporter.killPool();

            let imagesObject = {
                code: '0',
                custImg: {}
            };

            data.forEach((image, index) => {
                imagesObject.custImg['pc' + (index + 1)] = image.data;
                imagesObject.custImg.promiseId = image.promiseId;
            });

            return callback(imagesObject);
        })
        .catch(err => callback({
            code: '5',
            msg: 'Error generating charts',
            err
        }));
};

PieChartImg = (seriesData, xOrLength, cb) => {
    let chartOpts = {
        colors: ['#7380D4', '#749FD4', '#74BFD4', '#74D4B6', '#99EBA8', '#FEE08B', '#FDAE61', '#F07346', '#E65433', '#C92D22'],
        chart: {
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false,
            renderTo: 'container',
            style: {
                fontSize: '20px',
                background: '#fffdcc'
            },
            width: 650,
        },
        credits: {
            enabled: false
        },
        title: {
            text: null,
        },
        tooltip: {
            pointFormat: '{series.name}: {point.percentage:.1f}%'
        },
        legend: {
            itemStyle: {
                font: 'sans-serif',
                fontWeight: 'bold',
                fontSize: '13px'
            },
            useHTML: true,
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'middle',
            labelFormatter: () => {
                if (this.name[xOrLength] > 9) {
                    let words = this.name.split(/[s]+/);
                    let numWordsPerLine = 1;
                    let str = [];

                    for (let word in words) {
                        if (parseInt(word) > 0 && parseInt(word) % numWordsPerLine == 0)
                            str.push('<br>');

                        str.push(words[word]);
                    }

                    let label = str.join(' ');

                    // Make legend text bold and red if most recent value is less than prior
                    if (this.name[1] > this.name[2]) {
                        return '<span style="font-weight:bold">' + label + '</span>';
                    } else {
                        return label;
                    }
                } else {
                    return this.name;
                }
            }
        },
        plotOptions: {
            pie: {
                size: '85%',
                allowPointSelect: true,
                cursor: 'pointer',
                showInLegend: true,
                dataLabels: {
                    enabled: true,
                    allowOverlap: false,
                    distance: 10,
                    formatter: () => {
                        return undefined;
                        // if (parseFloat(Fixed(2)) > 0.35) {
                        //     return '' + parseFloat(this.percentage).toFixed(2) + '%';
                        // }
                    },
                    padding: 5,
                    style: {
                        fontFamily: ''Lato', sans-serif',
                        // lineHeight: '18px',
                        fontWeight: 'normal',
                        fontSize: '18px'
                    }
                }
            },
            series: {
                stacking: 'normal',
                dataLabels: {
                    enabled: true,
                    color: '#6f6f6f',
                    style: {
                        fontFamily: ''Lato', sans-serif',
                        // lineHeight: '18px',
                        fontWeight: 'normal',
                        fontSize: '18px'
                    },
                    format: '{point.percentage:.2f}'
                },
                pointWidth: 30,
                cursor: 'pointer'
            }
        },
        series: [{
            name: "Value",
            type: 'pie',
            data: seriesData
        }],
        navigation: {
            buttonOptions: {
                enabled: false
            }
        },
    };

    let exportSettings = generateExportSettings(chartOpts, 'Stock');
    return generateBase64Chart(exportSettings, 3, cb);
};

function generateExportSettings(chartOpts, constr) {
    return {
        type: 'png',
        constr,
        b64: true,
        // async: false,
        noDownload: true,
        scale: 2,
        options: chartOpts,
        globalOptions: {
            colors: ['#7380D4', '#749FD4', '#74BFD4', '#74D4B6', '#99EBA8', '#FEE08B', '#FDAE61', '#F07346', '#E65433', '#C92D22'],
            lang: {
                thousandsSep: ','
            }
        }
    };
}

function generateBase64Chart(exportSettings, number, cb) {
    // Perform an export
    port(exportSettings, function(err, res) {
        // The export result is now in res.
        // If the output is not PDF or SVG, it will be base64 encoded (res.data).
        // If the output is a PDF or SVG, it will contain a filename (res.filename).

        if (err) {
            return cb({
                code: '1',
                msg: 'Error in stock chart',
                err,
                exportSettings
            });
        }

        promiseId++;
        return cb({
            code: '0',
            msg: 'Success',
            promiseId: promiseId,
            data: 'data:image/png;base64,' + res.data,
        });
        // Kill the pool when we're done with it, and exit the application
        // highchartsExporter.killPool();
        // it(1);
    });
}

本文发布于:2024-05-07 20:31:03,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1715303407250715.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:您在   图表   请检查   错误   数据
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23