diff --git a/index.js b/index.js index 0d2f7af84..df9df9356 100644 --- a/index.js +++ b/index.js @@ -90,6 +90,7 @@ const typeDefs = gql` topBrellaPlayers (amount: Int): [Player!]! topPlayers (weapon: String!): topPlayer! weaponPlacementStats(weapon: String!): [Int!]! + playerInfo(uid: String!): [Placement] } type Mutation { @@ -291,6 +292,17 @@ const resolvers = { }, {sz: 0, tc: 0, rm: 0, cb: 0}) return {placements: placements.slice(0, 101), modeCount: [m.sz+m.tc+m.rm+m.cb, m.sz, m.tc, m.rm, m.cb]} + }, + playerInfo: (root, args) => { //tee tästä uus tyyppi joka palauttaa kaikki placementit sekä Player objektin + console.log('args', args) + return Placement + .find({ unique_id: args.uid }) + .sort({ "month": "asc", "year": "asc"}) + .catch(e => { + throw new UserInputError(e.message, { + invalidArgs: args, + }) + }) } } } diff --git a/models/player.js b/models/player.js index 0c3c55743..c5bebbd89 100644 --- a/models/player.js +++ b/models/player.js @@ -2,7 +2,7 @@ const mongoose = require('mongoose') const playerSchema = new mongoose.Schema({ name: {type: String, required: true }, - unique_id: { type: Number, unique: true, required: true }, + unique_id: { type: String, unique: true, required: true }, alias: String, twitter: String, weapons: [String], diff --git a/react-ui/src/App.js b/react-ui/src/App.js index 2435238c1..ede5dc3a6 100644 --- a/react-ui/src/App.js +++ b/react-ui/src/App.js @@ -2,7 +2,8 @@ import React, { useState } from 'react' import { Container } from 'semantic-ui-react' import Footer from './components/Footer' import MainMenu from './components/MainMenu' -import { BrowserRouter as Router, Route } from 'react-router-dom' +import NotFound from './components/NotFound' +import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom' import WeaponLeaderboardSelector from './components/WeaponLeaderboardSelector' import XSearch from './components/XSearch' @@ -13,13 +14,18 @@ const App = () => {
- -
- } /> - } /> -
-
) diff --git a/react-ui/src/components/InfoPlayer.js b/react-ui/src/components/InfoPlayer.js new file mode 100644 index 000000000..df463d684 --- /dev/null +++ b/react-ui/src/components/InfoPlayer.js @@ -0,0 +1,7 @@ +import React from 'react' + +const InfoPlayer = ({ uid }) => { + +} + +export default InfoPlayer \ No newline at end of file diff --git a/react-ui/src/components/InfoWeapon.js b/react-ui/src/components/InfoWeapon.js index 7cd37e829..a4962d277 100644 --- a/react-ui/src/components/InfoWeapon.js +++ b/react-ui/src/components/InfoWeapon.js @@ -3,6 +3,7 @@ import { useQuery } from 'react-apollo-hooks' import { topPlayersOfWeapon } from '../graphql/queries/topPlayersOfWeapon' import weaponDictReversed from '../utils/internal_english.json' import { Loader, Header, Table, Checkbox } from 'semantic-ui-react' +import { withRouter } from 'react-router-dom' import szIcon from './modeIcons/sz.png' import tcIcon from './modeIcons/tc.png' @@ -12,7 +13,7 @@ import { months, modes } from '../utils/lists' const modeIcons = ["", szIcon, tcIcon, rmIcon, cbIcon] -const InfoWeapon = ({ wpn }) => { //todo - handle error (404?) //new weapons not shown? +const InfoWeapon = withRouter(({ history, wpn }) => { //todo - handle error (404?) //new weapons not shown? const { data, error, loading } = useQuery(topPlayersOfWeapon, {variables: {weapon: weaponDictReversed[wpn] }}) const [uniqueId, setUniqueId] = useState('') const [allPlayers, setAllPlayers] = useState(true) @@ -39,6 +40,10 @@ const InfoWeapon = ({ wpn }) => { //todo - handle error (404?) //new weapons not } }, [data, loading, wpn]) + if (!(wpn in weaponDictReversed)) { + history.push('/404') + } + if (loading) { return
} @@ -121,6 +126,6 @@ const InfoWeapon = ({ wpn }) => { //todo - handle error (404?) //new weapons not ) -} +}) export default InfoWeapon \ No newline at end of file diff --git a/react-ui/src/components/NotFound.js b/react-ui/src/components/NotFound.js new file mode 100644 index 000000000..be441a1b5 --- /dev/null +++ b/react-ui/src/components/NotFound.js @@ -0,0 +1,59 @@ +import React from 'react' +import { Header } from 'semantic-ui-react' + +import bridge from './s1Maps/bridge.png' +import depot from './s1Maps/depot.png' +import heights from './s1Maps/heights.png' +import mahi from './s1Maps/mahi.png' +import museum from './s1Maps/museum.png' +import rig from './s1Maps/rig.png' +import underpass from './s1Maps/underpass.png' + +const NotFound = () => { + const maps = [ + { + name: 'Hammerhead Bridge', + img: bridge + }, + { + name: 'Bluefin Depot', + img: depot + }, + { + name: 'Flounder Heights', + img: heights + }, + { + name: 'Mahi-Mahi Resort', + img: mahi + }, + { + name: 'Museum d\'Alfonsino', + img: museum + }, + { + name: 'Saltspray Rig', + img: rig + }, + { + name: 'Urchin Underpass', + img: underpass + } + ] + const mapObject = maps[Math.floor(Math.random()*maps.length)] + return ( + <> +
+ {mapObject.name} +
+
+
404 - Page not found
+
+
+ ...not unlike {mapObject.name} can't be found in Splatoon 2 +
+ + ) +} + +export default NotFound \ No newline at end of file diff --git a/react-ui/src/components/s1Maps/bridge.png b/react-ui/src/components/s1Maps/bridge.png new file mode 100644 index 000000000..7d001b5cc Binary files /dev/null and b/react-ui/src/components/s1Maps/bridge.png differ diff --git a/react-ui/src/components/s1Maps/depot.png b/react-ui/src/components/s1Maps/depot.png new file mode 100644 index 000000000..89ba4770a Binary files /dev/null and b/react-ui/src/components/s1Maps/depot.png differ diff --git a/react-ui/src/components/s1Maps/heights.png b/react-ui/src/components/s1Maps/heights.png new file mode 100644 index 000000000..353cd493b Binary files /dev/null and b/react-ui/src/components/s1Maps/heights.png differ diff --git a/react-ui/src/components/s1Maps/mahi.png b/react-ui/src/components/s1Maps/mahi.png new file mode 100644 index 000000000..ec7b388a8 Binary files /dev/null and b/react-ui/src/components/s1Maps/mahi.png differ diff --git a/react-ui/src/components/s1Maps/museum.png b/react-ui/src/components/s1Maps/museum.png new file mode 100644 index 000000000..d3939f18d Binary files /dev/null and b/react-ui/src/components/s1Maps/museum.png differ diff --git a/react-ui/src/components/s1Maps/rig.png b/react-ui/src/components/s1Maps/rig.png new file mode 100644 index 000000000..a50db01e0 Binary files /dev/null and b/react-ui/src/components/s1Maps/rig.png differ diff --git a/react-ui/src/components/s1Maps/underpass.png b/react-ui/src/components/s1Maps/underpass.png new file mode 100644 index 000000000..5e14cb4cf Binary files /dev/null and b/react-ui/src/components/s1Maps/underpass.png differ