import React, { Component } from "react"; import Router from "next/router"; import { connect } from "react-redux"; import ContentWrapper from "@/components/Layout/ContentWrapper"; import { Row, Col, Card, CardHeader, CardBody, Button, FormGroup, Popover, PopoverHeader } from "reactstrap"; // import { Editor } from 'react-draft-wysiwyg'; import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css'; import { EditorState, ContentState, convertFromHTML, convertToRaw, convertFromRaw } from 'draft-js'; // import 'draft-js/dist/Draft.css'; import dynamic from 'next/dynamic'; const Editor = dynamic( () => import('react-draft-wysiwyg').then(mod => mod.Editor), { ssr: false }) import draftToHtml from 'draftjs-to-html'; import pdfMake from "pdfmake/build/pdfmake"; import StateToPdfMake from "draft-js-export-pdfmake"; import pdfFonts from "pdfmake/build/vfs_fonts"; import { toast } from "react-toastify"; import { addCatatan } from "../../../actions/catatan"; import { getCsrf } from "../../../actions/security"; pdfMake.vfs = pdfFonts.pdfMake.vfs; import SummerNote from "../../../components/Extras/summernote"; // import ReactSummernote from 'react-summernote'; // import SummerNote from "./SummerNote"; // import rtf2html from "../../../components/Main/trf2html"; // SummerNote.ImportCode(); class NewFile extends Component { constructor(props) { super(props); this.editor = React.createRef(); this.state = { // editorState: EditorState.createEmpty(), copiedd: false, judul: "", simpan: false, menu: "", }; } static getInitialProps = async ({ query }) => { return { query }; }; componentDidMount() { const { query } = this.props; const { id } = query; } onEditorStateChange = (editorState) => { this.setState({ editorState, }); }; handelSimpan = async (data) => { if (this.props?.user?.role.id === 2024) { Swal.fire({ icon: 'error', title: 'Oops...', html: 'Maaf anda tidak memiliki akses untuk menyelesaikan

proses ini.

', confirmButtonColor: "#3e3a8e", confirmButtonText: 'Oke' }) } else { const getToken = await getCsrf(); const _csrf = getToken.token; const { token, query } = this.props; const { id } = query; // const isi = ("editorState", draftToHtml(convertToRaw(this.state.editorState.getCurrentContent()))) const toastid = toast.loading("Please wait..."); const added = await addCatatan(token, id, { "judul": this.state.judul, "isi": this.state.editorState, "menu": "Perpanjangan Sanksi" }, _csrf); if (!added) { toast.update(toastid, { render: "Error", type: "error", isLoading: false, autoClose: true, closeButton: true }); } else { toast.update(toastid, { render: "Success", type: "success", isLoading: false, autoClose: true, closeButton: true }); Router.push(`/app/perpanjangan-sanksi/detail?id=${id}`); // this.setState({ simpan: true }) } } }; handleGeneratePDF = () => { const rawContent = convertToRaw(this.state.editorState.getCurrentContent()); console.log(rawContent) const stateToPdfMake = new StateToPdfMake(rawContent); console.log(stateToPdfMake.generate()); pdfMake.createPdf(stateToPdfMake.generate()).download(); }; setHandleJudul = (e) => { this.setState({ judul: e.target.value }); }; CloseCopiedd = () => { setTimeout(() => { this.setState({ copiedd: !this.state.copiedd }); }, 1000); } Copiedd = () => this.setState({ copiedd: !this.state.copiedd }) convertFileToBase64(file) { return new Promise((resolve, reject) => { const reader = new FileReader() reader.readAsDataURL(file) reader.onload = () => resolve(reader.result) reader.onerror = () => reject(console.log('FileReader Error: ', error)) }) } onImageUpload = (f, cb, e) => { let file = f if (file.length) { file = f[0] } this.convertFileToBase64(file).then(src => { const $image = $('').attr('src', src).wrap('div') this.editor.current.insertNode($image[0]) }) } onChange(e) { //$('span[style*="mso-ignore"]').remove() //let img = $('img[src*="file://"]').attr('loading',true); // console.log(e); } onImagePasteFromWord($imgs) { console.log("onImagePasteFromWord", $imgs); } onPaste(e) { //console.log('--------- onPaste --------', e) let items = e.originalEvent.clipboardData.items; let files = e.originalEvent.clipboardData.files; for (let i = 0; i < files.length; i++) { return e.preventDefault(); } //console.log('---------- items -------------', items) //console.log('---------- files -------------', files) for (let i = 0; i < items.length; i++) { //console.log('---------- item -------------', items[i]) if (items[i].type.indexOf("rtf") > -1) { items[i].getAsString(function (rtf) { // const doc = rtf2html(rtf); //const meta = doc.metadata(); //console.log(doc) // doc // .render() // .then(function (htmlElements) { // var imgs = []; // //console.log('meta', meta); // //console.log('htmlElements', htmlElements); // htmlElements.forEach($html => { // $html.find('img[src*="data:image"]').each((i, el) => { // imgs.push(el); // }); // //$('#test').append($html) // }); // //console.log(imgs) // setTimeout(() => { // //console.log(imgs) // $("img[loading]").each((i, el) => { // if (imgs[i]) el.src = imgs[i].src; // }); // }, 0); // }) // .catch(error => console.error(error)); }); } } } render() { const { editorState } = this.state; return (
{/* console.log(`Using jquery version ${$().jquery}`)} ref={this.editor} /> */}
{this.state.simpan === true ? (
Link Berhasil Disalin
) : (
*Klik tombol 'Simpan' untuk mendapatkan link presensi
) }
); } } const mapStateToProps = (state) => ({ user: state.user, token: state.token }); export default connect(mapStateToProps)(NewFile);