Distinct row count and display in Number Charts

102 views
Skip to first unread message

anmol koul

unread,
Mar 12, 2015, 3:13:29 PM3/12/15
to dc-js-us...@googlegroups.com

I am stuck at a unique problem involving dc.js and crossfilter. I have some data which i need to display using Number Charts powered by dc.js. However i found minimal documentation for the number charts and hence posting my query.

Here is the JSFiddle for what i have conceptualized so far.

I basically want to show the unique project count in box 1 which in this case would be 3, unique place count in box 2 which in this case would be 11 and the screen failure rate which would be 2/15*100 i.e. 15.3%

Currently i have made this working using jquery but thats just a hack. I would like to have these number charts based on cross table aggregation so that i can drill down on the data.

I have come across examples for reductions to calculate counts but they were for bar charts but in the number chart we need to have a value accessor for displaying data.

Can someone help me out please?

PS: Here is the jquery code that i wrote. Dont know if this would be helpful.

$(document).ready(function() {
    var baseURL = window.location.origin;

    $.ajax({
        url : baseURL + '/api/PlaceTable',
        type : 'GET',
        data : {},
        async : true,
        dataType : "json",
        success : function(response) {


            //Project Count
            var projectIdCount = [];
            for (i = 0; i < response.length; i++) {
                if(response[i].Project != undefined){
                    if($.inArray(response[i].Project, projectIdCount) === -1){
                        projectIdCount.push(response[i].Project);
                    }                    
                }
            }
            $('#number-box1').text(ProjectIdCount.length);


            //Place Count
            var placeIdCount = [];
            for (i = 0; i < response.length; i++) {
                if(response[i].Place != undefined){
                    if($.inArray(response[i].Place, placeIdCount) === -1){
                        placeIdCount.push(response[i].Place);
                    }                    
                }
            }

And for displaying a running sum of a column containing binary values i used this code, which worked in the number chart:

numberChart
        .valueAccessor(function(x){ return +flag.groupAll().reduceCount().reduceSum(function(d) { return d.Flag; }).value();})
        .group(ndx.groupAll());

Copying to SO as well..

anmol koul

unread,
Mar 12, 2015, 3:16:04 PM3/12/15
to dc-js-us...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages