make UXObjects label mandatory

Signed-off-by: Andrey Platov <andrey@hardcoreeng.com>
This commit is contained in:
Andrey Platov 2021-10-05 11:18:37 +02:00
parent dbbe33045e
commit 8d4d052a5d
No known key found for this signature in database
GPG Key ID: C8787EFEB4B64AF0
7 changed files with 29 additions and 22 deletions

View File

@ -40,7 +40,7 @@ export class TTypeChannels extends TType {}
* @public
*/
export function TypeChannels (): Type<Channel[]> {
return { _class: contact.class.TypeChannels }
return { _class: contact.class.TypeChannels, label: 'TypeChannels' as IntlString }
}
@Model(contact.class.Contact, core.class.Doc, DOMAIN_CONTACT)

View File

@ -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<Obj> {
kind!: ClassifierKind
label!: IntlString
extends!: Ref<Class<Obj>>
domain!: Domain
}
@ -47,10 +49,13 @@ export class TAttribute extends TDoc implements AnyAttribute {
attributeOf!: Ref<Class<Obj>>
name!: string
type!: Type<any>
label!: IntlString
}
@Model(core.class.Type, core.class.Doc)
export class TType extends TDoc implements Type<any> {}
export class TType extends TDoc implements Type<any> {
label!: IntlString
}
@Model(core.class.TypeString, core.class.Type)
export class TTypeString extends TType {}

View File

@ -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)

View File

@ -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<Doc>[] {
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, {

View File

@ -57,7 +57,7 @@ export type PropertyType = any
* @public
*/
export interface UXObject extends Obj {
label?: IntlString
label: IntlString
icon?: Asset
}

View File

@ -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<Class<Obj>>, core.class.Doc)
class MyClass {
_class!: Ref<Class<MyClass>>
@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<Class<Obj>>, core.class.Doc)
class MyClass {
_class!: Ref<Class<MyClass>>
@Prop(TypeString()) name!: string
@Prop(TypeString(), 'name' as IntlString) name!: string
}
@Model(
'class:test.MyClass2' as Ref<Class<Obj>>,
'class:test.MyClass' as Ref<Class<Obj>>
)
class MyClass2 extends MyClass {
@Prop(TypeString()) lastName!: string
@Prop(TypeString(), 'lastName' as IntlString) lastName!: string
}
const valid = [

View File

@ -54,7 +54,7 @@ interface ClassTxes {
_id: Ref<Class<Obj>>
extends?: Ref<Class<Obj>>
domain?: Domain
label?: IntlString
label: IntlString
icon?: Asset
txes: Array<NoIDs<Tx>>
kind: ClassifierKind
@ -79,7 +79,7 @@ function getTxes (target: any): ClassTxes {
* @param icon -
* @returns
*/
export function Prop (type: Type<PropertyType>, label?: IntlString, icon?: Asset) {
export function Prop (type: Type<PropertyType>, label: IntlString, icon?: Asset) {
return function (target: any, propertyKey: string): void {
const txes = getTxes(target)
const tx: NoIDs<TxCreateDoc<Attribute<PropertyType>>> = {
@ -268,19 +268,19 @@ export class Builder {
* @public
*/
export function TypeString (): Type<string> {
return { _class: core.class.TypeString }
return { _class: core.class.TypeString, label: 'TypeString' as IntlString }
}
/**
* @public
*/
export function TypeBoolean (): Type<string> {
return { _class: core.class.TypeBoolean }
return { _class: core.class.TypeBoolean, label: 'TypeBoolean' as IntlString }
}
/**
* @public
*/
export function Bag (): Type<Record<string, PropertyType>> {
return { _class: core.class.Bag }
return { _class: core.class.Bag, label: 'Bag' as IntlString }
}