softMin / softMax для xAxis в HighStock не устанавливается? - PullRequest
0 голосов
/ 03 февраля 2020

Просматривая документацию Highstock, он говорит, что для xAxis есть softMin и softMax, но если я использую даты, он, похоже, не соответствует требуемым диапазонам дат.

Мне нужно было выполните следующие действия: найдите интервал данных xAxis, а затем добавьте в начало / конец массива нулевые данные в эти моменты времени, чтобы правильно передать информацию.

Это работает, но я полагал, что мягкие значения HighStock должны справиться с этим.

В примере использования: вы можете установить следующее:

{
    chart: {
      type: this.type || 'line',
    },
    title: {
      text: this.title || ''
    },
    credits: {
      enabled: false
    },
    rangeSelector: {
      inputEnabled: false,  // Specific to the Date Range Picker.
      enabled: false         // Specific to the Quick Selects for YTD, 6 mo, zoom.
    },
    navigator: {
      adaptToUpdatedData: true
    },
    scrollbar: {
      enabled: false
    },
    legend: {
      enabled: true
    },
    xAxis: {
      min: undefined,
      max: undefined,
      softMin: undefined,
      softMax: undefined,
      type: 'datetime',
      dateTimeLabelFormats: {
        day: '%b %e'
      }
    },
    // yAxis: {
    //   title: { text: ''}, opposite: true, type: 'linear'
    // },
    plotOptions: {
      series: {
        dataGrouping: {
          approximation: 'sum',
          groupPixelWidth: 25,
          forced: true,
          units: [
            ['minute', [30]],
            ['day', [1, 7, 15]],
            ['month', [1, 3, 6]]
          ]
        }
      }
    },
    series: []
  }

Так Я смотрю на даты, как если бы они были числами, new Date().getTime(), но если я хочу установить softMin и softMax, я хотел бы сделать что-то вроде:

xAxis: {
  softMin: new Date().getTime() - 1000 * 3600 * 24 * days_back
  softMax: new Date().getTime()
  }

где days_back - переменная, определяемая пользователем для того, как много дней назад, чтобы посмотреть.

То, как я выкладываю информацию о сериале, выглядит следующим образом:

const endtime = new Date().getTime();   //The current definition of endtime is now as there is no data for the future.
    const starttime = endtime - 1000 * 3600 * 24 * days;
    opts.series = dataset.map((item, idx, arr) => {
      const name: string = item.name || '';
      const data: any[] = item.data || []; // data is a list of lists.    ][time_as_number, value],...]
      if (data.length > 1) {
        /// The purpose of this code block is to padd out the dataset to the start and end ranges.
        ///  While there is a softMin and softMax, it doesnt work too when with regards to dates.
        ///  This will padd the data to be represenative of the users base selection.
        ///  If the list of data has 0 or 1 points, there is not enough data to define an interval for the target range.
        const difference = data[1][0] - data[0][0];
        let low = data[1][0];
        while (low > starttime) {
          low -= difference;
          data.unshift([low, null]);
        }
        let high = data[data.length - 1][0];
        while (high < endtime) {
          high += difference;
          data.push([high, null]);
        }
      }
      return {
        marker: { enabled: true },
        showInNavigator: true,
        type: 'line',
        name,
        data
      };
    });

Есть ли что-то, чего мне не хватает, которое я должен принимать во внимание? min / max / minRange / maxRange в соответствии с документами - это не те ключи, которые я хотел назначить.

Для простоты понимания документация HighStock находится здесь: https://api.highcharts.com/highstock/xAxis.softMin

Вот пример: https://jsfiddle.net/sp18efkb/ В этом примере вы увидите, что я установил softMin, но он не отражается. Если я использую chart объект, он работает. Кажется, что, хотя он действителен в соответствии с API, он не является допустимым или контролируемым свойством.

1 Ответ

0 голосов
/ 10 февраля 2020

При просмотре диаграмм HighStock есть дополнительная переменная, которую необходимо установить, если вы смотрите на это.

В xAxis вам нужно установить свойство ordinal для ложный. Чтобы заставить навигатор функционировать таким же образом, вам нужно использовать это свойство, установить одинаковые значения softmin и soft max, а также отключить порядковый номер.

Это будет выглядеть примерно так:

...

  navigator: {
    adaptToUpdatedData: true,
    xAxis: {
      ordinal: false,
      min: undefined,
      max: undefined,
      softMin: new Date().getTime() - 1000 * 3600 * 24 * 5,
      softMax: undefined
    }
  },
  xAxis: {
    ordinal: false,
    min: undefined,
    max: undefined,
    softMin: new Date().getTime() - 1000 * 3600 * 24 * 5,
    softMax: undefined,
    type: 'datetime',
    dateTimeLabelFormats: {
      day: '%b %e'
    }
  },
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...