mirror of
https://gitlab.com/bramw/baserow.git
synced 2024-11-21 23:37:55 +00:00
76 lines
1.9 KiB
JavaScript
76 lines
1.9 KiB
JavaScript
/**
|
|
* A mixin that can be used in combination with the view filter input components. If
|
|
* contains the expected props and it has a computed property that finds the field
|
|
* object related to filter field id.
|
|
*/
|
|
export default {
|
|
props: {
|
|
database: {
|
|
type: Object,
|
|
required: false,
|
|
default: undefined,
|
|
},
|
|
view: {
|
|
type: Object,
|
|
required: false,
|
|
default: undefined,
|
|
},
|
|
fields: {
|
|
type: Array,
|
|
required: true,
|
|
},
|
|
},
|
|
computed: {
|
|
activeDecorations() {
|
|
return this.view.decorations
|
|
.map((decoration) => {
|
|
const deco = { decoration }
|
|
|
|
deco.decoratorType = this.$registry.get(
|
|
'viewDecorator',
|
|
decoration.type
|
|
)
|
|
|
|
deco.component = deco.decoratorType.getComponent(
|
|
this.database.workspace.id
|
|
)
|
|
deco.place = deco.decoratorType.getPlace()
|
|
|
|
if (decoration.value_provider_type) {
|
|
deco.valueProviderType = this.$registry.get(
|
|
'decoratorValueProvider',
|
|
decoration.value_provider_type
|
|
)
|
|
|
|
deco.propsFn = (row) => {
|
|
return {
|
|
value: deco.valueProviderType.getValue({
|
|
row,
|
|
fields: this.fields,
|
|
options: decoration.value_provider_conf,
|
|
}),
|
|
}
|
|
}
|
|
}
|
|
|
|
return deco
|
|
})
|
|
.filter(
|
|
({ decoratorType }) =>
|
|
!decoratorType.isDeactivated(this.database.workspace.id)
|
|
)
|
|
},
|
|
decorationsByPlace() {
|
|
return this.activeDecorations
|
|
.filter(({ valueProviderType }) => valueProviderType)
|
|
.reduce((prev, deco) => {
|
|
if (deco.valueProviderType) {
|
|
const decType = deco.decoratorType.getPlace()
|
|
prev[decType] = [...(prev[decType] || []), deco]
|
|
}
|
|
return prev
|
|
}, {})
|
|
},
|
|
},
|
|
}
|