diff --git a/ChangeLog.md b/ChangeLog.md index b8aa5618..88719997 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -4,6 +4,7 @@ * Handle import of ships with incorrectly-sized slots * Add 'Extreme' blueprint roll: best beneficial and worst detrimental outcome (in place of 'Average' roll) * Display information about Microsoft browser issues when an import fails + * Add 'purchase this build' icon link to EDDB #2.2.14 * Ensure that jitter is shown correctly when the result of a special effect diff --git a/src/app/components/SvgIcons.jsx b/src/app/components/SvgIcons.jsx index 34d84118..af119679 100644 --- a/src/app/components/SvgIcons.jsx +++ b/src/app/components/SvgIcons.jsx @@ -227,6 +227,26 @@ export class LinkIcon extends SvgIcon { } } +/** + * Shopping icon (dollar sign) + */ +export class ShoppingIcon extends SvgIcon { + /** + * Overriden view box + * @return {String} view box + */ + viewBox() { return '0 0 200 200'; } + /** + * Generate the SVG + * @return {React.Component} SVG Contents + */ + svg() { + return + + ; + } +} + /** * No Power - Lightning bolt + no entry */ diff --git a/src/app/i18n/en.js b/src/app/i18n/en.js index e4979ff1..ce9d4436 100644 --- a/src/app/i18n/en.js +++ b/src/app/i18n/en.js @@ -37,6 +37,7 @@ export const terms = { PHRASE_BLUEPRINT_RESET: 'Remove all modifications and blueprint', PHRASE_SELECT_SPECIAL: 'Click to select an experimental effect', PHRASE_NO_SPECIAL: 'No experimental effect', + PHRASE_SHOPPING_LIST: 'Stations that sell this build', HELP_MODIFICATIONS_MENU: 'Click on a number to enter a new value, or drag along the bar for small changes', diff --git a/src/app/pages/OutfittingPage.jsx b/src/app/pages/OutfittingPage.jsx index 46401c6b..9fdd86cb 100644 --- a/src/app/pages/OutfittingPage.jsx +++ b/src/app/pages/OutfittingPage.jsx @@ -8,7 +8,7 @@ import Persist from '../stores/Persist'; import Ship from '../shipyard/Ship'; import { toDetailedBuild } from '../shipyard/Serializer'; import { outfitURL } from '../utils/UrlGenerators'; -import { FloppyDisk, Bin, Switch, Download, Reload, Fuel, LinkIcon } from '../components/SvgIcons'; +import { FloppyDisk, Bin, Switch, Download, Reload, Fuel, LinkIcon, ShoppingIcon } from '../components/SvgIcons'; import ShipSummaryTable from '../components/ShipSummaryTable'; import StandardSlotSection from '../components/StandardSlotSection'; import HardpointsSlotSection from '../components/HardpointsSlotSection'; @@ -284,6 +284,20 @@ export default class OutfittingPage extends Page { this.context.showModal(); } + /** + * Open up a window for EDDB with a shopping list of our components + */ + _eddbShoppingList() { + const ship = this.state.ship; + + const shipId = Ships[ship.id].eddbID; + // Provide unique list of non-PP module EDDB IDs + const modIds = ship.internal.concat(ship.bulkheads, ship.standard, ship.hardpoints).filter(slot => slot !== null && slot.m !== null && !slot.m.pp).map(slot => slot.m.eddbID).filter((v, i, a) => a.indexOf(v) === i); + + // Open up the relevant URL + window.open('https://eddb.io/station?s=' + shipId + '&m=' + modIds.join(',')); + } + /** * Handle Key Down * @param {Event} e Keyboard Event @@ -342,6 +356,9 @@ export default class OutfittingPage extends Page { +