import EditIcon from '../../components/Icons/EditIcon' import FilamentIcon from '../../components/Icons/FilamentIcon' import InfoCircleIcon from '../../components/Icons/InfoCircleIcon' import ReloadIcon from '../../components/Icons/ReloadIcon' import CheckIcon from '../../components/Icons/CheckIcon' import XMarkIcon from '../../components/Icons/XMarkIcon' export const Filament = { name: 'filament', label: 'Filament', prefix: 'FIL', icon: FilamentIcon, actions: [ { name: 'info', label: 'Info', default: true, row: true, icon: InfoCircleIcon, url: (_id) => `/dashboard/management/filaments/info?filamentId=${_id}` }, { name: 'reload', label: 'Reload', icon: ReloadIcon, url: (_id) => `/dashboard/management/filaments/info?filamentId=${_id}&action=reload` }, { name: 'edit', label: 'Edit', row: true, icon: EditIcon, url: (_id) => `/dashboard/management/filaments/info?filamentId=${_id}&action=edit`, visible: (objectData) => { return !(objectData?._isEditing && objectData?._isEditing == true) } }, { name: 'finishEdit', label: 'Save Edits', icon: CheckIcon, url: (_id) => `/dashboard/management/filaments/info?filamentId=${_id}&action=finishEdit`, visible: (objectData) => { return objectData?._isEditing && objectData?._isEditing == true } }, { name: 'cancelEdit', label: 'Cancel Edits', icon: XMarkIcon, url: (_id) => `/dashboard/management/filaments/info?filamentId=${_id}&action=cancelEdit`, visible: (objectData) => { return objectData?._isEditing && objectData?._isEditing == true } } ], columns: [ '_reference', 'name', 'type', 'color', 'vendor', 'cost', 'density', 'diameter', 'createdAt', 'updatedAt' ], filters: ['_id', 'name', 'type', 'color', 'cost', 'vendor'], sorters: [ 'name', 'createdAt', 'type', 'vendor', 'cost', 'updatedAt', 'createdAt' ], group: ['diameter', 'type', 'vendor'], properties: [ { name: '_id', label: 'ID', columnFixed: 'left', type: 'id', objectType: 'filament', showCopy: true }, { name: 'createdAt', label: 'Created At', type: 'dateTime', readOnly: true }, { name: 'name', label: 'Name', columnFixed: 'left', required: true, type: 'text' }, { name: 'updatedAt', label: 'Updated At', type: 'dateTime', readOnly: true }, { name: 'vendor', label: 'Vendor', required: true, type: 'object', objectType: 'vendor', showHyperlink: true }, { name: 'type', label: 'Material', required: true, columnWidth: 150, type: 'material' }, { name: 'cost', label: 'Cost', columnWidth: 150, required: true, type: 'number', prefix: '£' }, { name: 'costWithTax', label: 'Cost w/ Tax', columnWidth: 150, required: true, readOnly: true, type: 'number', prefix: '£', value: (objectData) => { if (objectData?.costTaxRate?.rateType == 'percentage') { return ( ( objectData?.cost * (1 + objectData?.costTaxRate?.rate / 100) ).toFixed(2) || undefined ) } else if (objectData?.costTaxRate?.rateType == 'amount') { return ( (objectData?.cost + objectData?.costTaxRate?.rate).toFixed(2) || undefined ) } } }, { name: 'costTaxRate', label: 'Cost Tax Rate', required: true, type: 'object', objectType: 'taxRate', showHyperlink: true }, { name: 'color', label: 'Color', columnWidth: 150, required: true, type: 'color' }, { name: 'diameter', label: 'Diameter', columnWidth: 150, required: true, type: 'number', suffix: 'mm' }, { name: 'density', label: 'Density', columnWidth: 150, required: true, type: 'number', suffix: 'g/cm³' }, { name: 'emptySpoolWeight', label: 'Spool Weight', required: true, columnWidth: 150, type: 'number', suffix: 'g' }, { name: 'url', label: 'Link', required: false, type: 'url' }, { name: 'barcode', label: 'Barcode', required: false, type: 'text' } ] }