Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

453 righe
21 KiB

  1. import React, { useState, useEffect } from "react";
  2. import classNames from "classnames";
  3. import { makeStyles } from "@material-ui/core/styles";
  4. import ReactHtmlParser from "react-html-parser";
  5. import Dashboard from "@material-ui/icons/Dashboard";
  6. import Icon from "@material-ui/core/Icon";
  7. import NumberFormat from 'react-number-format';
  8. import Rating from '@material-ui/lab/Rating';
  9. import CustomTabs from "components/CustomTabs/CustomTabs.js";
  10. import Select from 'react-select';
  11. import GridContainer from "components/Grid/GridContainer.js";
  12. import Grid from '@material-ui/core/Grid';
  13. import GridItem from "components/Grid/GridItem.js";
  14. import NavPills from "components/NavPills/NavPills.js";
  15. import Card from "components/Card/Card.js";
  16. import CardBody from "components/Card/CardBody.js";
  17. import CardHeader from "components/Card/CardHeader.js";
  18. import CardFooter from "components/Card/CardFooter.js";
  19. import Button from "components/CustomButtons/Button.js";
  20. import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js";
  21. import Carousel from "react-slick";
  22. const useStyles = makeStyles(styles);
  23. const DataProduct = function ({ backend, detailproduct, ...props }) {
  24. const classes = useStyles();
  25. const { ...rest } = props;
  26. const imageClasses = classNames(
  27. classes.imgRaised,
  28. classes.imgRoundedCircle,
  29. classes.imgFluid
  30. );
  31. const settings = {
  32. dots: true,
  33. infinite: true,
  34. speed: 1000,
  35. slidesToShow: 1,
  36. slidesToScroll: 1,
  37. autoplay: true,
  38. time: 5
  39. };
  40. const [value, setValue] = React.useState(5);
  41. const [value5, setValue5] = React.useState(5);
  42. const [value4, setValue4] = React.useState(4);
  43. const [value3, setValue3] = React.useState(3);
  44. const [value2, setValue2] = React.useState(2);
  45. const [value1, setValue1] = React.useState(1);
  46. const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
  47. const ProdcutImgColor = detailproduct.map((data) => {
  48. return (
  49. <div>
  50. </div>
  51. );
  52. })
  53. const Productdetails = detailproduct.map((data) => {
  54. return (
  55. <div>
  56. <GridContainer>
  57. <Grid fluid xs={5}>
  58. <div className={classes.section} id="notifications">
  59. <div className={classes.section}>
  60. <div className={classes.container}>
  61. <GridContainer>
  62. <GridItem className={classes.marginAuto}>
  63. <div className="container">
  64. <Carousel>
  65. <img src={`${backend}${data.img[0]["url"]}`}/>
  66. <img src={`${backend}${data.img[1]["url"]}`}/>
  67. <img src={`${backend}${data.img[2]["url"]}`}/>
  68. <img src={`${backend}${data.img[3]["url"]}`}/>
  69. <img src={`${backend}${data.img[4]["url"]}`}/>
  70. <img src={`${backend}${data.img[5]["url"]}`}/>
  71. </Carousel>
  72. </div>
  73. <div align="center">
  74. <h3><b>Pilih Harga OTR Daerah</b></h3>
  75. <Select
  76. getOptionLabel={option => `${option.name}`}
  77. getOptionValue={option => option.id}
  78. options={data.product_otrs}
  79. isMulti
  80. instanceId="name"
  81. placeholder="Pilih Harga OTR"
  82. onChange={values => handleName(values)}
  83. />
  84. <h3><b>Ulasan (17)</b></h3>
  85. <h5><b>{data.name}</b></h5>
  86. <GridContainer>
  87. <Grid fluid xs={5}>
  88. <h1><b>5.0</b></h1>
  89. <Rating align="center" name="read-only" value={value} readOnly/>
  90. </Grid>
  91. <Grid fluid xs={5}>
  92. <GridContainer>
  93. <Grid fluid xs={3}>
  94. <Rating name="read-only" value={value5} readOnly/>
  95. </Grid>
  96. <Grid fluid xs={5}>
  97. </Grid>
  98. </GridContainer>
  99. <GridContainer>
  100. <Grid fluid xs={5}>
  101. <Rating name="read-only" value={value4} readOnly/>
  102. </Grid>
  103. <Grid fluid xs={5}>
  104. </Grid>
  105. </GridContainer>
  106. <GridContainer>
  107. <Grid fluid xs={5}>
  108. <Rating name="read-only" value={value3} readOnly/>
  109. </Grid>
  110. <Grid fluid xs={5}>
  111. </Grid>
  112. </GridContainer>
  113. <GridContainer>
  114. <Grid fluid xs={5}>
  115. <Rating name="read-only" value={value2} readOnly/>
  116. </Grid>
  117. <Grid fluid xs={5}>
  118. </Grid>
  119. </GridContainer>
  120. <GridContainer>
  121. <Grid fluid xs={5}>
  122. <Rating name="read-only" value={value1} readOnly/>
  123. </Grid>
  124. <Grid fluid xs={5}>
  125. </Grid>
  126. </GridContainer>
  127. </Grid>
  128. </GridContainer>
  129. </div>
  130. {/* <Button color="info" round href={"/product_detail?s="+data.id}>
  131. <Icon className={classes.icons}>shopping_cart</Icon>Add To Cart
  132. </Button> */}
  133. </GridItem>
  134. </GridContainer>
  135. </div>
  136. </div>
  137. </div>
  138. </Grid>
  139. <Grid xs={7} style={{padding:"40px", marginTop:"-60px"}}>
  140. <h3><b>{data.name}</b></h3>
  141. <Rating name="read-only" value={value} readOnly/>
  142. <div style={{marginTop:"-20px"}}>
  143. <h3><b>
  144. <NumberFormat value={data.price} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /> s/d <NumberFormat value={data.price2} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  145. </b></h3>
  146. </div><br/>
  147. <CustomTabs
  148. headerColor="info"
  149. tabs={[
  150. {
  151. tabName: "Detail Product",
  152. tabContent: (
  153. <p className={classes.textCenter}>
  154. <b>{ReactHtmlParser(data.description)}</b>
  155. </p>
  156. ),
  157. },
  158. {
  159. tabName: "Info Penting",
  160. tabContent: (
  161. <p className={classes.textCenter}>
  162. <h4><b>Informasi mengenai prosedur pengiriman, pembelian dan dokumen</b></h4>
  163. <ul>
  164. <li>Kota Palembang, Kayu Agung, Prabumulih, Pangkalan Balai, Betung : 2-3 hari kerja*</li>
  165. <li>Untuk daerah Sungsang/daerah lain yang menggunakan kapal motor, maka motor diantar sampai di dermaga sesuai dengan jadwal yang diinformasikan</li>
  166. <li>Sekayu, Babat Toman, Pendopo, Baturaja, Martapura, Muara Dua, Lahat, Tanjung Enim, Tugu Mulyo, Belitang : 4-5 hari kerja*</li>
  167. <li>Lubuk Linggau, Curup, Pagar Alam : 6-7 hari kerja*</li>
  168. </ul>
  169. <h4><b>Informasi mengenai prosedur pengiriman, pembelian dan dokumen</b></h4>
  170. <h4><b>Harga</b></h4>
  171. <ul>
  172. <li>Harga OTR sudah termasuk biaya pengiriman dan BBN, kecuali tambahan pengenaan pajak progresif kepemilikan kendaraan bermotor (sesuai dengan peraturan yang telah ditetapkan oleh pemerintah)</li>
  173. <li>Harga OTR diatas berlaku untuk KTP domisili PALEMBANG, OGAN ILIR, dan BANYUASIN, diluar wilayah tersebut harap menghubungi kami untuk konfirmasi harga.</li>
  174. <li>Harga OTR sewaktu-waktu dapat berubah.</li>
  175. <li>Proses pemesanan sepeda motor tidak dapat dibatalkan dan warna yang sudah dipesan tidak dapat diubah.</li>
  176. <li>Proses pemesanan yang terkait waktu pengiriman produk dan kelengkapan dokumen yang dibutuhkan untuk pembuatan STNK dan BPKB akan diinformasikan oleh pihak Dealer.</li>
  177. <li>Proses pengiriman sepeda motor akan dilakukan setelah pelunasan transaksi dan dokumen yang dibutuhkan telah lengkap.</li>
  178. </ul>
  179. <h4><b>Dokumen</b></h4>
  180. <ul>
  181. <li>Proses pembuatan STNK setelah KTP diterima oleh pihak dealer adalah 19-25 hari kerja*.</li>
  182. <li>Proses pembuatan BPKB adalah 3-4 bulan.</li>
  183. <li>STNK dan BPKB wajib diambil sendiri oleh pihak yang bersangkutan sesuai dengan identitas yang tertera STNK di dealer yang ditunjuk.</li>
  184. <li>Untuk proses pembuatan STNK dan BPKB sepenuhnya menjadi tanggung jawab dealer terkait.</li>
  185. <li>Buku servis diterima bersamaan dengan pengiriman sepeda motor.</li>
  186. </ul>
  187. <h4><b>*tidak termasuk Sabtu dan Minggu.</b></h4>
  188. </p>
  189. ),
  190. },
  191. ]}
  192. />
  193. </Grid>
  194. </GridContainer>
  195. <NavPills
  196. color="primary"
  197. align="center"
  198. alignCenter
  199. tabs={[
  200. // {
  201. // tabButton: "Overview",
  202. // tabIcon: Dashboard,
  203. // tabContent: (
  204. // <div>
  205. // <GridItem className={classes.marginAuto}>
  206. // <div align="justify">
  207. // <table>
  208. // <tr>
  209. // <td>
  210. // <h4><b>{ReactHtmlParser(data.overview1)}</b></h4>
  211. // </td>
  212. // <td>
  213. // <img src={`${backend}${data.img_overview1["url"]}`} />
  214. // </td>
  215. // </tr>
  216. // <tr>
  217. // <td>
  218. // <img src={`${backend}${data.img_overview2["url"]}`} />
  219. // </td>
  220. // <td>
  221. // <h4><b>{ReactHtmlParser(data.overview2)}</b></h4>
  222. // </td>
  223. // </tr>
  224. // <tr>
  225. // <td>
  226. // <h4><b>{ReactHtmlParser(data.overview3)}</b></h4>
  227. // </td>
  228. // <td>
  229. // <img src={`${backend}${data.img_overview3["url"]}`} />
  230. // </td>
  231. // </tr>
  232. // <tr>
  233. // <td>
  234. // <img src={`${backend}${data.img_overview4["url"]}`} />
  235. // </td>
  236. // <td>
  237. // <h4><b>{ReactHtmlParser(data.overview4)}</b></h4>
  238. // </td>
  239. // </tr>
  240. // <tr>
  241. // <td>
  242. // <h4><b>{ReactHtmlParser(data.overview5)}</b></h4>
  243. // </td>
  244. // <td>
  245. // <img src={`${backend}${data.img_overview5["url"]}`} />
  246. // </td>
  247. // </tr>
  248. // <tr>
  249. // <td>
  250. // <img src={`${backend}${data.img_overview6["url"]}`} />
  251. // </td>
  252. // <td>
  253. // <h4><b>{ReactHtmlParser(data.overview6)}</b></h4>
  254. // </td>
  255. // </tr>
  256. // <tr>
  257. // <td>
  258. // <h4><b>{ReactHtmlParser(data.overview7)}</b></h4>
  259. // </td>
  260. // <td>
  261. // <img src={`${backend}${data.img_overview7["url"]}`} />
  262. // </td>
  263. // </tr>
  264. // <tr>
  265. // <td>
  266. // <img src={`${backend}${data.img_overview8["url"]}`} />
  267. // </td>
  268. // <td>
  269. // <h4><b>{ReactHtmlParser(data.overview8)}</b></h4>
  270. // </td>
  271. // </tr>
  272. // <tr>
  273. // <td>
  274. // <h4><b>{ReactHtmlParser(data.overview9)}</b></h4>
  275. // </td>
  276. // <td>
  277. // <img src={`${backend}${data.img_overview9["url"]}`} />
  278. // </td>
  279. // </tr>
  280. // <tr>
  281. // <td>
  282. // <img src={`${backend}${data.img_overview10["url"]}`} />
  283. // </td>
  284. // <td>
  285. // <h4><b>{ReactHtmlParser(data.overview10)}</b></h4>
  286. // </td>
  287. // </tr>
  288. // </table>
  289. // </div>
  290. // </GridItem>
  291. // </div>
  292. // ),
  293. // },
  294. {
  295. tabButton: "Overview",
  296. tabIcon: Dashboard,
  297. tabContent: (
  298. <div>
  299. <GridItem className={classes.marginAuto}>
  300. <div align="center">
  301. <table>
  302. <tr>
  303. <td>
  304. <h4><b>{ReactHtmlParser(data.overview1)}</b></h4>
  305. </td>
  306. <td>
  307. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/201912012240262893A2540.jpg"/>
  308. </td>
  309. </tr>
  310. <tr>
  311. <td>
  312. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120516484034670K42560.jpg"/>
  313. </td>
  314. <td>
  315. <h4><b>{ReactHtmlParser(data.overview2)}</b></h4>
  316. </td>
  317. </tr>
  318. <tr>
  319. <td>
  320. <h4><b>{ReactHtmlParser(data.overview3)}</b></h4>
  321. </td>
  322. <td>
  323. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120122402661202S19702.jpg"/>
  324. </td>
  325. </tr>
  326. <tr>
  327. <td>
  328. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123231136996Y5592.jpg"/>
  329. </td>
  330. <td>
  331. <h4><b>{ReactHtmlParser(data.overview4)}</b></h4>
  332. </td>
  333. </tr>
  334. <tr>
  335. <td>
  336. <h4><b>{ReactHtmlParser(data.overview5)}</b></h4>
  337. </td>
  338. <td>
  339. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123173855561Z61407.jpg"/>
  340. </td>
  341. </tr>
  342. <tr>
  343. <td>
  344. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123173867373B74912.jpg"/>
  345. </td>
  346. <td>
  347. <h4><b>{ReactHtmlParser(data.overview6)}</b></h4>
  348. </td>
  349. </tr>
  350. <tr>
  351. <td>
  352. <h4><b>{ReactHtmlParser(data.overview7)}</b></h4>
  353. </td>
  354. <td>
  355. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123173831375M60860.jpg"/>
  356. </td>
  357. </tr>
  358. <tr>
  359. <td>
  360. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120122402691982X34635.jpg"/>
  361. </td>
  362. <td>
  363. <h4><b>{ReactHtmlParser(data.overview8)}</b></h4>
  364. </td>
  365. </tr>
  366. <tr>
  367. <td>
  368. <h4><b>{ReactHtmlParser(data.overview9)}</b></h4>
  369. </td>
  370. <td>
  371. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/201912012240264043F92645.jpg"/>
  372. </td>
  373. </tr>
  374. <tr>
  375. <td>
  376. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120122402675980Z35071.jpg"/>
  377. </td>
  378. <td>
  379. <h4><b>{ReactHtmlParser(data.overview10)}</b></h4>
  380. </td>
  381. </tr>
  382. </table>
  383. </div>
  384. </GridItem>
  385. </div>
  386. ),
  387. },
  388. {
  389. tabButton: "Specification",
  390. tabIcon: Dashboard,
  391. tabContent: (
  392. <GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
  393. <GridItem className={classes.marginAuto}>
  394. <div align="justify">
  395. <h2>Spesifikasi Mesin</h2>
  396. {ReactHtmlParser(data.spesifikasi_mesin)}<br/><br/>
  397. <h2>Spesifikasi Dimensi</h2>
  398. {ReactHtmlParser(data.spesifikasi_dimensi)}<br/><br/>
  399. <h2>Spesifikasi Rangka</h2>
  400. {ReactHtmlParser(data.spesifikasi_rangka)}<br/><br/>
  401. <h2>Spesifikasi Kelistrikan</h2>
  402. {ReactHtmlParser(data.spesifikasi_kelistrikan)}<br/><br/>
  403. </div>
  404. </GridItem>
  405. </GridContainer>
  406. ),
  407. },
  408. {
  409. tabButton: "Film",
  410. tabIcon: Dashboard,
  411. tabContent: (
  412. <GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
  413. <GridItem className={classes.marginAuto}>
  414. <div align="justify">
  415. {ReactHtmlParser(data.film)}
  416. </div>
  417. </GridItem>
  418. </GridContainer>
  419. ),
  420. },
  421. ]}
  422. />
  423. </div>
  424. );
  425. })
  426. return (
  427. <Card className={classes.textCenter}>
  428. <div align="center">
  429. <CardHeader color="info">Product Detail</CardHeader>
  430. </div>
  431. <CardBody>
  432. <div>
  433. {Productdetails}
  434. </div>
  435. </CardBody>
  436. <CardFooter className={classes.textMuted} textAlign="center">
  437. © 2020 , All Right Reserved by @Thamrin Brother Company
  438. </CardFooter>
  439. </Card>
  440. );
  441. }
  442. export default DataProduct;