Перейти к содержимому

spinner

await crafttechApi.spinner(array);

Отображает окно с индикатором выполнения (спиннером) и может показывать сообщения об успехе или ошибке в зависимости от условий. Метод асинхронный и возвращает успешное значение (resolve) только после того, как сообщение будет отображено.

  • array (object[]) — необязательный параметр; массив из трёх объектов с параметрами заголовка и сообщения для разных этапов (основной, успех, ошибка). Каждый объект имеет поля title и msg:
{
title: string; // Заголовок сообщения
msg: string; // Текст сообщения
}

Первый объект — заголовок и текст, отображаемые в сообщении при старте спиннера. Второй объект — заголовок и текст, отображаемые в сообщении о завершении. Третий объект — заголовок и текст, отображаемые в сообщении об ошибке.

Если массив не передан или не переданы объекты (или какое-то из их свойств) - будут назначены значения по умолчанию:

[
{ title: "R7 Office", msg: "Выполнение макроса, не закрывайте окно..." },
{ title: "R7 Office", msg: "Готово!" },
{ title: "R7 Office", msg: "Ошибка выполнения!" },
];
  • Экземпляр SimpleSpinner, в котором доступны методы done(), successMsg(), errorMsg() и newStatus().
  • done() — закрывает окно спиннера;
  • successMsg() — закрывает окно спиннера и показывает сообщение об успешном завершении.
  • errorMsg(err?: string) — закрывает окно спиннера и показывает сообщение об ошибке. Если параметр не передан, используется значение из array либо по умолчанию;
  • newStatus(newMsg: string) — обновляет текст внутри спиннера;
let spinner = await crafttechApi.spinner();
setTimeout(() => spinner.done(), 2000);
let value = null;
let spinner = await crafttechApi.spinner(
[
{ title: "Заголовок спиннера", msg: "Сообщение спиннера" },
{ title: "Заголовок сообщения об успехе", msg: "Сообщение об успехе" },
{ title: "Заголовок сообщения об ошибке", msg: "Сообщение об ошибке" },
],
() => value === 1,
true
);
setTimeout(() => (value = 1), 2000);
let spinner = await crafttechApi.spinner();
(async () => {
try {
await new Promise((_, rj) =>
setTimeout(() => rj(new Error("Критическая ошибка!")), 2000)
);
} catch (error) {
spinner.errorMsg(error.message);
}
})();