Skip to content

Commit 47903fc

Browse files
committed
Fix the basics of the benchmark
1 parent 761f6ab commit 47903fc

File tree

4 files changed

+35
-26
lines changed

4 files changed

+35
-26
lines changed

frameworks/keyed/butterfloat/app-vm.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export class AppViewModel {
3535
;[this.#selectedId, this.#setSelectedId] = butterfly<number>(-1)
3636

3737
this.#rows = this.#idRange.pipe(
38-
filter((idRange) => idRange.added[0] > 0 && idRange.added[1] > 0),
38+
filter((idRange) => idRange.added[1] > 0),
3939
mergeMap((idRange) => range(idRange.added[0], idRange.added[1])),
4040
map((id) => new RowViewModel(this, id)),
4141
)

frameworks/keyed/butterfloat/main.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ if (appStamp) {
99
stamps.registerOnlyStamp(App, appStamp)
1010
}
1111

12-
const rowStamp = document.querySelector<HTMLTemplateElement>('template#row')
13-
if (rowStamp) {
14-
stamps.registerOnlyStamp(Row, rowStamp)
15-
}
12+
// const rowStamp = document.querySelector<HTMLTemplateElement>('template#row')
13+
// if (rowStamp) {
14+
// stamps.registerOnlyStamp(Row, rowStamp)
15+
// }
1616

1717
const main = document.querySelector('#main')!
1818
runStamps(main, App, stamps)

frameworks/keyed/butterfloat/row-vm.ts

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
import { butterfly, StateSetter } from 'butterfloat'
2-
import { filter, map, merge, NEVER, Observable, Subject, takeUntil } from 'rxjs'
2+
import {
3+
filter,
4+
map,
5+
merge,
6+
NEVER,
7+
Observable,
8+
Subject,
9+
takeUntil,
10+
tap,
11+
} from 'rxjs'
312
import { randomLabel } from './data.js'
413
import { AppViewModel } from './app-vm.js'
514

@@ -17,11 +26,12 @@ export class RowViewModel {
1726
return this.#label
1827
}
1928

20-
readonly #remove = new Subject<boolean>()
29+
readonly #remove: Observable<boolean>
30+
readonly #setRemove: (remove: StateSetter<boolean>) => void
2131

22-
readonly #alive: Observable<boolean>
23-
get alive() {
24-
return this.#alive
32+
readonly #removed: Observable<boolean>
33+
get removed() {
34+
return this.#removed
2535
}
2636

2737
readonly #selected: Observable<boolean>
@@ -33,16 +43,13 @@ export class RowViewModel {
3343
this.#app = app
3444
this.#id = id
3545
;[this.#label, this.#setLabel] = butterfly(randomLabel())
46+
;[this.#remove, this.#setRemove] = butterfly(false)
3647

37-
this.#alive = NEVER.pipe(
38-
takeUntil(
39-
merge(
40-
this.#remove.pipe(filter(() => true)),
41-
this.#app.idRange.pipe(
42-
filter((range) => range.min > this.#id),
43-
map(() => true),
44-
),
45-
),
48+
this.#removed = merge(
49+
this.#remove.pipe(filter((remove) => remove)),
50+
this.#app.idRange.pipe(
51+
filter((range) => range.min > this.#id),
52+
map(() => true),
4653
),
4754
)
4855

@@ -54,8 +61,7 @@ export class RowViewModel {
5461
}
5562

5663
remove() {
57-
this.#remove.next(true)
58-
this.#remove.complete()
64+
this.#setRemove(true)
5965
}
6066

6167
select() {

frameworks/keyed/butterfloat/row.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ComponentContext, jsx, ObservableEvent } from 'butterfloat'
22
import { RowViewModel } from './row-vm'
3-
import { of } from 'rxjs'
3+
import { concat, NEVER, of, takeUntil } from 'rxjs'
44

55
export interface RowProps {
66
vm: RowViewModel
@@ -15,18 +15,21 @@ export function Row(
1515
{ vm }: RowProps,
1616
{ bindImmediateEffect, events }: ComponentContext<RowEvents>,
1717
) {
18-
bindImmediateEffect(vm.alive, () => {})
1918
bindImmediateEffect(events.select, () => vm.select())
20-
bindImmediateEffect(events.remove, () => vm.remove())
19+
bindImmediateEffect(events.remove.pipe(takeUntil(vm.removed)), () =>
20+
vm.remove(),
21+
)
22+
23+
const id = concat(of(vm.id.toString()), NEVER)
2124

2225
return (
2326
<tr classBind={{ danger: vm.selected }}>
24-
<td class="col-md-1" bind={{ innerText: of(vm.id.toString()) }}></td>
27+
<td class="col-md-1" bind={{ innerText: id }}></td>
2528
<td class="col-md-4">
2629
<a bind={{ innerText: vm.label }} events={{ click: events.select }}></a>
2730
</td>
2831
<td class="col-md-1">
29-
<a events={{ click: events.remove }}>
32+
<a type="button" events={{ click: events.remove }}>
3033
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
3134
</a>
3235
</td>

0 commit comments

Comments
 (0)