blob: 5480f97d380284e6afe70d7568740bd91f8134de [file] [log] [blame]
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:angular/angular.dart';
import 'package:angular_components/angular_components.dart';
import 'package:angular_components/material_toggle/material_toggle.dart';
import 'package:angular_components/material_select/material_select.dart';
import 'package:angular_components/material_select/material_select_item.dart';
import 'filter_service.dart';
const allConfigurationGroups = Filter.allConfigurationGroups;
@Component(selector: 'app-filter', exports: [
allConfigurationGroups
], directives: [
coreDirectives,
MaterialToggleComponent,
MaterialSelectComponent,
MaterialSelectItemComponent
], template: '''
<material-toggle
(checkedChange)="onShowAllCommits(\$event)"
[checked]="filter.showAllCommits"
label="Show all commits">
</material-toggle>
<hr>
<material-toggle
(checkedChange)="onShowLatestFailures(\$event)"
[checked]="filter.showLatestFailures"
label="Show only latest failures">
</material-toggle>
<hr>
<b>Show changes on builders:</b>
<material-select
class="bordered-list"
focusList
[selection]="groupSelector"
[itemRenderer]="identityFunction">
<material-select-item
*ngFor="let group of allConfigurationGroups"
focusItem
[value]="group">
</material-select-item>
</material-select>
''')
class FilterComponent {
static const allConfigurationGroups = Filter.allConfigurationGroups;
@Input()
FilterService service;
SelectionModel<String> groupSelector;
get filter => service.filter;
FilterComponent(this.service) {
groupSelector = SelectionModel.multi(
selectedValues: service.filter.configurationGroups);
groupSelector.selectionChanges.listen(onSelectionChange);
}
void onSelectionChange(_) {
final values = groupSelector.selectedValues.toList();
service.filter = filter.copy(configurationGroups: values);
filter.updateUrl();
}
void onShowAllCommits(bool event) {
service.filter = filter.copy(showAllCommits: event);
filter.updateUrl();
}
void onShowLatestFailures(bool event) {
service.filter = filter.copy(showLatestFailures: event);
filter.updateUrl();
}
String identityFunction(t) => t;
}