parent
4987d8057d
commit
c45893cf09
|
@ -1,6 +1,8 @@
|
||||||
import React, { Fragment, memo } from 'react'
|
import React, { Fragment } from 'react'
|
||||||
import MaterialTable from 'material-table'
|
import MaterialTable from 'material-table'
|
||||||
import LiquidPledging from 'Embark/contracts/LiquidPledging'
|
import LiquidPledging from 'Embark/contracts/LiquidPledging'
|
||||||
|
import withObservables from '@nozbe/with-observables'
|
||||||
|
import { withDatabase } from '@nozbe/watermelondb/DatabaseProvider'
|
||||||
import { FundingContext } from '../context'
|
import { FundingContext } from '../context'
|
||||||
|
|
||||||
const { cancelProject } = LiquidPledging.methods
|
const { cancelProject } = LiquidPledging.methods
|
||||||
|
@ -8,11 +10,11 @@ const { cancelProject } = LiquidPledging.methods
|
||||||
const convertToHours = seconds => seconds / 60 / 60
|
const convertToHours = seconds => seconds / 60 / 60
|
||||||
const cancelText = canceled => canceled ? 'Yes' : 'No'
|
const cancelText = canceled => canceled ? 'Yes' : 'No'
|
||||||
const formatField = field => ({
|
const formatField = field => ({
|
||||||
...field,
|
...field.getFields(),
|
||||||
commitTime: convertToHours(field.commitTime),
|
commitTime: convertToHours(field.commitTime),
|
||||||
canceled: cancelText(field.canceled)
|
canceled: cancelText(field.canceled)
|
||||||
})
|
})
|
||||||
const FunderProfilesTable = ({ data, cancelFundProfile }) => (
|
const FunderProfilesTable = ({ data, cancelFundProfile, profiles }) => (
|
||||||
<FundingContext.Consumer>
|
<FundingContext.Consumer>
|
||||||
{({ account }) =>
|
{({ account }) =>
|
||||||
<Fragment>
|
<Fragment>
|
||||||
|
@ -26,13 +28,13 @@ const FunderProfilesTable = ({ data, cancelFundProfile }) => (
|
||||||
{ title: 'Type', field: 'type' },
|
{ title: 'Type', field: 'type' },
|
||||||
{ title: 'Canceled', field: 'canceled' }
|
{ title: 'Canceled', field: 'canceled' }
|
||||||
]}
|
]}
|
||||||
data={data.map(formatField)}
|
data={profiles.map(formatField)}
|
||||||
title="Funding Profiles"
|
title="Funding Profiles"
|
||||||
options={{ showEmptyDataSourceMessage: true }}
|
options={{ showEmptyDataSourceMessage: true }}
|
||||||
actions={[
|
actions={[
|
||||||
rowData => ({
|
rowData => ({
|
||||||
icon: 'cancel',
|
icon: 'cancel',
|
||||||
disabled: rowData.addr.toLowerCase() != account.toLowerCase(),
|
disabled: !account || rowData.addr.toLowerCase() != account.toLowerCase(),
|
||||||
tooltip: 'Cancel',
|
tooltip: 'Cancel',
|
||||||
onClick: (event, rowData) => {
|
onClick: (event, rowData) => {
|
||||||
cancelProject(rowData.idProject || rowData.idProfile)
|
cancelProject(rowData.idProject || rowData.idProfile)
|
||||||
|
@ -50,4 +52,6 @@ const FunderProfilesTable = ({ data, cancelFundProfile }) => (
|
||||||
</FundingContext.Consumer>
|
</FundingContext.Consumer>
|
||||||
)
|
)
|
||||||
|
|
||||||
export default memo(FunderProfilesTable)
|
export default withDatabase(withObservables([], ({ database }) => ({
|
||||||
|
profiles: database.collections.get('profiles').query().fetch(),
|
||||||
|
}))(FunderProfilesTable))
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
import { Model } from '@nozbe/watermelondb'
|
|
||||||
import { field } from '@nozbe/watermelondb/decorators'
|
import { field } from '@nozbe/watermelondb/decorators'
|
||||||
|
import { LiquidModel } from '../utils/models'
|
||||||
|
|
||||||
|
|
||||||
export default class Profiles extends Model {
|
export default class Profiles extends LiquidModel {
|
||||||
|
|
||||||
static table = 'profiles'
|
static table = 'profiles'
|
||||||
|
|
||||||
@field('addr') addr
|
@field('addr') addr
|
||||||
|
@ -13,5 +12,4 @@ export default class Profiles extends Model {
|
||||||
@field('name') name
|
@field('name') name
|
||||||
@field('url') url
|
@field('url') url
|
||||||
@field('id_profile') idProfile
|
@field('id_profile') idProfile
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
import { Model } from '@nozbe/watermelondb'
|
||||||
|
|
||||||
|
export function getFields(obj) {
|
||||||
|
const validTypes = new Set(['string', 'number', 'boolean'])
|
||||||
|
const newObj = {}
|
||||||
|
const proto = Object.getPrototypeOf(obj)
|
||||||
|
const names = Object.getOwnPropertyNames(proto)
|
||||||
|
names
|
||||||
|
.filter(name => validTypes.has(typeof obj[name]))
|
||||||
|
.forEach(name => { newObj[name] = obj[name] })
|
||||||
|
return newObj
|
||||||
|
}
|
||||||
|
|
||||||
|
export class LiquidModel extends Model {
|
||||||
|
getFields() {
|
||||||
|
const validTypes = new Set(['string', 'number', 'boolean'])
|
||||||
|
const newObj = {}
|
||||||
|
const proto = Object.getPrototypeOf(this)
|
||||||
|
const names = Object.getOwnPropertyNames(proto)
|
||||||
|
names
|
||||||
|
.filter(name => validTypes.has(typeof this[name]))
|
||||||
|
.forEach(name => { newObj[name] = this[name] })
|
||||||
|
return newObj
|
||||||
|
}
|
||||||
|
}
|
|
@ -58,6 +58,7 @@
|
||||||
"@material-ui/core": "^3.6.0",
|
"@material-ui/core": "^3.6.0",
|
||||||
"@material-ui/icons": "^3.0.1",
|
"@material-ui/icons": "^3.0.1",
|
||||||
"@nozbe/watermelondb": "^0.9.0",
|
"@nozbe/watermelondb": "^0.9.0",
|
||||||
|
"@nozbe/with-observables": "^1.0.2",
|
||||||
"async": "^2.4.0",
|
"async": "^2.4.0",
|
||||||
"chai": "^4.1.0",
|
"chai": "^4.1.0",
|
||||||
"chart.js": "^2.7.3",
|
"chart.js": "^2.7.3",
|
||||||
|
|
|
@ -331,6 +331,13 @@
|
||||||
rxjs-compat "^6.3.2"
|
rxjs-compat "^6.3.2"
|
||||||
sql-escape-string "^1.1.0"
|
sql-escape-string "^1.1.0"
|
||||||
|
|
||||||
|
"@nozbe/with-observables@^1.0.2":
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@nozbe/with-observables/-/with-observables-1.0.2.tgz#9749b3b5d33a058f8aed92d75138a5778bead89b"
|
||||||
|
integrity sha512-p9WNGTUm0eKb28ylcMBayUgBbzGoZ2bVBxzqtS5SxRL3Hopwf1eSNF+fGbC8fX1YHxhQjma4nN4pkKAt+H6NLA==
|
||||||
|
dependencies:
|
||||||
|
rxjs "^6.2.2"
|
||||||
|
|
||||||
"@types/jss@^9.5.6":
|
"@types/jss@^9.5.6":
|
||||||
version "9.5.7"
|
version "9.5.7"
|
||||||
resolved "https://registry.yarnpkg.com/@types/jss/-/jss-9.5.7.tgz#fa57a6d0b38a3abef8a425e3eb6a53495cb9d5a0"
|
resolved "https://registry.yarnpkg.com/@types/jss/-/jss-9.5.7.tgz#fa57a6d0b38a3abef8a425e3eb6a53495cb9d5a0"
|
||||||
|
|
Loading…
Reference in New Issue