Перейти к содержанию

Main#

Форма, которая создается внутри Root формы и содержит основные визуальные элементы управления (контролы WigetBar - панель виджетов, ApplicationPanel - контрол для отображения форм во вкладках, Ribbon - основной тулбар с кнопками).

Подклчение собственной главной формы#

Создание корневой формы source/index.js

1
2
3
4
5
6
7
//./source/index.js
//...
// Импортируем форму
import CustomMainForm  from './forms/customMainForm'
//...
// в свойстве MainForm передаем CustomMainForm
new Root({ forms, widgets, routes, MainForm: CustomMainForm })
После этого получить доступ к экземпляру главной формы можно через свойство main сервиса application в контексте любой формы (this.services.application.main).

Сценарии использования собственной главной формы#

Загрузка данных#

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

1
2
3
4
5
6
7
8
9
//./source/forms/customMainForm.js
import { Main } from 'ecosoft-lexema8'
import User from '../models/helpDesk/user.model.json'

export class CustomMainForm extends Main {
  static get dataCaches() {
    return [User]
  }
}

Настройка кнопок контрола Ribbon#

//./source/forms/customMainForm.js
import { Main } from 'ecosoft-lexema8'
import letterImg from 'current-theme/images/dark/letter.png'

export class CustomMainForm extends Main {
  constructor (args) {
    super(args)
    // скрытие кнопки справки
    this.controls.ribbon.tools.help.visible = false
    // скрытие кнопки перехода на корневой маршрут
    this.controls.ribbon.tools.root.visible = false

    // добавление кнопоки
    this.controls.ribbon.addItems([{
      Ctor: Tool,
      properties: {
        id: 'myButton', // идентификатор кнопки
        image: folderImg, // иконка
        hint: 'test', // всплывающая подсказка 
        label: '3' // короткая подпись на кнопке
      }
    }])
    this.controls.ribbon.tools.myButton.clicked.add(() => {
      console.log('test')
    })
  }
}