ΠΠΎΡΠ½ΡΠΉ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ°Π±Π»ΠΈΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π½Π° React, Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ, ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΠΈ, Π²ΠΊΠ»Π°Π΄ΠΎΠΊ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ±ΠΎΡΠ° Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΠΌΠΈ.
- Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ: ΠΠ΅Π³ΠΊΠΎ ΡΠΈΠ»ΡΡΡΡΠΉΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° Π½ΡΠΆΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
- ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ: ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ (dictionary, enum, roles ...).
- ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ: ΠΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠΈΠ»ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
- ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ: ΠΠ·ΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ .
- ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ: ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ Β«ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°ΡΒ», Β«Π‘Π»Π΅Π΄ΡΡΡΠ°ΡΒ», Β«ΠΠ΅ΡΠ²Π°ΡΒ» ΠΈ Β«ΠΠΎΡΠ»Π΅Π΄Π½ΡΡΒ».
- ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ: ΠΡΠ³Π°Π½ΠΈΠ·ΡΠΉΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π·Π½ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ.
- ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΠΈΡΠ΅ΡΠΈΡ.
- ΠΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ: ΠΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΠ΅ΡΠΈΡΡΠ΅ΡΡΡ.
- ΠΠ΄Π½ΠΎ- ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ: ΠΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΎΠ²ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.
- ΠΡΡΡΡΡΠΉ Π²ΡΠ±ΠΎΡ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²: ΠΠΏΡΠΈΡ Β«ΠΡΠ±ΡΠ°ΡΡ Π²ΡΡΒ» Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΎΠ²ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΊ Π±ΠΎΠ»ΡΡΠΈΠΌ Π½Π°Π±ΠΎΡΠ°ΠΌ Π΄Π°Π½Π½ΡΡ .
- ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: ΠΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄Π»Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠΎΡΡ, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅.
- ΠΠ°ΡΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ: ΠΏΡΠΈ ΠΠΠ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
- Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΎΠ»ΡΠΌ: Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
- ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΌΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ: ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΏΠΊΠΈ ΡΡΠΎΠ»Π±ΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π²Π΅ΡΡ ΡΡΠΎΠ»Π±Π΅Ρ.
- Π‘ΠΊΡΡΡΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠΎΠ²: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΡΡΠ²Π°ΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΡΠΎΡΠΌΠΎΡΡΠ°.
- ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ²: ΠΈΡΡΠΎΡΠΈΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
- ΠΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ: Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΡΠΊΡΡΡΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΡ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΌ ΠΎΡΠΊΡΡΡΠΈΠΈ.
- ΠΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠ»ΡΡΡΠΎΠ²: ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΡΠΈΠ»ΡΡΡΠΎΠ² Π²ΠΎ Π²ΡΠ΅Ρ Π²ΠΊΠ»Π°Π΄ΠΊΠ°Ρ .
- ΠΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΡΠΎΠ»Π±ΡΠΎΠ²: Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΡΠ°Π±Π»ΠΈΡΠ΅.
- ΠΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΠΈ: ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π² Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ React ΡΠ΅ΡΠ΅Π· npm ΠΈΠ»ΠΈ yarn:
npm install react-table-components
# ΠΈΠ»ΠΈ
yarn add react-table-componentsrender() {
return <DataTable {...this.props}
title = "Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ"
sort = {{field: "created", dir: 'desc'}}
fetch = {this.fetch.bind(this)}
columns = {[
{ title: "#", field: "id", filter: DataTable.STRING_FILTER},
{ title: "Π’Π΅ΠΌΠ°", field: "subject", filter: DataTable.STRING_FILTER},
{ title: "ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅", field: "body", filter: DataTable.STRING_FILTER},
]}/>
}
ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΈ Π²ΡΠ³ΡΡΠ·ΠΊΡ Π² Excel:
render() {
return <DataTable {...this.props}
contextMenuObj={this.contextMenuObj}
filterTabs={filterTabs}
defaultFilterParam={field}
serviceFilterTabs={QuoteService}
title = {this.props.title}
openAddForm = {this.openAddForm.bind(this)}
openEditForm = {this.openEditForm.bind(this)}
fetch = { ... }
fetchXLS = {this.fetchXLS.bind(this)}
tableHeaderRenderer = {this.renderTableHeader}
getQuoteStatuses={this.getQuoteStatuses}
tableBodyRenderer = { ... }
features = { ... }}
resizable = {true}
columns = {this.columns().filter(col => { return Object.keys(col).length !== 0 })}
style = {{maxHeight: this.state.tableHeight}}
tableClassName = "no-line-break"
dataTableAlerts = {this.state.dataTableAlerts}
dataTableNotifications = {this.state.dataTableNotifications}
alertClickHandler = {this.openEditForm.bind(this)}
alertItemTitle={"ΠΠ°ΡΠ²ΠΊΠ°"}
setColumns = {this.setColumns}
/>
}
}