|
|
|
@ -12,6 +12,10 @@ import { SendOutlined } from '@ant-design/icons';
|
|
|
|
|
import { NotificationContainer, NotificationManager } from 'react-notifications'; |
|
|
|
|
import ContentLoader from 'react-content-loader'; |
|
|
|
|
import { BehindTaskItem, Comment, HealthByBudget, HealthBySchedule, ListLoader, PopupContent, ProgressActualBar, ProgressPlanningBar, SingleTextLoader } from './Components'; |
|
|
|
|
import { Fab, Action } from 'react-tiny-fab'; |
|
|
|
|
import 'react-tiny-fab/dist/styles.css'; |
|
|
|
|
import { useHistory } from "react-router-dom"; |
|
|
|
|
|
|
|
|
|
const { TextArea } = Input; |
|
|
|
|
|
|
|
|
|
const styles = { |
|
|
|
@ -76,6 +80,7 @@ const DashboardProject = () => {
|
|
|
|
|
const [healthBySchedule, setHealthBySchedule] = useState('-') |
|
|
|
|
const [healthByBudget, setHealthByBudget] = useState('-') |
|
|
|
|
const [reportDistribution, setReportDistribution] = useState([]); |
|
|
|
|
let history = useHistory(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
@ -104,6 +109,10 @@ const DashboardProject = () => {
|
|
|
|
|
|
|
|
|
|
}, [plannedCost, totalCost]); |
|
|
|
|
|
|
|
|
|
const handleRedirect = () => { |
|
|
|
|
history.push("/projects/"+GANTT_ID+"/"+PROJECT_ID+"/gantt"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const getProjectDetail = async () => { |
|
|
|
|
setIsReadyProjectDetail(false); |
|
|
|
|
const URL = `${BASE_OSPRO}/api/project/detail/${PROJECT_ID}`; |
|
|
|
@ -456,6 +465,17 @@ const DashboardProject = () => {
|
|
|
|
|
return ( |
|
|
|
|
<div style={{ marginLeft: -25, marginRight: -25 }}> |
|
|
|
|
<NotificationContainer /> |
|
|
|
|
<Fab |
|
|
|
|
icon={<i className="fa fa-bars"/>} |
|
|
|
|
alwaysShowTitle={true} |
|
|
|
|
> |
|
|
|
|
<Action |
|
|
|
|
text="Gantt Chart" |
|
|
|
|
onClick={() => handleRedirect()} |
|
|
|
|
> |
|
|
|
|
<i className="fa fa-gears" /> |
|
|
|
|
</Action> |
|
|
|
|
</Fab> |
|
|
|
|
<Row> |
|
|
|
|
<Col span={18}> |
|
|
|
|
<Row> |
|
|
|
|