import * as React from 'react'; import Paper from '@material-ui/core/Paper'; import { ResponsiveBar } from '@nivo/bar' import { Snackbar, TextField, Typography, withStyles } from '@material-ui/core'; import MuiAlert from '@material-ui/lab/Alert'; import { Autocomplete } from '@material-ui/lab'; import { titleCase } from '../../library/Utils'; import api from '../../api'; import Constant from '../../library/Constant'; const Alert = withStyles({ })((props) => ); // make sure parent container have a defined height when using // responsive component, otherwise height will be 0 and // no chart will be rendered. // website examples showcase many properties, // you'll often use just a few of them. // const MyResponsiveBar = ({ data /* see data tab */ }) => ( // ) export default class DashboardFinancial extends React.Component { constructor(props) { super(props); this.state = { data: [ { "country": "AD", "hot dog": 6, "hot dogColor": "hsl(228, 70%, 50%)", "burger": 53, "burgerColor": "hsl(29, 70%, 50%)", "sandwich": 74, "sandwichColor": "hsl(148, 70%, 50%)", "kebab": 132, "kebabColor": "hsl(54, 70%, 50%)", "fries": 46, "friesColor": "hsl(2, 70%, 50%)", "donut": 146, "donutColor": "hsl(60, 70%, 50%)" }, { "country": "AE", "hot dog": 167, "hot dogColor": "hsl(340, 70%, 50%)", "burger": 133, "burgerColor": "hsl(160, 70%, 50%)", "sandwich": 46, "sandwichColor": "hsl(330, 70%, 50%)", "kebab": 68, "kebabColor": "hsl(298, 70%, 50%)", "fries": 11, "friesColor": "hsl(89, 70%, 50%)", "donut": 119, "donutColor": "hsl(40, 70%, 50%)" }, { "country": "AF", "hot dog": 60, "hot dogColor": "hsl(188, 70%, 50%)", "burger": 120, "burgerColor": "hsl(252, 70%, 50%)", "sandwich": 138, "sandwichColor": "hsl(152, 70%, 50%)", "kebab": 45, "kebabColor": "hsl(256, 70%, 50%)", "fries": 132, "friesColor": "hsl(201, 70%, 50%)", "donut": 130, "donutColor": "hsl(191, 70%, 50%)" }, { "country": "AG", "hot dog": 84, "hot dogColor": "hsl(356, 70%, 50%)", "burger": 102, "burgerColor": "hsl(161, 70%, 50%)", "sandwich": 157, "sandwichColor": "hsl(177, 70%, 50%)", "kebab": 65, "kebabColor": "hsl(74, 70%, 50%)", "fries": 105, "friesColor": "hsl(82, 70%, 50%)", "donut": 90, "donutColor": "hsl(138, 70%, 50%)" }, { "country": "AI", "hot dog": 144, "hot dogColor": "hsl(102, 70%, 50%)", "burger": 62, "burgerColor": "hsl(308, 70%, 50%)", "sandwich": 59, "sandwichColor": "hsl(101, 70%, 50%)", "kebab": 117, "kebabColor": "hsl(152, 70%, 50%)", "fries": 57, "friesColor": "hsl(297, 70%, 50%)", "donut": 34, "donutColor": "hsl(319, 70%, 50%)" }, { "country": "AL", "hot dog": 84, "hot dogColor": "hsl(288, 70%, 50%)", "burger": 93, "burgerColor": "hsl(288, 70%, 50%)", "sandwich": 23, "sandwichColor": "hsl(64, 70%, 50%)", "kebab": 128, "kebabColor": "hsl(118, 70%, 50%)", "fries": 199, "friesColor": "hsl(125, 70%, 50%)", "donut": 184, "donutColor": "hsl(334, 70%, 50%)" }, { "country": "AM", "hot dog": 44, "hot dogColor": "hsl(239, 70%, 50%)", "burger": 17, "burgerColor": "hsl(306, 70%, 50%)", "sandwich": 58, "sandwichColor": "hsl(317, 70%, 50%)", "kebab": 51, "kebabColor": "hsl(148, 70%, 50%)", "fries": 151, "friesColor": "hsl(344, 70%, 50%)", "donut": 174, "donutColor": "hsl(190, 70%, 50%)" } ], }; } componentDidMount() { console.log(this.props.height) } getDetailUser() { let userId = localStorage.getItem(Constant.USER) api.create().getDetailUser(userId).then((response) => { if (response.data) { if (response.ok) { if (response.data.status === 'success') { this.setState({ userCompany: response.data.data.company }, () => { this.getCompanyActive() }) } } } }) } getCompanyActive() { api.create().getPerusahaanActive().then((response) => { // console.log(response); if (response.data) { if (response.data.status === 'success') { let data = response.data.data let comID = this.state.rawData ? this.state.rawData.company_id : 0 let companyData = data.map((item) => { return { company_id: item.company_id, company_name: item.company_name, } }) let arrayBaru = [] this.state.userCompany.map((item, index) => { let indexID = companyData.findIndex((val) => val.company_id == item) if (indexID !== -1) { arrayBaru.push(companyData[indexID]) } }) let defaultProps = { options: arrayBaru, getOptionLabel: (option) => titleCase(option.company_name), }; let index = arrayBaru.findIndex((val) => val.company_id == comID) this.setState({ listCompany: defaultProps, company: arrayBaru.length < 1 ? companyData[0] : (index == -1 ? arrayBaru[0] : arrayBaru[index]) }, () => { this.getLastPeriod() }) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => { if (response.data.message.includes("Someone Logged In")) { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); } }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', listCompany: null, company: null }) } }) } getLastPeriod() { api.create().getLastPeriod(this.state.company.company_id).then(response => { // console.log(response); if (response.data.status === "success") { this.setState({ lastPeriod: response.data.data.last_periode, latestPeriode: response.data.data.latest_periode }, () => { this.getPeriode() }) } }) } getPeriode() { api.create().getPeriodeTransaction().then(response => { let currentYear = new Date().getFullYear() // console.log(currentYear) if (response.data) { if (response.data.status === "success") { let data = [] response.data.data.map((item) => { if (this.state.isApprover) { if (item >= 2000 && item <= (Number(currentYear) + 1)) { data.push(item) } } else { if ((item >= 2000) && (item == this.state.lastPeriod || item < this.state.lastPeriod)) { data.push(item) } } }) let periodeData = data.map((item) => { return { periode: item, } }) let defaultProps = { options: periodeData, getOptionLabel: (option) => option.periode, }; let periode = (this.state.lastPeriod == "" ? String(Number(currentYear) + 1) : this.state.lastPeriod) let index = data.sort((a, b) => a - b).findIndex((val) => val === periode) // console.log(data) // console.log(this.state.latestPeriode) // console.log(periodeData) // console.log(index) this.setState({ listPeriode: defaultProps, periode: index === -1 ? periodeData[0] : periodeData[index] }, () => { // this.getDataTable() // this.getSubmission() this.getReportType() // if (this.state.isApprover === true) { // this.getCompanySubmitted() // } else { // this.getRevision() // } }) } } }) } getReportType() { let payload = { "company_id": this.state.company.company_id, "periode": this.state.periode.periode, "report_type": "Master Budget", } api.create().getReportTypeBody(payload).then(response => { console.log(response); if (response.data) { if (response.data.status === "success") { if (this.state.report.value === 2) { response.data.data.map((item, index) => { if (item.report_name === 'Balance Sheet') { this.setState({ revisionType: item.revision }, ()=> { this.getSubmission() }) } }) } else if (this.state.report.value === 1) { response.data.data.map((item, index) => { if (item.report_name === 'Profit Loss') { this.setState({ revisionType: item.revision }, ()=> { this.getSubmission() }) } }) } else { this.setState({ revisionType: 0 }, ()=> { this.getSubmission() }) } } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', loading: false }, () => { if (response.data.message.includes("Someone Logged In")) { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); } }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', loading: false }) } }) } render() { const { data: chartData } = this.state; return (
Dashboard Financial
this.closeAlert()}> this.closeAlert()} severity={this.state.tipeAlert}> {this.state.messageAlert}
FINANCIAL SUMMARY OF TRIPUTRA GROUP
titleCase(option.label)} id="typereport" onChange={(event, newInputValue) => this.setState({ report: newInputValue, loading: true, previewTable: false }, () => { this.getReportType() })} disableClearable style={{ width: 250 }} renderInput={(params) => } value={this.state.report} />
this.setState({ company: newInputValue, loading: true, previewTable: false }, () => { this.getReportType() })} disableClearable style={{ width: 250 }} renderInput={(params) => } value={this.state.company} />
this.setState({ periode: newInputValue, loading: true, previewTable: false }, () => { this.getReportType() })} disabled={this.state.intent === 'Home' ? true : false} disableClearable style={{ width: 250 }} renderInput={(params) => } value={this.state.periode} />
); } }