feat: data table of selected table
This commit is contained in:
parent
be6fbc96b5
commit
ddee8dcc6b
@ -4,6 +4,7 @@ class TableListController {
|
|||||||
constructor() {
|
constructor() {
|
||||||
this.tables = new Tables()
|
this.tables = new Tables()
|
||||||
this.updatedTablesEvent = new Event('updateTables')
|
this.updatedTablesEvent = new Event('updateTables')
|
||||||
|
this.setSelectedTableEvent = new Event('setSelectedTable')
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteTable = id => {
|
deleteTable = id => {
|
||||||
@ -11,8 +12,9 @@ class TableListController {
|
|||||||
document.dispatchEvent(this.updatedTablesEvent)
|
document.dispatchEvent(this.updatedTablesEvent)
|
||||||
}
|
}
|
||||||
|
|
||||||
logExportById = id => {
|
selectTableToView = id => {
|
||||||
console.log(this.tables.getById(id).headers)
|
this.tables.setSelectedTableById(id)
|
||||||
|
document.dispatchEvent(this.setSelectedTableEvent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ class Tables {
|
|||||||
constructor () {
|
constructor () {
|
||||||
if (!instance) instance = this
|
if (!instance) instance = this
|
||||||
this.collection = []
|
this.collection = []
|
||||||
|
this.selectedTable = null
|
||||||
return instance
|
return instance
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,6 +32,12 @@ class Tables {
|
|||||||
getCollectionProps = () => this.collection.map(table => table.getProperties())
|
getCollectionProps = () => this.collection.map(table => table.getProperties())
|
||||||
|
|
||||||
getById = id => this.collection.find(t => id === t.id)
|
getById = id => this.collection.find(t => id === t.id)
|
||||||
|
|
||||||
|
setSelectedTableById = id => {
|
||||||
|
const table = this.collection.find(t => id === t.id)
|
||||||
|
if (table) this.selectedTable = table
|
||||||
|
else this.selectedTable = null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Tables
|
export default Tables
|
||||||
|
@ -5,6 +5,7 @@ import CreateTableForm from './CreateTable/CreateTableForm'
|
|||||||
import TableList from './TableList/TableList'
|
import TableList from './TableList/TableList'
|
||||||
import CreateNodule from './CreateNodule/CreateNodule'
|
import CreateNodule from './CreateNodule/CreateNodule'
|
||||||
import NoduleList from './NoduleList/NoduleList'
|
import NoduleList from './NoduleList/NoduleList'
|
||||||
|
import DataTable from './DataTable/DataTable'
|
||||||
|
|
||||||
class App extends Component {
|
class App extends Component {
|
||||||
render = () => {
|
render = () => {
|
||||||
@ -14,6 +15,7 @@ class App extends Component {
|
|||||||
<CreateNodule />
|
<CreateNodule />
|
||||||
<TableList />
|
<TableList />
|
||||||
<NoduleList />
|
<NoduleList />
|
||||||
|
<DataTable />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,68 @@
|
|||||||
|
import React, { Component } from 'react'
|
||||||
|
import { Table } from 'semantic-ui-react'
|
||||||
|
|
||||||
|
import Tables from '../../Models/Tables'
|
||||||
|
|
||||||
|
class DataTable extends Component {
|
||||||
|
constructor (props) {
|
||||||
|
super(props)
|
||||||
|
this.tables = new Tables()
|
||||||
|
this.state = {
|
||||||
|
headers: [],
|
||||||
|
tableData: []
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('setSelectedTable', this.setSelectedTable)
|
||||||
|
}
|
||||||
|
|
||||||
|
setSelectedTable = () => {
|
||||||
|
const selectedTable = this.tables.selectedTable
|
||||||
|
if (selectedTable) {
|
||||||
|
this.setState({
|
||||||
|
headers: selectedTable.headers,
|
||||||
|
tableData: selectedTable.rows
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
renderCellElements = data => {
|
||||||
|
const { headers } = this.state
|
||||||
|
const rowElements = headers.map(h => <Table.Cell singleLine>{data[h]}</Table.Cell>)
|
||||||
|
return rowElements
|
||||||
|
}
|
||||||
|
|
||||||
|
renderTableHeaderElements = () => {
|
||||||
|
const headers = this.state.headers
|
||||||
|
const headerElements = headers.map(h => <Table.HeaderCell>{h}</Table.HeaderCell>)
|
||||||
|
return headerElements
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
renderTableRowElements = () => {
|
||||||
|
const { tableData, headers } = this.state
|
||||||
|
const tableRowElements = tableData.map(d => {
|
||||||
|
return <Table.Row>{ this.renderCellElements(d) }</Table.Row>
|
||||||
|
})
|
||||||
|
|
||||||
|
return tableRowElements
|
||||||
|
}
|
||||||
|
|
||||||
|
render = () => {
|
||||||
|
return (
|
||||||
|
<div className='DataTable'>
|
||||||
|
<Table celled>
|
||||||
|
<Table.Header>
|
||||||
|
<Table.Row>
|
||||||
|
{ this.renderTableHeaderElements() }
|
||||||
|
</Table.Row>
|
||||||
|
</Table.Header>
|
||||||
|
<Table.Body>
|
||||||
|
{ this.renderTableRowElements() }
|
||||||
|
</Table.Body>
|
||||||
|
</Table>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default DataTable
|
@ -25,7 +25,7 @@ class TableListItem extends Component {
|
|||||||
Delete <Icon name='trash' />
|
Delete <Icon name='trash' />
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
onClick={() => { this.controller.logExportById(table.id) }}
|
onClick={() => { this.controller.selectTableToView(table.id) }}
|
||||||
style={{ cursor: 'pointer' }}>
|
style={{ cursor: 'pointer' }}>
|
||||||
View <Icon name='table' />
|
View <Icon name='table' />
|
||||||
</span>
|
</span>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user