From 38322584ab2f040fb2eba84b7fa20e3e12b18fa5 Mon Sep 17 00:00:00 2001
From: TurtIeSocks <58572875+TurtIeSocks@users.noreply.github.com>
Date: Sun, 3 Jul 2022 23:32:03 -0400
Subject: [PATCH 1/4] Split up Wayfarer
- Let users select s14/s17/rings
- Cleanup primary ui fn a bit
Resolve #506
---
public/base-locales/en.json | 3 +-
server/src/configs/default.json | 5 +-
server/src/graphql/resolvers.js | 4 +-
.../defaultFilters/buildDefaultFilters.js | 3 +
.../services/functions/getPlacementCells.js | 2 +-
server/src/services/ui/primary.js | 169 +++++++++---------
src/components/layout/drawer/WithSubItems.jsx | 38 +++-
7 files changed, 132 insertions(+), 92 deletions(-)
diff --git a/public/base-locales/en.json b/public/base-locales/en.json
index cd3acd484..37d55edeb 100644
--- a/public/base-locales/en.json
+++ b/public/base-locales/en.json
@@ -546,5 +546,6 @@
"poi_color": "POI Color",
"quest_condition": "Quest Condition",
"always_show_labels": "Always Show Labels",
- "scan_areas_options": "Scan Areas Options"
+ "scan_areas_options": "Scan Areas Options",
+ "poi": "Points of Interest"
}
diff --git a/server/src/configs/default.json b/server/src/configs/default.json
index 718171d47..f80890ff1 100644
--- a/server/src/configs/default.json
+++ b/server/src/configs/default.json
@@ -417,7 +417,10 @@
"enabled": false
},
"submissionCells": {
- "enabled": false
+ "enabled": false,
+ "rings": true,
+ "s17Cells": true,
+ "s14Cells": true
},
"weather": {
"enabled": true
diff --git a/server/src/graphql/resolvers.js b/server/src/graphql/resolvers.js
index d0be2763f..c97179794 100644
--- a/server/src/graphql/resolvers.js
+++ b/server/src/graphql/resolvers.js
@@ -299,10 +299,10 @@ module.exports = {
return [
{
placementCells:
- args.zoom >= config.map.submissionZoom
+ args.zoom >= config.map.submissionZoom && args.filters.onlyS17Cells
? Utility.getPlacementCells(args, pokestops, gyms)
: [],
- typeCells: Utility.getTypeCells(args, pokestops, gyms),
+ typeCells: args.filters.onlyS14Cells ? Utility.getTypeCells(args, pokestops, gyms) : [],
},
]
}
diff --git a/server/src/services/defaultFilters/buildDefaultFilters.js b/server/src/services/defaultFilters/buildDefaultFilters.js
index 92ff1c658..715ed5009 100644
--- a/server/src/services/defaultFilters/buildDefaultFilters.js
+++ b/server/src/services/defaultFilters/buildDefaultFilters.js
@@ -106,6 +106,9 @@ module.exports = function buildDefault(perms, available) {
submissionCells: perms.submissionCells
? {
enabled: defaultFilters.submissionCells.enabled,
+ rings: defaultFilters.submissionCells.rings,
+ s17Cells: defaultFilters.submissionCells.s17Cells,
+ s14Cells: defaultFilters.submissionCells.s14Cells,
filter: { global: new GenericFilter() },
}
: undefined,
diff --git a/server/src/services/functions/getPlacementCells.js b/server/src/services/functions/getPlacementCells.js
index 8805ebbee..f507071a5 100644
--- a/server/src/services/functions/getPlacementCells.js
+++ b/server/src/services/functions/getPlacementCells.js
@@ -46,7 +46,7 @@ module.exports = function getPlacementCells(bounds, pokestops, gyms) {
cell.blocked = true
}
}
- const rings = allCoords.map((poi) => new Ring(poi.id, poi.lat, poi.lon))
+ const rings = bounds.filters.onlyRings ? allCoords.map((poi) => new Ring(poi.id, poi.lat, poi.lon)) : []
return {
cells: Object.values(indexedCells),
diff --git a/server/src/services/ui/primary.js b/server/src/services/ui/primary.js
index 10d327e18..8e753e577 100644
--- a/server/src/services/ui/primary.js
+++ b/server/src/services/ui/primary.js
@@ -1,100 +1,98 @@
-/* eslint-disable no-restricted-syntax */
const {
api: {
pvp: { leagues },
},
defaultFilters: {
- nests: { avgSliderStep },
+ nests: { avgSliderStep, avgFilter },
},
} = require('../config')
+const refSliders = {
+ pokemon: {
+ primary: [
+ {
+ name: 'iv',
+ label: '%',
+ min: 0,
+ max: 100,
+ perm: 'iv',
+ color: 'secondary',
+ },
+ ],
+ secondary: [
+ {
+ name: 'level',
+ label: '',
+ min: 1,
+ max: 35,
+ perm: 'iv',
+ },
+ {
+ name: 'atk_iv',
+ label: '',
+ min: 0,
+ max: 15,
+ perm: 'iv',
+ },
+ {
+ name: 'def_iv',
+ label: '',
+ min: 0,
+ max: 15,
+ perm: 'iv',
+ },
+ {
+ name: 'sta_iv',
+ label: '',
+ min: 0,
+ max: 15,
+ perm: 'iv',
+ },
+ ],
+ },
+ nests: {
+ secondary: [
+ {
+ name: 'avgFilter',
+ i18nKey: 'spawns_per_hour',
+ label: '',
+ min: avgFilter[0],
+ max: avgFilter[1],
+ perm: 'nests',
+ step: avgSliderStep,
+ },
+ ],
+ },
+}
+
+leagues.forEach((league) =>
+ refSliders.pokemon.primary.push({
+ name: league.name,
+ label: 'rank',
+ min: league.minRank || 1,
+ max: league.maxRank || 100,
+ perm: 'pvp',
+ color: 'primary',
+ }),
+)
+
+const ignoredKeys = [
+ 'enabled',
+ 'filter',
+ 'showQuestSet',
+ 'badge',
+ 'avgFilter',
+ 'raidTier',
+]
+
module.exports = function generateUi(filters, perms) {
const ui = {}
- const ignoredKeys = [
- 'enabled',
- 'filter',
- 'showQuestSet',
- 'badge',
- 'avgFilter',
- 'raidTier',
- ]
// builds the initial categories
- for (const [key, value] of Object.entries(filters)) {
+ Object.entries(filters).forEach(([key, value]) => {
let sliders
if (value) {
switch (key) {
- case 'nests':
- ui[key] = {}
- sliders = {
- secondary: [
- {
- name: 'avgFilter',
- i18nKey: 'spawns_per_hour',
- label: '',
- min: filters.nests.avgFilter[0],
- max: filters.nests.avgFilter[1],
- perm: 'nests',
- step: avgSliderStep,
- },
- ],
- }
- break
- case 'pokemon':
- ui[key] = {}
- sliders = {
- primary: [
- {
- name: 'iv',
- label: '%',
- min: 0,
- max: 100,
- perm: 'iv',
- color: 'secondary',
- },
- ],
- secondary: [
- {
- name: 'level',
- label: '',
- min: 1,
- max: 35,
- perm: 'iv',
- },
- {
- name: 'atk_iv',
- label: '',
- min: 0,
- max: 15,
- perm: 'iv',
- },
- {
- name: 'def_iv',
- label: '',
- min: 0,
- max: 15,
- perm: 'iv',
- },
- {
- name: 'sta_iv',
- label: '',
- min: 0,
- max: 15,
- perm: 'iv',
- },
- ],
- }
- leagues.forEach((league) =>
- sliders.primary.push({
- name: league.name,
- label: 'rank',
- min: league.minRank || 1,
- max: league.maxRank || 100,
- perm: 'pvp',
- color: 'primary',
- }),
- )
- break
case 'submissionCells':
case 'portals':
if (!ui.wayfarer) ui.wayfarer = {}
@@ -108,10 +106,11 @@ module.exports = function generateUi(filters, perms) {
break
default:
ui[key] = {}
+ sliders = refSliders[key]
break
}
// builds each subcategory
- for (const [subKey, subValue] of Object.entries(value)) {
+ Object.entries(value).forEach(([subKey, subValue]) => {
if (
(!ignoredKeys.includes(subKey) && subValue !== undefined) ||
key === 'weather' ||
@@ -136,7 +135,7 @@ module.exports = function generateUi(filters, perms) {
break
}
}
- }
+ })
// adds any sliders present
if (sliders) {
ui[key].sliders = sliders
@@ -150,7 +149,7 @@ module.exports = function generateUi(filters, perms) {
})
}
}
- }
+ })
// deletes any menus that do not have any items/perms
Object.keys(ui).forEach((category) => {
diff --git a/src/components/layout/drawer/WithSubItems.jsx b/src/components/layout/drawer/WithSubItems.jsx
index 50c668dc8..5a720ca67 100644
--- a/src/components/layout/drawer/WithSubItems.jsx
+++ b/src/components/layout/drawer/WithSubItems.jsx
@@ -1,6 +1,6 @@
-import React from 'react'
+import React, { Fragment } from 'react'
import { Grid, Typography, Switch, Select, MenuItem } from '@material-ui/core'
-import { useTranslation } from 'react-i18next'
+import { Trans, useTranslation } from 'react-i18next'
import Utility from '@services/Utility'
@@ -148,6 +148,40 @@ export default function WithSubItems({
>
)}
+ {category === 'wayfarer' && subItem === 'submissionCells' && (
+ <>
+ {['rings', 's14Cells', 's17Cells'].map((item, i) => (
+
+
+
+ {i ? (
+
+ {{ level: i === 1 ? 14 : 17 }}
+
+ ) : (
+ t('poi')
+ )}
+
+
+
+ {
+ setFilters({
+ ...filters,
+ [subItem]: {
+ ...filters[subItem],
+ [item]: !filters[subItem][item],
+ },
+ })
+ }}
+ disabled={!filters[subItem].enabled}
+ />
+
+
+ ))}
+ >
+ )}
>
)
}
From 4169d36293434e8dde9b6674cf9d010a7ea05423 Mon Sep 17 00:00:00 2001
From: TurtIeSocks
Date: Mon, 4 Jul 2022 03:32:41 +0000
Subject: [PATCH 2/4] Synced docker env vars with latest config
Files changed:\nM server/src/configs/custom-environment-variables.json
---
server/src/configs/custom-environment-variables.json | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/server/src/configs/custom-environment-variables.json b/server/src/configs/custom-environment-variables.json
index 0efb11b23..e787f5f57 100644
--- a/server/src/configs/custom-environment-variables.json
+++ b/server/src/configs/custom-environment-variables.json
@@ -868,6 +868,18 @@
"enabled": {
"__name": "DEFAULT_FILTERS_SUBMISSION_CELLS_ENABLED",
"__format": "boolean"
+ },
+ "rings": {
+ "__name": "DEFAULT_FILTERS_SUBMISSION_CELLS_RINGS",
+ "__format": "boolean"
+ },
+ "s17Cells": {
+ "__name": "DEFAULT_FILTERS_SUBMISSION_CELLS_S17CELLS",
+ "__format": "boolean"
+ },
+ "s14Cells": {
+ "__name": "DEFAULT_FILTERS_SUBMISSION_CELLS_S14CELLS",
+ "__format": "boolean"
}
},
"weather": {
From 414d39e7df6536599fc1b97f0cd58bc7bcb4575f Mon Sep 17 00:00:00 2001
From: TurtIeSocks <58572875+TurtIeSocks@users.noreply.github.com>
Date: Mon, 4 Jul 2022 08:23:46 -0400
Subject: [PATCH 3/4] Update WithSubItems.jsx
---
src/components/layout/drawer/WithSubItems.jsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/layout/drawer/WithSubItems.jsx b/src/components/layout/drawer/WithSubItems.jsx
index 5a720ca67..527c93d77 100644
--- a/src/components/layout/drawer/WithSubItems.jsx
+++ b/src/components/layout/drawer/WithSubItems.jsx
@@ -156,7 +156,7 @@ export default function WithSubItems({
{i ? (
- {{ level: i === 1 ? 14 : 17 }}
+ {{ level: item.substring(1, 3) }}
) : (
t('poi')
From 09efcc1dcdd7820ed4d16f936060861cc899384e Mon Sep 17 00:00:00 2001
From: TurtIeSocks <58572875+TurtIeSocks@users.noreply.github.com>
Date: Mon, 4 Jul 2022 08:24:52 -0400
Subject: [PATCH 4/4] Linting
---
server/src/graphql/resolvers.js | 7 +++++--
server/src/services/functions/getPlacementCells.js | 4 +++-
server/src/services/ui/clientOptions.js | 2 +-
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/server/src/graphql/resolvers.js b/server/src/graphql/resolvers.js
index c97179794..3eceb79b9 100644
--- a/server/src/graphql/resolvers.js
+++ b/server/src/graphql/resolvers.js
@@ -299,10 +299,13 @@ module.exports = {
return [
{
placementCells:
- args.zoom >= config.map.submissionZoom && args.filters.onlyS17Cells
+ args.zoom >= config.map.submissionZoom &&
+ args.filters.onlyS17Cells
? Utility.getPlacementCells(args, pokestops, gyms)
: [],
- typeCells: args.filters.onlyS14Cells ? Utility.getTypeCells(args, pokestops, gyms) : [],
+ typeCells: args.filters.onlyS14Cells
+ ? Utility.getTypeCells(args, pokestops, gyms)
+ : [],
},
]
}
diff --git a/server/src/services/functions/getPlacementCells.js b/server/src/services/functions/getPlacementCells.js
index f507071a5..05120f14a 100644
--- a/server/src/services/functions/getPlacementCells.js
+++ b/server/src/services/functions/getPlacementCells.js
@@ -46,7 +46,9 @@ module.exports = function getPlacementCells(bounds, pokestops, gyms) {
cell.blocked = true
}
}
- const rings = bounds.filters.onlyRings ? allCoords.map((poi) => new Ring(poi.id, poi.lat, poi.lon)) : []
+ const rings = bounds.filters.onlyRings
+ ? allCoords.map((poi) => new Ring(poi.id, poi.lat, poi.lon))
+ : []
return {
cells: Object.values(indexedCells),
diff --git a/server/src/services/ui/clientOptions.js b/server/src/services/ui/clientOptions.js
index b6eaad6e6..6e8e44045 100644
--- a/server/src/services/ui/clientOptions.js
+++ b/server/src/services/ui/clientOptions.js
@@ -17,7 +17,7 @@ module.exports = function clientOptions(perms) {
clustering: { type: 'bool', perm: ['gyms', 'raids'] },
raidTimers: { type: 'bool', perm: ['raids'] },
interactionRanges: { type: 'bool', perm: ['gyms', 'raids'] },
- "300mRange": { type: 'bool', perm: ['raids'] },
+ '300mRange': { type: 'bool', perm: ['raids'] },
showExBadge: { type: 'bool', perm: ['gyms'] },
showArBadge: { type: 'bool', perm: ['gyms'] },
raidLevelBadges: { type: 'bool', perm: ['raids'] },