日期格式jqplot分类轴渲染器在刻度添加后的处理方式

3
我使用jQplot和primeFaces。
我想要为CategoryAxis编写日期格式化程序(日期以毫秒为单位)。
我在Stack上找到了不同的解决方案,但问题似乎是我的刻度:它们在创建后添加,并且选项/格式不会被考虑。
ticks: this.cfg.categories,

我尝试使用datetickformatter、自定义的datetickformatter、CanvasAxisTickRenderer以及CanvasAxisTickRenderer的版本进行测试,但都没有成功。
this.cfg.axes = {
    xaxis: {
        renderer: $.jqplot.CategoryAxisRenderer,
        rendererOptions: {
            tickRenderer: $.jqplot.CanvasAxisTickRenderer
        },
        tickOptions: {
            formatString: '%a.',
            fontSize:'7pt',
        },
        ticks: this.cfg.categories,
    },

感谢您,Ju。
1个回答

2

我发现使用CategoryAxisRenderer和CanvasTickRenderer的组合时出现了同样的问题。我想到了手动在JavaScript中格式化类别,然后将它们传递给渲染器的解决方案。在您的情况下,您可以使用以下内容作为primefaces图表的扩展程序:

function extender() {

var millis = this.cfg.categories;
var dates = new Array(categories.length);

for (var i = 0; i < categories.length; i++) {
    dates[i] = new Date(categories[i]).toLocaleDateString();
}

this.cfg.axes = {
    xaxis : {
        renderer : $.jqplot.CategoryAxisRenderer,
        rendererOptions : {             
            tickRenderer : $.jqplot.CanvasAxisTickRenderer,
            tickOptions : {
                fontSize:'7pt'                                  
            },
            ticks : dates
        }
    }
};
}

适用于我。警告:不要忘记日期需要数字而不是字符串。更多信息:https://dev59.com/q2Qm5IYBdhLWcg3wuhHSdates[i] = new Date(+this.cfg.categories[i]).toLocaleDateString();非常感谢。 - Julien Malige

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接