Есть ли лучший способ создать гистограмму со следующей структурой данных в extjs4? - PullRequest
1 голос
/ 25 октября 2011

Итак, у меня есть следующая структура данных, возвращающаяся с моего сервера.

{date:'2/1', name: 'product 1', count: 10}
{date:'2/1', name: 'product 2', count: 5}
{date:'2/1', name: 'product 3', count: 15}
{date:'2/2', name: 'product 1', count: 11}
{date:'2/2', name: 'product 2', count: 6}

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

{date:'2/1', product_1: 10, product_2: 5, product_3: 15 }
{date:'2/2', product_1: 11, product_2: 6, product_3: 0}

Есть ли более элегантный способ решения этой проблемы. У меня нет большого контроля над серверной стороной вещей.

1 Ответ

1 голос
/ 12 декабря 2011

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

var dates = {};
var dataOut = [];
Ext.Array.each(dataIn, function(item) {
  var dateObj = dates[item.date];
  if (!date) {
    dates[item.date] = dateObj = {dateObj: item.date};
    dataOut.push(dateObj);
  }
  dateObj[item.name] = item.count;
});

Я не думаю, что в Ext существуют какие-либо вспомогательные классы для этого конкретного преобразования, и я неЯ думаю, что система карт может принимать разные форматы данных.Вы можете написать свой собственный Model, который ссылается на исходные данные, но я думаю, что это будет больше работы, чем приведенный выше код.

...