Skip to content

Провайдер значений для строки запроса

Вы можете добавить автокомплит для своего поля, если оно использует нестандартный тип. Создайте класс, реализующий ru.slie.luna.issue.query.value.ClauseValueProvider.

java
package ru.slie.luna.issue.query.value.impl;

import org.springframework.stereotype.Component;
import ru.slie.luna.agile.sprint.Sprint;
import ru.slie.luna.agile.sprint.SprintManager;
import ru.slie.luna.agile.sprint.SprintSearchParams;
import ru.slie.luna.issue.field.IssueField;
import ru.slie.luna.issue.query.value.ClauseValue;
import ru.slie.luna.issue.query.value.ClauseValueProvider;
import ru.slie.luna.issue.query.value.ClauseValueType;
import ru.slie.luna.user.User;

import java.util.Arrays;
import java.util.List;

@Component
public class SprintValueProvider implements ClauseValueProvider {
    private final SprintManager sprintManager;

    public SprintValueProvider(SprintManager sprintManager) {
        this.sprintManager = sprintManager;
    }

    @Override
    public ClauseValueType getValueType() {
        return ClauseValueType.of(Sprint.class);
    }

    @Override
    public List<ClauseValue> getValues(User user, IssueField field, String valuePrefix, int limit, List<String> excludes) {
        SprintSearchParams searchParams = SprintSearchParams.forPage(1, limit, excludes);
        searchParams.setState(Arrays.asList(Sprint.State.NEW.getState(), Sprint.State.ACTIVE.getState()));
        List<Sprint> sprints = sprintManager.suggestions(searchParams);
        return sprints.stream().map(p -> new ClauseValue(p.getName(), p.getDisplayName())).toList();
    }
}

Обновите дескриптор плагина

yaml
clauseValueProviders:
  - key: SprintValueProvider
    name: Spring value provider
    className: ru.slie.luna.issue.query.value.impl.ClauseValueProvider