Платформа A2v10 довідкова система
EN


Контролер

Контролер відповідає за взаємодію моделі і виду. Будь-який об`єкт даних має властивість $ctrl, яка повертає посилання на поточний контролер. Контролер це звичайний об`єкт JavaScript, що реалізує наступний інтерфейс:


Методи контролера

$invoke(command: string, arg: object, path?: string, opts?: { catchError: boolean }): Promise

Викликає серверну команду.

Аргументи:

  • command - ім'я серверної команди (з розділу commands файлу model.json).
  • arg - довільний об`єкт аргумента. Властивості цього об'єкта будуть аргументами команди.
  • path? - необов'язково. URL для кінцевої точки. Якщо не вказано, буде виконаний в поточній кінцевій точці.
  • opts - об`єкт опцій. В поточній версії містить єдину властивість - catchError. Якщо вона встановлена, то при виникненні помилок проміс буде відмінено і помилку можна буде перехопити в коді за допомогою метода catch (або в операторі try... catch для async ... await) проміса). За замовчуванням система просто виводить повідомлення про помилку і не виконує проміс.

Повертає:

  • Promise.
$reload(array?:object[]): Promise<void>

Оновлює модель або її частину.

Аргументи:

Якщо вказано аргумент, то оновлюються дані лінивого масиву, в іншому випадку - оновлюються дані всієї моделі. Деякі властивості моделі можна "захистити" від оновлення за допомогою опції шаблону bindOnce.

$msg(msg:string, title?:string, style?:string): Promise<object>

Метод виводить повідомлення в модальному вікні.

Аргументи:

  • msg - текст повідомлення. Може містити html-розмітку.
  • title - заголовок вікна повідомлення. За замовчуванням: рядок "Повідомлення" (в поточній локалізації).
  • {Enum:['info', 'alert', 'confirm']} style - стиль. За замовчуванням: 'info'.

Повертає:

  • Promise<any>, який буде виконаний після закриття вікна.

Кнопки, які будуть розміщені у вікні, залежать від стилю повідомлення.

$confirm(msg:string | IConfrim): Promise<boolean|string>

Метод виводить запитання в модальному вікні.

Аргументи:

  • msg - текст запиту. Може містити html-розмітку.
  • title - заголовок вікна запиту. За замовчуванням: рядок "Підтвердження" (в поточній локалізації).
  • {Enum:['info', 'alert', 'confirm']} style - стиль. За замовчуванням: 'confrim'.
  • list - перелік додаткових рядків (наприклад, помилок).
  • buttons - перелік кнопок відповіді Властивість 'text' це заголовок кнопки. Властивість 'result' - результат, який поверне проміс після закриття вікна. Якщо buttons не вказано, застосовуються стандартні кнопки Ok та Cancel (з урахуванням поточної локалізації).

Повертає:

  • Promise<boolean|string>, який буде виконаний після закриття вікна.

Кнопка відміни має містити значення result: false. Натискання на цю кнопку закриває вікно без виконання промісу.

$asyncValid(command: string, arg: object): any | Promise

Виконує асинхронну перевірку. Для цього викликає команду на сервері, передаючи їй задані аргументи. Команда завжди виконується в поточній кінцевій точці.

Зверніть увагу, що результати виконання цієї команди можуть кешуватися, щоб уникнути зайвих звернень до серверу.

Аргументи:

  • command - ім'я серверної команди (з розділу commands файлу model.json.
  • arg - довільний об`єкт аргументу. Властивості цього об'єкту будуть аргументами команди.

Повертає:

Зазвичай команда викликає процедуру sql. Ця процедура має повернути один об'єкт Result з єдиної властивістю Value типу bit aбо nvarchar.

HASH
$saveModified(message?:string, title?:string):boolean

Перевіряє, чи змінилася модель, і виводить повідомлення про необхідність збереження моделі.

Аргументи:

  • message - повідомлення. Якщо не вказано (undefined), буде використано стандартне повідомлення. "Елемент було змінено. Зберігти зміни?" (в поточній локалізації).
  • title - заголовок вікна повідомлення. Якщо не вказано (undefined), буде використано стандартний заголовок "Підтвердження закриття" (в поточній локалізації).

Повертає:

  • true - якщо об`єкт не було змінено ($isDirty = false), false в іншому випадку.

Опис:

Якщо модель даних не змінювалася, то метод просто повертає true, якщо змінювалася - показує діалог підтвердження закриття з трьома кнопками: "Зберігти", "Не зберігати" і "Скасувати" (в поточній локалізації) і повертає false.

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

Найчастіше метод використовується в делегаті CanCloseDelegate об'єкта Dialog.

$setFilter(target:object, prop:string, value:any): void

Опис

Оскільки фільтри дуже тісно взаємодіють з розміткою та поведінкою системи, неможна просто встановити значення фільтра з коду. Для цього потрібно використовувати метод $setFilter. Після встановлення значення система виконає всі необхідні дії, оновить інтерфейс, виконає серверні запити тощо.

Аргументи:

  • target - об'єкт, для якого потрібно встановити фільтр.
  • prop - ім'я властивості елементу фильтру.
  • value - нове значення.
$inlineOpen(id:string): void

Відкриває вбудований діалог (InlineDialog).

Аргументи:

  • id - ідентифікатор діалогу.

Вбудований діалог має повний доступ до поточної моделі. Управління поведінкою повністю лягає на програміста.

$inlineClose(id:string, result: any): void

Закриває вбудований діалог (InlineDialog).

Аргументи:

  • id - ідентифікатор діалогу.
  • result - зарезервовано. В поточній версії не використовується.
$focus(htmlid: string): void

Встановлює курсор на елемент з заданим htmlid.

Аргументи:

  • htmlid - ідентифікатор елементу (можна встановити за допомогою властивості HtmlId об'єкту UIElementBase).
$emitSaveEvent(): void

Відправляє коду, що визвав діалог (caller) подію, яка задається властивістю SaveEvent елемента Dialog.

$emitCaller(event: string, ...params: any[]): void

Відправляє коду, що визвав діалог (caller) подію.

Аргументи:

  • event - назва події.
  • params - Параметри події.
$nodirty(func: () => Promise<any>): void

Визиває функцію-параметр таким чином, щоб не змінити властивість $dirty для моделі.

Аргументи:

  • func - функція, що визивається. Функція обов'язвово має бути асінхронною (або має повернути проміс).
$upload(url: string, accept?: string, data?: { Id?: any, Key?: any }, opts?: { catchError?: boolean }): Promise<any>

Показує діалог вибору файлу та відправляє його вміст на сервер.

Аргументи:

  • url - шлях до команди file, яка має опрацювати завантажений файл.
  • accept - дозволені mime-типи файлу (через кому). Виставляє фільтр в діалозі вибору. Приклади:
    • image/jpeg - картинки jpeg.
    • image/* - будь які картинки;
    • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - таблиця xlsx.
  • data - об'єкт. Цого властивість Id буде передано в команду в якості ідентифікатора.
  • opts - об`єкт опцій. В поточній версії містить єдину властивість - catchError. Якщо вона встановлена, то при виникненні помилок проміс буде відмінено і помилку можна буде перехопити в коді за допомогою метода catch (або в операторі try... catch для async ... await) проміса). За замовчуванням система просто виводить повідомлення про помилку і не виконує проміс.

Повертає:

  • Promise<any>, який буде виконаний після завершення операції. Вміст промісу - це те, що поверне сервер.