File
Metadata
selector |
app-up-for-review-filter |
styles |
>>> .ui.dropdown:not(.button)>.default.text {
display: none;
}
.ui.inline.dropdown.search-dropdown {
margin-left: 5px;
box-sizing: border-box;
}
.popup-content{
width: 850px !important;
}
|
templateUrl |
up-for-review-filter.component.html |
Constructor
constructor(resourceService: any, config: any, activatedRoute: ActivatedRoute, route: Router)
|
Constructor to create injected service(s) object Default method of Draft Component class
Parameters :
-
Reference of SearchService
-
-
-
Reference of PaginationService
-
Reference of ActivatedRoute
-
Reference of ConfigService
|
Methods
Public handleSearch
|
handleSearch()
|
Returns: void
|
keyup
|
keyup(event: any)
|
Returns: void
|
applySorting
|
applySorting(sortByOption: any)
|
Returns: void
|
removeFilterSelection
|
removeFilterSelection(filterType: any, value: any)
|
Returns: void
|
Private activatedRoute
|
activatedRoute: ActivatedRoute
|
To send activatedRoute.snapshot to router navigation service for redirection to draft component
|
Public config
|
config: any
|
|
filterIntractEdata
|
filterIntractEdata: any
|
Public filterType
|
filterType: any
|
|
label
|
label: string[]
|
label for filter selected
|
modelChanged
|
modelChanged: Subject<string>
|
position
|
position: string
|
|
queryParams
|
queryParams: any
|
Public redirectUrl
|
redirectUrl: string
|
|
Public resourceService
|
resourceService: any
|
To call resource service which helps to use language constant
|
route
|
route: Router
|
To navigate to other pages
|
sortByOption
|
sortByOption: string
|
sortIcon
|
sortIcon: boolean
|
Default value: true
|
|
sortingOptions
|
sortingOptions: string[]
|
upForReviewSortingOptions
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
import { Subject , Observable, of} from 'rxjs';
import { Component, OnInit, EventEmitter, Output } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { ResourceService, ConfigService } from '@sunbird/shared';
import { ISelectFilter } from '../../interfaces/selectfilter';
import * as _ from 'lodash-es';
import { debounceTime, distinctUntilChanged, delay, flatMap } from 'rxjs/operators';
import { IInteractEventEdata } from '@sunbird/telemetry';
@Component({
selector: 'app-up-for-review-filter',
templateUrl: './up-for-review-filter.component.html',
styles: [`
>>> .ui.dropdown:not(.button)>.default.text {
display: none;
}
.ui.inline.dropdown.search-dropdown {
margin-left: 5px;
box-sizing: border-box;
}
.popup-content{
width: 850px !important;
}
`]
})
export class UpforReviewFilterComponent implements OnInit {
modelChanged: Subject<string> = new Subject<string>();
route: Router;
private activatedRoute: ActivatedRoute;
query: string;
sortingOptions: Array<string>;
sortIcon = true;
position: string;
public resourceService: ResourceService;
public config: ConfigService;
sortByOption: string;
public filterType: any;
label: Array<string>;
public redirectUrl: string;
queryParams: any;
filterIntractEdata: IInteractEventEdata;
constructor(resourceService: ResourceService, config: ConfigService,
activatedRoute: ActivatedRoute,
route: Router) {
this.route = route;
this.activatedRoute = activatedRoute;
this.resourceService = resourceService;
this.config = config;
this.position = 'bottom right';
this.route.onSameUrlNavigation = 'reload';
this.label = this.config.dropDownConfig.FILTER.WORKSPACE.label;
this.sortingOptions = this.config.dropDownConfig.FILTER.RESOURCES.upForReviewSortingOptions;
}
ngOnInit() {
this.filterType = this.config.appConfig.upForReview.filterType;
this.redirectUrl = this.config.appConfig.upForReview.inPageredirectUrl;
this.activatedRoute.queryParams
.subscribe(params => {
this.queryParams = { ...params };
this.query = this.queryParams['query'];
this.sortByOption = this.queryParams['sort_by'];
_.forIn(params, (value, key) => {
if (typeof value === 'string' && key !== 'query') {
this.queryParams[key] = [value];
}
});
});
this.modelChanged.pipe(debounceTime(1000),
distinctUntilChanged(),
flatMap(search => of(search).pipe(delay(500)))
).
subscribe(query => {
this.query = query;
this.handleSearch();
});
this.filterIntractEdata = {
id: 'filter',
type: 'click',
pageid: 'up-for-review-page'
};
}
public handleSearch() {
if (this.query.length > 0) {
this.queryParams['query'] = this.query;
} else {
delete this.queryParams['query'];
}
this.route.navigate(['workspace/content/upForReview', 1], { queryParams: this.queryParams});
}
keyup(event) {
this.query = event;
this.modelChanged.next(this.query);
}
applySorting(sortByOption) {
this.sortIcon = !this.sortIcon;
this.queryParams['sortType'] = this.sortIcon ? 'desc' : 'asc';
this.queryParams['sort_by'] = sortByOption;
this.route.navigate(['workspace/content/upForReview', 1], { queryParams: this.queryParams });
}
removeFilterSelection(filterType, value) {
const itemIndex = this.queryParams[filterType].indexOf(value);
if (itemIndex !== -1) {
this.queryParams[filterType].splice(itemIndex, 1);
}
this.route.navigate(['workspace/content/upForReview', 1], { queryParams: this.queryParams });
}
}