Сопоставить файл данных JSON с датами и несколькими парами строковых значений в Angular / Chart.js - PullRequest
0 голосов
/ 10 октября 2018

Задача

Я работаю с Angular и Chart.js (только что начал работать с обоими в первый раз) и мне нужно импортировать набор записей в Chart.js, который будет отображаться какмногоосевой линейный график.В данный момент я отображаю некоторые фиктивные данные для визуализации, которые работают безупречно.

Отображаемый набор записей представляет собой запись статистических данных, хранящихся в таблице базы данных MS SQL local .Из таблицы в Chart.js необходимо отобразить три столбца.

  1. ExeTimeStamp (в SQL-сервере, определенном как следующий стиль -> "каноническая дата и время ODBC с миллисекундами.«http://www.blackwasp.co.uk/sqldatetimeformats.aspx)
  2. LogTimeStamp (аналогично описанному выше стилю ExeTimeStamp)
  3. TaskResult (в SQL-сервере, определенном как String, хранятся тысячи наборов записей, каждый из которых содержит 15 пар значений)"и" метка "данных)

Задача

С помощью следующего учебного пособия (http://www.tutorialsteacher.com/nodejs/access-sql-server-in-nodejs) я смог подключиться кбазы данных и для извлечения данных для всех трех столбцов, которые будут отображаться в Chrome, что приводит к следующему формату JSON ...

{"recordsets":[[
[{
    "ExeTimeStamp":"2018-08-11T08:06:47",
    "LogTimeStamp":"2018-08-11T08:07:29",
        "TaskResult":[
            {"value":"1452","label":"Google readings"},
            {"value":"1618","label":"Navigate to 'log on' page"},
            {"value":"5467","label":"Log in"},
            {"value":"2420","label":"Find user"},
            {"value":"1500","label":"Click on 'active cases'"},
            {"value":"3084","label":"Click on case"},
            {"value":"1350","label":"Click on 'documents'"},
            {"value":"652","label":"Click on download PDF icon"},
            {"value":"5008","label":"Log in via login client"},
            {"value":"1","label":"Wait for down-load/check for PDF in PDF viewer"},
            {"value":"1299","label":"Click on extended search"},
            {"value":"1267","label":"Input search term"},
            {"value":"5004","label":"Execute search},
            {"value":"1696","label":"Log out"},
            {"value":"30366","label":"Total without google readings"
}]
//...remaining recordsets...
}]],"output":{},"rowsAffected":[20461]}

Теперь эти данные необходимо сопоставить с Chart.js, чтобы можно былопрочитайте данные на самом дисплее диаграммы.

Изучив другие предложения, я бы предложил создать новый класс машинописного текста, который будет выглядеть примерно так ...

export class livelogs implements OnInit {

  constructor() { }

  ngOnInit() {
  }

  exetimestamp: Date;
  logtimestamp: Date;
  taskresult: string[];

}

...чтобы сделать данные доступными для чтения Сhart.js из этого класса.

Однако к каждому набору записей с 15 парами данных value, label в TaskResult необходимо обращаться по одной паре за раз и сопоставлять индивидуально с Chart.js так,каждая линия (и точка пересечения) на диаграмме получает свое собственное значение и метку.

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

Может кто-нибудь указать мне правильное направление здесь?

Тип диаграммы из Chart.js, который я использую, можно увидеть здесь ...

http://www.chartjs.org/samples/latest/charts/line/multi-axis.html

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

...