Browse Source

NestedTables

uzairrizwan1 1 year ago
parent
commit
6b407c6abf
3 changed files with 234 additions and 0 deletions
  1. 5 0
      myapp/src/App.js
  2. 154 0
      myapp/src/components/nestedTable.js
  3. 75 0
      myapp/src/components/table.js

+ 5 - 0
myapp/src/App.js

@@ -2,6 +2,9 @@
 import React from "react";
 import React from "react";
 import ChartComponent from "./components/ChartComponent";
 import ChartComponent from "./components/ChartComponent";
 import FormComponent from "./components/form";
 import FormComponent from "./components/form";
+import TableComponent from "./components/table";
+import NestedTableComponent from "./components/nestedTable";
+
 
 
 
 
 function App() {
 function App() {
@@ -10,6 +13,8 @@ function App() {
       <h1>My Dashboard</h1>
       <h1>My Dashboard</h1>
       <ChartComponent />
       <ChartComponent />
       <FormComponent />
       <FormComponent />
+      <TableComponent />
+     <NestedTableComponent />
 
 
     </div>
     </div>
   );
   );

+ 154 - 0
myapp/src/components/nestedTable.js

@@ -0,0 +1,154 @@
+import { DownOutlined } from '@ant-design/icons';
+import { Badge, Dropdown, Space, Table } from 'antd';
+import React from 'react';
+const items = [
+  {
+    key: '1',
+    label: 'Action 1',
+  },
+  {
+    key: '2',
+    label: 'Action 2',
+  },
+];
+const NestedTableComponent = () => {
+  const expandedRowRender = () => {
+    const columns = [
+      {
+        title: 'Date',
+        dataIndex: 'date',
+        key: 'date',
+      },
+      {
+        title: 'Name',
+        dataIndex: 'name',
+        key: 'name',
+      },
+      {
+        title: 'Status',
+        key: 'state',
+        render: () => (
+          <span>
+            <Badge status="success" />
+            Finished
+          </span>
+        ),
+      },
+      {
+        title: 'Upgrade Status',
+        dataIndex: 'upgradeNum',
+        key: 'upgradeNum',
+      },
+      {
+        title: 'Action',
+        dataIndex: 'operation',
+        key: 'operation',
+        render: () => (
+          <Space size="middle">
+            <a>Pause</a>
+            <a>Stop</a>
+            <Dropdown
+              menu={{
+                items,
+              }}
+            >
+              <a>
+                More <DownOutlined />
+              </a>
+            </Dropdown>
+          </Space>
+        ),
+      },
+    ];
+    const data = [];
+    for (let i = 0; i < 3; ++i) {
+      data.push({
+        key: i.toString(),
+        date: '2014-12-24 23:12:00',
+        name: 'This is production name',
+        upgradeNum: 'Upgraded: 56',
+      });
+    }
+    return <Table columns={columns} dataSource={data} pagination={false} />;
+  };
+  const columns = [
+    {
+      title: 'Name',
+      dataIndex: 'name',
+      key: 'name',
+    },
+    {
+      title: 'Platform',
+      dataIndex: 'platform',
+      key: 'platform',
+    },
+    {
+      title: 'Version',
+      dataIndex: 'version',
+      key: 'version',
+    },
+    {
+      title: 'Upgraded',
+      dataIndex: 'upgradeNum',
+      key: 'upgradeNum',
+    },
+    {
+      title: 'Creator',
+      dataIndex: 'creator',
+      key: 'creator',
+    },
+    {
+      title: 'Date',
+      dataIndex: 'createdAt',
+      key: 'createdAt',
+    },
+    {
+      title: 'Action',
+      key: 'operation',
+      render: () => <a>Publish</a>,
+    },
+  ];
+  const data = [];
+  for (let i = 0; i < 3; ++i) {
+    data.push({
+      key: i.toString(),
+      name: 'Screem',
+      platform: 'iOS',
+      version: '10.3.4.5654',
+      upgradeNum: 500,
+      creator: 'Jack',
+      createdAt: '2014-12-24 23:12:00',
+    });
+  }
+  return (
+    <>
+      <Table
+        columns={columns}
+        expandable={{
+          expandedRowRender,
+          defaultExpandedRowKeys: ['0'],
+        }}
+        dataSource={data}
+      />
+      <Table
+        columns={columns}
+        expandable={{
+          expandedRowRender,
+          defaultExpandedRowKeys: ['0'],
+        }}
+        dataSource={data}
+        size="middle"
+      />
+      <Table
+        columns={columns}
+        expandable={{
+          expandedRowRender,
+          defaultExpandedRowKeys: ['0'],
+        }}
+        dataSource={data}
+        size="small"
+      />
+    </>
+  );
+};
+export default NestedTableComponent;

+ 75 - 0
myapp/src/components/table.js

@@ -0,0 +1,75 @@
+import { Space, Table, Tag } from 'antd';
+import React from 'react';
+const columns = [
+  {
+    title: 'Name',
+    dataIndex: 'name',
+    key: 'name',
+    render: (text) => <a>{text}</a>,
+  },
+  {
+    title: 'Age',
+    dataIndex: 'age',
+    key: 'age',
+  },
+  {
+    title: 'Address',
+    dataIndex: 'address',
+    key: 'address',
+  },
+  {
+    title: 'Tags',
+    key: 'tags',
+    dataIndex: 'tags',
+    render: (_, { tags }) => (
+      <>
+        {tags.map((tag) => {
+          let color = tag.length > 5 ? 'geekblue' : 'green';
+          if (tag === 'loser') {
+            color = 'volcano';
+          }
+          return (
+            <Tag color={color} key={tag}>
+              {tag.toUpperCase()}
+            </Tag>
+          );
+        })}
+      </>
+    ),
+  },
+  {
+    title: 'Action',
+    key: 'action',
+    render: (_, record) => (
+      <Space size="middle">
+        <a>Invite {record.name}</a>
+        <a>Delete</a>
+      </Space>
+    ),
+  },
+];
+const data = [
+  {
+    key: '1',
+    name: 'John Brown',
+    age: 32,
+    address: 'New York No. 1 Lake Park',
+    tags: ['nice', 'developer'],
+  },
+  {
+    key: '2',
+    name: 'Jim Green',
+    age: 42,
+    address: 'London No. 1 Lake Park',
+    tags: ['loser'],
+  },
+  {
+    key: '3',
+    name: 'Joe Black',
+    age: 32,
+    address: 'Sydney No. 1 Lake Park',
+    tags: ['cool', 'teacher'],
+  },
+];
+const TableComponent = () => <Table columns={columns} dataSource={data} />;
+export default TableComponent;