@@ -0,0 +1,183 @@ | |||
import apollo from "../../lib/apollo.js"; | |||
async function GetHelmetRConcepts(filter, token="") { | |||
var res = await apollo.query( | |||
` | |||
query { | |||
helmets(where: { category: "RCONCEPTS" ${(filter!="")?`name: "${filter}"`:""}}) { | |||
id | |||
name | |||
price | |||
img { | |||
url | |||
} | |||
} | |||
}`, | |||
token | |||
); | |||
return res; | |||
} | |||
async function GetHelmetMTX(filter, token="") { | |||
var res = await apollo.query( | |||
` | |||
query { | |||
helmets(where: { category: "MTX" ${(filter!="")?`name: "${filter}"`:""}}) { | |||
id | |||
name | |||
price | |||
img { | |||
url | |||
} | |||
} | |||
}`, | |||
token | |||
); | |||
return res; | |||
} | |||
async function GetHelmetExtreme(filter, token="") { | |||
var res = await apollo.query( | |||
` | |||
query { | |||
helmets(where: { category: "EXTREME" ${(filter!="")?`name: "${filter}"`:""}}) { | |||
id | |||
name | |||
price | |||
img { | |||
url | |||
} | |||
} | |||
}`, | |||
token | |||
); | |||
return res; | |||
} | |||
async function GetHelmetRanger(filter, token="") { | |||
var res = await apollo.query( | |||
` | |||
query { | |||
helmets(where: { category: "RANGER" ${(filter!="")?`name: "${filter}"`:""}}) { | |||
id | |||
name | |||
price | |||
img { | |||
url | |||
} | |||
} | |||
}`, | |||
token | |||
); | |||
return res; | |||
} | |||
async function GetHelmetFighter(filter, token="") { | |||
var res = await apollo.query( | |||
` | |||
query { | |||
helmets(where: { category: "FIGHTER" ${(filter!="")?`name: "${filter}"`:""}}) { | |||
id | |||
name | |||
price | |||
img { | |||
url | |||
} | |||
} | |||
}`, | |||
token | |||
); | |||
return res; | |||
} | |||
async function GetHelmetSwirl(filter, token="") { | |||
var res = await apollo.query( | |||
` | |||
query { | |||
helmets(where: { category: "SWIRL" ${(filter!="")?`name: "${filter}"`:""}}) { | |||
id | |||
name | |||
price | |||
img { | |||
url | |||
} | |||
} | |||
}`, | |||
token | |||
); | |||
return res; | |||
} | |||
async function GetHelmetClassic(filter, token="") { | |||
var res = await apollo.query( | |||
` | |||
query { | |||
helmets(where: { category: "CLS" ${(filter!="")?`name: "${filter}"`:""}}) { | |||
id | |||
name | |||
price | |||
img { | |||
url | |||
} | |||
} | |||
}`, | |||
token | |||
); | |||
return res; | |||
} | |||
async function GetHelmetUno(filter, token="") { | |||
var res = await apollo.query( | |||
` | |||
query { | |||
helmets(where: { category: "UNO" ${(filter!="")?`name: "${filter}"`:""}}) { | |||
id | |||
name | |||
price | |||
img { | |||
url | |||
} | |||
} | |||
}`, | |||
token | |||
); | |||
return res; | |||
} | |||
async function GetDetailHelmet(id, token="") { | |||
var res = await apollo.query( | |||
` | |||
query($input: ID!){ | |||
helmets(where:{id:$input}) | |||
{ | |||
id | |||
name | |||
description | |||
price | |||
part_code | |||
img { | |||
url | |||
} | |||
stock | |||
} | |||
} `, | |||
token, | |||
{ | |||
"input": id | |||
} | |||
); | |||
return res; | |||
} | |||
module.exports = { | |||
GetHelmetRConcepts:GetHelmetRConcepts, | |||
GetHelmetMTX:GetHelmetMTX, | |||
GetHelmetExtreme:GetHelmetExtreme, | |||
GetHelmetRanger:GetHelmetRanger, | |||
GetHelmetFighter:GetHelmetFighter, | |||
GetHelmetSwirl:GetHelmetSwirl, | |||
GetHelmetClassic:GetHelmetClassic, | |||
GetHelmetUno:GetHelmetUno, | |||
GetDetailHelmet:GetDetailHelmet, | |||
}; |
@@ -9,10 +9,12 @@ import styles from "assets/jss/nextjs-material-kit/pages/componentsSections/noti | |||
import Card from "components/Card/Card.js"; | |||
import CardBody from "components/Card/CardBody.js"; | |||
import GridContainer from "components/Grid/GridContainer.js"; | |||
import SnackbarContent from "components/Snackbar/SnackbarContent.js"; | |||
import { MoveToInboxOutlined } from "@material-ui/icons"; | |||
const useStyles = makeStyles(styles); | |||
const DataHelmet = function ({ selected, handleName, backend, helmet, ...props }) { | |||
const DataHelmet = function ({ selected, handleName, backend, helmet, mtx, extreme, ranger, fighter, swirl, classic, uno, ...props }) { | |||
const classes = useStyles(); | |||
const { ...rest } = props; | |||
const imageClasses = classNames( | |||
@@ -21,7 +23,7 @@ const DataHelmet = function ({ selected, handleName, backend, helmet, ...props } | |||
classes.imgFluid | |||
); | |||
const navImageClasses = classNames(classes.imgRounded, classes.imgGallery); | |||
const ProductHelmet = helmet.map((data) => { | |||
const ProductHelmetRConcepts = helmet.map((data) => { | |||
return ( | |||
<div style={{padding:"40px"}}> | |||
<img | |||
@@ -31,7 +33,161 @@ const DataHelmet = function ({ selected, handleName, backend, helmet, ...props } | |||
className={navImageClasses} | |||
/> | |||
<div align="center"> | |||
<h3>{data.name}</h3> | |||
<h4>{data.name}</h4> | |||
<h4>Rp.{data.price}</h4> | |||
<Button | |||
color="info" round | |||
href={"/product/helmet_details?s="+data.id} | |||
> | |||
<Icon className={classes.icons}>open_in_new</Icon>Detail Product | |||
</Button> | |||
</div> | |||
</div> | |||
); | |||
}) | |||
const ProductHelmetMTX = mtx.map((data) => { | |||
return ( | |||
<div style={{padding:"40px"}}> | |||
<img | |||
alt="..." | |||
style={{ height: "150px", display: "block" }} | |||
src={`${backend}${data.img["url"]}`} | |||
className={navImageClasses} | |||
/> | |||
<div align="center"> | |||
<h4>{data.name}</h4> | |||
<h4>Rp.{data.price}</h4> | |||
<Button | |||
color="info" round | |||
href={"/product/helmet_details?s="+data.id} | |||
> | |||
<Icon className={classes.icons}>open_in_new</Icon>Detail Product | |||
</Button> | |||
</div> | |||
</div> | |||
); | |||
}) | |||
const ProductHelmetExtreme = extreme.map((data) => { | |||
return ( | |||
<div style={{padding:"40px"}}> | |||
<img | |||
alt="..." | |||
style={{ height: "150px", display: "block" }} | |||
src={`${backend}${data.img["url"]}`} | |||
className={navImageClasses} | |||
/> | |||
<div align="center"> | |||
<h4>{data.name}</h4> | |||
<h4>Rp.{data.price}</h4> | |||
<Button | |||
color="info" round | |||
href={"/product/helmet_details?s="+data.id} | |||
> | |||
<Icon className={classes.icons}>open_in_new</Icon>Detail Product | |||
</Button> | |||
</div> | |||
</div> | |||
); | |||
}) | |||
const ProductHelmetRanger = ranger.map((data) => { | |||
return ( | |||
<div style={{padding:"40px"}}> | |||
<img | |||
alt="..." | |||
style={{ height: "150px", display: "block" }} | |||
src={`${backend}${data.img["url"]}`} | |||
className={navImageClasses} | |||
/> | |||
<div align="center"> | |||
<h4>{data.name}</h4> | |||
<h4>Rp.{data.price}</h4> | |||
<Button | |||
color="info" round | |||
href={"/product/helmet_details?s="+data.id} | |||
> | |||
<Icon className={classes.icons}>open_in_new</Icon>Detail Product | |||
</Button> | |||
</div> | |||
</div> | |||
); | |||
}) | |||
const ProductHelmetFighter = fighter.map((data) => { | |||
return ( | |||
<div style={{padding:"40px"}}> | |||
<img | |||
alt="..." | |||
style={{ height: "150px", display: "block" }} | |||
src={`${backend}${data.img["url"]}`} | |||
className={navImageClasses} | |||
/> | |||
<div align="center"> | |||
<h4>{data.name}</h4> | |||
<h4>Rp.{data.price}</h4> | |||
<Button | |||
color="info" round | |||
href={"/product/helmet_details?s="+data.id} | |||
> | |||
<Icon className={classes.icons}>open_in_new</Icon>Detail Product | |||
</Button> | |||
</div> | |||
</div> | |||
); | |||
}) | |||
const ProductHelmetSwirl = swirl.map((data) => { | |||
return ( | |||
<div style={{padding:"40px"}}> | |||
<img | |||
alt="..." | |||
style={{ height: "150px", display: "block" }} | |||
src={`${backend}${data.img["url"]}`} | |||
className={navImageClasses} | |||
/> | |||
<div align="center"> | |||
<h4>{data.name}</h4> | |||
<h4>Rp.{data.price}</h4> | |||
<Button | |||
color="info" round | |||
href={"/product/helmet_details?s="+data.id} | |||
> | |||
<Icon className={classes.icons}>open_in_new</Icon>Detail Product | |||
</Button> | |||
</div> | |||
</div> | |||
); | |||
}) | |||
const ProductHelmetClassic = classic.map((data) => { | |||
return ( | |||
<div style={{padding:"40px"}}> | |||
<img | |||
alt="..." | |||
style={{ height: "150px", display: "block" }} | |||
src={`${backend}${data.img["url"]}`} | |||
className={navImageClasses} | |||
/> | |||
<div align="center"> | |||
<h4>{data.name}</h4> | |||
<h4>Rp.{data.price}</h4> | |||
<Button | |||
color="info" round | |||
href={"/product/helmet_details?s="+data.id} | |||
> | |||
<Icon className={classes.icons}>open_in_new</Icon>Detail Product | |||
</Button> | |||
</div> | |||
</div> | |||
); | |||
}) | |||
const ProductHelmetUno = uno.map((data) => { | |||
return ( | |||
<div style={{padding:"40px"}}> | |||
<img | |||
alt="..." | |||
style={{ height: "150px", display: "block" }} | |||
src={`${backend}${data.img["url"]}`} | |||
className={navImageClasses} | |||
/> | |||
<div align="center"> | |||
<h4>{data.name}</h4> | |||
<h4>Rp.{data.price}</h4> | |||
<Button | |||
color="info" round | |||
@@ -45,7 +201,7 @@ const DataHelmet = function ({ selected, handleName, backend, helmet, ...props } | |||
}) | |||
return ( | |||
<div> | |||
<Card className={classes.textCenter} align="center" style={{padding:"5px"}}> | |||
<Card className={classes.textCenter} style={{padding:"5px"}}> | |||
<CardBody> | |||
<div align="center" style={{marginTop:"-50px"}}> | |||
<h2>Yamaha Helmet</h2> | |||
@@ -56,14 +212,123 @@ const DataHelmet = function ({ selected, handleName, backend, helmet, ...props } | |||
options={helmet} | |||
isMulti | |||
instanceId="name" | |||
placeholder="filter by Nama Part" | |||
placeholder="Search" | |||
onChange={values => handleName(values)} | |||
/> | |||
<br></br> | |||
<br></br><br></br><br></br> | |||
</div> | |||
<div align="center" style={{marginTop:"-50px"}}> | |||
<div align="center" className={classes.section} id="notifications"> | |||
<SnackbarContent | |||
message={ | |||
<h4>R CONCEPT</h4> | |||
} | |||
align="center" | |||
color="danger" | |||
/> | |||
</div> | |||
<GridContainer justify="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
{ProductHelmetRConcepts} | |||
</GridContainer> | |||
</div><br></br><br></br> | |||
<div align="center" style={{marginTop:"-50px"}}> | |||
<div align="center" className={classes.section} id="notifications"> | |||
<SnackbarContent | |||
message={ | |||
<h4>MTX</h4> | |||
} | |||
align="center" | |||
color="danger" | |||
/> | |||
</div> | |||
<GridContainer justify="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
{ProductHelmetMTX} | |||
</GridContainer> | |||
</div><br></br><br></br> | |||
<div align="center" style={{marginTop:"-50px"}}> | |||
<div align="center" className={classes.section} id="notifications"> | |||
<SnackbarContent | |||
message={ | |||
<h4>EXTREME</h4> | |||
} | |||
align="center" | |||
color="danger" | |||
/> | |||
</div> | |||
<GridContainer justify="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
{ProductHelmetExtreme} | |||
</GridContainer> | |||
</div><br></br><br></br> | |||
<div align="center" style={{marginTop:"-50px"}}> | |||
<div align="center" className={classes.section} id="notifications"> | |||
<SnackbarContent | |||
message={ | |||
<h4>RANGER</h4> | |||
} | |||
align="center" | |||
color="danger" | |||
/> | |||
</div> | |||
<GridContainer justify="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
{ProductHelmetRanger} | |||
</GridContainer> | |||
</div><br></br><br></br> | |||
<div align="center" style={{marginTop:"-50px"}}> | |||
<div align="center" className={classes.section} id="notifications"> | |||
<SnackbarContent | |||
message={ | |||
<h4>FIGHTER</h4> | |||
} | |||
align="center" | |||
color="danger" | |||
/> | |||
</div> | |||
<GridContainer justify="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
{ProductHelmetFighter} | |||
</GridContainer> | |||
</div><br></br><br></br> | |||
<div align="center" style={{marginTop:"-50px"}}> | |||
<div align="center" className={classes.section} id="notifications"> | |||
<SnackbarContent | |||
message={ | |||
<h4>SWIRL</h4> | |||
} | |||
align="center" | |||
color="danger" | |||
/> | |||
</div> | |||
<GridContainer justify="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
{ProductHelmetSwirl} | |||
</GridContainer> | |||
</div><br></br><br></br> | |||
<div align="center" style={{marginTop:"-50px"}}> | |||
<div align="center" className={classes.section} id="notifications"> | |||
<SnackbarContent | |||
message={ | |||
<h4>CLASSIC</h4> | |||
} | |||
align="center" | |||
color="danger" | |||
/> | |||
</div> | |||
<GridContainer justify="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
{ProductHelmetClassic} | |||
</GridContainer> | |||
</div><br></br><br></br> | |||
<div align="center" style={{marginTop:"-50px"}}> | |||
<div align="center" className={classes.section} id="notifications"> | |||
<SnackbarContent | |||
message={ | |||
<h4>UNO</h4> | |||
} | |||
align="center" | |||
color="danger" | |||
/> | |||
</div> | |||
<GridContainer justify="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
{ProductHelmet}{ProductHelmet}{ProductHelmet} | |||
{ProductHelmetUno} | |||
</GridContainer> | |||
</div> | |||
</div><br></br><br></br> | |||
</CardBody> | |||
</Card> | |||
</div> | |||
@@ -64,7 +64,7 @@ const DetailDataHelmet = function ({ backend, detailhelmet, ...props }) { | |||
<hr></hr> | |||
<ul> | |||
<li><h4>Stock : {data.stock}</h4></li> | |||
<li><h4>Part Code : {data.part_code}</h4></li> | |||
<li><h4>Part Code : {ReactHtmlParser(data.part_code)}</h4></li> | |||
</ul> | |||
</Grid> | |||
</GridContainer> | |||
@@ -32,7 +32,7 @@ const DataYamalube = function ({ selected, handleName, backend, yamalube, ...pro | |||
className={navImageClasses} | |||
/> | |||
<div align="center"> | |||
<h3>{data.name}</h3> | |||
<h4>{data.name}</h4> | |||
<h4>Rp.{data.price}</h4> | |||
<Button | |||
color="info" round | |||
@@ -31,7 +31,7 @@ const DataYGP = function ({ selected,handleName, backend, ygp, ...props }) { | |||
src={`${backend}${data.img["url"]}`} | |||
className={navImageClasses} | |||
/> | |||
<h3>{data.name}</h3> | |||
<h4>{data.name}</h4> | |||
<h4>Rp.{data.price}</h4> | |||
<Button color="info" round href={"/product/ygp_details?s="+data.id}> | |||
<Icon className={classes.icons}>open_in_new</Icon>Detail Product | |||
@@ -9,7 +9,7 @@ import Footer from "components/Footer/Footer.js"; | |||
import Parallax from "components/Parallax/Parallax.js"; | |||
import styles from "assets/jss/nextjs-material-kit/pages/components.js"; | |||
import GetDataHelmet from "../../api/product/accessories.js"; | |||
import GetDataHelmet from "../../api/product/helmet.js" | |||
import DataHelmet from "../../pages-sections/product/helmet.js"; | |||
import DataSnackbarContent from "../../pages-sections/snackbar.js"; | |||
import Router from 'next/router' | |||
@@ -22,7 +22,7 @@ const handleName = values => { | |||
query: (values&&values.length!=0)?{ filter: values[0]["name"] }:{}, | |||
}) | |||
} | |||
const Helmet = function ({ selected, helmet, backend, ...props }) { | |||
const Helmet = function ({ selected, helmet, mtx, extreme, ranger, backend, fighter, swirl, classic, uno, ...props }) { | |||
const classes = useStyles(); | |||
const { ...rest } = props; | |||
return ( | |||
@@ -41,7 +41,7 @@ const Helmet = function ({ selected, helmet, backend, ...props }) { | |||
<div className={classNames(classes.main, classes.mainRaised)}> | |||
<QueryClientProvider client={queryClient}> | |||
<DataSnackbarContent/> | |||
<DataHelmet selected={(selected=="")?null:selected[0]["id"]} handleName={handleName} helmet={helmet} backend={backend} /> | |||
<DataHelmet selected={(selected=="")?null:selected[0]["id"]} handleName={handleName} helmet={helmet} mtx={mtx} extreme={extreme} ranger={ranger} fighter={fighter} swirl={swirl} classic={classic} uno={uno} backend={backend} /> | |||
</QueryClientProvider> | |||
</div> | |||
<Footer /> | |||
@@ -53,20 +53,83 @@ export default Helmet; | |||
export async function getServerSideProps(context) { | |||
var helmet = []; | |||
var mtx = []; | |||
var extreme = []; | |||
var ranger = []; | |||
var fighter = []; | |||
var swirl = []; | |||
var classic = []; | |||
var uno = []; | |||
var filter = context.query.filter||""; | |||
var selected = ""; | |||
const backend = process.env.BACKEND_SERVER_URI; | |||
var res = await GetDataHelmet.GetHelmet(filter); | |||
var res = await GetDataHelmet.GetHelmetRConcepts(filter); | |||
if (res["STATUS"] === 1) { | |||
helmet = res["DATA"]["accessories"]; | |||
helmet = res["DATA"]["helmets"]; | |||
if (filter !=""){ | |||
selected = helmet.filter((i)=>i.name==filter); | |||
} | |||
} | |||
var res = await GetDataHelmet.GetHelmetMTX(filter); | |||
if (res["STATUS"] === 1) { | |||
mtx = res["DATA"]["helmets"]; | |||
if (filter !=""){ | |||
selected = mtx.filter((i)=>i.name==filter); | |||
} | |||
} | |||
var res = await GetDataHelmet.GetHelmetExtreme(filter); | |||
if (res["STATUS"] === 1) { | |||
extreme = res["DATA"]["helmets"]; | |||
if (filter !=""){ | |||
selected = extreme.filter((i)=>i.name==filter); | |||
} | |||
} | |||
var res = await GetDataHelmet.GetHelmetRanger(filter); | |||
if (res["STATUS"] === 1) { | |||
ranger = res["DATA"]["helmets"]; | |||
if (filter !=""){ | |||
selected = ranger.filter((i)=>i.name==filter); | |||
} | |||
} | |||
var res = await GetDataHelmet.GetHelmetFighter(filter); | |||
if (res["STATUS"] === 1) { | |||
fighter = res["DATA"]["helmets"]; | |||
if (filter !=""){ | |||
selected = fighter.filter((i)=>i.name==filter); | |||
} | |||
} | |||
var res = await GetDataHelmet.GetHelmetSwirl(filter); | |||
if (res["STATUS"] === 1) { | |||
swirl = res["DATA"]["helmets"]; | |||
if (filter !=""){ | |||
selected = swirl.filter((i)=>i.name==filter); | |||
} | |||
} | |||
var res = await GetDataHelmet.GetHelmetClassic(filter); | |||
if (res["STATUS"] === 1) { | |||
classic = res["DATA"]["helmets"]; | |||
if (filter !=""){ | |||
selected = classic.filter((i)=>i.name==filter); | |||
} | |||
} | |||
var res = await GetDataHelmet.GetHelmetUno(filter); | |||
if (res["STATUS"] === 1) { | |||
uno = res["DATA"]["helmets"]; | |||
if (filter !=""){ | |||
selected = uno.filter((i)=>i.name==filter); | |||
} | |||
} | |||
return { | |||
props: { selected, helmet, backend }, // will be passed to the page component as props | |||
props: { selected, helmet, mtx, extreme, ranger, fighter, swirl, classic, uno, backend }, // will be passed to the page component as props | |||
}; | |||
} |
@@ -8,7 +8,7 @@ import Footer from "components/Footer/Footer.js"; | |||
import HelmetDetail from "pages-sections/product/helmet_details.js"; | |||
import Parallax from "components/Parallax/Parallax.js"; | |||
import styles from "assets/jss/nextjs-material-kit/pages/components.js"; | |||
import GetDetailHelmet from "../../api/product/accessories.js" | |||
import GetDetailHelmet from "../../api/product/helmet.js" | |||
const useStyles = makeStyles(styles); | |||
@@ -43,9 +43,9 @@ export async function getServerSideProps(context) { | |||
var detailhelmet = []; | |||
const backend = process.env.BACKEND_SERVER_URI; | |||
var res = await GetDetailHelmet.GetDetailAccessories(query.s||0); | |||
var res = await GetDetailHelmet.GetDetailHelmet(query.s||0); | |||
if (res["STATUS"] === 1) { | |||
detailhelmet = res["DATA"]["accessories"]; | |||
detailhelmet = res["DATA"]["helmets"]; | |||
} | |||
console.log(detailhelmet); | |||
@@ -47,7 +47,6 @@ export async function getServerSideProps(context) { | |||
if (res["STATUS"] === 1) { | |||
detailyamalube = res["DATA"]["accessories"]; | |||
} | |||
console.log(detailyamalube); | |||
return { | |||
props: { detailyamalube, backend }, // will be passed to the page component as props | |||