Use material table component slot option instead of v-for loop

Test: N/A
Change-Id: I1e1fb9e3d2e62122c178f705ed5a0ada5f31bf7c
diff --git a/tools/winscope/src/App.vue b/tools/winscope/src/App.vue
index 0f6a2ac..3006507 100644
--- a/tools/winscope/src/App.vue
+++ b/tools/winscope/src/App.vue
@@ -57,7 +57,7 @@
 import DataAdb from './DataAdb.vue'
 import FileType from './mixins/FileType.js'
 
-const APP_NAME = "Winscope"
+const APP_NAME = "Winscope";
 
 export default {
   name: 'app',
diff --git a/tools/winscope/src/TransactionsView.vue b/tools/winscope/src/TransactionsView.vue
index 34a517c..3f8a532 100644
--- a/tools/winscope/src/TransactionsView.vue
+++ b/tools/winscope/src/TransactionsView.vue
@@ -14,47 +14,32 @@
 -->
 <template>
   <md-card-content class="container">
-    <md-table class="transaction-table" md-card>
+    <md-table v-model="filteredData" class="transaction-table card" md-card md-fixed-header>
       <md-table-toolbar>
-        <md-field>
-          <label>Transaction Type</label>
-          <md-select v-model="selectedTransactionTypes" multiple>
-            <md-option v-for="type in transactionTypes" :value="type">{{ type }}</md-option>
-          </md-select>
-        </md-field>
+        <div class="filters">
+          <md-field>
+            <label>Transaction Type</label>
+            <md-select v-model="selectedTransactionTypes" multiple>
+              <md-option v-for="type in transactionTypes" :value="type">{{ type }}</md-option>
+            </md-select>
+          </md-field>
 
-        <md-field md-clearable>
-          <md-input v-model="searchInput" placeholder="Search by id or name..." />
-          <span class="md-helper-text">Comma seperated</span>
-        </md-field>
-
+          <md-chips v-model="filters" md-placeholder="Add id or name...">
+            <div class="md-helper-text">Press enter to add</div>
+          </md-chips>
+        </div>
       </md-table-toolbar>
 
-      <div class="scrollBody" ref="tableBody">
-        <md-table-row
-          v-for="transaction in filteredData"
-          :key="transaction.timestamp"
-          @click="transactionSelected(transaction)"
-        >
-          <md-table-cell>{{transaction.time}}</md-table-cell>
-
-          <div v-if="transaction.type == 'transaction'">
-            <md-table-cell>
-              {{summarizeTranscations(transaction.transactions)}}
-            </md-table-cell>
-          </div>
-          <div v-else>
-            <md-table-cell>
-              {{transaction.type}}
-              <span v-if="transaction.obj.id !== undefined">: {{transaction.obj.id}}</span>
-            </md-table-cell>
-          </div>
-        </md-table-row>
-      </div>
+      <md-table-row class="test" slot="md-table-row" slot-scope="{ item }" @click="transactionSelected(item)">
+        <md-table-cell md-label="Time">{{ item.time }}</md-table-cell>
+        <md-table-cell md-label="Transaction">
+          {{summarizeTranscation(item)}}
+        </md-table-cell>
+      </md-table-row>
 
     </md-table>
 
-    <md-card class="changes">
+    <md-card class="changes card">
       <md-content md-tag="md-toolbar" md-elevation="0" class="card-toolbar md-transparent md-dense">
         <h2 class="md-title" style="flex: 1">Changes</h2>
       </md-content>
@@ -91,6 +76,7 @@
       selectedTransactionTypes: [],
       searchInput: "",
       selectedTree: null,
+      filters: [],
     };
   },
   computed: {
@@ -103,11 +89,10 @@
             this.selectedTransactionTypes.includes(transaction.type)));
       }
 
-      if (this.searchInput) {
-        const terms = this.searchInput.split(/,\s*/);
+      if (this.filters.length > 0) {
         filteredData = filteredData.filter(
           this.filterTransactions(transaction =>
-            terms.includes("" + transaction.obj.id)));
+            this.filters.includes("" + transaction.obj.id)));
       }
 
       return filteredData;
@@ -216,7 +201,17 @@
 
       return [surfaceChanges, displayChanges];
     },
-    summarizeTranscations(transactions) {
+    summarizeTranscation(transaction) {
+      if (transaction.type !== 'transaction') {
+        if (transaction.obj.id !== undefined) {
+          return `${transaction.type}: ${transaction.obj.id}`;
+        } else {
+          return transaction.type;
+        }
+      }
+
+      const transactions = transaction.transactions;
+
       const ids = {
         "surfaceChange": new Set(),
         "displayChange": new Set(),
@@ -258,8 +253,20 @@
 }
 
 .scrollBody {
-  max-height: 75vh;
+  width: 100%;
+  height: 100%;
   overflow: scroll;
 }
 
+.filters {
+  margin-bottom: 15px;
+  width: 100%;
+}
+
+.changes-content {
+  padding: 18px;
+  height: 550px;
+  overflow: auto;
+}
+
 </style>