Параметр выпадающего списка для group_id в запросе Data Explorer

Я бы хотел иметь возможность указывать что-то вроде этого:

-- [params]
-- groups.id :group_id

чтобы получить поле ввода параметра в виде выпадающего списка групп. Я назвал значение group_id, так как предполагаю, что именно это вернёт такой выпадающий список.

4 лайка

Думаю, это тоже было бы очень полезно. :+1: Что-то вроде существующего выбираемого параметра user_id, но для групп. Ещё лучше, если бы он мог принимать несколько значений. :slight_smile:

4 лайка

Постой, что?

Можешь указать, где показано, как это использовать?

1 лайк

Вы можете использовать что-то вроде:

-- [params]
-- user_id :user

SELECT *
FROM posts
WHERE user_id =:user
LIMIT 5

Это откроет выпадающий список, где вы сможете выбрать пользователя с автодополнением. :+1:

Однако я только что заметил, что при первом запуске в данный момент возникает ошибка, и поле параметра не появляется, но после обновления страницы всё работает. Я попробую найти кого-нибудь, кто проверит это. :slight_smile:

4 лайка

Задайте вопрос (и подождите), и вы получите… Мы только что добавили поддержку параметра :group_list в этом PR.

Вот пример использования этой функции:

-- [params]
-- group_list :groups

SELECT g.id,g.name 
FROM groups g 
WHERE g.name IN (:groups) 
ORDER BY g.name ASC

Это должно отобразить следующее в интерфейсе:

8 лайков

Это выглядит отлично. :star_struck: Я уже с нетерпением жду, когда смогу это реализовать. :rocket:

3 лайка

Моя тема закончилась до того, как я успел на неё ответить…

Есть ли способ ограничить новый тип параметра -- group_list одной группой? Я подставил его в наши существующие отчёты, но все они написаны с расчётом на одно имя группы, и в ходе тестирования я довольно часто ошибался.

Я снова открыл и надел его. :+1:

Хотя я не совсем понимаю, что вы имеете в виду? Можете привести пример проблемы?

1 лайк

Я имею в виду, что я запускаю запрос для своей первой группы. Затем, когда я хочу переключить группы, я добавляю группу вместо этого — ошибка

1 лайк

О-о-о. Это интересно. Я использую это скорее так:

WHERE g.name IN (:groups)
Скрывая немного дурости Джейми
WHERE g.id IN (:groups)

Хотя это всё ещё может позволить вам случайно указать более одного значения, даже если вы избежите ошибки. :thinking:

Я бы предпочёл ошибку, чем случайный выбор из списка :slight_smile:

1 лайк

Честно говоря, я только что проверил это, и, думаю, мне просто приснилось, что я использовал это для group_ids, потому что оно совсем не любит такой подход. Я вычеркну это из протокола. :slight_smile: Не имею ни малейшего понятия, откуда у меня взялась эта идея. Клянусь, я точно использовал это совсем недавно. :derp:

1 лайк

Кстати, я совершенно забыл сказать:

Это потрясающе!!! :confetti_ball: Спасибо!!! :tada:

3 лайка

Нет, способа ограничить его одной группой нет. По крайней мере, мне о нём не известно.

Параметр из group_list будет массивом, если выбрано более одного элемента, и строкой, если выбран только один элемент.

Поэтому, когда выбран всего один элемент, вы можете сделать так:

-- [params]
-- group_list :groups

SELECT g.id,g.name 
FROM groups g 
WHERE g.name = :groups 
ORDER BY g.name ASC

Но поскольку это массив, следующий вариант будет работать как для одного элемента, так и для нескольких:

-- [params]
-- group_list :groups

SELECT g.id,g.name 
FROM groups g 
WHERE g.name IN (:groups)
ORDER BY g.name ASC

Однако нет способа указать интерфейсу «принимать в качестве выбора только один элемент».

1 лайк

Документация @saradev здесь Using Parameters in Data Explorer Queries содержит полный список параметров для Data Explorer, которые иногда отображаются в виде выпадающего списка, а иногда нет. (Список параметров на GitHub)

Ниже представлена таблица параметров с указанием наличия для них специального элемента управления.

параметр выпадающий список доступен
int :white_check_mark:
bigint :white_check_mark:
boolean :white_check_mark:
null boolean :white_check_mark:
string :white_check_mark:
date
time
datetime
double :white_check_mark:
user_id :white_check_mark:
post_id
topic_id
string_list
category_id
group_id
int_list
string_list
user_list :white_check_mark:
group_list :white_check_mark:

В идеале выпадающие списки, используемые и отображаемые в Data Explorer, должны иметь внешний вид и ощущения, аналогичные основному приложению. Давайте выясним, как мы можем этого добиться.

6 лайков

Недавно мы полностью переработали поле ввода параметров. Для большинства типов теперь есть собственные выпадающие списки, а также поддержка валидации с семантическими сообщениями об ошибках. :chefs_kiss:


Ниже приведена актуальная таблица параметров, указывающая, есть ли для каждого из них специальное управление.

param dropdown available
int :white_check_mark:
bigint :white_check_mark:
boolean :white_check_mark:
null boolean :white_check_mark:
string :white_check_mark:
date :white_check_mark:
time :white_check_mark:
datetime :white_check_mark:
double :white_check_mark:
user_id :white_check_mark:
post_id
topic_id
category_id :white_check_mark:
group_id :white_check_mark:
int_list
string_list
user_list :white_check_mark:
group_list :white_check_mark:

@ganncamp, возможно, вам будет интересно узнать об этом изменении :wink:

9 лайков

Не могли бы вы объяснить, как работают эти выпадающие списки? Я уже все перепробовал, но так и не смог создать выпадающий список, в котором можно задать список строк, доступных для выбора.

1 лайк

@jordan-violet, ответ с опозданием, но @SaraDev подготовила обзор доступных параметров здесь, а исходный пост был обновлен Linca:

2 лайка