refactor usevuetable data

This commit is contained in:
pa
2026-01-24 19:25:00 +09:00
parent 2952f4d415
commit b4839c8ed5
23 changed files with 101 additions and 40 deletions
@@ -726,7 +726,9 @@
const { table: groupMemberModerationTanstackTable } = useVrcxVueTable({ const { table: groupMemberModerationTanstackTable } = useVrcxVueTable({
persistKey: 'group-moderation:members', persistKey: 'group-moderation:members',
data: computed(() => groupMemberModerationTable.data ?? []), get data() {
return computed(() => groupMemberModerationTable.data).value;
},
columns: groupMemberModerationColumns, columns: groupMemberModerationColumns,
getRowId: (row) => String(row?.userId ?? ''), getRowId: (row) => String(row?.userId ?? ''),
initialPagination: { pageIndex: 0, pageSize: groupMemberModerationTable.pageSize ?? 15 } initialPagination: { pageIndex: 0, pageSize: groupMemberModerationTable.pageSize ?? 15 }
@@ -767,7 +769,9 @@
const { table: groupBansModerationTanstackTable } = useVrcxVueTable({ const { table: groupBansModerationTanstackTable } = useVrcxVueTable({
persistKey: 'group-moderation:bans', persistKey: 'group-moderation:bans',
data: groupBansFilteredRows, get data() {
return groupBansFilteredRows.value;
},
columns: groupBansModerationColumns, columns: groupBansModerationColumns,
getRowId: (row) => String(row?.userId ?? row?.id ?? ''), getRowId: (row) => String(row?.userId ?? row?.id ?? ''),
initialPagination: { pageIndex: 0, pageSize: groupBansModerationTable.pageSize ?? 15 } initialPagination: { pageIndex: 0, pageSize: groupBansModerationTable.pageSize ?? 15 }
@@ -790,7 +794,9 @@
const { table: groupInvitesModerationTanstackTable } = useVrcxVueTable({ const { table: groupInvitesModerationTanstackTable } = useVrcxVueTable({
persistKey: 'group-moderation:invites', persistKey: 'group-moderation:invites',
data: computed(() => groupInvitesModerationTable.data ?? []), get data() {
return computed(() => groupInvitesModerationTable.data).value;
},
columns: groupInvitesModerationColumns, columns: groupInvitesModerationColumns,
getRowId: (row) => String(row?.userId ?? row?.id ?? ''), getRowId: (row) => String(row?.userId ?? row?.id ?? ''),
initialPagination: { pageIndex: 0, pageSize: groupInvitesModerationTable.pageSize ?? 15 } initialPagination: { pageIndex: 0, pageSize: groupInvitesModerationTable.pageSize ?? 15 }
@@ -813,7 +819,9 @@
const { table: groupJoinRequestsModerationTanstackTable } = useVrcxVueTable({ const { table: groupJoinRequestsModerationTanstackTable } = useVrcxVueTable({
persistKey: 'group-moderation:join-requests', persistKey: 'group-moderation:join-requests',
data: computed(() => groupJoinRequestsModerationTable.data ?? []), get data() {
return computed(() => groupJoinRequestsModerationTable.data).value;
},
columns: groupJoinRequestsModerationColumns, columns: groupJoinRequestsModerationColumns,
getRowId: (row) => String(row?.userId ?? row?.id ?? ''), getRowId: (row) => String(row?.userId ?? row?.id ?? ''),
initialPagination: { pageIndex: 0, pageSize: groupJoinRequestsModerationTable.pageSize ?? 15 } initialPagination: { pageIndex: 0, pageSize: groupJoinRequestsModerationTable.pageSize ?? 15 }
@@ -836,7 +844,9 @@
const { table: groupBlockedModerationTanstackTable } = useVrcxVueTable({ const { table: groupBlockedModerationTanstackTable } = useVrcxVueTable({
persistKey: 'group-moderation:blocked', persistKey: 'group-moderation:blocked',
data: computed(() => groupBlockedModerationTable.data ?? []), get data() {
return computed(() => groupBlockedModerationTable.data).value;
},
columns: groupBlockedModerationColumns, columns: groupBlockedModerationColumns,
getRowId: (row) => String(row?.userId ?? row?.id ?? ''), getRowId: (row) => String(row?.userId ?? row?.id ?? ''),
initialPagination: { pageIndex: 0, pageSize: groupBlockedModerationTable.pageSize ?? 15 } initialPagination: { pageIndex: 0, pageSize: groupBlockedModerationTable.pageSize ?? 15 }
@@ -871,7 +881,9 @@
const { table: groupLogsModerationTanstackTable } = useVrcxVueTable({ const { table: groupLogsModerationTanstackTable } = useVrcxVueTable({
persistKey: 'group-moderation:logs', persistKey: 'group-moderation:logs',
data: groupLogsFilteredRows, get data() {
return groupLogsFilteredRows.value;
},
columns: groupLogsModerationColumns, columns: groupLogsModerationColumns,
getRowId: (row) => String(row?.id ?? `${row?.created_at ?? ''}:${row?.eventType ?? ''}`), getRowId: (row) => String(row?.id ?? `${row?.created_at ?? ''}:${row?.eventType ?? ''}`),
initialPagination: { pageIndex: 0, pageSize: groupLogsModerationTable.pageSize ?? 15 } initialPagination: { pageIndex: 0, pageSize: groupLogsModerationTable.pageSize ?? 15 }
@@ -128,7 +128,9 @@
const { table: inviteMessageTanstackTable } = useVrcxVueTable({ const { table: inviteMessageTanstackTable } = useVrcxVueTable({
persistKey: 'invite-message', persistKey: 'invite-message',
data: inviteMessageRows, get data() {
return inviteMessageRows.value;
},
columns: inviteMessageColumns, columns: inviteMessageColumns,
getRowId: (row) => String(row?.slot ?? ''), getRowId: (row) => String(row?.slot ?? ''),
enablePagination: false, enablePagination: false,
@@ -98,7 +98,9 @@
const { table } = useVrcxVueTable({ const { table } = useVrcxVueTable({
persistKey: 'previousInstancesInfoDialog', persistKey: 'previousInstancesInfoDialog',
data: displayRows, get data() {
return displayRows.value;
},
columns: columns.value, columns: columns.value,
getRowId: (row) => row?.id ?? row?.userId ?? row?.displayName ?? JSON.stringify(row ?? {}), getRowId: (row) => row?.id ?? row?.userId ?? row?.displayName ?? JSON.stringify(row ?? {}),
initialSorting: [{ id: 'created_at', desc: true }], initialSorting: [{ id: 'created_at', desc: true }],
@@ -196,7 +196,9 @@
const { table } = useVrcxVueTable({ const { table } = useVrcxVueTable({
persistKey: persistKey.value, persistKey: persistKey.value,
data: displayRows, get data() {
return displayRows.value;
},
columns: columns.value, columns: columns.value,
getRowId: (row) => `${row?.location ?? ''}:${row?.created_at ?? ''}`, getRowId: (row) => `${row?.location ?? ''}:${row?.created_at ?? ''}`,
initialSorting: [{ id: 'created_at', desc: true }], initialSorting: [{ id: 'created_at', desc: true }],
@@ -105,7 +105,9 @@
const { table: inviteRequestMessageTanstackTable } = useVrcxVueTable({ const { table: inviteRequestMessageTanstackTable } = useVrcxVueTable({
persistKey: 'invite-request-message', persistKey: 'invite-request-message',
data: inviteRequestMessageRows, get data() {
return inviteRequestMessageRows.value;
},
columns: inviteRequestMessageColumns, columns: inviteRequestMessageColumns,
getRowId: (row) => String(row?.slot ?? ''), getRowId: (row) => String(row?.slot ?? ''),
enablePagination: false, enablePagination: false,
+1 -1
View File
@@ -232,7 +232,7 @@ export function useVrcxVueTable(options) {
}); });
} }
const dataSource = computed(() => resolveMaybeGetter(options.data)); const dataSource = computed(() => options.data);
const columnsSource = computed(() => resolveMaybeGetter(options.columns)); const columnsSource = computed(() => resolveMaybeGetter(options.columns));
const table = useVueTable({ const table = useVueTable({
+10 -9
View File
@@ -1,4 +1,4 @@
import { ref, shallowReactive, watch } from 'vue'; import { ref, shallowReactive, shallowRef, watch } from 'vue';
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { database } from '../service/database'; import { database } from '../service/database';
@@ -16,7 +16,7 @@ export const useFeedStore = defineStore('Feed', () => {
const vrcxStore = useVrcxStore(); const vrcxStore = useVrcxStore();
const sharedFeedStore = useSharedFeedStore(); const sharedFeedStore = useSharedFeedStore();
const feedTableData = shallowReactive([]); const feedTableData = shallowRef([]);
const feedTable = ref({ const feedTable = ref({
search: '', search: '',
vip: false, vip: false,
@@ -29,7 +29,7 @@ export const useFeedStore = defineStore('Feed', () => {
watch( watch(
() => watchState.isLoggedIn, () => watchState.isLoggedIn,
(isLoggedIn) => { (isLoggedIn) => {
feedTableData.length = 0; feedTableData.value = [];
if (isLoggedIn) { if (isLoggedIn) {
initFeedTable(); initFeedTable();
} }
@@ -149,8 +149,8 @@ export const useFeedStore = defineStore('Feed', () => {
feedTable.value.filter, feedTable.value.filter,
vipList vipList
); );
feedTableData.length = 0; feedTableData.value = [];
feedTableData.push(...rows.reverse()); feedTableData.value = [...feedTableData.value, ...rows.reverse()];
feedTable.value.loading = false; feedTable.value.loading = false;
} }
@@ -172,20 +172,21 @@ export const useFeedStore = defineStore('Feed', () => {
if (!feedSearch(feed)) { if (!feedSearch(feed)) {
return; return;
} }
feedTableData.unshift(feed); feedTableData.value = [feed, ...feedTableData.value];
sweepFeed(); sweepFeed();
} }
function sweepFeed() { function sweepFeed() {
const j = feedTableData.length; const j = feedTableData.value.length;
if (j > vrcxStore.maxTableSize + 50) { if (j > vrcxStore.maxTableSize + 50) {
feedTableData.splice(-50, 50); feedTableData.value = feedTableData.value.slice(0, -50);
} }
} }
async function initFeedTable() { async function initFeedTable() {
feedTable.value.loading = true; feedTable.value.loading = true;
feedTableLookup(); await feedTableLookup();
feedTable.value.loading = false;
} }
return { return {
@@ -179,7 +179,9 @@
const { table } = useVrcxVueTable({ const { table } = useVrcxVueTable({
persistKey: 'avatarImportDialog', persistKey: 'avatarImportDialog',
data: rows, get data() {
return rows.value;
},
columns: columns.value, columns: columns.value,
getRowId: (row) => String(row?.id ?? ''), getRowId: (row) => String(row?.id ?? ''),
enablePagination: false, enablePagination: false,
@@ -160,7 +160,9 @@
const { table } = useVrcxVueTable({ const { table } = useVrcxVueTable({
persistKey: 'friendImportDialog', persistKey: 'friendImportDialog',
data: rows, get data() {
return rows.value;
},
columns: columns.value, columns: columns.value,
getRowId: (row) => String(row?.id ?? ''), getRowId: (row) => String(row?.id ?? ''),
enablePagination: false, enablePagination: false,
@@ -185,7 +185,9 @@
const { table } = useVrcxVueTable({ const { table } = useVrcxVueTable({
persistKey: 'worldImportDialog', persistKey: 'worldImportDialog',
data: rows, get data() {
return rows.value;
},
columns: columns.value, columns: columns.value,
getRowId: (row) => String(row?.id ?? ''), getRowId: (row) => String(row?.id ?? ''),
enablePagination: false, enablePagination: false,
+3 -1
View File
@@ -90,8 +90,10 @@
); );
const { table, pagination } = useVrcxVueTable({ const { table, pagination } = useVrcxVueTable({
get data() {
return feedTableData.value;
},
persistKey: 'feed', persistKey: 'feed',
data: feedTableData,
columns: baseColumns, columns: baseColumns,
getRowId: (row) => `${row.type}:${row.rowId}:${row.created_at ?? ''}`, getRowId: (row) => `${row.type}:${row.rowId}:${row.created_at ?? ''}`,
enableExpanded: true, enableExpanded: true,
+3 -1
View File
@@ -191,7 +191,9 @@
const { table, sorting, pagination } = useVrcxVueTable({ const { table, sorting, pagination } = useVrcxVueTable({
persistKey: 'friendList', persistKey: 'friendList',
data: friendsListDisplayData, get data() {
return friendsListDisplayData.value;
},
columns: friendsListColumns.value, columns: friendsListColumns.value,
getRowId: (row) => row?.id ?? row?.displayName ?? '', getRowId: (row) => row?.id ?? row?.displayName ?? '',
enablePinning: true, enablePinning: true,
+3 -1
View File
@@ -174,7 +174,9 @@
const { table, pagination } = useVrcxVueTable({ const { table, pagination } = useVrcxVueTable({
persistKey: 'friendLog', persistKey: 'friendLog',
data: friendLogDisplayData, get data() {
return friendLogDisplayData.value;
},
columns, columns,
getRowId: (row) => `${row.type}:${row.rowId ?? row.userId ?? row.created_at ?? ''}`, getRowId: (row) => `${row.type}:${row.rowId ?? row.userId ?? row.created_at ?? ''}`,
initialSorting: [], initialSorting: [],
+3 -1
View File
@@ -133,7 +133,9 @@
const { table, pagination } = useVrcxVueTable({ const { table, pagination } = useVrcxVueTable({
persistKey: 'gameLog', persistKey: 'gameLog',
data: gameLogTableData, get data() {
return gameLogTableData.value;
},
columns, columns,
getRowId: (row, index) => `${row.type}:${row.rowId ?? index}`, getRowId: (row, index) => `${row.type}:${row.rowId ?? index}`,
initialSorting: [], initialSorting: [],
+3 -1
View File
@@ -160,7 +160,9 @@
const { table, pagination } = useVrcxVueTable({ const { table, pagination } = useVrcxVueTable({
persistKey: 'moderation', persistKey: 'moderation',
data: moderationDisplayData, get data() {
return moderationDisplayData.value;
},
columns, columns,
getRowId: (row) => row.id ?? `${row.type}:${row.sourceUserId}:${row.targetUserId}:${row.created ?? ''}`, getRowId: (row) => row.id ?? `${row.type}:${row.sourceUserId}:${row.targetUserId}:${row.created ?? ''}`,
initialSorting: [{ id: 'created', desc: true }], initialSorting: [{ id: 'created', desc: true }],
+3 -1
View File
@@ -231,7 +231,9 @@
const { table, pagination } = useVrcxVueTable({ const { table, pagination } = useVrcxVueTable({
persistKey: 'notifications', persistKey: 'notifications',
data: notificationDisplayData, get data() {
return notificationDisplayData.value;
},
columns, columns,
getRowId: (row) => row.id ?? `${row.type}:${row.senderUserId ?? ''}:${row.created_at ?? ''}`, getRowId: (row) => row.id ?? `${row.type}:${row.senderUserId ?? ''}:${row.created_at ?? ''}`,
initialSorting: [{ id: 'created_at', desc: true }], initialSorting: [{ id: 'created_at', desc: true }],
@@ -93,7 +93,9 @@
const { table: inviteRequestResponseTable } = useVrcxVueTable({ const { table: inviteRequestResponseTable } = useVrcxVueTable({
persistKey: 'invite-request-response-message', persistKey: 'invite-request-response-message',
data: inviteRequestResponseRows, get data() {
return inviteRequestResponseRows.value;
},
columns: inviteRequestResponseColumns, columns: inviteRequestResponseColumns,
getRowId: (row) => String(row?.slot ?? ''), getRowId: (row) => String(row?.slot ?? ''),
enablePagination: false, enablePagination: false,
@@ -92,7 +92,9 @@
const { table: inviteResponseTable } = useVrcxVueTable({ const { table: inviteResponseTable } = useVrcxVueTable({
persistKey: 'invite-response-message', persistKey: 'invite-response-message',
data: inviteResponseRows, get data() {
return inviteResponseRows.value;
},
columns: inviteResponseColumns, columns: inviteResponseColumns,
getRowId: (row) => String(row?.slot ?? ''), getRowId: (row) => String(row?.slot ?? ''),
enablePagination: false, enablePagination: false,
+3 -1
View File
@@ -267,7 +267,9 @@
const { table: playerListTable } = useVrcxVueTable({ const { table: playerListTable } = useVrcxVueTable({
persistKey: 'playerList', persistKey: 'playerList',
data: currentInstanceUsersData, get data() {
return currentInstanceUsersData.value;
},
columns: playerListColumns, columns: playerListColumns,
enablePagination: false, enablePagination: false,
getRowId: (row) => `${row?.ref?.id ?? ''}:${row?.displayName ?? ''}` getRowId: (row) => `${row?.ref?.id ?? ''}:${row?.displayName ?? ''}`
@@ -181,7 +181,9 @@
const { table: currentTable } = useVrcxVueTable({ const { table: currentTable } = useVrcxVueTable({
persistKey: 'photonEventTable:current', persistKey: 'photonEventTable:current',
data: currentRows, get data() {
return currentRows.value;
},
columns: currentColumns.value, columns: currentColumns.value,
getRowId: (row) => `${row?.photonId ?? ''}:${row?.created_at ?? ''}:${row?.type ?? ''}`, getRowId: (row) => `${row?.photonId ?? ''}:${row?.created_at ?? ''}:${row?.type ?? ''}`,
initialSorting: [{ id: 'created_at', desc: true }], initialSorting: [{ id: 'created_at', desc: true }],
@@ -190,7 +192,9 @@
const { table: previousTable } = useVrcxVueTable({ const { table: previousTable } = useVrcxVueTable({
persistKey: 'photonEventTable:previous', persistKey: 'photonEventTable:previous',
data: previousRows, get data() {
return previousRows.value;
},
columns: previousColumns.value, columns: previousColumns.value,
getRowId: (row) => `${row?.photonId ?? ''}:${row?.created_at ?? ''}:${row?.type ?? ''}`, getRowId: (row) => `${row?.photonId ?? ''}:${row?.created_at ?? ''}:${row?.type ?? ''}`,
initialSorting: [{ id: 'created_at', desc: true }], initialSorting: [{ id: 'created_at', desc: true }],
@@ -93,7 +93,9 @@
const { table } = useVrcxVueTable({ const { table } = useVrcxVueTable({
persistKey: 'registryBackupDialog', persistKey: 'registryBackupDialog',
data: rows, get data() {
return rows.value;
},
columns: columns.value, columns: columns.value,
getRowId: (row) => String(row?.name ?? ''), getRowId: (row) => String(row?.name ?? ''),
enablePagination: false, enablePagination: false,
@@ -119,7 +119,9 @@
const { table: inviteMessageTanstackTable } = useVrcxVueTable({ const { table: inviteMessageTanstackTable } = useVrcxVueTable({
persistKey: 'edit-invite-messages:message', persistKey: 'edit-invite-messages:message',
data: inviteMessageRows, get data() {
return inviteMessageRows.value;
},
columns: inviteMessageColumns, columns: inviteMessageColumns,
getRowId: (row) => String(row?.slot ?? ''), getRowId: (row) => String(row?.slot ?? ''),
enablePagination: false, enablePagination: false,
@@ -128,7 +130,9 @@
const { table: inviteRequestTanstackTable } = useVrcxVueTable({ const { table: inviteRequestTanstackTable } = useVrcxVueTable({
persistKey: 'edit-invite-messages:request', persistKey: 'edit-invite-messages:request',
data: inviteRequestRows, get data() {
return inviteRequestRows.value;
},
columns: inviteRequestColumns, columns: inviteRequestColumns,
getRowId: (row) => String(row?.slot ?? ''), getRowId: (row) => String(row?.slot ?? ''),
enablePagination: false, enablePagination: false,
@@ -137,7 +141,9 @@
const { table: inviteRequestResponseTanstackTable } = useVrcxVueTable({ const { table: inviteRequestResponseTanstackTable } = useVrcxVueTable({
persistKey: 'edit-invite-messages:request-response', persistKey: 'edit-invite-messages:request-response',
data: inviteRequestResponseRows, get data() {
return inviteRequestResponseRows.value;
},
columns: inviteRequestResponseColumns, columns: inviteRequestResponseColumns,
getRowId: (row) => String(row?.slot ?? ''), getRowId: (row) => String(row?.slot ?? ''),
enablePagination: false, enablePagination: false,
@@ -146,7 +152,9 @@
const { table: inviteResponseTanstackTable } = useVrcxVueTable({ const { table: inviteResponseTanstackTable } = useVrcxVueTable({
persistKey: 'edit-invite-messages:response', persistKey: 'edit-invite-messages:response',
data: inviteResponseRows, get data() {
return inviteResponseRows.value;
},
columns: inviteResponseColumns, columns: inviteResponseColumns,
getRowId: (row) => String(row?.slot ?? ''), getRowId: (row) => String(row?.slot ?? ''),
enablePagination: false, enablePagination: false,
+3 -1
View File
@@ -112,7 +112,9 @@
const { table } = useVrcxVueTable({ const { table } = useVrcxVueTable({
persistKey: 'noteExportDialog', persistKey: 'noteExportDialog',
data: rows, get data() {
return rows.value;
},
columns: columns.value, columns: columns.value,
getRowId: (row) => String(row?.id ?? ''), getRowId: (row) => String(row?.id ?? ''),
enablePagination: false, enablePagination: false,