Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

455 рядки
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. <p style={{fontSize:"2vw", marginTop:"20px"}}><b>Pilih Harga OTR Daerah</b></p>
  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. <p style={{fontSize:"2vw", marginTop:"20px"}}><b>Ulasan (17)</b></p>
  85. <p style={{fontSize:"2vw", marginTop:"20px"}}><b>{data.name}</b></p >
  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. <p style={{fontSize:"2vw", marginTop:"20px"}}><b>{data.name}</b></p>
  141. <Rating name="read-only" value={value} readOnly/>
  142. <div>
  143. <p style={{fontSize:"2vw"}}><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></p>
  146. </div><br/>
  147. <CustomTabs
  148. headerColor="info"
  149. tabs={[
  150. {
  151. tabName: "Detail Product",
  152. tabContent: (
  153. <p className={classes.textCenter}>
  154. <b>Stock Available : {data.stock}</b><br/>
  155. <b>{ReactHtmlParser(data.description)}</b>
  156. </p>
  157. ),
  158. },
  159. {
  160. tabName: "Info Penting",
  161. tabContent: (
  162. <p className={classes.textCenter}>
  163. <h4><b>Informasi mengenai prosedur pengiriman, pembelian dan dokumen</b></h4>
  164. <ul>
  165. <li>Kota Palembang, Kayu Agung, Prabumulih, Pangkalan Balai, Betung : 2-3 hari kerja*</li>
  166. <li>Untuk daerah Sungsang/daerah lain yang menggunakan kapal motor, maka motor diantar sampai di dermaga sesuai dengan jadwal yang diinformasikan</li>
  167. <li>Sekayu, Babat Toman, Pendopo, Baturaja, Martapura, Muara Dua, Lahat, Tanjung Enim, Tugu Mulyo, Belitang : 4-5 hari kerja*</li>
  168. <li>Lubuk Linggau, Curup, Pagar Alam : 6-7 hari kerja*</li>
  169. </ul>
  170. <h4><b>Informasi mengenai prosedur pengiriman, pembelian dan dokumen</b></h4>
  171. <h4><b>Harga</b></h4>
  172. <ul>
  173. <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>
  174. <li>Harga OTR diatas berlaku untuk KTP domisili PALEMBANG, OGAN ILIR, dan BANYUASIN, diluar wilayah tersebut harap menghubungi kami untuk konfirmasi harga.</li>
  175. <li>Harga OTR sewaktu-waktu dapat berubah.</li>
  176. <li>Proses pemesanan sepeda motor tidak dapat dibatalkan dan warna yang sudah dipesan tidak dapat diubah.</li>
  177. <li>Proses pemesanan yang terkait waktu pengiriman produk dan kelengkapan dokumen yang dibutuhkan untuk pembuatan STNK dan BPKB akan diinformasikan oleh pihak Dealer.</li>
  178. <li>Proses pengiriman sepeda motor akan dilakukan setelah pelunasan transaksi dan dokumen yang dibutuhkan telah lengkap.</li>
  179. </ul>
  180. <h4><b>Dokumen</b></h4>
  181. <ul>
  182. <li>Proses pembuatan STNK setelah KTP diterima oleh pihak dealer adalah 19-25 hari kerja*.</li>
  183. <li>Proses pembuatan BPKB adalah 3-4 bulan.</li>
  184. <li>STNK dan BPKB wajib diambil sendiri oleh pihak yang bersangkutan sesuai dengan identitas yang tertera STNK di dealer yang ditunjuk.</li>
  185. <li>Untuk proses pembuatan STNK dan BPKB sepenuhnya menjadi tanggung jawab dealer terkait.</li>
  186. <li>Buku servis diterima bersamaan dengan pengiriman sepeda motor.</li>
  187. </ul>
  188. <h4><b>*tidak termasuk Sabtu dan Minggu.</b></h4>
  189. </p>
  190. ),
  191. },
  192. ]}
  193. />
  194. </Grid>
  195. </GridContainer>
  196. <NavPills
  197. color="primary"
  198. align="center"
  199. alignCenter
  200. tabs={[
  201. {
  202. tabButton: "Overview",
  203. tabIcon: Dashboard,
  204. tabContent: (
  205. <div>
  206. <GridItem className={classes.marginAuto}>
  207. <div align="justify">
  208. <table>
  209. <tr>
  210. <td>
  211. <h4><b>{ReactHtmlParser(data.overview1)}</b></h4>
  212. </td>
  213. <td>
  214. <img src={`${backend}${data.img_overview1["url"]}`} />
  215. </td>
  216. </tr>
  217. <tr>
  218. <td>
  219. <img src={`${backend}${data.img_overview2["url"]}`} />
  220. </td>
  221. <td>
  222. <h4><b>{ReactHtmlParser(data.overview2)}</b></h4>
  223. </td>
  224. </tr>
  225. <tr>
  226. <td>
  227. <h4><b>{ReactHtmlParser(data.overview3)}</b></h4>
  228. </td>
  229. <td>
  230. <img src={`${backend}${data.img_overview3["url"]}`} />
  231. </td>
  232. </tr>
  233. <tr>
  234. <td>
  235. <img src={`${backend}${data.img_overview4["url"]}`} />
  236. </td>
  237. <td>
  238. <h4><b>{ReactHtmlParser(data.overview4)}</b></h4>
  239. </td>
  240. </tr>
  241. <tr>
  242. <td>
  243. <h4><b>{ReactHtmlParser(data.overview5)}</b></h4>
  244. </td>
  245. <td>
  246. <img src={`${backend}${data.img_overview5["url"]}`} />
  247. </td>
  248. </tr>
  249. <tr>
  250. <td>
  251. <img src={`${backend}${data.img_overview6["url"]}`} />
  252. </td>
  253. <td>
  254. <h4><b>{ReactHtmlParser(data.overview6)}</b></h4>
  255. </td>
  256. </tr>
  257. <tr>
  258. <td>
  259. <h4><b>{ReactHtmlParser(data.overview7)}</b></h4>
  260. </td>
  261. <td>
  262. <img src={`${backend}${data.img_overview7["url"]}`} />
  263. </td>
  264. </tr>
  265. <tr>
  266. <td>
  267. <img src={`${backend}${data.img_overview8["url"]}`} />
  268. </td>
  269. <td>
  270. <h4><b>{ReactHtmlParser(data.overview8)}</b></h4>
  271. </td>
  272. </tr>
  273. <tr>
  274. <td>
  275. <h4><b>{ReactHtmlParser(data.overview9)}</b></h4>
  276. </td>
  277. <td>
  278. <img src={`${backend}${data.img_overview9["url"]}`} />
  279. </td>
  280. </tr>
  281. <tr>
  282. <td>
  283. <img src={`${backend}${data.img_overview10["url"]}`} />
  284. </td>
  285. <td>
  286. <h4><b>{ReactHtmlParser(data.overview10)}</b></h4>
  287. </td>
  288. </tr>
  289. </table>
  290. </div>
  291. </GridItem>
  292. </div>
  293. ),
  294. },
  295. // {
  296. // tabButton: "Overview",
  297. // tabIcon: Dashboard,
  298. // tabContent: (
  299. // <div>
  300. // <GridItem className={classes.marginAuto}>
  301. // <div align="center">
  302. // <table>
  303. // <tr>
  304. // <td>
  305. // <h4><b>{ReactHtmlParser(data.overview1)}</b></h4>
  306. // </td>
  307. // <td>
  308. // <img src="https://www.yamaha-motor.co.id/uploads/products/overview/201912012240262893A2540.jpg"/>
  309. // </td>
  310. // </tr>
  311. // <tr>
  312. // <td>
  313. // <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120516484034670K42560.jpg"/>
  314. // </td>
  315. // <td>
  316. // <h4><b>{ReactHtmlParser(data.overview2)}</b></h4>
  317. // </td>
  318. // </tr>
  319. // <tr>
  320. // <td>
  321. // <h4><b>{ReactHtmlParser(data.overview3)}</b></h4>
  322. // </td>
  323. // <td>
  324. // <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120122402661202S19702.jpg"/>
  325. // </td>
  326. // </tr>
  327. // <tr>
  328. // <td>
  329. // <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123231136996Y5592.jpg"/>
  330. // </td>
  331. // <td>
  332. // <h4><b>{ReactHtmlParser(data.overview4)}</b></h4>
  333. // </td>
  334. // </tr>
  335. // <tr>
  336. // <td>
  337. // <h4><b>{ReactHtmlParser(data.overview5)}</b></h4>
  338. // </td>
  339. // <td>
  340. // <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123173855561Z61407.jpg"/>
  341. // </td>
  342. // </tr>
  343. // <tr>
  344. // <td>
  345. // <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123173867373B74912.jpg"/>
  346. // </td>
  347. // <td>
  348. // <h4><b>{ReactHtmlParser(data.overview6)}</b></h4>
  349. // </td>
  350. // </tr>
  351. // <tr>
  352. // <td>
  353. // <h4><b>{ReactHtmlParser(data.overview7)}</b></h4>
  354. // </td>
  355. // <td>
  356. // <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123173831375M60860.jpg"/>
  357. // </td>
  358. // </tr>
  359. // <tr>
  360. // <td>
  361. // <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120122402691982X34635.jpg"/>
  362. // </td>
  363. // <td>
  364. // <h4><b>{ReactHtmlParser(data.overview8)}</b></h4>
  365. // </td>
  366. // </tr>
  367. // <tr>
  368. // <td>
  369. // <h4><b>{ReactHtmlParser(data.overview9)}</b></h4>
  370. // </td>
  371. // <td>
  372. // <img src="https://www.yamaha-motor.co.id/uploads/products/overview/201912012240264043F92645.jpg"/>
  373. // </td>
  374. // </tr>
  375. // <tr>
  376. // <td>
  377. // <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120122402675980Z35071.jpg"/>
  378. // </td>
  379. // <td>
  380. // <h4><b>{ReactHtmlParser(data.overview10)}</b></h4>
  381. // </td>
  382. // </tr>
  383. // </table>
  384. // </div>
  385. // </GridItem>
  386. // </div>
  387. // ),
  388. // },
  389. {
  390. tabButton: "Specification",
  391. tabIcon: Dashboard,
  392. tabContent: (
  393. <GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
  394. <GridItem className={classes.marginAuto}>
  395. <div align="justify">
  396. <h2>Spesifikasi Mesin</h2>
  397. {ReactHtmlParser(data.spesifikasi_mesin)}<br/><br/>
  398. <h2>Spesifikasi Dimensi</h2>
  399. {ReactHtmlParser(data.spesifikasi_dimensi)}<br/><br/>
  400. <h2>Spesifikasi Rangka</h2>
  401. {ReactHtmlParser(data.spesifikasi_rangka)}<br/><br/>
  402. <h2>Spesifikasi Kelistrikan</h2>
  403. {ReactHtmlParser(data.spesifikasi_kelistrikan)}<br/><br/>
  404. </div>
  405. </GridItem>
  406. </GridContainer>
  407. ),
  408. },
  409. {
  410. tabButton: "Video",
  411. tabIcon: Dashboard,
  412. tabContent: (
  413. <GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
  414. <GridItem className={classes.marginAuto}>
  415. <div align="justify">
  416. {ReactHtmlParser(data.film)}
  417. </div>
  418. </GridItem>
  419. </GridContainer>
  420. ),
  421. },
  422. ]}
  423. />
  424. </div>
  425. );
  426. })
  427. return (
  428. <Card className={classes.textCenter}>
  429. <div align="center">
  430. <CardHeader color="info">Product Detail</CardHeader>
  431. </div>
  432. <CardBody>
  433. <div>
  434. {Productdetails}
  435. </div>
  436. </CardBody>
  437. <CardFooter className={classes.textMuted} textAlign="center">
  438. © 2020 , All Right Reserved by @Thamrin Brother Company
  439. </CardFooter>
  440. </Card>
  441. );
  442. }
  443. export default DataProduct;