private addFilterRowImpl()

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;
    }