1

jquery datepicker ウィジェットを jqplot と組み合わせて、datepicker の値を使用して、何かが変更されたときにプロットを再作成しています。

ただし、日付範囲が大きい場合、x 軸のラベルが一緒になって非常に見苦しくなります。

これは定期的に次のとおりです。 ここに画像の説明を入力

広い範囲でそれを次に示します。 ここに画像の説明を入力

私の質問は - 軸のレンダリングを変更することは可能ですか?すべての日付が表示されるわけではない大きな範囲がある場合は? おそらく 2 つまたは 3 つですが、常に開始日と終了日が含まれます。

これが私のコードです。助けていただける場合はお知らせください。

 $(document).ready(function(){



                            var ajaxDataRenderer = function(url, plot, options) {
                                var ret = null;
                                $.ajax({
                                    async: false,
                                    url: url,
                                    type: "GET",
                                    dataType:"json",
                                    data: {metricName: ""},
                                    success: function(data) {
                                        ret = data;
                                    },
                                    error:function (xhr, ajaxOptions, thrownError){
                                        alert(xhr.responseText);
                                    }    
                                });
                                return ret;
                            };

                            //var jsonurl = "reports/reportData.json";
                            var jsonurl = "tenant/metrics/get.json";

                            var currentTime = new Date()
                            var month = currentTime.getMonth() + 1;
                            var day = currentTime.getDate();
                            var year = currentTime.getFullYear();
                            var today = month + "-" + day + "-" + year;

                            var currentDatePlus = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
                            var dayPlus = currentDatePlus.getDate()
                            var monthPlus = currentDatePlus.getMonth() + 1
                            var yearPlus = currentDatePlus.getFullYear()
                            var tomorrow = monthPlus + "/" + dayPlus + "/" + yearPlus;


                            function getLastWeek(){
                                var today = new Date();
                                var lastWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
                                return lastWeek ;
                            }

                            var lastWeek = getLastWeek();
                            var lastWeekMonth = lastWeek.getMonth() + 1;
                            var lastWeekDay = lastWeek.getDate();
                            var lastWeekYear = lastWeek.getFullYear();

                            var lastWeekDisplay = lastWeekMonth + "/" + lastWeekDay + "/" + lastWeekYear;

                            var datepickerBegin = $("#datepicker_start").val();
                            var datepickerEnd = $("#datepicker_to").val();

                            $('#applyBtn').click( function() {
                                // Check to make sure the datepicker isn't empty
                            if ($("#datepicker_start").val() !== "" && $("#datepicker_to").val() !== "") {

                                var datepickerBegin = $("#datepicker_start").val();
                                var datepickerEnd = $("#datepicker_to").val();

                                        //Recreate the plot
                                        var plot2 = $.jqplot('chart2', jsonurl,{
                                        title: "",
                                        dataRenderer: ajaxDataRenderer,
                                        dataRendererOptions: {unusedOptionalUrl: jsonurl},
                                        axes: {
                                            xaxis: {
                                                //'numberTicks' : 7,
                                                min: datepickerBegin,
                                                max: datepickerEnd,
                                                renderer:$.jqplot.DateAxisRenderer,
                                                rendererOptions:{tickRenderer:$.jqplot.CanvasAxisTickRenderer},
                                                tickInterval: '1 day',
                                                tickOptions:{formatString:'%#m/%#d/%Y'

                                                }
                                                //rendererOptions: {sdaTickInterval: [1, 'month']}

                                            },
                                            yaxis: {
                                                label: "MB",
                                                tickOptions:{formatString:'%d '},
                                                // Comment the next line out to allow negative values (and therefore rounded ones)
                                                min: 0
                                            }

                                        },
                                        highlighter: {
                                            show: true,
                                            sizeAdjust: 7.5
                                        }
                                    });
                                //redraw the plot now.
                                //plot2.reInitialize({});
                                plot2.replot({});

                                }
                            })


                            // The default plot

                            var plot2 = $.jqplot('chart2', jsonurl,{
                                title: "",
                                dataRenderer: ajaxDataRenderer,
                                dataRendererOptions: {unusedOptionalUrl: jsonurl},
                                axes: {
                                    xaxis: {
                                        //'numberTicks' : 7,
                                        min: lastWeekDisplay,
                                        max: tomorrow,
                                        renderer:$.jqplot.DateAxisRenderer,
                                        rendererOptions:{tickRenderer:$.jqplot.CanvasAxisTickRenderer},
                                        tickInterval: '1 day',
                                        tickOptions:{formatString:'%#m/%#d/%Y'
                                        }
                                        //rendererOptions: {sdaTickInterval: [1, 'month']}

                                    },
                                    yaxis: {
                                        label: "MB",
                                        tickOptions:{formatString:'%d '},
                                        // Comment the next line out to allow negative values (and therefore rounded ones)
                                        min: 0
                                    }

                                },
                                highlighter: {
                                    show: true,
                                    sizeAdjust: 7.5
                                }
                            });


                        });
4

1 に答える 1

2

わかりました - この問題についてよく理解できました。

「numberTicks」プロパティを使用してティック数を制限したので、日付範囲が特定の値を超えている場合は特定の数になります。

残っている唯一の問題は、numberTicks では交点が常に正しいとは限らないことです (つまり、x 軸 10/05/12 では、numberTicks が制限されている場合、値が常にそこに配置されるわけではありません。

于 2013-04-10T20:59:41.323 に答える