仪表板的动态网格

如何解决仪表板的动态网格

我有一个网页,希望使用仪表板中的this来实现动态网格,用户可以在任何时候将Card标签拖动到页面中的任何位置并将网格的位置保存到我的数据库,并显示数据库及其保存的位置,即使他们注销并登录系统也是如此。我设法在页面内拖动Card标签,但是这会弄乱整个网页。以下是我网页的当前状态。

error

import React,{ Fragment,useEffect,useState,useContext } from 
"react";
// import "../App.css";
import UserContext from "./UserContext";
// import { Bar } from "react-chartjs-2";
import { Tooltip } from "antd";
import { Card } from "react-rainbow-components";
import FullCalendar from "@fullcalendar/react";
import dayGridplugin from "@fullcalendar/daygrid";
import "@fullcalendar/daygrid/main.css";
import { Responsive,WidthProvider } from "react-grid-layout";

const ResponsiveGridLayout = WidthProvider(Responsive);
const Dashboard = () => {
  const { user } = useContext(UserContext);
  const [chartData,setChartData] = useState({});
  const [chartData2,setChartData2] = useState([]);
  //Get counter based on designation
  const [rtoCounter,setRtoCounter] = useState();
  const [pmCounter,setPmCounter] = useState();
  const [noOfProjects,setNoOfProjects] = useState([]);

  const getCountDesignation = async () => {
    try {
      const response = await fetch(
        "http://localhost:5000/employees/getAllCountDesignation"
      );
      const jsonData = await response.json();

      setChartData2(jsonData);
      // console.log("******Get Counter" + jsonData);
      setPmCounter(jsonData[0].count);
      setRtoCounter(jsonData[1].count);
      // setPmCounter(JSON.stringify(jsonData[0].count));
      // setRtoCounter(JSON.stringify(jsonData[1].count));
    } catch (error) {
      console.error(error.message);
    }
  };

  const chart = () => {
    setChartData({
      labels: ["Project Manager","Resident Technical Officer"],datasets: [
        {
          label: ["# of Staff"],data: [pmCounter,rtoCounter],backgroundColor: ["rgba(75,192,0.6"],borderwidth: 4,},],});
  };

  useEffect(() => {
    getCountDesignation();
    const noOfProjectsPerTC = async () => {
      try {
        const response = await fetch(
          "http://localhost:5000/dashboard/getProjectsPerTC"
        );
        const jsonData = await response.json();
        setNoOfProjects(jsonData);
      } catch (error) {
        console.error(error.message);
      }
    };
    noOfProjectsPerTC();
  },[]);

  useEffect(() => {
    // getCountDesignation();
    // chart();
  },[]);
  // chartData2

  for (let i = 0; i < noOfProjects.length; i++) {
    console.log(noOfProjects[i].noofprojects);
  }

  const events = [
    {
      title: "Project 1",start: "2020-11-11",end: "2021-01-01",description: "This is a test description of an event",{
      title: "Project 2",start: "2020-11-12",end: "2020-11-15",];

  return (
    <Fragment>
      <div style={{ width: "100%",padding: "20px 0 5px 20px" }}>
        <div className="welcomePage">
          <h1>Welcome {user.first_name}</h1>
        </div>
      </div>
      {/* <div className="container">
        <div className="card-list">
          <div class="row">
            <div class="col-xl-3 ">
              <div class="card blue">
                <div class="title">All projects</div>
                <i class="zmdi zmdi-upload"></i>
                <div class="value">89</div>
              </div>
            </div>
            <div class="col-xl-3">
              <div class="card green">
                <div class="title">All members</div>
                <i class="zmdi zmdi-upload"></i>
                <div class="value">5,990</div>
              </div>
            </div>
            <div class="col-xl-3 ">
              <div class="card orange">
                <div class="title">Total claims</div>
                <i class="zmdi zmdi-download"></i>
                <div class="value">$80,990</div>
              </div>
            </div>
            <div class="col-xl-3 ">
              <div class="card red">
                <div class="title">Available Staff</div>
                <i class="zmdi zmdi-download"></i>
                <div class="value">3</div>
              </div>
            </div>
          </div>
        </div>
      </div> */}
      <ResponsiveGridLayout
        className="layout"
        // layouts={layouts}
        breakpoints={{ lg: 750,md: 700,sm: 500,xs: 450,xxs: 0 }}
        cols={{ lg: 10,md: 8,sm: 6,xs: 4,xxs: 2 }}
      >
        <div key="1" className="container">
          <Card style={{ width: 750,height: 500,float: "left" }}>
            <img
              alt="map"
              src="https://linkpicture.com/q/imageedit_13_4599432189.gif"
              useMap="#image-map"
            />

            <map name="image-map">
              {/* <div
            style={{ position: "absolute",marginLeft: 460,marginTop: -300 }}
          >
            <Tooltip placement="top" title="Aljunied Hougang">
              <area
                alt="Aljunied Hougang"
                coords="400,215,406,199,414,194,439,200,447,195,441,193,454,186,458,188,470,181,474,174,481,175,486,177,483,184,491,182,494,501,506,508,213,225,518,232,511,243,251,497,256,252,473,258,452,238,448,227,442,440,222,430,223,425,218,416,217,409,404,229"
                shape="poly"
              />
            </Tooltip>
          </div> */}

              {/* <div
            style={{ position: "absolute",marginLeft: 415,marginTop: -350 }}
          >
            <Tooltip placement="top" title="Ang Mo Kio">
              <area
                alt="Ang Mo Kio"
                coords="399,214,198,413,445,453,185,456,183,179,153,150,141,455,135,450,131,130,459,124,431,108,423,109,113,120,402,133,386,146,378,374,158,356,163,369,173,367,371,379,187,375,191,196,373,368,385,204"
                shape="poly"
              />
            </Tooltip>
          </div> */}

              {/* <div
            style={{ position: "absolute",marginLeft: 370,marginTop: -290 }}
          >
            <Tooltip placement="top" title="Bishan Toa Payoh">
              <area
                alt="Bishan Toa Payoh"
                coords="358,384,205,400,216,405,234,395,396,239,408,390,254,393,259,389,263,394,268,271,275,377,265,380,255,364,357,333,246,319,341,196"
                shape="poly"
              />
            </Tooltip>
          </div> */}

              {/* <div
            style={{ position: "absolute",marginLeft: 190,marginTop: -340 }}
          >
            <Tooltip placement="top" title="Choa Chu Kang">
              <area
                alt="Choa Chu Kang"
                coords="85,93,101,231,102,107,242,111,121,240,248,161,190,203,220,226,230,228,235,221,249,229,272,277,224,207,262,261,167,233,168,144,140,132,125,166,212,147,208,138,197,139,134,211,94,85,80,86,99,155,104,145,137,123,117,118,170,119,189,127,91,209"
                shape="poly"
              />
            </Tooltip>
          </div> */}

              <div
                style={{
                  position: "absolute",marginLeft: 590,marginTop: -280,}}
              >
                <Tooltip
                  placement="top"
                  title={"East Coast Town Council \n"}
                  overlayStyle={{ width: 100 }}
                >
                  <area
                    alt="East Coast Town Council"
                    coords="561,178,571,551,557,550,531,236,526,516,512,504,270,287,555,276,576,274,585,586,281,595,278,605,280,615,283,624,639,644,269,651,657,654,641,650,656,210,685,724,172,732,136,725,717,705,114,695,688,666,95,659,98,645,633,627,115,620,626,643,655,662,670,686,617,618,578,162,561,529,505,126,116,524,534,541,558,572,580,129,592,594,599,142,573,569,149,562,152,540,533,140"
                    shape="poly"
                  />
                </Tooltip>
              </div>

              <div
                style={{
                  position: "absolute",marginLeft: 300,marginTop: -300,}}
              >
                <Tooltip
                  placement="top"
                  title="Holland-Bukit Panjang Town Council"
                >
                  <area
                    alt="Holland-Bukit Panjang Town Council"
                    coords="252,289,322,345,318,330,353,267,339,328,314,311,304,297,273,303,285,286,264,257,250,260,209,201,150"
                    shape="poly"
                  />
                </Tooltip>
              </div>

              <div
                style={{
                  position: "absolute",marginLeft: 410,marginTop: -240,}}
              >
                <Tooltip placement="top" title="Jalan Besar Town Council">
                  <area
                    alt="Jalan Besar Town Council"
                    coords="396,407,420,432,245,437,424,417,292,412,302,312,316,399,325,422,331,403,344,337,392,352,381,346,327,370,320,366,313,307,308,310,391,293,282,253,397,237"
                    shape="poly"
                  />
                </Tooltip>
              </div>

              {/* <div
            style={{ position: "absolute",marginLeft: 250,marginTop: -280 }}
          >
            <Tooltip placement="top" title="Jurong Clementi">
              <area
                alt="Jurong Clementi"
                coords="189,202,288,266,279,284,244,218"
                shape="poly"
              />
            </Tooltip>
          </div> */}

              {/* <div
            style={{ position: "absolute",marginTop: -230 }}
          >
            <Tooltip placement="top" title="Marine Parade">
              <area
                alt="Marine Parade"
                coords="404,451,237,492,502,503,510,515,461,428,415,301,299,436,241,418,234"
                shape="poly"
              />
            </Tooltip>
          </div> */}

              <div
                style={{
                  position: "absolute",marginLeft: 260,marginTop: -420,}}
              >
                <Tooltip placement="top" title="Marsiling-Yew Tee Town Council">
                  <area
                    alt="Marsiling-Yew Tee Town Council"
                    coords="283,79,88,294,92,296,103,105,96,100,122,128,290,148,159,165,110,97,247,85"
                    shape="poly"
                  />
                </Tooltip>
              </div>

              <div
                style={{
                  position: "absolute",marginLeft: 350,marginTop: -380,}}
              >
                <Tooltip placement="top" title="Nee Soon Town Council">
                  <area
                    alt="Nee Soon Town Council"
                    coords="311,336,89,362,365,90,87,398,387,360,372,157,354,329,143,321,124"
                    shape="poly"
                  />
                </Tooltip>
              </div>

              <div
                style={{
                  position: "absolute",marginLeft: 500,marginTop: -350,}}
              >
                <Tooltip placement="top" title="Pasir Ris-Punggol Town Council">
                  <area
                    alt="Pasir Ris-Punggol Town Council"
                    coords="458,180,484,495,517,542,539,530,520,154,500,496,487,465,462,457,151,179"
                    shape="poly"
                  />
                </Tooltip>
              </div>

              <div
                style={{
                  position: "absolute",marginLeft: 340,marginTop: -470,}}
              >
                <Tooltip placement="top" title="Sembawang Town Council">
                  <area
                    alt="Sembawang Town Council"
                    coords="284,295,300,334,361,376,106,382,112,411,410,71,65,57,53,50,55,61,70"
                    shape="poly"
                  />
                </Tooltip>
              </div>

              <div
                style={{
                  position: "absolute",marginLeft: 530,marginTop: -310,}}
              >
                <Tooltip placement="top" title="Tampines Town Council">
                  <area
                    alt="Tampines Town Council"
                    coords="503,519,549,556,544,509,211"
                    shape="poly"
                  />
                </Tooltip>
              </div>

              <div
                style={{
                  position: "absolute",marginTop: -220,}}
              >
                <Tooltip placement="top" title="Tanjong Pagar Town Council">
                  <area
                    alt="Tanjong Pagar Town Council"
                    coords="297,315,317,326,343,383,342,355,306,388,262"
                    shape="poly"
                  />
                </Tooltip>
              </div>

              <div
                style={{
                  position: "absolute",marginLeft: 130,marginTop: -250,}}
              >
                <Tooltip placement="top" title="West Coast Town Council">
                  <area
                    alt="West Coast Town Council"
                    coords="81,51,324,43,33,40,38,34,36,44,48,363,56,358,351,82,206,348,340,335,309,176,160,298,338,349,359,347,233"
                    shape="poly"
                  />
                </Tooltip>
              </div>
            </map>
          </Card>
        </div>
        <div key="2">
          <Card style={{ width: 450,float: "right" }}>
            {" "}
            this is for table form of town council
          </Card>
        </div>
        <div key="3" className="container">
          <Card style={{ width: 700,height: 522,float: "left" }}>
            <div style={{ margin: 10 }}>
              <FullCalendar
                defaultview="dayGridMonth"
                // themeSystem="Simplex"
                // header={{
                //   left: "prev,next",//   center: "title",//   right: "dayGridMonth,timeGridWeek,timeGridDay",// }}
                plugins={[dayGridplugin]}
                events={events}
                // eventDidMount={function (info) {
                //   return (
                //     <Tooltip
                //       title={info.event.extendedProps.description}
                //     ></Tooltip>
                //   );
                //   // console.log(info.event.extendedProps.description);
                //   // var tooltip = new Tooltip(info.el,{
                //   //   title: info.event.extendedProps.description,//   //   placement: "top",//   //   trigger: "hover",//   //   container: "body",//   // });
                // }}
                // displayEventEnd="false"
                // eventColor={"#89cff0"}
              />
            </div>
          </Card>
        </div>
        <div key="4">
          <Card style={{ width: 500,float: "right" }}></Card>
        </div>
      </ResponsiveGridLayout>
    </Fragment>
  );
};

export default Dashboard;

有人知道为什么吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?