sanksi.proses.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. import React, { Component } from 'react';
  2. //import { withRouter } from 'next/router'
  3. import ContentWrapper from '@/components/Layout/ContentWrapper';
  4. import { Row, Col, Card, Button, CardHeader, CardFooter, Table, Nav, NavItem, NavLink, TabContent, TabPane, Pagination, PaginationItem, PaginationLink, ListGroup, ListGroupItem, Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';
  5. //import { Row, Col, Card, CardHeader, CardFooter, Table, Pagination, PaginationItem, PaginationLink } from 'reactstrap';
  6. // import { Row, Col, Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';
  7. import Select from 'react-select';
  8. import { GoogleMap, LoadScript, Marker } from '@react-google-maps/api';
  9. import { GetServerSideProps, NextPage } from 'next';
  10. import ErrorPage from 'next/error';
  11. import fetch from 'node-fetch';
  12. import https from 'https';
  13. const containerStyle = {
  14. width: '100%',
  15. height: '155px'
  16. };
  17. import FormWizardVertical from './sanksi.proses.wizard.js';
  18. var jenisPelanggaran = [];
  19. //const qpt_id = {};
  20. //http://localhost:3000/app/profile?ptId=0BCE4DB7-B207-445D-8D03-0C54B7688252
  21. // Demo with custom style
  22. const DemoMapCustomStyle = props => (
  23. <GoogleMap mapContainerStyle={containerStyle} zoom={14} center={props.location} options={{ styles: props.mapStyles }}>
  24. <Marker position={props.location} />
  25. </GoogleMap>
  26. )
  27. const styleHeaderText = {
  28. color: 'brown'
  29. }
  30. class Profile extends Component {
  31. toggleTab = tab => {
  32. if (this.state.activeTab !== tab) {
  33. this.setState({
  34. activeTab: tab
  35. });
  36. }
  37. }
  38. static async getInitialProps({ query }) {
  39. const httpsAgent = new https.Agent({
  40. rejectUnauthorized: false,
  41. });
  42. //console.log('post agent : ');
  43. //const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/707C3895-B546-4DA5-A6A7-EFE7461A7C7E', {
  44. // const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/'+query.ptId, {
  45. // method: 'get',
  46. // headers: new Headers({
  47. // 'Authorization': 'Bearer 5b62f743-eef2-3370-8c66-6951b2e9c2c5',
  48. // 'Accept': 'application/json'
  49. // }),
  50. // agent: httpsAgent
  51. // }
  52. // )
  53. //console.log('res : ', res);
  54. //const json = await res.json();
  55. //console.log('json : ', json);
  56. const json = [
  57. {
  58. "id": "0BCE4DB7-B207-445D-8D03-0C54B7688252",
  59. "kode": "031031",
  60. "kode_satker": null,
  61. "nama": "Universitas Satyagama",
  62. "nama_singkat": "USG",
  63. "sk_pendirian": "0742/O/1990",
  64. "tgl_sk_pendirian": "1990-12-22",
  65. "sk_operasional": null,
  66. "tgl_sk_operasional": null,
  67. "status": "N",
  68. "alamat": {
  69. "jalan": "Jalan Kamal Raya No 2-A Cengkareng",
  70. "rt": null,
  71. "rw": null,
  72. "dusun": null,
  73. "kelurahan": "-",
  74. "kode_pos": "11730",
  75. "kab_kota": {
  76. "id": "016200",
  77. "nama": "Kota Jakarta Barat"
  78. }
  79. },
  80. "propinsi": {
  81. "id": "010000",
  82. "nama": "Prov. D.K.I. Jakarta"
  83. },
  84. "telepon": "(021) 5452377-78",
  85. "faksimile": "(021) 54391325",
  86. "website": "www.satyagama.ac.id",
  87. "email": "info@satyagama.ac.id",
  88. "status_milik": {
  89. "id": "3",
  90. "nama": "Yayasan"
  91. },
  92. "pembina": {
  93. "id": "728989DD-251E-4516-BE2C-BA17A93A5C51",
  94. "nama": "LLDIKTI III"
  95. },
  96. "bentuk_pendidikan": {
  97. "id": "23",
  98. "nama": "Universitas"
  99. },
  100. "last_update": "2021-08-22",
  101. "negara": {
  102. "id": "ID",
  103. "nama": "Indonesia"
  104. }
  105. }
  106. ]
  107. return { data: json[0] }
  108. }
  109. state = {
  110. dropdownOpen: false,
  111. dropdownOpenUpload: false,
  112. timelineAlt: false,
  113. location: { lat: 33.7906731, lng: -117.8357194 },
  114. customStyle: [{featureType:'water',stylers:[{visibility:'on'},{color:'#bdd1f9'}]},{featureType:'all',elementType:'labels.text.fill',stylers:[{color:'#334165'}]},{featureType:'landscape',stylers:[{color:'#e9ebf1'}]},{featureType:'road.highway',elementType:'geometry',stylers:[{color:'#c5c6c6'}]},{featureType:'road.arterial',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'road.local',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'transit',elementType:'geometry',stylers:[{color:'#d8dbe0'}]},{featureType:'poi',elementType:'geometry',stylers:[{color:'#cfd5e0'}]},{featureType:'administrative',stylers:[{visibility:'on'},{lightness:33}]},{featureType:'poi.park',elementType:'labels',stylers:[{visibility:'on'},{lightness:20}]},{featureType:'road',stylers:[{color:'#d8dbe0',lightness:20}]}],
  115. listA: [],
  116. //isChecked:true,
  117. selectedOptionMulti: [],
  118. activeTab: 'tasks'
  119. }
  120. toggleDD = () => this.setState({
  121. dropdownOpen: !this.state.dropdownOpen
  122. })
  123. toggleDDUpload = () => this.setState({
  124. dropdownOpenUpload: !this.state.dropdownOpenUpload
  125. })
  126. toggleTimeline = e => {
  127. this.setState({
  128. timelineAlt: e.target.checked
  129. })
  130. }
  131. // // handle particular changes on each checkbox
  132. // onHandleChange(listName,index) {
  133. // //set state to checkbox and data in promise mode
  134. // this.setState({
  135. // [listName]: this.state[listName].map(
  136. // (item, i) => (
  137. // index !== i ?
  138. // item : {...item, checked: !this.state[listName][index].checked}
  139. // )
  140. // )
  141. // });
  142. // }
  143. // state = {
  144. // location: { lat: 33.7906731, lng: -117.8357194 },
  145. // customStyle: [{featureType:'water',stylers:[{visibility:'on'},{color:'#bdd1f9'}]},{featureType:'all',elementType:'labels.text.fill',stylers:[{color:'#334165'}]},{featureType:'landscape',stylers:[{color:'#e9ebf1'}]},{featureType:'road.highway',elementType:'geometry',stylers:[{color:'#c5c6c6'}]},{featureType:'road.arterial',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'road.local',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'transit',elementType:'geometry',stylers:[{color:'#d8dbe0'}]},{featureType:'poi',elementType:'geometry',stylers:[{color:'#cfd5e0'}]},{featureType:'administrative',stylers:[{visibility:'on'},{lightness:33}]},{featureType:'poi.park',elementType:'labels',stylers:[{visibility:'on'},{lightness:20}]},{featureType:'road',stylers:[{color:'#d8dbe0',lightness:20}]}]
  146. // }
  147. // renderTableData() {
  148. // //const dataTable = this.props.data;
  149. // //if (dataTable === true ) {
  150. // return this.state.tbljenisPelanggaran.map((jp,index) => {
  151. // return (
  152. // // <tr>
  153. // // <td>
  154. // // <label>{index+1}</label>
  155. // // </td>
  156. // // <td>
  157. // // <div className="media align-items-center">
  158. // // <a className="mr-3" href="">
  159. // // <img className="img-fluid rounded thumb64" src="/static/img/dummy-search.png" alt="Dummy"/>
  160. // // </a>
  161. // // <div className="media-body d-flex">
  162. // // <div>
  163. // // <h4 className="m-0">{pt.nama}</h4>
  164. // // <small className="text-muted">{pt.sk_pendirian} - {pt.website} - {pt.email}</small>
  165. // // <p>{pt.alamat.jalan}</p>
  166. // // </div>
  167. // // <div className="ml-auto">
  168. // // <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>View</Button>
  169. // // </div>
  170. // // </div>
  171. // // </div>
  172. // // </td>
  173. // // </tr>
  174. // <tr>
  175. // <td><label>{index+1}</label></td>
  176. // <td>
  177. // <div className="media align-items-center">
  178. // <div className="media-body d-flex">
  179. // <div>
  180. // <p>{jp.Pelanggaran}</p>
  181. // <p>TMT : {jp.TMTBulan} Bulan</p>
  182. // <p>Level Pelanggaran : {jp.LabelSangsi}</p>
  183. // </div>
  184. // </div>
  185. // </div>
  186. // </td>
  187. // <td>
  188. // <div className="media align-items-center">
  189. // <div className="media-body d-flex">
  190. // <div>
  191. // <p>{jp.Sangsi}</p>
  192. // <p>Keterangan : {jp.KeteranganSangsi}</p>
  193. // </div>
  194. // </div>
  195. // </div>
  196. // </td>
  197. // <td>
  198. // <div className="checkbox c-checkbox">
  199. // <label>
  200. // {/* <input type="checkbox" checked={this.state.listA[index].checked} onChange={e => this.handleChange('listA', index)}/> */}
  201. // <input
  202. // //name="cb"{jp.idPelanggaran}
  203. // type="checkbox"
  204. // // checked={
  205. // // jp.checked=true
  206. // // }
  207. // checked={this.state.tbljenisPelanggaran[jp.idPelanggaran].checked}
  208. // //{this.state.listA[0].checked}
  209. // onChange={
  210. // e => this.onHandleChange('tbljenisPelanggaran',jp.idPelanggaran)
  211. // }
  212. // />
  213. // <span className="fa fa-check"></span>
  214. // </label>
  215. // </div>
  216. // </td>
  217. // </tr>
  218. // )
  219. // })
  220. // //}
  221. // }
  222. /* handleApplyClick = () => {
  223. const _noSangsi = document.getElementById('noSangsi').value
  224. const _hisJP=[];
  225. //Get data for filter by checked
  226. this.state.tbljenisPelanggaran.filter(
  227. _jp => _jp.checked == true
  228. ).map(selectedPelanggaran => (
  229. _hisJP.push(selectedPelanggaran)
  230. ));
  231. this.state.hisJenisPelanggaran.push(
  232. {
  233. "noSangsi":_noSangsi,
  234. "pelanggaran":_hisJP
  235. }
  236. )
  237. console.log("Result hisJenisPelanggaran : ", this.state.hisJenisPelanggaran)
  238. } */
  239. render() {
  240. const { selectedOptionMulti } = this.state;
  241. return (
  242. <ContentWrapper unwrap>
  243. <div className="bg-cover" style={{backgroundImage: 'url(/static/img/profile-bg.png)'}}>
  244. <div className="p-4 text-center" style={styleHeaderText} >
  245. <img className="img-thumbnail rounded-circle thumb128" src="/static/img/univ-avatar.png" alt="Avatar"/>
  246. <h3 className="m-0">{this.props.data.nama}</h3>
  247. <p>{this.props.data.website}</p>
  248. <p>{this.props.data.sk_pendirian}</p>
  249. <p>{this.props.data.alamat.jalan}</p>
  250. </div>
  251. </div>
  252. {/* <div className="text-center bg-gray-dark p-3 mb-4">
  253. <Row>
  254. <Col xs="4" className="br">
  255. <h3 className="m-0">400</h3>
  256. <p className="m-0">
  257. <span className="d-none d-md-inline">Profile</span>
  258. <span>Views</span>
  259. </p>
  260. </Col>
  261. <Col xs="4" className="br">
  262. <h3 className="m-0">2000</h3>
  263. <p className="m-0">Likes</p>
  264. </Col>
  265. <Col xs="4">
  266. <h3 className="m-0">100</h3>
  267. <p className="m-0">Following</p>
  268. </Col>
  269. </Row>
  270. </div> */}
  271. {/* START card */}
  272. <div className="p-3">
  273. {/* <Card className="card-default">
  274. <CardHeader> */}
  275. {/* START panel tab */}
  276. {/* <div className="card card-transparent"> */}
  277. <Nav tabs justified>
  278. <NavItem>
  279. <NavLink className={ this.state.activeTab === 'tasks' ? 'active':'' }
  280. onClick={() => { this.toggleTab('tasks'); }}
  281. >
  282. <em className="far fa-clock fa-fw"></em> History Jenis Pelanggaran
  283. </NavLink>
  284. </NavItem>
  285. {/* <NavItem>
  286. <NavLink className={ this.state.activeTab === 'trans' ? 'active':'' }
  287. onClick={() => { this.toggleTab('trans'); }}
  288. >
  289. <em className="fas fa-info-circle"></em> Action Jenis Pelanggaran
  290. </NavLink>
  291. </NavItem> */}
  292. <NavItem>
  293. <NavLink className={ this.state.activeTab === 'wizard' ? 'active':'' }
  294. onClick={() => { this.toggleTab('wizard'); }}
  295. >
  296. <em className="fas fa-info-circle"></em> Action Jenis Pelanggaran
  297. </NavLink>
  298. </NavItem>
  299. </Nav>
  300. <TabContent activeTab={this.state.activeTab} className="bg-white p-0">
  301. <TabPane tabId="tasks">
  302. <div className="p-3">
  303. {/* START card */}
  304. <Card className="card-default">
  305. <CardHeader>Daftar Pelanggaran</CardHeader>
  306. {/* START table-responsive */}
  307. <Table striped bordered hover responsive>
  308. <thead>
  309. <tr>
  310. <th>ID Laporan</th>
  311. <th>UUID Pelanggaran</th>
  312. <th>Progres</th>
  313. <th>Aktivitas Terakhir</th>
  314. <th></th>
  315. </tr>
  316. </thead>
  317. <tbody>
  318. <tr>
  319. <td>
  320. {/* <div className="ml-auto">ABCDEFGH012345</div> */}
  321. <div className="d-flex align-items-center mb-3">BI:54678</div>
  322. </td>
  323. <td>
  324. {/* <div className="ml-auto">ABCDEFGH012345</div> */}
  325. <div className="d-flex align-items-center mb-3">ABCDEFGH012345</div>
  326. </td>
  327. <td>
  328. <div className="progress progress-sm">
  329. <div className="progress-bar progress-bar-striped bg-success" role="progressbar" style={{width: '10%'}}>
  330. {/* <span className="sr-only">80% Complete</span> */}
  331. {/* <div className="radial-bar radial-bar-50 radial-bar-xs" data-label="50%"></div> */}
  332. </div>
  333. </div>
  334. </td>
  335. <td>
  336. <div className="d-flex align-items-center mb-3">05/05/2021</div>
  337. {/* <div className="ml-auto">05/05/2021</div> */}
  338. </td>
  339. <td>
  340. <div className="d-flex align-items-center mb-3">
  341. <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>Lanjutkan</Button>
  342. </div>
  343. </td>
  344. </tr>
  345. </tbody>
  346. </Table>
  347. {/* END table-responsive */}
  348. </Card>
  349. {/* END card */}
  350. </div>
  351. </TabPane>
  352. <TabPane tabId="wizard" className="p-3">
  353. <FormWizardVertical />
  354. </TabPane>
  355. </TabContent>
  356. {/* </div> */}
  357. {/* END panel tab */}
  358. {/* </CardHeader>
  359. </Card> */}
  360. </div>
  361. {/* START card */}
  362. <div className="p-3">
  363. </div>
  364. </ContentWrapper>
  365. );
  366. }
  367. }
  368. export default Profile;