| @@ -100,10 +100,45 @@ async function GetAccessories(token="") { | |||||
| return res; | return res; | ||||
| } | } | ||||
| async function GetDetailAccessories(id, token="") { | |||||
| var res = await apollo.query( | |||||
| ` | |||||
| query($input: ID!){ | |||||
| accessories(where:{id:$input}) | |||||
| { | |||||
| id | |||||
| name | |||||
| description | |||||
| price | |||||
| part_code | |||||
| img { | |||||
| url | |||||
| } | |||||
| img_relate1{ | |||||
| url | |||||
| } | |||||
| img_relate2{ | |||||
| url | |||||
| } | |||||
| img_relate3{ | |||||
| url | |||||
| } | |||||
| stock | |||||
| } | |||||
| } `, | |||||
| token, | |||||
| { | |||||
| "input": id | |||||
| } | |||||
| ); | |||||
| return res; | |||||
| } | |||||
| module.exports = { | module.exports = { | ||||
| GetYGP:GetYGP, | GetYGP:GetYGP, | ||||
| GetYamalube:GetYamalube, | GetYamalube:GetYamalube, | ||||
| GetHelmet:GetHelmet, | GetHelmet:GetHelmet, | ||||
| GetApparel:GetApparel, | GetApparel:GetApparel, | ||||
| GetAccessories:GetAccessories, | GetAccessories:GetAccessories, | ||||
| GetDetailAccessories:GetDetailAccessories, | |||||
| }; | }; | ||||
| @@ -36,7 +36,7 @@ const DataAccessories = function ({ backend, accessories, ...props }) { | |||||
| <h4>Rp.{data.price}</h4> | <h4>Rp.{data.price}</h4> | ||||
| <Button | <Button | ||||
| color="info" round | color="info" round | ||||
| href={"/product_detail?s="+data.id} | |||||
| href={"/product/accessories_details?s="+data.id} | |||||
| > | > | ||||
| <Icon className={classes.icons}>open_in_new</Icon>Detail Product | <Icon className={classes.icons}>open_in_new</Icon>Detail Product | ||||
| </Button> | </Button> | ||||
| @@ -0,0 +1,109 @@ | |||||
| import React, { useState, useEffect } from "react"; | |||||
| import classNames from "classnames"; | |||||
| import { makeStyles } from "@material-ui/core/styles"; | |||||
| import ReactHtmlParser from "react-html-parser"; | |||||
| import Dashboard from "@material-ui/icons/Dashboard"; | |||||
| import Icon from "@material-ui/core/Icon"; | |||||
| import GridContainer from "components/Grid/GridContainer.js"; | |||||
| import Grid from '@material-ui/core/Grid'; | |||||
| import GridItem from "components/Grid/GridItem.js"; | |||||
| import NavPills from "components/NavPills/NavPills.js"; | |||||
| import Card from "components/Card/Card.js"; | |||||
| import CardBody from "components/Card/CardBody.js"; | |||||
| import CardHeader from "components/Card/CardHeader.js"; | |||||
| import CardFooter from "components/Card/CardFooter.js"; | |||||
| import Button from "components/CustomButtons/Button.js"; | |||||
| import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js"; | |||||
| import Carousel from "react-slick"; | |||||
| const useStyles = makeStyles(styles); | |||||
| const DetailDataAccessories = function ({ backend, detailaccessories, ...props }) { | |||||
| const classes = useStyles(); | |||||
| const { ...rest } = props; | |||||
| const imageClasses = classNames( | |||||
| classes.imgRaised, | |||||
| classes.imgRoundedCircle, | |||||
| classes.imgFluid | |||||
| ); | |||||
| const settings = { | |||||
| dots: true, | |||||
| infinite: true, | |||||
| speed: 500, | |||||
| slidesToShow: 1, | |||||
| slidesToScroll: 1, | |||||
| autoplay: true, | |||||
| time: 5 | |||||
| }; | |||||
| const navImageClasses = classNames(classes.imgRounded, classes.imgGallery); | |||||
| const Accessoriesdetails = detailaccessories.map((data) => { | |||||
| return ( | |||||
| <div> | |||||
| <GridContainer> | |||||
| <Grid fluid xs={5}> | |||||
| <div className={classes.section} id="notifications"> | |||||
| <div className={classes.section}> | |||||
| <div className={classes.container}> | |||||
| <GridContainer> | |||||
| <GridItem className={classes.marginAuto}> | |||||
| <Card carousel> | |||||
| <Carousel {...settings}> | |||||
| <img className={navImageClasses} width="300px" alt="First slide" src={`${backend}${data.img["url"]}`} /> | |||||
| </Carousel> | |||||
| </Card> | |||||
| </GridItem> | |||||
| </GridContainer> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </Grid> | |||||
| <Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}> | |||||
| <h3>{data.name}</h3> | |||||
| <h3>Rp.{data.price}</h3> | |||||
| <hr></hr> | |||||
| <ul> | |||||
| <li><h4>Stock : {data.stock}</h4></li> | |||||
| <li><h4>Part Code : {data.part_code}</h4></li> | |||||
| </ul> | |||||
| </Grid> | |||||
| </GridContainer> | |||||
| <GridContainer> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| </GridContainer> | |||||
| <div align="center"> | |||||
| <hr></hr> | |||||
| <h2>Deskripsi</h2> | |||||
| </div> | |||||
| <div align="justify"> | |||||
| <p>{ReactHtmlParser(data.description)}</p> | |||||
| </div> | |||||
| </div> | |||||
| ); | |||||
| }) | |||||
| return ( | |||||
| <Card className={classes.textCenter}> | |||||
| <div align="center"> | |||||
| <CardHeader color="info">Product Detail</CardHeader> | |||||
| </div> | |||||
| <CardBody> | |||||
| <div> | |||||
| {Accessoriesdetails} | |||||
| </div> | |||||
| </CardBody> | |||||
| <CardFooter className={classes.textMuted} textAlign="center"> | |||||
| © 2020 , All Right Reserved by @Thamrin Brother Company | |||||
| </CardFooter> | |||||
| </Card> | |||||
| ); | |||||
| } | |||||
| export default DetailDataAccessories; | |||||
| @@ -35,7 +35,7 @@ const DataApparel = function ({ backend, apparel, ...props }) { | |||||
| <h4>Rp.{data.price}</h4> | <h4>Rp.{data.price}</h4> | ||||
| <Button | <Button | ||||
| color="info" round | color="info" round | ||||
| href={"/product_detail?s="+data.id} | |||||
| href={"/product/apparel_details?s="+data.id} | |||||
| > | > | ||||
| <Icon className={classes.icons}>open_in_new</Icon>Detail Product | <Icon className={classes.icons}>open_in_new</Icon>Detail Product | ||||
| </Button> | </Button> | ||||
| @@ -0,0 +1,109 @@ | |||||
| import React, { useState, useEffect } from "react"; | |||||
| import classNames from "classnames"; | |||||
| import { makeStyles } from "@material-ui/core/styles"; | |||||
| import ReactHtmlParser from "react-html-parser"; | |||||
| import Dashboard from "@material-ui/icons/Dashboard"; | |||||
| import Icon from "@material-ui/core/Icon"; | |||||
| import GridContainer from "components/Grid/GridContainer.js"; | |||||
| import Grid from '@material-ui/core/Grid'; | |||||
| import GridItem from "components/Grid/GridItem.js"; | |||||
| import NavPills from "components/NavPills/NavPills.js"; | |||||
| import Card from "components/Card/Card.js"; | |||||
| import CardBody from "components/Card/CardBody.js"; | |||||
| import CardHeader from "components/Card/CardHeader.js"; | |||||
| import CardFooter from "components/Card/CardFooter.js"; | |||||
| import Button from "components/CustomButtons/Button.js"; | |||||
| import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js"; | |||||
| import Carousel from "react-slick"; | |||||
| const useStyles = makeStyles(styles); | |||||
| const DetailDataApparel = function ({ backend, detailapparel, ...props }) { | |||||
| const classes = useStyles(); | |||||
| const { ...rest } = props; | |||||
| const imageClasses = classNames( | |||||
| classes.imgRaised, | |||||
| classes.imgRoundedCircle, | |||||
| classes.imgFluid | |||||
| ); | |||||
| const settings = { | |||||
| dots: true, | |||||
| infinite: true, | |||||
| speed: 500, | |||||
| slidesToShow: 1, | |||||
| slidesToScroll: 1, | |||||
| autoplay: true, | |||||
| time: 5 | |||||
| }; | |||||
| const navImageClasses = classNames(classes.imgRounded, classes.imgGallery); | |||||
| const Appareldetails = detailapparel.map((data) => { | |||||
| return ( | |||||
| <div> | |||||
| <GridContainer> | |||||
| <Grid fluid xs={5}> | |||||
| <div className={classes.section} id="notifications"> | |||||
| <div className={classes.section}> | |||||
| <div className={classes.container}> | |||||
| <GridContainer> | |||||
| <GridItem className={classes.marginAuto}> | |||||
| <Card carousel> | |||||
| <Carousel {...settings}> | |||||
| <img className={navImageClasses} width="300px" alt="First slide" src={`${backend}${data.img["url"]}`} /> | |||||
| </Carousel> | |||||
| </Card> | |||||
| </GridItem> | |||||
| </GridContainer> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </Grid> | |||||
| <Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}> | |||||
| <h3>{data.name}</h3> | |||||
| <h3>Rp.{data.price}</h3> | |||||
| <hr></hr> | |||||
| <ul> | |||||
| <li><h4>Stock : {data.stock}</h4></li> | |||||
| <li><h4>Part Code : {data.part_code}</h4></li> | |||||
| </ul> | |||||
| </Grid> | |||||
| </GridContainer> | |||||
| <GridContainer> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| </GridContainer> | |||||
| <div align="center"> | |||||
| <hr></hr> | |||||
| <h2>Deskripsi</h2> | |||||
| </div> | |||||
| <div align="justify"> | |||||
| <p>{ReactHtmlParser(data.description)}</p> | |||||
| </div> | |||||
| </div> | |||||
| ); | |||||
| }) | |||||
| return ( | |||||
| <Card className={classes.textCenter}> | |||||
| <div align="center"> | |||||
| <CardHeader color="info">Product Detail</CardHeader> | |||||
| </div> | |||||
| <CardBody> | |||||
| <div> | |||||
| {Appareldetails} | |||||
| </div> | |||||
| </CardBody> | |||||
| <CardFooter className={classes.textMuted} textAlign="center"> | |||||
| © 2020 , All Right Reserved by @Thamrin Brother Company | |||||
| </CardFooter> | |||||
| </Card> | |||||
| ); | |||||
| } | |||||
| export default DetailDataApparel; | |||||
| @@ -35,7 +35,7 @@ const DataHelmet = function ({ backend, helmet, ...props }) { | |||||
| <h4>Rp.{data.price}</h4> | <h4>Rp.{data.price}</h4> | ||||
| <Button | <Button | ||||
| color="info" round | color="info" round | ||||
| href={"/product_detail?s="+data.id} | |||||
| href={"/product/helmet_details?s="+data.id} | |||||
| > | > | ||||
| <Icon className={classes.icons}>open_in_new</Icon>Detail Product | <Icon className={classes.icons}>open_in_new</Icon>Detail Product | ||||
| </Button> | </Button> | ||||
| @@ -0,0 +1,109 @@ | |||||
| import React, { useState, useEffect } from "react"; | |||||
| import classNames from "classnames"; | |||||
| import { makeStyles } from "@material-ui/core/styles"; | |||||
| import ReactHtmlParser from "react-html-parser"; | |||||
| import Dashboard from "@material-ui/icons/Dashboard"; | |||||
| import Icon from "@material-ui/core/Icon"; | |||||
| import GridContainer from "components/Grid/GridContainer.js"; | |||||
| import Grid from '@material-ui/core/Grid'; | |||||
| import GridItem from "components/Grid/GridItem.js"; | |||||
| import NavPills from "components/NavPills/NavPills.js"; | |||||
| import Card from "components/Card/Card.js"; | |||||
| import CardBody from "components/Card/CardBody.js"; | |||||
| import CardHeader from "components/Card/CardHeader.js"; | |||||
| import CardFooter from "components/Card/CardFooter.js"; | |||||
| import Button from "components/CustomButtons/Button.js"; | |||||
| import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js"; | |||||
| import Carousel from "react-slick"; | |||||
| const useStyles = makeStyles(styles); | |||||
| const DetailDataHelmet = function ({ backend, detailhelmet, ...props }) { | |||||
| const classes = useStyles(); | |||||
| const { ...rest } = props; | |||||
| const imageClasses = classNames( | |||||
| classes.imgRaised, | |||||
| classes.imgRoundedCircle, | |||||
| classes.imgFluid | |||||
| ); | |||||
| const settings = { | |||||
| dots: true, | |||||
| infinite: true, | |||||
| speed: 500, | |||||
| slidesToShow: 1, | |||||
| slidesToScroll: 1, | |||||
| autoplay: true, | |||||
| time: 5 | |||||
| }; | |||||
| const navImageClasses = classNames(classes.imgRounded, classes.imgGallery); | |||||
| const Helmetdetails = detailhelmet.map((data) => { | |||||
| return ( | |||||
| <div> | |||||
| <GridContainer> | |||||
| <Grid fluid xs={5}> | |||||
| <div className={classes.section} id="notifications"> | |||||
| <div className={classes.section}> | |||||
| <div className={classes.container}> | |||||
| <GridContainer> | |||||
| <GridItem className={classes.marginAuto}> | |||||
| <Card carousel> | |||||
| <Carousel {...settings}> | |||||
| <img className={navImageClasses} width="300px" alt="First slide" src={`${backend}${data.img["url"]}`} /> | |||||
| </Carousel> | |||||
| </Card> | |||||
| </GridItem> | |||||
| </GridContainer> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </Grid> | |||||
| <Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}> | |||||
| <h3>{data.name}</h3> | |||||
| <h3>Rp.{data.price}</h3> | |||||
| <hr></hr> | |||||
| <ul> | |||||
| <li><h4>Stock : {data.stock}</h4></li> | |||||
| <li><h4>Part Code : {data.part_code}</h4></li> | |||||
| </ul> | |||||
| </Grid> | |||||
| </GridContainer> | |||||
| <GridContainer> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| </GridContainer> | |||||
| <div align="center"> | |||||
| <hr></hr> | |||||
| <h2>Deskripsi</h2> | |||||
| </div> | |||||
| <div align="justify"> | |||||
| <p>{ReactHtmlParser(data.description)}</p> | |||||
| </div> | |||||
| </div> | |||||
| ); | |||||
| }) | |||||
| return ( | |||||
| <Card className={classes.textCenter}> | |||||
| <div align="center"> | |||||
| <CardHeader color="info">Product Detail</CardHeader> | |||||
| </div> | |||||
| <CardBody> | |||||
| <div> | |||||
| {Helmetdetails} | |||||
| </div> | |||||
| </CardBody> | |||||
| <CardFooter className={classes.textMuted} textAlign="center"> | |||||
| © 2020 , All Right Reserved by @Thamrin Brother Company | |||||
| </CardFooter> | |||||
| </Card> | |||||
| ); | |||||
| } | |||||
| export default DetailDataHelmet; | |||||
| @@ -35,7 +35,7 @@ const DataYamalube = function ({ backend, yamalube, ...props }) { | |||||
| <h4>Rp.{data.price}</h4> | <h4>Rp.{data.price}</h4> | ||||
| <Button | <Button | ||||
| color="info" round | color="info" round | ||||
| href={"/product_detail?s="+data.id} | |||||
| href={"/product/yamalube_details?s="+data.id} | |||||
| > | > | ||||
| <Icon className={classes.icons}>open_in_new</Icon>Detail Product | <Icon className={classes.icons}>open_in_new</Icon>Detail Product | ||||
| </Button> | </Button> | ||||
| @@ -0,0 +1,109 @@ | |||||
| import React, { useState, useEffect } from "react"; | |||||
| import classNames from "classnames"; | |||||
| import { makeStyles } from "@material-ui/core/styles"; | |||||
| import ReactHtmlParser from "react-html-parser"; | |||||
| import Dashboard from "@material-ui/icons/Dashboard"; | |||||
| import Icon from "@material-ui/core/Icon"; | |||||
| import GridContainer from "components/Grid/GridContainer.js"; | |||||
| import Grid from '@material-ui/core/Grid'; | |||||
| import GridItem from "components/Grid/GridItem.js"; | |||||
| import NavPills from "components/NavPills/NavPills.js"; | |||||
| import Card from "components/Card/Card.js"; | |||||
| import CardBody from "components/Card/CardBody.js"; | |||||
| import CardHeader from "components/Card/CardHeader.js"; | |||||
| import CardFooter from "components/Card/CardFooter.js"; | |||||
| import Button from "components/CustomButtons/Button.js"; | |||||
| import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js"; | |||||
| import Carousel from "react-slick"; | |||||
| const useStyles = makeStyles(styles); | |||||
| const DetailDataYamalube = function ({ backend, detailyamalube, ...props }) { | |||||
| const classes = useStyles(); | |||||
| const { ...rest } = props; | |||||
| const imageClasses = classNames( | |||||
| classes.imgRaised, | |||||
| classes.imgRoundedCircle, | |||||
| classes.imgFluid | |||||
| ); | |||||
| const settings = { | |||||
| dots: true, | |||||
| infinite: true, | |||||
| speed: 500, | |||||
| slidesToShow: 1, | |||||
| slidesToScroll: 1, | |||||
| autoplay: true, | |||||
| time: 5 | |||||
| }; | |||||
| const navImageClasses = classNames(classes.imgRounded, classes.imgGallery); | |||||
| const Yamalubedetails = detailyamalube.map((data) => { | |||||
| return ( | |||||
| <div> | |||||
| <GridContainer> | |||||
| <Grid fluid xs={5}> | |||||
| <div className={classes.section} id="notifications"> | |||||
| <div className={classes.section}> | |||||
| <div className={classes.container}> | |||||
| <GridContainer> | |||||
| <GridItem className={classes.marginAuto}> | |||||
| <Card carousel> | |||||
| <Carousel {...settings}> | |||||
| <img className={navImageClasses} width="300px" alt="First slide" src={`${backend}${data.img["url"]}`} /> | |||||
| </Carousel> | |||||
| </Card> | |||||
| </GridItem> | |||||
| </GridContainer> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </Grid> | |||||
| <Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}> | |||||
| <h3>{data.name}</h3> | |||||
| <h3>Rp.{data.price}</h3> | |||||
| <hr></hr> | |||||
| <ul> | |||||
| <li><h4>Stock : {data.stock}</h4></li> | |||||
| <li><h4>Part Code : {data.part_code}</h4></li> | |||||
| </ul> | |||||
| </Grid> | |||||
| </GridContainer> | |||||
| {/* <GridContainer> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img_relate1["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img_relate2["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img_relate3["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| </GridContainer> */} | |||||
| <div align="center"> | |||||
| <hr></hr> | |||||
| <h2>Deskripsi</h2> | |||||
| </div> | |||||
| <div align="justify"> | |||||
| <p>{ReactHtmlParser(data.description)}</p> | |||||
| </div> | |||||
| </div> | |||||
| ); | |||||
| }) | |||||
| return ( | |||||
| <Card className={classes.textCenter}> | |||||
| <div align="center"> | |||||
| <CardHeader color="info">Product Detail</CardHeader> | |||||
| </div> | |||||
| <CardBody> | |||||
| <div> | |||||
| {Yamalubedetails} | |||||
| </div> | |||||
| </CardBody> | |||||
| <CardFooter className={classes.textMuted} textAlign="center"> | |||||
| © 2020 , All Right Reserved by @Thamrin Brother Company | |||||
| </CardFooter> | |||||
| </Card> | |||||
| ); | |||||
| } | |||||
| export default DetailDataYamalube; | |||||
| @@ -35,7 +35,7 @@ const DataYGP = function ({ backend, ygp, ...props }) { | |||||
| <h4>Rp.{data.price}</h4> | <h4>Rp.{data.price}</h4> | ||||
| <Button | <Button | ||||
| color="info" round | color="info" round | ||||
| href={"/product_detail?s="+data.id} | |||||
| href={"/product/ygp_details?s="+data.id} | |||||
| > | > | ||||
| <Icon className={classes.icons}>open_in_new</Icon>Detail Product | <Icon className={classes.icons}>open_in_new</Icon>Detail Product | ||||
| </Button> | </Button> | ||||
| @@ -0,0 +1,97 @@ | |||||
| import React, { useState, useEffect } from "react"; | |||||
| import classNames from "classnames"; | |||||
| import { makeStyles } from "@material-ui/core/styles"; | |||||
| import ReactHtmlParser from "react-html-parser"; | |||||
| import Dashboard from "@material-ui/icons/Dashboard"; | |||||
| import Icon from "@material-ui/core/Icon"; | |||||
| import GridContainer from "components/Grid/GridContainer.js"; | |||||
| import Grid from '@material-ui/core/Grid'; | |||||
| import GridItem from "components/Grid/GridItem.js"; | |||||
| import NavPills from "components/NavPills/NavPills.js"; | |||||
| import Card from "components/Card/Card.js"; | |||||
| import CardBody from "components/Card/CardBody.js"; | |||||
| import CardHeader from "components/Card/CardHeader.js"; | |||||
| import CardFooter from "components/Card/CardFooter.js"; | |||||
| import Button from "components/CustomButtons/Button.js"; | |||||
| import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js"; | |||||
| const useStyles = makeStyles(styles); | |||||
| const DetailDataYGP = function ({ backend, detailygp, ...props }) { | |||||
| const classes = useStyles(); | |||||
| const { ...rest } = props; | |||||
| const imageClasses = classNames( | |||||
| classes.imgRaised, | |||||
| classes.imgRoundedCircle, | |||||
| classes.imgFluid | |||||
| ); | |||||
| const navImageClasses = classNames(classes.imgRounded, classes.imgGallery); | |||||
| const YGPdetails = detailygp.map((data) => { | |||||
| return ( | |||||
| <div> | |||||
| <GridContainer> | |||||
| <Grid fluid xs={5}> | |||||
| <div className={classes.section} id="notifications"> | |||||
| <div className={classes.section}> | |||||
| <div className={classes.container}> | |||||
| <GridContainer> | |||||
| <GridItem className={classes.marginAuto}> | |||||
| <Card> | |||||
| <img className={navImageClasses} width="300px" alt="First slide" src={`${backend}${data.img["url"]}`} /> | |||||
| </Card> | |||||
| </GridItem> | |||||
| </GridContainer> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </Grid> | |||||
| <Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}> | |||||
| <h3>{data.name}</h3> | |||||
| <h3>Rp.{data.price}</h3> | |||||
| <hr></hr> | |||||
| <ul> | |||||
| <li><h4>Stock : {data.stock}</h4></li> | |||||
| <li><h4>Part Code : {data.part_code}</h4></li> | |||||
| </ul> | |||||
| </Grid> | |||||
| </GridContainer> | |||||
| <GridContainer> | |||||
| <Grid className={classes.marginAuto} style={{padding:"11px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img_relate1["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| <Grid className={classes.marginAuto} style={{padding:"11px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img_relate2["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| <Grid className={classes.marginAuto} style={{padding:"11px"}}> | |||||
| <img className={navImageClasses} src={`${backend}${data.img_relate3["url"]}`} height="165px" width="200px"/> | |||||
| </Grid> | |||||
| </GridContainer> | |||||
| <div align="center"> | |||||
| <hr></hr> | |||||
| <h2>Deskripsi</h2> | |||||
| </div> | |||||
| <div align="justify"> | |||||
| <p>{ReactHtmlParser(data.description)}</p> | |||||
| </div> | |||||
| </div> | |||||
| ); | |||||
| }) | |||||
| return ( | |||||
| <Card className={classes.textCenter}> | |||||
| <div align="center"> | |||||
| <CardHeader color="info">Product Detail</CardHeader> | |||||
| </div> | |||||
| <CardBody> | |||||
| <div> | |||||
| {YGPdetails} | |||||
| </div> | |||||
| </CardBody> | |||||
| <CardFooter className={classes.textMuted} textAlign="center"> | |||||
| © 2020 , All Right Reserved by @Thamrin Brother Company | |||||
| </CardFooter> | |||||
| </Card> | |||||
| ); | |||||
| } | |||||
| export default DetailDataYGP; | |||||
| @@ -0,0 +1,55 @@ | |||||
| import React from "react"; | |||||
| import classNames from "classnames"; | |||||
| import { makeStyles } from "@material-ui/core/styles"; | |||||
| import Header from "components/Header/Header.js"; | |||||
| import HeaderLinks from "components/Header/HeaderLinks.js"; | |||||
| import Footer from "components/Footer/Footer.js"; | |||||
| import AccessoriesDetail from "pages-sections/product/accessories_details.js"; | |||||
| import Parallax from "components/Parallax/Parallax.js"; | |||||
| import styles from "assets/jss/nextjs-material-kit/pages/components.js"; | |||||
| import GetDetailAccessories from "../../api/product/accessories.js" | |||||
| const useStyles = makeStyles(styles); | |||||
| const AccessoriesDetails = function ({ backend, detailaccessories, ...props }) { | |||||
| const classes = useStyles(); | |||||
| const { ...rest } = props; | |||||
| return ( | |||||
| <div> | |||||
| <Header | |||||
| rightLinks={<HeaderLinks/>} | |||||
| fixed | |||||
| color="info" | |||||
| changeColorOnScroll={{ | |||||
| height: 400, | |||||
| color: "white" | |||||
| }} | |||||
| {...rest} | |||||
| /> | |||||
| <Parallax image={require("assets/img/yamalube.jpg")} width="200px"/> | |||||
| <div className={classNames(classes.main, classes.mainRaised)}> | |||||
| <AccessoriesDetail detailaccessories={detailaccessories} backend={backend}/> | |||||
| </div> | |||||
| <Footer /> | |||||
| </div> | |||||
| ); | |||||
| } | |||||
| export default AccessoriesDetails; | |||||
| export async function getServerSideProps(context) { | |||||
| var {query} = context; | |||||
| var detailaccessories = []; | |||||
| const backend = process.env.BACKEND_SERVER_URI; | |||||
| var res = await GetDetailAccessories.GetDetailAccessories(query.s||0); | |||||
| if (res["STATUS"] === 1) { | |||||
| detailaccessories = res["DATA"]["accessories"]; | |||||
| } | |||||
| console.log(detailaccessories); | |||||
| return { | |||||
| props: { detailaccessories, backend }, // will be passed to the page component as props | |||||
| }; | |||||
| } | |||||
| @@ -0,0 +1,55 @@ | |||||
| import React from "react"; | |||||
| import classNames from "classnames"; | |||||
| import { makeStyles } from "@material-ui/core/styles"; | |||||
| import Header from "components/Header/Header.js"; | |||||
| import HeaderLinks from "components/Header/HeaderLinks.js"; | |||||
| import Footer from "components/Footer/Footer.js"; | |||||
| import ApparelDetail from "pages-sections/product/apparel_details.js"; | |||||
| import Parallax from "components/Parallax/Parallax.js"; | |||||
| import styles from "assets/jss/nextjs-material-kit/pages/components.js"; | |||||
| import GetDetailApparel from "../../api/product/accessories.js" | |||||
| const useStyles = makeStyles(styles); | |||||
| const ApparelDetails = function ({ backend, detailapparel, ...props }) { | |||||
| const classes = useStyles(); | |||||
| const { ...rest } = props; | |||||
| return ( | |||||
| <div> | |||||
| <Header | |||||
| rightLinks={<HeaderLinks/>} | |||||
| fixed | |||||
| color="info" | |||||
| changeColorOnScroll={{ | |||||
| height: 400, | |||||
| color: "white" | |||||
| }} | |||||
| {...rest} | |||||
| /> | |||||
| <Parallax image={require("assets/img/yamalube.jpg")} width="200px"/> | |||||
| <div className={classNames(classes.main, classes.mainRaised)}> | |||||
| <ApparelDetail detailapparel={detailapparel} backend={backend}/> | |||||
| </div> | |||||
| <Footer /> | |||||
| </div> | |||||
| ); | |||||
| } | |||||
| export default ApparelDetails; | |||||
| export async function getServerSideProps(context) { | |||||
| var {query} = context; | |||||
| var detailapparel = []; | |||||
| const backend = process.env.BACKEND_SERVER_URI; | |||||
| var res = await GetDetailApparel.GetDetailAccessories(query.s||0); | |||||
| if (res["STATUS"] === 1) { | |||||
| detailapparel = res["DATA"]["accessories"]; | |||||
| } | |||||
| console.log(detailapparel); | |||||
| return { | |||||
| props: { detailapparel, backend }, // will be passed to the page component as props | |||||
| }; | |||||
| } | |||||
| @@ -0,0 +1,55 @@ | |||||
| import React from "react"; | |||||
| import classNames from "classnames"; | |||||
| import { makeStyles } from "@material-ui/core/styles"; | |||||
| import Header from "components/Header/Header.js"; | |||||
| import HeaderLinks from "components/Header/HeaderLinks.js"; | |||||
| 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" | |||||
| const useStyles = makeStyles(styles); | |||||
| const HelmetDetails = function ({ backend, detailhelmet, ...props }) { | |||||
| const classes = useStyles(); | |||||
| const { ...rest } = props; | |||||
| return ( | |||||
| <div> | |||||
| <Header | |||||
| rightLinks={<HeaderLinks/>} | |||||
| fixed | |||||
| color="info" | |||||
| changeColorOnScroll={{ | |||||
| height: 400, | |||||
| color: "white" | |||||
| }} | |||||
| {...rest} | |||||
| /> | |||||
| <Parallax image={require("assets/img/yamalube.jpg")} width="200px"/> | |||||
| <div className={classNames(classes.main, classes.mainRaised)}> | |||||
| <HelmetDetail detailhelmet={detailhelmet} backend={backend}/> | |||||
| </div> | |||||
| <Footer /> | |||||
| </div> | |||||
| ); | |||||
| } | |||||
| export default HelmetDetails; | |||||
| export async function getServerSideProps(context) { | |||||
| var {query} = context; | |||||
| var detailhelmet = []; | |||||
| const backend = process.env.BACKEND_SERVER_URI; | |||||
| var res = await GetDetailHelmet.GetDetailAccessories(query.s||0); | |||||
| if (res["STATUS"] === 1) { | |||||
| detailhelmet = res["DATA"]["accessories"]; | |||||
| } | |||||
| console.log(detailhelmet); | |||||
| return { | |||||
| props: { detailhelmet, backend }, // will be passed to the page component as props | |||||
| }; | |||||
| } | |||||
| @@ -0,0 +1,55 @@ | |||||
| import React from "react"; | |||||
| import classNames from "classnames"; | |||||
| import { makeStyles } from "@material-ui/core/styles"; | |||||
| import Header from "components/Header/Header.js"; | |||||
| import HeaderLinks from "components/Header/HeaderLinks.js"; | |||||
| import Footer from "components/Footer/Footer.js"; | |||||
| import YamalubeDetail from "pages-sections/product/yamalube_details.js"; | |||||
| import Parallax from "components/Parallax/Parallax.js"; | |||||
| import styles from "assets/jss/nextjs-material-kit/pages/components.js"; | |||||
| import GetDetailYamalube from "../../api/product/accessories.js" | |||||
| const useStyles = makeStyles(styles); | |||||
| const YamalubeDetails = function ({ backend, detailyamalube, ...props }) { | |||||
| const classes = useStyles(); | |||||
| const { ...rest } = props; | |||||
| return ( | |||||
| <div> | |||||
| <Header | |||||
| rightLinks={<HeaderLinks/>} | |||||
| fixed | |||||
| color="info" | |||||
| changeColorOnScroll={{ | |||||
| height: 400, | |||||
| color: "white" | |||||
| }} | |||||
| {...rest} | |||||
| /> | |||||
| <Parallax image={require("assets/img/yamalube.jpg")} width="200px"/> | |||||
| <div className={classNames(classes.main, classes.mainRaised)}> | |||||
| <YamalubeDetail detailyamalube={detailyamalube} backend={backend}/> | |||||
| </div> | |||||
| <Footer /> | |||||
| </div> | |||||
| ); | |||||
| } | |||||
| export default YamalubeDetails; | |||||
| export async function getServerSideProps(context) { | |||||
| var {query} = context; | |||||
| var detailyamalube = []; | |||||
| const backend = process.env.BACKEND_SERVER_URI; | |||||
| var res = await GetDetailYamalube.GetDetailAccessories(query.s||0); | |||||
| if (res["STATUS"] === 1) { | |||||
| detailyamalube = res["DATA"]["accessories"]; | |||||
| } | |||||
| console.log(detailyamalube); | |||||
| return { | |||||
| props: { detailyamalube, backend }, // will be passed to the page component as props | |||||
| }; | |||||
| } | |||||
| @@ -0,0 +1,55 @@ | |||||
| import React from "react"; | |||||
| import classNames from "classnames"; | |||||
| import { makeStyles } from "@material-ui/core/styles"; | |||||
| import Header from "components/Header/Header.js"; | |||||
| import HeaderLinks from "components/Header/HeaderLinks.js"; | |||||
| import Footer from "components/Footer/Footer.js"; | |||||
| import YGPDetail from "pages-sections/product/ygp_details.js"; | |||||
| import Parallax from "components/Parallax/Parallax.js"; | |||||
| import styles from "assets/jss/nextjs-material-kit/pages/components.js"; | |||||
| import GetDetailYGP from "../../api/product/accessories.js" | |||||
| const useStyles = makeStyles(styles); | |||||
| const YGPDetails = function ({ backend, detailygp, ...props }) { | |||||
| const classes = useStyles(); | |||||
| const { ...rest } = props; | |||||
| return ( | |||||
| <div> | |||||
| <Header | |||||
| rightLinks={<HeaderLinks/>} | |||||
| fixed | |||||
| color="info" | |||||
| changeColorOnScroll={{ | |||||
| height: 400, | |||||
| color: "white" | |||||
| }} | |||||
| {...rest} | |||||
| /> | |||||
| <Parallax image={require("assets/img/yamalube.jpg")} width="200px"/> | |||||
| <div className={classNames(classes.main, classes.mainRaised)}> | |||||
| <YGPDetail detailygp={detailygp} backend={backend}/> | |||||
| </div> | |||||
| <Footer /> | |||||
| </div> | |||||
| ); | |||||
| } | |||||
| export default YGPDetails; | |||||
| export async function getServerSideProps(context) { | |||||
| var {query} = context; | |||||
| var detailygp = []; | |||||
| const backend = process.env.BACKEND_SERVER_URI; | |||||
| var res = await GetDetailYGP.GetDetailAccessories(query.s||0); | |||||
| if (res["STATUS"] === 1) { | |||||
| detailygp = res["DATA"]["accessories"]; | |||||
| } | |||||
| console.log(detailygp); | |||||
| return { | |||||
| props: { detailygp, backend }, // will be passed to the page component as props | |||||
| }; | |||||
| } | |||||