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 #2.3.4
* Fix crash when removing the special effect from a module * Fix crash when removing the special effect from a module
* Ensure comparisons with saved stock ships work correctly
#2.3.3 #2.3.3
* Remove unused blueprint when hitting reset * Remove unused blueprint when hitting reset

View File

@@ -71,6 +71,7 @@ export default class ComparisonTable extends TranslatedComponent {
* @return {React.Component} Table row * @return {React.Component} Table row
*/ */
_buildRow(build, facets, formats, units) { _buildRow(build, facets, formats, units) {
if (build && build.id && build.buildName) {
let url = outfitURL(build.id, build.toString(), build.buildName); let url = outfitURL(build.id, build.toString(), build.buildName);
let cells = [ let cells = [
<td key='s' className='tl'><Link href={url}>{build.name}</Link></td>, <td key='s' className='tl'><Link href={url}>{build.name}</Link></td>,
@@ -84,9 +85,9 @@ export default class ComparisonTable extends TranslatedComponent {
} }
} }
} }
return <tr key={build.id + build.buildName} className='tr'>{cells}</tr>; return <tr key={build.id + build.buildName} className='tr'>{cells}</tr>;
} }
}
/** /**
* Update state based on property and context changes * Update state based on property and context changes

View File

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

View File

@@ -308,7 +308,10 @@ export default class OutfittingPage extends Page {
* Save the current build * Save the current build
*/ */
_saveBuild() { _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); Persist.saveBuild(shipId, newBuildName, code);
this._updateRoute(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 * @return {this} The current ship instance for chaining
*/ */
buildFrom(serializedString) { buildFrom(serializedString) {
if (!serializedString) {
// Empty serialized string; nothing to do
return this;
}
let standard = new Array(this.standard.length), let standard = new Array(this.standard.length),
hardpoints = new Array(this.hardpoints.length), hardpoints = new Array(this.hardpoints.length),
internal = new Array(this.internal.length), internal = new Array(this.internal.length),