addon web client add search filter
parent
ca3e03e3e5
commit
f9d885296e
@ -0,0 +1,54 @@
|
||||
export class FlowManager {
|
||||
constructor() {
|
||||
this.items = []
|
||||
this._map = new Map()
|
||||
this.filterText = ''
|
||||
this.filterTimer = null
|
||||
this.num = 0
|
||||
|
||||
this.max = 1000
|
||||
}
|
||||
|
||||
showList() {
|
||||
if (!this.filterText) return this.items
|
||||
return this.items.filter(item => {
|
||||
return item.request.url.includes(this.filterText)
|
||||
})
|
||||
}
|
||||
|
||||
add(item) {
|
||||
item.no = ++this.num
|
||||
this.items.push(item)
|
||||
this._map.set(item.id, item)
|
||||
|
||||
if (this.items.length > this.max) {
|
||||
const oldest = this.items.shift()
|
||||
this._map.delete(oldest.id)
|
||||
}
|
||||
}
|
||||
|
||||
get(id) {
|
||||
return this._map.get(id)
|
||||
}
|
||||
|
||||
changeFilter(text) {
|
||||
this.filterText = text
|
||||
}
|
||||
|
||||
changeFilterLazy(text, callback) {
|
||||
if (this.filterTimer) {
|
||||
clearTimeout(this.filterTimer)
|
||||
this.filterTimer = null
|
||||
}
|
||||
|
||||
this.filterTimer = setTimeout(() => {
|
||||
this.filterText = text
|
||||
callback()
|
||||
}, 300)
|
||||
}
|
||||
|
||||
clear() {
|
||||
this.items = []
|
||||
this._map = new Map()
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue