Skip to content

Commit

Permalink
Add considerMissingDataAsZero to consider missing value as zero
Browse files Browse the repository at this point in the history
Fix #26
  • Loading branch information
wa0x6e committed Aug 1, 2013
1 parent aa21e6d commit 1a501c5
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 21 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## v3.0.9 [2013-08-01]

* [new] Fix #26: add `considerMissingDataAsZero` option to consider missing value as zero

## v3.0.8 [2013-08-01]

* [new] Add `minDate`, `startDate` to limit domain navigation beyond certain dates
Expand Down
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cal-heatmap",
"version": "3.0.8",
"version": "3.0.9",
"main": ["./cal-heatmap.js", "./cal-heatmap.css"],
"dependencies": {
"d3": "~v3.0.6"
Expand Down
50 changes: 34 additions & 16 deletions cal-heatmap.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*! cal-heatmap v3.0.8 (Thu Aug 01 2013 14:27:18)
/*! cal-heatmap v3.0.9 (Thu Aug 01 2013 18:58:29)
* ---------------------------------------------
* Cal-Heatmap is a javascript module to create calendar heatmap to visualize time series data, a la github contribution graph
* https://github.com/kamisama/cal-heatmap
Expand Down Expand Up @@ -66,6 +66,10 @@ var CalHeatMap = function() {

dataType: allowedDataType[0],

// Whether to consider missing date:value from the datasource
// as equal to 0, or just leave them as missing
considerMissingDataAsZero: false,

// Load remote data on calendar creation
// When false, the calendar will be left empty
loadOnInit : true,
Expand Down Expand Up @@ -1316,17 +1320,23 @@ CalHeatMap.prototype = {
*/
display: function(data, domain) {
var parent = this;

domain.each(function(domainUnit) {

if (data.hasOwnProperty(domainUnit)) {
if (data.hasOwnProperty(domainUnit) || parent.options.considerMissingDataAsZero) {
d3.select(this).selectAll(".graph-subdomain-group rect")
.attr("class", function(d) {
var subDomainUnit = parent._domainType[parent.options.subDomain].extractUnit(d);

var htmlClass = "graph-rect" + parent.getHighlightClassName(d) +
(data[domainUnit].hasOwnProperty(subDomainUnit) ?
(" " + parent.legend(data[domainUnit][subDomainUnit])) : ""
);
var htmlClass = "graph-rect" + parent.getHighlightClassName(d);

var value;

if (data.hasOwnProperty(domainUnit) && data[domainUnit].hasOwnProperty(subDomainUnit)) {
htmlClass += " " + parent.legend(data[domainUnit][subDomainUnit]);
} else if (parent.options.considerMissingDataAsZero) {
htmlClass += " " + parent.legend(0);
}

if (parent.options.onClick !== null) {
htmlClass += " hover_cursor";
Expand All @@ -1339,26 +1349,34 @@ CalHeatMap.prototype = {
var subDomainUnit = parent._domainType[parent.options.subDomain].extractUnit(d);
return parent.onClick(
d,
(data[domainUnit].hasOwnProperty(subDomainUnit) ? data[domainUnit][subDomainUnit] : null)
(data[domainUnit].hasOwnProperty(subDomainUnit) || parent.options.considerMissingDataAsZero ? data[domainUnit][subDomainUnit] : null)
);
}
});

d3.select(this).selectAll(".graph-subdomain-group title")
.text(function(d) {
var subDomainUnit = parent._domainType[parent.options.subDomain].extractUnit(d);
return (
(data[domainUnit].hasOwnProperty(subDomainUnit) && data[domainUnit][subDomainUnit] !== null) ?
(parent.options.subDomainTitleFormat.filled).format({
count: parent.formatNumber(data[domainUnit][subDomainUnit]),
name: parent.options.itemName[(data[domainUnit][subDomainUnit] !== 1 ? 1 : 0)],

if ((data.hasOwnProperty(domainUnit) && data[domainUnit].hasOwnProperty(subDomainUnit) && data[domainUnit][subDomainUnit] !== null) || parent.options.considerMissingDataAsZero){

if (data.hasOwnProperty(domainUnit) && data[domainUnit].hasOwnProperty(subDomainUnit)) {
value = data[domainUnit][subDomainUnit];
} else if (parent.options.considerMissingDataAsZero) {
value = 0;
}

return (parent.options.subDomainTitleFormat.filled).format({
count: parent.formatNumber(value),
name: parent.options.itemName[(value !== 1 ? 1 : 0)],
connector: parent._domainType[parent.options.subDomain].format.connector,
date: parent.formatDate(d, parent.options.subDomainDateFormat)
}) :
(parent.options.subDomainTitleFormat.empty).format({
});
} else {
return (parent.options.subDomainTitleFormat.empty).format({
date: parent.formatDate(d, parent.options.subDomainDateFormat)
})
);
});
};
});


Expand Down
4 changes: 2 additions & 2 deletions cal-heatmap.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion cal-heatmap.source-map.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cal-heatmap",
"version": "3.0.8",
"version": "3.0.9",
"description": "Cal-Heatmap is a javascript module to create calendar heatmap to visualize time series data, a la github contribution graph",
"keywords": [
"calendar",
Expand Down

0 comments on commit 1a501c5

Please sign in to comment.