From 0cdfcbcd25f0e620e8b3cf56ad6265b159fc445d Mon Sep 17 00:00:00 2001 From: Matt Isenhower Date: Fri, 24 Nov 2017 14:28:31 -0800 Subject: [PATCH] Enhance merchandises.json with original gear data when possible Previously this was included as part of the site JS bundle, but it makes more sense to add it to the merchandises.json file. This reduces the site bundle size and makes the data more easily accessible to other sites/apps/etc. that want the data. --- src/js/components/splatoon/MerchandiseBox.vue | 17 ++++------- src/js/splatoon.js | 11 +++++-- src/updater/update.js | 14 ++------- src/updater/updaters/MerchandisesUpdater.js | 29 +++++++++++++++++++ src/updater/updaters/Updater.js | 7 +++++ 5 files changed, 52 insertions(+), 26 deletions(-) create mode 100644 src/updater/updaters/MerchandisesUpdater.js diff --git a/src/js/components/splatoon/MerchandiseBox.vue b/src/js/components/splatoon/MerchandiseBox.vue index c2ec76b..2433837 100644 --- a/src/js/components/splatoon/MerchandiseBox.vue +++ b/src/js/components/splatoon/MerchandiseBox.vue @@ -29,25 +29,25 @@ {{ merchandise.gear.name }}
-
+
Original Gear
- +
-
+
-
+
- {{ originalGear.price }} + {{ merchandise.original_gear.price }}
@@ -74,14 +74,7 @@ diff --git a/src/js/splatoon.js b/src/js/splatoon.js index ebbf8c5..2898ea0 100644 --- a/src/js/splatoon.js +++ b/src/js/splatoon.js @@ -1,3 +1,4 @@ +const brands = require('./data/brands'); const skills = require('./data/skills'); const inkipediaGear = require('./data/inkipediaGear'); @@ -10,9 +11,15 @@ function getOriginalGear(gear) { let originalGear = inkipediaGear[gear.kind].find(ig => ig.name.toLowerCase() == name); if (!originalGear) - return; + return null; - return Object.assign({}, originalGear, { skill: skills[originalGear.skill] }); + let brand = brands[originalGear.brand]; + brand.frequent_skill = skills[brand.frequent_skill]; + + return Object.assign({}, originalGear, { + brand, + skill: skills[originalGear.skill], + }); } module.exports = { diff --git a/src/updater/update.js b/src/updater/update.js index 59e22ac..a2e6892 100644 --- a/src/updater/update.js +++ b/src/updater/update.js @@ -3,6 +3,7 @@ require('./bootstrap'); const Updater = require('./updaters/Updater'); const OriginalGearImageUpdater = require('./updaters/OriginalGearImageUpdater'); const FestivalsUpdater = require('./updaters/FestivalsUpdater'); +const MerchandisesUpdater = require('./updaters/MerchandisesUpdater'); const updaters = [ // Original gear images @@ -49,18 +50,7 @@ const updaters = [ new FestivalsUpdater, // Merchandises - new Updater({ - name: 'Merchandises', - filename: 'merchandises.json', - request: (splatnet) => splatnet.getMerchandises(), - rootKeys: ['merchandises'], - imagePaths: [ - '$..gear.image', - '$..gear.brand.image', - '$..gear.brand.frequent_skill.image', - '$..skill.image', - ], - }), + new MerchandisesUpdater, ]; async function updateAll() { diff --git a/src/updater/updaters/MerchandisesUpdater.js b/src/updater/updaters/MerchandisesUpdater.js new file mode 100644 index 0000000..aba4006 --- /dev/null +++ b/src/updater/updaters/MerchandisesUpdater.js @@ -0,0 +1,29 @@ +const Updater = require('./Updater'); +const SplatNet = require('../splatnet'); +const { getOriginalGear } = require('../../js/splatoon'); + +class MerchandisesUpdater extends Updater { + constructor() { + super({ + name: 'Merchandises', + filename: 'merchandises.json', + request: (splatnet) => splatnet.getMerchandises(), + rootKeys: ['merchandises'], + imagePaths: [ + '$..gear.image', + '$..gear.brand.image', + '$..gear.brand.frequent_skill.image', + '$..skill.image', + ], + }); + } + + processData(data) { + for (let merchandise of data.merchandises) + merchandise.original_gear = getOriginalGear(merchandise.gear); + + return data; + } +} + +module.exports = MerchandisesUpdater; diff --git a/src/updater/updaters/Updater.js b/src/updater/updaters/Updater.js index c58d9f6..523a5db 100644 --- a/src/updater/updaters/Updater.js +++ b/src/updater/updaters/Updater.js @@ -22,6 +22,9 @@ class Updater { // Filter the root keys if necessary data = this.filterRootKeys(data); + // Apply any other processing + data = this.processData(data); + // Convert the data to a JSON string let dataString = JSON.stringify(data); @@ -40,6 +43,10 @@ class Updater { return this.options.request(splatnet); } + processData(data) { + return data; + } + async handleRequest(request) { try { return await request;