From 25c30e46a604a17896fe9e08281d934233f20338 Mon Sep 17 00:00:00 2001 From: Felix Linker Date: Tue, 28 Dec 2021 19:11:49 +0100 Subject: [PATCH] Update detailed export to SLEF --- src/app/components/Header.jsx | 39 ++++++------- src/app/shipyard/Serializer.js | 100 --------------------------------- 2 files changed, 18 insertions(+), 121 deletions(-) delete mode 100644 src/app/shipyard/Serializer.js diff --git a/src/app/components/Header.jsx b/src/app/components/Header.jsx index b401fbb9..a5526aaf 100644 --- a/src/app/components/Header.jsx +++ b/src/app/components/Header.jsx @@ -7,7 +7,6 @@ import ActiveLink from './ActiveLink'; import cn from 'classnames'; import { Cogs, CoriolisLogo, Hammer, Help, Rocket, StatsBars } from './SvgIcons'; import Persist from '../stores/Persist'; -import { toDetailedExport } from '../shipyard/Serializer'; import ModalDeleteAll from './ModalDeleteAll'; import ModalExport from './ModalExport'; import ModalHelp from './ModalHelp'; @@ -16,7 +15,8 @@ import Slider from './Slider'; import Announcement from './Announcement'; import { outfitURL } from '../utils/UrlGenerators'; import autoBind from 'auto-bind'; -import { Factory } from 'ed-forge'; +import { Factory, Ship } from 'ed-forge'; +import { chain, entries } from 'lodash'; const SIZE_MIN = 0.65; const SIZE_RANGE = 0.55; @@ -208,20 +208,6 @@ export default class Header extends TranslatedComponent { this.context.showModal(); }; - /** - * Show export modal with backup data - * @param {SyntheticEvent} e Event - */ - _showBackup(e) { - let translate = this.context.language.translate; - e.preventDefault(); - this.context.showModal(); - }; - /** * Show export modal with detailed export * @param {SyntheticEvent} e Event @@ -230,10 +216,22 @@ export default class Header extends TranslatedComponent { let translate = this.context.language.translate; e.preventDefault(); + const builds = chain(Persist.getBuilds()) + .values() + .map((builds) => Object.values(builds)) + .flatMap() + .map((code) => new Ship(code)) + .value(); + this.context.showModal( { + return { + header: { appName: 'Inara', 'appVersion': '1.0' }, + data: build.toJSON(), + }; + }))} />); } @@ -432,10 +430,9 @@ export default class Header extends TranslatedComponent {
    {translate('builds')} & {translate('comparisons')} -
  • {translate('backup')}
  • -
  • {translate('detailed export')}
  • -
  • {translate('import')}
  • -
  • {translate('delete all')}
  • +
  • {translate('detailed export')}
  • +
  • {translate('import')}
  • +
  • {translate('delete all')}

diff --git a/src/app/shipyard/Serializer.js b/src/app/shipyard/Serializer.js deleted file mode 100644 index 4702ae6f..00000000 --- a/src/app/shipyard/Serializer.js +++ /dev/null @@ -1,100 +0,0 @@ -import { ModuleGroupToName, MountMap, BulkheadNames } from './Constants'; -import * as Utils from '../utils/UtilityFunctions'; -import LZString from 'lz-string'; -import { outfitURL } from '../utils/UrlGenerators'; - -/** - * Generates ship-loadout JSON Schema standard object - * @param {Object} standard model - * @return {Object} JSON Schema - */ -function standardToSchema(standard) { - if (standard.m) { - let o = { - class: standard.m.class, - rating: standard.m.rating, - enabled: Boolean(standard.enabled), - priority: standard.priority + 1 - }; - - if (standard.m.name) { - o.name = standard.m.name; - } - - if (standard.m.mods && Object.keys(standard.m.mods).length > 0) { - o.modifications = standard.m.mods; - } - - if (standard.m.blueprint && Object.keys(standard.m.blueprint).length > 0) { - o.blueprint = standard.m.blueprint; - } - - return o; - } - return null; -} - -/** - * Generates ship-loadout JSON Schema slot object - * @param {Object} slot Slot model - * @return {Object} JSON Schema Slot - */ -function slotToSchema(slot) { - if (slot.m) { - let o = { - class: slot.m.class, - rating: slot.m.rating, - enabled: Boolean(slot.enabled), - priority: slot.priority + 1, - group: ModuleGroupToName[slot.m.grp] - }; - - if (slot.m.name) { - o.name = slot.m.name; - } - if (slot.m.mount) { - o.mount = MountMap[slot.m.mount]; - } - if (slot.m.missile) { - o.missile = slot.m.missile; - } - if (slot.m.mods && Object.keys(slot.m.mods).length > 0) { - o.modifications = slot.m.mods; - } - if (slot.m.blueprint && Object.keys(slot.m.blueprint).length > 0) { - o.blueprint = slot.m.blueprint; - } - - return o; - } - return null; -} - -/** - * Serializes a comparion and all of the ships to zipped - * Base 64 encoded JSON. - * @param {string} name Comparison name - * @param {array} builds Array of ship builds - * @param {array} facets Selected facets - * @param {string} predicate sort predicate - * @param {boolean} desc sort order - * @return {string} Zipped Base 64 encoded JSON - */ -export function fromComparison(name, builds, facets, predicate, desc) { - return LZString.compressToBase64(JSON.stringify({ - n: name, - b: builds.map((b) => { return { s: b.id, n: b.buildName, c: b.toString() }; }), - f: facets, - p: predicate, - d: desc ? 1 : 0 - })); -}; - -/** - * Parses the comarison data string back to an object. - * @param {string} code Zipped Base 64 encoded JSON comparison data - * @return {Object} Comparison data object - */ -export function toComparison(code) { - return JSON.parse(LZString.decompressFromBase64(Utils.fromUrlSafe(code))); -};