3 How to create a Viewlet
Andrey Platov edited this page 2021-09-06 10:05:01 +02:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Для создание 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']
  })