Browse Source

feat: undo/redo for cover image change

Signed-off-by: mertmit <mertmit99@gmail.com>
pull/5332/head
mertmit 1 year ago
parent
commit
829f83145c
  1. 51
      packages/nc-gui/components/smartsheet/toolbar/FieldsMenu.vue
  2. 4
      packages/nocodb-sdk/src/lib/Api.ts
  3. 4
      packages/nocodb/src/schema/swagger.json

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

@ -146,6 +146,27 @@ const coverOptions = computed<SelectProps['options']>(() => {
return [{ value: null, label: 'No Image' }, ...filterFields] return [{ value: null, label: 'No Image' }, ...filterFields]
}) })
const updateCoverImage = async (val?: string | null) => {
if (
(activeView.value?.type === ViewTypes.GALLERY || activeView.value?.type === ViewTypes.KANBAN) &&
activeView.value?.id &&
activeView.value?.view
) {
if (activeView.value?.type === ViewTypes.GALLERY) {
await $api.dbView.galleryUpdate(activeView.value?.id, {
fk_cover_image_col_id: val,
})
;(activeView.value.view as GalleryType).fk_cover_image_col_id = val
} else if (activeView.value?.type === ViewTypes.KANBAN) {
await $api.dbView.kanbanUpdate(activeView.value?.id, {
fk_cover_image_col_id: val,
})
;(activeView.value.view as KanbanType).fk_cover_image_col_id = val
}
reloadViewMetaHook?.trigger()
}
}
const coverImageColumnId = computed({ const coverImageColumnId = computed({
get: () => { get: () => {
const fk_cover_image_col_id = const fk_cover_image_col_id =
@ -159,23 +180,19 @@ const coverImageColumnId = computed({
return null return null
}, },
set: async (val) => { set: async (val) => {
if ( if (val !== coverImageColumnId.value) {
(activeView.value?.type === ViewTypes.GALLERY || activeView.value?.type === ViewTypes.KANBAN) && addUndo({
activeView.value?.id && undo: {
activeView.value?.view fn: await updateCoverImage,
) { args: [coverImageColumnId.value],
if (activeView.value?.type === ViewTypes.GALLERY) { },
await $api.dbView.galleryUpdate(activeView.value?.id, { redo: {
fk_cover_image_col_id: val, fn: await updateCoverImage,
}) args: [val],
;(activeView.value.view as GalleryType).fk_cover_image_col_id = val },
} else if (activeView.value?.type === ViewTypes.KANBAN) { })
await $api.dbView.kanbanUpdate(activeView.value?.id, {
fk_cover_image_col_id: val, await updateCoverImage(val)
})
;(activeView.value.view as KanbanType).fk_cover_image_col_id = val
}
reloadViewMetaHook?.trigger()
} }
}, },
}) })

4
packages/nocodb-sdk/src/lib/Api.ts

@ -902,7 +902,7 @@ export interface GalleryType {
/** Model for Bool */ /** Model for Bool */
deleted?: BoolType; deleted?: BoolType;
/** Foreign Key to Cover Image Column */ /** Foreign Key to Cover Image Column */
fk_cover_image_col_id?: string; fk_cover_image_col_id?: StringOrNullType;
/** Foreign Key to Model */ /** Foreign Key to Model */
fk_model_id?: string; fk_model_id?: string;
/** Foreign Key to View */ /** Foreign Key to View */
@ -1229,7 +1229,7 @@ export interface KanbanType {
/** View ID */ /** View ID */
fk_view_id?: IdType; fk_view_id?: IdType;
/** Cover Image Column ID */ /** Cover Image Column ID */
fk_cover_image_col_id?: IdType; fk_cover_image_col_id?: StringOrNullType;
/** Kanban Columns */ /** Kanban Columns */
columns?: KanbanColumnType[]; columns?: KanbanColumnType[];
/** Meta Info for Kanban */ /** Meta Info for Kanban */

4
packages/nocodb/src/schema/swagger.json

@ -15629,7 +15629,7 @@
"$ref": "#/components/schemas/Bool" "$ref": "#/components/schemas/Bool"
}, },
"fk_cover_image_col_id": { "fk_cover_image_col_id": {
"type": "string", "$ref": "#/components/schemas/StringOrNull",
"description": "Foreign Key to Cover Image Column" "description": "Foreign Key to Cover Image Column"
}, },
"fk_model_id": { "fk_model_id": {
@ -16498,7 +16498,7 @@
"description": "View ID" "description": "View ID"
}, },
"fk_cover_image_col_id": { "fk_cover_image_col_id": {
"$ref": "#/components/schemas/Id", "$ref": "#/components/schemas/StringOrNull",
"description": "Cover Image Column ID" "description": "Cover Image Column ID"
}, },
"columns": { "columns": {

Loading…
Cancel
Save