From d265c55e4e5db46879ca561ebb874a63b9547613 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Fri, 19 Oct 2018 18:22:59 +0200 Subject: [PATCH] WIP - Add tag tab categories display Signed-off-by: Tomas Slusny --- src/modules/runelite.js | 23 ++++---- src/routes/tag-show.js | 114 +++++++++++++++++++++++++++++++--------- 2 files changed, 102 insertions(+), 35 deletions(-) diff --git a/src/modules/runelite.js b/src/modules/runelite.js index 6628936b7a..976b9a6857 100644 --- a/src/modules/runelite.js +++ b/src/modules/runelite.js @@ -89,17 +89,22 @@ export const { const result = await Promise.all( items.map(item => - runeliteApi(`runelite-${version}/examine/item/${item}`, { + runeliteApi(`runelite-${version}/cache/item/${item}`, { method: 'GET' - }).then(examine => { - dispatch( - setItemInfo({ - id: item, - name: names[item], - examine - }) + }).then(info => + runeliteApi(`runelite-${version}/examine/item/${item}`, { + method: 'GET' + }).then(examine => + dispatch( + setItemInfo({ + ...info, + id: item, + name: names[item], + examine + }) + ) ) - }) + ) ) ) diff --git a/src/routes/tag-show.js b/src/routes/tag-show.js index a6c571c7bb..95850c0aae 100644 --- a/src/routes/tag-show.js +++ b/src/routes/tag-show.js @@ -1,4 +1,5 @@ import { Component, h } from 'preact' +import { groupBy } from 'ramda' import Layout from '../components/layout' import hero from '../_data/hero' import Meta from '../components/meta' @@ -12,6 +13,60 @@ import './tag.css' const formatIcon = icon => `https://static.runelite.net/cache/item/icon/${icon}.png` +const getCategory = item => { + const menu = item.interfaceOptions + + if (!menu) { + return '' + } + + if ( + item.name.indexOf(' arrow') !== -1 || + item.name.indexOf(' bolt') !== -1 || + item.name.indexOf(' rune') !== -1 || + item.name.indexOf(' dart') !== -1 + ) { + return 'Ammo' + } + + if (menu.indexOf('Drink') !== -1) { + return 'Food' + } + + if (menu.indexOf('Eat') !== -1) { + return 'Food' + } + + if (menu.indexOf('Wear') !== -1) { + return 'Gear' + } + + if (menu.indexOf('Wield') !== -1) { + return 'Gear' + } + + return '' +} + +const sanitizeItem = (items, id) => { + const item = items.find(i => i.id === id) || {} + const name = item.name || '' + const examine = item.examine || '' + + return { + ...item, + id, + name, + examine + } +} + +const flattenMap = map => + Object.keys(map).map(key => ({ + name: key, + values: map[key] + })) + class TagShow extends Component { componentDidMount() { this.props @@ -28,34 +83,41 @@ class TagShow extends Component { {name}
-
-
{csv}
- {itemIds.map(id => { - const item = items.find(i => i.id === id) || {} - const name = item.name || '' - const examine = item.examine || '' - const nameSan = name.replace(' ', '_') - - return ( -
-
- - {name} - -
- {item.name || 'Loading...'} -
- {examine} +
{csv}
+ {flattenMap( + groupBy(item => getCategory(item))( + itemIds.map(id => sanitizeItem(items, id)) + ) + ).map(group => ( +
+

{group.name}

+
+ {group.values.map(item => ( +
+
+ + {item.id} + +
+ {item.name || 'Loading...'} +
+ {item.examine} +
-
- ) - })} -
+ ))} +
+
+ ))}
)