mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-09 22:55:35 +00:00
Add shopping list for refit
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
#2.3.3
|
#2.3.3
|
||||||
* Remove unused blueprint when hitting reset
|
* Remove unused blueprint when hitting reset
|
||||||
|
* Add 'purchase module' external link to EDDB for refit items
|
||||||
|
|
||||||
#2.3.2
|
#2.3.2
|
||||||
* Use scan range for DSS rather than scan time
|
* Use scan range for DSS rather than scan time
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import Ship from '../shipyard/Ship';
|
|||||||
import { Insurance } from '../shipyard/Constants';
|
import { Insurance } from '../shipyard/Constants';
|
||||||
import { slotName, slotComparator } from '../utils/SlotFunctions';
|
import { slotName, slotComparator } from '../utils/SlotFunctions';
|
||||||
import TranslatedComponent from './TranslatedComponent';
|
import TranslatedComponent from './TranslatedComponent';
|
||||||
|
import { ShoppingIcon } from '../components/SvgIcons';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cost Section
|
* Cost Section
|
||||||
@@ -31,6 +32,7 @@ export default class CostSection extends TranslatedComponent {
|
|||||||
this._buildRetrofitShip = this._buildRetrofitShip.bind(this);
|
this._buildRetrofitShip = this._buildRetrofitShip.bind(this);
|
||||||
this._onBaseRetrofitChange = this._onBaseRetrofitChange.bind(this);
|
this._onBaseRetrofitChange = this._onBaseRetrofitChange.bind(this);
|
||||||
this._defaultRetrofitName = this._defaultRetrofitName.bind(this);
|
this._defaultRetrofitName = this._defaultRetrofitName.bind(this);
|
||||||
|
this._eddbShoppingList = this._eddbShoppingList.bind(this);
|
||||||
|
|
||||||
let data = Ships[props.ship.id]; // Retrieve the basic ship properties, slots and defaults
|
let data = Ships[props.ship.id]; // Retrieve the basic ship properties, slots and defaults
|
||||||
let retrofitName = this._defaultRetrofitName(props.ship.id, props.buildName);
|
let retrofitName = this._defaultRetrofitName(props.ship.id, props.buildName);
|
||||||
@@ -325,12 +327,29 @@ export default class CostSection extends TranslatedComponent {
|
|||||||
</div>;
|
</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open up a window for EDDB with a shopping list of our retrofit components
|
||||||
|
*/
|
||||||
|
_eddbShoppingList() {
|
||||||
|
const { retrofitCosts } = this.state;
|
||||||
|
const { ship } = this.props;
|
||||||
|
|
||||||
|
console.log(`retrofitCosts is ${JSON.stringify(retrofitCosts, null, 2)}`);
|
||||||
|
// Provide unique list of non-PP module EDDB IDs to buy
|
||||||
|
const modIds = retrofitCosts.filter(item => item.retroItem.incCost && item.buyId && !item.buyPp).map(item => item.buyId).filter((v, i, a) => a.indexOf(v) === i);
|
||||||
|
console.log(`modIds is ${JSON.stringify(modIds)}`);
|
||||||
|
|
||||||
|
// Open up the relevant URL
|
||||||
|
window.open('https://eddb.io/station?m=' + modIds.join(','));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render the retofit tab
|
* Render the retofit tab
|
||||||
* @return {React.Component} Tab contents
|
* @return {React.Component} Tab contents
|
||||||
*/
|
*/
|
||||||
_retrofitTab() {
|
_retrofitTab() {
|
||||||
let { retrofitTotal, retrofitCosts, moduleDiscount, retrofitName } = this.state;
|
let { retrofitTotal, retrofitCosts, moduleDiscount, retrofitName } = this.state;
|
||||||
|
const { termtip, tooltip } = this.context;
|
||||||
let { translate, formats, units } = this.context.language;
|
let { translate, formats, units } = this.context.language;
|
||||||
let int = formats.int;
|
let int = formats.int;
|
||||||
let rows = [], options = [<option key='stock' value=''>{translate('Stock')}</option>];
|
let rows = [], options = [<option key='stock' value=''>{translate('Stock')}</option>];
|
||||||
@@ -370,7 +389,8 @@ export default class CostSection extends TranslatedComponent {
|
|||||||
<tbody>
|
<tbody>
|
||||||
{rows}
|
{rows}
|
||||||
<tr className='ri'>
|
<tr className='ri'>
|
||||||
<td colSpan='4' className='lbl' >{translate('cost')}</td>
|
<td className='lbl' ><button onClick={this._eddbShoppingList} onMouseOver={termtip.bind(null, 'PHRASE_REFIT_SHOPPING_LIST')} onMouseOut={tooltip.bind(null, null)}><ShoppingIcon className='lg' style={{ fill: 'black' }}/></button></td>
|
||||||
|
<td colSpan='3' className='lbl' >{translate('cost')}</td>
|
||||||
<td colSpan='2' className={cn('val', retrofitTotal > 0 ? 'warning' : 'secondary-disabled')} style={{ borderBottom:'none' }}>
|
<td colSpan='2' className={cn('val', retrofitTotal > 0 ? 'warning' : 'secondary-disabled')} style={{ borderBottom:'none' }}>
|
||||||
{int(retrofitTotal)}{units.CR}
|
{int(retrofitTotal)}{units.CR}
|
||||||
</td>
|
</td>
|
||||||
@@ -403,6 +423,8 @@ export default class CostSection extends TranslatedComponent {
|
|||||||
if (ship.bulkheads.m.index != retrofitShip.bulkheads.m.index) {
|
if (ship.bulkheads.m.index != retrofitShip.bulkheads.m.index) {
|
||||||
item = {
|
item = {
|
||||||
buyClassRating: ship.bulkheads.m.class + ship.bulkheads.m.rating,
|
buyClassRating: ship.bulkheads.m.class + ship.bulkheads.m.rating,
|
||||||
|
buyId: ship.bulkheads.m.eddbID,
|
||||||
|
buyPp: ship.bulkheads.m.pp,
|
||||||
buyName: ship.bulkheads.m.name,
|
buyName: ship.bulkheads.m.name,
|
||||||
sellClassRating: retrofitShip.bulkheads.m.class + retrofitShip.bulkheads.m.rating,
|
sellClassRating: retrofitShip.bulkheads.m.class + retrofitShip.bulkheads.m.rating,
|
||||||
sellName: retrofitShip.bulkheads.m.name,
|
sellName: retrofitShip.bulkheads.m.name,
|
||||||
@@ -424,6 +446,8 @@ export default class CostSection extends TranslatedComponent {
|
|||||||
if (modId != retroModId) {
|
if (modId != retroModId) {
|
||||||
item = { netCost: 0, retroItem: retroSlotGroup[i] };
|
item = { netCost: 0, retroItem: retroSlotGroup[i] };
|
||||||
if (slotGroup[i].m) {
|
if (slotGroup[i].m) {
|
||||||
|
item.buyId = slotGroup[i].m.eddbID,
|
||||||
|
item.buyPp = slotGroup[i].m.pp,
|
||||||
item.buyName = slotGroup[i].m.name || slotGroup[i].m.grp;
|
item.buyName = slotGroup[i].m.name || slotGroup[i].m.grp;
|
||||||
item.buyClassRating = slotGroup[i].m.class + slotGroup[i].m.rating;
|
item.buyClassRating = slotGroup[i].m.class + slotGroup[i].m.rating;
|
||||||
item.netCost = slotGroup[i].discountedCost;
|
item.netCost = slotGroup[i].discountedCost;
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ export const terms = {
|
|||||||
PHRASE_SELECT_SPECIAL: 'Click to select an experimental effect',
|
PHRASE_SELECT_SPECIAL: 'Click to select an experimental effect',
|
||||||
PHRASE_NO_SPECIAL: 'No experimental effect',
|
PHRASE_NO_SPECIAL: 'No experimental effect',
|
||||||
PHRASE_SHOPPING_LIST: 'Stations that sell this build',
|
PHRASE_SHOPPING_LIST: 'Stations that sell this build',
|
||||||
|
PHRASE_REFIT_SHOPPING_LIST: 'Stations that sell required modules',
|
||||||
PHRASE_TOTAL_EFFECTIVE_SHIELD: 'Total amount of damage that can be taken from each damage type, if using all shield cells',
|
PHRASE_TOTAL_EFFECTIVE_SHIELD: 'Total amount of damage that can be taken from each damage type, if using all shield cells',
|
||||||
PHRASE_TIME_TO_LOSE_SHIELDS: 'Shields will hold for',
|
PHRASE_TIME_TO_LOSE_SHIELDS: 'Shields will hold for',
|
||||||
PHRASE_TIME_TO_RECOVER_SHIELDS: 'Shields will recover in',
|
PHRASE_TIME_TO_RECOVER_SHIELDS: 'Shields will recover in',
|
||||||
|
|||||||
Reference in New Issue
Block a user