Fixed Performance Issue with Storyboards

gh-pages
John Kiernander 2013-07-24 08:59:32 +01:00
parent 52e8810f04
commit b3edc979ec
2 changed files with 16 additions and 16 deletions

28
dist/dimple.v1.js vendored
View File

@ -505,7 +505,9 @@ var dimple = {
}
if (series.categoryFields !== null && series.categoryFields !== undefined && series.categoryFields.length > 0) {
rules = series._orderRules;
// Concat is used here to break the reference to the parent array, if we don't do this, in a storyboarded chart,
// the series rules to grow and grow until the system grinds to a halt trying to deal with them all.
rules = [].concat(series._orderRules);
seriesCat = series.categoryFields[0];
if (series.c !== null && series.c !== undefined && series.c._hasMeasure()) {
rules.push({ ordering : series.c.measure, desc : true });
@ -3463,21 +3465,19 @@ var dimple = {
// License: "https://github.com/PMSI-AlignAlytics/dimple/blob/master/MIT-LICENSE.txt"
// Source: /src/objects/chart/methods/_getOrderedList.js
dimple._getOrderedList = function (data, mainField, levelDefinitions) {
// Force the level definitions into an array
if (levelDefinitions === null || levelDefinitions === undefined) {
levelDefinitions = [];
} else {
levelDefinitions = [].concat(levelDefinitions);
}
// Add the base case
levelDefinitions = levelDefinitions.concat({ ordering: mainField, desc: false });
// Function for recursively sorting
var rollupData = [],
sortStack = [],
finalArray = [],
fields = [mainField];
fields = [mainField],
defs = [];
// Force the level definitions into an array
if (levelDefinitions !== null && levelDefinitions !== undefined) {
defs = defs.concat(levelDefinitions);
}
// Add the base case
defs = defs.concat({ ordering: mainField, desc: false });
// Exclude fields if this does not contain a function
levelDefinitions.forEach(function (def) {
defs.forEach(function (def) {
var field;
if (typeof def.ordering === "function") {
for (field in data[0]) {
@ -3491,10 +3491,10 @@ var dimple = {
}, this);
rollupData = dimple._rollUp(data, mainField, fields);
// If we go below the leaf stop recursing
if (levelDefinitions.length >= 1) {
if (defs.length >= 1) {
// Build a stack of compare methods
// Iterate each level definition
levelDefinitions.forEach(function (def) {
defs.forEach(function (def) {
// Draw ascending by default
var desc = (def.desc === null || def.desc === undefined ? false : def.desc),
ordering = def.ordering,

File diff suppressed because one or more lines are too long