1
1
dc = {
2
- version : "0.1 .0" ,
2
+ version : "0.2 .0" ,
3
3
_charts : [ ]
4
4
} ;
5
5
@@ -66,7 +66,7 @@ dc.baseChart = function(chart) {
66
66
var _anchor ;
67
67
var _root ;
68
68
69
- var width = 0 , height = 0 ;
69
+ var width = 200 , height = 200 ;
70
70
71
71
var _transitionDuration = 750 ;
72
72
@@ -82,8 +82,10 @@ dc.baseChart = function(chart) {
82
82
return chart ;
83
83
} ;
84
84
85
- chart . orderedGroup = function ( ) {
86
- return _group . order ( function ( p ) { return p . key ; } ) ;
85
+ chart . orderedGroup = function ( ) {
86
+ return _group . order ( function ( p ) {
87
+ return p . key ;
88
+ } ) ;
87
89
}
88
90
89
91
chart . filterAll = function ( ) {
@@ -138,20 +140,36 @@ dc.baseChart = function(chart) {
138
140
. attr ( "height" , chart . height ( ) ) ;
139
141
} ;
140
142
141
- chart . turnOnReset = function ( ) {
143
+ chart . turnOnReset = function ( ) {
142
144
chart . select ( "a.reset" ) . style ( "display" , null ) ;
143
145
} ;
144
146
145
- chart . turnOffReset = function ( ) {
147
+ chart . turnOffReset = function ( ) {
146
148
chart . select ( "a.reset" ) . style ( "display" , "none" ) ;
147
149
} ;
148
150
149
- chart . transitionDuration = function ( d ) {
150
- if ( ! arguments . length ) return _transitionDuration ;
151
+ chart . transitionDuration = function ( d ) {
152
+ if ( ! arguments . length ) return _transitionDuration ;
151
153
_transitionDuration = d ;
152
154
return chart ;
153
155
}
154
156
157
+ // abstract function stub
158
+ chart . filter = function ( f ) {
159
+ // do nothing in base, should be overridden by sub-function
160
+ return chart ;
161
+ }
162
+
163
+ chart . render = function ( ) {
164
+ // do nothing in base, should be overridden by sub-function
165
+ return chart ;
166
+ }
167
+
168
+ chart . redraw = function ( ) {
169
+ // do nothing in base, should be overridden by sub-function
170
+ return chart ;
171
+ }
172
+
155
173
return chart ;
156
174
} ; dc . pieChart = function ( selector ) {
157
175
var filter ;
@@ -232,10 +250,9 @@ dc.baseChart = function(chart) {
232
250
. data ( dataPie ( chart . orderedGroup ( ) . top ( Infinity ) ) )
233
251
. enter ( )
234
252
. append ( "g" )
235
- . attr ( "id" , function ( d ) {
236
- return d . data . key ;
237
- } )
238
- . attr ( "class" , sliceCssClass ) ;
253
+ . attr ( "class" , function ( d , i ) {
254
+ return sliceCssClass + " " + i ;
255
+ } ) ;
239
256
240
257
slicePaths = slices . append ( "path" )
241
258
. attr ( "fill" , function ( d , i ) {
@@ -664,3 +681,123 @@ dc.barChart = function(selector) {
664
681
665
682
return chart . anchor ( selector ) ;
666
683
} ;
684
+ dc . dataCount = function ( selector ) {
685
+ var formatNumber = d3 . format ( ",d" ) ;
686
+ var chart = dc . baseChart ( { } ) ;
687
+
688
+ chart . render = function ( ) {
689
+ chart . selectAll ( ".total-count" ) . text ( formatNumber ( chart . dimension ( ) . size ( ) ) ) ;
690
+ chart . selectAll ( ".filter-count" ) . text ( formatNumber ( chart . group ( ) . value ( ) ) ) ;
691
+
692
+ return chart ;
693
+ } ;
694
+
695
+ chart . redraw = function ( ) {
696
+ return chart . render ( ) ;
697
+ } ;
698
+
699
+ dc . registerChart ( chart ) ;
700
+ return chart . anchor ( selector ) ;
701
+ } ; dc . dataTable = function ( selector ) {
702
+ var chart = dc . baseChart ( { } ) ;
703
+
704
+ var size = 25 ;
705
+ var columns = [ ] ;
706
+ var sortBy = function ( d ) { return d ; } ;
707
+ var order = d3 . ascending ;
708
+ var sort ;
709
+
710
+ chart . render = function ( ) {
711
+ chart . selectAll ( "div.row" ) . remove ( ) ;
712
+
713
+ renderRows ( renderGroups ( ) ) ;
714
+
715
+ return chart ;
716
+ } ;
717
+
718
+ function renderGroups ( ) {
719
+ var groups = chart . root ( ) . selectAll ( "div.group" )
720
+ . data ( nestEntries ( ) , function ( d ) {
721
+ return d . key ;
722
+ } ) ;
723
+
724
+ groups . enter ( ) . append ( "div" )
725
+ . attr ( "class" , "group" )
726
+ . append ( "span" )
727
+ . attr ( "class" , "label" )
728
+ . text ( function ( d ) {
729
+ return d . key ;
730
+ } ) ;
731
+
732
+ groups . exit ( ) . remove ( ) ;
733
+
734
+ return groups ;
735
+ }
736
+
737
+ function nestEntries ( ) {
738
+ if ( ! sort )
739
+ sort = crossfilter . quicksort . by ( sortBy ) ;
740
+
741
+ var entries = chart . dimension ( ) . top ( size ) ;
742
+ return d3 . nest ( )
743
+ . key ( chart . group ( ) )
744
+ . sortKeys ( order )
745
+ . entries ( sort ( entries , 0 , entries . length ) ) ;
746
+ }
747
+
748
+ function renderRows ( groups ) {
749
+ var rows = groups . order ( )
750
+ . selectAll ( "div.row" )
751
+ . data ( function ( d ) {
752
+ return d . values ;
753
+ } ) ;
754
+
755
+ var rowEnter = rows . enter ( )
756
+ . append ( "div" )
757
+ . attr ( "class" , "row" ) ;
758
+
759
+ for ( var i = 0 ; i < columns . length ; ++ i ) {
760
+ var f = columns [ i ] ;
761
+ rowEnter . append ( "span" )
762
+ . attr ( "class" , "column " + i )
763
+ . text ( function ( d ) {
764
+ return f ( d ) ;
765
+ } ) ;
766
+ }
767
+
768
+ rows . exit ( ) . remove ( ) ;
769
+
770
+ return rows ;
771
+ }
772
+
773
+ chart . redraw = function ( ) {
774
+ return chart . render ( ) ;
775
+ } ;
776
+
777
+ chart . size = function ( s ) {
778
+ if ( ! arguments . length ) return size ;
779
+ size = s ;
780
+ return chart ;
781
+ }
782
+
783
+ chart . columns = function ( _ ) {
784
+ if ( ! arguments . length ) return columns ;
785
+ columns = _ ;
786
+ return chart ;
787
+ }
788
+
789
+ chart . sortBy = function ( _ ) {
790
+ if ( ! arguments . length ) return sortBy ;
791
+ sortBy = _ ;
792
+ return chart ;
793
+ }
794
+
795
+ chart . order = function ( _ ) {
796
+ if ( ! arguments . length ) return order ;
797
+ order = _ ;
798
+ return chart ;
799
+ }
800
+
801
+ dc . registerChart ( chart ) ;
802
+ return chart . anchor ( selector ) ;
803
+ } ;
0 commit comments