feat: drag & drop des champs personnalisés
This commit is contained in:
@@ -1853,6 +1853,12 @@ const visibleMachineCustomFields = computed(() => {
|
||||
const summarizeCustomFields = (fields = []) => {
|
||||
const seen = new Set()
|
||||
return fields
|
||||
.slice()
|
||||
.sort((a, b) => {
|
||||
const left = typeof a?.orderIndex === 'number' ? a.orderIndex : 0
|
||||
const right = typeof b?.orderIndex === 'number' ? b.orderIndex : 0
|
||||
return left - right
|
||||
})
|
||||
.filter(shouldDisplayCustomField)
|
||||
.filter((field) => {
|
||||
const key = field.customFieldId || field.id || field.name
|
||||
@@ -2013,11 +2019,12 @@ const normalizeExistingCustomFieldDefinitions = (fields) => {
|
||||
return []
|
||||
}
|
||||
return fields
|
||||
.map((field) => normalizeCustomFieldDefinitionEntry(field))
|
||||
.map((field, index) => normalizeCustomFieldDefinitionEntry(field, index))
|
||||
.filter((definition) => definition !== null)
|
||||
.sort((a, b) => (a.orderIndex ?? 0) - (b.orderIndex ?? 0))
|
||||
}
|
||||
|
||||
const normalizeCustomFieldDefinitionEntry = (definition = {}) => {
|
||||
const normalizeCustomFieldDefinitionEntry = (definition = {}, fallbackIndex = 0) => {
|
||||
const name = extractDefinitionName(definition)
|
||||
if (!name) {
|
||||
return null
|
||||
@@ -2028,6 +2035,7 @@ const normalizeCustomFieldDefinitionEntry = (definition = {}) => {
|
||||
const defaultValue = extractDefinitionDefaultValue(definition)
|
||||
const id = typeof definition?.id === 'string' ? definition.id : undefined
|
||||
const customFieldId = typeof definition?.customFieldId === 'string' ? definition.customFieldId : id
|
||||
const orderIndex = typeof definition?.orderIndex === 'number' ? definition.orderIndex : fallbackIndex
|
||||
return {
|
||||
id,
|
||||
customFieldId,
|
||||
@@ -2037,6 +2045,7 @@ const normalizeCustomFieldDefinitionEntry = (definition = {}) => {
|
||||
options,
|
||||
defaultValue,
|
||||
readOnly: !!definition?.readOnly,
|
||||
orderIndex,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user