getFilteredSearchValue()

in ee/app/assets/javascripts/roadmap/mixins/filtered_search_mixin.js [264:392]


    getFilteredSearchValue() {
      const {
        in: searchWithin,
        authorUsername,
        labelName,
        milestoneTitle,
        confidential,
        myReactionEmoji,
        search,
        epicIid,
        groupPath,
        'not[authorUsername]': notAuthorUsername,
        'not[myReactionEmoji]': notMyReactionEmoji,
        'not[labelName]': notLabelName,
        'or[labelName]': orLabelName,
        'or[authorUsername]': orAuthorUsername,
        ...otherValues
      } = this.filterParams || {};
      const filteredSearchValue = [];

      for (const [key, value] of Object.entries(otherValues)) {
        if (this.hasCustomFieldsFeature && this.isCustomField(key)) {
          filteredSearchValue.push({
            type: key,
            value: { data: value, operator: OPERATOR_IS },
          });
        }
      }

      if (authorUsername) {
        filteredSearchValue.push({
          type: TOKEN_TYPE_AUTHOR,
          value: { data: authorUsername, operator: OPERATOR_IS },
        });
      }

      if (searchWithin) {
        filteredSearchValue.push({
          type: TOKEN_TYPE_SEARCH_WITHIN,
          value: { data: searchWithin, operator: OPERATOR_IS },
        });
      }

      if (notAuthorUsername) {
        filteredSearchValue.push({
          type: TOKEN_TYPE_AUTHOR,
          value: { data: notAuthorUsername, operator: OPERATOR_NOT },
        });
      }

      if (orAuthorUsername?.length) {
        filteredSearchValue.push({
          type: TOKEN_TYPE_AUTHOR,
          value: { data: orAuthorUsername, operator: OPERATOR_OR },
        });
      }

      if (labelName?.length && Array.isArray(labelName)) {
        filteredSearchValue.push(
          ...labelName.map((label) => ({
            type: TOKEN_TYPE_LABEL,
            value: { data: label, operator: OPERATOR_IS },
          })),
        );
      }
      if (notLabelName?.length) {
        filteredSearchValue.push(
          ...notLabelName.map((label) => ({
            type: TOKEN_TYPE_LABEL,
            value: { data: label, operator: OPERATOR_NOT },
          })),
        );
      }
      if (orLabelName?.length) {
        filteredSearchValue.push(
          ...orLabelName.map((label) => ({
            type: TOKEN_TYPE_LABEL,
            value: { data: label, operator: OPERATOR_OR },
          })),
        );
      }

      if (milestoneTitle) {
        filteredSearchValue.push({
          type: TOKEN_TYPE_MILESTONE,
          value: { data: milestoneTitle },
        });
      }

      if (confidential !== undefined) {
        filteredSearchValue.push({
          type: TOKEN_TYPE_CONFIDENTIAL,
          value: { data: confidential },
        });
      }

      if (myReactionEmoji) {
        filteredSearchValue.push({
          type: TOKEN_TYPE_MY_REACTION,
          value: { data: myReactionEmoji, operator: OPERATOR_IS },
        });
      }
      if (notMyReactionEmoji) {
        filteredSearchValue.push({
          type: TOKEN_TYPE_MY_REACTION,
          value: { data: notMyReactionEmoji, operator: OPERATOR_NOT },
        });
      }

      if (epicIid) {
        filteredSearchValue.push({
          type: TOKEN_TYPE_EPIC,
          value: { data: epicIid },
        });
      }

      if (groupPath) {
        filteredSearchValue.push({
          type: TOKEN_TYPE_GROUP,
          value: { data: groupPath },
        });
      }

      if (search) {
        filteredSearchValue.push(search);
      }

      return filteredSearchValue;
    },