perfetto-ui: Make aggregation controller a base class

Aggregation controllers now work similarly to the track controllers
so that each type of aggregation can be kept separate and work in
a similar way.

Change-Id: I1350517df372e5a86b95769a2ba4162144171c9e
diff --git a/ui/src/frontend/panel_container.ts b/ui/src/frontend/panel_container.ts
index 9ba8637..3a252fb 100644
--- a/ui/src/frontend/panel_container.ts
+++ b/ui/src/frontend/panel_container.ts
@@ -110,10 +110,10 @@
          this.prevAreaSelection.lastUpdate >= selection.lastUpdate) ||
         area === undefined ||
         globals.frontendLocalState.areaY.start === undefined ||
-        globals.frontendLocalState.areaY.end === undefined) {
+        globals.frontendLocalState.areaY.end === undefined ||
+        this.panelPositions.length === 0) {
       return;
     }
-
     // Only get panels from the current panel container if the selection began
     // in this container.
     const panelContainerTop = this.panelPositions[0].y;