Ensure that stock builds are saved with a code; ignore builds without codes in comparisons

This commit is contained in:
Cmdr McDonald
2017-04-20 15:10:03 +01:00
parent 1516bd4fc0
commit 684ecfcafd
5 changed files with 25 additions and 13 deletions

View File

@@ -1,5 +1,6 @@
#2.3.4
* Fix crash when removing the special effect from a module
* Ensure comparisons with saved stock ships work correctly
#2.3.3
* Remove unused blueprint when hitting reset

View File

@@ -71,21 +71,22 @@ export default class ComparisonTable extends TranslatedComponent {
* @return {React.Component} Table row
*/
_buildRow(build, facets, formats, units) {
let url = outfitURL(build.id, build.toString(), build.buildName);
let cells = [
<td key='s' className='tl'><Link href={url}>{build.name}</Link></td>,
<td key='bn' className='tl'><Link href={url}>{build.buildName}</Link></td>
];
if (build && build.id && build.buildName) {
let url = outfitURL(build.id, build.toString(), build.buildName);
let cells = [
<td key='s' className='tl'><Link href={url}>{build.name}</Link></td>,
<td key='bn' className='tl'><Link href={url}>{build.buildName}</Link></td>
];
for (let f of facets) {
if (f.active) {
for (let p of f.props) {
cells.push(<td key={p}>{formats[f.fmt](build[p])}{f.unit ? units[f.unit] : null}</td>);
for (let f of facets) {
if (f.active) {
for (let p of f.props) {
cells.push(<td key={p}>{formats[f.fmt](build[p])}{f.unit ? units[f.unit] : null}</td>);
}
}
}
return <tr key={build.id + build.buildName} className='tr'>{cells}</tr>;
}
return <tr key={build.id + build.buildName} className='tr'>{cells}</tr>;
}
/**

View File

@@ -81,7 +81,9 @@ export default class ComparisonPage extends Page {
newName = name;
for (let shipId in allBuilds) {
for (let buildName in allBuilds[shipId]) {
builds.push(this._createBuild(shipId, buildName, allBuilds[shipId][buildName]));
if (buildName && allBuilds[shipId][buildName]) {
builds.push(this._createBuild(shipId, buildName, allBuilds[shipId][buildName]));
}
}
}
} else {

View File

@@ -308,7 +308,10 @@ export default class OutfittingPage extends Page {
* Save the current build
*/
_saveBuild() {
const { code, buildName, newBuildName, shipId } = this.state;
const { ship, buildName, newBuildName, shipId } = this.state;
// If this is a stock ship the code won't be set, so ensure that we have it
const code = this.state.code || ship.toString();
Persist.saveBuild(shipId, newBuildName, code);
this._updateRoute(shipId, newBuildName, code);

View File

@@ -707,6 +707,11 @@ export default class Ship {
* @return {this} The current ship instance for chaining
*/
buildFrom(serializedString) {
if (!serializedString) {
// Empty serialized string; nothing to do
return this;
}
let standard = new Array(this.standard.length),
hardpoints = new Array(this.hardpoints.length),
internal = new Array(this.internal.length),