@@ -3,49 +3,59 @@ import { RxStrategyProvider } from '@rx-angular/cdk/render-strategies';
3
3
import { RickAndMortyService } from './rick-and-morty.service' ;
4
4
import { query } from 'rx-query' ;
5
5
import { Observable , Subject } from 'rxjs' ;
6
- import { delay , filter , map , mapTo , pluck , share } from 'rxjs/operators' ;
6
+ import { delay , filter , map , mapTo , share } from 'rxjs/operators' ;
7
7
8
8
@Component ( {
9
9
selector : 'rxa-rx-query' ,
10
10
template : `
11
11
<rxa-visualizer>
12
12
<div visualizerHeader>
13
- <rxa-strategy-select (strategyChange)="strategyProvider.primaryStrategy = $event">
13
+ <rxa-strategy-select
14
+ (strategyChange)="strategyProvider.primaryStrategy = $event"
15
+ >
14
16
</rxa-strategy-select>
15
- <br/>
17
+ <br />
16
18
<mat-form-field>
17
19
<label>Search</label>
18
- <input #i matInput type="text" (input)="search$.next(i.value)">
20
+ <input #i matInput type="text" (input)="search$.next(i.value)" / >
19
21
</mat-form-field>
20
22
</div>
21
23
<div class="mt-5 row w-100 d-flex">
22
24
<div class="col-4 dh-embedded-view p-2">
23
- <p *rxLet="suspenseTrg$; let n;">
24
- suspenseTrigger: {{n}}
25
- </p>
26
- <p *rxLet="errorTrg$; let n;">
27
- errorTrigger: {{n}}
28
- </p>
29
- <div *rxLet="charactersQueryResult$; let qr;">
30
- <p>qr.status: {{qr.status}}</p>
31
- <p>qr.data: {{qr?.data?.results?.length}}</p>
32
- <p>qr.error: {{qr?.error?.message}}</p>
33
- <p>qr.retries: {{qr?.retries}}</p>
25
+ <p *rxLet="suspenseTrg$; let n">suspenseTrigger: {{ n }}</p>
26
+ <p *rxLet="errorTrg$; let n">errorTrigger: {{ n }}</p>
27
+ <div *rxLet="charactersQueryResult$; let qr">
28
+ <p>qr.status: {{ qr.status }}</p>
29
+ <p>qr.data: {{ qr?.data?.results?.length }}</p>
30
+ <p>qr.error: {{ qr?.error?.message }}</p>
31
+ <p>qr.retries: {{ qr?.retries }}</p>
34
32
</div>
35
33
</div>
36
34
<div class="col-4 dh-embedded-view p-2">
37
- <div *rxContext="characters$;
38
- suspenseTpl: suspenseTpl;
39
- errorTpl: errorTpl;
40
- suspenseTrg: suspenseTrg$
41
- errorTrg: errorTrg$
42
- ">
43
- <div *rxLet="characters$; let characters;
44
- let suspenseVal = $suspenseVal;
45
- let errorVal = $errorVal;
46
- suspenseTrg: suspenseTrg$
47
- errorTrg: errorTrg$
48
- ">suspenseVal : {{suspenseVal}} <mat-progress-bar *ngIf="suspenseVal" [mode]="suspenseVal"></mat-progress-bar>
35
+ <div
36
+ *rxContext="
37
+ characters$;
38
+ suspenseTpl: suspenseTpl;
39
+ errorTpl: errorTpl;
40
+ suspenseTrg: suspenseTrg$;
41
+ errorTrg: errorTrg$
42
+ "
43
+ >
44
+ <div
45
+ *rxLet="
46
+ characters$;
47
+ let characters;
48
+ let suspenseVal = $suspenseVal;
49
+ let errorVal = $errorVal;
50
+ suspenseTrg: suspenseTrg$;
51
+ errorTrg: errorTrg$
52
+ "
53
+ >
54
+ suspenseVal : {{ suspenseVal }}
55
+ <mat-progress-bar
56
+ *ngIf="suspenseVal"
57
+ [mode]="suspenseVal"
58
+ ></mat-progress-bar>
49
59
<mat-card *ngIf="errorVal">
50
60
<mat-card-title>Error</mat-card-title>
51
61
</mat-card>
@@ -56,16 +66,18 @@ import { delay, filter, map, mapTo, pluck, share } from 'rxjs/operators';
56
66
</ul>
57
67
</div>
58
68
</div>
59
-
60
-
61
69
</div>
62
70
<div class="col-4 dh-embedded-view p-2">
63
- <div *rxLet="characters$; let characters;
64
- suspenseTpl: suspenseTpl;
65
- errorTpl: errorTpl;
66
- suspenseTrg: suspenseTrg$
67
- errorTrg: errorTrg$
68
- ">
71
+ <div
72
+ *rxLet="
73
+ characters$;
74
+ let characters;
75
+ suspenseTpl: suspenseTpl;
76
+ errorTpl: errorTpl;
77
+ suspenseTrg: suspenseTrg$;
78
+ errorTrg: errorTrg$
79
+ "
80
+ >
69
81
<ul>
70
82
<li *ngFor="let character of characters">
71
83
<a [routerLink]="character.id">{{ character.name }}</a>
@@ -88,31 +100,42 @@ import { delay, filter, map, mapTo, pluck, share } from 'rxjs/operators';
88
100
changeDetection : ChangeDetectionStrategy . Default ,
89
101
host : {
90
102
class : 'm-1 p-1' ,
91
- style : 'display: block;'
103
+ style : 'display: block;' ,
92
104
} ,
93
- providers : [ ]
105
+ providers : [ ] ,
94
106
} )
95
107
export class RxQueryComponent {
96
108
search$ = new Subject < string > ( ) ;
97
109
charactersQueryResult$ : Observable < any > = query (
98
110
'character' ,
99
111
this . search$ ,
100
- ( search : string ) => this . service . getCharacter ( { name : search } ) . pipe ( delay ( 200 ) )
112
+ ( search : string ) =>
113
+ this . service . getCharacter ( { name : search } ) . pipe ( delay ( 200 ) )
101
114
) ;
102
115
103
116
loadingMap = {
104
- ' loading' : 'query' ,
105
- ' refreshing' : 'indeterminate'
117
+ loading : 'query' ,
118
+ refreshing : 'indeterminate' ,
106
119
} ;
107
- status$ = this . charactersQueryResult$ . pipe ( pluck ( 'status' ) , share ( ) ) ;
108
-
109
-
110
- suspenseTrg$ = this . status$ . pipe ( map ( s => this . loadingMap [ s ] ) , filter ( v => ! ! v ) ) ;
111
- characters$ = this . charactersQueryResult$ . pipe ( map ( res => res ?. data ?. results ) ) ;
112
- errorTrg$ = this . charactersQueryResult$ . pipe ( filter ( res => res ?. status === 'error' ) , mapTo ( true ) ) ;
120
+ status$ = this . charactersQueryResult$ . pipe (
121
+ map ( ( v ) => v . status ) ,
122
+ share ( )
123
+ ) ;
113
124
114
- constructor ( public strategyProvider : RxStrategyProvider ,
115
- public service : RickAndMortyService ) {
116
- }
125
+ suspenseTrg$ = this . status$ . pipe (
126
+ map ( ( s ) => this . loadingMap [ s ] ) ,
127
+ filter ( ( v ) => ! ! v )
128
+ ) ;
129
+ characters$ = this . charactersQueryResult$ . pipe (
130
+ map ( ( res ) => res ?. data ?. results )
131
+ ) ;
132
+ errorTrg$ = this . charactersQueryResult$ . pipe (
133
+ filter ( ( res ) => res ?. status === 'error' ) ,
134
+ mapTo ( true )
135
+ ) ;
117
136
137
+ constructor (
138
+ public strategyProvider : RxStrategyProvider ,
139
+ public service : RickAndMortyService
140
+ ) { }
118
141
}
0 commit comments