support hiding and unhiding explorers

This commit is contained in:
MaysWind
2026-01-07 23:39:07 +08:00
parent ab88b0bf44
commit 1c596c4a15
20 changed files with 102 additions and 13 deletions
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Dodaj poizvedbo",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "Save Explorer",
"Save As New Explorer": "Save As New Explorer",
"Rename Explorer": "Rename Explorer",
"Hide Explorer": "Hide Explorer",
"Unhide Explorer": "Unhide Explorer",
"Delete Explorer": "Delete Explorer",
"Explorer Name": "Explorer Name",
"Add Query": "Add Query",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "保存探索",
"Save As New Explorer": "另存为新的探索",
"Rename Explorer": "重命名探索",
"Hide Explorer": "隐藏探索",
"Unhide Explorer": "取消隐藏探索",
"Delete Explorer": "删除探索",
"Explorer Name": "探索名称",
"Add Query": "添加查询",
+2
View File
@@ -1718,6 +1718,8 @@
"Save Explorer": "儲存探索",
"Save As New Explorer": "另存新探索",
"Rename Explorer": "重新命名探索",
"Hide Explorer": "隱藏探索",
"Unhide Explorer": "取消隱藏探索",
"Delete Explorer": "刪除探索",
"Explorer Name": "探索名稱",
"Add Query": "新增查詢",
+1
View File
@@ -1099,6 +1099,7 @@ export const useExplorersStore = defineStore('explorers', () => {
return;
}
explorer.hidden = hidden;
updateExplorerVisibilityInInsightsExplorerList({ explorer: explorer, hidden });
resolve(data.result);
+65 -13
View File
@@ -80,17 +80,9 @@
<v-progress-circular indeterminate size="22" class="ms-2" v-if="updating"></v-progress-circular>
<v-menu activator="parent" :open-on-hover="true">
<v-list>
<v-list-item :prepend-icon="mdiContentSaveOutline" @click="saveExplorer(true)">
<v-list-item @click="saveExplorer(true)">
<v-list-item-title>{{ tt('Save As New Explorer') }}</v-list-item-title>
</v-list-item>
<v-divider class="my-2" v-if="currentExplorer.id" />
<v-list-item :prepend-icon="mdiPencilOutline" @click="setExplorerName" v-if="currentExplorer.id">
<v-list-item-title>{{ tt('Rename Explorer') }}</v-list-item-title>
</v-list-item>
<v-divider class="my-2" v-if="currentExplorer.id" />
<v-list-item :prepend-icon="mdiDeleteOutline" @click="removeExplorer" v-if="currentExplorer.id">
<v-list-item-title>{{ tt('Delete Explorer') }}</v-list-item-title>
</v-list-item>
</v-list>
</v-menu>
</v-btn>
@@ -114,6 +106,19 @@
:disabled="loading || updating || !filteredTransactions || filteredTransactions.length < 1"
@click="exportResults"
v-if="activeTab === 'table' || activeTab === 'chart'"></v-list-item>
<v-divider class="my-2" v-if="currentExplorer.id" />
<v-list-item :prepend-icon="mdiPencilOutline" @click="setExplorerName" v-if="currentExplorer.id">
<v-list-item-title>{{ tt('Rename Explorer') }}</v-list-item-title>
</v-list-item>
<v-list-item :prepend-icon="mdiEyeOffOutline" @click="hideExplorer(true)" v-if="currentExplorer.id && !currentExplorer.hidden">
<v-list-item-title>{{ tt('Hide Explorer') }}</v-list-item-title>
</v-list-item>
<v-list-item :prepend-icon="mdiEyeOutline" @click="hideExplorer(false)" v-if="currentExplorer.id && currentExplorer.hidden">
<v-list-item-title>{{ tt('Unhide Explorer') }}</v-list-item-title>
</v-list-item>
<v-list-item :prepend-icon="mdiDeleteOutline" @click="removeExplorer" v-if="currentExplorer.id">
<v-list-item-title>{{ tt('Delete Explorer') }}</v-list-item-title>
</v-list-item>
</v-list>
</v-menu>
</v-btn>
@@ -131,7 +136,7 @@
</v-window-item>
<v-window-item value="chart">
<explorer-chart-tab ref="explorerChartTab"
:loading="loading" :disabled="loading || updating" />
:loading="loading" :disabled="loading || updating" />
</v-window-item>
</v-window>
</v-card>
@@ -184,7 +189,7 @@ import { type WeekDayValue, type LocalizedDateRange, DateRangeScene, DateRange }
import { TimezoneTypeForStatistics } from '@/core/timezone.ts';
import { type TransactionInsightDataItem, Transaction } from '@/models/transaction.ts';
import { type InsightsExplorerBasicInfo, InsightsExplorer } from '@/models/explorer.ts';
import { InsightsExplorerBasicInfo, InsightsExplorer } from '@/models/explorer.ts';
import {
parseDateTimeFromUnixTime,
@@ -202,8 +207,9 @@ import {
mdiCheck,
mdiRefresh,
mdiDotsVertical,
mdiContentSaveOutline,
mdiPencilOutline,
mdiEyeOutline,
mdiEyeOffOutline,
mdiDeleteOutline,
mdiHomeClockOutline,
mdiInvoiceTextClockOutline,
@@ -272,7 +278,35 @@ const showCustomDateRangeDialog = ref<boolean>(false);
const firstDayOfWeek = computed<WeekDayValue>(() => userStore.currentUserFirstDayOfWeek);
const fiscalYearStart = computed<number>(() => userStore.currentUserFiscalYearStart);
const allExplorers = computed<InsightsExplorerBasicInfo[]>(() => explorersStore.allInsightsExplorerBasicInfos.slice(0, 15));
const allExplorers = computed<InsightsExplorerBasicInfo[]>(() => {
const maximumExplorersToShow = 14;
const ret: InsightsExplorerBasicInfo[] = [];
let hasCurrentExplorer = false;
for (const explorer of explorersStore.allInsightsExplorerBasicInfos) {
if (ret.length >= maximumExplorersToShow) {
break;
}
if (!explorer.hidden || (explorer.id && explorer.id === currentExplorer.value.id)) {
ret.push(explorer);
if (explorer.id && explorer.id === currentExplorer.value.id) {
hasCurrentExplorer = true;
}
}
}
if (!hasCurrentExplorer && currentExplorer.value && currentExplorer.value.id) {
if (ret.length >= maximumExplorersToShow) {
ret.pop();
}
ret.push(InsightsExplorerBasicInfo.of(currentExplorer.value));
}
return ret;
});
const currentFilter = computed<TransactionExplorerFilter>(() => explorersStore.transactionExplorerFilter);
const currentExplorer = computed<InsightsExplorer>(() => explorersStore.currentInsightsExplorer);
const filteredTransactions = computed<TransactionInsightDataItem[]>(() => explorersStore.filteredTransactions);
@@ -463,6 +497,24 @@ function setExplorerName(): void {
});
}
function hideExplorer(hidden: boolean): void {
updating.value = true;
explorersStore.hideInsightsExplorer({
explorer: currentExplorer.value,
hidden: hidden
}).then(() => {
updating.value = false;
currentExplorer.value.hidden = hidden;
}).catch(error => {
updating.value = false;
if (!error.processed) {
snackbar.value?.showError(error);
}
});
}
function removeExplorer(): void {
if (!currentExplorer.value.id) {
return;