WIP: Vendors frontend

This commit is contained in:
2023-06-13 21:56:12 +04:00
parent 144ceae425
commit 42c5b438c3
4 changed files with 129 additions and 3 deletions

89
frontend/app/vendors/[slug]/page.js vendored Normal file
View File

@@ -0,0 +1,89 @@
import { notFound } from 'next/navigation'
import directus from '~/lib/directus'
async function getVendor(slug) {
return directus.items('vendors').readByQuery({
fields: [
//
'*',
'categories.categories_id.slug',
'categories.categories_id.name',
'categories.categories_id.parent_id',
'categories.categories_id.subcategories.slug',
'categories.categories_id.subcategories.name',
],
limit: 1,
filter: { slug: { _eq: slug } },
})
}
export default async function VendorPage({ params }) {
const {
data: [vendor],
} = await getVendor(params.slug)
if (!vendor) {
notFound()
}
return (
<div>
<h1>{vendor.name}</h1>
<p>{vendor.description}</p>
<h2>Address</h2>
<p>
{vendor.address_line_1 && (
<>
{vendor.address_line_1}
<br />
</>
)}
{vendor.address_line_2 && (
<>
{vendor.address_line_2}
<br />
</>
)}
{vendor.city && (
<>
{vendor.city}
<br />
</>
)}
{vendor.state && (
<>
{vendor.state}
<br />
</>
)}
{vendor.country && (
<>
{vendor.country}
<br />
</>
)}
</p>
{vendor.website && (
<>
<h2>Website</h2>
<a href={vendor.website} target="_blank">
{vendor.website}
</a>
</>
)}
{vendor.categories.length > 0 && (
<>
<h2>Categories</h2>
<ul>
{vendor.categories.map((cat) => (
<li>{cat.categories_id.name}</li>
))}
</ul>
</>
)}
</div>
)
}

34
frontend/app/vendors/page.js vendored Normal file
View File

@@ -0,0 +1,34 @@
import Link from 'next/link'
import { notFound } from 'next/navigation'
import directus from '~/lib/directus'
const PER_PAGE = 50
async function getVendors(page = 1) {
return directus.items('vendors').readByQuery({
fields: [
//
'*',
],
limit: PER_PAGE,
page,
meta: ['filter_count'],
})
}
export default async function VendorsPage({ params }) {
const { data: vendors, meta } = await getVendors()
return (
<div>
<h1>Vendors ({meta.filter_count} total)</h1>
<ul>
{vendors.map((v) => (
<li>
<Link href={`/vendors/${v.slug}`}>{v.name}</Link>
</li>
))}
</ul>
</div>
)
}