PowerApps — как отключить кнопку на пару секунд перед ее включением?

#powerapps

#powerapps

Вопрос:

У меня есть кнопка с именем Button_Import, при нажатии на эту кнопку я уведомлю пользователя о том, что импорт может занять некоторое время, затем он вызовет фабрику данных (через логические приложения), для завершения которой требуется несколько часов.

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

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

Как это реализовать?

Ответ №1:

Вы можете использовать управление таймером и пару переменных для реализации этой логики. В элементе управления onSelect вашей кнопки вы можете использовать что-то похожее на приведенное ниже выражение:

 UpdateContext({ startTimer:true, buttonDisabled:true });
Notify("Imported started, it will take some time...");
MyDataFactoryProcess.Run(...)
  

И режим отображения кнопки будет использовать buttonDisabled переменную, чтобы определить, следует ли ее отключить:

 If(!buttonDisabled, DisplayMode.Edit, DisplayMode.Disabled)
  

В элементе управления таймером вы можете сделать его зависимым от startTimer переменной, и когда он закончится, он сбросит как эту, так и переменные buttonDisabled. Это будут свойства таймера для обновления и их соответствующие значения:

 Duration: 30000 // 30 seconds
Start: startTimer
OnTimerEnd: UpdateContext({ buttonDisabled:false, startTimer:false })
  

Таким образом, при нажатии кнопки она отключится сама и запустит таймер; когда таймер закончится (по истечении времени, указанного в его свойстве Duration), он включит кнопку и сбросит переменную startTimer, чтобы при повторном нажатии кнопки таймер мог запуститься еще раз.