Add icon, position and key on View (#4413)

* Add view key field

* Update Prefill demo, seed dev, prefill new workspace
This commit is contained in:
Charles Bochet
2024-03-11 17:00:19 +01:00
committed by GitHub
parent 5cf4047482
commit 5287b7c4ab
12 changed files with 472 additions and 43 deletions

View File

@ -11,23 +11,47 @@ export const viewPrefillData = async (
const createdViews = await entityManager
.createQueryBuilder()
.insert()
.into(`${schemaName}.view`, ['name', 'objectMetadataId', 'type'])
.into(`${schemaName}.view`, [
'name',
'objectMetadataId',
'type',
'key',
'position',
'icon',
])
.orIgnore()
.values([
{
name: 'All Companies',
objectMetadataId: objectMetadataMap['company'].id,
type: 'table',
key: 'INDEX',
position: 0,
icon: 'IconBuildingSkyscraper',
},
{
name: 'All People',
objectMetadataId: objectMetadataMap['person'].id,
type: 'table',
key: 'INDEX',
position: 0,
icon: 'IconUser',
},
{
name: 'By Stage',
objectMetadataId: objectMetadataMap['opportunity'].id,
type: 'kanban',
key: null,
position: 0,
icon: 'IconLayoutKanban',
},
{
name: 'All Opportunities',
objectMetadataId: objectMetadataMap['opportunity'].id,
type: 'kanban',
type: 'table',
key: 'INDEX',
position: 1,
icon: 'IconTargetArrow',
},
])
.returning('*')
@ -168,34 +192,78 @@ export const viewPrefillData = async (
},
// Opportunity
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['amount'],
fieldMetadataId: objectMetadataMap['opportunity'].fields['name'],
viewId: viewIdMap['All Opportunities'],
position: 0,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['closeDate'],
fieldMetadataId: objectMetadataMap['opportunity'].fields['amount'],
viewId: viewIdMap['All Opportunities'],
position: 1,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['probability'],
fieldMetadataId: objectMetadataMap['opportunity'].fields['closeDate'],
viewId: viewIdMap['All Opportunities'],
position: 2,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['probability'],
viewId: viewIdMap['All Opportunities'],
position: 3,
isVisible: true,
size: 150,
},
{
fieldMetadataId:
objectMetadataMap['opportunity'].fields['pointOfContact'],
viewId: viewIdMap['All Opportunities'],
position: 4,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['name'],
viewId: viewIdMap['By Stage'],
position: 0,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['amount'],
viewId: viewIdMap['By Stage'],
position: 1,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['closeDate'],
viewId: viewIdMap['By Stage'],
position: 2,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['probability'],
viewId: viewIdMap['By Stage'],
position: 3,
isVisible: true,
size: 150,
},
{
fieldMetadataId:
objectMetadataMap['opportunity'].fields['pointOfContact'],
viewId: viewIdMap['By Stage'],
position: 4,
isVisible: true,
size: 150,
},
])
.execute();
};

View File

@ -11,23 +11,47 @@ export const viewPrefillData = async (
const createdViews = await entityManager
.createQueryBuilder()
.insert()
.into(`${schemaName}.view`, ['name', 'objectMetadataId', 'type'])
.into(`${schemaName}.view`, [
'name',
'objectMetadataId',
'type',
'key',
'position',
'icon',
])
.orIgnore()
.values([
{
name: 'All Companies',
objectMetadataId: objectMetadataMap['company'].id,
type: 'table',
key: 'INDEX',
position: 0,
icon: 'IconBuildingSkyscraper',
},
{
name: 'All People',
objectMetadataId: objectMetadataMap['person'].id,
type: 'table',
key: 'INDEX',
position: 0,
icon: 'IconUser',
},
{
name: 'By Stage',
objectMetadataId: objectMetadataMap['opportunity'].id,
type: 'kanban',
key: null,
position: 0,
icon: 'IconLayoutKanban',
},
{
name: 'All Opportunities',
objectMetadataId: objectMetadataMap['opportunity'].id,
type: 'kanban',
type: 'table',
key: 'INDEX',
position: 1,
icon: 'IconTargetArrow',
},
])
.returning('*')
@ -168,34 +192,78 @@ export const viewPrefillData = async (
},
// Opportunity
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['amount'],
fieldMetadataId: objectMetadataMap['opportunity'].fields['name'],
viewId: viewIdMap['All Opportunities'],
position: 0,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['closeDate'],
fieldMetadataId: objectMetadataMap['opportunity'].fields['amount'],
viewId: viewIdMap['All Opportunities'],
position: 1,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['probability'],
fieldMetadataId: objectMetadataMap['opportunity'].fields['closeDate'],
viewId: viewIdMap['All Opportunities'],
position: 2,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['probability'],
viewId: viewIdMap['All Opportunities'],
position: 3,
isVisible: true,
size: 150,
},
{
fieldMetadataId:
objectMetadataMap['opportunity'].fields['pointOfContact'],
viewId: viewIdMap['All Opportunities'],
position: 4,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['name'],
viewId: viewIdMap['By Stage'],
position: 0,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['amount'],
viewId: viewIdMap['By Stage'],
position: 1,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['closeDate'],
viewId: viewIdMap['By Stage'],
position: 2,
isVisible: true,
size: 150,
},
{
fieldMetadataId: objectMetadataMap['opportunity'].fields['probability'],
viewId: viewIdMap['By Stage'],
position: 3,
isVisible: true,
size: 150,
},
{
fieldMetadataId:
objectMetadataMap['opportunity'].fields['pointOfContact'],
viewId: viewIdMap['By Stage'],
position: 4,
isVisible: true,
size: 150,
},
])
.execute();
};

View File

@ -41,6 +41,31 @@ export class ViewObjectMetadata extends BaseObjectMetadata {
})
type: string;
@FieldMetadata({
type: FieldMetadataType.SELECT,
label: 'Key',
description: 'View key',
options: [{ value: 'INDEX', label: 'Index', position: 0, color: 'red' }],
defaultValue: { value: 'INDEX' },
})
@IsNullable()
key: string;
@FieldMetadata({
type: FieldMetadataType.TEXT,
label: 'Icon',
description: 'View icon',
})
icon: string;
@FieldMetadata({
type: FieldMetadataType.POSITION,
label: 'Position',
description: 'View position',
})
@IsNullable()
position: number;
@FieldMetadata({
type: FieldMetadataType.BOOLEAN,
label: 'Compact View',