Skip to main content
Tomas Sinkunas
Legend
April 10, 2016
Question

generating TreeView is very slow

  • April 10, 2016
  • 1 reply
  • 389 views

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 ();

This topic has been closed for replies.

1 reply

Alan_AEDScripts
Inspiring
April 11, 2016

2014.2  working pretty much instantly for me.