in analytics-example-widget/scripts/config/AnalyticsConfigActionCreator.ts [387:424]
private addFilterRowImpl(settings: FieldFilterRowSettings): FieldFilterRowData {
let row = {
allowedFields: this.state.configOptions.fields,
allowedOperators: this.getAllowedOperators(),
suggestedValues: [],
settings: settings,
removeRow: null
} as FieldFilterRowData;
let container = this.state.configOptions.fieldFilter.fieldFilterRowValues;
container.push(row);
row.removeRow = () => {
let position = container.indexOf(row);
this.removeFieldFilterRow(position);
};
row.updateField = (field: WorkItemTypeField) => {
let position = container.indexOf(row);
this.updateFieldFilterFieldState(position, field);
};
row.updateOperator = (operator: string) => {
let position = container.indexOf(row);
this.updateFieldFilterOperatorState(position, operator);
};
row.updateValue = (value: string) => {
let position = container.indexOf(row);
this.updateFieldFilterValueState(position, value);
};
if (this.state.configOptions.typeFields.length && this.state.configOptions.metadata) {
let fields = this.filterFieldsOfType(this.state.configOptions.typeFields, this.state.configuration.workItemType, this.state.configuration.projectId, this.state.configOptions.metadata, (o)=>{return this.isAcceptedFilterField(o)});
let allowedOperators = this.getAllowedOperators();
this.populateFilterRowOptions(row, fields, allowedOperators);
}
return row;
}