Skip to content

Commit 7d1d044

Browse files
committed
fix(desk): table missing width key
1 parent 40ff9f3 commit 7d1d044

File tree

4 files changed

+54
-14
lines changed

4 files changed

+54
-14
lines changed

packages/desktop/modules/collection-column/composables/with-view.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { useNonReactive } from '@/composables/utils'
2-
import pick from 'lodash/pick'
32

43
import { ViewColumn } from '@core/entities/view-common'
54
import Column from '@core/entities/column'
@@ -27,11 +26,20 @@ export function withView<T = ViewColumn>(columns: Column[], viewColumns: ViewCol
2726
return result as (Column & T)[]
2827
}
2928

30-
export function withOnlyView<T = ViewColumn>(columns: (Column & T)[]): T[] {
31-
if (!columns[0]) return []
29+
export function withNonColumnProperties<T = ViewColumn>(column: Column & T) {
30+
const result: any = {}
3231

3332
const cKeys = Object.keys(new Column({}))
34-
const keys = Object.keys(columns[0]).filter((k) => k === 'id' || !cKeys.includes(k))
3533

36-
return useNonReactive(columns).map((c) => pick(c, keys)) as T[]
34+
Object.keys(column)
35+
.filter((key) => key === 'id' || !cKeys.includes(key))
36+
.forEach((key) => {
37+
result[key] = column[key]
38+
})
39+
40+
return result
41+
}
42+
43+
export function withOnlyView<T = ViewColumn>(columns: (Column & T)[]): T[] {
44+
return useNonReactive(columns).map(withNonColumnProperties) as T[]
3745
}

packages/desktop/modules/collection/components/CDrawerHideColumns.vue

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,14 @@ const drawer = ref(false)
2121
// columns
2222
const store = useStore()
2323
24-
const view = computed(() => store.view.get(props.collectionId, props.viewId))
24+
const view = computed({
25+
get: () => store.view.get(props.collectionId, props.viewId),
26+
set: (value) => {
27+
if (!value) return
28+
29+
store.view.set(props.collectionId, props.viewId, value)
30+
},
31+
})
2532
2633
const columns = computed({
2734
get() {
@@ -32,7 +39,10 @@ const columns = computed({
3239
set(value) {
3340
if (!view.value) return
3441
35-
view.value.columns = withOnlyView(value)
42+
view.value = {
43+
...view.value,
44+
columns: withOnlyView(value),
45+
}
3646
},
3747
})
3848

packages/desktop/modules/collection/components/CTable.vue

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,14 @@ const collection = computed(() => store.collection.get(props.collectionId))
6161
// view
6262
const innerViewId = ref('')
6363
64-
const view = computed(() => store.view.get<ViewTable>(props.collectionId, innerViewId.value))
64+
const view = computed({
65+
get: () => store.view.get<ViewTable>(props.collectionId, innerViewId.value),
66+
set: (value) => {
67+
if (!value) return
68+
69+
store.view.set<ViewTable>(props.collectionId, innerViewId.value, value)
70+
},
71+
})
6572
6673
async function setViews() {
6774
innerViewId.value = props.viewId || ''
@@ -111,7 +118,10 @@ const columns = computed({
111118
set(value) {
112119
if (!view.value) return
113120
114-
view.value.columns = withOnlyView(value).filter((c) => !c.id.startsWith('_'))
121+
view.value = {
122+
...view.value,
123+
columns: withOnlyView(value).filter((c) => !c.id.startsWith('_')),
124+
}
115125
},
116126
})
117127

packages/desktop/modules/view/store.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export const useStore = defineStore('view', () => {
5050
}
5151

5252
async function setViews(collectionId: string, forceUpdate = false) {
53-
if (!forceUpdate && getViews(collectionId).length) {
53+
if (!forceUpdate && all(collectionId).length) {
5454
return
5555
}
5656

@@ -71,7 +71,7 @@ export const useStore = defineStore('view', () => {
7171

7272
raw.map(instantiate).forEach((v) => create(collectionId, v, true))
7373

74-
return getViews(collectionId)
74+
return all(collectionId)
7575
}
7676

7777
async function save(collectionId: string) {
@@ -103,9 +103,7 @@ export const useStore = defineStore('view', () => {
103103
const stop = watch(
104104
() => views.value[index].view,
105105
debounce(() => save(collectionId), 500),
106-
{
107-
deep: true,
108-
}
106+
{ deep: true }
109107
)
110108

111109
watchers.value.push({
@@ -140,6 +138,19 @@ export const useStore = defineStore('view', () => {
140138
return views.value[index].view as T
141139
}
142140

141+
function set<T = ViewCommon>(collectionId: string, viewId: string, payload: T) {
142+
const index = views.value.findIndex(
143+
(v) => v.collectionId === collectionId && v.viewId === viewId
144+
)
145+
146+
if (index === -1) return
147+
148+
views.value[index] = {
149+
...views.value[index],
150+
view: Object.assign(views.value[index].view, payload),
151+
}
152+
}
153+
143154
async function destroy(collectionId: string, viewId: string) {
144155
const index = views.value.findIndex(
145156
(i) => i.collectionId === collectionId && i.viewId === viewId
@@ -167,6 +178,7 @@ export const useStore = defineStore('view', () => {
167178
setViews,
168179
all,
169180
get,
181+
set,
170182
getViews,
171183
getView,
172184
create,

0 commit comments

Comments
 (0)