Skip to content

Commit a33cbef

Browse files
committed
v0.2.0 release
1 parent 6bfbbfd commit a33cbef

File tree

3 files changed

+151
-14
lines changed

3 files changed

+151
-14
lines changed

dc.js

Lines changed: 149 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
dc = {
2-
version: "0.1.0",
2+
version: "0.2.0",
33
_charts: []
44
};
55

@@ -66,7 +66,7 @@ dc.baseChart = function(chart) {
6666
var _anchor;
6767
var _root;
6868

69-
var width = 0, height = 0;
69+
var width = 200, height = 200;
7070

7171
var _transitionDuration = 750;
7272

@@ -82,8 +82,10 @@ dc.baseChart = function(chart) {
8282
return chart;
8383
};
8484

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+
});
8789
}
8890

8991
chart.filterAll = function() {
@@ -138,20 +140,36 @@ dc.baseChart = function(chart) {
138140
.attr("height", chart.height());
139141
};
140142

141-
chart.turnOnReset = function(){
143+
chart.turnOnReset = function() {
142144
chart.select("a.reset").style("display", null);
143145
};
144146

145-
chart.turnOffReset = function(){
147+
chart.turnOffReset = function() {
146148
chart.select("a.reset").style("display", "none");
147149
};
148150

149-
chart.transitionDuration = function(d){
150-
if(!arguments.length) return _transitionDuration;
151+
chart.transitionDuration = function(d) {
152+
if (!arguments.length) return _transitionDuration;
151153
_transitionDuration = d;
152154
return chart;
153155
}
154156

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+
155173
return chart;
156174
};dc.pieChart = function(selector) {
157175
var filter;
@@ -232,10 +250,9 @@ dc.baseChart = function(chart) {
232250
.data(dataPie(chart.orderedGroup().top(Infinity)))
233251
.enter()
234252
.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+
});
239256

240257
slicePaths = slices.append("path")
241258
.attr("fill", function(d, i) {
@@ -664,3 +681,123 @@ dc.barChart = function(selector) {
664681

665682
return chart.anchor(selector);
666683
};
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

Comments
 (0)