Оригинал на GitHub
Вопрос
Подскажите пожалуйста как правильно написать скрипт для сортировки таблицы с помощью кнопки.
=: listSort(list: $selectlist; type: "number"; direction: "desc")
selectlist: selectList(table: $#ntn; field: 'quantity')
Нажимаю кнопку и сортировка не происходит. Сортировка нужна как в простой так и временной таблице.
Ответ
Добрый день! Такой код работать не будет. Он не оказывает воздействия на таблицу, так как только берет и сортирует.
Если необходимо, что бы именно по нажатию кнопки происходила сортировка, то можно использовать процессную переменную — которая живет в течении транзакции.
В этом случае мы в коде-действия кнопки ставим переменную в которую записывает сигдал о том, что нам нужно отсортировать:
=: procVar(name: "order"; value: true)
В коде форматирования таблицы пишем:
f1=: if(condition: $@order = true; then: $order)
order: setRowsOrder(ids: $sorted_ids)
sorted_ids: selectList(table: $#ntn; field: 'id'; order: 'quantity' desc)
Этот подход не рассчитан на таблицу с миллионами строк, в которой включена автоматическая разбивка на страницы. В этом случае лучше использовать колонку сортировки в настройках таблицы и по кнопке перезагрузить таблицу используя linkToTable.