Add validation to duplicating rows
This commit is contained in:
parent
4a6713e9d3
commit
361ab9e3cd
|
@ -25,16 +25,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
const duplicate = async () => {
|
const duplicate = async () => {
|
||||||
let clone = { ...$focusedRow }
|
const newRow = await rows.actions.duplicateRow($focusedRow)
|
||||||
delete clone._id
|
|
||||||
delete clone._rev
|
|
||||||
delete clone.__idx
|
|
||||||
const newRow = await rows.actions.addRow(clone, $focusedRow.__idx + 1)
|
|
||||||
if (newRow) {
|
if (newRow) {
|
||||||
const column = $stickyColumn?.name || $columns[0].name
|
const column = $stickyColumn?.name || $columns[0].name
|
||||||
$focusedCellId = `${newRow._id}-${column}`
|
$focusedCellId = `${newRow._id}-${column}`
|
||||||
menu.actions.close()
|
|
||||||
}
|
}
|
||||||
|
menu.actions.close()
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -185,7 +185,7 @@ export const deriveStores = context => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds a new row
|
// Adds a new row
|
||||||
const addRow = async (row, idx) => {
|
const addRow = async (row, idx, bubble = false) => {
|
||||||
try {
|
try {
|
||||||
// Create row
|
// Create row
|
||||||
const newRow = await API.saveRow({ ...row, tableId: get(tableId) })
|
const newRow = await API.saveRow({ ...row, tableId: get(tableId) })
|
||||||
|
@ -203,7 +203,34 @@ export const deriveStores = context => {
|
||||||
notifications.success("Row created successfully")
|
notifications.success("Row created successfully")
|
||||||
return newRow
|
return newRow
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
handleValidationError("new", error)
|
if (bubble) {
|
||||||
|
throw error
|
||||||
|
} else {
|
||||||
|
handleValidationError("new", error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const duplicateRow = async row => {
|
||||||
|
let clone = { ...row }
|
||||||
|
delete clone._id
|
||||||
|
delete clone._rev
|
||||||
|
delete clone.__idx
|
||||||
|
try {
|
||||||
|
const newRow = await addRow(clone, row.__idx + 1, true)
|
||||||
|
|
||||||
|
// We deliberately re-use the majority of the existing row as the API
|
||||||
|
// returns different metadata for relationships when saving a row compared
|
||||||
|
// to using the search endpoint. We always want data in the shape that the
|
||||||
|
// search endpoint returns it.
|
||||||
|
return {
|
||||||
|
...row,
|
||||||
|
__idx: row.__idx + 1,
|
||||||
|
_id: newRow._id,
|
||||||
|
_rev: newRow._rev,
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
handleValidationError(row._id, error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,6 +405,7 @@ export const deriveStores = context => {
|
||||||
...rows,
|
...rows,
|
||||||
actions: {
|
actions: {
|
||||||
addRow,
|
addRow,
|
||||||
|
duplicateRow,
|
||||||
getRow,
|
getRow,
|
||||||
updateRow,
|
updateRow,
|
||||||
deleteRows,
|
deleteRows,
|
||||||
|
|
Loading…
Reference in New Issue