Browse Source

Merge pull request #7837 from nocodb/nc-fix/7808-column-reorder

Nc fix/7808 column reorder
pull/6831/head
Ramesh Mane 5 months ago committed by GitHub
parent
commit
540f8187f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 92
      packages/nc-gui/components/smartsheet/toolbar/FieldsMenu.vue
  2. 4
      packages/nocodb/src/controllers/view-columns.controller.ts

92
packages/nc-gui/components/smartsheet/toolbar/FieldsMenu.vue

@ -83,58 +83,62 @@ const gridDisplayValueField = computed(() => {
}) })
const onMove = async (_event: { moved: { newIndex: number; oldIndex: number } }, undo = false) => { const onMove = async (_event: { moved: { newIndex: number; oldIndex: number } }, undo = false) => {
// todo : sync with server try {
if (!fields.value) return // todo : sync with server
if (!fields.value) return
if (!undo) { if (!undo) {
addUndo({ addUndo({
undo: { undo: {
fn: () => { fn: () => {
if (!fields.value) return if (!fields.value) return
const temp = fields.value[_event.moved.newIndex] const temp = fields.value[_event.moved.newIndex]
fields.value[_event.moved.newIndex] = fields.value[_event.moved.oldIndex] fields.value[_event.moved.newIndex] = fields.value[_event.moved.oldIndex]
fields.value[_event.moved.oldIndex] = temp fields.value[_event.moved.oldIndex] = temp
onMove( onMove(
{ {
moved: { moved: {
newIndex: _event.moved.oldIndex, newIndex: _event.moved.oldIndex,
oldIndex: _event.moved.newIndex, oldIndex: _event.moved.newIndex,
},
}, },
}, true,
true, )
) },
args: [],
}, },
args: [], redo: {
}, fn: () => {
redo: { if (!fields.value) return
fn: () => { const temp = fields.value[_event.moved.oldIndex]
if (!fields.value) return fields.value[_event.moved.oldIndex] = fields.value[_event.moved.newIndex]
const temp = fields.value[_event.moved.oldIndex] fields.value[_event.moved.newIndex] = temp
fields.value[_event.moved.oldIndex] = fields.value[_event.moved.newIndex] onMove(_event, true)
fields.value[_event.moved.newIndex] = temp },
onMove(_event, true) args: [],
}, },
args: [], scope: defineViewScope({ view: activeView.value }),
}, })
scope: defineViewScope({ view: activeView.value }), }
})
}
if (fields.value.length < 2) return if (fields.value.length < 2) return
await Promise.all( await Promise.all(
fields.value.map(async (field, index) => { fields.value.map(async (field, index) => {
if (field.order !== index + 1) { if (field.order !== index + 1) {
field.order = index + 1 field.order = index + 1
await saveOrUpdate(field, index, true) await saveOrUpdate(field, index, true)
} }
}), }),
) )
await loadViewColumns() await loadViewColumns()
reloadViewDataHook?.trigger() reloadViewDataHook?.trigger()
$e('a:fields:reorder') $e('a:fields:reorder')
} catch (e) {
message.error(await extractSdkResponseErrorMsg(e))
}
} }
const coverOptions = computed<SelectProps['options']>(() => { const coverOptions = computed<SelectProps['options']>(() => {

4
packages/nocodb/src/controllers/view-columns.controller.ts

@ -58,8 +58,8 @@ export class ViewColumnsController {
'/api/v1/db/meta/views/:viewId/columns/:columnId', '/api/v1/db/meta/views/:viewId/columns/:columnId',
'/api/v2/meta/views/:viewId/columns/:columnId', '/api/v2/meta/views/:viewId/columns/:columnId',
]) ])
@Acl('columnUpdate') @Acl('viewColumnUpdate')
async columnUpdate( async viewColumnUpdate(
@Param('viewId') viewId: string, @Param('viewId') viewId: string,
@Param('columnId') columnId: string, @Param('columnId') columnId: string,
@Body() body: ViewColumnReqType, @Body() body: ViewColumnReqType,

Loading…
Cancel
Save