Skip to content

Commit afce883

Browse files
refactoring
1 parent 16d8164 commit afce883

File tree

2 files changed

+51
-38
lines changed

2 files changed

+51
-38
lines changed

example/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
MDX2JSONSource: "http://localhost:57772/SAMPLES", // MDX2JSON server address
9191
basicMDX: typeof req === "object" ? req.basicMDX : req
9292
}
93-
, showSummary: true // show summary by column
93+
//, showSummary: true // show summary by column
9494
//, formatNumbers: "#,###.##"
9595
//, drillDownTarget: "<dashboard name>" - undocumented, deepSee only
9696
};

source/js/PivotView.js

Lines changed: 50 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,52 @@ PivotView.prototype.displayMessage = function (html) {
318318

319319
};
320320

321+
/**
322+
* Poor function that provides number formatting.
323+
*
324+
* @param {string} mask - String like "#'###.##"
325+
* @param {number} value
326+
* @returns {string}
327+
*/
328+
PivotView.prototype.formatNumber = function (mask, value) {
329+
330+
var begin = true,
331+
fp = mask.match(/#+|[^#]+/g),
332+
integerPart, fractionalPart,
333+
last = -1, ip1, fp1;
334+
335+
ip1 = integerPart = parseInt(value).toString();
336+
fp1 = fractionalPart = (parseFloat(value) - parseInt(integerPart))
337+
.toString()
338+
.concat((new Array(this.controller.CONFIG["formatNumbers"].length))
339+
.join("0"));
340+
for (var i = fp.length - 1; i > -1; i--) {
341+
if (fp[i][0] !== "#") continue;
342+
if (begin) {
343+
fp[i] = fractionalPart.substr(2, fp[i].length); // flooring
344+
begin = false;
345+
} else {
346+
fp[i] = integerPart
347+
.substr(Math.max(integerPart.length - fp[i].length, 0), integerPart.length);
348+
integerPart = integerPart.substr(0, integerPart.length - fp[i].length);
349+
last = i;
350+
}
351+
if (integerPart.length === 0) {
352+
fp = fp.slice(i, fp.length);
353+
break;
354+
}
355+
}
356+
if (fp.join("") === "4.0.") {
357+
console.log(ip1, fp1);
358+
}
359+
if (last !== -1 && integerPart.length !== 0) {
360+
fp[0] = integerPart + fp[0];
361+
}
362+
363+
return fp.join("");
364+
365+
};
366+
321367
/**
322368
* Raw data - plain 2-dimensional array of data to render.
323369
*
@@ -346,7 +392,6 @@ PivotView.prototype.renderRawData = function (data) {
346392
timeToBreak = false,
347393
_ = this,
348394
x, y, tr, td,
349-
integerPart, fractionalPart, formatParts, fp,
350395
headColsNum = 0, headLeftColsNum = 0,
351396
headRowsNum = 0, headLeftRowsNum = 0;
352397

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

362407
};
363408

364-
if (this.controller.CONFIG["formatNumbers"]) {
365-
formatParts = this.controller.CONFIG["formatNumbers"].match(/#+|[^#]+/g);
366-
}
367-
368409
// compute headColsNum & headLeftColsNum
369410
for (y = 0; y < data.length; y++) {
370411
for (x = 0; x < data[y].length; x++) {
@@ -467,40 +508,12 @@ PivotView.prototype.renderRawData = function (data) {
467508
tr.appendChild(td);
468509
if (x >= headLeftColsNum && y >= headRowsNum) {
469510

470-
// todo: reorganize
471511
if (this.controller.CONFIG["formatNumbers"] && data[y][x].value
472512
&& isFinite(data[y][x].value)) {
473-
var begin = true,
474-
last = -1, ip1, fp1;
475-
ip1 = integerPart = parseInt(data[y][x].value).toString();
476-
fp1 = fractionalPart = (parseFloat(data[y][x].value) - parseInt(integerPart))
477-
.toString()
478-
.concat((new Array(this.controller.CONFIG["formatNumbers"].length))
479-
.join("0"));
480-
fp = formatParts.slice();
481-
for (var i = fp.length - 1; i > -1; i--) {
482-
if (fp[i][0] !== "#") continue;
483-
if (begin) {
484-
fp[i] = fractionalPart.substr(2, fp[i].length); // flooring
485-
begin = false;
486-
} else {
487-
fp[i] = integerPart
488-
.substr(Math.max(integerPart.length - fp[i].length, 0), integerPart.length);
489-
integerPart = integerPart.substr(0, integerPart.length - fp[i].length);
490-
last = i;
491-
}
492-
if (integerPart.length === 0) {
493-
fp = fp.slice(i, fp.length);
494-
break;
495-
}
496-
}
497-
if (fp.join("") === "4.0.") {
498-
console.log(ip1, fp1);
499-
}
500-
if (last !== -1 && integerPart.length !== 0) {
501-
fp[0] = integerPart + fp[0];
502-
}
503-
span.textContent = fp.join("");
513+
span.textContent = this.formatNumber(
514+
this.controller.CONFIG["formatNumbers"],
515+
data[y][x].value
516+
);
504517
} else {
505518
span.textContent = data[y][x].value;
506519
}

0 commit comments

Comments
 (0)