generating TreeView is very slow
Hi.
Any idea why generateTreeViewItems funcion is so slow? It takes about 2 seconds to generate treeview once editText field is active. Is it CC2015 or did I do something wrong here?
Thanks.
var myObjectList = {
"Group 1" : [
{ "name" : "FUI Box Combo", "funck": "FUIboxCombo" },
{ "name" : "FUI Combo 1", "funck": "FUIcombo1" },
{ "name" : "FUI Combo 2", "funck": "FUIcombo2" },
{ "name" : "FUI Combo 3", "funck": "FUIcombo3" },
{ "name" : "FUI Combo 4", "funck": "FUIcombo4" },
{ "name" : "FUI Combo 5", "funck": "FUIcombo5" },
{ "name" : "FUI Combo 6", "funck": "FUIcombo6" },
{ "name" : "FUI new to 1.5", "funck": "FUInewTo1_5" }
],
"Group 2" : [
{ "name" : "BG Crosshairs", "funck": "BGcrosshairs" },
{ "name" : "BG CurveSquiggles", "funck": "BGcurveSquiggles" },
{ "name" : "BG Diag", "funck": "BGdiag" },
{ "name" : "BG Diag Boxed", "funck": "BGdiagBoxed" },
{ "name" : "BG Fat Stripes", "funck": "BGfatStripes" },
{ "name" : "BG Hex", "funck": "BGhex" },
{ "name" : "BG light grid", "funck": "BGlightGrid" },
{ "name" : "BG lines", "funck": "BGlines" },
{ "name" : "BG Ls", "funck": "BGls" },
{ "name" : "BG opengrid", "funck": "BGopengrid" },
{ "name" : "BG step squares", "funck": "BGstepSquares" },
{ "name" : "BG tri grid", "funck": "BGtriGrid" },
{ "name" : "BG waves", "funck": "BGwaves" },
{ "name" : "BG zippy squares", "funck": "BGzippySquares" }
],
"Group 3" : [
{ "name" : "Blocks", "funck": "blocks" },
{ "name" : "Boingy-box", "funck": "boingyBox" },
{ "name" : "Bracket Box", "funck": "bracketBox" },
{ "name" : "Corner Box", "funck": "cornerBox" },
{ "name" : "Fake Screen", "funck": "fakeScreen" },
{ "name" : "Flashy Table", "funck": "flashyTable" },
{ "name" : "OS Frame", "funck": "OSframe" },
{ "name" : "Periodic Table", "funck": "periodicTable" },
{ "name" : "PhotoFrame 1", "funck": "photoFrame1" },
{ "name" : "Point Box", "funck": "pointBox" },
{ "name" : "Pointless Box", "funck": "pointlessBox" },
{ "name" : "Square Dance", "funck": "squareDance" },
{ "name" : "Target Box", "funck": "targetBox" },
{ "name" : "Techy Frame", "funck": "techyFrame" },
{ "name" : "Triangle Box", "funck": "triangleBox" }
],
"Group 3" : [
{ "name" : "blips", "funck": "blips" },
{ "name" : "Bursty", "funck": "bursty" },
{ "name" : "Dot belt", "funck": "dotBelt" },
{ "name" : "Earthquake", "funck": "earthquake" },
{ "name" : "Fig8. v1", "funck": "fig8v1" },
{ "name" : "Fig8. v2", "funck": "fig8v2" },
{ "name" : "Fig8. v3", "funck": "fig8v3" },
{ "name" : "Fizzy data thing", "funck": "fizzyDataThing" },
{ "name" : "Just some dots, relax", "funck": "justSomeDotsRelax" },
{ "name" : "Knightrider scan", "funck": "knightriderScan" },
{ "name" : "Shoop Shoop lines", "funck": "shoopShoopLines" },
{ "name" : "Wobbly", "funck": "wobbly" }
],
"Group 4" : [
{ "name" : "Elaborate line graph", "funck": "elaborateLineGraph" },
{ "name" : "Flickery Pie Slices", "funck": "flickeryPieSlices" },
{ "name" : "Meaningless Line Graph", "funck": "meaninglessJerkyLineGraph" },
{ "name" : "Nondescript Barchart", "funck": "nondescriptBarchart" },
{ "name" : "Overactive line graph", "funck": "overactiveLineGraph" },
{ "name" : "RGB Curves", "funck": "RGBCurves" },
{ "name" : "Sine Wave", "funck": "sineWave" },
{ "name" : "Snappy Line Graph", "funck": "snappyLineGraph" },
{ "name" : "Stupid line graph", "funck": "stupidLineGraph" }
],
"Group 5" : [
{ "name" : "After Effects (kinda)", "funck": "afterEffectsKinda" },
{ "name" : "Almost DNA", "funck": "almostDNA" },
{ "name" : "Apple Loading", "funck": "appleLoading" },
{ "name" : "Atom", "funck": "atom" },
{ "name" : "Bunch of knobs", "funck": "bunchOfKnobs" },
{ "name" : "Calendar", "funck": "calendar" },
{ "name" : "Chevron thing", "funck": "chevronThing" },
{ "name" : "Clock", "funck": "clock" },
{ "name" : "Complicated Compass", "funck": "complicatedCompass" },
{ "name" : "Crap Siri", "funck": "crapSiri" },
{ "name" : "Deleting Files", "funck": "deletingFiles" },
{ "name" : "Fingerprint", "funck": "fingerprint" },
{ "name" : "Flicky Squares", "funck": "flickySquares" },
{ "name" : "Flux Capacitor", "funck": "fluxCapacitor" },
{ "name" : "Kitt Voice", "funck": "kittVoice" },
{ "name" : "Label", "funck": "label" },
{ "name" : "Loading (line)", "funck": "loadingLine" },
{ "name" : "Plus", "funck": "plus" },
{ "name" : "Radar", "funck": "radar" },
{ "name" : "Segment thing", "funck": "segmentThing" },
{ "name" : "Skype loader", "funck": "skypeLoader" },
{ "name" : "Speed thing", "funck": "speedThing" },
{ "name" : "Spiral", "funck": "spiral" },
{ "name" : "Stay on Target", "funck": "stayOnTarget" },
{ "name" : "Techy Spinny Blocks", "funck": "techySpinnyBlocks" },
{ "name" : "Temperature thing", "funck": "temperatureThing" },
{ "name" : "Warning?", "funck": "warning" },
{ "name" : "Wobbly Hexagons", "funck": "wobblyHexagons" }
],
"Group 6" : [
{ "name" : "Compression Wave", "funck": "compressionWave" },
{ "name" : "Connector things", "funck": "connectorThings" },
{ "name" : "Diagram indicator", "funck": "diagramIndicator" },
{ "name" : "Flickery Bullshit", "funck": "flickeryBullshit" },
{ "name" : "Hex thing", "funck": "hexThing" },
{ "name" : "Hex thing alt", "funck": "hexThingAlt" },
{ "name" : "LineUp", "funck": "lineUp" },
{ "name" : "Scanny grid", "funck": "scannyGrid" },
{ "name" : "Sciencey looking Analysis", "funck": "scienceyLookingAnalysis" },
{ "name" : "Sciencey looking Analysis 2", "funck": "scienceyLookingAnalysis2" },
{ "name" : "Triangle", "funck": "triangle" }
],
"Group 7" : [
{ "name" : "Cafinated Wavey Sliders", "funck": "cafinatedWaveySliders" },
{ "name" : "Delightful Tabs", "funck": "delightfulTabs" },
{ "name" : "Different sliders", "funck": "differentSliders" },
{ "name" : "Graphic EQ", "funck": "graphicEQ" },
{ "name" : "Meaningless Sliders", "funck": "meaninglessSliders" },
{ "name" : "Side2side", "funck": "side2side" },
{ "name" : "Sideways", "funck": "sideways" },
{ "name" : "Voice Synth", "funck": "voiceSynth" }
],
"Group 8" : [
{ "name" : "3D Spinner", "funck": "spinner3D" },
{ "name" : "Bouncy rings", "funck": "bouncyRings" },
{ "name" : "Clumps?", "funck": "clumps" },
{ "name" : "Digital Corona", "funck": "digitalCorona" },
{ "name" : "Dot Party", "funck": "dotParty" },
{ "name" : "Flippy rings", "funck": "flippyRings" },
{ "name" : "Interesting dots + lines", "funck": "interestingDotsLines" },
{ "name" : "Interesting Triangles", "funck": "interestingTriangles" },
{ "name" : "Jiggly Balls", "funck": "jigglyBalls" },
{ "name" : "Misc Rotating thing", "funck": "miscRotatingThing" },
{ "name" : "Nice but Useless circle", "funck": "niceButUselessCircle" },
{ "name" : "Overanimated Dial", "funck": "overanimatedDial" },
{ "name" : "Overanimated Rings", "funck": "OveranimatedRings" },
{ "name" : "Simple Dashy Circle", "funck": "simpleDashyCircle" },
{ "name" : "Slices", "funck": "slices" },
{ "name" : "Spinny Orb with Crosses", "funck": "spinnyOrbWithCrosses" },
{ "name" : "Strange Concentric Circles", "funck": "strangeConcentricCircles" },
{ "name" : "Undulating thing 1", "funck": "undulatingThing1" },
{ "name" : "Undulating thing 2", "funck": "undulatingThing2" },
{ "name" : "Undulating thing 3", "funck": "undulatingThing3" },
{ "name" : "Woop-Woop", "funck": "woopWoop" },
{ "name" : "Zoomy spiral", "funck": "zoomySpiral" }
]
}
var win = new Window("palette", "Settings", undefined, {resizeable:true}); //dialog
win.preferredSize = [150, 300];
var myGroup = win.add("group");
myGroup.alignment = ["fill", "fill"];
myGroup.orientation = "column";
var mySearch = myGroup.add("edittext", undefined, "");
mySearch.alignment = ["fill", "top"];
var myTree = myGroup.add("treeview", undefined, [], {multiSelect:true});
generateTreeItems(myTree, myObjectList);
myTree.alignment = ["fill", "fill"];
mySearch.onChanging = function() {
var filteredItems = findItems(myObjectList, mySearch.text.toLowerCase());
myTree.removeAll();
generateTreeItems(myTree, filteredItems);
for (var i = 0; i < myTree.items.length; i ++) {
if (mySearch.text !== "") {
myTree.children.expanded = true
}
}
}
function findItems(myObject, inputString){
var newObject = {};
for (var category in myObject) {
for (var i = 0; i < myObject[category].length; i ++) {
if (myObject[category]["name"].toLowerCase().match(inputString)) {
if (!newObject.hasOwnProperty(category)) {
newObject[category] = [];
}
newObject[category].push(myObject[category]);
}
}
}
return newObject
}
function generateTreeItems(myTree2, myObject) {
for (var category in myObject) {
var tempNode = myTree2.add("node", category);
for (var animal in myObject[category]) {
tempNode.add("item", myObject[category][animal]["name"]);
}
}
}
win.onResizing = win.onResize = function () { this.layout.resize(); };
win.show ();