2015-06-08 1 views
2

Я пытаюсь добавить dc-count-widget, но мне нужно обойти размер/группу по умолчанию, являющуюся всеми данными/groupAll. Мой данные выглядит следующим образом:изменить размер/группу виджета dc-count в dc.js

`[{"subjId":"subj1", "temp":"37"}, 
    {"subjId":"subj1", "temp":"38"}, 
    {"subjId":"subj2", "temp":"36.5"}, 
    {"subjId":"subj2", "temp":"37.3"}, 
    {"subjId":"subj3", "temp":"39"} 
]` 

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

EDIT Я попытался:

subjectColumnName = 'subjId' 
subjectDim = cfData.dimension(function(d) {return d[subjectColumnName]}) 
chart.dimension(subjectDim.group()) 
chart.group(subjectDim.groupAll()) 

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

Благодаря

+0

возможно дубликат [отображать число различных элементов с графом данных виджета] (http://stackoverflow.com/questions/27789872/display-the-number-of- unique-items-with-data-count-widget) – Gordon

+0

Привет, Бернем, пожалуйста, проверьте, подходит ли этот другой вопрос/ответ на ваши потребности. Если это так, мы, вероятно, должны работать над функцией, чтобы поддерживать это напрямую. – Gordon

+0

Или этот вариант более совершенный, но приложение не позволяет мне изменить мой закрытый голос: http://stackoverflow.com/questions/30099139/datacount-graph-filtered-by-a-dimension/30196842 – Gordon

ответ

0

Благодаря @Gordon Решение в dataCount graph filtered by a dimension будет работать, но виджет не будет обновляться, если другие диаграммы фильтруется, поэтому мне пришлось создать пользовательскую функцию группы, чтобы рассчитывать только уникальные предметы.

Я еще не уверен, если функция reduceRemoveSubj верна. И похоже, что это очень разобщенное решение!

Здесь:

function reduceAddSubj(p, v) { 

      if(v[subjectColumnName] in p.subjects){ 
       p.subjects[v[subjectColumnName]]++ 
      } 
      else { 
       p.subjects[v[subjectColumnName]] = 1; 
       ++p.count; 
      } 
      return p; 
     } 

function reduceRemoveSubj(p, v) { 
      p.subjects[v[subjectColumnName]]--; 
      if(p.subjects[v[subjectColumnName]] === 0){ 
       delete p.subjects[v[subjectColumnName]]; 
       --p.count; 
      } 
      return p; 
     } 

function initialSubj() { 
      return {subjects: {}, 
        count:0 
      }; 
     } 

subjectColumnName = 'subjId' 
subjectDim = cfData.dimension(function(d) {return d[subjectColumnName]}) 
uniqueSubjGrp = subjectDim.groupAll().reduce(reduceAddSubj, reduceRemoveSubj, initialSubj) 
uniqueSubjGrpM = {value: function() { 
       return uniqueSubjGrp.value().count; 
      } }; 

chart.dimension(subjectDim.group()) 
chart.group(uniqueSubjGrpM) 
+0

Это странно, Интересно, почему виджет не обновлялся. Он привязан к группе диаграмм через реестр диаграмм, как и любой другой график. Это кажется очень сложным кодом для простой функции, но я рад, что у вас что-то работает. – Gordon