refactor(frontend/player):ListWithMarks: add markedCount; import types fix
This commit is contained in:
parent
291fe0d409
commit
094721684a
3 changed files with 20 additions and 9 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import type { Timed } from './messages/timed';
|
||||
import type { Timed } from '../_web/messages/timed';
|
||||
|
||||
export default class ListWalker<T extends Timed> {
|
||||
private p = 0
|
||||
|
|
@ -80,18 +80,18 @@ export default class ListWalker<T extends Timed> {
|
|||
}
|
||||
|
||||
private hasNext() {
|
||||
return this.p < this.length
|
||||
return this.p < this.length
|
||||
}
|
||||
private hasPrev() {
|
||||
return this.p > 0
|
||||
}
|
||||
protected moveNext(): T | null {
|
||||
return this.hasNext()
|
||||
return this.hasNext()
|
||||
? this.list[ this.p++ ]
|
||||
: null
|
||||
}
|
||||
protected movePrev(): T | null {
|
||||
return this.hasPrev()
|
||||
return this.hasPrev()
|
||||
? this.list[ --this.p ]
|
||||
: null
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Timed } from './messages/timed';
|
||||
import type { Timed } from '../_web/messages/timed';
|
||||
import ListWalker from './ListWalker'
|
||||
|
||||
|
||||
|
|
@ -7,9 +7,17 @@ type CheckFn<T> = (t: T) => boolean
|
|||
|
||||
export default class ListWalkerWithMarks<T extends Timed> extends ListWalker<T> {
|
||||
private _markCountNow: number = 0
|
||||
constructor(private isMarked: CheckFn<T>, initialList?: T[]) {
|
||||
private _markCount: number = 0
|
||||
constructor(private isMarked: CheckFn<T>, initialList: T[] = []) {
|
||||
super(initialList)
|
||||
this._markCount = initialList.reduce((n, item) => isMarked(item) ? n+1 : n, 0)
|
||||
}
|
||||
|
||||
append(item: T) {
|
||||
if (this.isMarked(item)) { this._markCount++ }
|
||||
super.append(item)
|
||||
}
|
||||
|
||||
protected moveNext() {
|
||||
const val = super.moveNext()
|
||||
if (val && this.isMarked(val)) {
|
||||
|
|
@ -24,8 +32,11 @@ export default class ListWalkerWithMarks<T extends Timed> extends ListWalker<T>
|
|||
}
|
||||
return val
|
||||
}
|
||||
get markCountNow(): number {
|
||||
get markedCountNow(): number {
|
||||
return this._markCountNow
|
||||
}
|
||||
get markedCount(): number {
|
||||
return this._markCount
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
|
||||
import { State } from './types'
|
||||
import { Store } from '../player/types'
|
||||
|
||||
// (not a type)
|
||||
export default class SimpleSore<G, S=G> implements State<G, S> {
|
||||
export default class SimpleSore<G, S=G> implements Store<G, S> {
|
||||
constructor(private state: G){}
|
||||
get(): G {
|
||||
return this.state
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue