mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-10 15:15:34 +00:00
Remove InternalSlot component
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import SlotSection from './SlotSection';
|
import SlotSection from './SlotSection';
|
||||||
import InternalSlot from './InternalSlot';
|
import Slot from './Slot';
|
||||||
import { MountFixed, MountGimballed, MountTurret } from '../components/SvgIcons';
|
import { MountFixed, MountGimballed, MountTurret } from '../components/SvgIcons';
|
||||||
import { stopCtxPropagation } from '../utils/UtilityFunctions';
|
import { stopCtxPropagation } from '../utils/UtilityFunctions';
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ export default class HardpointSlotSection extends SlotSection {
|
|||||||
let slots = [];
|
let slots = [];
|
||||||
|
|
||||||
for (let h of ship.getHardpoints(undefined, true)) {
|
for (let h of ship.getHardpoints(undefined, true)) {
|
||||||
slots.push(<InternalSlot
|
slots.push(<Slot
|
||||||
key={h.object.Slot}
|
key={h.object.Slot}
|
||||||
maxClass={h.getSize()}
|
maxClass={h.getSize()}
|
||||||
onOpen={this._openMenu.bind(this, h)}
|
onOpen={this._openMenu.bind(this, h)}
|
||||||
@@ -158,5 +158,4 @@ export default class HardpointSlotSection extends SlotSection {
|
|||||||
</ul>
|
</ul>
|
||||||
</div>;
|
</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,133 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import cn from 'classnames';
|
|
||||||
import Slot from './Slot';
|
|
||||||
import Persist from '../stores/Persist';
|
|
||||||
import { ListModifications, Modified } from './SvgIcons';
|
|
||||||
import { Modifications } from 'coriolis-data/dist';
|
|
||||||
import { stopCtxPropagation } from '../utils/UtilityFunctions';
|
|
||||||
import { blueprintTooltip } from '../utils/BlueprintFunctions';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Internal Slot
|
|
||||||
*/
|
|
||||||
export default class InternalSlot extends Slot {
|
|
||||||
/**
|
|
||||||
* Generate the slot contents
|
|
||||||
* @param {Object} m Mounted Module
|
|
||||||
* @param {Function} translate Translate function
|
|
||||||
* @param {Object} formats Localized Formats map
|
|
||||||
* @param {Object} u Localized Units Map
|
|
||||||
* @return {React.Component} Slot contents
|
|
||||||
*/
|
|
||||||
_getSlotDetails(m, translate, formats, u) {
|
|
||||||
if (m) {
|
|
||||||
let classRating = String(m.getSize()) + m.getRating();
|
|
||||||
let { drag, drop, ship } = this.props;
|
|
||||||
let { termtip, tooltip } = this.context;
|
|
||||||
let showModuleResistances = Persist.showModuleResistances();
|
|
||||||
|
|
||||||
// Modifications tooltip shows blueprint and grade, if available
|
|
||||||
// let modTT = translate('modified');
|
|
||||||
// const blueprint = m.getBlueprint();
|
|
||||||
// const experimental = m.getExperimental();
|
|
||||||
// const grade = m.getGrade();
|
|
||||||
// if (blueprint) {
|
|
||||||
// modTT = translate(blueprint) + ' ' + translate('grade') + ' ' + grade;
|
|
||||||
// if (experimental) {
|
|
||||||
// modTT += ', ' + translate(experimental);
|
|
||||||
// }
|
|
||||||
// modTT = (
|
|
||||||
// <div>
|
|
||||||
// <div>{modTT}</div>
|
|
||||||
// {blueprintTooltip(translate, m.blueprint.grades[m.blueprint.grade], m)}
|
|
||||||
// </div>
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
|
|
||||||
let mass = m.get('mass') || m.get('cargo') || m.get('fuel') || 0;
|
|
||||||
const enabled = m.isEnabled();
|
|
||||||
|
|
||||||
const className = cn('details', enabled ? '' : 'disabled');
|
|
||||||
return (
|
|
||||||
<div
|
|
||||||
className={className}
|
|
||||||
draggable="true"
|
|
||||||
onDragStart={drag}
|
|
||||||
onDragEnd={drop}
|
|
||||||
>
|
|
||||||
<div className={'cb'}>
|
|
||||||
<div className={'l'}>
|
|
||||||
{classRating} {translate(m.readMeta('type'))}
|
|
||||||
{m.mods && Object.keys(m.mods).length > 0 ? (
|
|
||||||
<span
|
|
||||||
onMouseOver={termtip.bind(null, modTT)}
|
|
||||||
onMouseOut={tooltip.bind(null, null)}
|
|
||||||
>
|
|
||||||
<Modified />
|
|
||||||
</span>
|
|
||||||
) : (
|
|
||||||
''
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
<div className={'r'}>
|
|
||||||
{formats.round(mass)}
|
|
||||||
{u.T}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className={'cb'}>
|
|
||||||
{/* { m.getOptMass() ? <div className={'l'}>{translate('optmass', 'sg')}: {formats.int(m.getOptMass())}{u.T}</div> : null }
|
|
||||||
{ m.getMaxMass() ? <div className={'l'}>{translate('maxmass', 'sg')}: {formats.int(m.getMaxMass())}{u.T}</div> : null }
|
|
||||||
{ m.bins ? <div className={'l'}>{m.bins} <u>{translate('bins')}</u></div> : null }
|
|
||||||
{ m.bays ? <div className={'l'}>{translate('bays')}: {m.bays}</div> : null }
|
|
||||||
{ m.rebuildsperbay ? <div className={'l'}>{translate('rebuildsperbay')}: {m.rebuildsperbay}</div> : null }
|
|
||||||
{ m.rate ? <div className={'l'}>{translate('rate')}: {m.rate}{u.kgs} {translate('refuel time')}: {formats.time(this.props.fuel * 1000 / m.rate)}</div> : null }
|
|
||||||
{ m.getAmmo() && m.grp !== 'scb' ? <div className={'l'}>{translate('ammunition')}: {formats.gen(m.getAmmo())}</div> : null }
|
|
||||||
{ m.getSpinup() ? <div className={'l'}>{translate('spinup')}: {formats.f1(m.getSpinup())}{u.s}</div> : null }
|
|
||||||
{ m.getDuration() ? <div className={'l'}>{translate('duration')}: {formats.f1(m.getDuration())}{u.s}</div> : null }
|
|
||||||
{ m.grp === 'scb' ? <div className={'l'}>{translate('cells')}: {formats.int(m.getAmmo() + 1)}</div> : null }
|
|
||||||
{ m.grp === 'gsrp' ? <div className={'l'}>{translate('shield addition')}: {formats.f1(m.getShieldAddition())}{u.MJ}</div> : null }
|
|
||||||
{ m.grp === 'gfsb' ? <div className={'l'}>{translate('jump addition')}: {formats.f1(m.getJumpBoost())}{u.LY}</div> : null }
|
|
||||||
{ m.grp === 'gs' ? <div className={'l'}>{translate('shield addition')}: {formats.f1(m.getShieldAddition())}{u.MJ}</div> : null }
|
|
||||||
{ m.getShieldReinforcement() ? <div className={'l'}>{translate('shieldreinforcement')}: {formats.f1(m.getDuration() * m.getShieldReinforcement())}{u.MJ}</div> : null }
|
|
||||||
{ m.getShieldReinforcement() ? <div className={'l'}>{translate('total')}: {formats.int((m.getAmmo() + 1) * (m.getDuration() * m.getShieldReinforcement()))}{u.MJ}</div> : null }
|
|
||||||
{ m.repair ? <div className={'l'}>{translate('repair')}: {m.repair}</div> : null }
|
|
||||||
{ m.getFacingLimit() ? <div className={'l'}>{translate('facinglimit')} {formats.f1(m.getFacingLimit())}°</div> : null }
|
|
||||||
{ m.getRange() ? <div className={'l'}>{translate('range')} {formats.f2(m.getRange())}{u.km}</div> : null }
|
|
||||||
{ m.getRangeT() ? <div className={'l'}>{translate('ranget')} {formats.f1(m.getRangeT())}{u.s}</div> : null }
|
|
||||||
{ m.getTime() ? <div className={'l'}>{translate('time')}: {formats.time(m.getTime())}</div> : null }
|
|
||||||
{ m.getHackTime() ? <div className={'l'}>{translate('hacktime')}: {formats.time(m.getHackTime())}</div> : null }
|
|
||||||
{ m.maximum ? <div className={'l'}>{translate('max')}: {(m.maximum)}</div> : null }
|
|
||||||
{ m.rangeLS ? <div className={'l'}>{translate('range')}: {m.rangeLS}{u.Ls}</div> : null }
|
|
||||||
{ m.rangeLS === null ? <div className={'l'}>∞{u.Ls}</div> : null }
|
|
||||||
{ m.rangeRating ? <div className={'l'}>{translate('range')}: {m.rangeRating}</div> : null }
|
|
||||||
{ m.passengers ? <div className={'l'}>{translate('passengers')}: {m.passengers}</div> : null }
|
|
||||||
{ m.getRegenerationRate() ? <div className='l'>{translate('regen')}: {formats.round1(m.getRegenerationRate())}{u.ps}</div> : null }
|
|
||||||
{ m.getBrokenRegenerationRate() ? <div className='l'>{translate('brokenregen')}: {formats.round1(m.getBrokenRegenerationRate())}{u.ps}</div> : null }
|
|
||||||
{ showModuleResistances && m.getExplosiveResistance() ? <div className='l'>{translate('explres')}: {formats.pct(m.getExplosiveResistance())}</div> : null }
|
|
||||||
{ showModuleResistances && m.getKineticResistance() ? <div className='l'>{translate('kinres')}: {formats.pct(m.getKineticResistance())}</div> : null }
|
|
||||||
{ showModuleResistances && m.getThermalResistance() ? <div className='l'>{translate('thermres')}: {formats.pct(m.getThermalResistance())}</div> : null }
|
|
||||||
{ showModuleResistances && m.getCausticResistance() ? <div className='l'>{translate('causres')}: {formats.pct(m.getCausticResistance())}</div> : null }
|
|
||||||
{ m.getHullReinforcement() ? <div className='l'>{translate('armour')}: {formats.int(m.getHullReinforcement() + ship.baseArmour * m.getModValue('hullboost') / 10000)}</div> : null }
|
|
||||||
{ m.getProtection() ? <div className='l'>{translate('protection')}: {formats.rPct(m.getProtection())}</div> : null }
|
|
||||||
{ m.getIntegrity() ? <div className='l'>{translate('integrity')}: {formats.int(m.getIntegrity())}</div> : null } */}
|
|
||||||
{(m.getApplicableBlueprints() || []).length > 0 ? (
|
|
||||||
<div className="r"
|
|
||||||
ref={(modButton) => (this.modButton = modButton)}
|
|
||||||
>
|
|
||||||
<button onClick={this._toggleModifications.bind(this)}
|
|
||||||
onContextMenu={stopCtxPropagation}
|
|
||||||
onMouseOver={termtip.bind(null, 'modifications')}
|
|
||||||
onMouseOut={tooltip.bind(null, null)}
|
|
||||||
>
|
|
||||||
<ListModifications />
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
) : null}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return <div className={'empty'}>{translate('empty')}</div>;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import SlotSection from './SlotSection';
|
import SlotSection from './SlotSection';
|
||||||
import InternalSlot from './InternalSlot';
|
import Slot from './Slot';
|
||||||
import * as ModuleUtils from '../shipyard/ModuleUtils';
|
import * as ModuleUtils from '../shipyard/ModuleUtils';
|
||||||
import { stopCtxPropagation } from '../utils/UtilityFunctions';
|
import { stopCtxPropagation } from '../utils/UtilityFunctions';
|
||||||
import { canMount } from '../utils/SlotFunctions';
|
import { canMount } from '../utils/SlotFunctions';
|
||||||
@@ -223,7 +223,7 @@ export default class InternalSlotSection extends SlotSection {
|
|||||||
let { fuelCapacity } = ship;
|
let { fuelCapacity } = ship;
|
||||||
|
|
||||||
for (const slot of ship.getInternals(undefined, true)) {
|
for (const slot of ship.getInternals(undefined, true)) {
|
||||||
slots.push(<InternalSlot
|
slots.push(<Slot
|
||||||
key={slot.object.Slot}
|
key={slot.object.Slot}
|
||||||
maxClass={slot.getSize()}
|
maxClass={slot.getSize()}
|
||||||
onOpen={this._openMenu.bind(this, slot)}
|
onOpen={this._openMenu.bind(this, slot)}
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import Persist from '../stores/Persist';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import TranslatedComponent from './TranslatedComponent';
|
import TranslatedComponent from './TranslatedComponent';
|
||||||
import cn from 'classnames';
|
import cn from 'classnames';
|
||||||
|
import { ListModifications, Modified } from './SvgIcons';
|
||||||
import AvailableModulesMenu from './AvailableModulesMenu';
|
import AvailableModulesMenu from './AvailableModulesMenu';
|
||||||
import ModificationsMenu from './ModificationsMenu';
|
import ModificationsMenu from './ModificationsMenu';
|
||||||
import { diffDetails } from '../utils/SlotFunctions';
|
import { diffDetails } from '../utils/SlotFunctions';
|
||||||
import { wrapCtxMenu } from '../utils/UtilityFunctions';
|
import { stopCtxPropagation, wrapCtxMenu } from '../utils/UtilityFunctions';
|
||||||
|
import { blueprintTooltip } from '../utils/BlueprintFunctions';
|
||||||
import { Ship, Module } from 'ed-forge';
|
import { Ship, Module } from 'ed-forge';
|
||||||
import { REG_MILITARY_SLOT, REG_HARDPOINT_SLOT } from 'ed-forge/lib/data/slots';
|
import { REG_MILITARY_SLOT, REG_HARDPOINT_SLOT } from 'ed-forge/lib/data/slots';
|
||||||
|
|
||||||
@@ -43,12 +46,127 @@ export default class Slot extends TranslatedComponent {
|
|||||||
|
|
||||||
this._contextMenu = wrapCtxMenu(this._contextMenu.bind(this));
|
this._contextMenu = wrapCtxMenu(this._contextMenu.bind(this));
|
||||||
this._getMaxClassLabel = this._getMaxClassLabel.bind(this);
|
this._getMaxClassLabel = this._getMaxClassLabel.bind(this);
|
||||||
this._keyDown = this._keyDown.bind(this);
|
|
||||||
this.slotDiv = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Must be implemented by subclasses:
|
/**
|
||||||
// _getSlotDetails()
|
* Generate the slot contents
|
||||||
|
* @param {Object} m Mounted Module
|
||||||
|
* @param {Function} translate Translate function
|
||||||
|
* @param {Object} formats Localized Formats map
|
||||||
|
* @param {Object} u Localized Units Map
|
||||||
|
* @return {React.Component} Slot contents
|
||||||
|
*/
|
||||||
|
_getSlotDetails(m, translate, formats, u) {
|
||||||
|
if (m) {
|
||||||
|
let classRating = String(m.getSize()) + m.getRating();
|
||||||
|
let { drag, drop, ship } = this.props;
|
||||||
|
let { termtip, tooltip } = this.context;
|
||||||
|
let showModuleResistances = Persist.showModuleResistances();
|
||||||
|
|
||||||
|
// Modifications tooltip shows blueprint and grade, if available
|
||||||
|
// let modTT = translate('modified');
|
||||||
|
// const blueprint = m.getBlueprint();
|
||||||
|
// const experimental = m.getExperimental();
|
||||||
|
// const grade = m.getGrade();
|
||||||
|
// if (blueprint) {
|
||||||
|
// modTT = translate(blueprint) + ' ' + translate('grade') + ' ' + grade;
|
||||||
|
// if (experimental) {
|
||||||
|
// modTT += ', ' + translate(experimental);
|
||||||
|
// }
|
||||||
|
// modTT = (
|
||||||
|
// <div>
|
||||||
|
// <div>{modTT}</div>
|
||||||
|
// {blueprintTooltip(translate, m.blueprint.grades[m.blueprint.grade], m)}
|
||||||
|
// </div>
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
|
||||||
|
let mass = m.get('mass') || m.get('cargo') || m.get('fuel') || 0;
|
||||||
|
const enabled = m.isEnabled();
|
||||||
|
|
||||||
|
const className = cn('details', enabled ? '' : 'disabled');
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={className}
|
||||||
|
draggable="true"
|
||||||
|
onDragStart={drag}
|
||||||
|
onDragEnd={drop}
|
||||||
|
>
|
||||||
|
<div className={'cb'}>
|
||||||
|
<div className={'l'}>
|
||||||
|
{classRating} {translate(m.readMeta('type'))}
|
||||||
|
{m.mods && Object.keys(m.mods).length > 0 ? (
|
||||||
|
<span
|
||||||
|
onMouseOver={termtip.bind(null, modTT)}
|
||||||
|
onMouseOut={tooltip.bind(null, null)}
|
||||||
|
>
|
||||||
|
<Modified />
|
||||||
|
</span>
|
||||||
|
) : (
|
||||||
|
''
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className={'r'}>
|
||||||
|
{formats.round(mass)}
|
||||||
|
{u.T}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className={'cb'}>
|
||||||
|
{/* { m.getOptMass() ? <div className={'l'}>{translate('optmass', 'sg')}: {formats.int(m.getOptMass())}{u.T}</div> : null }
|
||||||
|
{ m.getMaxMass() ? <div className={'l'}>{translate('maxmass', 'sg')}: {formats.int(m.getMaxMass())}{u.T}</div> : null }
|
||||||
|
{ m.bins ? <div className={'l'}>{m.bins} <u>{translate('bins')}</u></div> : null }
|
||||||
|
{ m.bays ? <div className={'l'}>{translate('bays')}: {m.bays}</div> : null }
|
||||||
|
{ m.rebuildsperbay ? <div className={'l'}>{translate('rebuildsperbay')}: {m.rebuildsperbay}</div> : null }
|
||||||
|
{ m.rate ? <div className={'l'}>{translate('rate')}: {m.rate}{u.kgs} {translate('refuel time')}: {formats.time(this.props.fuel * 1000 / m.rate)}</div> : null }
|
||||||
|
{ m.getAmmo() && m.grp !== 'scb' ? <div className={'l'}>{translate('ammunition')}: {formats.gen(m.getAmmo())}</div> : null }
|
||||||
|
{ m.getSpinup() ? <div className={'l'}>{translate('spinup')}: {formats.f1(m.getSpinup())}{u.s}</div> : null }
|
||||||
|
{ m.getDuration() ? <div className={'l'}>{translate('duration')}: {formats.f1(m.getDuration())}{u.s}</div> : null }
|
||||||
|
{ m.grp === 'scb' ? <div className={'l'}>{translate('cells')}: {formats.int(m.getAmmo() + 1)}</div> : null }
|
||||||
|
{ m.grp === 'gsrp' ? <div className={'l'}>{translate('shield addition')}: {formats.f1(m.getShieldAddition())}{u.MJ}</div> : null }
|
||||||
|
{ m.grp === 'gfsb' ? <div className={'l'}>{translate('jump addition')}: {formats.f1(m.getJumpBoost())}{u.LY}</div> : null }
|
||||||
|
{ m.grp === 'gs' ? <div className={'l'}>{translate('shield addition')}: {formats.f1(m.getShieldAddition())}{u.MJ}</div> : null }
|
||||||
|
{ m.getShieldReinforcement() ? <div className={'l'}>{translate('shieldreinforcement')}: {formats.f1(m.getDuration() * m.getShieldReinforcement())}{u.MJ}</div> : null }
|
||||||
|
{ m.getShieldReinforcement() ? <div className={'l'}>{translate('total')}: {formats.int((m.getAmmo() + 1) * (m.getDuration() * m.getShieldReinforcement()))}{u.MJ}</div> : null }
|
||||||
|
{ m.repair ? <div className={'l'}>{translate('repair')}: {m.repair}</div> : null }
|
||||||
|
{ m.getFacingLimit() ? <div className={'l'}>{translate('facinglimit')} {formats.f1(m.getFacingLimit())}°</div> : null }
|
||||||
|
{ m.getRange() ? <div className={'l'}>{translate('range')} {formats.f2(m.getRange())}{u.km}</div> : null }
|
||||||
|
{ m.getRangeT() ? <div className={'l'}>{translate('ranget')} {formats.f1(m.getRangeT())}{u.s}</div> : null }
|
||||||
|
{ m.getTime() ? <div className={'l'}>{translate('time')}: {formats.time(m.getTime())}</div> : null }
|
||||||
|
{ m.getHackTime() ? <div className={'l'}>{translate('hacktime')}: {formats.time(m.getHackTime())}</div> : null }
|
||||||
|
{ m.maximum ? <div className={'l'}>{translate('max')}: {(m.maximum)}</div> : null }
|
||||||
|
{ m.rangeLS ? <div className={'l'}>{translate('range')}: {m.rangeLS}{u.Ls}</div> : null }
|
||||||
|
{ m.rangeLS === null ? <div className={'l'}>∞{u.Ls}</div> : null }
|
||||||
|
{ m.rangeRating ? <div className={'l'}>{translate('range')}: {m.rangeRating}</div> : null }
|
||||||
|
{ m.passengers ? <div className={'l'}>{translate('passengers')}: {m.passengers}</div> : null }
|
||||||
|
{ m.getRegenerationRate() ? <div className='l'>{translate('regen')}: {formats.round1(m.getRegenerationRate())}{u.ps}</div> : null }
|
||||||
|
{ m.getBrokenRegenerationRate() ? <div className='l'>{translate('brokenregen')}: {formats.round1(m.getBrokenRegenerationRate())}{u.ps}</div> : null }
|
||||||
|
{ showModuleResistances && m.getExplosiveResistance() ? <div className='l'>{translate('explres')}: {formats.pct(m.getExplosiveResistance())}</div> : null }
|
||||||
|
{ showModuleResistances && m.getKineticResistance() ? <div className='l'>{translate('kinres')}: {formats.pct(m.getKineticResistance())}</div> : null }
|
||||||
|
{ showModuleResistances && m.getThermalResistance() ? <div className='l'>{translate('thermres')}: {formats.pct(m.getThermalResistance())}</div> : null }
|
||||||
|
{ showModuleResistances && m.getCausticResistance() ? <div className='l'>{translate('causres')}: {formats.pct(m.getCausticResistance())}</div> : null }
|
||||||
|
{ m.getHullReinforcement() ? <div className='l'>{translate('armour')}: {formats.int(m.getHullReinforcement() + ship.baseArmour * m.getModValue('hullboost') / 10000)}</div> : null }
|
||||||
|
{ m.getProtection() ? <div className='l'>{translate('protection')}: {formats.rPct(m.getProtection())}</div> : null }
|
||||||
|
{ m.getIntegrity() ? <div className='l'>{translate('integrity')}: {formats.int(m.getIntegrity())}</div> : null } */}
|
||||||
|
{(m.getApplicableBlueprints() || []).length > 0 ? (
|
||||||
|
<div className="r"
|
||||||
|
ref={(modButton) => (this.modButton = modButton)}
|
||||||
|
>
|
||||||
|
<button onClick={this._toggleModifications.bind(this)}
|
||||||
|
onContextMenu={stopCtxPropagation}
|
||||||
|
onMouseOver={termtip.bind(null, 'modifications')}
|
||||||
|
onMouseOut={tooltip.bind(null, null)}
|
||||||
|
>
|
||||||
|
<ListModifications />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return <div className={'empty'}>{translate('empty')}</div>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the CSS class name for the slot. Can/should be overriden
|
* Get the CSS class name for the slot. Can/should be overriden
|
||||||
@@ -90,22 +208,6 @@ export default class Slot extends TranslatedComponent {
|
|||||||
this.props.onSelect(null,null);
|
this.props.onSelect(null,null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Key Down handler
|
|
||||||
* @param {SyntheticEvent} event Event
|
|
||||||
* ToDo: see if this can be moved up
|
|
||||||
* we do more or less the same thing
|
|
||||||
* in every section when Enter key is pressed
|
|
||||||
* on a focusable item
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
_keyDown(event) {
|
|
||||||
if (event.key == 'Enter') {
|
|
||||||
if(event.target.className == 'r') {
|
|
||||||
this._toggleModifications();
|
|
||||||
}
|
|
||||||
this.props.onOpen(event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* Render the slot
|
* Render the slot
|
||||||
* @return {React.Component} The slot
|
* @return {React.Component} The slot
|
||||||
@@ -148,7 +250,6 @@ export default class Slot extends TranslatedComponent {
|
|||||||
onSelect={onSelect}
|
onSelect={onSelect}
|
||||||
warning={warning}
|
warning={warning}
|
||||||
diffDetails={diffDetails.bind(ship, this.context.language)}
|
diffDetails={diffDetails.bind(ship, this.context.language)}
|
||||||
slotDiv = {this.slotDiv}
|
|
||||||
/>;
|
/>;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -157,9 +258,9 @@ export default class Slot extends TranslatedComponent {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={cn('slot', dropClass, { selected })} onClick={onOpen}
|
<div className={cn('slot', dropClass, { selected })} onClick={onOpen}
|
||||||
onKeyDown={this._keyDown} onContextMenu={this._contextMenu}
|
onContextMenu={this._contextMenu}
|
||||||
onDragOver={dragOver} tabIndex="0"
|
onDragOver={dragOver} tabIndex="0"
|
||||||
ref={slotDiv => this.slotDiv = slotDiv}>
|
>
|
||||||
<div className='details-container'>
|
<div className='details-container'>
|
||||||
<div className='sz'>{this._getMaxClassLabel(translate)}</div>
|
<div className='sz'>{this._getMaxClassLabel(translate)}</div>
|
||||||
{slotDetails}
|
{slotDetails}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import cn from 'classnames';
|
import cn from 'classnames';
|
||||||
import SlotSection from './SlotSection';
|
import SlotSection from './SlotSection';
|
||||||
import InternalSlot from './InternalSlot';
|
import Slot from './Slot';
|
||||||
import Module from '../shipyard/Module';
|
import Module from '../shipyard/Module';
|
||||||
import * as ShipRoles from '../shipyard/ShipRoles';
|
import * as ShipRoles from '../shipyard/ShipRoles';
|
||||||
import { stopCtxPropagation } from '../utils/UtilityFunctions';
|
import { stopCtxPropagation } from '../utils/UtilityFunctions';
|
||||||
@@ -131,7 +131,7 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
// let bh = ship.bulkheads;
|
// let bh = ship.bulkheads;
|
||||||
|
|
||||||
let armour = ship.getAlloys();
|
let armour = ship.getAlloys();
|
||||||
slots[0] = <InternalSlot
|
slots[0] = <Slot
|
||||||
key='bh'
|
key='bh'
|
||||||
slot={armour}
|
slot={armour}
|
||||||
modules={armour.getApplicableItems()}
|
modules={armour.getApplicableItems()}
|
||||||
@@ -143,7 +143,7 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
/>;
|
/>;
|
||||||
|
|
||||||
const powerPlant = ship.getPowerPlant();
|
const powerPlant = ship.getPowerPlant();
|
||||||
slots[1] = <InternalSlot
|
slots[1] = <Slot
|
||||||
key='pp'
|
key='pp'
|
||||||
slot={powerPlant}
|
slot={powerPlant}
|
||||||
modules={powerPlant.getApplicableItems()}
|
modules={powerPlant.getApplicableItems()}
|
||||||
@@ -156,7 +156,7 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
/>;
|
/>;
|
||||||
|
|
||||||
const thrusters = ship.getThrusters();
|
const thrusters = ship.getThrusters();
|
||||||
slots[2] = <InternalSlot
|
slots[2] = <Slot
|
||||||
key='th'
|
key='th'
|
||||||
slot={thrusters}
|
slot={thrusters}
|
||||||
modules={thrusters.getApplicableItems()}
|
modules={thrusters.getApplicableItems()}
|
||||||
@@ -170,7 +170,7 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
|
|
||||||
|
|
||||||
const fsd = ship.getFSD();
|
const fsd = ship.getFSD();
|
||||||
slots[3] = <InternalSlot
|
slots[3] = <Slot
|
||||||
key='fsd'
|
key='fsd'
|
||||||
slot={fsd}
|
slot={fsd}
|
||||||
modules={fsd.getApplicableItems()}
|
modules={fsd.getApplicableItems()}
|
||||||
@@ -182,7 +182,7 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
/>;
|
/>;
|
||||||
|
|
||||||
const lifeSupport = ship.getLifeSupport();
|
const lifeSupport = ship.getLifeSupport();
|
||||||
slots[4] = <InternalSlot
|
slots[4] = <Slot
|
||||||
key='ls'
|
key='ls'
|
||||||
slot={lifeSupport}
|
slot={lifeSupport}
|
||||||
modules={lifeSupport.getApplicableItems()}
|
modules={lifeSupport.getApplicableItems()}
|
||||||
@@ -194,7 +194,7 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
/>;
|
/>;
|
||||||
|
|
||||||
const powerDistributor = ship.getPowerDistributor();
|
const powerDistributor = ship.getPowerDistributor();
|
||||||
slots[5] = <InternalSlot
|
slots[5] = <Slot
|
||||||
key='pd'
|
key='pd'
|
||||||
slot={powerDistributor}
|
slot={powerDistributor}
|
||||||
modules={powerDistributor.getApplicableItems()}
|
modules={powerDistributor.getApplicableItems()}
|
||||||
@@ -207,7 +207,7 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
/>;
|
/>;
|
||||||
|
|
||||||
const sensors = ship.getSensors();
|
const sensors = ship.getSensors();
|
||||||
slots[6] = <InternalSlot
|
slots[6] = <Slot
|
||||||
key='ss'
|
key='ss'
|
||||||
slot={sensors}
|
slot={sensors}
|
||||||
modules={sensors.getApplicableItems()}
|
modules={sensors.getApplicableItems()}
|
||||||
@@ -219,7 +219,7 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
/>;
|
/>;
|
||||||
|
|
||||||
const fuelTank = ship.getCoreFuelTank();
|
const fuelTank = ship.getCoreFuelTank();
|
||||||
slots[7] = <InternalSlot
|
slots[7] = <Slot
|
||||||
key='ft'
|
key='ft'
|
||||||
slot={fuelTank}
|
slot={fuelTank}
|
||||||
modules={fuelTank.getApplicableItems()}
|
modules={fuelTank.getApplicableItems()}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import SlotSection from './SlotSection';
|
import SlotSection from './SlotSection';
|
||||||
import InternalSlot from './InternalSlot';
|
import Slot from './Slot';
|
||||||
import { stopCtxPropagation } from '../utils/UtilityFunctions';
|
import { stopCtxPropagation } from '../utils/UtilityFunctions';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,7 +70,7 @@ export default class UtilitySlotSection extends SlotSection {
|
|||||||
let { originSlot, targetSlot } = this.state;
|
let { originSlot, targetSlot } = this.state;
|
||||||
|
|
||||||
for (let h of ship.getUtilities(undefined, true)) {
|
for (let h of ship.getUtilities(undefined, true)) {
|
||||||
slots.push(<InternalSlot
|
slots.push(<Slot
|
||||||
key={h.object.Slot}
|
key={h.object.Slot}
|
||||||
maxClass={h.getSize()}
|
maxClass={h.getSize()}
|
||||||
onOpen={this._openMenu.bind(this,h)}
|
onOpen={this._openMenu.bind(this,h)}
|
||||||
|
|||||||
Reference in New Issue
Block a user