feat: show stall list table
This commit is contained in:
parent
c0dce31231
commit
ac02337ad3
4 changed files with 114 additions and 71 deletions
2
crud.py
2
crud.py
|
|
@ -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,),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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">
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue