Skip to content

Commit 35c844e

Browse files
committed
Show Status filter
1 parent 6814c45 commit 35c844e

4 files changed

Lines changed: 44 additions & 3 deletions

File tree

backend/app.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,25 @@ def coins(f):
5656
return data
5757

5858

59+
@app.get("/api/filters")
60+
def filters(f):
61+
file = f
62+
con = sqlite_connect(file)
63+
cur = con.cursor()
64+
65+
res = cur.execute("""
66+
SELECT DISTINCT status FROM coins
67+
""")
68+
data = res.fetchall()
69+
con.close()
70+
71+
result = []
72+
for record in data:
73+
result.append(record[0])
74+
75+
return result
76+
77+
5978
@app.get("/api/coin_data")
6079
def coin_data(f, id):
6180
info_fields = ('coins.title', 'obverseimg.image', 'reverseimg.image',

frontend/src/App.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ const isServerLess = import.meta.env.VITE_SERVERLESS;
2929
const selectedFile = ref(null)
3030
const serverFileList = ref([])
3131
const coinsList = ref([])
32+
const statusesList = ref([])
3233
const collectionSettings = ref({})
3334
let isOpened = false;
3435
@@ -78,6 +79,7 @@ const handleRemoteFileSelected = async (file) => {
7879
const ret = await service.openRemoteFile(file);
7980
coinsList.value = ret.coinsList;
8081
collectionSettings.value = ret.collectionSettings;
82+
statusesList.value = ret.statusesList;
8183
8284
coinListViewRef.value.onOpenFile()
8385
}
@@ -95,6 +97,7 @@ const handleFileUpload = async (file) => {
9597
const ret = await service.openLocalFile(file);
9698
coinsList.value = ret.coinsList;
9799
collectionSettings.value = ret.collectionSettings;
100+
statusesList.value = ret.statusesList;
98101
99102
coinListViewRef.value.onOpenFile()
100103
}
@@ -147,7 +150,7 @@ const handleFileUpload = async (file) => {
147150
:file_list="serverFileList" :onFileSelected="handleRemoteFileSelected" />
148151
<KeepAlive>
149152
<CoinListView v-if="route.name === 'home' && isOpened"
150-
:coins_list="coinsList" :settings="collectionSettings"
153+
:coins_list="coinsList" :settings="collectionSettings" :statuses_list="statusesList"
151154
ref="coinListViewRef" />
152155
</KeepAlive>
153156
<CoinView v-if="route.name === 'coin' && isOpened"

frontend/src/components/CoinListView.vue

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ const props = defineProps({
2121
type: Object,
2222
required: true,
2323
},
24+
statuses_list: {
25+
type: Array,
26+
required: true,
27+
},
2428
});
2529
2630
onMounted(async () => {
@@ -61,6 +65,13 @@ const loadImage = async (index, coinId) => {
6165
</script>
6266

6367
<template>
68+
<v-container>
69+
<v-select v-if="statuses_list.length > 0"
70+
:label="settings.fields['status']"
71+
:items="statuses_list"
72+
:item-title="item => settings.statuses[item]"
73+
></v-select>
74+
</v-container>
6475
<v-container class="pa-0 ma-0">
6576
<v-list lines="two">
6677
<v-list-item

frontend/src/composables/useService.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ export function useService(passwordDialogRef) {
138138

139139
let coinsList = [];
140140
let collectionSettings = await initSettings();
141+
let statusesList = [];
141142
let settingsDb = {};
142143

143144
await globalStatus.startLoading('Open collection');
@@ -172,6 +173,9 @@ export function useService(passwordDialogRef) {
172173
try {
173174
const responseCoins = await api.get('/api/coins', {params: {f: file}})
174175
coinsList = responseCoins.data
176+
177+
const responseFilters = await api.get('/api/filters', {params: {f: file}})
178+
statusesList = responseFilters.data
175179
}
176180
catch (err) {
177181
globalStatus.error.value = err
@@ -182,13 +186,14 @@ export function useService(passwordDialogRef) {
182186
}
183187
}
184188

185-
return {collectionSettings, coinsList};
189+
return {collectionSettings, coinsList, statusesList};
186190
}
187191

188192
const openLocalFile = async (file) => {
189193
connection_type = 'local';
190194

191195
let coinsList = [];
196+
let statusesList = [];
192197
let collectionSettings = await initSettings()
193198

194199
await openDatabase(file)
@@ -232,10 +237,13 @@ export function useService(passwordDialogRef) {
232237
FROM coins LEFT OUTER JOIN images ON images.id = coins.image
233238
`
234239
coinsList = await executeQuery(sql)
240+
241+
const sql_statuses = 'SELECT DISTINCT status FROM coins';
242+
statusesList = (await executeQuery(sql_statuses))[0]
235243
}
236244
}
237245

238-
return {collectionSettings, coinsList};
246+
return {collectionSettings, coinsList, statusesList};
239247
}
240248

241249
const loadImage = async (coinId, type) => {

0 commit comments

Comments
 (0)