Skip to content

Commit 9d30fbd

Browse files
number formatting
1 parent d70f6fc commit 9d30fbd

File tree

3 files changed

+56
-5
lines changed

3 files changed

+56
-5
lines changed

example/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
basicMDX: typeof req === "object" ? req.basicMDX : req
9292
}
9393
//, showSummary: true // show summary by column
94+
//, formatNumbers: "#,###.##"
9495
//, drillDownTarget: "<dashboard name>" - undocumented, deepSee only
9596
};
9697

export/LightPivotTable.xml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<Class name="DeepSee.LightPivotTable">
1313
<Super>%DeepSee.Component.Portlet.abstractPortlet</Super>
14-
<TimeChanged>63521,73483.405523</TimeChanged>
14+
<TimeChanged>63522,308.015025</TimeChanged>
1515
<TimeCreated>63515,61322.546099</TimeCreated>
1616

1717
<Parameter name="INCLUDEFILES">
@@ -185,9 +185,14 @@
185185
post(source + "/DataSource", { DataSource: info["dataSource"] }, function (data) {
186186
187187
//console.log(data);
188-
if (data["rowAxisOptions"] && data["rowAxisOptions"]["drilldownSpec"]) {
189-
console.log(data["rowAxisOptions"]["drilldownSpec"]);
190-
setup.DrillDownExpression = data["rowAxisOptions"]["drilldownSpec"];
188+
if (data["rowAxisOptions"]) {
189+
if (data["rowAxisOptions"]["drilldownSpec"]) {
190+
console.log(data["rowAxisOptions"]["drilldownSpec"]);
191+
setup.DrillDownExpression = data["rowAxisOptions"]["drilldownSpec"];
192+
}
193+
if (data["rowAxisOptions"]["levelFormat"] || data["columnAxisOptions"] && data["columnAxisOptions"]["levelFormat"]) {
194+
setup["formatNumbers"] = data["columnAxisOptions"]["levelFormat"] || data["rowAxisOptions"]["levelFormat"];
195+
}
191196
}
192197
193198
_.LightPivotTable = new LightPivotTable(setup);

source/js/PivotView.js

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ PivotView.prototype.renderRawData = function (data) {
346346
timeToBreak = false,
347347
_ = this,
348348
x, y, tr, td,
349+
integerPart, fractionalPart, formatParts, fp,
349350
headColsNum = 0, headLeftColsNum = 0,
350351
headRowsNum = 0, headLeftRowsNum = 0;
351352

@@ -360,6 +361,10 @@ PivotView.prototype.renderRawData = function (data) {
360361

361362
};
362363

364+
if (this.controller.CONFIG["formatNumbers"]) {
365+
formatParts = this.controller.CONFIG["formatNumbers"].match(/#+|[^#]+/g);
366+
}
367+
363368
// compute headColsNum & headLeftColsNum
364369
for (y = 0; y < data.length; y++) {
365370
for (x = 0; x < data[y].length; x++) {
@@ -449,13 +454,53 @@ PivotView.prototype.renderRawData = function (data) {
449454

450455
if (td) {
451456
var span = document.createElement("span");
452-
span.textContent = data[y][x].value;
453457
td.appendChild(span);
454458
tr.appendChild(td);
455459
if (x >= headLeftColsNum && y >= headRowsNum) {
460+
461+
// todo: reorganize
462+
if (this.controller.CONFIG["formatNumbers"] && data[y][x].value
463+
&& isFinite(data[y][x].value)) {
464+
var begin = true,
465+
last = -1, ip1, fp1;
466+
ip1 = integerPart = parseInt(data[y][x].value).toString();
467+
fp1 = fractionalPart = (parseFloat(data[y][x].value) - parseInt(integerPart))
468+
.toString()
469+
.concat((new Array(this.controller.CONFIG["formatNumbers"].length))
470+
.join("0"));
471+
fp = formatParts.slice();
472+
for (var i = fp.length - 1; i > -1; i--) {
473+
if (fp[i][0] !== "#") continue;
474+
if (begin) {
475+
fp[i] = fractionalPart.substr(2, fp[i].length); // flooring
476+
begin = false;
477+
} else {
478+
fp[i] = integerPart
479+
.substr(Math.max(integerPart.length - fp[i].length, 0), integerPart.length);
480+
integerPart = integerPart.substr(0, integerPart.length - fp[i].length);
481+
last = i;
482+
}
483+
if (integerPart.length === 0) {
484+
fp = fp.slice(i, fp.length);
485+
break;
486+
}
487+
}
488+
if (fp.join("") === "4.0.") {
489+
console.log(ip1, fp1);
490+
}
491+
if (last !== -1 && integerPart.length !== 0) {
492+
fp[0] = integerPart + fp[0];
493+
}
494+
span.textContent = fp.join("");
495+
} else {
496+
span.textContent = data[y][x].value;
497+
}
498+
456499
(function (x, y) {addTrigger(td, "click", function () {
457500
_._cellClickHandler.call(_, x, y);
458501
})})(x, y);
502+
} else {
503+
span.textContent = data[y][x].value;
459504
}
460505
}
461506

0 commit comments

Comments
 (0)