Как заказать даты в Google Table Chart с помощью PHP? - PullRequest
1 голос
/ 18 марта 2019

Я создаю таблицу, используя Google Table Charts и PHP. Код таблицы:

google.charts.load('current', {'packages':['table']});
google.charts.setOnLoadCallback(drawTable);

  function drawTable() {
        var data = google.visualization.arrayToDataTable([
          <?php echo $dados; ?>
          ]);
  var table = new google.visualization.Table(document.getElementById('table_div'));
  data.sort({column: 0, desc: true});
  table.draw(data, {showRowNumber: false, width: '100%', height: '100%'});
}

PHP-код (который получает данные):

$dados = "['Data','InfoX','InfoY'],";
for($i = 0; $i < count($vet); $i++){
  $original_Date = $vet[$i][0];
  $New_Date = date("d/m/Y", strtotime($original_Date));

  $dados .= "['".$New_Date."',".$vet[$i][2].",".$vet[$i][3].','."]";
  if ($i+1 < count($vet)){
  $dados .= ",";
}

В настоящее время таблица выглядит так: enter image description here

Как видите, у меня проблема с тем, как сортируется первый столбец (сейчас он упорядочивается сначала по дню, а затем по месяцу и году).

Мне необходимо упорядочить первый столбец в хронологическом порядке (год-месяц-день), но показать его в формате дд / мм / гггг (в HTML это похоже на использование data-search и data-order). Есть ли какая-либо опция пользовательского права или опция, которую мне нужно использовать для решения моей проблемы?

Заранее спасибо за ответы и не стесняйтесь спрашивать более подробную информацию, если вам это нужно.

1 Ответ

2 голосов
/ 18 марта 2019

проблема в том, что даты выглядят как строки.
с реальными датами функция сортировки будет работать правильно.

попробуйте использовать следующий php ...

$New_Date = date("m/d/Y", strtotime($original_Date));

$dados .= "[new Date('".$New_Date."'),".$vet[$i][2].",".$vet[$i][3].','."]";

, затем в javascript используйте форматировщик даты для форматирования столбца даты ...

google.charts.load('current', {'packages':['table']});
google.charts.setOnLoadCallback(drawTable);

function drawTable() {
  var data = google.visualization.arrayToDataTable([
    <?php echo $dados; ?>
  ]);
  var table = new google.visualization.Table(document.getElementById('table_div'));
  data.sort({column: 0, desc: true});

  var formatDate = new google.visualization.DateFormat({pattern: 'dd/MM/yyyy'});
  formatDate.format(data, 0);

  table.draw(data, {showRowNumber: false, width: '100%', height: '100%'});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...