New: Frontend Package and Lint Updates
This commit is contained in:
parent
2291f3e00e
commit
909af6c874
|
@ -1,293 +0,0 @@
|
||||||
{
|
|
||||||
"parser": "babel-eslint",
|
|
||||||
|
|
||||||
"env": {
|
|
||||||
"browser": true,
|
|
||||||
"commonjs": true,
|
|
||||||
"node": true,
|
|
||||||
"es6": true
|
|
||||||
},
|
|
||||||
|
|
||||||
"globals": {
|
|
||||||
"expect": false,
|
|
||||||
"chai": false,
|
|
||||||
"sinon": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaVersion": 6,
|
|
||||||
"sourceType": "module",
|
|
||||||
"ecmaFeatures": {
|
|
||||||
"modules": true,
|
|
||||||
"impliedStrict": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"plugins": [
|
|
||||||
"filenames",
|
|
||||||
"react"
|
|
||||||
],
|
|
||||||
|
|
||||||
"settings": {
|
|
||||||
"react": {
|
|
||||||
"version": "detect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"rules": {
|
|
||||||
"filenames/match-exported": ["error"],
|
|
||||||
|
|
||||||
# ECMAScript 6
|
|
||||||
|
|
||||||
"arrow-body-style": [0],
|
|
||||||
"arrow-parens": ["error", "always"],
|
|
||||||
"arrow-spacing": ["error", { "before": true, "after": true }],
|
|
||||||
"constructor-super": "error",
|
|
||||||
"generator-star-spacing": "off",
|
|
||||||
"no-class-assign": "error",
|
|
||||||
"no-confusing-arrow": "error",
|
|
||||||
"no-const-assign": "error",
|
|
||||||
"no-dupe-class-members": "error",
|
|
||||||
"no-duplicate-imports": "error",
|
|
||||||
"no-new-symbol": "error",
|
|
||||||
"no-this-before-super": "error",
|
|
||||||
"no-useless-escape": "error",
|
|
||||||
"no-useless-computed-key": "error",
|
|
||||||
"no-useless-constructor": "error",
|
|
||||||
"no-var": "warn",
|
|
||||||
"object-shorthand": ["error", "properties"],
|
|
||||||
"prefer-arrow-callback": "error",
|
|
||||||
"prefer-const": "warn",
|
|
||||||
"prefer-reflect": "off",
|
|
||||||
"prefer-rest-params": "off",
|
|
||||||
"prefer-spread": "warn",
|
|
||||||
"prefer-template": "error",
|
|
||||||
"require-yield": "off",
|
|
||||||
"template-curly-spacing": ["error", "never"],
|
|
||||||
"yield-star-spacing": "off",
|
|
||||||
|
|
||||||
# Possible Errors
|
|
||||||
|
|
||||||
"comma-dangle": "error",
|
|
||||||
"no-cond-assign": "error",
|
|
||||||
"no-console": "off",
|
|
||||||
"no-constant-condition": "warn",
|
|
||||||
"no-control-regex": "error",
|
|
||||||
"no-debugger": "off",
|
|
||||||
"no-dupe-args": "error",
|
|
||||||
"no-dupe-keys": "error",
|
|
||||||
"no-duplicate-case": "error",
|
|
||||||
"no-empty": "warn",
|
|
||||||
"no-empty-character-class": "error",
|
|
||||||
"no-ex-assign": "error",
|
|
||||||
"no-extra-boolean-cast": "error",
|
|
||||||
"no-extra-parens": ["error", "functions"],
|
|
||||||
"no-extra-semi": "error",
|
|
||||||
"no-func-assign": "error",
|
|
||||||
"no-inner-declarations": "error",
|
|
||||||
"no-invalid-regexp": "error",
|
|
||||||
"no-irregular-whitespace": "error",
|
|
||||||
"no-negated-in-lhs": "error",
|
|
||||||
"no-obj-calls": "error",
|
|
||||||
"no-regex-spaces": "error",
|
|
||||||
"no-sparse-arrays": "error",
|
|
||||||
"no-unexpected-multiline": "error",
|
|
||||||
"no-unreachable": "warn",
|
|
||||||
"no-unsafe-finally": "error",
|
|
||||||
"use-isnan": "error",
|
|
||||||
"valid-jsdoc": "off",
|
|
||||||
"valid-typeof": "error",
|
|
||||||
|
|
||||||
# Best Practices
|
|
||||||
|
|
||||||
"accessor-pairs": "off",
|
|
||||||
"array-callback-return": "warn",
|
|
||||||
"block-scoped-var": "warn",
|
|
||||||
"consistent-return": "off",
|
|
||||||
"curly": "error",
|
|
||||||
"default-case": "error",
|
|
||||||
"dot-location": ["error", "property"],
|
|
||||||
"dot-notation": "error",
|
|
||||||
"eqeqeq": ["error", "smart"],
|
|
||||||
"guard-for-in": "error",
|
|
||||||
"no-alert": "warn",
|
|
||||||
"no-caller": "error",
|
|
||||||
"no-case-declarations": "error",
|
|
||||||
"no-div-regex": "error",
|
|
||||||
"no-else-return": "error",
|
|
||||||
"no-empty-function": ["error", {"allow": ["arrowFunctions"]}],
|
|
||||||
"no-empty-pattern": "error",
|
|
||||||
"no-eval": "error",
|
|
||||||
"no-extend-native": "error",
|
|
||||||
"no-extra-bind": "error",
|
|
||||||
"no-fallthrough": "error",
|
|
||||||
"no-floating-decimal": "error",
|
|
||||||
"no-implicit-coercion": ["error", {
|
|
||||||
"boolean": false,
|
|
||||||
"number": true,
|
|
||||||
"string": true,
|
|
||||||
"allow": [/* "!!", "~", "*", "+" */]
|
|
||||||
}],
|
|
||||||
"no-implicit-globals": "error",
|
|
||||||
"no-implied-eval": "error",
|
|
||||||
"no-invalid-this": "off",
|
|
||||||
"no-iterator": "error",
|
|
||||||
"no-labels": "error",
|
|
||||||
"no-lone-blocks": "error",
|
|
||||||
"no-loop-func": "error",
|
|
||||||
"no-magic-numbers": ["off", {"ignoreArrayIndexes": true, "ignore": [0, 1] }],
|
|
||||||
"no-multi-spaces": "error",
|
|
||||||
"no-multi-str": "error",
|
|
||||||
"no-native-reassign": ["error", {"exceptions": ["console"]}],
|
|
||||||
"no-new": "off",
|
|
||||||
"no-new-func": "error",
|
|
||||||
"no-new-wrappers": "error",
|
|
||||||
"no-octal": "error",
|
|
||||||
"no-octal-escape": "error",
|
|
||||||
"no-param-reassign": "off",
|
|
||||||
"no-process-env": "off",
|
|
||||||
"no-proto": "error",
|
|
||||||
"no-redeclare": "error",
|
|
||||||
"no-return-assign": "warn",
|
|
||||||
"no-script-url": "error",
|
|
||||||
"no-self-assign": "error",
|
|
||||||
"no-self-compare": "error",
|
|
||||||
"no-sequences": "error",
|
|
||||||
"no-throw-literal": "error",
|
|
||||||
"no-unmodified-loop-condition": "error",
|
|
||||||
"no-unused-expressions": "error",
|
|
||||||
"no-unused-labels": "error",
|
|
||||||
"no-useless-call": "error",
|
|
||||||
"no-useless-concat": "error",
|
|
||||||
"no-void": "error",
|
|
||||||
"no-warning-comments": "off",
|
|
||||||
"no-with": "error",
|
|
||||||
"radix": ["error", "as-needed"],
|
|
||||||
"vars-on-top": "off",
|
|
||||||
"wrap-iife": ["error", "inside"],
|
|
||||||
"yoda": "error",
|
|
||||||
|
|
||||||
# Strict Mode
|
|
||||||
|
|
||||||
"strict": ["error", "never"],
|
|
||||||
|
|
||||||
# Variables
|
|
||||||
|
|
||||||
"init-declarations": ["error", "always"],
|
|
||||||
"no-catch-shadow": "error",
|
|
||||||
"no-delete-var": "error",
|
|
||||||
"no-label-var": "error",
|
|
||||||
"no-restricted-globals": "off",
|
|
||||||
"no-shadow": "error",
|
|
||||||
"no-shadow-restricted-names": "error",
|
|
||||||
"no-undef": "error",
|
|
||||||
"no-undef-init": "off",
|
|
||||||
"no-undefined": "off",
|
|
||||||
"no-unused-vars": ["error", { "args": "none", "ignoreRestSiblings": true }],
|
|
||||||
"no-use-before-define": "error",
|
|
||||||
|
|
||||||
# Node.js and CommonJS
|
|
||||||
|
|
||||||
"callback-return": "warn",
|
|
||||||
"global-require": "error",
|
|
||||||
"handle-callback-err": "warn",
|
|
||||||
"no-mixed-requires": "error",
|
|
||||||
"no-new-require": "error",
|
|
||||||
"no-path-concat": "error",
|
|
||||||
"no-process-exit": "error",
|
|
||||||
|
|
||||||
# Stylistic Issues
|
|
||||||
|
|
||||||
"array-bracket-spacing": ["error", "never"],
|
|
||||||
"block-spacing": ["error", "always"],
|
|
||||||
"brace-style": ["error", "1tbs", { "allowSingleLine": false }],
|
|
||||||
"camelcase": "off",
|
|
||||||
"comma-spacing": ["error", {"before": false, "after": true}],
|
|
||||||
"comma-style": ["error", "last"],
|
|
||||||
"computed-property-spacing": ["error", "never"],
|
|
||||||
"consistent-this": ["error", "self"],
|
|
||||||
"eol-last": "error",
|
|
||||||
"func-names": "off",
|
|
||||||
"func-style": ["error", "declaration"],
|
|
||||||
"indent": ["error", 2, {"SwitchCase": 1}],
|
|
||||||
"key-spacing": ["error", {"beforeColon": false, "afterColon": true}],
|
|
||||||
"keyword-spacing": ["error", { "before": true, "after": true}],
|
|
||||||
"lines-around-comment": ["error", { "beforeBlockComment": true, "afterBlockComment": false }],
|
|
||||||
"max-depth": ["error", {"maximum": 5}],
|
|
||||||
"max-nested-callbacks": ["error", 4],
|
|
||||||
"max-statements": "off",
|
|
||||||
"max-statements-per-line": ["error", { "max": 1 }],
|
|
||||||
"new-cap": ["error", {"capIsNewExceptions": ["$.Deferred", "DragDropContext", "DragLayer", "DragSource", "DropTarget"]}],
|
|
||||||
"new-parens": "error",
|
|
||||||
"newline-after-var": "off",
|
|
||||||
"newline-before-return": "off",
|
|
||||||
"newline-per-chained-call": "off",
|
|
||||||
"no-array-constructor": "error",
|
|
||||||
"no-bitwise": "error",
|
|
||||||
"no-continue": "error",
|
|
||||||
"no-inline-comments": "off",
|
|
||||||
"no-lonely-if": "warn",
|
|
||||||
"no-mixed-spaces-and-tabs": "error",
|
|
||||||
"no-multiple-empty-lines": ["error", { "max": 1 }],
|
|
||||||
"no-negated-condition": "warn",
|
|
||||||
"no-nested-ternary": "error",
|
|
||||||
"no-new-object": "error",
|
|
||||||
"no-plusplus": "off",
|
|
||||||
"no-restricted-syntax": "off",
|
|
||||||
"no-spaced-func": "error",
|
|
||||||
"no-ternary": "off",
|
|
||||||
"no-trailing-spaces": "error",
|
|
||||||
"no-underscore-dangle": ["error", { "allowAfterThis": true }],
|
|
||||||
"no-unneeded-ternary": "error",
|
|
||||||
"no-whitespace-before-property": "error",
|
|
||||||
"object-curly-spacing": ["error", "always"],
|
|
||||||
"one-var": ["error", "never"],
|
|
||||||
"one-var-declaration-per-line": ["error", "always"],
|
|
||||||
"operator-assignment": ["off", "never"],
|
|
||||||
"operator-linebreak": ["error", "after"],
|
|
||||||
"quote-props": ["error", "as-needed"],
|
|
||||||
"quotes": ["error", "single"],
|
|
||||||
"require-jsdoc": "off",
|
|
||||||
"semi": "error",
|
|
||||||
"semi-spacing": ["error", { "before": false, "after": true }],
|
|
||||||
"sort-vars": "off",
|
|
||||||
"space-before-blocks": ["error", "always"],
|
|
||||||
"space-before-function-paren": ["error", "never"],
|
|
||||||
"space-in-parens": "off",
|
|
||||||
"space-infix-ops": "off",
|
|
||||||
"space-unary-ops": "off",
|
|
||||||
"spaced-comment": "error",
|
|
||||||
"wrap-regex": "error",
|
|
||||||
|
|
||||||
# React
|
|
||||||
|
|
||||||
"react/jsx-boolean-value": [2, "always"],
|
|
||||||
"react/jsx-uses-vars": 2,
|
|
||||||
"react/jsx-closing-bracket-location": 2,
|
|
||||||
"react/jsx-tag-spacing": ["error"],
|
|
||||||
"react/jsx-curly-spacing": [2, "never"],
|
|
||||||
"react/jsx-equals-spacing": [2, "never"],
|
|
||||||
"react/jsx-indent-props": [2, 2],
|
|
||||||
"react/jsx-indent": [2, 2],
|
|
||||||
"react/jsx-key": 2,
|
|
||||||
"react/jsx-no-bind": [2, { "allowArrowFunctions": true }],
|
|
||||||
"react/jsx-no-duplicate-props": [2, { "ignoreCase": true }],
|
|
||||||
"react/jsx-max-props-per-line": [2, { "maximum": 2 }],
|
|
||||||
"react/jsx-handler-names": [2, { "eventHandlerPrefix": "(on|dispatch)", "eventHandlerPropPrefix": "on" }],
|
|
||||||
"react/jsx-no-undef": 2,
|
|
||||||
"react/jsx-pascal-case": 2,
|
|
||||||
"react/jsx-uses-react": 2,
|
|
||||||
// Explicitly disabled in case we want to enable them again
|
|
||||||
"react/no-did-mount-set-state": 0,
|
|
||||||
"react/no-did-update-set-state": 0,
|
|
||||||
"react/no-direct-mutation-state": 2,
|
|
||||||
"react/no-multi-comp": [2, { "ignoreStateless": true }],
|
|
||||||
"react/no-unknown-property": 2,
|
|
||||||
"react/prefer-es6-class": 2,
|
|
||||||
"react/prop-types": 2,
|
|
||||||
"react/react-in-jsx-scope": 2,
|
|
||||||
"react/self-closing-comp": 2,
|
|
||||||
"react/sort-comp": 2,
|
|
||||||
"react/jsx-wrap-multilines": 2
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,332 @@
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
const dirs = fs
|
||||||
|
.readdirSync('frontend/src', { withFileTypes: true })
|
||||||
|
.filter((dirent) => dirent.isDirectory())
|
||||||
|
.map((dirent) => dirent.name)
|
||||||
|
.join('|');
|
||||||
|
|
||||||
|
const frontendFolder = __dirname;
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
parser: '@babel/eslint-parser',
|
||||||
|
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
commonjs: true,
|
||||||
|
node: true,
|
||||||
|
es6: true
|
||||||
|
},
|
||||||
|
|
||||||
|
globals: {
|
||||||
|
expect: false,
|
||||||
|
chai: false,
|
||||||
|
sinon: false
|
||||||
|
},
|
||||||
|
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 6,
|
||||||
|
sourceType: 'module',
|
||||||
|
babelOptions: {
|
||||||
|
configFile: `${frontendFolder}/babel.config.js`
|
||||||
|
},
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true,
|
||||||
|
impliedStrict: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
plugins: [
|
||||||
|
'filenames',
|
||||||
|
'react',
|
||||||
|
'simple-import-sort',
|
||||||
|
'import'
|
||||||
|
],
|
||||||
|
|
||||||
|
settings: {
|
||||||
|
react: {
|
||||||
|
version: 'detect'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
rules: {
|
||||||
|
'filenames/match-exported': ['error'],
|
||||||
|
|
||||||
|
// ECMAScript 6
|
||||||
|
|
||||||
|
'arrow-body-style': [0],
|
||||||
|
'arrow-parens': ['error', 'always'],
|
||||||
|
'arrow-spacing': ['error', { before: true, after: true }],
|
||||||
|
'constructor-super': 'error',
|
||||||
|
'generator-star-spacing': 'off',
|
||||||
|
'no-class-assign': 'error',
|
||||||
|
'no-confusing-arrow': 'error',
|
||||||
|
'no-const-assign': 'error',
|
||||||
|
'no-dupe-class-members': 'error',
|
||||||
|
'no-duplicate-imports': 'error',
|
||||||
|
'no-new-symbol': 'error',
|
||||||
|
'no-this-before-super': 'error',
|
||||||
|
'no-useless-escape': 'error',
|
||||||
|
'no-useless-computed-key': 'error',
|
||||||
|
'no-useless-constructor': 'error',
|
||||||
|
'no-var': 'warn',
|
||||||
|
'object-shorthand': ['error', 'properties'],
|
||||||
|
'prefer-arrow-callback': 'error',
|
||||||
|
'prefer-const': 'warn',
|
||||||
|
'prefer-reflect': 'off',
|
||||||
|
'prefer-rest-params': 'off',
|
||||||
|
'prefer-spread': 'warn',
|
||||||
|
'prefer-template': 'error',
|
||||||
|
'require-yield': 'off',
|
||||||
|
'template-curly-spacing': ['error', 'never'],
|
||||||
|
'yield-star-spacing': 'off',
|
||||||
|
|
||||||
|
// Possible Errors
|
||||||
|
|
||||||
|
'comma-dangle': 'error',
|
||||||
|
'no-cond-assign': 'error',
|
||||||
|
'no-console': 'off',
|
||||||
|
'no-constant-condition': 'warn',
|
||||||
|
'no-control-regex': 'error',
|
||||||
|
'no-debugger': 'off',
|
||||||
|
'no-dupe-args': 'error',
|
||||||
|
'no-dupe-keys': 'error',
|
||||||
|
'no-duplicate-case': 'error',
|
||||||
|
'no-empty': 'warn',
|
||||||
|
'no-empty-character-class': 'error',
|
||||||
|
'no-ex-assign': 'error',
|
||||||
|
'no-extra-boolean-cast': 'error',
|
||||||
|
'no-extra-parens': ['error', 'functions'],
|
||||||
|
'no-extra-semi': 'error',
|
||||||
|
'no-func-assign': 'error',
|
||||||
|
'no-inner-declarations': 'error',
|
||||||
|
'no-invalid-regexp': 'error',
|
||||||
|
'no-irregular-whitespace': 'error',
|
||||||
|
'no-negated-in-lhs': 'error',
|
||||||
|
'no-obj-calls': 'error',
|
||||||
|
'no-regex-spaces': 'error',
|
||||||
|
'no-sparse-arrays': 'error',
|
||||||
|
'no-unexpected-multiline': 'error',
|
||||||
|
'no-unreachable': 'warn',
|
||||||
|
'no-unsafe-finally': 'error',
|
||||||
|
'use-isnan': 'error',
|
||||||
|
'valid-jsdoc': 'off',
|
||||||
|
'valid-typeof': 'error',
|
||||||
|
|
||||||
|
// Best Practices
|
||||||
|
|
||||||
|
'accessor-pairs': 'off',
|
||||||
|
'array-callback-return': 'warn',
|
||||||
|
'block-scoped-var': 'warn',
|
||||||
|
'consistent-return': 'off',
|
||||||
|
curly: 'error',
|
||||||
|
'default-case': 'error',
|
||||||
|
'dot-location': ['error', 'property'],
|
||||||
|
'dot-notation': 'error',
|
||||||
|
eqeqeq: ['error', 'smart'],
|
||||||
|
'guard-for-in': 'error',
|
||||||
|
'no-alert': 'warn',
|
||||||
|
'no-caller': 'error',
|
||||||
|
'no-case-declarations': 'error',
|
||||||
|
'no-div-regex': 'error',
|
||||||
|
'no-else-return': 'error',
|
||||||
|
'no-empty-function': ['error', { allow: ['arrowFunctions'] }],
|
||||||
|
'no-empty-pattern': 'error',
|
||||||
|
'no-eval': 'error',
|
||||||
|
'no-extend-native': 'error',
|
||||||
|
'no-extra-bind': 'error',
|
||||||
|
'no-fallthrough': 'error',
|
||||||
|
'no-floating-decimal': 'error',
|
||||||
|
'no-implicit-coercion': ['error', {
|
||||||
|
boolean: false,
|
||||||
|
number: true,
|
||||||
|
string: true,
|
||||||
|
allow: [/* "!!", "~", "*", "+" */]
|
||||||
|
}],
|
||||||
|
'no-implicit-globals': 'error',
|
||||||
|
'no-implied-eval': 'error',
|
||||||
|
'no-invalid-this': 'off',
|
||||||
|
'no-iterator': 'error',
|
||||||
|
'no-labels': 'error',
|
||||||
|
'no-lone-blocks': 'error',
|
||||||
|
'no-loop-func': 'error',
|
||||||
|
'no-magic-numbers': ['off', { ignoreArrayIndexes: true, ignore: [0, 1] }],
|
||||||
|
'no-multi-spaces': 'error',
|
||||||
|
'no-multi-str': 'error',
|
||||||
|
'no-native-reassign': ['error', { exceptions: ['console'] }],
|
||||||
|
'no-new': 'off',
|
||||||
|
'no-new-func': 'error',
|
||||||
|
'no-new-wrappers': 'error',
|
||||||
|
'no-octal': 'error',
|
||||||
|
'no-octal-escape': 'error',
|
||||||
|
'no-param-reassign': 'off',
|
||||||
|
'no-process-env': 'off',
|
||||||
|
'no-proto': 'error',
|
||||||
|
'no-redeclare': 'error',
|
||||||
|
'no-return-assign': 'warn',
|
||||||
|
'no-script-url': 'error',
|
||||||
|
'no-self-assign': 'error',
|
||||||
|
'no-self-compare': 'error',
|
||||||
|
'no-sequences': 'error',
|
||||||
|
'no-throw-literal': 'error',
|
||||||
|
'no-unmodified-loop-condition': 'error',
|
||||||
|
'no-unused-expressions': 'error',
|
||||||
|
'no-unused-labels': 'error',
|
||||||
|
'no-useless-call': 'error',
|
||||||
|
'no-useless-concat': 'error',
|
||||||
|
'no-void': 'error',
|
||||||
|
'no-warning-comments': 'off',
|
||||||
|
'no-with': 'error',
|
||||||
|
radix: ['error', 'as-needed'],
|
||||||
|
'vars-on-top': 'off',
|
||||||
|
'wrap-iife': ['error', 'inside'],
|
||||||
|
yoda: 'error',
|
||||||
|
|
||||||
|
// Strict Mode
|
||||||
|
|
||||||
|
strict: ['error', 'never'],
|
||||||
|
|
||||||
|
// Variables
|
||||||
|
|
||||||
|
'init-declarations': ['error', 'always'],
|
||||||
|
'no-catch-shadow': 'error',
|
||||||
|
'no-delete-var': 'error',
|
||||||
|
'no-label-var': 'error',
|
||||||
|
'no-restricted-globals': 'off',
|
||||||
|
'no-shadow': 'error',
|
||||||
|
'no-shadow-restricted-names': 'error',
|
||||||
|
'no-undef': 'error',
|
||||||
|
'no-undef-init': 'off',
|
||||||
|
'no-undefined': 'off',
|
||||||
|
'no-unused-vars': ['error', { args: 'none', ignoreRestSiblings: true }],
|
||||||
|
'no-use-before-define': 'error',
|
||||||
|
|
||||||
|
// Node.js and CommonJS
|
||||||
|
|
||||||
|
'callback-return': 'warn',
|
||||||
|
'global-require': 'error',
|
||||||
|
'handle-callback-err': 'warn',
|
||||||
|
'no-mixed-requires': 'error',
|
||||||
|
'no-new-require': 'error',
|
||||||
|
'no-path-concat': 'error',
|
||||||
|
'no-process-exit': 'error',
|
||||||
|
|
||||||
|
// Stylistic Issues
|
||||||
|
|
||||||
|
'array-bracket-spacing': ['error', 'never'],
|
||||||
|
'block-spacing': ['error', 'always'],
|
||||||
|
'brace-style': ['error', '1tbs', { allowSingleLine: false }],
|
||||||
|
camelcase: 'off',
|
||||||
|
'comma-spacing': ['error', { before: false, after: true }],
|
||||||
|
'comma-style': ['error', 'last'],
|
||||||
|
'computed-property-spacing': ['error', 'never'],
|
||||||
|
'consistent-this': ['error', 'self'],
|
||||||
|
'eol-last': 'error',
|
||||||
|
'func-names': 'off',
|
||||||
|
'func-style': ['error', 'declaration'],
|
||||||
|
indent: ['error', 2, { SwitchCase: 1 }],
|
||||||
|
'key-spacing': ['error', { beforeColon: false, afterColon: true }],
|
||||||
|
'keyword-spacing': ['error', { before: true, after: true }],
|
||||||
|
'lines-around-comment': ['error', { beforeBlockComment: true, afterBlockComment: false }],
|
||||||
|
'max-depth': ['error', { maximum: 5 }],
|
||||||
|
'max-nested-callbacks': ['error', 4],
|
||||||
|
'max-statements': 'off',
|
||||||
|
'max-statements-per-line': ['error', { max: 1 }],
|
||||||
|
'new-cap': ['error', { capIsNewExceptions: ['$.Deferred', 'DragDropContext', 'DragLayer', 'DragSource', 'DropTarget'] }],
|
||||||
|
'new-parens': 'error',
|
||||||
|
'newline-after-var': 'off',
|
||||||
|
'newline-before-return': 'off',
|
||||||
|
'newline-per-chained-call': 'off',
|
||||||
|
'no-array-constructor': 'error',
|
||||||
|
'no-bitwise': 'error',
|
||||||
|
'no-continue': 'error',
|
||||||
|
'no-inline-comments': 'off',
|
||||||
|
'no-lonely-if': 'warn',
|
||||||
|
'no-mixed-spaces-and-tabs': 'error',
|
||||||
|
'no-multiple-empty-lines': ['error', { max: 1 }],
|
||||||
|
'no-negated-condition': 'warn',
|
||||||
|
'no-nested-ternary': 'error',
|
||||||
|
'no-new-object': 'error',
|
||||||
|
'no-plusplus': 'off',
|
||||||
|
'no-restricted-syntax': 'off',
|
||||||
|
'no-spaced-func': 'error',
|
||||||
|
'no-ternary': 'off',
|
||||||
|
'no-trailing-spaces': 'error',
|
||||||
|
'no-underscore-dangle': ['error', { allowAfterThis: true }],
|
||||||
|
'no-unneeded-ternary': 'error',
|
||||||
|
'no-whitespace-before-property': 'error',
|
||||||
|
'object-curly-spacing': ['error', 'always'],
|
||||||
|
'one-var': ['error', 'never'],
|
||||||
|
'one-var-declaration-per-line': ['error', 'always'],
|
||||||
|
'operator-assignment': ['off', 'never'],
|
||||||
|
'operator-linebreak': ['error', 'after'],
|
||||||
|
'quote-props': ['error', 'as-needed'],
|
||||||
|
quotes: ['error', 'single'],
|
||||||
|
'require-jsdoc': 'off',
|
||||||
|
semi: 'error',
|
||||||
|
'semi-spacing': ['error', { before: false, after: true }],
|
||||||
|
'sort-vars': 'off',
|
||||||
|
'space-before-blocks': ['error', 'always'],
|
||||||
|
'space-before-function-paren': ['error', 'never'],
|
||||||
|
'space-in-parens': 'off',
|
||||||
|
'space-infix-ops': 'off',
|
||||||
|
'space-unary-ops': 'off',
|
||||||
|
'spaced-comment': 'error',
|
||||||
|
'wrap-regex': 'error',
|
||||||
|
|
||||||
|
// ImportSort
|
||||||
|
|
||||||
|
'simple-import-sort/imports': 'error',
|
||||||
|
'import/newline-after-import': 'error',
|
||||||
|
|
||||||
|
// React
|
||||||
|
|
||||||
|
'react/jsx-boolean-value': [2, 'always'],
|
||||||
|
'react/jsx-uses-vars': 2,
|
||||||
|
'react/jsx-closing-bracket-location': 2,
|
||||||
|
'react/jsx-tag-spacing': ['error'],
|
||||||
|
'react/jsx-curly-spacing': [2, 'never'],
|
||||||
|
'react/jsx-equals-spacing': [2, 'never'],
|
||||||
|
'react/jsx-indent-props': [2, 2],
|
||||||
|
'react/jsx-indent': [2, 2, { indentLogicalExpressions: true }],
|
||||||
|
'react/jsx-key': 2,
|
||||||
|
'react/jsx-no-bind': [2, { allowArrowFunctions: true }],
|
||||||
|
'react/jsx-no-duplicate-props': [2, { ignoreCase: true }],
|
||||||
|
'react/jsx-max-props-per-line': [2, { maximum: 2 }],
|
||||||
|
'react/jsx-handler-names': [2, { eventHandlerPrefix: '(on|dispatch)', eventHandlerPropPrefix: 'on' }],
|
||||||
|
'react/jsx-no-undef': 2,
|
||||||
|
'react/jsx-pascal-case': 2,
|
||||||
|
'react/jsx-uses-react': 2,
|
||||||
|
// Explicitly disabled in case we want to enable them again
|
||||||
|
'react/no-did-mount-set-state': 0,
|
||||||
|
'react/no-did-update-set-state': 0,
|
||||||
|
'react/no-direct-mutation-state': 2,
|
||||||
|
'react/no-multi-comp': [2, { ignoreStateless: true }],
|
||||||
|
'react/no-unknown-property': 2,
|
||||||
|
'react/prefer-es6-class': 2,
|
||||||
|
'react/prop-types': 2,
|
||||||
|
'react/react-in-jsx-scope': 2,
|
||||||
|
'react/self-closing-comp': 2,
|
||||||
|
'react/sort-comp': 2,
|
||||||
|
'react/jsx-wrap-multilines': 2
|
||||||
|
},
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: ['*.js'],
|
||||||
|
rules: {
|
||||||
|
'simple-import-sort/imports': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
groups: [
|
||||||
|
// Packages
|
||||||
|
// Absolute Paths
|
||||||
|
// Relative Paths
|
||||||
|
// Css
|
||||||
|
['^@?\\w', `^(${dirs})(/.*|$)`, '^\\.', '^\\..*css$']
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
|
@ -1,23 +1,23 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
|
import ConfirmModal from 'Components/Modal/ConfirmModal';
|
||||||
|
import PageContent from 'Components/Page/PageContent';
|
||||||
|
import PageContentBody from 'Components/Page/PageContentBody';
|
||||||
|
import PageToolbar from 'Components/Page/Toolbar/PageToolbar';
|
||||||
|
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
|
||||||
|
import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
|
||||||
|
import Table from 'Components/Table/Table';
|
||||||
|
import TableBody from 'Components/Table/TableBody';
|
||||||
|
import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper';
|
||||||
|
import TablePager from 'Components/Table/TablePager';
|
||||||
|
import { align, icons, kinds } from 'Helpers/Props';
|
||||||
import getRemovedItems from 'Utilities/Object/getRemovedItems';
|
import getRemovedItems from 'Utilities/Object/getRemovedItems';
|
||||||
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
||||||
import getSelectedIds from 'Utilities/Table/getSelectedIds';
|
import getSelectedIds from 'Utilities/Table/getSelectedIds';
|
||||||
import removeOldSelectedState from 'Utilities/Table/removeOldSelectedState';
|
import removeOldSelectedState from 'Utilities/Table/removeOldSelectedState';
|
||||||
import selectAll from 'Utilities/Table/selectAll';
|
import selectAll from 'Utilities/Table/selectAll';
|
||||||
import toggleSelected from 'Utilities/Table/toggleSelected';
|
import toggleSelected from 'Utilities/Table/toggleSelected';
|
||||||
import { align, icons, kinds } from 'Helpers/Props';
|
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
|
||||||
import ConfirmModal from 'Components/Modal/ConfirmModal';
|
|
||||||
import Table from 'Components/Table/Table';
|
|
||||||
import TableBody from 'Components/Table/TableBody';
|
|
||||||
import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper';
|
|
||||||
import TablePager from 'Components/Table/TablePager';
|
|
||||||
import PageContent from 'Components/Page/PageContent';
|
|
||||||
import PageContentBody from 'Components/Page/PageContentBody';
|
|
||||||
import PageToolbar from 'Components/Page/Toolbar/PageToolbar';
|
|
||||||
import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
|
|
||||||
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
|
|
||||||
import BlocklistRowConnector from './BlocklistRowConnector';
|
import BlocklistRowConnector from './BlocklistRowConnector';
|
||||||
|
|
||||||
class Blocklist extends Component {
|
class Blocklist extends Component {
|
||||||
|
@ -60,33 +60,33 @@ class Blocklist extends Component {
|
||||||
|
|
||||||
getSelectedIds = () => {
|
getSelectedIds = () => {
|
||||||
return getSelectedIds(this.state.selectedState);
|
return getSelectedIds(this.state.selectedState);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onSelectAllChange = ({ value }) => {
|
onSelectAllChange = ({ value }) => {
|
||||||
this.setState(selectAll(this.state.selectedState, value));
|
this.setState(selectAll(this.state.selectedState, value));
|
||||||
}
|
};
|
||||||
|
|
||||||
onSelectedChange = ({ id, value, shiftKey = false }) => {
|
onSelectedChange = ({ id, value, shiftKey = false }) => {
|
||||||
this.setState((state) => {
|
this.setState((state) => {
|
||||||
return toggleSelected(state, this.props.items, id, value, shiftKey);
|
return toggleSelected(state, this.props.items, id, value, shiftKey);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveSelectedPress = () => {
|
onRemoveSelectedPress = () => {
|
||||||
this.setState({ isConfirmRemoveModalOpen: true });
|
this.setState({ isConfirmRemoveModalOpen: true });
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveSelectedConfirmed = () => {
|
onRemoveSelectedConfirmed = () => {
|
||||||
this.props.onRemoveSelected(this.getSelectedIds());
|
this.props.onRemoveSelected(this.getSelectedIds());
|
||||||
this.setState({ isConfirmRemoveModalOpen: false });
|
this.setState({ isConfirmRemoveModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
onConfirmRemoveModalClose = () => {
|
onConfirmRemoveModalClose = () => {
|
||||||
this.setState({ isConfirmRemoveModalOpen: false });
|
this.setState({ isConfirmRemoveModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -2,12 +2,12 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
|
import * as commandNames from 'Commands/commandNames';
|
||||||
import withCurrentPage from 'Components/withCurrentPage';
|
import withCurrentPage from 'Components/withCurrentPage';
|
||||||
import createCommandExecutingSelector from 'Store/Selectors/createCommandExecutingSelector';
|
|
||||||
import * as blocklistActions from 'Store/Actions/blocklistActions';
|
import * as blocklistActions from 'Store/Actions/blocklistActions';
|
||||||
import { executeCommand } from 'Store/Actions/commandActions';
|
import { executeCommand } from 'Store/Actions/commandActions';
|
||||||
import * as commandNames from 'Commands/commandNames';
|
import createCommandExecutingSelector from 'Store/Selectors/createCommandExecutingSelector';
|
||||||
|
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
|
||||||
import Blocklist from './Blocklist';
|
import Blocklist from './Blocklist';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
@ -65,49 +65,41 @@ class BlocklistConnector extends Component {
|
||||||
|
|
||||||
repopulate = () => {
|
repopulate = () => {
|
||||||
this.props.fetchBlocklist();
|
this.props.fetchBlocklist();
|
||||||
}
|
};
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onFirstPagePress = () => {
|
onFirstPagePress = () => {
|
||||||
this.props.gotoBlocklistFirstPage();
|
this.props.gotoBlocklistFirstPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onPreviousPagePress = () => {
|
onPreviousPagePress = () => {
|
||||||
this.props.gotoBlocklistPreviousPage();
|
this.props.gotoBlocklistPreviousPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onNextPagePress = () => {
|
onNextPagePress = () => {
|
||||||
this.props.gotoBlocklistNextPage();
|
this.props.gotoBlocklistNextPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onLastPagePress = () => {
|
onLastPagePress = () => {
|
||||||
this.props.gotoBlocklistLastPage();
|
this.props.gotoBlocklistLastPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onPageSelect = (page) => {
|
onPageSelect = (page) => {
|
||||||
this.props.gotoBlocklistPage({ page });
|
this.props.gotoBlocklistPage({ page });
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveSelected = (ids) => {
|
onRemoveSelected = (ids) => {
|
||||||
this.props.removeBlocklistItems({ ids });
|
this.props.removeBlocklistItems({ ids });
|
||||||
}
|
};
|
||||||
|
|
||||||
onSortPress = (sortKey) => {
|
onSortPress = (sortKey) => {
|
||||||
this.props.setBlocklistSort({ sortKey });
|
this.props.setBlocklistSort({ sortKey });
|
||||||
}
|
};
|
||||||
|
|
||||||
onTableOptionChange = (payload) => {
|
|
||||||
this.props.setBlocklistTableOption(payload);
|
|
||||||
|
|
||||||
if (payload.pageSize) {
|
|
||||||
this.props.gotoBlocklistFirstPage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onClearBlocklistPress = () => {
|
onClearBlocklistPress = () => {
|
||||||
this.props.executeCommand({ name: commandNames.CLEAR_BLOCKLIST });
|
this.props.executeCommand({ name: commandNames.CLEAR_BLOCKLIST });
|
||||||
}
|
};
|
||||||
|
|
||||||
onTableOptionChange = (payload) => {
|
onTableOptionChange = (payload) => {
|
||||||
this.props.setBlocklistTableOption(payload);
|
this.props.setBlocklistTableOption(payload);
|
||||||
|
@ -115,7 +107,7 @@ class BlocklistConnector extends Component {
|
||||||
if (payload.pageSize) {
|
if (payload.pageSize) {
|
||||||
this.props.gotoBlocklistFirstPage();
|
this.props.gotoBlocklistFirstPage();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import Button from 'Components/Link/Button';
|
|
||||||
import DescriptionList from 'Components/DescriptionList/DescriptionList';
|
import DescriptionList from 'Components/DescriptionList/DescriptionList';
|
||||||
import DescriptionListItem from 'Components/DescriptionList/DescriptionListItem';
|
import DescriptionListItem from 'Components/DescriptionList/DescriptionListItem';
|
||||||
|
import Button from 'Components/Link/Button';
|
||||||
import Modal from 'Components/Modal/Modal';
|
import Modal from 'Components/Modal/Modal';
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
|
|
||||||
class BlocklistDetailsModal extends Component {
|
class BlocklistDetailsModal extends Component {
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { icons, kinds } from 'Helpers/Props';
|
|
||||||
import IconButton from 'Components/Link/IconButton';
|
import IconButton from 'Components/Link/IconButton';
|
||||||
import TableSelectCell from 'Components/Table/Cells/TableSelectCell';
|
|
||||||
import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector';
|
import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector';
|
||||||
import TableRow from 'Components/Table/TableRow';
|
|
||||||
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
||||||
|
import TableSelectCell from 'Components/Table/Cells/TableSelectCell';
|
||||||
|
import TableRow from 'Components/Table/TableRow';
|
||||||
import EpisodeLanguage from 'Episode/EpisodeLanguage';
|
import EpisodeLanguage from 'Episode/EpisodeLanguage';
|
||||||
import EpisodeQuality from 'Episode/EpisodeQuality';
|
import EpisodeQuality from 'Episode/EpisodeQuality';
|
||||||
|
import { icons, kinds } from 'Helpers/Props';
|
||||||
import SeriesTitleLink from 'Series/SeriesTitleLink';
|
import SeriesTitleLink from 'Series/SeriesTitleLink';
|
||||||
import BlocklistDetailsModal from './BlocklistDetailsModal';
|
import BlocklistDetailsModal from './BlocklistDetailsModal';
|
||||||
import styles from './BlocklistRow.css';
|
import styles from './BlocklistRow.css';
|
||||||
|
@ -30,11 +30,11 @@ class BlocklistRow extends Component {
|
||||||
|
|
||||||
onDetailsPress = () => {
|
onDetailsPress = () => {
|
||||||
this.setState({ isDetailsModalOpen: true });
|
this.setState({ isDetailsModalOpen: true });
|
||||||
}
|
};
|
||||||
|
|
||||||
onDetailsModalClose = () => {
|
onDetailsModalClose = () => {
|
||||||
this.setState({ isDetailsModalOpen: false });
|
this.setState({ isDetailsModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import formatAge from 'Utilities/Number/formatAge';
|
|
||||||
import formatDateTime from 'Utilities/Date/formatDateTime';
|
|
||||||
import formatPreferredWordScore from 'Utilities/Number/formatPreferredWordScore';
|
|
||||||
import Link from 'Components/Link/Link';
|
|
||||||
import DescriptionList from 'Components/DescriptionList/DescriptionList';
|
import DescriptionList from 'Components/DescriptionList/DescriptionList';
|
||||||
import DescriptionListItem from 'Components/DescriptionList/DescriptionListItem';
|
import DescriptionListItem from 'Components/DescriptionList/DescriptionListItem';
|
||||||
import DescriptionListItemTitle from 'Components/DescriptionList/DescriptionListItemTitle';
|
|
||||||
import DescriptionListItemDescription from 'Components/DescriptionList/DescriptionListItemDescription';
|
import DescriptionListItemDescription from 'Components/DescriptionList/DescriptionListItemDescription';
|
||||||
|
import DescriptionListItemTitle from 'Components/DescriptionList/DescriptionListItemTitle';
|
||||||
|
import Link from 'Components/Link/Link';
|
||||||
|
import formatDateTime from 'Utilities/Date/formatDateTime';
|
||||||
|
import formatAge from 'Utilities/Number/formatAge';
|
||||||
|
import formatPreferredWordScore from 'Utilities/Number/formatPreferredWordScore';
|
||||||
import styles from './HistoryDetails.css';
|
import styles from './HistoryDetails.css';
|
||||||
|
|
||||||
function HistoryDetails(props) {
|
function HistoryDetails(props) {
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { kinds } from 'Helpers/Props';
|
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import SpinnerButton from 'Components/Link/SpinnerButton';
|
import SpinnerButton from 'Components/Link/SpinnerButton';
|
||||||
import Modal from 'Components/Modal/Modal';
|
import Modal from 'Components/Modal/Modal';
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
|
import { kinds } from 'Helpers/Props';
|
||||||
import HistoryDetails from './HistoryDetails';
|
import HistoryDetails from './HistoryDetails';
|
||||||
import styles from './HistoryDetailsModal.css';
|
import styles from './HistoryDetailsModal.css';
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { align, icons } from 'Helpers/Props';
|
|
||||||
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
|
import FilterMenu from 'Components/Menu/FilterMenu';
|
||||||
|
import PageContent from 'Components/Page/PageContent';
|
||||||
|
import PageContentBody from 'Components/Page/PageContentBody';
|
||||||
|
import PageToolbar from 'Components/Page/Toolbar/PageToolbar';
|
||||||
|
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
|
||||||
|
import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
|
||||||
import Table from 'Components/Table/Table';
|
import Table from 'Components/Table/Table';
|
||||||
import TableBody from 'Components/Table/TableBody';
|
import TableBody from 'Components/Table/TableBody';
|
||||||
import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper';
|
import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper';
|
||||||
import TablePager from 'Components/Table/TablePager';
|
import TablePager from 'Components/Table/TablePager';
|
||||||
import PageContent from 'Components/Page/PageContent';
|
import { align, icons } from 'Helpers/Props';
|
||||||
import PageContentBody from 'Components/Page/PageContentBody';
|
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
||||||
import PageToolbar from 'Components/Page/Toolbar/PageToolbar';
|
|
||||||
import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
|
|
||||||
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
|
|
||||||
import FilterMenu from 'Components/Menu/FilterMenu';
|
|
||||||
import HistoryRowConnector from './HistoryRowConnector';
|
import HistoryRowConnector from './HistoryRowConnector';
|
||||||
|
|
||||||
class History extends Component {
|
class History extends Component {
|
||||||
|
|
|
@ -2,13 +2,13 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
|
import withCurrentPage from 'Components/withCurrentPage';
|
||||||
|
import { clearEpisodes, fetchEpisodes } from 'Store/Actions/episodeActions';
|
||||||
|
import { clearEpisodeFiles } from 'Store/Actions/episodeFileActions';
|
||||||
|
import * as historyActions from 'Store/Actions/historyActions';
|
||||||
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
||||||
import selectUniqueIds from 'Utilities/Object/selectUniqueIds';
|
import selectUniqueIds from 'Utilities/Object/selectUniqueIds';
|
||||||
import withCurrentPage from 'Components/withCurrentPage';
|
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
|
||||||
import * as historyActions from 'Store/Actions/historyActions';
|
|
||||||
import { fetchEpisodes, clearEpisodes } from 'Store/Actions/episodeActions';
|
|
||||||
import { clearEpisodeFiles } from 'Store/Actions/episodeFileActions';
|
|
||||||
import History from './History';
|
import History from './History';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
@ -78,38 +78,38 @@ class HistoryConnector extends Component {
|
||||||
|
|
||||||
repopulate = () => {
|
repopulate = () => {
|
||||||
this.props.fetchHistory();
|
this.props.fetchHistory();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onFirstPagePress = () => {
|
onFirstPagePress = () => {
|
||||||
this.props.gotoHistoryFirstPage();
|
this.props.gotoHistoryFirstPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onPreviousPagePress = () => {
|
onPreviousPagePress = () => {
|
||||||
this.props.gotoHistoryPreviousPage();
|
this.props.gotoHistoryPreviousPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onNextPagePress = () => {
|
onNextPagePress = () => {
|
||||||
this.props.gotoHistoryNextPage();
|
this.props.gotoHistoryNextPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onLastPagePress = () => {
|
onLastPagePress = () => {
|
||||||
this.props.gotoHistoryLastPage();
|
this.props.gotoHistoryLastPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onPageSelect = (page) => {
|
onPageSelect = (page) => {
|
||||||
this.props.gotoHistoryPage({ page });
|
this.props.gotoHistoryPage({ page });
|
||||||
}
|
};
|
||||||
|
|
||||||
onSortPress = (sortKey) => {
|
onSortPress = (sortKey) => {
|
||||||
this.props.setHistorySort({ sortKey });
|
this.props.setHistorySort({ sortKey });
|
||||||
}
|
};
|
||||||
|
|
||||||
onFilterSelect = (selectedFilterKey) => {
|
onFilterSelect = (selectedFilterKey) => {
|
||||||
this.props.setHistoryFilter({ selectedFilterKey });
|
this.props.setHistoryFilter({ selectedFilterKey });
|
||||||
}
|
};
|
||||||
|
|
||||||
onTableOptionChange = (payload) => {
|
onTableOptionChange = (payload) => {
|
||||||
this.props.setHistoryTableOption(payload);
|
this.props.setHistoryTableOption(payload);
|
||||||
|
@ -117,7 +117,7 @@ class HistoryConnector extends Component {
|
||||||
if (payload.pageSize) {
|
if (payload.pageSize) {
|
||||||
this.props.gotoHistoryFirstPage();
|
this.props.gotoHistoryFirstPage();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { icons, kinds } from 'Helpers/Props';
|
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
||||||
|
import { icons, kinds } from 'Helpers/Props';
|
||||||
import styles from './HistoryEventTypeCell.css';
|
import styles from './HistoryEventTypeCell.css';
|
||||||
|
|
||||||
function getIconName(eventType) {
|
function getIconName(eventType) {
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import formatPreferredWordScore from 'Utilities/Number/formatPreferredWordScore';
|
|
||||||
import { icons } from 'Helpers/Props';
|
|
||||||
import IconButton from 'Components/Link/IconButton';
|
import IconButton from 'Components/Link/IconButton';
|
||||||
import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector';
|
import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector';
|
||||||
import TableRow from 'Components/Table/TableRow';
|
|
||||||
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
||||||
|
import TableRow from 'Components/Table/TableRow';
|
||||||
import episodeEntities from 'Episode/episodeEntities';
|
import episodeEntities from 'Episode/episodeEntities';
|
||||||
import SeasonEpisodeNumber from 'Episode/SeasonEpisodeNumber';
|
|
||||||
import EpisodeTitleLink from 'Episode/EpisodeTitleLink';
|
|
||||||
import EpisodeLanguage from 'Episode/EpisodeLanguage';
|
import EpisodeLanguage from 'Episode/EpisodeLanguage';
|
||||||
import EpisodeQuality from 'Episode/EpisodeQuality';
|
import EpisodeQuality from 'Episode/EpisodeQuality';
|
||||||
|
import EpisodeTitleLink from 'Episode/EpisodeTitleLink';
|
||||||
|
import SeasonEpisodeNumber from 'Episode/SeasonEpisodeNumber';
|
||||||
|
import { icons } from 'Helpers/Props';
|
||||||
import SeriesTitleLink from 'Series/SeriesTitleLink';
|
import SeriesTitleLink from 'Series/SeriesTitleLink';
|
||||||
import HistoryEventTypeCell from './HistoryEventTypeCell';
|
import formatPreferredWordScore from 'Utilities/Number/formatPreferredWordScore';
|
||||||
import HistoryDetailsModal from './Details/HistoryDetailsModal';
|
import HistoryDetailsModal from './Details/HistoryDetailsModal';
|
||||||
|
import HistoryEventTypeCell from './HistoryEventTypeCell';
|
||||||
import styles from './HistoryRow.css';
|
import styles from './HistoryRow.css';
|
||||||
|
|
||||||
class HistoryRow extends Component {
|
class HistoryRow extends Component {
|
||||||
|
@ -44,11 +44,11 @@ class HistoryRow extends Component {
|
||||||
|
|
||||||
onDetailsPress = () => {
|
onDetailsPress = () => {
|
||||||
this.setState({ isDetailsModalOpen: true });
|
this.setState({ isDetailsModalOpen: true });
|
||||||
}
|
};
|
||||||
|
|
||||||
onDetailsModalClose = () => {
|
onDetailsModalClose = () => {
|
||||||
this.setState({ isDetailsModalOpen: false });
|
this.setState({ isDetailsModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -3,8 +3,8 @@ import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { fetchHistory, markAsFailed } from 'Store/Actions/historyActions';
|
import { fetchHistory, markAsFailed } from 'Store/Actions/historyActions';
|
||||||
import createSeriesSelector from 'Store/Selectors/createSeriesSelector';
|
|
||||||
import createEpisodeSelector from 'Store/Selectors/createEpisodeSelector';
|
import createEpisodeSelector from 'Store/Selectors/createEpisodeSelector';
|
||||||
|
import createSeriesSelector from 'Store/Selectors/createSeriesSelector';
|
||||||
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
||||||
import HistoryRow from './HistoryRow';
|
import HistoryRow from './HistoryRow';
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ class HistoryRowConnector extends Component {
|
||||||
|
|
||||||
onMarkAsFailedPress = () => {
|
onMarkAsFailedPress = () => {
|
||||||
this.props.markAsFailed({ id: this.props.id });
|
this.props.markAsFailed({ id: this.props.id });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
|
import PageContent from 'Components/Page/PageContent';
|
||||||
|
import PageContentBody from 'Components/Page/PageContentBody';
|
||||||
|
import PageToolbar from 'Components/Page/Toolbar/PageToolbar';
|
||||||
|
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
|
||||||
|
import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
|
||||||
|
import PageToolbarSeparator from 'Components/Page/Toolbar/PageToolbarSeparator';
|
||||||
|
import Table from 'Components/Table/Table';
|
||||||
|
import TableBody from 'Components/Table/TableBody';
|
||||||
|
import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper';
|
||||||
|
import TablePager from 'Components/Table/TablePager';
|
||||||
|
import { align, icons } from 'Helpers/Props';
|
||||||
import getRemovedItems from 'Utilities/Object/getRemovedItems';
|
import getRemovedItems from 'Utilities/Object/getRemovedItems';
|
||||||
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
||||||
import getSelectedIds from 'Utilities/Table/getSelectedIds';
|
import getSelectedIds from 'Utilities/Table/getSelectedIds';
|
||||||
import removeOldSelectedState from 'Utilities/Table/removeOldSelectedState';
|
import removeOldSelectedState from 'Utilities/Table/removeOldSelectedState';
|
||||||
import selectAll from 'Utilities/Table/selectAll';
|
import selectAll from 'Utilities/Table/selectAll';
|
||||||
import toggleSelected from 'Utilities/Table/toggleSelected';
|
import toggleSelected from 'Utilities/Table/toggleSelected';
|
||||||
import { align, icons } from 'Helpers/Props';
|
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
|
||||||
import Table from 'Components/Table/Table';
|
|
||||||
import TableBody from 'Components/Table/TableBody';
|
|
||||||
import TablePager from 'Components/Table/TablePager';
|
|
||||||
import PageContent from 'Components/Page/PageContent';
|
|
||||||
import PageContentBody from 'Components/Page/PageContentBody';
|
|
||||||
import PageToolbar from 'Components/Page/Toolbar/PageToolbar';
|
|
||||||
import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
|
|
||||||
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
|
|
||||||
import PageToolbarSeparator from 'Components/Page/Toolbar/PageToolbarSeparator';
|
|
||||||
import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper';
|
|
||||||
import RemoveQueueItemsModal from './RemoveQueueItemsModal';
|
|
||||||
import QueueOptionsConnector from './QueueOptionsConnector';
|
import QueueOptionsConnector from './QueueOptionsConnector';
|
||||||
import QueueRowConnector from './QueueRowConnector';
|
import QueueRowConnector from './QueueRowConnector';
|
||||||
|
import RemoveQueueItemsModal from './RemoveQueueItemsModal';
|
||||||
|
|
||||||
class Queue extends Component {
|
class Queue extends Component {
|
||||||
|
|
||||||
|
@ -87,45 +87,45 @@ class Queue extends Component {
|
||||||
|
|
||||||
getSelectedIds = () => {
|
getSelectedIds = () => {
|
||||||
return getSelectedIds(this.state.selectedState);
|
return getSelectedIds(this.state.selectedState);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onQueueRowModalOpenOrClose = (isOpen) => {
|
onQueueRowModalOpenOrClose = (isOpen) => {
|
||||||
this._shouldBlockRefresh = isOpen;
|
this._shouldBlockRefresh = isOpen;
|
||||||
}
|
};
|
||||||
|
|
||||||
onSelectAllChange = ({ value }) => {
|
onSelectAllChange = ({ value }) => {
|
||||||
this.setState(selectAll(this.state.selectedState, value));
|
this.setState(selectAll(this.state.selectedState, value));
|
||||||
}
|
};
|
||||||
|
|
||||||
onSelectedChange = ({ id, value, shiftKey = false }) => {
|
onSelectedChange = ({ id, value, shiftKey = false }) => {
|
||||||
this.setState((state) => {
|
this.setState((state) => {
|
||||||
return toggleSelected(state, this.props.items, id, value, shiftKey);
|
return toggleSelected(state, this.props.items, id, value, shiftKey);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onGrabSelectedPress = () => {
|
onGrabSelectedPress = () => {
|
||||||
this.props.onGrabSelectedPress(this.getSelectedIds());
|
this.props.onGrabSelectedPress(this.getSelectedIds());
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveSelectedPress = () => {
|
onRemoveSelectedPress = () => {
|
||||||
this.setState({ isConfirmRemoveModalOpen: true }, () => {
|
this.setState({ isConfirmRemoveModalOpen: true }, () => {
|
||||||
this._shouldBlockRefresh = true;
|
this._shouldBlockRefresh = true;
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveSelectedConfirmed = (payload) => {
|
onRemoveSelectedConfirmed = (payload) => {
|
||||||
this._shouldBlockRefresh = false;
|
this._shouldBlockRefresh = false;
|
||||||
this.props.onRemoveSelectedPress({ ids: this.getSelectedIds(), ...payload });
|
this.props.onRemoveSelectedPress({ ids: this.getSelectedIds(), ...payload });
|
||||||
this.setState({ isConfirmRemoveModalOpen: false });
|
this.setState({ isConfirmRemoveModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
onConfirmRemoveModalClose = () => {
|
onConfirmRemoveModalClose = () => {
|
||||||
this._shouldBlockRefresh = false;
|
this._shouldBlockRefresh = false;
|
||||||
this.setState({ isConfirmRemoveModalOpen: false });
|
this.setState({ isConfirmRemoveModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -2,15 +2,15 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
|
import * as commandNames from 'Commands/commandNames';
|
||||||
|
import withCurrentPage from 'Components/withCurrentPage';
|
||||||
|
import { executeCommand } from 'Store/Actions/commandActions';
|
||||||
|
import { clearEpisodes, fetchEpisodes } from 'Store/Actions/episodeActions';
|
||||||
|
import * as queueActions from 'Store/Actions/queueActions';
|
||||||
|
import createCommandExecutingSelector from 'Store/Selectors/createCommandExecutingSelector';
|
||||||
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
||||||
import selectUniqueIds from 'Utilities/Object/selectUniqueIds';
|
import selectUniqueIds from 'Utilities/Object/selectUniqueIds';
|
||||||
import withCurrentPage from 'Components/withCurrentPage';
|
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
|
||||||
import createCommandExecutingSelector from 'Store/Selectors/createCommandExecutingSelector';
|
|
||||||
import { executeCommand } from 'Store/Actions/commandActions';
|
|
||||||
import * as queueActions from 'Store/Actions/queueActions';
|
|
||||||
import { fetchEpisodes, clearEpisodes } from 'Store/Actions/episodeActions';
|
|
||||||
import * as commandNames from 'Commands/commandNames';
|
|
||||||
import Queue from './Queue';
|
import Queue from './Queue';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
@ -93,34 +93,34 @@ class QueueConnector extends Component {
|
||||||
|
|
||||||
repopulate = () => {
|
repopulate = () => {
|
||||||
this.props.fetchQueue();
|
this.props.fetchQueue();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onFirstPagePress = () => {
|
onFirstPagePress = () => {
|
||||||
this.props.gotoQueueFirstPage();
|
this.props.gotoQueueFirstPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onPreviousPagePress = () => {
|
onPreviousPagePress = () => {
|
||||||
this.props.gotoQueuePreviousPage();
|
this.props.gotoQueuePreviousPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onNextPagePress = () => {
|
onNextPagePress = () => {
|
||||||
this.props.gotoQueueNextPage();
|
this.props.gotoQueueNextPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onLastPagePress = () => {
|
onLastPagePress = () => {
|
||||||
this.props.gotoQueueLastPage();
|
this.props.gotoQueueLastPage();
|
||||||
}
|
};
|
||||||
|
|
||||||
onPageSelect = (page) => {
|
onPageSelect = (page) => {
|
||||||
this.props.gotoQueuePage({ page });
|
this.props.gotoQueuePage({ page });
|
||||||
}
|
};
|
||||||
|
|
||||||
onSortPress = (sortKey) => {
|
onSortPress = (sortKey) => {
|
||||||
this.props.setQueueSort({ sortKey });
|
this.props.setQueueSort({ sortKey });
|
||||||
}
|
};
|
||||||
|
|
||||||
onTableOptionChange = (payload) => {
|
onTableOptionChange = (payload) => {
|
||||||
this.props.setQueueTableOption(payload);
|
this.props.setQueueTableOption(payload);
|
||||||
|
@ -128,21 +128,21 @@ class QueueConnector extends Component {
|
||||||
if (payload.pageSize) {
|
if (payload.pageSize) {
|
||||||
this.props.gotoQueueFirstPage();
|
this.props.gotoQueueFirstPage();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
onRefreshPress = () => {
|
onRefreshPress = () => {
|
||||||
this.props.executeCommand({
|
this.props.executeCommand({
|
||||||
name: commandNames.REFRESH_MONITORED_DOWNLOADS
|
name: commandNames.REFRESH_MONITORED_DOWNLOADS
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onGrabSelectedPress = (ids) => {
|
onGrabSelectedPress = (ids) => {
|
||||||
this.props.grabQueueItems({ ids });
|
this.props.grabQueueItems({ ids });
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveSelectedPress = (payload) => {
|
onRemoveSelectedPress = (payload) => {
|
||||||
this.props.removeQueueItems(payload);
|
this.props.removeQueueItems(payload);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { icons, kinds } from 'Helpers/Props';
|
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
|
import { icons, kinds } from 'Helpers/Props';
|
||||||
|
|
||||||
function QueueDetails(props) {
|
function QueueDetails(props) {
|
||||||
const {
|
const {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component, Fragment } from 'react';
|
import React, { Component, Fragment } from 'react';
|
||||||
import { inputTypes } from 'Helpers/Props';
|
|
||||||
import FormGroup from 'Components/Form/FormGroup';
|
import FormGroup from 'Components/Form/FormGroup';
|
||||||
import FormLabel from 'Components/Form/FormLabel';
|
|
||||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||||
|
import FormLabel from 'Components/Form/FormLabel';
|
||||||
|
import { inputTypes } from 'Helpers/Props';
|
||||||
|
|
||||||
class QueueOptions extends Component {
|
class QueueOptions extends Component {
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ class QueueOptions extends Component {
|
||||||
[name]: value
|
[name]: value
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,25 +1,25 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { icons, kinds } from 'Helpers/Props';
|
import ProtocolLabel from 'Activity/Queue/ProtocolLabel';
|
||||||
import IconButton from 'Components/Link/IconButton';
|
import IconButton from 'Components/Link/IconButton';
|
||||||
import SpinnerIconButton from 'Components/Link/SpinnerIconButton';
|
import SpinnerIconButton from 'Components/Link/SpinnerIconButton';
|
||||||
import ProgressBar from 'Components/ProgressBar';
|
import ProgressBar from 'Components/ProgressBar';
|
||||||
import TableRow from 'Components/Table/TableRow';
|
|
||||||
import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector';
|
import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector';
|
||||||
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
||||||
import TableSelectCell from 'Components/Table/Cells/TableSelectCell';
|
import TableSelectCell from 'Components/Table/Cells/TableSelectCell';
|
||||||
import ProtocolLabel from 'Activity/Queue/ProtocolLabel';
|
import TableRow from 'Components/Table/TableRow';
|
||||||
import EpisodeTitleLink from 'Episode/EpisodeTitleLink';
|
|
||||||
import EpisodeLanguage from 'Episode/EpisodeLanguage';
|
import EpisodeLanguage from 'Episode/EpisodeLanguage';
|
||||||
import EpisodeQuality from 'Episode/EpisodeQuality';
|
import EpisodeQuality from 'Episode/EpisodeQuality';
|
||||||
|
import EpisodeTitleLink from 'Episode/EpisodeTitleLink';
|
||||||
import SeasonEpisodeNumber from 'Episode/SeasonEpisodeNumber';
|
import SeasonEpisodeNumber from 'Episode/SeasonEpisodeNumber';
|
||||||
|
import { icons, kinds } from 'Helpers/Props';
|
||||||
import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal';
|
import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal';
|
||||||
import SeriesTitleLink from 'Series/SeriesTitleLink';
|
import SeriesTitleLink from 'Series/SeriesTitleLink';
|
||||||
import QueueStatusCell from './QueueStatusCell';
|
|
||||||
import TimeleftCell from './TimeleftCell';
|
|
||||||
import RemoveQueueItemModal from './RemoveQueueItemModal';
|
|
||||||
import styles from './QueueRow.css';
|
|
||||||
import formatBytes from 'Utilities/Number/formatBytes';
|
import formatBytes from 'Utilities/Number/formatBytes';
|
||||||
|
import QueueStatusCell from './QueueStatusCell';
|
||||||
|
import RemoveQueueItemModal from './RemoveQueueItemModal';
|
||||||
|
import TimeleftCell from './TimeleftCell';
|
||||||
|
import styles from './QueueRow.css';
|
||||||
|
|
||||||
class QueueRow extends Component {
|
class QueueRow extends Component {
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ class QueueRow extends Component {
|
||||||
|
|
||||||
onRemoveQueueItemPress = () => {
|
onRemoveQueueItemPress = () => {
|
||||||
this.setState({ isRemoveQueueItemModalOpen: true });
|
this.setState({ isRemoveQueueItemModalOpen: true });
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveQueueItemModalConfirmed = (blocklist) => {
|
onRemoveQueueItemModalConfirmed = (blocklist) => {
|
||||||
const {
|
const {
|
||||||
|
@ -52,25 +52,25 @@ class QueueRow extends Component {
|
||||||
onRemoveQueueItemPress(blocklist);
|
onRemoveQueueItemPress(blocklist);
|
||||||
|
|
||||||
this.setState({ isRemoveQueueItemModalOpen: false });
|
this.setState({ isRemoveQueueItemModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveQueueItemModalClose = () => {
|
onRemoveQueueItemModalClose = () => {
|
||||||
this.props.onQueueRowModalOpenOrClose(false);
|
this.props.onQueueRowModalOpenOrClose(false);
|
||||||
|
|
||||||
this.setState({ isRemoveQueueItemModalOpen: false });
|
this.setState({ isRemoveQueueItemModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
onInteractiveImportPress = () => {
|
onInteractiveImportPress = () => {
|
||||||
this.props.onQueueRowModalOpenOrClose(true);
|
this.props.onQueueRowModalOpenOrClose(true);
|
||||||
|
|
||||||
this.setState({ isInteractiveImportModalOpen: true });
|
this.setState({ isInteractiveImportModalOpen: true });
|
||||||
}
|
};
|
||||||
|
|
||||||
onInteractiveImportModalClose = () => {
|
onInteractiveImportModalClose = () => {
|
||||||
this.props.onQueueRowModalOpenOrClose(false);
|
this.props.onQueueRowModalOpenOrClose(false);
|
||||||
|
|
||||||
this.setState({ isInteractiveImportModalOpen: false });
|
this.setState({ isInteractiveImportModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -3,8 +3,8 @@ import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { grabQueueItem, removeQueueItem } from 'Store/Actions/queueActions';
|
import { grabQueueItem, removeQueueItem } from 'Store/Actions/queueActions';
|
||||||
import createSeriesSelector from 'Store/Selectors/createSeriesSelector';
|
|
||||||
import createEpisodeSelector from 'Store/Selectors/createEpisodeSelector';
|
import createEpisodeSelector from 'Store/Selectors/createEpisodeSelector';
|
||||||
|
import createSeriesSelector from 'Store/Selectors/createSeriesSelector';
|
||||||
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
||||||
import QueueRow from './QueueRow';
|
import QueueRow from './QueueRow';
|
||||||
|
|
||||||
|
@ -40,11 +40,11 @@ class QueueRowConnector extends Component {
|
||||||
|
|
||||||
onGrabPress = () => {
|
onGrabPress = () => {
|
||||||
this.props.grabQueueItem({ id: this.props.id });
|
this.props.grabQueueItem({ id: this.props.id });
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveQueueItemPress = (payload) => {
|
onRemoveQueueItemPress = (payload) => {
|
||||||
this.props.removeQueueItem({ id: this.props.id, ...payload });
|
this.props.removeQueueItem({ id: this.props.id, ...payload });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { icons, kinds, tooltipPositions } from 'Helpers/Props';
|
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
||||||
import Popover from 'Components/Tooltip/Popover';
|
import Popover from 'Components/Tooltip/Popover';
|
||||||
|
import { icons, kinds, tooltipPositions } from 'Helpers/Props';
|
||||||
import styles from './QueueStatusCell.css';
|
import styles from './QueueStatusCell.css';
|
||||||
|
|
||||||
function getDetailedPopoverBody(statusMessages) {
|
function getDetailedPopoverBody(statusMessages) {
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { inputTypes, kinds, sizes } from 'Helpers/Props';
|
import FormGroup from 'Components/Form/FormGroup';
|
||||||
|
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||||
|
import FormLabel from 'Components/Form/FormLabel';
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import Modal from 'Components/Modal/Modal';
|
import Modal from 'Components/Modal/Modal';
|
||||||
import FormGroup from 'Components/Form/FormGroup';
|
|
||||||
import FormLabel from 'Components/Form/FormLabel';
|
|
||||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
|
import { inputTypes, kinds, sizes } from 'Helpers/Props';
|
||||||
|
|
||||||
class RemoveQueueItemModal extends Component {
|
class RemoveQueueItemModal extends Component {
|
||||||
|
|
||||||
|
@ -33,30 +33,30 @@ class RemoveQueueItemModal extends Component {
|
||||||
remove: true,
|
remove: true,
|
||||||
blocklist: false
|
blocklist: false
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onRemoveChange = ({ value }) => {
|
onRemoveChange = ({ value }) => {
|
||||||
this.setState({ remove: value });
|
this.setState({ remove: value });
|
||||||
}
|
};
|
||||||
|
|
||||||
onBlocklistChange = ({ value }) => {
|
onBlocklistChange = ({ value }) => {
|
||||||
this.setState({ blocklist: value });
|
this.setState({ blocklist: value });
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveConfirmed = () => {
|
onRemoveConfirmed = () => {
|
||||||
const state = this.state;
|
const state = this.state;
|
||||||
|
|
||||||
this.resetState();
|
this.resetState();
|
||||||
this.props.onRemovePress(state);
|
this.props.onRemovePress(state);
|
||||||
}
|
};
|
||||||
|
|
||||||
onModalClose = () => {
|
onModalClose = () => {
|
||||||
this.resetState();
|
this.resetState();
|
||||||
this.props.onModalClose();
|
this.props.onModalClose();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { inputTypes, kinds, sizes } from 'Helpers/Props';
|
import FormGroup from 'Components/Form/FormGroup';
|
||||||
|
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||||
|
import FormLabel from 'Components/Form/FormLabel';
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import Modal from 'Components/Modal/Modal';
|
import Modal from 'Components/Modal/Modal';
|
||||||
import FormGroup from 'Components/Form/FormGroup';
|
|
||||||
import FormLabel from 'Components/Form/FormLabel';
|
|
||||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
|
import { inputTypes, kinds, sizes } from 'Helpers/Props';
|
||||||
import styles from './RemoveQueueItemsModal.css';
|
import styles from './RemoveQueueItemsModal.css';
|
||||||
|
|
||||||
class RemoveQueueItemsModal extends Component {
|
class RemoveQueueItemsModal extends Component {
|
||||||
|
@ -34,30 +34,30 @@ class RemoveQueueItemsModal extends Component {
|
||||||
remove: true,
|
remove: true,
|
||||||
blocklist: false
|
blocklist: false
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onRemoveChange = ({ value }) => {
|
onRemoveChange = ({ value }) => {
|
||||||
this.setState({ remove: value });
|
this.setState({ remove: value });
|
||||||
}
|
};
|
||||||
|
|
||||||
onBlocklistChange = ({ value }) => {
|
onBlocklistChange = ({ value }) => {
|
||||||
this.setState({ blocklist: value });
|
this.setState({ blocklist: value });
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveConfirmed = () => {
|
onRemoveConfirmed = () => {
|
||||||
const state = this.state;
|
const state = this.state;
|
||||||
|
|
||||||
this.resetState();
|
this.resetState();
|
||||||
this.props.onRemovePress(state);
|
this.props.onRemovePress(state);
|
||||||
}
|
};
|
||||||
|
|
||||||
onModalClose = () => {
|
onModalClose = () => {
|
||||||
this.resetState();
|
this.resetState();
|
||||||
this.props.onModalClose();
|
this.props.onModalClose();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -2,8 +2,8 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { fetchQueueStatus } from 'Store/Actions/queueActions';
|
|
||||||
import PageSidebarStatus from 'Components/Page/Sidebar/PageSidebarStatus';
|
import PageSidebarStatus from 'Components/Page/Sidebar/PageSidebarStatus';
|
||||||
|
import { fetchQueueStatus } from 'Store/Actions/queueActions';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
return createSelector(
|
return createSelector(
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
||||||
import formatTime from 'Utilities/Date/formatTime';
|
import formatTime from 'Utilities/Date/formatTime';
|
||||||
import formatTimeSpan from 'Utilities/Date/formatTimeSpan';
|
import formatTimeSpan from 'Utilities/Date/formatTimeSpan';
|
||||||
import getRelativeDate from 'Utilities/Date/getRelativeDate';
|
import getRelativeDate from 'Utilities/Date/getRelativeDate';
|
||||||
import formatBytes from 'Utilities/Number/formatBytes';
|
import formatBytes from 'Utilities/Number/formatBytes';
|
||||||
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
|
||||||
import styles from './TimeleftCell.css';
|
import styles from './TimeleftCell.css';
|
||||||
|
|
||||||
function TimeleftCell(props) {
|
function TimeleftCell(props) {
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import getErrorMessage from 'Utilities/Object/getErrorMessage';
|
import TextInput from 'Components/Form/TextInput';
|
||||||
import { icons, kinds } from 'Helpers/Props';
|
import Icon from 'Components/Icon';
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import Link from 'Components/Link/Link';
|
import Link from 'Components/Link/Link';
|
||||||
import Icon from 'Components/Icon';
|
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import TextInput from 'Components/Form/TextInput';
|
|
||||||
import PageContent from 'Components/Page/PageContent';
|
import PageContent from 'Components/Page/PageContent';
|
||||||
import PageContentBody from 'Components/Page/PageContentBody';
|
import PageContentBody from 'Components/Page/PageContentBody';
|
||||||
|
import { icons, kinds } from 'Helpers/Props';
|
||||||
|
import getErrorMessage from 'Utilities/Object/getErrorMessage';
|
||||||
import AddNewSeriesSearchResultConnector from './AddNewSeriesSearchResultConnector';
|
import AddNewSeriesSearchResultConnector from './AddNewSeriesSearchResultConnector';
|
||||||
import styles from './AddNewSeries.css';
|
import styles from './AddNewSeries.css';
|
||||||
|
|
||||||
|
@ -66,12 +66,12 @@ class AddNewSeries extends Component {
|
||||||
this.props.onClearSeriesLookup();
|
this.props.onClearSeriesLookup();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onClearSeriesLookupPress = () => {
|
onClearSeriesLookupPress = () => {
|
||||||
this.setState({ term: '' });
|
this.setState({ term: '' });
|
||||||
this.props.onClearSeriesLookup();
|
this.props.onClearSeriesLookup();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -2,9 +2,9 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import parseUrl from 'Utilities/String/parseUrl';
|
import { clearAddSeries, lookupSeries } from 'Store/Actions/addSeriesActions';
|
||||||
import { lookupSeries, clearAddSeries } from 'Store/Actions/addSeriesActions';
|
|
||||||
import { fetchRootFolders } from 'Store/Actions/rootFolderActions';
|
import { fetchRootFolders } from 'Store/Actions/rootFolderActions';
|
||||||
|
import parseUrl from 'Utilities/String/parseUrl';
|
||||||
import AddNewSeries from './AddNewSeries';
|
import AddNewSeries from './AddNewSeries';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
@ -68,11 +68,11 @@ class AddNewSeriesConnector extends Component {
|
||||||
this.props.lookupSeries({ term });
|
this.props.lookupSeries({ term });
|
||||||
}, 300);
|
}, 300);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
onClearSeriesLookup = () => {
|
onClearSeriesLookup = () => {
|
||||||
this.props.clearAddSeries();
|
this.props.clearAddSeries();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { icons, kinds, inputTypes, tooltipPositions } from 'Helpers/Props';
|
|
||||||
import Icon from 'Components/Icon';
|
|
||||||
import SpinnerButton from 'Components/Link/SpinnerButton';
|
|
||||||
import Form from 'Components/Form/Form';
|
|
||||||
import FormGroup from 'Components/Form/FormGroup';
|
|
||||||
import FormLabel from 'Components/Form/FormLabel';
|
|
||||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
|
||||||
import CheckInput from 'Components/Form/CheckInput';
|
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
|
||||||
import Popover from 'Components/Tooltip/Popover';
|
|
||||||
import SeriesPoster from 'Series/SeriesPoster';
|
|
||||||
import * as seriesTypes from 'Utilities/Series/seriesTypes';
|
|
||||||
import SeriesMonitoringOptionsPopoverContent from 'AddSeries/SeriesMonitoringOptionsPopoverContent';
|
import SeriesMonitoringOptionsPopoverContent from 'AddSeries/SeriesMonitoringOptionsPopoverContent';
|
||||||
import SeriesTypePopoverContent from 'AddSeries/SeriesTypePopoverContent';
|
import SeriesTypePopoverContent from 'AddSeries/SeriesTypePopoverContent';
|
||||||
|
import CheckInput from 'Components/Form/CheckInput';
|
||||||
|
import Form from 'Components/Form/Form';
|
||||||
|
import FormGroup from 'Components/Form/FormGroup';
|
||||||
|
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||||
|
import FormLabel from 'Components/Form/FormLabel';
|
||||||
|
import Icon from 'Components/Icon';
|
||||||
|
import SpinnerButton from 'Components/Link/SpinnerButton';
|
||||||
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
|
import Popover from 'Components/Tooltip/Popover';
|
||||||
|
import { icons, inputTypes, kinds, tooltipPositions } from 'Helpers/Props';
|
||||||
|
import SeriesPoster from 'Series/SeriesPoster';
|
||||||
|
import * as seriesTypes from 'Utilities/Series/seriesTypes';
|
||||||
import styles from './AddNewSeriesModalContent.css';
|
import styles from './AddNewSeriesModalContent.css';
|
||||||
|
|
||||||
class AddNewSeriesModalContent extends Component {
|
class AddNewSeriesModalContent extends Component {
|
||||||
|
@ -45,11 +45,11 @@ class AddNewSeriesModalContent extends Component {
|
||||||
|
|
||||||
onQualityProfileIdChange = ({ value }) => {
|
onQualityProfileIdChange = ({ value }) => {
|
||||||
this.props.onInputChange({ name: 'qualityProfileId', value: parseInt(value) });
|
this.props.onInputChange({ name: 'qualityProfileId', value: parseInt(value) });
|
||||||
}
|
};
|
||||||
|
|
||||||
onLanguageProfileIdChange = ({ value }) => {
|
onLanguageProfileIdChange = ({ value }) => {
|
||||||
this.props.onInputChange({ name: 'languageProfileId', value: parseInt(value) });
|
this.props.onInputChange({ name: 'languageProfileId', value: parseInt(value) });
|
||||||
}
|
};
|
||||||
|
|
||||||
onAddSeriesPress = () => {
|
onAddSeriesPress = () => {
|
||||||
const {
|
const {
|
||||||
|
@ -59,7 +59,7 @@ class AddNewSeriesModalContent extends Component {
|
||||||
this.props.onAddSeriesPress(
|
this.props.onAddSeriesPress(
|
||||||
seriesType
|
seriesType
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { setAddSeriesDefault, addSeries } from 'Store/Actions/addSeriesActions';
|
import { addSeries, setAddSeriesDefault } from 'Store/Actions/addSeriesActions';
|
||||||
import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector';
|
import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector';
|
||||||
import createSystemStatusSelector from 'Store/Selectors/createSystemStatusSelector';
|
import createSystemStatusSelector from 'Store/Selectors/createSystemStatusSelector';
|
||||||
import selectSettings from 'Store/Selectors/selectSettings';
|
import selectSettings from 'Store/Selectors/selectSettings';
|
||||||
|
@ -53,7 +53,7 @@ class AddNewSeriesModalContentConnector extends Component {
|
||||||
|
|
||||||
onInputChange = ({ name, value }) => {
|
onInputChange = ({ name, value }) => {
|
||||||
this.props.setAddSeriesDefault({ [name]: value });
|
this.props.setAddSeriesDefault({ [name]: value });
|
||||||
}
|
};
|
||||||
|
|
||||||
onAddSeriesPress = (seriesType) => {
|
onAddSeriesPress = (seriesType) => {
|
||||||
const {
|
const {
|
||||||
|
@ -80,7 +80,7 @@ class AddNewSeriesModalContentConnector extends Component {
|
||||||
searchForCutoffUnmetEpisodes: searchForCutoffUnmetEpisodes.value,
|
searchForCutoffUnmetEpisodes: searchForCutoffUnmetEpisodes.value,
|
||||||
tags: tags.value
|
tags: tags.value
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { icons, kinds, sizes } from 'Helpers/Props';
|
|
||||||
import HeartRating from 'Components/HeartRating';
|
import HeartRating from 'Components/HeartRating';
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import Label from 'Components/Label';
|
import Label from 'Components/Label';
|
||||||
import Link from 'Components/Link/Link';
|
import Link from 'Components/Link/Link';
|
||||||
|
import { icons, kinds, sizes } from 'Helpers/Props';
|
||||||
import SeriesPoster from 'Series/SeriesPoster';
|
import SeriesPoster from 'Series/SeriesPoster';
|
||||||
import AddNewSeriesModal from './AddNewSeriesModal';
|
import AddNewSeriesModal from './AddNewSeriesModal';
|
||||||
import styles from './AddNewSeriesSearchResult.css';
|
import styles from './AddNewSeriesSearchResult.css';
|
||||||
|
@ -33,15 +33,15 @@ class AddNewSeriesSearchResult extends Component {
|
||||||
|
|
||||||
onPress = () => {
|
onPress = () => {
|
||||||
this.setState({ isNewAddSeriesModalOpen: true });
|
this.setState({ isNewAddSeriesModalOpen: true });
|
||||||
}
|
};
|
||||||
|
|
||||||
onAddSeriesModalClose = () => {
|
onAddSeriesModalClose = () => {
|
||||||
this.setState({ isNewAddSeriesModalOpen: false });
|
this.setState({ isNewAddSeriesModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
onTVDBLinkPress = (event) => {
|
onTVDBLinkPress = (event) => {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import createExistingSeriesSelector from 'Store/Selectors/createExistingSeriesSelector';
|
|
||||||
import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector';
|
import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector';
|
||||||
|
import createExistingSeriesSelector from 'Store/Selectors/createExistingSeriesSelector';
|
||||||
import AddNewSeriesSearchResult from './AddNewSeriesSearchResult';
|
import AddNewSeriesSearchResult from './AddNewSeriesSearchResult';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import getSelectedIds from 'Utilities/Table/getSelectedIds';
|
|
||||||
import selectAll from 'Utilities/Table/selectAll';
|
|
||||||
import toggleSelected from 'Utilities/Table/toggleSelected';
|
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import PageContent from 'Components/Page/PageContent';
|
import PageContent from 'Components/Page/PageContent';
|
||||||
import PageContentBody from 'Components/Page/PageContentBody';
|
import PageContentBody from 'Components/Page/PageContentBody';
|
||||||
import ImportSeriesTableConnector from './ImportSeriesTableConnector';
|
import getSelectedIds from 'Utilities/Table/getSelectedIds';
|
||||||
|
import selectAll from 'Utilities/Table/selectAll';
|
||||||
|
import toggleSelected from 'Utilities/Table/toggleSelected';
|
||||||
import ImportSeriesFooterConnector from './ImportSeriesFooterConnector';
|
import ImportSeriesFooterConnector from './ImportSeriesFooterConnector';
|
||||||
|
import ImportSeriesTableConnector from './ImportSeriesTableConnector';
|
||||||
|
|
||||||
class ImportSeries extends Component {
|
class ImportSeries extends Component {
|
||||||
|
|
||||||
|
@ -30,25 +30,25 @@ class ImportSeries extends Component {
|
||||||
|
|
||||||
setScrollerRef = (ref) => {
|
setScrollerRef = (ref) => {
|
||||||
this.setState({ scroller: ref });
|
this.setState({ scroller: ref });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
getSelectedIds = () => {
|
getSelectedIds = () => {
|
||||||
return getSelectedIds(this.state.selectedState, { parseIds: false });
|
return getSelectedIds(this.state.selectedState, { parseIds: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
onSelectAllChange = ({ value }) => {
|
onSelectAllChange = ({ value }) => {
|
||||||
// Only select non-dupes
|
// Only select non-dupes
|
||||||
this.setState(selectAll(this.state.selectedState, value));
|
this.setState(selectAll(this.state.selectedState, value));
|
||||||
}
|
};
|
||||||
|
|
||||||
onSelectedChange = ({ id, value, shiftKey = false }) => {
|
onSelectedChange = ({ id, value, shiftKey = false }) => {
|
||||||
this.setState((state) => {
|
this.setState((state) => {
|
||||||
return toggleSelected(state, this.props.items, id, value, shiftKey);
|
return toggleSelected(state, this.props.items, id, value, shiftKey);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveSelectedStateItem = (id) => {
|
onRemoveSelectedStateItem = (id) => {
|
||||||
this.setState((state) => {
|
this.setState((state) => {
|
||||||
|
@ -60,19 +60,19 @@ class ImportSeries extends Component {
|
||||||
selectedState
|
selectedState
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onInputChange = ({ name, value }) => {
|
onInputChange = ({ name, value }) => {
|
||||||
this.props.onInputChange(this.getSelectedIds(), name, value);
|
this.props.onInputChange(this.getSelectedIds(), name, value);
|
||||||
}
|
};
|
||||||
|
|
||||||
onImportPress = () => {
|
onImportPress = () => {
|
||||||
this.props.onImportPress(this.getSelectedIds());
|
this.props.onImportPress(this.getSelectedIds());
|
||||||
}
|
};
|
||||||
|
|
||||||
onScroll = ({ scrollTop }) => {
|
onScroll = ({ scrollTop }) => {
|
||||||
this.setState({ scrollTop });
|
this.setState({ scrollTop });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -3,10 +3,10 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { setImportSeriesValue, importSeries, clearImportSeries } from 'Store/Actions/importSeriesActions';
|
|
||||||
import { fetchRootFolders } from 'Store/Actions/rootFolderActions';
|
|
||||||
import { setAddSeriesDefault } from 'Store/Actions/addSeriesActions';
|
|
||||||
import createRouteMatchShape from 'Helpers/Props/Shapes/createRouteMatchShape';
|
import createRouteMatchShape from 'Helpers/Props/Shapes/createRouteMatchShape';
|
||||||
|
import { setAddSeriesDefault } from 'Store/Actions/addSeriesActions';
|
||||||
|
import { clearImportSeries, importSeries, setImportSeriesValue } from 'Store/Actions/importSeriesActions';
|
||||||
|
import { fetchRootFolders } from 'Store/Actions/rootFolderActions';
|
||||||
import ImportSeries from './ImportSeries';
|
import ImportSeries from './ImportSeries';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
@ -127,11 +127,11 @@ class ImportSeriesConnector extends Component {
|
||||||
[name]: value
|
[name]: value
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onImportPress = (ids) => {
|
onImportPress = (ids) => {
|
||||||
this.props.dispatchImportSeries({ ids });
|
this.props.dispatchImportSeries({ ids });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { icons, inputTypes, kinds, tooltipPositions } from 'Helpers/Props';
|
import CheckInput from 'Components/Form/CheckInput';
|
||||||
|
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import SpinnerButton from 'Components/Link/SpinnerButton';
|
import SpinnerButton from 'Components/Link/SpinnerButton';
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import CheckInput from 'Components/Form/CheckInput';
|
|
||||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
|
||||||
import PageContentFooter from 'Components/Page/PageContentFooter';
|
import PageContentFooter from 'Components/Page/PageContentFooter';
|
||||||
import Popover from 'Components/Tooltip/Popover';
|
import Popover from 'Components/Tooltip/Popover';
|
||||||
|
import { icons, inputTypes, kinds, tooltipPositions } from 'Helpers/Props';
|
||||||
import styles from './ImportSeriesFooter.css';
|
import styles from './ImportSeriesFooter.css';
|
||||||
|
|
||||||
const MIXED = 'mixed';
|
const MIXED = 'mixed';
|
||||||
|
@ -104,7 +104,7 @@ class ImportSeriesFooter extends Component {
|
||||||
onInputChange = ({ name, value }) => {
|
onInputChange = ({ name, value }) => {
|
||||||
this.setState({ [name]: value });
|
this.setState({ [name]: value });
|
||||||
this.props.onInputChange({ name, value });
|
this.props.onInputChange({ name, value });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { lookupUnsearchedSeries, cancelLookupSeries } from 'Store/Actions/importSeriesActions';
|
import { cancelLookupSeries, lookupUnsearchedSeries } from 'Store/Actions/importSeriesActions';
|
||||||
import ImportSeriesFooter from './ImportSeriesFooter';
|
import ImportSeriesFooter from './ImportSeriesFooter';
|
||||||
|
|
||||||
function isMixed(items, selectedIds, defaultValue, key) {
|
function isMixed(items, selectedIds, defaultValue, key) {
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { icons, tooltipPositions } from 'Helpers/Props';
|
import SeriesMonitoringOptionsPopoverContent from 'AddSeries/SeriesMonitoringOptionsPopoverContent';
|
||||||
|
import SeriesTypePopoverContent from 'AddSeries/SeriesTypePopoverContent';
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import Popover from 'Components/Tooltip/Popover';
|
|
||||||
import VirtualTableHeader from 'Components/Table/VirtualTableHeader';
|
import VirtualTableHeader from 'Components/Table/VirtualTableHeader';
|
||||||
import VirtualTableHeaderCell from 'Components/Table/VirtualTableHeaderCell';
|
import VirtualTableHeaderCell from 'Components/Table/VirtualTableHeaderCell';
|
||||||
import VirtualTableSelectAllHeaderCell from 'Components/Table/VirtualTableSelectAllHeaderCell';
|
import VirtualTableSelectAllHeaderCell from 'Components/Table/VirtualTableSelectAllHeaderCell';
|
||||||
import SeriesMonitoringOptionsPopoverContent from 'AddSeries/SeriesMonitoringOptionsPopoverContent';
|
import Popover from 'Components/Tooltip/Popover';
|
||||||
import SeriesTypePopoverContent from 'AddSeries/SeriesTypePopoverContent';
|
import { icons, tooltipPositions } from 'Helpers/Props';
|
||||||
import styles from './ImportSeriesHeader.css';
|
import styles from './ImportSeriesHeader.css';
|
||||||
|
|
||||||
function ImportSeriesHeader(props) {
|
function ImportSeriesHeader(props) {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { inputTypes } from 'Helpers/Props';
|
|
||||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||||
import VirtualTableRowCell from 'Components/Table/Cells/VirtualTableRowCell';
|
import VirtualTableRowCell from 'Components/Table/Cells/VirtualTableRowCell';
|
||||||
import VirtualTableSelectCell from 'Components/Table/Cells/VirtualTableSelectCell';
|
import VirtualTableSelectCell from 'Components/Table/Cells/VirtualTableSelectCell';
|
||||||
|
import { inputTypes } from 'Helpers/Props';
|
||||||
import ImportSeriesSelectSeriesConnector from './SelectSeries/ImportSeriesSelectSeriesConnector';
|
import ImportSeriesSelectSeriesConnector from './SelectSeries/ImportSeriesSelectSeriesConnector';
|
||||||
import styles from './ImportSeriesRow.css';
|
import styles from './ImportSeriesRow.css';
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ class ImportSeriesRowConnector extends Component {
|
||||||
id: this.props.id,
|
id: this.props.id,
|
||||||
[name]: value
|
[name]: value
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -127,7 +127,7 @@ class ImportSeriesTable extends Component {
|
||||||
/>
|
/>
|
||||||
</VirtualTableRow>
|
</VirtualTableRow>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { useCallback } from 'react';
|
import React, { useCallback } from 'react';
|
||||||
import { icons } from 'Helpers/Props';
|
|
||||||
import Link from 'Components/Link/Link';
|
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
|
import Link from 'Components/Link/Link';
|
||||||
|
import { icons } from 'Helpers/Props';
|
||||||
import ImportSeriesTitle from './ImportSeriesTitle';
|
import ImportSeriesTitle from './ImportSeriesTitle';
|
||||||
import styles from './ImportSeriesSearchResult.css';
|
import styles from './ImportSeriesSearchResult.css';
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { Manager, Popper, Reference } from 'react-popper';
|
import { Manager, Popper, Reference } from 'react-popper';
|
||||||
import getUniqueElememtId from 'Utilities/getUniqueElementId';
|
|
||||||
import { icons, kinds } from 'Helpers/Props';
|
|
||||||
import Icon from 'Components/Icon';
|
|
||||||
import Portal from 'Components/Portal';
|
|
||||||
import FormInputButton from 'Components/Form/FormInputButton';
|
import FormInputButton from 'Components/Form/FormInputButton';
|
||||||
|
import TextInput from 'Components/Form/TextInput';
|
||||||
|
import Icon from 'Components/Icon';
|
||||||
import Link from 'Components/Link/Link';
|
import Link from 'Components/Link/Link';
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import TextInput from 'Components/Form/TextInput';
|
import Portal from 'Components/Portal';
|
||||||
|
import { icons, kinds } from 'Helpers/Props';
|
||||||
|
import getUniqueElememtId from 'Utilities/getUniqueElementId';
|
||||||
import ImportSeriesSearchResultConnector from './ImportSeriesSearchResultConnector';
|
import ImportSeriesSearchResultConnector from './ImportSeriesSearchResultConnector';
|
||||||
import ImportSeriesTitle from './ImportSeriesTitle';
|
import ImportSeriesTitle from './ImportSeriesTitle';
|
||||||
import styles from './ImportSeriesSelectSeries.css';
|
import styles from './ImportSeriesSelectSeries.css';
|
||||||
|
@ -68,7 +68,7 @@ class ImportSeriesSelectSeries extends Component {
|
||||||
this.setState({ isOpen: false });
|
this.setState({ isOpen: false });
|
||||||
this._removeListener();
|
this._removeListener();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
onPress = () => {
|
onPress = () => {
|
||||||
if (this.state.isOpen) {
|
if (this.state.isOpen) {
|
||||||
|
@ -78,7 +78,7 @@ class ImportSeriesSelectSeries extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({ isOpen: !this.state.isOpen });
|
this.setState({ isOpen: !this.state.isOpen });
|
||||||
}
|
};
|
||||||
|
|
||||||
onSearchInputChange = ({ value }) => {
|
onSearchInputChange = ({ value }) => {
|
||||||
if (this._seriesLookupTimeout) {
|
if (this._seriesLookupTimeout) {
|
||||||
|
@ -90,17 +90,17 @@ class ImportSeriesSelectSeries extends Component {
|
||||||
this.props.onSearchInputChange(value);
|
this.props.onSearchInputChange(value);
|
||||||
}, 200);
|
}, 200);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onRefreshPress = () => {
|
onRefreshPress = () => {
|
||||||
this.props.onSearchInputChange(this.state.term);
|
this.props.onSearchInputChange(this.state.term);
|
||||||
}
|
};
|
||||||
|
|
||||||
onSeriesSelect = (tvdbId) => {
|
onSeriesSelect = (tvdbId) => {
|
||||||
this.setState({ isOpen: false });
|
this.setState({ isOpen: false });
|
||||||
|
|
||||||
this.props.onSeriesSelect(tvdbId);
|
this.props.onSeriesSelect(tvdbId);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -36,7 +36,7 @@ class ImportSeriesSelectSeriesConnector extends Component {
|
||||||
term,
|
term,
|
||||||
topOfQueue: true
|
topOfQueue: true
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onSeriesSelect = (tvdbId) => {
|
onSeriesSelect = (tvdbId) => {
|
||||||
const {
|
const {
|
||||||
|
@ -58,7 +58,7 @@ class ImportSeriesSelectSeriesConnector extends Component {
|
||||||
value: selectedSeries.seriesType
|
value: selectedSeries.seriesType
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { kinds } from 'Helpers/Props';
|
|
||||||
import Label from 'Components/Label';
|
import Label from 'Components/Label';
|
||||||
|
import { kinds } from 'Helpers/Props';
|
||||||
import styles from './ImportSeriesTitle.css';
|
import styles from './ImportSeriesTitle.css';
|
||||||
|
|
||||||
function ImportSeriesTitle(props) {
|
function ImportSeriesTitle(props) {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { Route } from 'react-router-dom';
|
import { Route } from 'react-router-dom';
|
||||||
import Switch from 'Components/Router/Switch';
|
|
||||||
import ImportSeriesSelectFolderConnector from 'AddSeries/ImportSeries/SelectFolder/ImportSeriesSelectFolderConnector';
|
|
||||||
import ImportSeriesConnector from 'AddSeries/ImportSeries/Import/ImportSeriesConnector';
|
import ImportSeriesConnector from 'AddSeries/ImportSeries/Import/ImportSeriesConnector';
|
||||||
|
import ImportSeriesSelectFolderConnector from 'AddSeries/ImportSeries/SelectFolder/ImportSeriesSelectFolderConnector';
|
||||||
|
import Switch from 'Components/Router/Switch';
|
||||||
|
|
||||||
class ImportSeries extends Component {
|
class ImportSeries extends Component {
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { icons, kinds, sizes } from 'Helpers/Props';
|
|
||||||
import Button from 'Components/Link/Button';
|
|
||||||
import Alert from 'Components/Alert';
|
import Alert from 'Components/Alert';
|
||||||
import Icon from 'Components/Icon';
|
|
||||||
import FieldSet from 'Components/FieldSet';
|
import FieldSet from 'Components/FieldSet';
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
|
||||||
import FileBrowserModal from 'Components/FileBrowser/FileBrowserModal';
|
import FileBrowserModal from 'Components/FileBrowser/FileBrowserModal';
|
||||||
|
import Icon from 'Components/Icon';
|
||||||
|
import Button from 'Components/Link/Button';
|
||||||
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import PageContent from 'Components/Page/PageContent';
|
import PageContent from 'Components/Page/PageContent';
|
||||||
import PageContentBody from 'Components/Page/PageContentBody';
|
import PageContentBody from 'Components/Page/PageContentBody';
|
||||||
|
import { icons, kinds, sizes } from 'Helpers/Props';
|
||||||
import RootFolders from 'RootFolder/RootFolders';
|
import RootFolders from 'RootFolder/RootFolders';
|
||||||
import styles from './ImportSeriesSelectFolder.css';
|
import styles from './ImportSeriesSelectFolder.css';
|
||||||
|
|
||||||
|
@ -30,15 +30,15 @@ class ImportSeriesSelectFolder extends Component {
|
||||||
|
|
||||||
onAddNewRootFolderPress = () => {
|
onAddNewRootFolderPress = () => {
|
||||||
this.setState({ isAddNewRootFolderModalOpen: true });
|
this.setState({ isAddNewRootFolderModalOpen: true });
|
||||||
}
|
};
|
||||||
|
|
||||||
onNewRootFolderSelect = ({ value }) => {
|
onNewRootFolderSelect = ({ value }) => {
|
||||||
this.props.onNewRootFolderSelect(value);
|
this.props.onNewRootFolderSelect(value);
|
||||||
}
|
};
|
||||||
|
|
||||||
onAddRootFolderModalClose = () => {
|
onAddRootFolderModalClose = () => {
|
||||||
this.setState({ isAddNewRootFolderModalOpen: false });
|
this.setState({ isAddNewRootFolderModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
|
import { push } from 'connected-react-router';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { push } from 'connected-react-router';
|
import { addRootFolder, fetchRootFolders } from 'Store/Actions/rootFolderActions';
|
||||||
import createSystemStatusSelector from 'Store/Selectors/createSystemStatusSelector';
|
import createSystemStatusSelector from 'Store/Selectors/createSystemStatusSelector';
|
||||||
import { fetchRootFolders, addRootFolder } from 'Store/Actions/rootFolderActions';
|
|
||||||
import ImportSeriesSelectFolder from './ImportSeriesSelectFolder';
|
import ImportSeriesSelectFolder from './ImportSeriesSelectFolder';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
@ -57,7 +57,7 @@ class ImportSeriesSelectFolderConnector extends Component {
|
||||||
|
|
||||||
onNewRootFolderSelect = (path) => {
|
onNewRootFolderSelect = (path) => {
|
||||||
this.props.addRootFolder({ path });
|
this.props.addRootFolder({ path });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { ConnectedRouter } from 'connected-react-router';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import DocumentTitle from 'react-document-title';
|
import DocumentTitle from 'react-document-title';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { ConnectedRouter } from 'connected-react-router';
|
|
||||||
import PageConnector from 'Components/Page/PageConnector';
|
import PageConnector from 'Components/Page/PageConnector';
|
||||||
import ApplyTheme from './ApplyTheme';
|
import ApplyTheme from './ApplyTheme';
|
||||||
import AppRoutes from './AppRoutes';
|
import AppRoutes from './AppRoutes';
|
||||||
|
|
|
@ -1,39 +1,39 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Route, Redirect } from 'react-router-dom';
|
import { Redirect, Route } from 'react-router-dom';
|
||||||
import getPathWithUrlBase from 'Utilities/getPathWithUrlBase';
|
import BlocklistConnector from 'Activity/Blocklist/BlocklistConnector';
|
||||||
import NotFound from 'Components/NotFound';
|
|
||||||
import Switch from 'Components/Router/Switch';
|
|
||||||
import SeriesIndexConnector from 'Series/Index/SeriesIndexConnector';
|
|
||||||
import AddNewSeriesConnector from 'AddSeries/AddNewSeries/AddNewSeriesConnector';
|
|
||||||
import ImportSeries from 'AddSeries/ImportSeries/ImportSeries';
|
|
||||||
import SeriesEditorConnector from 'Series/Editor/SeriesEditorConnector';
|
|
||||||
import SeasonPassConnector from 'SeasonPass/SeasonPassConnector';
|
|
||||||
import SeriesDetailsPageConnector from 'Series/Details/SeriesDetailsPageConnector';
|
|
||||||
import CalendarPageConnector from 'Calendar/CalendarPageConnector';
|
|
||||||
import HistoryConnector from 'Activity/History/HistoryConnector';
|
import HistoryConnector from 'Activity/History/HistoryConnector';
|
||||||
import QueueConnector from 'Activity/Queue/QueueConnector';
|
import QueueConnector from 'Activity/Queue/QueueConnector';
|
||||||
import BlocklistConnector from 'Activity/Blocklist/BlocklistConnector';
|
import AddNewSeriesConnector from 'AddSeries/AddNewSeries/AddNewSeriesConnector';
|
||||||
import MissingConnector from 'Wanted/Missing/MissingConnector';
|
import ImportSeries from 'AddSeries/ImportSeries/ImportSeries';
|
||||||
import CutoffUnmetConnector from 'Wanted/CutoffUnmet/CutoffUnmetConnector';
|
import CalendarPageConnector from 'Calendar/CalendarPageConnector';
|
||||||
import Settings from 'Settings/Settings';
|
import NotFound from 'Components/NotFound';
|
||||||
|
import Switch from 'Components/Router/Switch';
|
||||||
|
import SeasonPassConnector from 'SeasonPass/SeasonPassConnector';
|
||||||
|
import SeriesDetailsPageConnector from 'Series/Details/SeriesDetailsPageConnector';
|
||||||
|
import SeriesEditorConnector from 'Series/Editor/SeriesEditorConnector';
|
||||||
|
import SeriesIndexConnector from 'Series/Index/SeriesIndexConnector';
|
||||||
|
import DownloadClientSettingsConnector from 'Settings/DownloadClients/DownloadClientSettingsConnector';
|
||||||
|
import GeneralSettingsConnector from 'Settings/General/GeneralSettingsConnector';
|
||||||
|
import ImportListSettingsConnector from 'Settings/ImportLists/ImportListSettingsConnector';
|
||||||
|
import IndexerSettingsConnector from 'Settings/Indexers/IndexerSettingsConnector';
|
||||||
import MediaManagementConnector from 'Settings/MediaManagement/MediaManagementConnector';
|
import MediaManagementConnector from 'Settings/MediaManagement/MediaManagementConnector';
|
||||||
|
import MetadataSettings from 'Settings/Metadata/MetadataSettings';
|
||||||
|
import NotificationSettings from 'Settings/Notifications/NotificationSettings';
|
||||||
import Profiles from 'Settings/Profiles/Profiles';
|
import Profiles from 'Settings/Profiles/Profiles';
|
||||||
import QualityConnector from 'Settings/Quality/QualityConnector';
|
import QualityConnector from 'Settings/Quality/QualityConnector';
|
||||||
import IndexerSettingsConnector from 'Settings/Indexers/IndexerSettingsConnector';
|
import Settings from 'Settings/Settings';
|
||||||
import ImportListSettingsConnector from 'Settings/ImportLists/ImportListSettingsConnector';
|
|
||||||
import DownloadClientSettingsConnector from 'Settings/DownloadClients/DownloadClientSettingsConnector';
|
|
||||||
import NotificationSettings from 'Settings/Notifications/NotificationSettings';
|
|
||||||
import MetadataSettings from 'Settings/Metadata/MetadataSettings';
|
|
||||||
import TagSettings from 'Settings/Tags/TagSettings';
|
import TagSettings from 'Settings/Tags/TagSettings';
|
||||||
import GeneralSettingsConnector from 'Settings/General/GeneralSettingsConnector';
|
|
||||||
import UISettingsConnector from 'Settings/UI/UISettingsConnector';
|
import UISettingsConnector from 'Settings/UI/UISettingsConnector';
|
||||||
import Status from 'System/Status/Status';
|
|
||||||
import Tasks from 'System/Tasks/Tasks';
|
|
||||||
import BackupsConnector from 'System/Backup/BackupsConnector';
|
import BackupsConnector from 'System/Backup/BackupsConnector';
|
||||||
import UpdatesConnector from 'System/Updates/UpdatesConnector';
|
|
||||||
import LogsTableConnector from 'System/Events/LogsTableConnector';
|
import LogsTableConnector from 'System/Events/LogsTableConnector';
|
||||||
import Logs from 'System/Logs/Logs';
|
import Logs from 'System/Logs/Logs';
|
||||||
|
import Status from 'System/Status/Status';
|
||||||
|
import Tasks from 'System/Tasks/Tasks';
|
||||||
|
import UpdatesConnector from 'System/Updates/UpdatesConnector';
|
||||||
|
import getPathWithUrlBase from 'Utilities/getPathWithUrlBase';
|
||||||
|
import CutoffUnmetConnector from 'Wanted/CutoffUnmet/CutoffUnmetConnector';
|
||||||
|
import MissingConnector from 'Wanted/Missing/MissingConnector';
|
||||||
|
|
||||||
function AppRoutes(props) {
|
function AppRoutes(props) {
|
||||||
const {
|
const {
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { kinds } from 'Helpers/Props';
|
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
|
import { kinds } from 'Helpers/Props';
|
||||||
import UpdateChanges from 'System/Updates/UpdateChanges';
|
import UpdateChanges from 'System/Updates/UpdateChanges';
|
||||||
import styles from './AppUpdatedModalContent.css';
|
import styles from './AppUpdatedModalContent.css';
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { kinds } from 'Helpers/Props';
|
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import Modal from 'Components/Modal/Modal';
|
import Modal from 'Components/Modal/Modal';
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
|
import { kinds } from 'Helpers/Props';
|
||||||
import styles from './ConnectionLostModal.css';
|
import styles from './ConnectionLostModal.css';
|
||||||
|
|
||||||
function ConnectionLostModal(props) {
|
function ConnectionLostModal(props) {
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import classNames from 'classnames';
|
import CalendarEventQueueDetails from 'Calendar/Events/CalendarEventQueueDetails';
|
||||||
import formatTime from 'Utilities/Date/formatTime';
|
|
||||||
import padNumber from 'Utilities/Number/padNumber';
|
|
||||||
import { icons, kinds } from 'Helpers/Props';
|
|
||||||
import getStatusStyle from 'Calendar/getStatusStyle';
|
import getStatusStyle from 'Calendar/getStatusStyle';
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import Link from 'Components/Link/Link';
|
import Link from 'Components/Link/Link';
|
||||||
import episodeEntities from 'Episode/episodeEntities';
|
|
||||||
import EpisodeDetailsModal from 'Episode/EpisodeDetailsModal';
|
import EpisodeDetailsModal from 'Episode/EpisodeDetailsModal';
|
||||||
import CalendarEventQueueDetails from 'Calendar/Events/CalendarEventQueueDetails';
|
import episodeEntities from 'Episode/episodeEntities';
|
||||||
|
import { icons, kinds } from 'Helpers/Props';
|
||||||
|
import formatTime from 'Utilities/Date/formatTime';
|
||||||
|
import padNumber from 'Utilities/Number/padNumber';
|
||||||
import styles from './AgendaEvent.css';
|
import styles from './AgendaEvent.css';
|
||||||
|
|
||||||
class AgendaEvent extends Component {
|
class AgendaEvent extends Component {
|
||||||
|
@ -30,11 +30,11 @@ class AgendaEvent extends Component {
|
||||||
|
|
||||||
onPress = () => {
|
onPress = () => {
|
||||||
this.setState({ isDetailsModalOpen: true });
|
this.setState({ isDetailsModalOpen: true });
|
||||||
}
|
};
|
||||||
|
|
||||||
onDetailsModalClose = () => {
|
onDetailsModalClose = () => {
|
||||||
this.setState({ isDetailsModalOpen: false });
|
this.setState({ isDetailsModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import createEpisodeFileSelector from 'Store/Selectors/createEpisodeFileSelector';
|
import createEpisodeFileSelector from 'Store/Selectors/createEpisodeFileSelector';
|
||||||
import createSeriesSelector from 'Store/Selectors/createSeriesSelector';
|
|
||||||
import createQueueItemSelector from 'Store/Selectors/createQueueItemSelector';
|
import createQueueItemSelector from 'Store/Selectors/createQueueItemSelector';
|
||||||
|
import createSeriesSelector from 'Store/Selectors/createSeriesSelector';
|
||||||
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
||||||
import AgendaEvent from './AgendaEvent';
|
import AgendaEvent from './AgendaEvent';
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import * as calendarViews from './calendarViews';
|
|
||||||
import CalendarHeaderConnector from './Header/CalendarHeaderConnector';
|
|
||||||
import DaysOfWeekConnector from './Day/DaysOfWeekConnector';
|
|
||||||
import CalendarDaysConnector from './Day/CalendarDaysConnector';
|
|
||||||
import AgendaConnector from './Agenda/AgendaConnector';
|
import AgendaConnector from './Agenda/AgendaConnector';
|
||||||
|
import * as calendarViews from './calendarViews';
|
||||||
|
import CalendarDaysConnector from './Day/CalendarDaysConnector';
|
||||||
|
import DaysOfWeekConnector from './Day/DaysOfWeekConnector';
|
||||||
|
import CalendarHeaderConnector from './Header/CalendarHeaderConnector';
|
||||||
import styles from './Calendar.css';
|
import styles from './Calendar.css';
|
||||||
|
|
||||||
class Calendar extends Component {
|
class Calendar extends Component {
|
||||||
|
|
|
@ -2,14 +2,14 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
|
import * as commandNames from 'Commands/commandNames';
|
||||||
|
import * as calendarActions from 'Store/Actions/calendarActions';
|
||||||
|
import { clearEpisodeFiles, fetchEpisodeFiles } from 'Store/Actions/episodeFileActions';
|
||||||
|
import { clearQueueDetails, fetchQueueDetails } from 'Store/Actions/queueActions';
|
||||||
|
import createCommandExecutingSelector from 'Store/Selectors/createCommandExecutingSelector';
|
||||||
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
||||||
import selectUniqueIds from 'Utilities/Object/selectUniqueIds';
|
import selectUniqueIds from 'Utilities/Object/selectUniqueIds';
|
||||||
import * as calendarActions from 'Store/Actions/calendarActions';
|
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
|
||||||
import { fetchEpisodeFiles, clearEpisodeFiles } from 'Store/Actions/episodeFileActions';
|
|
||||||
import { fetchQueueDetails, clearQueueDetails } from 'Store/Actions/queueActions';
|
|
||||||
import createCommandExecutingSelector from 'Store/Selectors/createCommandExecutingSelector';
|
|
||||||
import * as commandNames from 'Commands/commandNames';
|
|
||||||
import Calendar from './Calendar';
|
import Calendar from './Calendar';
|
||||||
|
|
||||||
const UPDATE_DELAY = 3600000; // 1 hour
|
const UPDATE_DELAY = 3600000; // 1 hour
|
||||||
|
@ -120,43 +120,43 @@ class CalendarConnector extends Component {
|
||||||
|
|
||||||
this.props.fetchQueueDetails({ time, view });
|
this.props.fetchQueueDetails({ time, view });
|
||||||
this.props.fetchCalendar({ time, view });
|
this.props.fetchCalendar({ time, view });
|
||||||
}
|
};
|
||||||
|
|
||||||
scheduleUpdate = () => {
|
scheduleUpdate = () => {
|
||||||
this.clearUpdateTimeout();
|
this.clearUpdateTimeout();
|
||||||
|
|
||||||
this.updateTimeoutId = setTimeout(this.updateCalendar, UPDATE_DELAY);
|
this.updateTimeoutId = setTimeout(this.updateCalendar, UPDATE_DELAY);
|
||||||
}
|
};
|
||||||
|
|
||||||
clearUpdateTimeout = () => {
|
clearUpdateTimeout = () => {
|
||||||
if (this.updateTimeoutId) {
|
if (this.updateTimeoutId) {
|
||||||
clearTimeout(this.updateTimeoutId);
|
clearTimeout(this.updateTimeoutId);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
updateCalendar = () => {
|
updateCalendar = () => {
|
||||||
this.props.gotoCalendarToday();
|
this.props.gotoCalendarToday();
|
||||||
this.scheduleUpdate();
|
this.scheduleUpdate();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onCalendarViewChange = (view) => {
|
onCalendarViewChange = (view) => {
|
||||||
this.props.setCalendarView({ view });
|
this.props.setCalendarView({ view });
|
||||||
}
|
};
|
||||||
|
|
||||||
onTodayPress = () => {
|
onTodayPress = () => {
|
||||||
this.props.gotoCalendarToday();
|
this.props.gotoCalendarToday();
|
||||||
}
|
};
|
||||||
|
|
||||||
onPreviousPress = () => {
|
onPreviousPress = () => {
|
||||||
this.props.gotoCalendarPreviousRange();
|
this.props.gotoCalendarPreviousRange();
|
||||||
}
|
};
|
||||||
|
|
||||||
onNextPress = () => {
|
onNextPress = () => {
|
||||||
this.props.gotoCalendarNextRange();
|
this.props.gotoCalendarNextRange();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { align, icons } from 'Helpers/Props';
|
|
||||||
import PageContent from 'Components/Page/PageContent';
|
|
||||||
import Measure from 'Components/Measure';
|
import Measure from 'Components/Measure';
|
||||||
|
import FilterMenu from 'Components/Menu/FilterMenu';
|
||||||
|
import PageContent from 'Components/Page/PageContent';
|
||||||
import PageContentBody from 'Components/Page/PageContentBody';
|
import PageContentBody from 'Components/Page/PageContentBody';
|
||||||
import PageToolbar from 'Components/Page/Toolbar/PageToolbar';
|
import PageToolbar from 'Components/Page/Toolbar/PageToolbar';
|
||||||
|
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
|
||||||
import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
|
import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
|
||||||
import PageToolbarSeparator from 'Components/Page/Toolbar/PageToolbarSeparator';
|
import PageToolbarSeparator from 'Components/Page/Toolbar/PageToolbarSeparator';
|
||||||
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
|
import { align, icons } from 'Helpers/Props';
|
||||||
import FilterMenu from 'Components/Menu/FilterMenu';
|
|
||||||
import NoSeries from 'Series/NoSeries';
|
import NoSeries from 'Series/NoSeries';
|
||||||
import CalendarLinkModal from './iCal/CalendarLinkModal';
|
|
||||||
import CalendarOptionsModal from './Options/CalendarOptionsModal';
|
|
||||||
import LegendConnector from './Legend/LegendConnector';
|
|
||||||
import CalendarConnector from './CalendarConnector';
|
import CalendarConnector from './CalendarConnector';
|
||||||
|
import CalendarLinkModal from './iCal/CalendarLinkModal';
|
||||||
|
import LegendConnector from './Legend/LegendConnector';
|
||||||
|
import CalendarOptionsModal from './Options/CalendarOptionsModal';
|
||||||
import styles from './CalendarPage.css';
|
import styles from './CalendarPage.css';
|
||||||
|
|
||||||
const MINIMUM_DAY_WIDTH = 120;
|
const MINIMUM_DAY_WIDTH = 120;
|
||||||
|
@ -41,23 +41,23 @@ class CalendarPage extends Component {
|
||||||
const days = Math.max(3, Math.min(7, Math.floor(width / MINIMUM_DAY_WIDTH)));
|
const days = Math.max(3, Math.min(7, Math.floor(width / MINIMUM_DAY_WIDTH)));
|
||||||
|
|
||||||
this.props.onDaysCountChange(days);
|
this.props.onDaysCountChange(days);
|
||||||
}
|
};
|
||||||
|
|
||||||
onGetCalendarLinkPress = () => {
|
onGetCalendarLinkPress = () => {
|
||||||
this.setState({ isCalendarLinkModalOpen: true });
|
this.setState({ isCalendarLinkModalOpen: true });
|
||||||
}
|
};
|
||||||
|
|
||||||
onGetCalendarLinkModalClose = () => {
|
onGetCalendarLinkModalClose = () => {
|
||||||
this.setState({ isCalendarLinkModalOpen: false });
|
this.setState({ isCalendarLinkModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
onOptionsPress = () => {
|
onOptionsPress = () => {
|
||||||
this.setState({ isOptionsModalOpen: true });
|
this.setState({ isOptionsModalOpen: true });
|
||||||
}
|
};
|
||||||
|
|
||||||
onOptionsModalClose = () => {
|
onOptionsModalClose = () => {
|
||||||
this.setState({ isOptionsModalOpen: false });
|
this.setState({ isOptionsModalOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
onSearchMissingPress = () => {
|
onSearchMissingPress = () => {
|
||||||
const {
|
const {
|
||||||
|
@ -66,7 +66,7 @@ class CalendarPage extends Component {
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
onSearchMissingPress(missingEpisodeIds);
|
onSearchMissingPress(missingEpisodeIds);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
|
import moment from 'moment';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import moment from 'moment';
|
|
||||||
import { isCommandExecuting } from 'Utilities/Command';
|
|
||||||
import isBefore from 'Utilities/Date/isBefore';
|
|
||||||
import * as commandNames from 'Commands/commandNames';
|
import * as commandNames from 'Commands/commandNames';
|
||||||
import withCurrentPage from 'Components/withCurrentPage';
|
import withCurrentPage from 'Components/withCurrentPage';
|
||||||
import { executeCommand } from 'Store/Actions/commandActions';
|
|
||||||
import { searchMissing, setCalendarDaysCount, setCalendarFilter } from 'Store/Actions/calendarActions';
|
import { searchMissing, setCalendarDaysCount, setCalendarFilter } from 'Store/Actions/calendarActions';
|
||||||
|
import { executeCommand } from 'Store/Actions/commandActions';
|
||||||
|
import createCommandExecutingSelector from 'Store/Selectors/createCommandExecutingSelector';
|
||||||
|
import createCommandsSelector from 'Store/Selectors/createCommandsSelector';
|
||||||
import createSeriesCountSelector from 'Store/Selectors/createSeriesCountSelector';
|
import createSeriesCountSelector from 'Store/Selectors/createSeriesCountSelector';
|
||||||
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
||||||
import createCommandsSelector from 'Store/Selectors/createCommandsSelector';
|
import { isCommandExecuting } from 'Utilities/Command';
|
||||||
import createCommandExecutingSelector from 'Store/Selectors/createCommandExecutingSelector';
|
import isBefore from 'Utilities/Date/isBefore';
|
||||||
import CalendarPage from './CalendarPage';
|
import CalendarPage from './CalendarPage';
|
||||||
|
|
||||||
function createMissingEpisodeIdsSelector() {
|
function createMissingEpisodeIdsSelector() {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import classNames from 'classnames';
|
|
||||||
import * as calendarViews from 'Calendar/calendarViews';
|
import * as calendarViews from 'Calendar/calendarViews';
|
||||||
import CalendarEventConnector from 'Calendar/Events/CalendarEventConnector';
|
import CalendarEventConnector from 'Calendar/Events/CalendarEventConnector';
|
||||||
import CalendarEventGroupConnector from 'Calendar/Events/CalendarEventGroupConnector';
|
import CalendarEventGroupConnector from 'Calendar/Events/CalendarEventGroupConnector';
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import classNames from 'classnames';
|
|
||||||
import isToday from 'Utilities/Date/isToday';
|
|
||||||
import * as calendarViews from 'Calendar/calendarViews';
|
import * as calendarViews from 'Calendar/calendarViews';
|
||||||
|
import isToday from 'Utilities/Date/isToday';
|
||||||
import CalendarDayConnector from './CalendarDayConnector';
|
import CalendarDayConnector from './CalendarDayConnector';
|
||||||
import styles from './CalendarDays.css';
|
import styles from './CalendarDays.css';
|
||||||
|
|
||||||
|
@ -60,20 +60,20 @@ class CalendarDays extends Component {
|
||||||
this.setState({ todaysDate: todaysDate.toISOString() });
|
this.setState({ todaysDate: todaysDate.toISOString() });
|
||||||
|
|
||||||
this.updateTimeoutId = setTimeout(this.scheduleUpdate, diff);
|
this.updateTimeoutId = setTimeout(this.scheduleUpdate, diff);
|
||||||
}
|
};
|
||||||
|
|
||||||
clearUpdateTimeout = () => {
|
clearUpdateTimeout = () => {
|
||||||
if (this.updateTimeoutId) {
|
if (this.updateTimeoutId) {
|
||||||
clearTimeout(this.updateTimeoutId);
|
clearTimeout(this.updateTimeoutId);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onEventModalOpenToggle = (isEventModalOpen) => {
|
onEventModalOpenToggle = (isEventModalOpen) => {
|
||||||
this.setState({ isEventModalOpen });
|
this.setState({ isEventModalOpen });
|
||||||
}
|
};
|
||||||
|
|
||||||
onTouchStart = (event) => {
|
onTouchStart = (event) => {
|
||||||
const touches = event.touches;
|
const touches = event.touches;
|
||||||
|
@ -92,7 +92,7 @@ class CalendarDays extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
this._touchStart = touchStart;
|
this._touchStart = touchStart;
|
||||||
}
|
};
|
||||||
|
|
||||||
onTouchEnd = (event) => {
|
onTouchEnd = (event) => {
|
||||||
const touches = event.changedTouches;
|
const touches = event.changedTouches;
|
||||||
|
@ -109,17 +109,17 @@ class CalendarDays extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
this._touchStart = null;
|
this._touchStart = null;
|
||||||
}
|
};
|
||||||
|
|
||||||
onTouchCancel = (event) => {
|
onTouchCancel = (event) => {
|
||||||
this._touchStart = null;
|
this._touchStart = null;
|
||||||
}
|
};
|
||||||
|
|
||||||
onTouchMove = (event) => {
|
onTouchMove = (event) => {
|
||||||
if (!this._touchStart) {
|
if (!this._touchStart) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { gotoCalendarPreviousRange, gotoCalendarNextRange } from 'Store/Actions/calendarActions';
|
import { gotoCalendarNextRange, gotoCalendarPreviousRange } from 'Store/Actions/calendarActions';
|
||||||
import CalendarDays from './CalendarDays';
|
import CalendarDays from './CalendarDays';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import classNames from 'classnames';
|
|
||||||
import getRelativeDate from 'Utilities/Date/getRelativeDate';
|
|
||||||
import * as calendarViews from 'Calendar/calendarViews';
|
import * as calendarViews from 'Calendar/calendarViews';
|
||||||
|
import getRelativeDate from 'Utilities/Date/getRelativeDate';
|
||||||
import styles from './DayOfWeek.css';
|
import styles from './DayOfWeek.css';
|
||||||
|
|
||||||
class DayOfWeek extends Component {
|
class DayOfWeek extends Component {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import DayOfWeek from './DayOfWeek';
|
|
||||||
import * as calendarViews from 'Calendar/calendarViews';
|
import * as calendarViews from 'Calendar/calendarViews';
|
||||||
|
import DayOfWeek from './DayOfWeek';
|
||||||
import styles from './DaysOfWeek.css';
|
import styles from './DaysOfWeek.css';
|
||||||
|
|
||||||
class DaysOfWeek extends Component {
|
class DaysOfWeek extends Component {
|
||||||
|
@ -47,13 +47,13 @@ class DaysOfWeek extends Component {
|
||||||
});
|
});
|
||||||
|
|
||||||
this.updateTimeoutId = setTimeout(this.scheduleUpdate, diff);
|
this.updateTimeoutId = setTimeout(this.scheduleUpdate, diff);
|
||||||
}
|
};
|
||||||
|
|
||||||
clearUpdateTimeout = () => {
|
clearUpdateTimeout = () => {
|
||||||
if (this.updateTimeoutId) {
|
if (this.updateTimeoutId) {
|
||||||
clearTimeout(this.updateTimeoutId);
|
clearTimeout(this.updateTimeoutId);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component, Fragment } from 'react';
|
import React, { Component, Fragment } from 'react';
|
||||||
import classNames from 'classnames';
|
|
||||||
import { icons, kinds } from 'Helpers/Props';
|
|
||||||
import formatTime from 'Utilities/Date/formatTime';
|
|
||||||
import padNumber from 'Utilities/Number/padNumber';
|
|
||||||
import getStatusStyle from 'Calendar/getStatusStyle';
|
import getStatusStyle from 'Calendar/getStatusStyle';
|
||||||
import episodeEntities from 'Episode/episodeEntities';
|
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import Link from 'Components/Link/Link';
|
import Link from 'Components/Link/Link';
|
||||||
import EpisodeDetailsModal from 'Episode/EpisodeDetailsModal';
|
import EpisodeDetailsModal from 'Episode/EpisodeDetailsModal';
|
||||||
|
import episodeEntities from 'Episode/episodeEntities';
|
||||||
|
import { icons, kinds } from 'Helpers/Props';
|
||||||
|
import formatTime from 'Utilities/Date/formatTime';
|
||||||
|
import padNumber from 'Utilities/Number/padNumber';
|
||||||
import CalendarEventQueueDetails from './CalendarEventQueueDetails';
|
import CalendarEventQueueDetails from './CalendarEventQueueDetails';
|
||||||
import styles from './CalendarEvent.css';
|
import styles from './CalendarEvent.css';
|
||||||
|
|
||||||
|
@ -33,13 +33,13 @@ class CalendarEvent extends Component {
|
||||||
this.setState({ isDetailsModalOpen: true }, () => {
|
this.setState({ isDetailsModalOpen: true }, () => {
|
||||||
this.props.onEventModalOpenToggle(true);
|
this.props.onEventModalOpenToggle(true);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onDetailsModalClose = () => {
|
onDetailsModalClose = () => {
|
||||||
this.setState({ isDetailsModalOpen: false }, () => {
|
this.setState({ isDetailsModalOpen: false }, () => {
|
||||||
this.props.onEventModalOpenToggle(false);
|
this.props.onEventModalOpenToggle(false);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import createEpisodeFileSelector from 'Store/Selectors/createEpisodeFileSelector';
|
import createEpisodeFileSelector from 'Store/Selectors/createEpisodeFileSelector';
|
||||||
import createSeriesSelector from 'Store/Selectors/createSeriesSelector';
|
|
||||||
import createQueueItemSelector from 'Store/Selectors/createQueueItemSelector';
|
import createQueueItemSelector from 'Store/Selectors/createQueueItemSelector';
|
||||||
|
import createSeriesSelector from 'Store/Selectors/createSeriesSelector';
|
||||||
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
||||||
import CalendarEvent from './CalendarEvent';
|
import CalendarEvent from './CalendarEvent';
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import classNames from 'classnames';
|
import CalendarEventConnector from 'Calendar/Events/CalendarEventConnector';
|
||||||
import formatTime from 'Utilities/Date/formatTime';
|
import getStatusStyle from 'Calendar/getStatusStyle';
|
||||||
import padNumber from 'Utilities/Number/padNumber';
|
|
||||||
import { icons, kinds } from 'Helpers/Props';
|
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import Link from 'Components/Link/Link';
|
import Link from 'Components/Link/Link';
|
||||||
import getStatusStyle from 'Calendar/getStatusStyle';
|
import { icons, kinds } from 'Helpers/Props';
|
||||||
import CalendarEventConnector from 'Calendar/Events/CalendarEventConnector';
|
import formatTime from 'Utilities/Date/formatTime';
|
||||||
|
import padNumber from 'Utilities/Number/padNumber';
|
||||||
import styles from './CalendarEventGroup.css';
|
import styles from './CalendarEventGroup.css';
|
||||||
|
|
||||||
function getEventsInfo(events) {
|
function getEventsInfo(events) {
|
||||||
|
@ -61,7 +61,7 @@ class CalendarEventGroup extends Component {
|
||||||
|
|
||||||
onExpandPress = () => {
|
onExpandPress = () => {
|
||||||
this.setState({ isExpanded: !this.state.isExpanded });
|
this.setState({ isExpanded: !this.state.isExpanded });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { align, icons } from 'Helpers/Props';
|
import * as calendarViews from 'Calendar/calendarViews';
|
||||||
import Button from 'Components/Link/Button';
|
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
|
import Button from 'Components/Link/Button';
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import Menu from 'Components/Menu/Menu';
|
import Menu from 'Components/Menu/Menu';
|
||||||
import MenuButton from 'Components/Menu/MenuButton';
|
import MenuButton from 'Components/Menu/MenuButton';
|
||||||
import MenuContent from 'Components/Menu/MenuContent';
|
import MenuContent from 'Components/Menu/MenuContent';
|
||||||
import ViewMenuItem from 'Components/Menu/ViewMenuItem';
|
import ViewMenuItem from 'Components/Menu/ViewMenuItem';
|
||||||
import * as calendarViews from 'Calendar/calendarViews';
|
import { align, icons } from 'Helpers/Props';
|
||||||
import CalendarHeaderViewButton from './CalendarHeaderViewButton';
|
import CalendarHeaderViewButton from './CalendarHeaderViewButton';
|
||||||
import styles from './CalendarHeader.css';
|
import styles from './CalendarHeader.css';
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ class CalendarHeader extends Component {
|
||||||
this.setState({ view }, () => {
|
this.setState({ view }, () => {
|
||||||
this.props.onViewChange(view);
|
this.props.onViewChange(view);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -3,9 +3,9 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
|
import { gotoCalendarNextRange, gotoCalendarPreviousRange, gotoCalendarToday, setCalendarView } from 'Store/Actions/calendarActions';
|
||||||
import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector';
|
import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector';
|
||||||
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
||||||
import { setCalendarView, gotoCalendarToday, gotoCalendarPreviousRange, gotoCalendarNextRange } from 'Store/Actions/calendarActions';
|
|
||||||
import CalendarHeader from './CalendarHeader';
|
import CalendarHeader from './CalendarHeader';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
@ -45,19 +45,19 @@ class CalendarHeaderConnector extends Component {
|
||||||
|
|
||||||
onViewChange = (view) => {
|
onViewChange = (view) => {
|
||||||
this.props.setCalendarView({ view });
|
this.props.setCalendarView({ view });
|
||||||
}
|
};
|
||||||
|
|
||||||
onTodayPress = () => {
|
onTodayPress = () => {
|
||||||
this.props.gotoCalendarToday();
|
this.props.gotoCalendarToday();
|
||||||
}
|
};
|
||||||
|
|
||||||
onPreviousPress = () => {
|
onPreviousPress = () => {
|
||||||
this.props.gotoCalendarPreviousRange();
|
this.props.gotoCalendarPreviousRange();
|
||||||
}
|
};
|
||||||
|
|
||||||
onNextPress = () => {
|
onNextPress = () => {
|
||||||
this.props.gotoCalendarNextRange();
|
this.props.gotoCalendarNextRange();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import titleCase from 'Utilities/String/titleCase';
|
|
||||||
import Button from 'Components/Link/Button';
|
|
||||||
import * as calendarViews from 'Calendar/calendarViews';
|
import * as calendarViews from 'Calendar/calendarViews';
|
||||||
|
import Button from 'Components/Link/Button';
|
||||||
|
import titleCase from 'Utilities/String/titleCase';
|
||||||
// import styles from './CalendarHeaderViewButton.css';
|
// import styles from './CalendarHeaderViewButton.css';
|
||||||
|
|
||||||
class CalendarHeaderViewButton extends Component {
|
class CalendarHeaderViewButton extends Component {
|
||||||
|
@ -12,7 +12,7 @@ class CalendarHeaderViewButton extends Component {
|
||||||
|
|
||||||
onPress = () => {
|
onPress = () => {
|
||||||
this.props.onPress(this.props.view);
|
this.props.onPress(this.props.view);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { icons, kinds } from 'Helpers/Props';
|
import { icons, kinds } from 'Helpers/Props';
|
||||||
import LegendItem from './LegendItem';
|
|
||||||
import LegendIconItem from './LegendIconItem';
|
import LegendIconItem from './LegendIconItem';
|
||||||
|
import LegendItem from './LegendItem';
|
||||||
import styles from './Legend.css';
|
import styles from './Legend.css';
|
||||||
|
|
||||||
function Legend(props) {
|
function Legend(props) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import classNames from 'classnames';
|
|
||||||
import titleCase from 'Utilities/String/titleCase';
|
import titleCase from 'Utilities/String/titleCase';
|
||||||
import styles from './LegendItem.css';
|
import styles from './LegendItem.css';
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { inputTypes } from 'Helpers/Props';
|
|
||||||
import FieldSet from 'Components/FieldSet';
|
import FieldSet from 'Components/FieldSet';
|
||||||
import Button from 'Components/Link/Button';
|
|
||||||
import Form from 'Components/Form/Form';
|
import Form from 'Components/Form/Form';
|
||||||
import FormGroup from 'Components/Form/FormGroup';
|
import FormGroup from 'Components/Form/FormGroup';
|
||||||
import FormLabel from 'Components/Form/FormLabel';
|
|
||||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
import FormLabel from 'Components/Form/FormLabel';
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
import Button from 'Components/Link/Button';
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
import { firstDayOfWeekOptions, weekColumnOptions, timeFormatOptions } from 'Settings/UI/UISettings';
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
|
import { inputTypes } from 'Helpers/Props';
|
||||||
|
import { firstDayOfWeekOptions, timeFormatOptions, weekColumnOptions } from 'Settings/UI/UISettings';
|
||||||
|
|
||||||
class CalendarOptionsModalContent extends Component {
|
class CalendarOptionsModalContent extends Component {
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ class CalendarOptionsModalContent extends Component {
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
dispatchSetCalendarOption({ [name]: value });
|
dispatchSetCalendarOption({ [name]: value });
|
||||||
}
|
};
|
||||||
|
|
||||||
onGlobalInputChange = ({ name, value }) => {
|
onGlobalInputChange = ({ name, value }) => {
|
||||||
const {
|
const {
|
||||||
|
@ -82,11 +82,11 @@ class CalendarOptionsModalContent extends Component {
|
||||||
this.setState(setting, () => {
|
this.setState(setting, () => {
|
||||||
dispatchSaveUISettings(setting);
|
dispatchSaveUISettings(setting);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onLinkFocus = (event) => {
|
onLinkFocus = (event) => {
|
||||||
event.target.select();
|
event.target.select();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { setCalendarOption } from 'Store/Actions/calendarActions';
|
import { setCalendarOption } from 'Store/Actions/calendarActions';
|
||||||
import CalendarOptionsModalContent from './CalendarOptionsModalContent';
|
|
||||||
import { saveUISettings } from 'Store/Actions/settingsActions';
|
import { saveUISettings } from 'Store/Actions/settingsActions';
|
||||||
|
import CalendarOptionsModalContent from './CalendarOptionsModalContent';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
return createSelector(
|
return createSelector(
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { icons, inputTypes, kinds, sizes } from 'Helpers/Props';
|
import Form from 'Components/Form/Form';
|
||||||
|
import FormGroup from 'Components/Form/FormGroup';
|
||||||
|
import FormInputButton from 'Components/Form/FormInputButton';
|
||||||
|
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||||
|
import FormLabel from 'Components/Form/FormLabel';
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import ClipboardButton from 'Components/Link/ClipboardButton';
|
import ClipboardButton from 'Components/Link/ClipboardButton';
|
||||||
import Form from 'Components/Form/Form';
|
|
||||||
import FormGroup from 'Components/Form/FormGroup';
|
|
||||||
import FormLabel from 'Components/Form/FormLabel';
|
|
||||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
|
||||||
import FormInputButton from 'Components/Form/FormInputButton';
|
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
|
import { icons, inputTypes, kinds, sizes } from 'Helpers/Props';
|
||||||
|
|
||||||
function getUrls(state) {
|
function getUrls(state) {
|
||||||
const {
|
const {
|
||||||
|
@ -89,11 +89,11 @@ class CalendarLinkModalContent extends Component {
|
||||||
[name]: value,
|
[name]: value,
|
||||||
...urls
|
...urls
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onLinkFocus = (event) => {
|
onLinkFocus = (event) => {
|
||||||
event.target.select();
|
event.target.select();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import classNames from 'classnames';
|
|
||||||
import { kinds } from 'Helpers/Props';
|
import { kinds } from 'Helpers/Props';
|
||||||
import styles from './Alert.css';
|
import styles from './Alert.css';
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import DescriptionListItemTitle from './DescriptionListItemTitle';
|
|
||||||
import DescriptionListItemDescription from './DescriptionListItemDescription';
|
import DescriptionListItemDescription from './DescriptionListItemDescription';
|
||||||
|
import DescriptionListItemTitle from './DescriptionListItemTitle';
|
||||||
|
|
||||||
class DescriptionListItem extends Component {
|
class DescriptionListItem extends Component {
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
import * as sentry from '@sentry/browser';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import * as sentry from '@sentry/browser';
|
|
||||||
|
|
||||||
class ErrorBoundary extends Component {
|
class ErrorBoundary extends Component {
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import classNames from 'classnames';
|
|
||||||
import { sizes } from 'Helpers/Props';
|
import { sizes } from 'Helpers/Props';
|
||||||
import styles from './FieldSet.css';
|
import styles from './FieldSet.css';
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom';
|
||||||
import { kinds, scrollDirections } from 'Helpers/Props';
|
|
||||||
import Alert from 'Components/Alert';
|
import Alert from 'Components/Alert';
|
||||||
|
import PathInput from 'Components/Form/PathInput';
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import Link from 'Components/Link/Link';
|
import Link from 'Components/Link/Link';
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
import Scroller from 'Components/Scroller/Scroller';
|
import Scroller from 'Components/Scroller/Scroller';
|
||||||
import Table from 'Components/Table/Table';
|
import Table from 'Components/Table/Table';
|
||||||
import TableBody from 'Components/Table/TableBody';
|
import TableBody from 'Components/Table/TableBody';
|
||||||
import PathInput from 'Components/Form/PathInput';
|
import { kinds, scrollDirections } from 'Helpers/Props';
|
||||||
import FileBrowserRow from './FileBrowserRow';
|
import FileBrowserRow from './FileBrowserRow';
|
||||||
import styles from './FileBrowserModalContent.css';
|
import styles from './FileBrowserModalContent.css';
|
||||||
|
|
||||||
|
@ -69,18 +69,18 @@ class FileBrowserModalContent extends Component {
|
||||||
} else {
|
} else {
|
||||||
this._scrollerNode = null;
|
this._scrollerNode = null;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onPathInputChange = ({ value }) => {
|
onPathInputChange = ({ value }) => {
|
||||||
this.setState({ currentPath: value });
|
this.setState({ currentPath: value });
|
||||||
}
|
};
|
||||||
|
|
||||||
onRowPress = (path) => {
|
onRowPress = (path) => {
|
||||||
this.props.onFetchPaths(path);
|
this.props.onFetchPaths(path);
|
||||||
}
|
};
|
||||||
|
|
||||||
onOkPress = () => {
|
onOkPress = () => {
|
||||||
this.props.onChange({
|
this.props.onChange({
|
||||||
|
@ -90,7 +90,7 @@ class FileBrowserModalContent extends Component {
|
||||||
|
|
||||||
this.props.onClearPaths();
|
this.props.onClearPaths();
|
||||||
this.props.onModalClose();
|
this.props.onModalClose();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { fetchPaths, clearPaths } from 'Store/Actions/pathActions';
|
import { clearPaths, fetchPaths } from 'Store/Actions/pathActions';
|
||||||
import createSystemStatusSelector from 'Store/Selectors/createSystemStatusSelector';
|
import createSystemStatusSelector from 'Store/Selectors/createSystemStatusSelector';
|
||||||
import FileBrowserModalContent from './FileBrowserModalContent';
|
import FileBrowserModalContent from './FileBrowserModalContent';
|
||||||
|
|
||||||
|
@ -78,16 +78,16 @@ class FileBrowserModalContentConnector extends Component {
|
||||||
allowFoldersWithoutTrailingSlashes: true,
|
allowFoldersWithoutTrailingSlashes: true,
|
||||||
includeFiles
|
includeFiles
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onClearPaths = () => {
|
onClearPaths = () => {
|
||||||
// this.props.dispatchClearPaths();
|
// this.props.dispatchClearPaths();
|
||||||
}
|
};
|
||||||
|
|
||||||
onModalClose = () => {
|
onModalClose = () => {
|
||||||
this.props.dispatchClearPaths();
|
this.props.dispatchClearPaths();
|
||||||
this.props.onModalClose();
|
this.props.onModalClose();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { icons } from 'Helpers/Props';
|
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import TableRowButton from 'Components/Table/TableRowButton';
|
|
||||||
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
||||||
|
import TableRowButton from 'Components/Table/TableRowButton';
|
||||||
|
import { icons } from 'Helpers/Props';
|
||||||
import styles from './FileBrowserRow.css';
|
import styles from './FileBrowserRow.css';
|
||||||
|
|
||||||
function getIconName(type) {
|
function getIconName(type) {
|
||||||
|
@ -28,7 +28,7 @@ class FileBrowserRow extends Component {
|
||||||
|
|
||||||
onPress = () => {
|
onPress = () => {
|
||||||
this.props.onPress(this.props.path);
|
this.props.onPress(this.props.path);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import isString from 'Utilities/String/isString';
|
|
||||||
import { IN_LAST, NOT_IN_LAST, IN_NEXT, NOT_IN_NEXT } from 'Helpers/Props/filterTypes';
|
|
||||||
import NumberInput from 'Components/Form/NumberInput';
|
import NumberInput from 'Components/Form/NumberInput';
|
||||||
import SelectInput from 'Components/Form/SelectInput';
|
import SelectInput from 'Components/Form/SelectInput';
|
||||||
import TextInput from 'Components/Form/TextInput';
|
import TextInput from 'Components/Form/TextInput';
|
||||||
|
import { IN_LAST, IN_NEXT, NOT_IN_LAST, NOT_IN_NEXT } from 'Helpers/Props/filterTypes';
|
||||||
|
import isString from 'Utilities/String/isString';
|
||||||
import { NAME } from './FilterBuilderRowValue';
|
import { NAME } from './FilterBuilderRowValue';
|
||||||
import styles from './DateFilterBuilderRowValue.css';
|
import styles from './DateFilterBuilderRowValue.css';
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ class DateFilterBuilderRowValue extends Component {
|
||||||
name: NAME,
|
name: NAME,
|
||||||
value: newValue
|
value: newValue
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onTimeChange = ({ value }) => {
|
onTimeChange = ({ value }) => {
|
||||||
const {
|
const {
|
||||||
|
@ -117,7 +117,7 @@ class DateFilterBuilderRowValue extends Component {
|
||||||
value: filterValue.value
|
value: filterValue.value
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { inputTypes } from 'Helpers/Props';
|
|
||||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import SpinnerErrorButton from 'Components/Link/SpinnerErrorButton';
|
import SpinnerErrorButton from 'Components/Link/SpinnerErrorButton';
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
|
import { inputTypes } from 'Helpers/Props';
|
||||||
import FilterBuilderRow from './FilterBuilderRow';
|
import FilterBuilderRow from './FilterBuilderRow';
|
||||||
import styles from './FilterBuilderModalContent.css';
|
import styles from './FilterBuilderModalContent.css';
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ class FilterBuilderModalContent extends Component {
|
||||||
|
|
||||||
onLabelChange = ({ value }) => {
|
onLabelChange = ({ value }) => {
|
||||||
this.setState({ label: value });
|
this.setState({ label: value });
|
||||||
}
|
};
|
||||||
|
|
||||||
onFilterChange = (index, filter) => {
|
onFilterChange = (index, filter) => {
|
||||||
const filters = [...this.state.filters];
|
const filters = [...this.state.filters];
|
||||||
|
@ -71,7 +71,7 @@ class FilterBuilderModalContent extends Component {
|
||||||
this.setState({
|
this.setState({
|
||||||
filters
|
filters
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onAddFilterPress = () => {
|
onAddFilterPress = () => {
|
||||||
const filters = [...this.state.filters];
|
const filters = [...this.state.filters];
|
||||||
|
@ -80,7 +80,7 @@ class FilterBuilderModalContent extends Component {
|
||||||
this.setState({
|
this.setState({
|
||||||
filters
|
filters
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemoveFilterPress = (index) => {
|
onRemoveFilterPress = (index) => {
|
||||||
const filters = [...this.state.filters];
|
const filters = [...this.state.filters];
|
||||||
|
@ -89,7 +89,7 @@ class FilterBuilderModalContent extends Component {
|
||||||
this.setState({
|
this.setState({
|
||||||
filters
|
filters
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onSaveFilterPress = () => {
|
onSaveFilterPress = () => {
|
||||||
const {
|
const {
|
||||||
|
@ -121,7 +121,7 @@ class FilterBuilderModalContent extends Component {
|
||||||
label,
|
label,
|
||||||
filters
|
filters
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { saveCustomFilter, deleteCustomFilter } from 'Store/Actions/customFilterActions';
|
import { deleteCustomFilter, saveCustomFilter } from 'Store/Actions/customFilterActions';
|
||||||
import FilterBuilderModalContent from './FilterBuilderModalContent';
|
import FilterBuilderModalContent from './FilterBuilderModalContent';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { filterBuilderTypes, filterBuilderValueTypes, icons } from 'Helpers/Props';
|
|
||||||
import SelectInput from 'Components/Form/SelectInput';
|
import SelectInput from 'Components/Form/SelectInput';
|
||||||
import IconButton from 'Components/Link/IconButton';
|
import IconButton from 'Components/Link/IconButton';
|
||||||
|
import { filterBuilderTypes, filterBuilderValueTypes, icons } from 'Helpers/Props';
|
||||||
import BoolFilterBuilderRowValue from './BoolFilterBuilderRowValue';
|
import BoolFilterBuilderRowValue from './BoolFilterBuilderRowValue';
|
||||||
import DateFilterBuilderRowValue from './DateFilterBuilderRowValue';
|
import DateFilterBuilderRowValue from './DateFilterBuilderRowValue';
|
||||||
import FilterBuilderRowValueConnector from './FilterBuilderRowValueConnector';
|
import FilterBuilderRowValueConnector from './FilterBuilderRowValueConnector';
|
||||||
|
@ -154,7 +154,7 @@ class FilterBuilderRow extends Component {
|
||||||
|
|
||||||
this.selectedFilterBuilderProp = selectedFilterBuilderProp;
|
this.selectedFilterBuilderProp = selectedFilterBuilderProp;
|
||||||
onFilterChange(index, filter);
|
onFilterChange(index, filter);
|
||||||
}
|
};
|
||||||
|
|
||||||
onFilterChange = ({ name, value }) => {
|
onFilterChange = ({ name, value }) => {
|
||||||
const {
|
const {
|
||||||
|
@ -174,7 +174,7 @@ class FilterBuilderRow extends Component {
|
||||||
filter[name] = value;
|
filter[name] = value;
|
||||||
|
|
||||||
onFilterChange(index, filter);
|
onFilterChange(index, filter);
|
||||||
}
|
};
|
||||||
|
|
||||||
onAddPress = () => {
|
onAddPress = () => {
|
||||||
const {
|
const {
|
||||||
|
@ -183,7 +183,7 @@ class FilterBuilderRow extends Component {
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
onAddPress(index);
|
onAddPress(index);
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemovePress = () => {
|
onRemovePress = () => {
|
||||||
const {
|
const {
|
||||||
|
@ -192,7 +192,7 @@ class FilterBuilderRow extends Component {
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
onRemovePress(index);
|
onRemovePress(index);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
import TagInput from 'Components/Form/TagInput';
|
||||||
|
import { filterBuilderTypes, filterBuilderValueTypes, kinds } from 'Helpers/Props';
|
||||||
|
import tagShape from 'Helpers/Props/Shapes/tagShape';
|
||||||
import convertToBytes from 'Utilities/Number/convertToBytes';
|
import convertToBytes from 'Utilities/Number/convertToBytes';
|
||||||
import formatBytes from 'Utilities/Number/formatBytes';
|
import formatBytes from 'Utilities/Number/formatBytes';
|
||||||
import { kinds, filterBuilderTypes, filterBuilderValueTypes } from 'Helpers/Props';
|
|
||||||
import tagShape from 'Helpers/Props/Shapes/tagShape';
|
|
||||||
import TagInput from 'Components/Form/TagInput';
|
|
||||||
import FilterBuilderRowValueTag from './FilterBuilderRowValueTag';
|
import FilterBuilderRowValueTag from './FilterBuilderRowValueTag';
|
||||||
|
|
||||||
export const NAME = 'value';
|
export const NAME = 'value';
|
||||||
|
@ -84,7 +84,7 @@ class FilterBuilderRowValue extends Component {
|
||||||
name: NAME,
|
name: NAME,
|
||||||
value: [...filterValue, value]
|
value: [...filterValue, value]
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onTagDelete = ({ index }) => {
|
onTagDelete = ({ index }) => {
|
||||||
const {
|
const {
|
||||||
|
@ -98,7 +98,7 @@ class FilterBuilderRowValue extends Component {
|
||||||
name: NAME,
|
name: NAME,
|
||||||
value
|
value
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import sortByName from 'Utilities/Array/sortByName';
|
|
||||||
import { filterBuilderTypes } from 'Helpers/Props';
|
import { filterBuilderTypes } from 'Helpers/Props';
|
||||||
import * as filterTypes from 'Helpers/Props/filterTypes';
|
import * as filterTypes from 'Helpers/Props/filterTypes';
|
||||||
|
import sortByName from 'Utilities/Array/sortByName';
|
||||||
import FilterBuilderRowValue from './FilterBuilderRowValue';
|
import FilterBuilderRowValue from './FilterBuilderRowValue';
|
||||||
|
|
||||||
function createTagListSelector() {
|
function createTagListSelector() {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { kinds } from 'Helpers/Props';
|
|
||||||
import TagInputTag from 'Components/Form/TagInputTag';
|
import TagInputTag from 'Components/Form/TagInputTag';
|
||||||
|
import { kinds } from 'Helpers/Props';
|
||||||
import styles from './FilterBuilderRowValueTag.css';
|
import styles from './FilterBuilderRowValueTag.css';
|
||||||
|
|
||||||
function FilterBuilderRowValueTag(props) {
|
function FilterBuilderRowValueTag(props) {
|
||||||
|
|
|
@ -47,7 +47,7 @@ class IndexerFilterBuilderRowValueConnector extends Component {
|
||||||
if (!this.props.isPopulated) {
|
if (!this.props.isPopulated) {
|
||||||
this.props.dispatchFetchIndexers();
|
this.props.dispatchFetchIndexers();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -2,9 +2,9 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import getQualities from 'Utilities/Quality/getQualities';
|
|
||||||
import tagShape from 'Helpers/Props/Shapes/tagShape';
|
import tagShape from 'Helpers/Props/Shapes/tagShape';
|
||||||
import { fetchQualityProfileSchema } from 'Store/Actions/settingsActions';
|
import { fetchQualityProfileSchema } from 'Store/Actions/settingsActions';
|
||||||
|
import getQualities from 'Utilities/Quality/getQualities';
|
||||||
import FilterBuilderRowValue from './FilterBuilderRowValue';
|
import FilterBuilderRowValue from './FilterBuilderRowValue';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
@ -43,7 +43,7 @@ class QualityFilterBuilderRowValueConnector extends Component {
|
||||||
if (!this.props.isPopulated) {
|
if (!this.props.isPopulated) {
|
||||||
this.props.dispatchFetchQualityProfileSchema();
|
this.props.dispatchFetchQualityProfileSchema();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { icons } from 'Helpers/Props';
|
|
||||||
import IconButton from 'Components/Link/IconButton';
|
import IconButton from 'Components/Link/IconButton';
|
||||||
import SpinnerIconButton from 'Components/Link/SpinnerIconButton';
|
import SpinnerIconButton from 'Components/Link/SpinnerIconButton';
|
||||||
|
import { icons } from 'Helpers/Props';
|
||||||
import styles from './CustomFilter.css';
|
import styles from './CustomFilter.css';
|
||||||
|
|
||||||
class CustomFilter extends Component {
|
class CustomFilter extends Component {
|
||||||
|
@ -54,7 +54,7 @@ class CustomFilter extends Component {
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
onEditPress(id);
|
onEditPress(id);
|
||||||
}
|
};
|
||||||
|
|
||||||
onRemovePress = () => {
|
onRemovePress = () => {
|
||||||
const {
|
const {
|
||||||
|
@ -66,7 +66,7 @@ class CustomFilter extends Component {
|
||||||
dispatchDeleteCustomFilter({ id });
|
dispatchDeleteCustomFilter({ id });
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
|
||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
import CustomFilter from './CustomFilter';
|
import CustomFilter from './CustomFilter';
|
||||||
import styles from './CustomFiltersModalContent.css';
|
import styles from './CustomFiltersModalContent.css';
|
||||||
|
|
||||||
|
|
|
@ -25,14 +25,14 @@ class FilterModal extends Component {
|
||||||
this.setState({
|
this.setState({
|
||||||
filterBuilder: true
|
filterBuilder: true
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onEditCustomFilter = (id) => {
|
onEditCustomFilter = (id) => {
|
||||||
this.setState({
|
this.setState({
|
||||||
filterBuilder: true,
|
filterBuilder: true,
|
||||||
id
|
id
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onCancelPress = () => {
|
onCancelPress = () => {
|
||||||
if (this.state.filterBuilder) {
|
if (this.state.filterBuilder) {
|
||||||
|
@ -43,7 +43,7 @@ class FilterModal extends Component {
|
||||||
} else {
|
} else {
|
||||||
this.onModalClose();
|
this.onModalClose();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
onModalClose = () => {
|
onModalClose = () => {
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -52,7 +52,7 @@ class FilterModal extends Component {
|
||||||
}, () => {
|
}, () => {
|
||||||
this.props.onModalClose();
|
this.props.onModalClose();
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
import jdu from 'jdu';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import jdu from 'jdu';
|
|
||||||
import AutoSuggestInput from './AutoSuggestInput';
|
import AutoSuggestInput from './AutoSuggestInput';
|
||||||
|
|
||||||
class AutoCompleteInput extends Component {
|
class AutoCompleteInput extends Component {
|
||||||
|
@ -35,11 +35,11 @@ class AutoCompleteInput extends Component {
|
||||||
name: this.props.name,
|
name: this.props.name,
|
||||||
value: newValue
|
value: newValue
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onInputBlur = () => {
|
onInputBlur = () => {
|
||||||
this.setState({ suggestions: [] });
|
this.setState({ suggestions: [] });
|
||||||
}
|
};
|
||||||
|
|
||||||
onSuggestionsFetchRequested = ({ value }) => {
|
onSuggestionsFetchRequested = ({ value }) => {
|
||||||
const { values } = this.props;
|
const { values } = this.props;
|
||||||
|
@ -50,11 +50,11 @@ class AutoCompleteInput extends Component {
|
||||||
});
|
});
|
||||||
|
|
||||||
this.setState({ suggestions: filteredValues });
|
this.setState({ suggestions: filteredValues });
|
||||||
}
|
};
|
||||||
|
|
||||||
onSuggestionsClearRequested = () => {
|
onSuggestionsClearRequested = () => {
|
||||||
this.setState({ suggestions: [] });
|
this.setState({ suggestions: [] });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import Autosuggest from 'react-autosuggest';
|
import Autosuggest from 'react-autosuggest';
|
||||||
import { Manager, Popper, Reference } from 'react-popper';
|
import { Manager, Popper, Reference } from 'react-popper';
|
||||||
import classNames from 'classnames';
|
|
||||||
import Portal from 'Components/Portal';
|
import Portal from 'Components/Portal';
|
||||||
import styles from './AutoSuggestInput.css';
|
import styles from './AutoSuggestInput.css';
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ class AutoSuggestInput extends Component {
|
||||||
}}
|
}}
|
||||||
</Reference>
|
</Reference>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
renderSuggestionsContainer = ({ containerProps, children }) => {
|
renderSuggestionsContainer = ({ containerProps, children }) => {
|
||||||
return (
|
return (
|
||||||
|
@ -90,7 +90,7 @@ class AutoSuggestInput extends Component {
|
||||||
</Popper>
|
</Popper>
|
||||||
</Portal>
|
</Portal>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
@ -113,14 +113,14 @@ class AutoSuggestInput extends Component {
|
||||||
data.styles.width = width;
|
data.styles.width = width;
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
};
|
||||||
|
|
||||||
onInputChange = (event, { newValue }) => {
|
onInputChange = (event, { newValue }) => {
|
||||||
this.props.onChange({
|
this.props.onChange({
|
||||||
name: this.props.name,
|
name: this.props.name,
|
||||||
value: newValue
|
value: newValue
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onInputKeyDown = (event) => {
|
onInputKeyDown = (event) => {
|
||||||
const {
|
const {
|
||||||
|
@ -144,7 +144,7 @@ class AutoSuggestInput extends Component {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReCAPTCHA from 'react-google-recaptcha';
|
import ReCAPTCHA from 'react-google-recaptcha';
|
||||||
import classNames from 'classnames';
|
|
||||||
import { icons } from 'Helpers/Props';
|
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
|
import { icons } from 'Helpers/Props';
|
||||||
import FormInputButton from './FormInputButton';
|
import FormInputButton from './FormInputButton';
|
||||||
import TextInput from './TextInput';
|
import TextInput from './TextInput';
|
||||||
import styles from './CaptchaInput.css';
|
import styles from './CaptchaInput.css';
|
||||||
|
|
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { refreshCaptcha, getCaptchaCookie, resetCaptcha } from 'Store/Actions/captchaActions';
|
import { getCaptchaCookie, refreshCaptcha, resetCaptcha } from 'Store/Actions/captchaActions';
|
||||||
import CaptchaInput from './CaptchaInput';
|
import CaptchaInput from './CaptchaInput';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
@ -39,7 +39,7 @@ class CaptchaInputConnector extends Component {
|
||||||
|
|
||||||
componentWillUnmount = () => {
|
componentWillUnmount = () => {
|
||||||
this.props.resetCaptcha();
|
this.props.resetCaptcha();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
@ -51,7 +51,7 @@ class CaptchaInputConnector extends Component {
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
this.props.refreshCaptcha({ provider, providerData });
|
this.props.refreshCaptcha({ provider, providerData });
|
||||||
}
|
};
|
||||||
|
|
||||||
onCaptchaChange = (captchaResponse) => {
|
onCaptchaChange = (captchaResponse) => {
|
||||||
// If the captcha has expired `captchaResponse` will be null.
|
// If the captcha has expired `captchaResponse` will be null.
|
||||||
|
@ -68,7 +68,7 @@ class CaptchaInputConnector extends Component {
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
this.props.getCaptchaCookie({ provider, providerData, captchaResponse });
|
this.props.getCaptchaCookie({ provider, providerData, captchaResponse });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import classNames from 'classnames';
|
|
||||||
import { icons, kinds } from 'Helpers/Props';
|
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
|
import { icons, kinds } from 'Helpers/Props';
|
||||||
import FormInputHelpText from './FormInputHelpText';
|
import FormInputHelpText from './FormInputHelpText';
|
||||||
import styles from './CheckInput.css';
|
import styles from './CheckInput.css';
|
||||||
|
|
||||||
|
@ -59,14 +59,14 @@ class CheckInput extends Component {
|
||||||
shiftKey
|
shiftKey
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
setRef = (ref) => {
|
setRef = (ref) => {
|
||||||
this._checkbox = ref;
|
this._checkbox = ref;
|
||||||
}
|
};
|
||||||
|
|
||||||
onClick = (event) => {
|
onClick = (event) => {
|
||||||
if (this.props.isDisabled) {
|
if (this.props.isDisabled) {
|
||||||
|
@ -78,14 +78,14 @@ class CheckInput extends Component {
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
this.toggleChecked(checked, shiftKey);
|
this.toggleChecked(checked, shiftKey);
|
||||||
}
|
};
|
||||||
|
|
||||||
onChange = (event) => {
|
onChange = (event) => {
|
||||||
const checked = event.target.checked;
|
const checked = event.target.checked;
|
||||||
const shiftKey = event.nativeEvent.shiftKey;
|
const shiftKey = event.nativeEvent.shiftKey;
|
||||||
|
|
||||||
this.toggleChecked(checked, shiftKey);
|
this.toggleChecked(checked, shiftKey);
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
import Icon from 'Components/Icon';
|
||||||
import { icons } from 'Helpers/Props';
|
import { icons } from 'Helpers/Props';
|
||||||
import tagShape from 'Helpers/Props/Shapes/tagShape';
|
import tagShape from 'Helpers/Props/Shapes/tagShape';
|
||||||
import Icon from 'Components/Icon';
|
|
||||||
import FormInputButton from './FormInputButton';
|
import FormInputButton from './FormInputButton';
|
||||||
import TagInput from './TagInput';
|
import TagInput from './TagInput';
|
||||||
import styles from './DeviceInput.css';
|
import styles from './DeviceInput.css';
|
||||||
|
@ -23,7 +23,7 @@ class DeviceInput extends Component {
|
||||||
name,
|
name,
|
||||||
value: [...value, deviceId]
|
value: [...value, deviceId]
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onTagDelete = ({ index }) => {
|
onTagDelete = ({ index }) => {
|
||||||
const {
|
const {
|
||||||
|
@ -39,7 +39,7 @@ class DeviceInput extends Component {
|
||||||
name,
|
name,
|
||||||
value: newValue
|
value: newValue
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { fetchOptions, clearOptions, defaultState } from 'Store/Actions/providerOptionActions';
|
import { clearOptions, defaultState, fetchOptions } from 'Store/Actions/providerOptionActions';
|
||||||
import DeviceInput from './DeviceInput';
|
import DeviceInput from './DeviceInput';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
|
@ -48,11 +48,11 @@ class DeviceInputConnector extends Component {
|
||||||
|
|
||||||
componentDidMount = () => {
|
componentDidMount = () => {
|
||||||
this._populate();
|
this._populate();
|
||||||
}
|
};
|
||||||
|
|
||||||
componentWillUnmount = () => {
|
componentWillUnmount = () => {
|
||||||
this.props.dispatchClearOptions({ section: 'devices' });
|
this.props.dispatchClearOptions({ section: 'devices' });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Control
|
// Control
|
||||||
|
@ -77,7 +77,7 @@ class DeviceInputConnector extends Component {
|
||||||
|
|
||||||
onRefreshPress = () => {
|
onRefreshPress = () => {
|
||||||
this._populate();
|
this._populate();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -66,7 +66,7 @@ class DownloadClientSelectInputConnector extends Component {
|
||||||
|
|
||||||
onChange = ({ name, value }) => {
|
onChange = ({ name, value }) => {
|
||||||
this.props.onChange({ name, value: parseInt(value) });
|
this.props.onChange({ name, value: parseInt(value) });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
|
import classNames from 'classnames';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { Manager, Popper, Reference } from 'react-popper';
|
import { Manager, Popper, Reference } from 'react-popper';
|
||||||
import classNames from 'classnames';
|
|
||||||
import getUniqueElememtId from 'Utilities/getUniqueElementId';
|
|
||||||
import { isMobile as isMobileUtil } from 'Utilities/browser';
|
|
||||||
import * as keyCodes from 'Utilities/Constants/keyCodes';
|
|
||||||
import { icons, sizes, scrollDirections } from 'Helpers/Props';
|
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import Portal from 'Components/Portal';
|
|
||||||
import Link from 'Components/Link/Link';
|
import Link from 'Components/Link/Link';
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import Measure from 'Components/Measure';
|
import Measure from 'Components/Measure';
|
||||||
import Modal from 'Components/Modal/Modal';
|
import Modal from 'Components/Modal/Modal';
|
||||||
import ModalBody from 'Components/Modal/ModalBody';
|
import ModalBody from 'Components/Modal/ModalBody';
|
||||||
|
import Portal from 'Components/Portal';
|
||||||
import Scroller from 'Components/Scroller/Scroller';
|
import Scroller from 'Components/Scroller/Scroller';
|
||||||
import TextInput from './TextInput';
|
import { icons, scrollDirections, sizes } from 'Helpers/Props';
|
||||||
import HintedSelectInputSelectedValue from './HintedSelectInputSelectedValue';
|
import { isMobile as isMobileUtil } from 'Utilities/browser';
|
||||||
|
import * as keyCodes from 'Utilities/Constants/keyCodes';
|
||||||
|
import getUniqueElememtId from 'Utilities/getUniqueElementId';
|
||||||
import HintedSelectInputOption from './HintedSelectInputOption';
|
import HintedSelectInputOption from './HintedSelectInputOption';
|
||||||
|
import HintedSelectInputSelectedValue from './HintedSelectInputSelectedValue';
|
||||||
|
import TextInput from './TextInput';
|
||||||
import styles from './EnhancedSelectInput.css';
|
import styles from './EnhancedSelectInput.css';
|
||||||
|
|
||||||
function isArrowKey(keyCode) {
|
function isArrowKey(keyCode) {
|
||||||
|
@ -149,7 +149,7 @@ class EnhancedSelectInput extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
};
|
||||||
|
|
||||||
onWindowClick = (event) => {
|
onWindowClick = (event) => {
|
||||||
const button = document.getElementById(this._buttonId);
|
const button = document.getElementById(this._buttonId);
|
||||||
|
@ -168,14 +168,14 @@ class EnhancedSelectInput extends Component {
|
||||||
this.setState({ isOpen: false });
|
this.setState({ isOpen: false });
|
||||||
this._removeListener();
|
this._removeListener();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
onFocus = () => {
|
onFocus = () => {
|
||||||
if (this.state.isOpen) {
|
if (this.state.isOpen) {
|
||||||
this._removeListener();
|
this._removeListener();
|
||||||
this.setState({ isOpen: false });
|
this.setState({ isOpen: false });
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
onBlur = () => {
|
onBlur = () => {
|
||||||
if (!this.props.isEditable) {
|
if (!this.props.isEditable) {
|
||||||
|
@ -186,7 +186,7 @@ class EnhancedSelectInput extends Component {
|
||||||
this.setState({ selectedIndex: origIndex });
|
this.setState({ selectedIndex: origIndex });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
onKeyDown = (event) => {
|
onKeyDown = (event) => {
|
||||||
const {
|
const {
|
||||||
|
@ -253,7 +253,7 @@ class EnhancedSelectInput extends Component {
|
||||||
if (!_.isEmpty(newState)) {
|
if (!_.isEmpty(newState)) {
|
||||||
this.setState(newState);
|
this.setState(newState);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
onPress = () => {
|
onPress = () => {
|
||||||
if (this.state.isOpen) {
|
if (this.state.isOpen) {
|
||||||
|
@ -267,7 +267,7 @@ class EnhancedSelectInput extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({ isOpen: !this.state.isOpen });
|
this.setState({ isOpen: !this.state.isOpen });
|
||||||
}
|
};
|
||||||
|
|
||||||
onSelect = (value) => {
|
onSelect = (value) => {
|
||||||
if (Array.isArray(this.props.value)) {
|
if (Array.isArray(this.props.value)) {
|
||||||
|
@ -291,15 +291,15 @@ class EnhancedSelectInput extends Component {
|
||||||
value
|
value
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
onMeasure = ({ width }) => {
|
onMeasure = ({ width }) => {
|
||||||
this.setState({ width });
|
this.setState({ width });
|
||||||
}
|
};
|
||||||
|
|
||||||
onOptionsModalClose = () => {
|
onOptionsModalClose = () => {
|
||||||
this.setState({ isOpen: false });
|
this.setState({ isOpen: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Render
|
// Render
|
||||||
|
|
|
@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { fetchOptions, clearOptions, defaultState } from 'Store/Actions/providerOptionActions';
|
import { clearOptions, defaultState, fetchOptions } from 'Store/Actions/providerOptionActions';
|
||||||
import EnhancedSelectInput from './EnhancedSelectInput';
|
import EnhancedSelectInput from './EnhancedSelectInput';
|
||||||
|
|
||||||
const importantFieldNames = [
|
const importantFieldNames = [
|
||||||
|
@ -73,7 +73,7 @@ class EnhancedSelectInputConnector extends Component {
|
||||||
|
|
||||||
componentDidMount = () => {
|
componentDidMount = () => {
|
||||||
this._populate();
|
this._populate();
|
||||||
}
|
};
|
||||||
|
|
||||||
componentDidUpdate = (prevProps) => {
|
componentDidUpdate = (prevProps) => {
|
||||||
const prevKey = getProviderDataKey(prevProps.providerData);
|
const prevKey = getProviderDataKey(prevProps.providerData);
|
||||||
|
@ -82,11 +82,11 @@ class EnhancedSelectInputConnector extends Component {
|
||||||
if (!_.isEqual(prevKey, nextKey)) {
|
if (!_.isEqual(prevKey, nextKey)) {
|
||||||
this.setState({ refetchRequired: true });
|
this.setState({ refetchRequired: true });
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
componentWillUnmount = () => {
|
componentWillUnmount = () => {
|
||||||
this._cleanup();
|
this._cleanup();
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
@ -95,7 +95,7 @@ class EnhancedSelectInputConnector extends Component {
|
||||||
if (this.state.refetchRequired) {
|
if (this.state.refetchRequired) {
|
||||||
this._populate();
|
this._populate();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Control
|
// Control
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue