Skip to content

How to create a Viewlet

Andrey Platov edited this page Sep 6, 2021 · 3 revisions

Для создание Viewlet нужно создать его дескриптор в модели, который предоставляет название Viewlet, иконку, и компонент его реализующий, например:

  builder.createDoc(view.class.ViewletDescriptor, core.space.Model, {
    label: 'Table' as IntlString,
    icon: view.icon.Table,
    component: view.component.TableView
  }, view.viewlet.Table)

Компонент, реализующий Viewlet должен иметь следующие свойства:

  export let _class: Ref<Class<Doc>>
  export let space: Ref<Space>
  export let open: AnyComponent
  export let options: FindOptions<Doc> | undefined
  export let config: string[] 

Для использования существующего Viewlet в приложении, надо создать объект класса view.class.Viewlet. Например, чтобы объекты recruit.class.Candidate показывались в таблице, нужно добавить соответствующее описание в модель:

  builder.createDoc(view.class.Viewlet, core.space.Model, {
    attachTo: recruit.class.Candidate,
    descriptor: view.viewlet.Table,
    open: recruit.component.EditCandidate,
    // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
    options: {
      lookup: {
        resume: chunter.class.Attachment
      }
    } as FindOptions<Doc>, // TODO: fix
    config: ['', 'city', '$lookup.resume', 'channels']
  })