chore: fixes various warnings (#2554)

This commit is contained in:
Julien Fontanet 2018-01-08 15:18:15 +01:00 committed by GitHub
parent 03028bca50
commit 6e44c65a07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 164 additions and 137 deletions

View File

@ -160,9 +160,9 @@ class Editable extends Component {
)} )}
> >
<span <span
onClick={!useLongClick && this._openEdition} onClick={useLongClick ? undefined : this._openEdition}
onMouseDown={useLongClick && this.__startTimer} onMouseDown={useLongClick ? this.__startTimer : undefined}
onMouseUp={useLongClick && this.__stopTimer} onMouseUp={useLongClick ? this.__stopTimer : undefined}
> >
{this._renderDisplay()} {this._renderDisplay()}
</span> </span>

View File

@ -114,8 +114,8 @@ export default class Select extends Component {
return ( return (
<div <div
className={className} className={className}
onClick={!disabled && (() => selectValue(option))} onClick={disabled ? undefined : () => selectValue(option)}
onMouseOver={!disabled && (() => focusOption(option))} onMouseOver={disabled ? undefined : () => focusOption(option)}
style={style} style={style}
key={key} key={key}
> >

View File

@ -9,12 +9,12 @@ import propTypes from '../prop-types-decorator'
@uncontrollableInput() @uncontrollableInput()
@propTypes({ @propTypes({
className: propTypes.string, className: propTypes.string,
onChange: propTypes.func, onChange: propTypes.func.isRequired,
icon: propTypes.string, icon: propTypes.string,
iconOn: propTypes.string, iconOn: propTypes.string,
iconOff: propTypes.string, iconOff: propTypes.string,
iconSize: propTypes.number, iconSize: propTypes.number,
value: propTypes.bool, value: propTypes.bool.isRequired,
}) })
export default class Toggle extends Component { export default class Toggle extends Component {
static defaultProps = { static defaultProps = {

View File

@ -13,19 +13,29 @@ import propTypes from './prop-types-decorator'
// {children} // {children}
// </NoObjects> // </NoObjects>
// ```` // ````
const NoObjects = ({ children, collection, emptyMessage }) => const NoObjects = props => {
collection == null ? ( const { collection } = props
<img src='assets/loading.svg' alt='loading' />
) : isEmpty(collection) ? ( if (collection == null) {
<p>{emptyMessage}</p> return <img src='assets/loading.svg' alt='loading' />
}
if (isEmpty(collection)) {
return <p>{props.emptyMessage}</p>
}
const { children, component: Component, ...otherProps } = props
return children !== undefined ? (
children(otherProps)
) : ( ) : (
<div>{children}</div> <Component {...otherProps} />
) )
}
propTypes(NoObjects)({ propTypes(NoObjects)({
children: propTypes.node.isRequired, children: propTypes.func,
collection: propTypes.oneOfType([propTypes.array, propTypes.object]) collection: propTypes.oneOfType([propTypes.array, propTypes.object]),
.isRequired, component: propTypes.func,
emptyMessage: propTypes.node.isRequired, emptyMessage: propTypes.node.isRequired,
}) })
export default NoObjects export default NoObjects

View File

@ -173,7 +173,7 @@ export const CpuLineChart = injectIntl(
export const PoolCpuLineChart = injectIntl( export const PoolCpuLineChart = injectIntl(
propTypes({ propTypes({
addSumSeries: propTypes.bool, addSumSeries: propTypes.bool,
data: propTypes.object.isRequired, data: propTypes.array.isRequired,
options: propTypes.object, options: propTypes.object,
})(({ addSumSeries, data, options = {}, intl }) => { })(({ addSumSeries, data, options = {}, intl }) => {
const firstHostData = data[0] const firstHostData = data[0]
@ -261,7 +261,7 @@ export const MemoryLineChart = injectIntl(
export const PoolMemoryLineChart = injectIntl( export const PoolMemoryLineChart = injectIntl(
propTypes({ propTypes({
addSumSeries: propTypes.bool, addSumSeries: propTypes.bool,
data: propTypes.object.isRequired, data: propTypes.array.isRequired,
options: propTypes.object, options: propTypes.object,
})(({ addSumSeries, data, options = {}, intl }) => { })(({ addSumSeries, data, options = {}, intl }) => {
const firstHostData = data[0] const firstHostData = data[0]
@ -384,7 +384,7 @@ export const VifLineChart = injectIntl(
export const PifLineChart = injectIntl( export const PifLineChart = injectIntl(
propTypes({ propTypes({
addSumSeries: propTypes.bool, addSumSeries: propTypes.bool,
data: propTypes.object.isRequired, data: propTypes.array.isRequired,
options: propTypes.object, options: propTypes.object,
})(({ addSumSeries, data, options = {}, intl }) => { })(({ addSumSeries, data, options = {}, intl }) => {
const stats = data.stats.pifs const stats = data.stats.pifs
@ -419,7 +419,7 @@ const ios = ['rx', 'tx']
export const PoolPifLineChart = injectIntl( export const PoolPifLineChart = injectIntl(
propTypes({ propTypes({
addSumSeries: propTypes.bool, addSumSeries: propTypes.bool,
data: propTypes.object.isRequired, data: propTypes.array.isRequired,
options: propTypes.object, options: propTypes.object,
})(({ addSumSeries, data, options = {}, intl }) => { })(({ addSumSeries, data, options = {}, intl }) => {
const firstHostData = data[0] const firstHostData = data[0]
@ -508,7 +508,7 @@ export const LoadLineChart = injectIntl(
export const PoolLoadLineChart = injectIntl( export const PoolLoadLineChart = injectIntl(
propTypes({ propTypes({
addSumSeries: propTypes.bool, addSumSeries: propTypes.bool,
data: propTypes.object.isRequired, data: propTypes.array.isRequired,
options: propTypes.object, options: propTypes.object,
})(({ addSumSeries, data, options = {}, intl }) => { })(({ addSumSeries, data, options = {}, intl }) => {
const firstHostData = data[0] const firstHostData = data[0]

View File

@ -226,11 +226,13 @@ export default class Overview extends Component {
collection={schedules} collection={schedules}
emptyMessage={_('noScheduledJobs')} emptyMessage={_('noScheduledJobs')}
> >
<SortedTable {() => (
columns={JOB_COLUMNS} <SortedTable
collection={this._getScheduleCollection()} columns={JOB_COLUMNS}
userData={isScheduleUserMissing} collection={this._getScheduleCollection()}
/> userData={isScheduleUserMissing}
/>
)}
</NoObjects> </NoObjects>
</CardBlock> </CardBlock>
</Card> </Card>

View File

@ -461,16 +461,18 @@ export default class Health extends Component {
collection={props.areObjectsFetched ? props.userSrs : null} collection={props.areObjectsFetched ? props.userSrs : null}
emptyMessage={_('noSrs')} emptyMessage={_('noSrs')}
> >
<Row> {() => (
<Col> <Row>
<SortedTable <Col>
collection={props.userSrs} <SortedTable
columns={SR_COLUMNS} collection={props.userSrs}
rowLink={this._getSrUrl} columns={SR_COLUMNS}
shortcutsTarget='body' rowLink={this._getSrUrl}
/> shortcutsTarget='body'
</Col> />
</Row> </Col>
</Row>
)}
</NoObjects> </NoObjects>
</CardBlock> </CardBlock>
</Card> </Card>
@ -489,26 +491,28 @@ export default class Health extends Component {
} }
emptyMessage={_('noOrphanedObject')} emptyMessage={_('noOrphanedObject')}
> >
<div> {() => (
<Row> <div>
<Col className='text-xs-right'> <Row>
<TabButton <Col className='text-xs-right'>
btnStyle='danger' <TabButton
handler={this._deleteOrphanedVdis} btnStyle='danger'
icon='delete' handler={this._deleteOrphanedVdis}
labelId='removeAllOrphanedObject' icon='delete'
/> labelId='removeAllOrphanedObject'
</Col> />
</Row> </Col>
<Row> </Row>
<Col> <Row>
<SortedTable <Col>
collection={this.props.vdiOrphaned} <SortedTable
columns={ORPHANED_VDI_COLUMNS} collection={this.props.vdiOrphaned}
/> columns={ORPHANED_VDI_COLUMNS}
</Col> />
</Row> </Col>
</div> </Row>
</div>
)}
</NoObjects> </NoObjects>
</CardBlock> </CardBlock>
</Card> </Card>
@ -525,13 +529,10 @@ export default class Health extends Component {
collection={ collection={
props.areObjectsFetched ? props.controlDomainVdis : null props.areObjectsFetched ? props.controlDomainVdis : null
} }
columns={CONTROL_DOMAIN_VDI_COLUMNS}
component={SortedTable}
emptyMessage={_('noControlDomainVdis')} emptyMessage={_('noControlDomainVdis')}
> />
<SortedTable
collection={props.controlDomainVdis}
columns={CONTROL_DOMAIN_VDI_COLUMNS}
/>
</NoObjects>
</CardBlock> </CardBlock>
</Card> </Card>
</Col> </Col>
@ -545,14 +546,11 @@ export default class Health extends Component {
<CardBlock> <CardBlock>
<NoObjects <NoObjects
collection={props.areObjectsFetched ? props.vmOrphaned : null} collection={props.areObjectsFetched ? props.vmOrphaned : null}
columns={VM_COLUMNS}
component={SortedTable}
emptyMessage={_('noOrphanedObject')} emptyMessage={_('noOrphanedObject')}
> shortcutsTarget='.orphaned-vms'
<SortedTable />
collection={props.vmOrphaned}
columns={VM_COLUMNS}
shortcutsTarget='.orphaned-vms'
/>
</NoObjects>
</CardBlock> </CardBlock>
</Card> </Card>
</Col> </Col>
@ -570,26 +568,28 @@ export default class Health extends Component {
} }
emptyMessage={_('noAlarms')} emptyMessage={_('noAlarms')}
> >
<div> {() => (
<Row> <div>
<Col className='text-xs-right'> <Row>
<TabButton <Col className='text-xs-right'>
btnStyle='danger' <TabButton
handler={this._deleteAllLogs} btnStyle='danger'
icon='delete' handler={this._deleteAllLogs}
labelId='logRemoveAll' icon='delete'
/> labelId='logRemoveAll'
</Col> />
</Row> </Col>
<Row> </Row>
<Col> <Row>
<SortedTable <Col>
collection={this.state.messages} <SortedTable
columns={ALARM_COLUMNS} collection={this.state.messages}
/> columns={ALARM_COLUMNS}
</Col> />
</Row> </Col>
</div> </Row>
</div>
)}
</NoObjects> </NoObjects>
</CardBlock> </CardBlock>
</Card> </Card>

View File

@ -1083,7 +1083,9 @@ export default class Home extends Component {
map(visibleItems, (item, index) => ( map(visibleItems, (item, index) => (
<div <div
key={item.id} key={item.id}
className={highlighted === index && styles.highlight} className={
highlighted === index ? styles.highlight : undefined
}
> >
<Item <Item
expandAll={expandAll} expandAll={expandAll}

View File

@ -17,14 +17,14 @@ import {
import { FormattedRelative, FormattedTime } from 'react-intl' import { FormattedRelative, FormattedTime } from 'react-intl'
import { Container, Row, Col } from 'grid' import { Container, Row, Col } from 'grid'
import { createGetObjectsOfType, createSelector } from 'selectors' import { createGetObjectsOfType, createSelector } from 'selectors'
import { map } from 'lodash' import { map, noop } from 'lodash'
const ALLOW_INSTALL_SUPP_PACK = process.env.XOA_PLAN > 1 const ALLOW_INSTALL_SUPP_PACK = process.env.XOA_PLAN > 1
const forceReboot = host => restartHost(host, true) const forceReboot = host => restartHost(host, true)
const formatPack = ({ name, author, description, version }) => ( const formatPack = ({ name, author, description, version }, key) => (
<tr> <tr key={key}>
<th>{_('supplementalPackTitle', { author, name })}</th> <th>{_('supplementalPackTitle', { author, name })}</th>
<td>{description}</td> <td>{description}</td>
<td>{version}</td> <td>{version}</td>
@ -116,7 +116,11 @@ export default connectStore(() => {
<tr> <tr>
<th>{_('hostPowerOnMode')}</th> <th>{_('hostPowerOnMode')}</th>
<td> <td>
<Toggle value={host.powerOnMode} disabled /> <Toggle
disabled
onChange={noop}
value={Boolean(host.powerOnMode)}
/>
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@ -413,13 +413,13 @@ export default class LogList extends Component {
</span> </span>
</CardHeader> </CardHeader>
<CardBlock> <CardBlock>
<NoObjects collection={logs} emptyMessage={_('noLogs')}> <NoObjects
<SortedTable collection={logs}
collection={logs} columns={LOG_COLUMNS}
columns={LOG_COLUMNS} component={SortedTable}
filters={this.filters} emptyMessage={_('noLogs')}
/> filters={this.filters}
</NoObjects> />
</CardBlock> </CardBlock>
</Card> </Card>
) )

View File

@ -76,7 +76,9 @@ export default connectStore({
<Col size={9}> <Col size={9}>
<ul className='list-group'> <ul className='list-group'>
{map(gpuGroups, gpuGroup => ( {map(gpuGroups, gpuGroup => (
<li className='list-group-item'>{renderXoItem(gpuGroup)}</li> <li key={gpuGroup.id} className='list-group-item'>
{renderXoItem(gpuGroup)}
</li>
))} ))}
</ul> </ul>
</Col> </Col>

View File

@ -834,8 +834,11 @@ export default class Self extends Component {
</ActionButton> </ActionButton>
</div> </div>
{showNewResourceSetForm && [ {showNewResourceSetForm && [
<Edit onSave={this.toggleState('showNewResourceSetForm')} />, <Edit
<hr />, key={0}
onSave={this.toggleState('showNewResourceSetForm')}
/>,
<hr key={1} />,
]} ]}
{resourceSets {resourceSets
? isEmpty(resourceSets) ? isEmpty(resourceSets)

View File

@ -161,21 +161,23 @@ export default class Logs extends BaseComponent {
message={_('noLogs')} message={_('noLogs')}
predicate={this._getPredicate} predicate={this._getPredicate}
> >
<div> {() => (
<span className='pull-right'> <div>
<TabButton <span className='pull-right'>
btnStyle='danger' <TabButton
handler={this._deleteAllLogs} btnStyle='danger'
icon='delete' handler={this._deleteAllLogs}
labelId='logDeleteAll' icon='delete'
labelId='logDeleteAll'
/>
</span>{' '}
<SortedTable
collection={logs}
columns={COLUMNS}
userData={this._getData()}
/> />
</span>{' '} </div>
<SortedTable )}
collection={logs}
columns={COLUMNS}
userData={this._getData()}
/>
</div>
</NoObjects> </NoObjects>
) )
} }

View File

@ -137,7 +137,7 @@ const COLUMNS = [
{ {
itemRenderer: server => ( itemRenderer: server => (
<Toggle <Toggle
value={server.allowUnauthorized} value={Boolean(server.allowUnauthorized)}
onChange={allowUnauthorized => onChange={allowUnauthorized =>
editServer(server, { allowUnauthorized }) editServer(server, { allowUnauthorized })
} }

View File

@ -143,7 +143,7 @@ export default class Tasks extends Component {
props.pools, props.pools,
pool => pool =>
this._showPoolTasks(pool) && ( this._showPoolTasks(pool) && (
<Row> <Row key={pool.id}>
<Card> <Card>
<CardHeader key={pool.id}> <CardHeader key={pool.id}>
<Link to={`/pools/${pool.id}`}>{pool.name_label}</Link> <Link to={`/pools/${pool.id}`}>{pool.name_label}</Link>

View File

@ -209,26 +209,28 @@ class CoresPerSocket extends Component {
onChange={this._onChange} onChange={this._onChange}
value={selectedCoresPerSocket || ''} value={selectedCoresPerSocket || ''}
> >
{_('vmChooseCoresPerSocket', message => ( {_({ key: 'none' }, 'vmChooseCoresPerSocket', message => (
<option key='none' value=''> <option value=''>{message}</option>
{message}
</option>
))} ))}
{this._selectedValueIsNotInOptions() && {this._selectedValueIsNotInOptions() &&
_('vmCoresPerSocketIncorrectValue', message => ( _(
<option key='incorrect' value={selectedCoresPerSocket}> { key: 'incorrect' },
{' '} 'vmCoresPerSocketIncorrectValue',
{message} message => (
</option> <option value={selectedCoresPerSocket}> {message}</option>
))} )
{map(options, coresPerSocket => ( )}
<option key={coresPerSocket} value={coresPerSocket}> {map(options, coresPerSocket =>
{_('vmCoresPerSocket', { _(
{ key: coresPerSocket },
'vmCoresPerSocket',
{
nSockets: vm.CPUs.number / coresPerSocket, nSockets: vm.CPUs.number / coresPerSocket,
nCores: coresPerSocket, nCores: coresPerSocket,
})} },
</option> message => <option value={coresPerSocket}>{message}</option>
))} )
)}
</select>{' '} </select>{' '}
{this._selectedValueIsNotInOptions() && ( {this._selectedValueIsNotInOptions() && (
<Tooltip content={_('vmCoresPerSocketIncorrectValueSolution')}> <Tooltip content={_('vmCoresPerSocketIncorrectValueSolution')}>
@ -398,7 +400,7 @@ export default connectStore(() => {
<th>{_('autoPowerOn')}</th> <th>{_('autoPowerOn')}</th>
<td> <td>
<Toggle <Toggle
value={vm.auto_poweron} value={Boolean(vm.auto_poweron)}
onChange={value => editVm(vm, { auto_poweron: value })} onChange={value => editVm(vm, { auto_poweron: value })}
/> />
</td> </td>