Проблема с DateTimeContinuousAxis, один день добавляется к каждой дате без видимой причины [Nativescript-Angular] - PullRequest
0 голосов
/ 01 октября 2019

Я получаю json как этот от chartService, но когда я пытаюсь показать данные, к каждой дате добавляется 1 день. Я использую Genymotion для подражания. Я не знаю, может ли это быть проблема с часовым поясом во внутреннем эмуляторе, кто-нибудь будет знать, что происходит?

JSON = [{
"fecha": "2019-09-23",
"km_rec": 431.56
}, {
"fecha": "2019-09-25",
"km_rec": 187.12
}, {
"fecha": "2019-09-26",
"km_rec": 270.08
}, {
"fecha": "2019-09-27",
"km_rec": 121.04
}, {
"fecha": "2019-09-28",
"km_rec": 407.96
}, {
"fecha": "2019-09-29",
"km_rec": 10.98
}]
<StackLayout class="c-stacklayout" alignItems="flex-end">
    <GridLayout class="modal_chart">
        <RadCartesianChart tkExampleTitle tkToggleNavButton>            
            <DateTimeCategoricalAxis tkCartesianHorizontalAxis dateFormat="dd-MMM" labelFitMode="Rotate" labelRotationAngle="-1.2" labelTextColor="black"></DateTimeCategoricalAxis>
            <LinearAxis tkCartesianVerticalAxis allowPan="false" allowZoom="false"></LinearAxis>
            <LineSeries tkCartesianSeries selectionMode="DataPointMultiple" showLabels="true" [items]="distance" valueProperty="km_rec" categoryProperty="fecha">
                <PointLabelStyle tkLineLabelStyle fontStyle="Bold" fillColor="#FC6060" textSize="12" textColor="White">
                </PointLabelStyle>
            </LineSeries>
            <RadCartesianChartGrid tkCartesianGrid horizontalLinesVisible="true" verticalLinesVisible="false" verticalStripLinesVisible="false" horizontalStripLinesVisible="true" >
            </RadCartesianChartGrid>
        </RadCartesianChart>
    </GridLayout>
</StackLayout>

ngOnInit() {
   this.initDataItems()
}

  private initDataItems() {
   this.checkedDistanceData();
}

checkedDistanceData() {
    this.query(Config.storage.vehicleSelected, veh => {
        this.query(moment().format('YYYY-MM-DD') + this.id_veh, data => {
          if (data) {
            this.setChartDistance(JSON.parse(data.value));
                ...
                } else {
                   this.chartService();
                   ...
                }
            });
        };
    });

  chartService() {
    this.httpGet(route (www.dis....),
      data => {
        this.setChartDistance(data);
        this.changeDetector.detectChanges();
    },
      error => {
          error...
    }, null);
}
  get getchartDistance() {
      return distance;
}

  setChartDistance(chart) {
    this.distance = chart;
}

1 Ответ

0 голосов
/ 01 октября 2019

Согласно документации, вы должны хранить ваши даты в миллисекундах .

Скорее всего, вы передаете объект даты, который сериализуется, а при десериализации он теряет / набирает несколько часови переход к следующему дню.

Возможно, вы захотите запустить некоторые тесты, если используете UTC или лучше использовать местный часовой пояс (поскольку вы используете момент, вы можете использовать moment.utc(), а затем получить егов мс).

См. пример здесь: https://github.com/NativeScript/nativescript-ui-samples/blob/master/chart/app/examples/data-models/date-time-model.ts

...