| @@ -3,16 +3,44 @@ import apollo from "../../lib/apollo.js"; | |||
| async function GetProduct(token="") { | |||
| var res = await apollo.query( | |||
| ` | |||
| query{ | |||
| products | |||
| { | |||
| name | |||
| description | |||
| img{ | |||
| id | |||
| } | |||
| } | |||
| } `, | |||
| query{ | |||
| products{ | |||
| id | |||
| name | |||
| price | |||
| description | |||
| img{ | |||
| url | |||
| } | |||
| business_partner | |||
| { | |||
| name | |||
| } | |||
| } | |||
| } `, | |||
| token | |||
| ); | |||
| return res; | |||
| } | |||
| async function GetDetailProduct(token="") { | |||
| var res = await apollo.query( | |||
| ` | |||
| query{ | |||
| products | |||
| { | |||
| name | |||
| price | |||
| description | |||
| img{ | |||
| url | |||
| } | |||
| business_partner | |||
| { | |||
| name | |||
| } | |||
| } | |||
| } `, | |||
| token | |||
| ); | |||
| return res; | |||
| @@ -20,4 +48,5 @@ async function GetProduct(token="") { | |||
| module.exports = { | |||
| GetProduct: GetProduct, | |||
| GetDetailProduct:GetDetailProduct, | |||
| }; | |||
| @@ -39,10 +39,10 @@ export default function PageChange(props) { | |||
| <div className={classes.iconWrapper}> | |||
| <CircularProgress className={classes.progress} /> | |||
| </div> | |||
| <h4 className={classes.title}> | |||
| Thamrin Group | |||
| </h4> | |||
| <div align="center"> | |||
| <img href="https://automotive.thamrin.co.id/wp-content/uploads/2019/07/logo-thamrin-group.png" /> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| ); | |||
| } | |||
| @@ -1,493 +0,0 @@ | |||
| import React from "react"; | |||
| // nodejs library that concatenates classes | |||
| import classNames from "classnames"; | |||
| // @material-ui/core components | |||
| import { makeStyles } from "@material-ui/core/styles"; | |||
| // @material-ui/icons | |||
| import Dashboard from "@material-ui/icons/Dashboard"; | |||
| import LocalGroceryStoreIcon from "@material-ui/icons/LocalGroceryStore"; | |||
| // Component | |||
| import GridContainer from "components/Grid/GridContainer.js"; | |||
| 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 Product = function ({ product, ...props }) { | |||
| const classes = useStyles(); | |||
| const { ...rest } = props; | |||
| const imageClasses = classNames( | |||
| classes.imgRaised, | |||
| classes.imgRoundedCircle, | |||
| classes.imgFluid | |||
| ); | |||
| const navImageClasses = classNames(classes.imgRounded, classes.imgGallery); | |||
| return ( | |||
| <Card className={classes.textCenter}> | |||
| <div align="center"> | |||
| <CardHeader color="info">Product</CardHeader> | |||
| </div> | |||
| <CardBody> | |||
| <div align="center"> | |||
| <h2>Product & Facilities</h2> | |||
| </div> | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| <NavPills | |||
| alignCenter | |||
| color="primary" | |||
| tabs={[ | |||
| { | |||
| tabButton: "Yamaha", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ height: "350px", display: "block" }} | |||
| src="https://www.yamaha-motor.co.id/uploads/products/2020020510350637523I93808.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2><a href="/product_detail">ALL NEW NMAX STANDART VERSION</a></h2> | |||
| <h4>Rp.30.000.000,00 – Rp.37.692.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ height: "350px", display: "block" }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Aerox-Std-Htm.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>AEROX 155 VVA</h2> | |||
| <h4>Rp.25.927.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Aerox-R-Version.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>AEROX 155 VVA R – VERSION</h2> | |||
| <h4>Rp.27.110.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Aerox-S-Ver-Red.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>AEROX 155 VVA S – VERSION</h2> | |||
| <h4>Rp.29.744.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="https://i0.wp.com/warungasep.net/wp-content/uploads/2020/02/view-1.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>NMAX ABS / NON ABS 155</h2> | |||
| <h4>Rp.29.571.000,00 – Rp.33.267.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Fino-Sporty-Blue-768x744.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>FINO 125 SPORTY / PREMIUM</h2> | |||
| <h4>Rp.19.335.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Fino-Grande-Blue-768x744.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>FINO GRANDE 125</h2> | |||
| <h4>Rp.20.155.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Mio-S-Green-768x703.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>MIO S</h2> | |||
| <h4>Rp.18.472.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Mio-M3-CW-Black-768x649.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>NEW MIO M3 125 CW</h2> | |||
| <h4>Rp.17.903.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ height: "350px", display: "block" }} | |||
| src="https://motor.jasasitus.com/wp-content/uploads/2018/11/mio-m3-black.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>NEW MIO M3 AKS SSS</h2> | |||
| <h4>Rp. 18.000.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ height: "350px", display: "block" }} | |||
| src="https://yamaha-berlian-merdeka.com/wp-content/uploads/2018/12/5-1.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>ALL NEW X-RIDE 125</h2> | |||
| <h4>Rp. 19.250.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="https://www.yamaha-motor.co.id/uploads/products/HqVh2xkCTQ2NsYoo3O0M.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>MIO Z</h2> | |||
| <h4>Rp. 17.570.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ height: "350px", display: "block" }} | |||
| src="https://image.cermati.com/v1553589176/f2xpfpfmjf2vnpoesrgf.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>MX KING 150</h2> | |||
| <h4>Rp. 23.425.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ height: "350px", display: "block" }} | |||
| src="https://www.yamaha-motor.co.id/uploads/products/ih2AfZY3h4qhAdKQonpJ.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>NEW JUPITER MX 150</h2> | |||
| <h4>Rp. 20.825.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="https://d2pa5gi5n2e1an.cloudfront.net/id/images/article/10721_ID/2.jpg" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>JUPITER Z1</h2> | |||
| <h4>Rp. 18.600.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="https://yamaha-deta.co.id/assets/themes/default/extra-images/detailproduk/ENERGETIC_WHITE.png" | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h2>VEGA FORCE CW</h2> | |||
| <h4>Rp. 16.825.000,00</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ height: "350px", display: "block" }} | |||
| src="https://www.yamaha-motor.co.id/uploads/products/2020020510350637523I93808.png" | |||
| className={navImageClasses} | |||
| /> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ height: "350px", display: "block" }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Aerox-Std-Htm.png" | |||
| className={navImageClasses} | |||
| /> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Aerox-R-Version.png" | |||
| className={navImageClasses} | |||
| /> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Aerox-S-Ver-Red.png" | |||
| className={navImageClasses} | |||
| /> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="https://i0.wp.com/warungasep.net/wp-content/uploads/2020/02/view-1.png" | |||
| className={navImageClasses} | |||
| /> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Fino-Sporty-Blue-768x744.png" | |||
| className={navImageClasses} | |||
| /> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Fino-Grande-Blue-768x744.png" | |||
| className={navImageClasses} | |||
| /> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Mio-S-Green-768x703.png" | |||
| className={navImageClasses} | |||
| /> | |||
| </GridItem> | |||
| <GridItem xs={12} sm={12} md={4}> | |||
| <img | |||
| alt="..." | |||
| style={{ | |||
| height: "350px", | |||
| width: "100%", | |||
| display: "block", | |||
| }} | |||
| src="http://automotive.thamrin.co.id/wp-content/uploads/2019/07/Mio-M3-CW-Black-768x649.png" | |||
| className={navImageClasses} | |||
| /> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Suzuki", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Honda", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Mercedes Benz", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| ]} | |||
| /> | |||
| </GridItem> | |||
| </GridContainer> | |||
| </CardBody> | |||
| <CardFooter className={classes.textMuted} textAlign="center"> | |||
| © 2020 , All Right Reserved by @Thamrin Brother Company | |||
| </CardFooter> | |||
| </Card> | |||
| ); | |||
| } | |||
| export default Product; | |||
| @@ -1,192 +0,0 @@ | |||
| import React from "react"; | |||
| // nodejs library that concatenates classes | |||
| import classNames from "classnames"; | |||
| // @material-ui/core components | |||
| import { makeStyles } from "@material-ui/core/styles"; | |||
| // @material-ui/icons | |||
| import Dashboard from "@material-ui/icons/Dashboard"; | |||
| import LocalGroceryStoreIcon from "@material-ui/icons/LocalGroceryStore"; | |||
| // Component | |||
| 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"; | |||
| import Paper from '@material-ui/core/Paper'; | |||
| import image1 from "assets/img/bg.jpg"; | |||
| import image2 from "assets/img/bg2.png"; | |||
| import image3 from "assets/img/bg3.jpg"; | |||
| const useStyles = makeStyles(styles); | |||
| export default function ProfilePage(props) { | |||
| const classes = useStyles(); | |||
| const settings = { | |||
| dots: true, | |||
| infinite: true, | |||
| speed: 500, | |||
| slidesToShow: 1, | |||
| slidesToScroll: 1, | |||
| autoplay: false | |||
| }; | |||
| const navImageClasses = classNames(classes.imgRounded, classes.imgGallery); | |||
| return ( | |||
| <Card className={classes.textCenter}> | |||
| <div align="center"> | |||
| <CardHeader color="info">Product Detail</CardHeader> | |||
| </div> | |||
| <CardBody> | |||
| <GridContainer justify="center"> | |||
| <Grid align="center" className={classes.marginAuto}> | |||
| <div className={classes.section}> | |||
| <div className={classes.container}> | |||
| <Card carousel style={{width:"700px", height:"400px"}}> | |||
| <Carousel {...settings}> | |||
| <div> | |||
| <img src="https://www.yamaha-motor.co.id/uploads/products/2020020510350637523I93808.png" width="300px" height="400px" alt="First slide" className="slick-image" /> | |||
| </div> | |||
| <div> | |||
| <img src={image2} alt="Second slide" className="slick-image"/> | |||
| </div> | |||
| <div> | |||
| <img src={image3} alt="Third slide" className="slick-image" /> | |||
| </div> | |||
| </Carousel> | |||
| </Card> | |||
| </div> | |||
| </div> | |||
| </Grid> | |||
| <Grid style={{padding:"40px", marginTop:"-30px"}}> | |||
| <h3>ALL NEW NMAX STANDART VERSION</h3> | |||
| <h3>Rp.37.692.000,00</h3> | |||
| <hr></hr> | |||
| <GridContainer justify="center"> | |||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||
| <Card className={classes.marginAuto} style={{height: "125px", width: "125px"}}> | |||
| <img src="https://www.yamaha-motor.co.id/uploads/products/2zTfxFltlPOYe5sMFapR-BLUE-CORE-color.png" | |||
| /> | |||
| </Card> | |||
| </Grid> | |||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||
| <Card className={classes.marginAuto} style={{height: "125px", width: "125px"}}> | |||
| <img src="https://www.yamaha-motor.co.id/uploads/products/3JWFNLBpLj2ff7JgaSEC-VVA1.png" | |||
| /> | |||
| </Card> | |||
| </Grid> | |||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-30px"}}> | |||
| <Card className={classes.marginAuto} style={{height: "125px", width: "125px"}}> | |||
| <img src="https://www.yamaha-motor.co.id/uploads/products/ku13WjySzEsj6LarGvlb-155-CC.png" | |||
| /> | |||
| </Card> | |||
| </Grid> | |||
| </GridContainer> | |||
| <GridContainer justify="center"> | |||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-50px"}}> | |||
| <Card className={classes.marginAuto} style={{height: "125px", width: "125px"}}> | |||
| <img src="https://www.yamaha-motor.co.id/uploads/products/20200402085616smc40j.png" | |||
| /> | |||
| </Card> | |||
| </Grid> | |||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-50px"}}> | |||
| <Card className={classes.marginAuto} style={{height: "125px", width: "125px"}}> | |||
| <img src="https://www.yamaha-motor.co.id/uploads/products/amoV2O00jXseztcZ8ilV-smg.png" | |||
| /> | |||
| </Card> | |||
| </Grid> | |||
| <Grid className={classes.marginAuto} style={{padding:"10px", marginTop:"-50px"}}> | |||
| <Card className={classes.marginAuto} style={{height: "125px", width: "125px"}}> | |||
| <img src="https://www.yamaha-motor.co.id/uploads/products/201912031806276ll9i9.png" | |||
| /> | |||
| </Card> | |||
| </Grid> | |||
| </GridContainer> | |||
| </Grid> | |||
| </GridContainer> | |||
| <GridContainer style={{marginTop:"-80px"}}> | |||
| <GridItem> | |||
| <NavPills | |||
| color="primary" | |||
| tabs={[ | |||
| { | |||
| tabButton: "Overview", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Specification", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Accessories", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Film", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Credit Simulation", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Test Drive", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| ]} | |||
| /> | |||
| </GridItem> | |||
| </GridContainer> | |||
| </CardBody> | |||
| <CardFooter className={classes.textMuted} textAlign="center"> | |||
| © 2020 , All Right Reserved by @Thamrin Brother Company | |||
| </CardFooter> | |||
| </Card> | |||
| ); | |||
| } | |||
| @@ -14,13 +14,14 @@ const DataBusinessPartner = function ({ backend, businessPartners, ...props }) | |||
| const classes = useStyles(); | |||
| const BusinessPartners = businessPartners.map((data) => { | |||
| return ( | |||
| <Grid align="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
| <Card style={{width: "20rem"}}> | |||
| <div align="center"> | |||
| <img | |||
| style={{padding:"20px", height: "180px", width: "300px", display: "block"}} className={classes.imgCardTop} src={`${backend}${data.img[0]["url"]}`}/> | |||
| </div> | |||
| {/* src={`${variablebackenduri}/${data.img[0]["url"]}`} */} | |||
| </Card> | |||
| </Card> | |||
| </Grid> | |||
| ); | |||
| }) | |||
| return ( | |||
| @@ -30,21 +31,7 @@ const DataBusinessPartner = function ({ backend, businessPartners, ...props }) | |||
| </div> | |||
| <div> | |||
| <GridContainer justify="center"> | |||
| <Grid align="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
| {BusinessPartners[0]} | |||
| {BusinessPartners[3]} | |||
| {BusinessPartners[6]} | |||
| </Grid> | |||
| <Grid align="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
| {BusinessPartners[1]} | |||
| {BusinessPartners[4]} | |||
| {BusinessPartners[7]} | |||
| </Grid> | |||
| <Grid align="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
| {BusinessPartners[2]} | |||
| {BusinessPartners[5]} | |||
| {BusinessPartners[8]} | |||
| </Grid> | |||
| {BusinessPartners} | |||
| </GridContainer> | |||
| </div> | |||
| </div> | |||
| @@ -13,12 +13,14 @@ const useStyles = makeStyles(styles); | |||
| const DataService = function ({ backend, service, ...props }) { | |||
| const classes = useStyles(); | |||
| const services = service.map((data, index) => ( | |||
| <Card style={{width: "20rem"}}> | |||
| <div align="center"> | |||
| <img | |||
| style={{height: "180px", width: "300px", display: "block"}} className={classes.imgCardTop} src={`${backend}${data.img[0]["url"]}`}/> | |||
| </div> | |||
| </Card> | |||
| <Grid align="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
| <Card style={{width: "20rem"}}> | |||
| <div align="center"> | |||
| <img | |||
| style={{height: "180px", width: "300px", display: "block"}} className={classes.imgCardTop} src={`${backend}${data.img[0]["url"]}`}/> | |||
| </div> | |||
| </Card> | |||
| </Grid> | |||
| )); | |||
| return ( | |||
| <div className={classes.section} id="notifications"> | |||
| @@ -26,16 +28,8 @@ const DataService = function ({ backend, service, ...props }) { | |||
| <h2>Our Service</h2> | |||
| </div> | |||
| <div> | |||
| <GridContainer justify="center"> | |||
| <Grid align="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
| {services[0]} | |||
| </Grid> | |||
| <Grid align="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
| {services[1]} | |||
| </Grid> | |||
| <Grid align="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
| {services[2]} | |||
| </Grid> | |||
| <GridContainer style={{padding: "40px"}} justify="center"> | |||
| {services} | |||
| </GridContainer> | |||
| </div> | |||
| </div> | |||
| @@ -19,6 +19,7 @@ const DataLatestNews = function ({ backend, news, ...props }) { | |||
| const classes = useStyles(); | |||
| const latnews = news.map((data) => { | |||
| return ( | |||
| <Grid align="center" style={{padding:"30px", marginTop:"-50px"}}> | |||
| <Card style={{width: "20rem"}}> | |||
| <img | |||
| style={{height: "180px", width: "100%", display: "block"}} | |||
| @@ -31,45 +32,35 @@ const DataLatestNews = function ({ backend, news, ...props }) { | |||
| <Button color="info" onclick="myFunction()" id="myBtn">Read More</Button> | |||
| </CardBody> | |||
| </Card> | |||
| </Grid> | |||
| ); | |||
| }) | |||
| return ( | |||
| <div className={classes.section} id="notifications"> | |||
| <div align="center"> | |||
| <h2>Latest News</h2> | |||
| </div> | |||
| <div> | |||
| <GridContainer justify="center"> | |||
| <Grid align="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
| {latnews[0]} | |||
| {latnews[1]} | |||
| </Grid> | |||
| <Grid align="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
| {latnews[2]} | |||
| {latnews[3]} | |||
| </Grid> | |||
| <Grid align="center" style={{padding:"40px", marginTop:"-50px"}}> | |||
| {latnews[4]} | |||
| {latnews[5]} | |||
| </Grid> | |||
| </GridContainer> | |||
| </div> | |||
| <div align="center"> | |||
| <Paginations | |||
| color="info" | |||
| pages={[ | |||
| { text: 1 }, | |||
| { text: "..." }, | |||
| { text: 5 }, | |||
| { text: 6 }, | |||
| { active: true, text: 7 }, | |||
| { text: 8 }, | |||
| { text: 9 }, | |||
| { text: "..." }, | |||
| { text: 12 } | |||
| ]} | |||
| /> | |||
| </div> | |||
| <div align="center"> | |||
| <h2>Latest News</h2> | |||
| </div> | |||
| <div> | |||
| <GridContainer justify="center"> | |||
| {latnews} | |||
| </GridContainer> | |||
| </div> | |||
| <div align="center"> | |||
| <Paginations | |||
| color="info" | |||
| pages={[ | |||
| { text: 1 }, | |||
| { text: "..." }, | |||
| { text: 5 }, | |||
| { text: 6 }, | |||
| { active: true, text: 7 }, | |||
| { text: 8 }, | |||
| { text: 9 }, | |||
| { text: "..." }, | |||
| { text: 12 } | |||
| ]} | |||
| /> | |||
| </div> | |||
| </div> | |||
| ); | |||
| } | |||
| @@ -0,0 +1,115 @@ | |||
| import React from "react"; | |||
| // nodejs library that concatenates classes | |||
| import classNames from "classnames"; | |||
| // @material-ui/core components | |||
| import { makeStyles } from "@material-ui/core/styles"; | |||
| // @material-ui/icons | |||
| import Dashboard from "@material-ui/icons/Dashboard"; | |||
| import LocalGroceryStoreIcon from "@material-ui/icons/LocalGroceryStore"; | |||
| // Component | |||
| import GridContainer from "components/Grid/GridContainer.js"; | |||
| 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 DataProduct = function ({ backend, product, ...props }) { | |||
| const classes = useStyles(); | |||
| const { ...rest } = props; | |||
| const imageClasses = classNames( | |||
| classes.imgRaised, | |||
| classes.imgRoundedCircle, | |||
| classes.imgFluid | |||
| ); | |||
| const navImageClasses = classNames(classes.imgRounded, classes.imgGallery); | |||
| const Product = product.map((data) => { | |||
| console.log(data); | |||
| return ( | |||
| <div> | |||
| <img | |||
| alt="..." | |||
| style={{ height: "350px", display: "block" }} | |||
| src={`${backend}${data.img[0]["url"]}`} | |||
| className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| <h3><a href={"/product_detail?a="+data.id}>{data.name}</a></h3> | |||
| <h4>Rp.{data.price}</h4> | |||
| <Button color="info" round> | |||
| <LocalGroceryStoreIcon className={classes.icons} />{" "} | |||
| Buy | |||
| </Button> | |||
| </div> | |||
| </div> | |||
| ); | |||
| }) | |||
| return ( | |||
| <Card className={classes.textCenter}> | |||
| <div align="center"> | |||
| <CardHeader color="info">Product</CardHeader> | |||
| </div> | |||
| <CardBody> | |||
| <div align="center"> | |||
| <h2>Product & Facilities</h2> | |||
| </div> | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| <NavPills | |||
| alignCenter | |||
| color="primary" | |||
| tabs={[ | |||
| { | |||
| tabButton: "Yamaha", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| {Product} | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Suzuki", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| {Product} | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Honda", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Mercedes Benz", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| ]} | |||
| /> | |||
| </GridItem> | |||
| </GridContainer> | |||
| </CardBody> | |||
| </Card> | |||
| ); | |||
| } | |||
| export default DataProduct; | |||
| @@ -0,0 +1,152 @@ | |||
| import React from "react"; | |||
| // nodejs library that concatenates classes | |||
| import classNames from "classnames"; | |||
| // @material-ui/core components | |||
| import { makeStyles } from "@material-ui/core/styles"; | |||
| // @material-ui/icons | |||
| import Dashboard from "@material-ui/icons/Dashboard"; | |||
| import LocalGroceryStoreIcon from "@material-ui/icons/LocalGroceryStore"; | |||
| // Component | |||
| 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"; | |||
| import Paper from '@material-ui/core/Paper'; | |||
| import image1 from "assets/img/bg.jpg"; | |||
| import image2 from "assets/img/bg2.png"; | |||
| import image3 from "assets/img/bg3.jpg"; | |||
| const useStyles = makeStyles(styles); | |||
| const DataProduct = function ({ backend, detailproduct, ...props }) { | |||
| const classes = useStyles(); | |||
| const { ...rest } = props; | |||
| const imageClasses = classNames( | |||
| classes.imgRaised, | |||
| classes.imgRoundedCircle, | |||
| classes.imgFluid | |||
| ); | |||
| const navImageClasses = classNames(classes.imgRounded, classes.imgGallery); | |||
| const Productdetails = detailproduct.map((data) => { | |||
| console.log(data); | |||
| return ( | |||
| <GridContainer> | |||
| <Grid> | |||
| <div className={classes.section}> | |||
| <div className={classes.container}> | |||
| <Card style={{width:"500px", height:"400px"}}> | |||
| <div> | |||
| <img className={navImageClasses} width="300px" height="400px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} /> | |||
| </div> | |||
| </Card> | |||
| </div> | |||
| </div> | |||
| </Grid> | |||
| <Grid style={{padding:"40px", marginTop:"-30px"}}> | |||
| <h3>{data.name}</h3> | |||
| <h3>Rp.{data.price}</h3> | |||
| <hr></hr> | |||
| </Grid> | |||
| </GridContainer> | |||
| ); | |||
| }) | |||
| return ( | |||
| <Card className={classes.textCenter}> | |||
| <div align="center"> | |||
| <CardHeader color="info">Product Detail</CardHeader> | |||
| </div> | |||
| <CardBody> | |||
| <div> | |||
| {Productdetails[0]} | |||
| </div> | |||
| <GridContainer> | |||
| <GridItem> | |||
| <NavPills | |||
| color="primary" | |||
| tabs={[ | |||
| { | |||
| tabButton: "Overview", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Specification", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Accessories", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Film", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Credit Simulation", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| { | |||
| tabButton: "Test Drive", | |||
| tabIcon: Dashboard, | |||
| tabContent: ( | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| </GridItem> | |||
| </GridContainer> | |||
| ), | |||
| }, | |||
| ]} | |||
| /> | |||
| </GridItem> | |||
| </GridContainer> | |||
| </CardBody> | |||
| <CardFooter className={classes.textMuted} textAlign="center"> | |||
| © 2020 , All Right Reserved by @Thamrin Brother Company | |||
| </CardFooter> | |||
| </Card> | |||
| ); | |||
| } | |||
| export default DataProduct; | |||
| @@ -17,7 +17,7 @@ const DataSnackbarContent = function() { | |||
| <SnackbarContent | |||
| message={ | |||
| <h4> | |||
| Thamrin Group bersama Anda melawan COVID-19. Untuk informasi silakan klik di sini. | |||
| Thamrin Group bersama Anda melawan COVID-19. Untuk informasi silakan <a href="https://covid19.go.id/" target="_blank" className={classes.block}>klik di sini.</a> | |||
| </h4> | |||
| } | |||
| align="center" | |||
| @@ -3,7 +3,7 @@ import Router from "next/router"; | |||
| export default class _error extends Component { | |||
| componentDidMount = () => { | |||
| Router.push("/components"); | |||
| Router.push("/home"); | |||
| }; | |||
| render() { | |||
| @@ -0,0 +1,33 @@ | |||
| import DetailProduct from "../../../api/product/product"; | |||
| export default async function handler(req, res) { | |||
| if (req.method == "POST") { | |||
| var filterKey = req.body.filterKey; | |||
| if (filterKey == "name") { | |||
| var id = req.body.id; | |||
| var name = req.body.name; | |||
| var description = req.body.description; | |||
| var price = req.body.price; | |||
| var detailproduct = await DetailProduct.GetDetailProduct(id, name, description, price); | |||
| if (detailproduct["STATUS"] == 0) { | |||
| res.status(200).json(detailproduct); | |||
| } else if (detailproduct["DATA"]["products"] == null) { | |||
| res | |||
| .status(200) | |||
| .json({ | |||
| STATUS: 0, | |||
| DATA: "Product Tidak Ditemukan" | |||
| }); | |||
| } else { | |||
| res.status(200).json({ | |||
| STATUS: 1, | |||
| DATA: detailproduct["DATA"]["products"], | |||
| }); | |||
| } | |||
| } else { | |||
| res.status(200).send("NOT FOUND"); | |||
| } | |||
| } else { | |||
| res.status(200).send("NOT FOUND"); | |||
| } | |||
| } | |||
| @@ -97,8 +97,6 @@ export async function getServerSideProps(context) { | |||
| carousel = res["DATA"]["carousels"]; | |||
| } | |||
| console.log(carousel); | |||
| return { | |||
| props: { businessPartners, service, carousel, backend }, // will be passed to the page component as props | |||
| }; | |||
| @@ -3,7 +3,7 @@ import Router from "next/router"; | |||
| export default class Index extends Component { | |||
| componentDidMount = () => { | |||
| Router.push("/components"); | |||
| Router.push("/home"); | |||
| }; | |||
| render() { | |||
| @@ -12,7 +12,7 @@ import HeaderLinks from "components/Header/HeaderLinks.js"; | |||
| import Footer from "components/Footer/Footer.js"; | |||
| import GridContainer from "components/Grid/GridContainer.js"; | |||
| import GridItem from "components/Grid/GridItem.js"; | |||
| import SectionProduct from "pages-sections/SectionProduct.js"; | |||
| import DataProduct from "pages-sections/product/product.js"; | |||
| import Parallax from "components/Parallax/Parallax.js"; | |||
| import styles from "assets/jss/nextjs-material-kit/pages/components.js"; | |||
| @@ -20,7 +20,7 @@ import Getproduct from "../api/product/product.js" | |||
| const useStyles = makeStyles(styles); | |||
| export default function Components(props) { | |||
| const Product = function ({ backend, product, ...props }) { | |||
| const classes = useStyles(); | |||
| const { ...rest } = props; | |||
| return ( | |||
| @@ -50,15 +50,18 @@ export default function Components(props) { | |||
| </div> | |||
| </Parallax> | |||
| <div className={classNames(classes.main, classes.mainRaised)}> | |||
| <SectionProduct /> | |||
| <DataProduct product={product} backend={backend}/> | |||
| </div> | |||
| <Footer /> | |||
| </div> | |||
| ); | |||
| } | |||
| export default Product; | |||
| export async function getServerSideProps(context) { | |||
| var product = []; | |||
| const backend = process.env.BACKEND_SERVER_URI; | |||
| var res = await Getproduct.GetProduct(); | |||
| if (res["STATUS"] === 1) { | |||
| @@ -66,6 +69,6 @@ export async function getServerSideProps(context) { | |||
| } | |||
| return { | |||
| props: { product }, // will be passed to the page component as props | |||
| props: { product, backend }, // will be passed to the page component as props | |||
| }; | |||
| } | |||
| @@ -12,13 +12,14 @@ import HeaderLinks from "components/Header/HeaderLinks.js"; | |||
| import Footer from "components/Footer/Footer.js"; | |||
| import GridContainer from "components/Grid/GridContainer.js"; | |||
| import GridItem from "components/Grid/GridItem.js"; | |||
| import SectionProductDetail from "pages-sections/Components-Sections/SectionProductDetail.js"; | |||
| import ProductDetail from "pages-sections/product/product_details.js"; | |||
| import Parallax from "components/Parallax/Parallax.js"; | |||
| import styles from "assets/jss/nextjs-material-kit/pages/components.js"; | |||
| import GetDetailproduct from "../api/product/product.js" | |||
| const useStyles = makeStyles(styles); | |||
| export default function Components(props) { | |||
| const ProductDetails = function ({ backend, detailproduct, ...props }) { | |||
| const classes = useStyles(); | |||
| const { ...rest } = props; | |||
| return ( | |||
| @@ -48,9 +49,27 @@ export default function Components(props) { | |||
| </div> | |||
| </Parallax> | |||
| <div className={classNames(classes.main, classes.mainRaised)}> | |||
| <SectionProductDetail /> | |||
| <ProductDetail detailproduct={detailproduct} backend={backend}/> | |||
| </div> | |||
| <Footer /> | |||
| </div> | |||
| ); | |||
| } | |||
| export default ProductDetails; | |||
| export async function getServerSideProps(context) { | |||
| var detailproduct = []; | |||
| const backend = process.env.BACKEND_SERVER_URI; | |||
| var res = await GetDetailproduct.GetDetailProduct(); | |||
| if (res["STATUS"] === 1) { | |||
| detailproduct = res["DATA"]["products"]; | |||
| } | |||
| console.log(res); | |||
| return { | |||
| props: { detailproduct, backend }, // will be passed to the page component as props | |||
| }; | |||
| } | |||