diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 0000000..b2c77b6
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,120 @@
+{
+ "root": true,
+ "parser": "babel-eslint",
+ "plugins": [
+ "babel",
+ "react",
+ "import",
+ "react-hooks"
+ ],
+ "extends": [
+ "eslint:recommended",
+ "plugin:react/recommended",
+ "plugin:promise/recommended"
+ ],
+ "env": {
+ "browser": true,
+ "es6": true,
+ "node": true
+ },
+ "parserOptions": {
+ "ecmaVersion": 8,
+ "sourceType": "module",
+ "ecmaFeatures": {
+ "modules": true,
+ "jsx": true,
+ "experimentalObjectRestSpread": true,
+ "legacyDecorators": true
+ }
+ },
+ "settings": {
+ "react": {
+ "version": "detect"
+ }
+ },
+ "ignorePatterns": [
+ "node_modules",
+ "build"
+ ],
+ "rules": {
+ "arrow-parens": "off",
+ "dot-notation": "off",
+ "eqeqeq": "off",
+ "import/no-extraneous-dependencies": ["error", {"devDependencies": ["./webpack.config.babel.js"]}],
+ "linebreak-style": "off",
+ "no-plusplus": "off",
+ "no-prototype-builtins": "off",
+ "no-undef": "error",
+ "no-unused-expressions": ["error", { "allowShortCircuit": true, "allowTernary": true }],
+ "no-unused-vars": ["warn", { "argsIgnorePattern": "props|context|e", "varsIgnorePattern": "s" }],
+ "no-useless-escape": "off",
+ "object-curly-newline": "off",
+ "object-curly-spacing": ["warn", "always", {"objectsInObjects": false, "arraysInObjects": false}],
+ "prefer-destructuring": ["warn", {
+ "VariableDeclarator": { "array": false, "object": true },
+ "AssignmentExpression": { "array": false, "object": false }
+ }, {
+ "enforceForRenamedProperties": false
+ }],
+ "promise/always-return": "off",
+ "promise/catch-or-return": ["warn", {
+ "allowFinally": true
+ }],
+ "promise/no-callback-in-promise": "off",
+ "react/display-name": "off",
+ "react/forbid-prop-types": "off",
+ "react/jsx-curly-brace-presence": "off",
+ "react/jsx-filename-extension": ["warn", { "extensions": [".js", ".jsx"] }],
+ "react/jsx-indent": ["warn", 2, { "indentLogicalExpressions": true }],
+ "react/jsx-indent-props": ["warn", 2],
+ "react/no-unescaped-entities": "off",
+ "react/prop-types": "off"
+ },
+ "overrides": [
+ {
+ "files": ["*.ts", "*.tsx"],
+ "env": { "browser": true, "es6": true, "node": true, "mocha": true },
+ "extends": [
+ "plugin:@typescript-eslint/eslint-recommended"
+ ],
+ "globals": { "Atomics": "readonly", "SharedArrayBuffer": "readonly" },
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "ecmaFeatures": { "jsx": true },
+ "ecmaVersion": 2019,
+ "sourceType": "module",
+ "project": "./tsconfig.json"
+ },
+ "plugins": [
+ "@typescript-eslint"
+ ],
+ "rules": {
+ "@typescript-eslint/no-unused-vars": [1, {
+ "args": "after-used" ,
+ "argsIgnorePattern": "^_",
+ "ignoreRestSiblings": true
+ }],
+ "comma-dangle": ["error", {
+ "arrays": "only-multiline",
+ "objects": "only-multiline",
+ "imports": "never",
+ "exports": "never",
+ "functions": "never"
+ }],
+ "import/extensions": "off",
+ "import/named": "off",
+ "import/no-extraneous-dependencies": ["error", {"devDependencies": ["**/*.spec.ts"]}],
+ "import/no-unresolved": "off",
+ "lines-between-class-members": "off",
+ "no-param-reassign": "off",
+ "no-plusplus": "off",
+ "no-shadow": "off",
+ "no-unused-vars": "off",
+ "no-underscore-dangle": "off",
+ "no-use-before-define": "off",
+ "prefer-template": "error",
+ "react/jsx-filename-extension": [1, { "extensions": [".tsx"] }]
+ }
+ }
+ ]
+}
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index cc204a1..0000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,56 +0,0 @@
-module.exports = {
- "root": true,
- "parser": "babel-eslint",
- "extends": [
- "eslint:recommended",
- "plugin:react/recommended"
- ],
- "env": {
- "browser": true,
- "es6": true,
- "node": true
- },
- "parserOptions": {
- "ecmaVersion": 8,
- "sourceType": "module",
- "ecmaFeatures": {
- "modules": true,
- "jsx": true,
- "experimentalObjectRestSpread": true,
- "legacyDecorators": true
- }
- },
- "rules": {
- "import/no-extraneous-dependencies": ["error", {"devDependencies": ["./webpack.config.babel.js"]}],
- "react/forbid-prop-types": "off",
- "react/jsx-filename-extension": "off",
- "react/no-unescaped-entities": "off",
- "react/prop-types": "off",
- "react/display-name": "off",
- "no-unused-expressions": ["error", { "allowShortCircuit": true, "allowTernary": true }],
- "no-plusplus": "off",
- "no-prototype-builtins": "off",
- "object-curly-spacing": ["warn", "always", {"objectsInObjects": false, "arraysInObjects": false}],
- "object-curly-newline": "off",
- "linebreak-style": "off",
- "eqeqeq": "off",
- "dot-notation": "off",
- "no-unused-vars": ["warn", { "argsIgnorePattern": "props|context|e", "varsIgnorePattern": "s" }],
- "no-undef": "error",
- "no-useless-escape": "off"
- },
- "settings": {
- "react": {
- "version": require('./package.json').dependencies.react
- }
- },
- "plugins": [
- "react",
- "import",
- "react-hooks"
- ],
- "ignorePatterns": [
- "node_modules",
- "build"
- ]
-}
diff --git a/package-lock.json b/package-lock.json
index d248b6f..076ab54 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3499,6 +3499,12 @@
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz",
"integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow=="
},
+ "@types/eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
+ "dev": true
+ },
"@types/glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz",
@@ -3640,6 +3646,140 @@
"@types/node": "*"
}
},
+ "@typescript-eslint/eslint-plugin": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz",
+ "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/experimental-utils": "3.10.1",
+ "debug": "^4.1.1",
+ "functional-red-black-tree": "^1.0.1",
+ "regexpp": "^3.0.0",
+ "semver": "^7.3.2",
+ "tsutils": "^3.17.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
+ "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "regexpp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "dev": true
+ },
+ "semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+ "dev": true
+ }
+ }
+ },
+ "@typescript-eslint/experimental-utils": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz",
+ "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.3",
+ "@typescript-eslint/types": "3.10.1",
+ "@typescript-eslint/typescript-estree": "3.10.1",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^2.0.0"
+ },
+ "dependencies": {
+ "eslint-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+ "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/parser": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz",
+ "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==",
+ "dev": true,
+ "requires": {
+ "@types/eslint-visitor-keys": "^1.0.0",
+ "@typescript-eslint/experimental-utils": "3.10.1",
+ "@typescript-eslint/types": "3.10.1",
+ "@typescript-eslint/typescript-estree": "3.10.1",
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "@typescript-eslint/types": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz",
+ "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==",
+ "dev": true
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz",
+ "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "3.10.1",
+ "@typescript-eslint/visitor-keys": "3.10.1",
+ "debug": "^4.1.1",
+ "glob": "^7.1.6",
+ "is-glob": "^4.0.1",
+ "lodash": "^4.17.15",
+ "semver": "^7.3.2",
+ "tsutils": "^3.17.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
+ "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+ "dev": true
+ }
+ }
+ },
+ "@typescript-eslint/visitor-keys": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz",
+ "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
"@webassemblyjs/ast": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
@@ -7151,6 +7291,15 @@
}
}
},
+ "eslint-plugin-babel": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz",
+ "integrity": "sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g==",
+ "dev": true,
+ "requires": {
+ "eslint-rule-composer": "^0.3.0"
+ }
+ },
"eslint-plugin-import": {
"version": "2.22.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz",
@@ -7193,6 +7342,12 @@
}
}
},
+ "eslint-plugin-promise": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz",
+ "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==",
+ "dev": true
+ },
"eslint-plugin-react": {
"version": "7.21.4",
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.21.4.tgz",
@@ -7238,6 +7393,12 @@
"integrity": "sha512-EjxTHxjLKIBWFgDJdhKKzLh5q+vjTFrqNZX36uIxWS4OfyXe5DawqPj3U5qeJ1ngLwatjzQnmR0Lz0J0YH3kxw==",
"dev": true
},
+ "eslint-rule-composer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz",
+ "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==",
+ "dev": true
+ },
"eslint-scope": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
@@ -15646,6 +15807,15 @@
"integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==",
"dev": true
},
+ "tsutils": {
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz",
+ "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.8.1"
+ }
+ },
"tty-browserify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
diff --git a/package.json b/package.json
index 7e5194d..0ecb1e7 100644
--- a/package.json
+++ b/package.json
@@ -5,8 +5,8 @@
"scripts": {
"start": "webpack serve --mode development --env development",
"build": "webpack -p",
- "lint": "tsc --noEmit; eslint '*/**/*.{js,ts,tsx}'",
- "lint:fix": "tsc --noEmit; eslint '*/**/*.{js,ts,tsx}' --quiet --fix",
+ "lint": "tsc --noEmit && eslint '*/**/*.{js,ts,tsx}'",
+ "lint:fix": "tsc --noEmit && eslint '*/**/*.{js,ts,tsx}' --quiet --fix",
"test": "cross-env TS_NODE_COMPILER_OPTIONS='{ \"module\": \"commonjs\" }' mocha -r ts-node/register -r ignore-styles -r jsdom-global/register src/**/*.spec.ts"
},
"repository": {
@@ -60,14 +60,18 @@
"@types/react": "^16.9.52",
"@types/react-dom": "^16.9.8",
"@types/react-router-dom": "^5.1.6",
+ "@typescript-eslint/eslint-plugin": "^3.3.0",
+ "@typescript-eslint/parser": "^3.3.0",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.1.0",
"chai": "^4.2.0",
"cross-env": "^7.0.2",
"css-loader": "^3.6.0",
"eslint": "^6.8.0",
+ "eslint-plugin-babel": "^5.3.1",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-react": "^7.21.4",
+ "eslint-plugin-promise": "^4.2.1",
"eslint-plugin-react-hooks": "^3.0.0",
"ignore-styles": "^5.0.1",
"jsdom": "^16.4.0",
diff --git a/src/components/Snippets/Initiative.js b/src/components/Snippets/Initiative.js
index acc7671..a085a7f 100644
--- a/src/components/Snippets/Initiative.js
+++ b/src/components/Snippets/Initiative.js
@@ -1,7 +1,7 @@
import React from 'react';
export function Initiative(props) {
- let initiative = props.initiative;
+ let { initiative } = props;
let image = null;
if (["Danian", "Generic", "Mipedian", "OverWorld", "UnderWorld", "M'arrillian"].indexOf(initiative) > -1) {
image =
diff --git a/src/components/Snippets/_icons.js b/src/components/Snippets/_icons.js
index 9a3e0ee..53ecd33 100644
--- a/src/components/Snippets/_icons.js
+++ b/src/components/Snippets/_icons.js
@@ -19,7 +19,7 @@ export function Rarity(props) {
return (
{set !== 'PE1' && }
- {!props.notext && {API.sets[props.set]} | {props.rarity} }
+ {!props.notext && <>{API.sets[props.set]} | {props.rarity}>}
);
}
diff --git a/src/components/Snippets/index.js b/src/components/Snippets/index.js
index d57ab66..0eba7b7 100644
--- a/src/components/Snippets/index.js
+++ b/src/components/Snippets/index.js
@@ -26,7 +26,7 @@ export function Loading(props) {
}
export function Splash(props) {
- let image = props.image;
+ let { image } = props;
return (
);
diff --git a/src/components/SpreadsheetData.js b/src/components/SpreadsheetData.js
index 682eaad..584a852 100644
--- a/src/components/SpreadsheetData.js
+++ b/src/components/SpreadsheetData.js
@@ -203,7 +203,8 @@ class API {
this.buildCollection(collection)
.then(() => {
resolve();
- });
+ })
+ .catch(() => {});
}
else resolve();
});
diff --git a/src/components/collection/List.js b/src/components/collection/List.js
index 9c3d896..ed9c220 100644
--- a/src/components/collection/List.js
+++ b/src/components/collection/List.js
@@ -1,6 +1,6 @@
import React from 'react';
-import {observable} from "mobx";
-import {observer, inject} from 'mobx-react';
+import { observable } from "mobx";
+import { observer, inject } from 'mobx-react';
import Attack from './types/Attack';
import Battlegear from './types/Battlegear';
import Creature from './types/Creature';
@@ -16,11 +16,11 @@ export default class CardList extends React.Component {
}
render() {
- let cards = this.props.cards;
+ let { cards } = this.props;
if (cards.length == 1 && cards[0].text) {
return (
- {cards[0].text}
+ {cards[0].text}
);
}
return cards.map((card, i) => {
diff --git a/src/components/collection/search/index.js b/src/components/collection/search/index.js
index 9f22b23..f6909eb 100644
--- a/src/components/collection/search/index.js
+++ b/src/components/collection/search/index.js
@@ -165,9 +165,9 @@ export default class SearchCollection extends React.Component {
}
handleChange = (event, obj) => {
- const target = event.target;
+ const { target } = event;
const value = target.type === 'checkbox' ? target.checked : target.value;
- const name = target.name;
+ const { name } = target;
if (!obj) this.input[name] = value;
else this.input[obj][name] = value;
}
@@ -262,7 +262,7 @@ export default class SearchCollection extends React.Component {
this.handleChange(e, "mull")} />Legendary
- this.handleChange(e, "mull")} />Non-Loyal
+ this.handleChange(e, "mull")} />Non-Loyal
diff --git a/src/components/collection/types/Attack.js b/src/components/collection/types/Attack.js
index 5a7ec0f..45056e2 100644
--- a/src/components/collection/types/Attack.js
+++ b/src/components/collection/types/Attack.js
@@ -7,7 +7,7 @@ import { Rarity, Unique, Name, Element, Ability, AttackIcon } from '../../Snippe
export default class Attack extends React.Component {
render() {
- let card = this.props.card;
+ let { card } = this.props;
if (this.props.ext == false) return (
@@ -39,9 +39,9 @@ export default class Attack extends React.Component {
- {card.gsx$flavortext &&
+ {card.gsx$flavortext && <>
{card.gsx$flavortext}
- }
+ >}
Art By: {card.gsx$artist}
diff --git a/src/components/collection/types/Battlegear.js b/src/components/collection/types/Battlegear.js
index 0cd87a9..45ed7e7 100644
--- a/src/components/collection/types/Battlegear.js
+++ b/src/components/collection/types/Battlegear.js
@@ -7,7 +7,7 @@ import { Rarity, Unique, Name, Ability, BattlegearIcon } from '../../Snippets';
export default class Battlegear extends React.Component {
render() {
- let card = this.props.card;
+ let { card } = this.props;
if (this.props.ext == false) return (
@@ -31,9 +31,9 @@ export default class Battlegear extends React.Component {
- {card.gsx$flavortext &&
+ {card.gsx$flavortext && <>
{card.gsx$flavortext}
- }
+ >}
Art By: {card.gsx$artist}
diff --git a/src/components/collection/types/Creature.js b/src/components/collection/types/Creature.js
index 67f087f..0da29cc 100644
--- a/src/components/collection/types/Creature.js
+++ b/src/components/collection/types/Creature.js
@@ -7,7 +7,7 @@ import { Rarity, Unique, Name, Element, Mugic, Discipline, Ability, Tribe } from
export default class Creature extends React.Component {
render() {
- let card = this.props.card;
+ let { card } = this.props;
let mugic = [];
for (let i = 0; i < card.gsx$mugicability; i++) {
@@ -56,27 +56,27 @@ export default class Creature extends React.Component {
{/*chieftain*/
card.gsx$types.includes("Chieftain") &&
- (Minions use Brainwashed text. Minions may only play Generic Mugic.)
+ (Minions use Brainwashed text. Minions may only play Generic Mugic.)
}
{card.gsx$flavortext}
-
-
- {card.gsx$courage}
-
-
- {card.gsx$power}
-
-
- {card.gsx$wisdom}
-
-
- {card.gsx$speed}
-
-
{card.gsx$energy}
-
+
+
+ {card.gsx$courage}
+
+ {card.gsx$power}
+
+
+ {card.gsx$wisdom}
+
+
+ {card.gsx$speed}
+
+
{card.gsx$energy}
+
+
)
else return (
@@ -100,11 +100,11 @@ export default class Creature extends React.Component {
{/*chieftain*/
card.gsx$types.includes("Chieftain") &&
- (Minions use Brainwashed text. Minions may only play Generic Mugic.)
+ (Minions use Brainwashed text. Minions may only play Generic Mugic.)
}
- {card.gsx$flavortext &&
+ {card.gsx$flavortext && <>
{card.gsx$flavortext}
- }
+ >}
Art By: {card.gsx$artist}
diff --git a/src/components/collection/types/Location.js b/src/components/collection/types/Location.js
index d248c4f..286c2fb 100644
--- a/src/components/collection/types/Location.js
+++ b/src/components/collection/types/Location.js
@@ -8,7 +8,7 @@ import API from '../../SpreadsheetData';
export default class Location extends React.Component {
render() {
- let card = this.props.card;
+ let { card } = this.props;
if (this.props.ext == false) return (
@@ -34,9 +34,9 @@ export default class Location extends React.Component {
- {card.gsx$flavortext &&
+ {card.gsx$flavortext && <>
{card.gsx$flavortext}
- }
+ >}
Art By: {card.gsx$artist}
diff --git a/src/components/collection/types/Mugic.js b/src/components/collection/types/Mugic.js
index 9b98ff3..5e50c09 100644
--- a/src/components/collection/types/Mugic.js
+++ b/src/components/collection/types/Mugic.js
@@ -53,9 +53,9 @@ class Attack extends React.Component {
- {card.gsx$flavortext &&
+ {card.gsx$flavortext && <>
{card.gsx$flavortext}
- }
+ >}
Art By: {card.gsx$artist}
diff --git a/src/components/create/index.js b/src/components/create/index.js
index 57f220a..ae097da 100644
--- a/src/components/create/index.js
+++ b/src/components/create/index.js
@@ -1,12 +1,12 @@
import React from 'react';
-import {observer, inject} from 'mobx-react';
+import { observer, inject } from 'mobx-react';
@inject((stores, props, context) => props) @observer
export default class Create extends React.Component {
render() {
return (This page is not yet available
-
);
+ );
}
}
diff --git a/src/components/entercode/EnterTheCode.js b/src/components/entercode/EnterTheCode.js
index 2f948e2..ed0d282 100644
--- a/src/components/entercode/EnterTheCode.js
+++ b/src/components/entercode/EnterTheCode.js
@@ -79,7 +79,7 @@ export default class EnterTheCode extends React.Component {
return(
Pack Simulator
+ to={`/EnterTheCode/PackSimulator/`}>Pack Simulator
this.code = value}
>
- {props => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ {props => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
)}
diff --git a/src/components/entercode/PackSimulator/generate.js b/src/components/entercode/PackSimulator/generate.js
index 41f9eb7..53b67f4 100644
--- a/src/components/entercode/PackSimulator/generate.js
+++ b/src/components/entercode/PackSimulator/generate.js
@@ -77,15 +77,15 @@ class GenerateCard {
}
else {
cards.push(
-
-
- {gendisp(card.gsx$courage)}
- {gendisp(card.gsx$power)}
- {gendisp(card.gsx$wisdom)}
- {gendisp(card.gsx$speed)}
- {geneng(card.gsx$energy)}
-
+
+
+ {gendisp(card.gsx$courage)}
+ {gendisp(card.gsx$power)}
+ {gendisp(card.gsx$wisdom)}
+ {gendisp(card.gsx$speed)}
+ {geneng(card.gsx$energy)}
+
);
}
diff --git a/src/components/entercode/PackSimulator/index.js b/src/components/entercode/PackSimulator/index.js
index 6b36975..5509730 100644
--- a/src/components/entercode/PackSimulator/index.js
+++ b/src/components/entercode/PackSimulator/index.js
@@ -57,26 +57,26 @@ export default function (props) {
}
return (
-
-
Enter The Code
-
-
-
-
{cards}
-
+
+
Enter The Code
+
+
+
+
{cards}
+
);
}
\ No newline at end of file
diff --git a/src/components/entercode/index.js b/src/components/entercode/index.js
index 18c3f64..4d7f2be 100644
--- a/src/components/entercode/index.js
+++ b/src/components/entercode/index.js
@@ -1,6 +1,6 @@
import React from 'react';
-import {observer, inject} from 'mobx-react';
-import {Route} from 'react-router-dom';
+import { observer, inject } from 'mobx-react';
+import { Route } from 'react-router-dom';
import EnterTheCode from './EnterTheCode';
import PackSimulator from './PackSimulator';
@@ -14,7 +14,7 @@ export default class Base extends React.Component {
}
function Routing(props) {
- const match = props.match;
+ const { match } = props;
return (
diff --git a/src/components/home/index.js b/src/components/home/index.js
index 93b88f0..50801ea 100644
--- a/src/components/home/index.js
+++ b/src/components/home/index.js
@@ -1,8 +1,8 @@
import React from 'react';
-import {Link} from 'react-router-dom';
-import {Donate} from '../Snippets';
+import { Link } from 'react-router-dom';
+import { Donate } from '../Snippets';
import "./home.scss";
-import {observable} from 'mobx';
+import { observable } from 'mobx';
const GithubLink = () => (
(
);
-const LoreEntry = ({block, text, sets}) => {
+const LoreEntry = ({ block, text, sets }) => {
return (
{block}
- {text.map((entry, i) =>
)}
+ {text.map((entry, i) =>
)}
{sets.map((set, i) => {
if (set.text && set.text.length > 0) {
return
@@ -31,7 +31,7 @@ const LoreEntry = ({block, text, sets}) => {
}
export default class Home extends React.Component {
- state = {lore: []};
+ state = { lore: []};
componentDidMount() {
fetch("/src/json/starter_lore.json")
@@ -39,11 +39,11 @@ export default class Home extends React.Component {
return response.json();
})
.then((lore) => {
- this.setState({"lore": lore});
+ this.setState({ "lore": lore });
return;
})
.catch(() => {
- this.setState({"lore": [{"block": "Unable to load lore...", "text": []}]})
+ this.setState({ "lore": [{ "block": "Unable to load lore...", "text": []}]})
});
}
diff --git a/src/components/index.js b/src/components/index.js
index 99569c0..68268cc 100644
--- a/src/components/index.js
+++ b/src/components/index.js
@@ -32,7 +32,7 @@ const Collection = loadable(
/**
* This function is to define beta routes
*/
-function BetaRoutingWrapper(props) {
+function BetaRoutingWrapper() {
return (
@@ -44,7 +44,7 @@ function BetaRoutingWrapper(props) {
);
}
-function Routing(props) {
+function Routing() {
return (
@@ -67,7 +67,7 @@ function Base(props) {
const children = ;
return (
-
+ <>
@@ -179,7 +179,7 @@ function Base(props) {
-
+ >
);
}
diff --git a/src/components/mugicplayer/mugicparser.spec.ts b/src/components/mugicplayer/mugicparser.spec.ts
index 6a847e6..4e0c7de 100644
--- a/src/components/mugicplayer/mugicparser.spec.ts
+++ b/src/components/mugicplayer/mugicparser.spec.ts
@@ -16,7 +16,7 @@ const cases = {
Object.entries(cases).forEach(([key, value]) => {
describe(key, () => {
- it('should return ' + value.output, () => {
+ it(`should return ${value.output}`, () => {
const tune = output(parseTune(value.input));
expect(tune).to.deep.equal(value.output);
});
diff --git a/src/components/mugicplayer/mugicparser.ts b/src/components/mugicplayer/mugicparser.ts
index b43f522..af91537 100644
--- a/src/components/mugicplayer/mugicparser.ts
+++ b/src/components/mugicplayer/mugicparser.ts
@@ -22,7 +22,7 @@ export const output = (seq: Note[]) => {
// db notation uses duration (quarter notes) and pitch
// 2Eb => E flat for 2 quarter notes
export const parseTune = (input: string): Note[] => {
- let seq: Note[] = [];
+ const seq: Note[] = [];
let time = 0;
console.log(input.split(" "));
input.split(" ").forEach((note) => {
@@ -79,7 +79,7 @@ const parseNote = (pitch: string, seq: Note[]): {pitch: string, octave: number}
if (seq.length === 0) return 4;
const l = seq.length - 1;
- const octave = seq[l].octave;
+ const { octave } = seq[l];
const current = pitchValue(pitch, octave);
const previous = pitchValue(seq[l]);
@@ -129,7 +129,7 @@ const parseNote = (pitch: string, seq: Note[]): {pitch: string, octave: number}
if (octave > 5) octave = 5;
- return {pitch, octave};
+ return { pitch, octave };
}
/*
@@ -148,8 +148,8 @@ const parseNote = (pitch: string, seq: Note[]): {pitch: string, octave: number}
const trend = (current: number, l: number, seq: Note[]): number => {
if (l < 1) return seq[l].octave;
- let prev = pitchValue(seq[l]);
- let prev2 = pitchValue(seq[l-1]);
+ const prev = pitchValue(seq[l]);
+ const prev2 = pitchValue(seq[l-1]);
console.log(prev2, prev, current);
// downward trend
@@ -176,7 +176,7 @@ const trend = (current: number, l: number, seq: Note[]): number => {
* Takes two pitches and returns the distance between them
*/
const compare = (one: number, two: number): number => {
- let res = Math.abs(one - two);
+ const res = Math.abs(one - two);
if (res < 4) {
return res;
}
diff --git a/src/components/mugicplayer/mugicplayer.ts b/src/components/mugicplayer/mugicplayer.ts
index cb6e140..d726573 100644
--- a/src/components/mugicplayer/mugicplayer.ts
+++ b/src/components/mugicplayer/mugicplayer.ts
@@ -1,4 +1,4 @@
-import {Time, Transport, Synth, Part, PolySynth, EnvelopeCurve} from 'tone';
+import { Time, Transport, Synth, Part, PolySynth, EnvelopeCurve } from 'tone';
import { Note, parseTune } from './mugicparser';
diff --git a/src/components/mugicplayer/playbutton.tsx b/src/components/mugicplayer/playbutton.tsx
index 56822ea..635f9df 100644
--- a/src/components/mugicplayer/playbutton.tsx
+++ b/src/components/mugicplayer/playbutton.tsx
@@ -1,11 +1,11 @@
import React from 'react';
-import {debounced} from '../debounce';
-import {MugicPlayer} from './mugicplayer';
+import { debounced } from '../debounce';
+import { MugicPlayer } from './mugicplayer';
const player = MugicPlayer.getInstance();
export default (props: any) => {
const play = debounced(200, () => { player.play(props.notes); });
return (
-
{ play() }} />
+
{ play() }} />
);
};
diff --git a/src/components/portal/Category.js b/src/components/portal/Category.js
index f234e0e..6b06a15 100644
--- a/src/components/portal/Category.js
+++ b/src/components/portal/Category.js
@@ -1,11 +1,11 @@
import React from 'react';
import Interactive from 'react-interactive';
-import {Link, Route} from 'react-router-dom';
-import {observable} from 'mobx';
-import {observer, inject} from 'mobx-react';
+import { Link, Route } from 'react-router-dom';
+import { observable } from 'mobx';
+import { observer, inject } from 'mobx-react';
import s from '../../styles/app.style';
import API from '../SpreadsheetData';
-import {Loading} from '../Snippets';
+import { Loading } from '../Snippets';
@inject((stores, props, context) => props) @observer
export default class Category extends React.Component {
@@ -22,7 +22,7 @@ export default class Category extends React.Component {
render() {
if (this.loaded == false) {
- API.LoadDB([{'cards': this.type}, {'portal': this.type}])
+ API.LoadDB([{ 'cards': this.type }, { 'portal': this.type }])
.then(() => {
this.loaded = true;
});
@@ -34,13 +34,13 @@ export default class Category extends React.Component {
if (!data) return (
);
return (
-
- {card.gsx$name.split(",")[0]}
-
-
+
{card.gsx$name.split(",")[0]}
+
+
);
};
@@ -83,11 +83,11 @@ export default class Category extends React.Component {
);
bottom_nav = ((tribe) ?
- API.portal[this.type].chain().find({'gsx$tribe': tribe}).simplesort('gsx$name').data()
+ API.portal[this.type].chain().find({ 'gsx$tribe': tribe }).simplesort('gsx$name').data()
:
API.portal[this.type].chain().simplesort('gsx$name').data()
).map((card_portal, i) => {
- let card_data = API.cards[this.type].findOne({'gsx$name': card_portal.gsx$name});
+ let card_data = API.cards[this.type].findOne({ 'gsx$name': card_portal.gsx$name });
let url = ((tribe) ?
`/portal/${this.props.type}/${card_portal.gsx$tribe}/${encodeURIComponent(card_portal.gsx$name)}`
:
@@ -107,26 +107,26 @@ export default class Category extends React.Component {
bottom_nav = API.portal[this.type].data
.sort((a, b) => (a.gsx$name > b.gsx$name) ? 1 : -1)
.map((card_portal, i) => {
- let card_data = API.cards[this.type].findOne({'gsx$name': card_portal.gsx$name});
+ let card_data = API.cards[this.type].findOne({ 'gsx$name': card_portal.gsx$name });
return create_link(card_portal, card_data, i);
});
}
if (base_path) {
return (
-
-
{cat_title}
-
{bottom_nav}
-
+
+
{cat_title}
+
{bottom_nav}
+
);
}
return (
-
-
{top_content}
-
{cat_title}
-
{bottom_nav}
-
+
+
{top_content}
+
{cat_title}
+
{bottom_nav}
+
);
}
}
diff --git a/src/components/portal/Home.js b/src/components/portal/Home.js
index 099b689..326446f 100644
--- a/src/components/portal/Home.js
+++ b/src/components/portal/Home.js
@@ -1,5 +1,5 @@
-import React, {Fragment} from 'react';
-import {observable} from "mobx";
+import React, { Fragment } from 'react';
+import { observable } from "mobx";
import API from '../SpreadsheetData';
export default class Home extends React.Component {
diff --git a/src/components/portal/Search.js b/src/components/portal/Search.js
index ca60d51..cba789a 100644
--- a/src/components/portal/Search.js
+++ b/src/components/portal/Search.js
@@ -1,12 +1,12 @@
import React from 'react';
import Interactive from 'react-interactive';
-import {Link} from 'react-router-dom';
+import { Link } from 'react-router-dom';
import API from '../SpreadsheetData';
-import {observable} from "mobx";
-import {observer, inject} from 'mobx-react';
+import { observable } from "mobx";
+import { observer, inject } from 'mobx-react';
import loki from 'lokijs';
import s from '../../styles/app.style';
-import {SearchButton} from '../Snippets';
+import { SearchButton } from '../Snippets';
@inject((stores, props, context) => props) @observer
export default class SearchPortal extends React.Component {
@@ -50,19 +50,20 @@ class DBSearch extends React.Component {
render() {
if (this.loaded == false) {
API.LoadDB([
- {'portal': 'attacks'}, {'portal': 'battlegear'}, {'portal': 'creatures'}, {'portal': 'locations'}, {'portal': 'mugic'},
- {'cards': 'attacks'}, {'cards': 'battlegear'}, {'cards': 'creatures'}, {'cards': 'locations'}, {'cards': 'mugic'}
+ { 'portal': 'attacks' }, { 'portal': 'battlegear' }, { 'portal': 'creatures' }, { 'portal': 'locations' }, { 'portal': 'mugic' },
+ { 'cards': 'attacks' }, { 'cards': 'battlegear' }, { 'cards': 'creatures' }, { 'cards': 'locations' }, { 'cards': 'mugic' }
]).then(() => {
this.loaded = true;
- });
+ })
+ .catch(() => {})
return (
Loading... );
}
- let string = this.props.string;
+ let { string } = this.props;
// No search
if (string == "") {
- return (
);
+ return (
);
}
const makeLink = (card, i) => {
@@ -90,6 +91,21 @@ class DBSearch extends React.Component {
);
};
+ const create_link = (card, data, i, url) => {
+ // Prevent site from crashing due to misspelled/missing data
+ if (!data) return (
);
+
+ return (
+
+ {card.gsx$name.split(",")[0]}
+
+
+
);
+ };
+
let filter = this.filter.addCollection('filter');
var pview = filter.addDynamicView('filter');
pview.applySimpleSort('gsx$name');
@@ -101,35 +117,35 @@ class DBSearch extends React.Component {
let mugicResults = API.portal.mugic.chain();
// Attributes Background Details
- attackResults = attackResults.find({'$or': [
- {'gsx$attributes': {'$regex': new RegExp(string, 'i')}},
- {'gsx$background': {'$regex': new RegExp(string, 'i')}},
- {'gsx$details': {'$regex': new RegExp(string, 'i')}}
+ attackResults = attackResults.find({ '$or': [
+ { 'gsx$attributes': { '$regex': new RegExp(string, 'i') }},
+ { 'gsx$background': { '$regex': new RegExp(string, 'i') }},
+ { 'gsx$details': { '$regex': new RegExp(string, 'i') }}
]});
// Attributes Background Details
- battlegearResults = battlegearResults.find({'$or': [
- {'gsx$attributes': {'$regex': new RegExp(string, 'i')}},
- {'gsx$background': {'$regex': new RegExp(string, 'i')}},
- {'gsx$details': {'$regex': new RegExp(string, 'i')}}
+ battlegearResults = battlegearResults.find({ '$or': [
+ { 'gsx$attributes': { '$regex': new RegExp(string, 'i') }},
+ { 'gsx$background': { '$regex': new RegExp(string, 'i') }},
+ { 'gsx$details': { '$regex': new RegExp(string, 'i') }}
]});
// Appearance Background Special Abilities Details
- creatureResults = creatureResults.find({'$or': [
- {'gsx$appearance': {'$regex': new RegExp(string, 'i')}},
- {'gsx$background': {'$regex': new RegExp(string, 'i')}},
- {'gsx$specialabilities': {'$regex': new RegExp(string, 'i')}},
- {'gsx$details': {'$regex': new RegExp(string, 'i')}}
+ creatureResults = creatureResults.find({ '$or': [
+ { 'gsx$appearance': { '$regex': new RegExp(string, 'i') }},
+ { 'gsx$background': { '$regex': new RegExp(string, 'i') }},
+ { 'gsx$specialabilities': { '$regex': new RegExp(string, 'i') }},
+ { 'gsx$details': { '$regex': new RegExp(string, 'i') }}
]});
// Local Features Background Details
- locationResults = locationResults.find({'$or': [
- {'gsx$localfeatures': {'$regex': new RegExp(string, 'i')}},
- {'gsx$background': {'$regex': new RegExp(string, 'i')}},
- {'gsx$details': {'$regex': new RegExp(string, 'i')}}
+ locationResults = locationResults.find({ '$or': [
+ { 'gsx$localfeatures': { '$regex': new RegExp(string, 'i') }},
+ { 'gsx$background': { '$regex': new RegExp(string, 'i') }},
+ { 'gsx$details': { '$regex': new RegExp(string, 'i') }}
]});
// Background Details
- mugicResults = mugicResults.find({'$or': [
- {'gsx$background': {'$regex': new RegExp(string, 'i')}},
- {'gsx$details': {'$regex': new RegExp(string, 'i')}}
+ mugicResults = mugicResults.find({ '$or': [
+ { 'gsx$background': { '$regex': new RegExp(string, 'i') }},
+ { 'gsx$details': { '$regex': new RegExp(string, 'i') }}
]});
let temp;
@@ -161,26 +177,26 @@ class DBSearch extends React.Component {
// This prioritizes names in the results
let names = [].concat(
- API.portal.attacks.find({'gsx$name': {'$regex': new RegExp(string, 'i')}}),
- API.portal.battlegear.find({'gsx$name': {'$regex': new RegExp(string, 'i')}}),
- API.portal.creatures.find({'gsx$name': {'$regex': new RegExp(string, 'i')}}),
- API.portal.locations.find({'gsx$name': {'$regex': new RegExp(string, 'i')}}),
- API.portal.mugic.find({'gsx$name': {'$regex': new RegExp(string, 'i')}}),
+ API.portal.attacks.find({ 'gsx$name': { '$regex': new RegExp(string, 'i') }}),
+ API.portal.battlegear.find({ 'gsx$name': { '$regex': new RegExp(string, 'i') }}),
+ API.portal.creatures.find({ 'gsx$name': { '$regex': new RegExp(string, 'i') }}),
+ API.portal.locations.find({ 'gsx$name': { '$regex': new RegExp(string, 'i') }}),
+ API.portal.mugic.find({ 'gsx$name': { '$regex': new RegExp(string, 'i') }}),
API.cards.attacks.chain()
- .find({'gsx$name': {'$regex': new RegExp(string, 'i')}})
+ .find({ 'gsx$name': { '$regex': new RegExp(string, 'i') }})
.where((obj) => {return (obj.gsx$splash != ('') )}).data(),
API.cards.battlegear.chain()
- .find({'gsx$name': {'$regex': new RegExp(string, 'i')}})
+ .find({ 'gsx$name': { '$regex': new RegExp(string, 'i') }})
.where((obj) => {return (obj.gsx$splash != ('') )}).data(),
// TODO after rewriting Single Creature
// API.cards.creatures.chain()
// .find({'gsx$name': {'$regex': new RegExp(string, 'i')}})
// .where((obj) => {return (obj.gsx$splash != ('') )}).data(),
API.cards.locations.chain()
- .find({'gsx$name': {'$regex': new RegExp(string, 'i')}})
+ .find({ 'gsx$name': { '$regex': new RegExp(string, 'i') }})
.where((obj) => {return (obj.gsx$splash != ('') )}).data(),
API.cards.mugic.chain()
- .find({'gsx$name': {'$regex': new RegExp(string, 'i')}})
+ .find({ 'gsx$name': { '$regex': new RegExp(string, 'i') }})
.where((obj) => {return (obj.gsx$splash != ('') )}).data()
).sort((a, b) => {
a = a.gsx$name.toLowerCase();
@@ -193,19 +209,19 @@ class DBSearch extends React.Component {
if (content.length == 0) {
let artists = [].concat(
API.cards.attacks.chain()
- .find({'gsx$artist': {'$regex': new RegExp(string, 'i')}})
+ .find({ 'gsx$artist': { '$regex': new RegExp(string, 'i') }})
.where((obj) => {return (obj.gsx$splash != ('') )}).data(),
API.cards.battlegear.chain()
- .find({'gsx$artist': {'$regex': new RegExp(string, 'i')}})
+ .find({ 'gsx$artist': { '$regex': new RegExp(string, 'i') }})
.where((obj) => {return (obj.gsx$splash != ('') )}).data(),
API.cards.creatures.chain()
- .find({'gsx$artist': {'$regex': new RegExp(string, 'i')}})
+ .find({ 'gsx$artist': { '$regex': new RegExp(string, 'i') }})
.where((obj) => {return (obj.gsx$splash != ('') )}).data(),
API.cards.locations.chain()
- .find({'gsx$artist': {'$regex': new RegExp(string, 'i')}})
+ .find({ 'gsx$artist': { '$regex': new RegExp(string, 'i') }})
.where((obj) => {return (obj.gsx$splash != ('') )}).data(),
API.cards.mugic.chain()
- .find({'gsx$artist': {'$regex': new RegExp(string, 'i')}})
+ .find({ 'gsx$artist': { '$regex': new RegExp(string, 'i') }})
.where((obj) => {return (obj.gsx$splash != ('') )}).data()
).sort((a, b) => {
a = a.gsx$name.toLowerCase();
@@ -229,11 +245,11 @@ class DBSearch extends React.Component {
return (
- {names.length > 0 &&
+ {names.length > 0 && <>
Entries
{names}
- }
+ >}
{header}
{content}
);
diff --git a/src/components/portal/Single/Attack.js b/src/components/portal/Single/Attack.js
index 36361f2..c44c5fe 100644
--- a/src/components/portal/Single/Attack.js
+++ b/src/components/portal/Single/Attack.js
@@ -1,8 +1,8 @@
import React from 'react';
import API from '../../SpreadsheetData';
import s from '../../../styles/app.style';
-import {observer, inject} from 'mobx-react';
-import {PageNotFound} from '../../Snippets';
+import { observer, inject } from 'mobx-react';
+import { PageNotFound } from '../../Snippets';
import Single from './_base';
@inject((stores, props, context) => props) @observer
@@ -20,28 +20,28 @@ export default class SingleAttack extends React.Component {
let name = decodeURIComponent(path[3]);
- const attack = API.portal.attacks.findOne({'gsx$name': name});
- const card_data = API.cards.attacks.findOne({'gsx$name': name});
+ const attack = API.portal.attacks.findOne({ 'gsx$name': name });
+ const card_data = API.cards.attacks.findOne({ 'gsx$name': name });
if (attack) {
return (
-
- Attributes:
- {attack.gsx$attributes}
-
-
-
- Background:
- {attack.gsx$background}
-
-
-
- Details:
- {attack.gsx$details}
-
- }
+ card={card_data}
+ col2={<>
+
+ Attributes:
+ {attack.gsx$attributes}
+
+
+
+ Background:
+ {attack.gsx$background}
+
+
+
+ Details:
+ {attack.gsx$details}
+
+ >}
/>
);
}
diff --git a/src/components/portal/Single/Battlegear.js b/src/components/portal/Single/Battlegear.js
index d430da8..bf0501f 100644
--- a/src/components/portal/Single/Battlegear.js
+++ b/src/components/portal/Single/Battlegear.js
@@ -1,8 +1,8 @@
import React from 'react';
import API from '../../SpreadsheetData';
import s from '../../../styles/app.style';
-import {observer, inject} from 'mobx-react';
-import {PageNotFound} from '../../Snippets';
+import { observer, inject } from 'mobx-react';
+import { PageNotFound } from '../../Snippets';
import Single from './_base';
@inject((stores, props, context) => props) @observer
@@ -20,13 +20,13 @@ export default class SingleBattlegear extends React.Component {
let name = decodeURIComponent(path[3]);
- const battlegear = API.portal.battlegear.findOne({'gsx$name': name});
- const card_data = API.cards.battlegear.findOne({'gsx$name': name});
+ const battlegear = API.portal.battlegear.findOne({ 'gsx$name': name });
+ const card_data = API.cards.battlegear.findOne({ 'gsx$name': name });
if (battlegear) {
return (
+ col2={<>
Attributes:
{battlegear.gsx$attributes}
@@ -41,7 +41,7 @@ export default class SingleBattlegear extends React.Component {
Details:
{battlegear.gsx$details}
- }
+ >}
/>);
}
else if (card_data) {
diff --git a/src/components/portal/Single/Creature.js b/src/components/portal/Single/Creature.js
index 5188044..102a3e1 100644
--- a/src/components/portal/Single/Creature.js
+++ b/src/components/portal/Single/Creature.js
@@ -1,11 +1,11 @@
import React from 'react';
import Interactive from 'react-interactive';
-import {Link} from 'react-router-dom';
+import { Link } from 'react-router-dom';
import API from '../../SpreadsheetData';
import s from '../../../styles/app.style';
-import {observer, inject} from 'mobx-react';
+import { observer, inject } from 'mobx-react';
import Single from './_base';
-import {PageNotFound, Element, Mugic, Discipline, Ability, Tribe} from '../../Snippets';
+import { PageNotFound, Element, Mugic, Discipline, Ability, Tribe } from '../../Snippets';
function Artist(props) {
let artists = [];
@@ -32,7 +32,7 @@ export default class SingleCreature extends React.Component {
if (path.length == 4) return decodeURIComponent(path[3]);
})();
- const creature = API.portal.creatures.findOne({'gsx$name': name});
+ const creature = API.portal.creatures.findOne({ 'gsx$name': name });
if (!creature) {
return();
@@ -40,7 +40,7 @@ export default class SingleCreature extends React.Component {
const tribe = creature.gsx$tribe;
- const card_data = API.cards.creatures.findOne({'gsx$name': name});
+ const card_data = API.cards.creatures.findOne({ 'gsx$name': name });
const locations = creature.gsx$location.split(/[;]+\s*/).map((item, i) => {
return {item}
;
@@ -59,15 +59,15 @@ export default class SingleCreature extends React.Component {
return (
+ text={<>
- {creature.gsx$appearance &&
+ {creature.gsx$appearance && <>
Appearance:
{creature.gsx$appearance}
- }
+ >}
Background:
{creature.gsx$background}
@@ -103,13 +103,13 @@ export default class SingleCreature extends React.Component {
{creature.gsx$weight}
- {card_data.gsx$artist &&
+ {card_data.gsx$artist && <>
- }
+ >}
Card ID:
{card_data.gsx$id}
@@ -183,7 +183,7 @@ export default class SingleCreature extends React.Component {
Mugic Ability:
{mugic}
- }
+ >}
/>);
}
}
diff --git a/src/components/portal/Single/Location.js b/src/components/portal/Single/Location.js
index bf53566..f376e57 100644
--- a/src/components/portal/Single/Location.js
+++ b/src/components/portal/Single/Location.js
@@ -1,8 +1,8 @@
import React from 'react';
import API from '../../SpreadsheetData';
-import {observer, inject} from 'mobx-react';
+import { observer, inject } from 'mobx-react';
import Single from './_base';
-import {PageNotFound, Initiative} from '../../Snippets';
+import { PageNotFound, Initiative } from '../../Snippets';
@inject((stores, props, context) => props) @observer
export default class SingleLocation extends React.Component {
@@ -19,19 +19,19 @@ export default class SingleLocation extends React.Component {
let name = decodeURIComponent(path[3]);
- const location = API.portal.locations.findOne({'gsx$name': name});
- const card_data = API.cards.locations.findOne({'gsx$name': name});
+ const location = API.portal.locations.findOne({ 'gsx$name': name });
+ const card_data = API.cards.locations.findOne({ 'gsx$name': name });
if (location) {
return (
+ col0={<>
Initiative:
- }
- col2={
+ >}
+ col2={<>
Local Features:
{location.gsx$localfeatures}
@@ -46,19 +46,19 @@ export default class SingleLocation extends React.Component {
Details:
{location.gsx$details}
- }
+ >}
/>);
}
else if (card_data) {
if (card_data.gsx$splash) {
return (
+ col0={<>
Initiative:
- }
+ >}
/>);
}
}
diff --git a/src/components/portal/Single/Mugic.js b/src/components/portal/Single/Mugic.js
index 4a4b400..97e3f4d 100644
--- a/src/components/portal/Single/Mugic.js
+++ b/src/components/portal/Single/Mugic.js
@@ -1,9 +1,9 @@
import React from 'react';
import API from '../../SpreadsheetData';
import s from '../../../styles/app.style';
-import {observer, inject} from 'mobx-react';
+import { observer, inject } from 'mobx-react';
import Single from './_base';
-import {PageNotFound, Mugic, Tribe} from '../../Snippets';
+import { PageNotFound, Mugic, Tribe } from '../../Snippets';
@inject((stores, props, context) => props) @observer
export default class SingleMugic extends React.Component {
@@ -22,8 +22,8 @@ export default class SingleMugic extends React.Component {
if (path.length == 4) return decodeURIComponent(path[3]);
})();
- const mugic = API.portal.mugic.findOne({'gsx$name': name});
- const card_data = API.cards.mugic.findOne({'gsx$name': name});
+ const mugic = API.portal.mugic.findOne({ 'gsx$name': name });
+ const card_data = API.cards.mugic.findOne({ 'gsx$name': name });
const cost = () => {
let cost = [];
@@ -44,7 +44,7 @@ export default class SingleMugic extends React.Component {
if (mugic) {
return (
+ col0={<>
Tribe:
@@ -54,8 +54,8 @@ export default class SingleMugic extends React.Component {
Cost:
{cost()}
- }
- col2={
+ >}
+ col2={<>
Background:
{mugic.gsx$background}
@@ -65,14 +65,14 @@ export default class SingleMugic extends React.Component {
Details:
{mugic.gsx$details}
- }
+ >}
/>);
}
else if (card_data) {
if (card_data.gsx$splash) {
return (
+ col0={<>
Tribe:
@@ -82,7 +82,7 @@ export default class SingleMugic extends React.Component {
Cost:
{cost()}
- }
+ >}
/>);
}
}
diff --git a/src/components/portal/Single/_base.js b/src/components/portal/Single/_base.js
index 26b844d..fe6209c 100644
--- a/src/components/portal/Single/_base.js
+++ b/src/components/portal/Single/_base.js
@@ -9,12 +9,12 @@ import s from '../../../styles/app.style';
// own "name" display function
function Name(props) {
let name = props.name.split(",");
- return (
+ return (<>
{name[0]}
{ name.length > 1 &&
{name[1].trim()}
}
- );
+ >);
}
function Artist(props) {
@@ -38,80 +38,83 @@ export default class Single extends React.Component {
}
render() {
- let card = this.props.card;
- return (
-
-
×
-
-
- {card.gsx$splash && (
+ let { card } = this.props;
+ return (<>
+
+
×
+
+
+ {card.gsx$splash && (
- {/*
⇩ */}
+ {/*
⇩ */}
)}
-
-
-
-
-
- {this.props.text &&
-
{this.props.text}
- }
- {!this.props.text &&
-
- {card.gsx$artist &&
-
-
- }
-
- Set:
- {`${API.sets[card.gsx$set]} (${card.gsx$set})`}
-
-
-
- Rarity:
-
- {card.gsx$rarity}
-
-
-
- Card ID:
- {card.gsx$id}
-
- {this.props.col0 &&
-
- {this.props.col0}
- }
- {card.gsx$ability &&
-
-
- }
- {card.gsx$flavortext &&
-
-
- Card Flavor:
- {card.gsx$flavortext}
-
- }
- {this.props.col1 &&
-
- this.props.col1
- }
-
- }
- {!this.props.text &&
-
- {this.props.col2}
-
- }
+
+
+
+
- );
+ {this.props.text &&
+
{this.props.text}
+ }
+ {!this.props.text &&
+
+ {card.gsx$artist && <>
+
+
+ >}
+ {card.gsx$set && <>
+
+ Set:
+ {`${API.sets[card.gsx$set]} (${card.gsx$set})`}
+
+
+ >
+ }
+
+ Rarity:
+
+ {card.gsx$rarity}
+
+
+
+ Card ID:
+ {card.gsx$id}
+
+ {this.props.col0 && <>
+
+ {this.props.col0}
+ >}
+ {card.gsx$ability && <>
+
+
+ >}
+ {card.gsx$flavortext && <>
+
+
+ Card Flavor:
+ {card.gsx$flavortext}
+
+ >}
+ {this.props.col1 && <>
+
+ this.props.col1
+ >}
+
+ }
+ {!this.props.text &&
+
+ {this.props.col2}
+
+ }
+
+ >);
}
}
diff --git a/src/components/portal/Tribes.js b/src/components/portal/Tribes.js
index a6bec5c..0bcf188 100644
--- a/src/components/portal/Tribes.js
+++ b/src/components/portal/Tribes.js
@@ -1,12 +1,12 @@
import React from 'react';
import Interactive from 'react-interactive';
-import {Link, Route} from 'react-router-dom';
-import {observable} from 'mobx';
-import {observer, inject} from 'mobx-react';
+import { Link, Route } from 'react-router-dom';
+import { observable } from 'mobx';
+import { observer, inject } from 'mobx-react';
import loki from 'lokijs';
import s from '../../styles/app.style';
import API from '../SpreadsheetData';
-import {Loading} from '../Snippets';
+import { Loading } from '../Snippets';
import Creature from './Single/Creature';
import Mugic from './Single/Mugic';
@@ -25,10 +25,11 @@ export default class Tribes extends React.Component {
// -> /{Tribe}/Mugic || /{Tribe}/Creatures
render() {
if (this.loaded == false) {
- API.LoadDB([{'cards': 'creatures'}, {'portal': 'creatures'}, {'cards': 'mugic'}, {'portal': 'mugic'}])
+ API.LoadDB([{ 'cards': 'creatures' }, { 'portal': 'creatures' }, { 'cards': 'mugic' }, { 'portal': 'mugic' }])
.then(() => {
this.loaded = true;
- });
+ })
+ .catch(() => {});
return (
);
}
@@ -43,11 +44,11 @@ export default class Tribes extends React.Component {
let temp;
- temp = API.portal.creatures.find({'gsx$tribe': tribe});
+ temp = API.portal.creatures.find({ 'gsx$tribe': tribe });
temp.forEach((v) => { delete v.$loki });
filter.insert(temp);
- temp = API.portal.mugic.find({'gsx$tribe': tribe});
+ temp = API.portal.mugic.find({ 'gsx$tribe': tribe });
temp.forEach((v) => { delete v.$loki });
filter.insert(temp);
@@ -58,12 +59,12 @@ export default class Tribes extends React.Component {
let card_data, url;
if (card.gsx$type == "Mugic") {
- card_data = API.cards.mugic.findOne({'gsx$name': card.gsx$name});
+ card_data = API.cards.mugic.findOne({ 'gsx$name': card.gsx$name });
url = "/portal/" + tribe + "/Mugic/" + encodeURIComponent(card.gsx$name);
}
if (card.gsx$type == "Creatures") {
- card_data = API.cards.creatures.findOne({'gsx$name': card.gsx$name});
+ card_data = API.cards.creatures.findOne({ 'gsx$name': card.gsx$name });
url = "/portal/" + tribe + "/Creatures/" + encodeURIComponent(card.gsx$name);
}
diff --git a/src/components/portal/index.js b/src/components/portal/index.js
index 5cb8ed3..3cf41c4 100644
--- a/src/components/portal/index.js
+++ b/src/components/portal/index.js
@@ -1,12 +1,12 @@
import React from 'react';
-import {observable} from "mobx";
-import {observer, inject} from 'mobx-react';
-import {Link, Route} from 'react-router-dom';
+import { observable } from "mobx";
+import { observer, inject } from 'mobx-react';
+import { Link, Route } from 'react-router-dom';
import API from '../SpreadsheetData';
import Home from './Home';
import Search from './Search';
-import {SearchButton} from '../Snippets';
+import { SearchButton } from '../Snippets';
import Category from './Category';
import Tribes from './Tribes';
@@ -41,10 +41,10 @@ export default class Base extends React.Component {
}
function Routing(props) {
- const url = props.match.url;
+ const { url } = props.match;
return (
-
+ <>
} />
} />
@@ -52,10 +52,10 @@ function Routing(props) {
} />
} />
{API.tribes.map((tribe, i) => (
-
+
))}
-
+ >
);
}
diff --git a/src/styles/style.js b/src/styles/style.js
index bd0f697..0b12d41 100644
--- a/src/styles/style.js
+++ b/src/styles/style.js
@@ -58,7 +58,7 @@ export default {
}}
{...props}
>
-
–
+
–
{content}
),