Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 | 7x 7x 7x 7x 7x 7x 7x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 7x 14x 14x 14x 16x 1x 1x 15x 15x 14x 25x 25x 25x 15x 15x 30x 7x 7x 7x 1x 1x 7x | import { Component, EventEmitter, Output } from '@angular/core'; import { FormControl, Validators } from '@angular/forms'; import * as _ from 'lodash'; import { BsModalRef } from 'ngx-bootstrap/modal'; import { CdFormBuilder } from '../../../../shared/forms/cd-form-builder'; import { CdFormGroup } from '../../../../shared/forms/cd-form-group'; import { AlertmanagerSilenceMatcher, AlertmanagerSilenceMatcherMatch } from '../../../../shared/models/alertmanager-silence'; import { PrometheusRule } from '../../../../shared/models/prometheus-alerts'; import { PrometheusSilenceMatcherService } from '../../../../shared/services/prometheus-silence-matcher.service'; @Component({ selector: 'cd-silence-matcher-modal', template: require('./silence-matcher-modal.component.html'), styles: [] }) export class SilenceMatcherModalComponent { @Output() submitAction = new EventEmitter(); form: CdFormGroup; editMode = false; rules: PrometheusRule[]; nameAttributes = ['alertname', 'instance', 'job', 'severity']; possibleValues: string[] = []; matcherMatch: AlertmanagerSilenceMatcherMatch = undefined; constructor( private formBuilder: CdFormBuilder, private silenceMatcher: PrometheusSilenceMatcherService, public bsModalRef: BsModalRef ) { this.createForm(); this.subscribeToChanges(); } private createForm() { this.form = this.formBuilder.group({ name: [null, [Validators.required]], value: [{ value: null, disabled: true }, [Validators.required]], isRegex: new FormControl(false) }); } private subscribeToChanges() { this.form.get('name').valueChanges.subscribe((name) => { if (name === null) { this.form.get('value').disable(); return; } this.setPossibleValues(name); this.form.get('value').enable(); }); this.form.get('value').valueChanges.subscribe((value) => { const values = this.form.value; values.value = value; // Isn't the current value at this stage this.matcherMatch = this.silenceMatcher.singleMatch(values, this.rules); }); } private setPossibleValues(name) { this.possibleValues = _.sortedUniq( this.rules.map((r) => _.get(r, this.silenceMatcher.getAttributePath(name))).filter((x) => x) ); } preFillControls(matcher: AlertmanagerSilenceMatcher) { this.form.setValue(matcher); } onSubmit() { this.submitAction.emit(this.form.value); this.bsModalRef.hide(); } } |