feat: show stall list table

This commit is contained in:
Vlad Stan 2023-03-02 11:46:46 +02:00
parent c0dce31231
commit ac02337ad3
4 changed files with 114 additions and 71 deletions

View file

@ -141,7 +141,7 @@ async def get_stall(user_id: str, stall_id: str) -> Optional[Stall]:
async def get_stalls(user_id: str) -> List[Stall]: async def get_stalls(user_id: str) -> List[Stall]:
rows = await db.fetchone( rows = await db.fetchall(
"SELECT * FROM nostrmarket.stalls WHERE user_id = ?", "SELECT * FROM nostrmarket.stalls WHERE user_id = ?",
(user_id,), (user_id,),
) )

View file

@ -35,73 +35,65 @@
</q-btn> </q-btn>
</div> --> </div> -->
</div> </div>
<!--
<q-table
flat
dense
:data="stalls"
row-key="id"
:columns="relaysTable.columns"
:pagination.sync="relaysTable.pagination"
:filter="filter"
>
<template v-slot:body="props">
<q-tr :props="props">
<q-td auto-width>
<q-btn
size="sm"
color="accent"
round
dense
@click="props.row.expanded= !props.row.expanded"
:icon="props.row.expanded? 'remove' : 'add'"
/>
</q-td>
<q-td key="id" :props="props"> <q-table
<a style="color: unset" :href="props.row.id" target="_blank"> flat
{{props.row.id}}</a dense
> :data="stalls"
</q-td> row-key="id"
<q-td key="toggle" :props="props"> :columns="stallsTable.columns"
<q-toggle :pagination.sync="stallsTable.pagination"
size="sm" :filter="filter"
color="secodary" >
v-model="props.row.active" <template v-slot:body="props">
@input="showToggleRelayDialog(props.row)" <q-tr :props="props">
></q-toggle> <q-td auto-width>
</q-td> <q-btn
<q-td auto-width> {{props.row.name}} </q-td> size="sm"
<q-td key="description" :props="props"> color="accent"
{{props.row.description}} round
</q-td> dense
<q-td key="pubkey" :props="props"> @click="props.row.expanded= !props.row.expanded"
<div>{{props.row.pubkey}}</div> :icon="props.row.expanded? 'remove' : 'add'"
</q-td> />
<q-td key="contact" :props="props"> </q-td>
<div>{{props.row.contact}}</div>
</q-td> <q-td key="id" :props="props">
</q-tr> <a style="color: unset" :href="props.row.id" target="_blank">
<q-tr v-if="props.row.expanded" :props="props"> {{props.row.name}}</a
<q-td colspan="100%"> >
<div class="row items-center q-mb-lg"> </q-td>
<div class="col-12"> <!-- <q-td key="toggle" :props="props">
<relay-details <q-toggle
:relay-id="props.row.id" size="sm"
:adminkey="g.user.wallets[0].adminkey" color="secodary"
:inkey="g.user.wallets[0].inkey" v-model="props.row.active"
:wallet-options="g.user.walletOptions" @input="showToggleStallDialog(props.row)"
@relay-deleted="handleRelayDeleted" ></q-toggle>
@relay-updated="handleRelayUpdated" </q-td> -->
></relay-details>
</div> <q-td key="description" :props="props">
{{props.row.config.description}}
</q-td>
<q-td key="shippingZones" :props="props">
<div>
{{props.row.shipping_zones.filter(z => !!z.name).map(z =>
z.name).join(', ')}}
</div>
</q-td>
</q-tr>
<q-tr v-if="props.row.expanded" :props="props">
<q-td colspan="100%">
<div class="row items-center q-mb-lg">
<div class="col-12">
<!-- <stall-details></stall-details> -->
</div> </div>
</q-td> </div>
</q-tr> </q-td>
</template> </q-tr>
{% endraw %} </template>
</q-table> </q-table>
-->
<div> <div>
<q-dialog v-model="stallDialog.show" position="top"> <q-dialog v-model="stallDialog.show" position="top">
<q-card class="q-pa-lg q-pt-xl" style="width: 500px"> <q-card class="q-pa-lg q-pt-xl" style="width: 500px">

View file

@ -20,7 +20,44 @@ async function stallList(path) {
shippingZones: [] shippingZones: []
} }
}, },
zoneOptions: [] zoneOptions: [],
stallsTable: {
columns: [
{
name: '',
align: 'left',
label: '',
field: ''
},
{
name: 'id',
align: 'left',
label: 'Name',
field: 'id'
},
// {
// name: 'toggle',
// align: 'left',
// label: 'Active',
// field: ''
// },
{
name: 'description',
align: 'left',
label: 'Description',
field: 'description'
},
{
name: 'shippingZones',
align: 'left',
label: 'Shipping Zones',
field: 'shippingZones'
}
],
pagination: {
rowsPerPage: 10
}
}
} }
}, },
computed: { computed: {
@ -72,6 +109,19 @@ async function stallList(path) {
LNbits.utils.notifyApiError(error) LNbits.utils.notifyApiError(error)
} }
}, },
getStalls: async function () {
try {
const {data} = await LNbits.api.request(
'GET',
'/nostrmarket/api/v1/stall',
this.inkey
)
console.log('### stalls', data)
this.stalls = data.map(s => ({...s, expanded: false}))
} catch (error) {
LNbits.utils.notifyApiError(error)
}
},
getZones: async function () { getZones: async function () {
try { try {
const {data} = await LNbits.api.request( const {data} = await LNbits.api.request(
@ -105,6 +155,7 @@ async function stallList(path) {
} }
}, },
created: async function () { created: async function () {
await this.getStalls()
await this.getCurrencies() await this.getCurrencies()
await this.getZones() await this.getZones()
} }

View file

@ -193,7 +193,7 @@ async def api_update_stall(
event.sig = merchant.sign_hash(bytes.fromhex(event.id)) event.sig = merchant.sign_hash(bytes.fromhex(event.id))
data.config.event_id = event.id data.config.event_id = event.id
# data.config.created_at = # data.config.event_created_at =
stall = await update_stall(wallet.wallet.user, data) stall = await update_stall(wallet.wallet.user, data)
assert stall, "Cannot update stall" assert stall, "Cannot update stall"
@ -206,7 +206,7 @@ async def api_update_stall(
logger.warning(ex) logger.warning(ex)
raise HTTPException( raise HTTPException(
status_code=HTTPStatus.INTERNAL_SERVER_ERROR, status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
detail="Cannot create stall", detail="Cannot update stall",
) )
@ -226,7 +226,7 @@ async def api_get_stall(stall_id: str, wallet: WalletTypeInfo = Depends(get_key_
logger.warning(ex) logger.warning(ex)
raise HTTPException( raise HTTPException(
status_code=HTTPStatus.INTERNAL_SERVER_ERROR, status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
detail="Cannot create stall", detail="Cannot get stall",
) )
@ -239,7 +239,7 @@ async def api_get_stalls(wallet: WalletTypeInfo = Depends(get_key_type)):
logger.warning(ex) logger.warning(ex)
raise HTTPException( raise HTTPException(
status_code=HTTPStatus.INTERNAL_SERVER_ERROR, status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
detail="Cannot create stall", detail="Cannot get stalls",
) )