diff --git a/models/contact/src/index.ts b/models/contact/src/index.ts index a6b3f55163..72717f414b 100644 --- a/models/contact/src/index.ts +++ b/models/contact/src/index.ts @@ -40,7 +40,7 @@ export class TTypeChannels extends TType {} * @public */ export function TypeChannels (): Type { - return { _class: contact.class.TypeChannels } + return { _class: contact.class.TypeChannels, label: 'TypeChannels' as IntlString } } @Model(contact.class.Contact, core.class.Doc, DOMAIN_CONTACT) diff --git a/models/core/src/core.ts b/models/core/src/core.ts index 8507bb7533..8bd0d85ca5 100644 --- a/models/core/src/core.ts +++ b/models/core/src/core.ts @@ -13,6 +13,7 @@ // limitations under the License. // +import type { IntlString } from '@anticrm/platform' import type { Account, AnyAttribute, Class, ClassifierKind, Doc, Domain, Mixin, Obj, Ref, Space, Timestamp, Type } from '@anticrm/core' import { DOMAIN_MODEL } from '@anticrm/core' import { Model } from '@anticrm/model' @@ -35,6 +36,7 @@ export class TDoc extends TObj implements Doc { @Model(core.class.Class, core.class.Doc, DOMAIN_MODEL) export class TClass extends TDoc implements Class { kind!: ClassifierKind + label!: IntlString extends!: Ref> domain!: Domain } @@ -47,10 +49,13 @@ export class TAttribute extends TDoc implements AnyAttribute { attributeOf!: Ref> name!: string type!: Type + label!: IntlString } @Model(core.class.Type, core.class.Doc) -export class TType extends TDoc implements Type {} +export class TType extends TDoc implements Type { + label!: IntlString +} @Model(core.class.TypeString, core.class.Type) export class TTypeString extends TType {} diff --git a/models/view/src/index.ts b/models/view/src/index.ts index 847de23c0a..3dec9bc955 100644 --- a/models/view/src/index.ts +++ b/models/view/src/index.ts @@ -47,6 +47,7 @@ export class TObjectEditor extends TClass implements ObjectEditor { @Model(view.class.ViewletDescriptor, core.class.Doc, DOMAIN_MODEL) export class TViewletDescriptor extends TDoc implements ViewletDescriptor { component!: AnyComponent + label!: IntlString } @Model(view.class.Viewlet, core.class.Doc, DOMAIN_MODEL) diff --git a/packages/core/src/__tests__/minmodel.ts b/packages/core/src/__tests__/minmodel.ts index ebb7727c22..7c58bf79dd 100644 --- a/packages/core/src/__tests__/minmodel.ts +++ b/packages/core/src/__tests__/minmodel.ts @@ -13,7 +13,7 @@ // limitations under the License. // -import type { Plugin } from '@anticrm/platform' +import type { Plugin, IntlString } from '@anticrm/platform' import { plugin } from '@anticrm/platform' import type { Class, Data, Doc, Obj, Ref, Mixin, Arr } from '../classes' import { ClassifierKind, DOMAIN_MODEL } from '../classes' @@ -48,18 +48,18 @@ export const test = plugin('test' as Plugin, { export function genMinModel (): TxCUD[] { const txes = [] // Fill Tx'es with basic model classes. - txes.push(createClass(core.class.Obj, { kind: ClassifierKind.CLASS })) - txes.push(createClass(core.class.Doc, { extends: core.class.Obj, kind: ClassifierKind.CLASS })) - txes.push(createClass(core.class.Class, { extends: core.class.Doc, kind: ClassifierKind.CLASS, domain: DOMAIN_MODEL })) - txes.push(createClass(core.class.Space, { extends: core.class.Doc, kind: ClassifierKind.CLASS, domain: DOMAIN_MODEL })) - txes.push(createClass(core.class.Account, { extends: core.class.Doc, kind: ClassifierKind.CLASS, domain: DOMAIN_MODEL })) + txes.push(createClass(core.class.Obj, { label: 'Obj' as IntlString, kind: ClassifierKind.CLASS })) + txes.push(createClass(core.class.Doc, { label: 'Doc' as IntlString, extends: core.class.Obj, kind: ClassifierKind.CLASS })) + txes.push(createClass(core.class.Class, { label: 'Class' as IntlString, extends: core.class.Doc, kind: ClassifierKind.CLASS, domain: DOMAIN_MODEL })) + txes.push(createClass(core.class.Space, { label: 'Space' as IntlString, extends: core.class.Doc, kind: ClassifierKind.CLASS, domain: DOMAIN_MODEL })) + txes.push(createClass(core.class.Account, { label: 'Account' as IntlString, extends: core.class.Doc, kind: ClassifierKind.CLASS, domain: DOMAIN_MODEL })) - txes.push(createClass(core.class.Tx, { extends: core.class.Doc, kind: ClassifierKind.CLASS, domain: DOMAIN_TX })) - txes.push(createClass(core.class.TxCreateDoc, { extends: core.class.Tx, kind: ClassifierKind.CLASS })) - txes.push(createClass(core.class.TxUpdateDoc, { extends: core.class.Tx, kind: ClassifierKind.CLASS })) - txes.push(createClass(core.class.TxRemoveDoc, { extends: core.class.Tx, kind: ClassifierKind.CLASS })) + txes.push(createClass(core.class.Tx, { label: 'Tx' as IntlString, extends: core.class.Doc, kind: ClassifierKind.CLASS, domain: DOMAIN_TX })) + txes.push(createClass(core.class.TxCreateDoc, { label: 'TxCreateDoc' as IntlString, extends: core.class.Tx, kind: ClassifierKind.CLASS })) + txes.push(createClass(core.class.TxUpdateDoc, { label: 'TxUpdateDoc' as IntlString, extends: core.class.Tx, kind: ClassifierKind.CLASS })) + txes.push(createClass(core.class.TxRemoveDoc, { label: 'TxRemoveDoc' as IntlString, extends: core.class.Tx, kind: ClassifierKind.CLASS })) - txes.push(createClass(test.mixin.TestMixin, { extends: core.class.Doc, kind: ClassifierKind.MIXIN })) + txes.push(createClass(test.mixin.TestMixin, { label: 'TestMixin' as IntlString, extends: core.class.Doc, kind: ClassifierKind.MIXIN })) txes.push( createDoc(core.class.Space, { diff --git a/packages/core/src/classes.ts b/packages/core/src/classes.ts index 6005fde6c6..b0596dc69f 100644 --- a/packages/core/src/classes.ts +++ b/packages/core/src/classes.ts @@ -57,7 +57,7 @@ export type PropertyType = any * @public */ export interface UXObject extends Obj { - label?: IntlString + label: IntlString icon?: Asset } diff --git a/packages/model/src/__tests__/dsl.test.ts b/packages/model/src/__tests__/dsl.test.ts index 67948dd883..c360965697 100644 --- a/packages/model/src/__tests__/dsl.test.ts +++ b/packages/model/src/__tests__/dsl.test.ts @@ -13,6 +13,7 @@ // limitations under the License. // +import type { IntlString } from '@anticrm/platform' import type { Class, Ref, Obj, Doc } from '@anticrm/core' import { Model, Prop, TypeString, Builder } from '../dsl' import core from '@anticrm/core' @@ -34,7 +35,7 @@ describe('dsl', () => { @Model('class:test.MyClass' as Ref>, core.class.Doc) class MyClass { _class!: Ref> - @Prop(TypeString()) name!: string + @Prop(TypeString(), 'name' as IntlString) name!: string } const builder = new Builder() builder.createModel(MyClass) @@ -76,14 +77,14 @@ describe('dsl', () => { @Model('class:test.MyClass' as Ref>, core.class.Doc) class MyClass { _class!: Ref> - @Prop(TypeString()) name!: string + @Prop(TypeString(), 'name' as IntlString) name!: string } @Model( 'class:test.MyClass2' as Ref>, 'class:test.MyClass' as Ref> ) class MyClass2 extends MyClass { - @Prop(TypeString()) lastName!: string + @Prop(TypeString(), 'lastName' as IntlString) lastName!: string } const valid = [ diff --git a/packages/model/src/dsl.ts b/packages/model/src/dsl.ts index 660df8b875..1b8c7fca3a 100644 --- a/packages/model/src/dsl.ts +++ b/packages/model/src/dsl.ts @@ -54,7 +54,7 @@ interface ClassTxes { _id: Ref> extends?: Ref> domain?: Domain - label?: IntlString + label: IntlString icon?: Asset txes: Array> kind: ClassifierKind @@ -79,7 +79,7 @@ function getTxes (target: any): ClassTxes { * @param icon - * @returns */ -export function Prop (type: Type, label?: IntlString, icon?: Asset) { +export function Prop (type: Type, label: IntlString, icon?: Asset) { return function (target: any, propertyKey: string): void { const txes = getTxes(target) const tx: NoIDs>> = { @@ -268,19 +268,19 @@ export class Builder { * @public */ export function TypeString (): Type { - return { _class: core.class.TypeString } + return { _class: core.class.TypeString, label: 'TypeString' as IntlString } } /** * @public */ export function TypeBoolean (): Type { - return { _class: core.class.TypeBoolean } + return { _class: core.class.TypeBoolean, label: 'TypeBoolean' as IntlString } } /** * @public */ export function Bag (): Type> { - return { _class: core.class.Bag } + return { _class: core.class.Bag, label: 'Bag' as IntlString } }