11<template >
22 <section :class =" { workflows: true, loading }" >
33 <header class =" filters" >
4- <div class =" field workflow-id" >
5- <input type =" search" class =" workflow-id"
6- placeholder =" "
7- name =" workflowId"
8- v-bind:value =" $route.query.workflowId"
9- @input =" setWorkflowFilter" />
10- <label for =" workflowId" >Workflow ID</label >
11- </div >
12- <div class =" field workflow-name" >
13- <input type =" search" class =" workflow-name"
14- placeholder =" "
15- name =" workflowName"
16- v-bind:value =" $route.query.workflowName"
17- @input =" setWorkflowFilter" />
18- <label for =" workflowName" >Workflow Name</label >
19- </div >
20- <date-range-picker
21- :date-range =" range"
22- :max-days =" maxRetentionDays"
23- @change =" setRange"
24- />
25- <v-select
26- class =" status"
27- :value =" status"
28- :options =" statuses"
29- :on-change =" setStatus"
30- :searchable =" false"
31- />
4+ <template v-if =" filterMode === ' advanced' " >
5+ <div class =" field query-string" >
6+ <input type =" search" class =" query-string"
7+ placeholder =" "
8+ key =" sql-query"
9+ name =" queryString"
10+ v-bind:value =" $route.query.queryString"
11+ @input =" setWorkflowFilter" />
12+ <label for =" queryString" >Query</label >
13+ </div >
14+ </template >
15+ <template v-else >
16+ <div class =" field workflow-id" >
17+ <input type =" search" class =" workflow-id"
18+ placeholder =" "
19+ name =" workflowId"
20+ v-bind:value =" $route.query.workflowId"
21+ @input =" setWorkflowFilter" />
22+ <label for =" workflowId" >Workflow ID</label >
23+ </div >
24+ <div class =" field workflow-name" >
25+ <input type =" search" class =" workflow-name"
26+ placeholder =" "
27+ name =" workflowName"
28+ v-bind:value =" $route.query.workflowName"
29+ @input =" setWorkflowFilter" />
30+ <label for =" workflowName" >Workflow Name</label >
31+ </div >
32+ <date-range-picker
33+ :date-range =" range"
34+ :max-days =" maxRetentionDays"
35+ @change =" setRange"
36+ />
37+ <v-select
38+ class =" status"
39+ :value =" status"
40+ :options =" statuses"
41+ :on-change =" setStatus"
42+ :searchable =" false"
43+ />
44+ </template >
45+ <a class =" toggle-filter" @click =" toggleFilter" >{{ filterMode === 'advanced' ? 'basic' : 'advanced' }}</a >
3246 </header >
3347 <section class =" results"
3448 v-infinite-scroll =" nextPage"
@@ -84,7 +98,8 @@ export default pagedGrid({
8498 { value: ' CONTINUED_AS_NEW' , label: ' Continued As New' },
8599 { value: ' TIMED_OUT' , label: ' Timed Out' }
86100 ],
87- maxRetentionDays: undefined
101+ maxRetentionDays: undefined ,
102+ filterMode: ' basic'
88103 }
89104 },
90105 created () {
@@ -137,7 +152,8 @@ export default pagedGrid({
137152 endTime,
138153 status: q .status ,
139154 workflowId: q .workflowId ,
140- workflowName: q .workflowName
155+ workflowName: q .workflowName ,
156+ queryString: q .queryString ,
141157 }
142158 },
143159 queryOnChange () {
@@ -153,6 +169,10 @@ export default pagedGrid({
153169 delete q .domain
154170 q .nextPageToken = this .nextPageToken
155171
172+ if (q .queryString ) {
173+ return this .fetch (` /api/domain/${ domain} /workflows/list` , q)
174+ }
175+
156176 return this .fetch (` /api/domain/${ domain} /workflows/${ state} ` , q)
157177 }
158178 },
@@ -211,6 +231,14 @@ export default pagedGrid({
211231 }
212232 this .$router .replace ({ query })
213233 }
234+ },
235+ toggleFilter () {
236+ if (this .filterMode === ' advanced' ) {
237+ this .filterMode = ' basic'
238+ this .$route .query .queryString = ' '
239+ } else {
240+ this .filterMode = ' advanced'
241+ }
214242 }
215243 }
216244})
@@ -228,6 +256,8 @@ section.workflows
228256 flex 1 1 auto
229257 .v-select
230258 flex 1 1 240px
259+ a .toggle-filter
260+ action-button ()
231261
232262 paged-grid ()
233263
0 commit comments