mirror of
https://github.com/Readarr/Readarr.git
synced 2026-04-17 21:25:39 -04:00
Compare commits
212 Commits
sonarr-pul
...
v0.2.0.190
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
749684e24a | ||
|
|
3a0ca45aa9 | ||
|
|
595efd498e | ||
|
|
dea1060d61 | ||
|
|
f6049b8bf2 | ||
|
|
53ced38221 | ||
|
|
3a3cf8511e | ||
|
|
9ec913337d | ||
|
|
9a2120ae92 | ||
|
|
818d3a94d5 | ||
|
|
4e493b74e6 | ||
|
|
c7eaf1e85c | ||
|
|
31fe15c911 | ||
|
|
2c36a6c25f | ||
|
|
6af56f7a15 | ||
|
|
6e13191c25 | ||
|
|
921ddfc962 | ||
|
|
22f977401a | ||
|
|
113d9a07ef | ||
|
|
0560d65ea1 | ||
|
|
94ff105104 | ||
|
|
9bcf258aa9 | ||
|
|
54985bd4ca | ||
|
|
9e4d551f08 | ||
|
|
8390da1c2a | ||
|
|
44ae043c58 | ||
|
|
bb7e2fc70c | ||
|
|
b05938a9a8 | ||
|
|
1e42ac572e | ||
|
|
649dd0bda0 | ||
|
|
de24aef059 | ||
|
|
10766dd227 | ||
|
|
257d279e43 | ||
|
|
1db333088a | ||
|
|
d1aff31593 | ||
|
|
89dd4d3271 | ||
|
|
fc6c78a54e | ||
|
|
c98f4512df | ||
|
|
0a43481aed | ||
|
|
df6c142250 | ||
|
|
58cf93e360 | ||
|
|
7be282ad12 | ||
|
|
7920378789 | ||
|
|
bdcf336d94 | ||
|
|
3828492226 | ||
|
|
3cab98e2c0 | ||
|
|
c977311227 | ||
|
|
ca775df3d1 | ||
|
|
fecb3895ed | ||
|
|
91fadd5430 | ||
|
|
79d4e1a89a | ||
|
|
149c18dd4f | ||
|
|
3171c6f195 | ||
|
|
baf19897ff | ||
|
|
accd16da71 | ||
|
|
9aa5bee493 | ||
|
|
c22ed7172d | ||
|
|
8ddff3868d | ||
|
|
1307f8f5b1 | ||
|
|
985f0fa4a6 | ||
|
|
e199e40621 | ||
|
|
4734cad9b1 | ||
|
|
c744b00b55 | ||
|
|
c88f4570b3 | ||
|
|
c0e8a3e55a | ||
|
|
1ab34a1692 | ||
|
|
2dc5246180 | ||
|
|
234ad835af | ||
|
|
b5a30af422 | ||
|
|
0463193127 | ||
|
|
8bec6c91c9 | ||
|
|
cb511dc19d | ||
|
|
34f0c1820a | ||
|
|
e33b192881 | ||
|
|
00a532c656 | ||
|
|
501cefa2f4 | ||
|
|
1a3e5fd738 | ||
|
|
751ade0338 | ||
|
|
e6da9d26fd | ||
|
|
ccd8d93e82 | ||
|
|
a0ea9d4750 | ||
|
|
a07b9a19ec | ||
|
|
9ba1caaf94 | ||
|
|
d90a6ebbb1 | ||
|
|
d7575f38a5 | ||
|
|
833fb9347f | ||
|
|
b44f4237d2 | ||
|
|
19eec0cb88 | ||
|
|
43367504a4 | ||
|
|
a11b6088dd | ||
|
|
ba6a3ef564 | ||
|
|
d536e2c582 | ||
|
|
72f1d1cf4d | ||
|
|
07a3ee76aa | ||
|
|
b34cc0790b | ||
|
|
1c59aa1ac4 | ||
|
|
16753a9fc7 | ||
|
|
32a62aec2d | ||
|
|
045f1a85df | ||
|
|
9f3c0cf914 | ||
|
|
b7fb42345c | ||
|
|
44673eb4ee | ||
|
|
ff4594aa08 | ||
|
|
1495fa183f | ||
|
|
2f7d7fb220 | ||
|
|
3f58693780 | ||
|
|
d7b1a36a50 | ||
|
|
b55c09ba3d | ||
|
|
5358b7f7ec | ||
|
|
8e95a87ec3 | ||
|
|
d6112d1d8e | ||
|
|
72ef8b91d4 | ||
|
|
9423ddeb34 | ||
|
|
f7b2bba2e7 | ||
|
|
5609dfa590 | ||
|
|
c43e9eb208 | ||
|
|
0411102f57 | ||
|
|
f26fd39709 | ||
|
|
55308bef8b | ||
|
|
6827ac5670 | ||
|
|
0572bde41e | ||
|
|
0eb88cb516 | ||
|
|
a39be51d3e | ||
|
|
b37fd60b85 | ||
|
|
c827859ba0 | ||
|
|
35b466e4ca | ||
|
|
486ec14ca8 | ||
|
|
86d1250831 | ||
|
|
145422e00a | ||
|
|
3a274bdc4a | ||
|
|
e9ada0b43d | ||
|
|
a2832cf329 | ||
|
|
bbdecb343b | ||
|
|
a857e7c6f4 | ||
|
|
906fb30179 | ||
|
|
28f64d9a46 | ||
|
|
816969d0f5 | ||
|
|
63506e5a72 | ||
|
|
817ea75288 | ||
|
|
7e0eca5657 | ||
|
|
5587af7806 | ||
|
|
a90f5f7b4e | ||
|
|
b97d63cb5b | ||
|
|
10e230cc06 | ||
|
|
5c5c362d96 | ||
|
|
0aec2382fe | ||
|
|
677d5d3374 | ||
|
|
ca0f2be194 | ||
|
|
780df3250f | ||
|
|
508b2d7c8d | ||
|
|
96aeb022ab | ||
|
|
b27f852154 | ||
|
|
3c03413d5a | ||
|
|
c34418b984 | ||
|
|
761a6a9136 | ||
|
|
92c59e158d | ||
|
|
5bc917c9dc | ||
|
|
7c03ca5cdf | ||
|
|
b3cf903a3b | ||
|
|
a4930474a5 | ||
|
|
06baae060d | ||
|
|
4e5c7bc0a3 | ||
|
|
a939adb2b1 | ||
|
|
6858db686c | ||
|
|
7a5e2c248c | ||
|
|
f2d57c6c5e | ||
|
|
32c9734d70 | ||
|
|
2d732f0454 | ||
|
|
20835291e6 | ||
|
|
f5d6b2de11 | ||
|
|
d51f7cc02b | ||
|
|
8d41d0106a | ||
|
|
fd08e9d2c4 | ||
|
|
a1ee6aa8ac | ||
|
|
ddbb8b211f | ||
|
|
bea61edb4e | ||
|
|
db7bb14491 | ||
|
|
7a7039b1f7 | ||
|
|
1978a726bb | ||
|
|
2412b38333 | ||
|
|
dbed46dd5b | ||
|
|
63670f55b0 | ||
|
|
60cc22b543 | ||
|
|
3229d3ef59 | ||
|
|
349a19855a | ||
|
|
b8b364b48e | ||
|
|
571805d05f | ||
|
|
8de7f48b80 | ||
|
|
37a3799c66 | ||
|
|
b1d22b6339 | ||
|
|
a28fd4415e | ||
|
|
c95ffdc4d6 | ||
|
|
e5d8d01105 | ||
|
|
bb9bf743d8 | ||
|
|
99d3e80d0c | ||
|
|
640c0f5d52 | ||
|
|
861e569422 | ||
|
|
d7eedb6079 | ||
|
|
0a1066eee7 | ||
|
|
0f9d8d61a2 | ||
|
|
a2c9ed0b59 | ||
|
|
ea91b3df17 | ||
|
|
f9d5fa37a3 | ||
|
|
fc6a02c2e2 | ||
|
|
362401a847 | ||
|
|
e495f8bcc9 | ||
|
|
934563656c | ||
|
|
6323cae373 | ||
|
|
55999a8bad | ||
|
|
0b3d49db32 | ||
|
|
b3cc5740ee | ||
|
|
e5ad7407a7 |
@@ -36,9 +36,18 @@ dotnet_naming_style.instance_field_style.capitalization = camel_case
|
|||||||
dotnet_naming_style.instance_field_style.required_prefix = _
|
dotnet_naming_style.instance_field_style.required_prefix = _
|
||||||
|
|
||||||
# Prefer "var" everywhere
|
# Prefer "var" everywhere
|
||||||
csharp_style_var_for_built_in_types = true:suggestion
|
csharp_style_var_for_built_in_types = true
|
||||||
csharp_style_var_when_type_is_apparent = true:suggestion
|
csharp_style_var_when_type_is_apparent = true
|
||||||
csharp_style_var_elsewhere = true:suggestion
|
csharp_style_var_elsewhere = true
|
||||||
|
# Prefer "out" variables to be declared inline
|
||||||
|
csharp_style_inlined_variable_declaration = true
|
||||||
|
|
||||||
|
# Using directive is unnecessary.
|
||||||
|
dotnet_diagnostic.IDE0005.severity = error
|
||||||
|
# Use var instead of explicit type
|
||||||
|
dotnet_diagnostic.IDE0007.severity = error
|
||||||
|
# Inline variable declaration
|
||||||
|
dotnet_diagnostic.IDE0018.severity = error
|
||||||
|
|
||||||
# Stylecop Rules
|
# Stylecop Rules
|
||||||
dotnet_diagnostic.SA0001.severity = none
|
dotnet_diagnostic.SA0001.severity = none
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"paths": [
|
|
||||||
"frontend/src/**/*.js"
|
|
||||||
],
|
|
||||||
"ignored": [
|
|
||||||
"**/node_modules/**/*"
|
|
||||||
],
|
|
||||||
"port": 5004
|
|
||||||
}
|
|
||||||
7
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
7
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -73,3 +73,10 @@ body:
|
|||||||
Additionally, any additional info? Screenshots? References? Anything that will give us more context about the issue you are encountering!
|
Additionally, any additional info? Screenshots? References? Anything that will give us more context about the issue you are encountering!
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Trace Logs have been provided as applicable. Reports may be closed if the required logs are not provided.
|
||||||
|
description: Trace logs are generally required for all bug reports
|
||||||
|
options:
|
||||||
|
- label: I have followed the steps in the wiki link above and provided the required trace logs that are relevant and show this issue.
|
||||||
|
required: true
|
||||||
|
|||||||
28
.github/labeler.yml
vendored
Normal file
28
.github/labeler.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
'Area: API':
|
||||||
|
- src/Readarr.Api.V1/**/*
|
||||||
|
|
||||||
|
'Area: Db-migration':
|
||||||
|
- src/NzbDrone.Core/Datastore/Migration/*
|
||||||
|
|
||||||
|
'Area: Download Clients':
|
||||||
|
- src/NzbDrone.Core/Download/Clients/**/*
|
||||||
|
|
||||||
|
'Area: Import Lists':
|
||||||
|
- src/NzbDrone.Core/ImportLists/**/*
|
||||||
|
|
||||||
|
'Area: Indexer':
|
||||||
|
- src/NzbDrone.Core/Indexers/**/*
|
||||||
|
|
||||||
|
'Area: Notifications':
|
||||||
|
- src/NzbDrone.Core/Notifications/**/*
|
||||||
|
|
||||||
|
'Area: Organizer':
|
||||||
|
- src/NzbDrone.Core/Organizer/**/*
|
||||||
|
|
||||||
|
'Area: Parser':
|
||||||
|
- src/NzbDrone.Core/Parser/**/*
|
||||||
|
|
||||||
|
'Area: UI':
|
||||||
|
- frontend/**/*
|
||||||
|
- package.json
|
||||||
|
- yarn.lock
|
||||||
12
.github/workflows/labeler.yml
vendored
Normal file
12
.github/workflows/labeler.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
name: "Pull Request Labeler"
|
||||||
|
on:
|
||||||
|
- pull_request_target
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
triage:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/labeler@v4
|
||||||
12
.github/workflows/lock.yml
vendored
12
.github/workflows/lock.yml
vendored
@@ -9,13 +9,13 @@ jobs:
|
|||||||
lock:
|
lock:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: dessant/lock-threads@v2
|
- uses: dessant/lock-threads@v4
|
||||||
with:
|
with:
|
||||||
github-token: ${{ github.token }}
|
github-token: ${{ github.token }}
|
||||||
issue-lock-inactive-days: '90'
|
issue-inactive-days: '90'
|
||||||
issue-exclude-created-before: ''
|
exclude-issue-created-before: ''
|
||||||
issue-exclude-labels: ''
|
exclude-any-issue-labels: ''
|
||||||
issue-lock-labels: ''
|
add-issue-labels: ''
|
||||||
issue-lock-comment: ''
|
issue-comment: ''
|
||||||
issue-lock-reason: 'resolved'
|
issue-lock-reason: 'resolved'
|
||||||
process-only: ''
|
process-only: ''
|
||||||
|
|||||||
15
.github/workflows/support.yml
vendored
15
.github/workflows/support.yml
vendored
@@ -8,7 +8,7 @@ jobs:
|
|||||||
support:
|
support:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: dessant/support-requests@v2
|
- uses: dessant/support-requests@v3
|
||||||
with:
|
with:
|
||||||
github-token: ${{ github.token }}
|
github-token: ${{ github.token }}
|
||||||
support-label: 'Type: Support'
|
support-label: 'Type: Support'
|
||||||
@@ -18,4 +18,15 @@ jobs:
|
|||||||
to be a support request. Please hop over onto our [Discord](https://readarr.com/discord)
|
to be a support request. Please hop over onto our [Discord](https://readarr.com/discord)
|
||||||
or [Subreddit](https://reddit.com/r/readarr)
|
or [Subreddit](https://reddit.com/r/readarr)
|
||||||
close-issue: true
|
close-issue: true
|
||||||
lock-issue: false
|
lock-issue: false
|
||||||
|
- uses: dessant/support-requests@v3
|
||||||
|
with:
|
||||||
|
github-token: ${{ github.token }}
|
||||||
|
support-label: 'Status: Logs Needed'
|
||||||
|
issue-comment: >
|
||||||
|
:wave: @{issue-author}, In order to help you further we'll need to see logs.
|
||||||
|
You'll need to enable trace logging and replicate the problem that you encountered.
|
||||||
|
Guidance on how to enable trace logging can be found in
|
||||||
|
our [troubleshooting guide](https://wiki.servarr.com/readarr/troubleshooting#logging-and-log-files).
|
||||||
|
close-issue: false
|
||||||
|
lock-issue: false
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -148,3 +148,6 @@ _temp_*/**/*
|
|||||||
## Merge any idea folder
|
## Merge any idea folder
|
||||||
*/**/.idea
|
*/**/.idea
|
||||||
*.iml
|
*.iml
|
||||||
|
|
||||||
|
# API doc generation
|
||||||
|
.config/
|
||||||
|
|||||||
@@ -9,13 +9,14 @@ variables:
|
|||||||
testsFolder: './_tests'
|
testsFolder: './_tests'
|
||||||
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
|
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
|
||||||
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
|
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
|
||||||
majorVersion: '0.1.5'
|
majorVersion: '0.2.0'
|
||||||
minorVersion: $[counter('minorVersion', 1)]
|
minorVersion: $[counter('minorVersion', 1)]
|
||||||
readarrVersion: '$(majorVersion).$(minorVersion)'
|
readarrVersion: '$(majorVersion).$(minorVersion)'
|
||||||
buildName: '$(Build.SourceBranchName).$(readarrVersion)'
|
buildName: '$(Build.SourceBranchName).$(readarrVersion)'
|
||||||
sentryOrg: 'servarr'
|
sentryOrg: 'servarr'
|
||||||
sentryUrl: 'https://sentry.servarr.com'
|
sentryUrl: 'https://sentry.servarr.com'
|
||||||
dotnetVersion: '6.0.302'
|
dotnetVersion: '6.0.408'
|
||||||
|
nodeVersion: '16.X'
|
||||||
innoVersion: '6.2.0'
|
innoVersion: '6.2.0'
|
||||||
windowsImage: 'windows-2022'
|
windowsImage: 'windows-2022'
|
||||||
linuxImage: 'ubuntu-20.04'
|
linuxImage: 'ubuntu-20.04'
|
||||||
@@ -182,7 +183,7 @@ stages:
|
|||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
displayName: Set Node.js version
|
displayName: Set Node.js version
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: '12.x'
|
versionSpec: $(nodeVersion)
|
||||||
- checkout: self
|
- checkout: self
|
||||||
submodules: true
|
submodules: true
|
||||||
fetchDepth: 1
|
fetchDepth: 1
|
||||||
@@ -917,7 +918,7 @@ stages:
|
|||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
displayName: Set Node.js version
|
displayName: Set Node.js version
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: '12.x'
|
versionSpec: $(nodeVersion)
|
||||||
- checkout: self
|
- checkout: self
|
||||||
submodules: true
|
submodules: true
|
||||||
fetchDepth: 1
|
fetchDepth: 1
|
||||||
@@ -955,6 +956,55 @@ stages:
|
|||||||
cliProjectVersion: '$(readarrVersion)'
|
cliProjectVersion: '$(readarrVersion)'
|
||||||
cliSources: './frontend'
|
cliSources: './frontend'
|
||||||
- task: SonarCloudAnalyze@1
|
- task: SonarCloudAnalyze@1
|
||||||
|
|
||||||
|
- job: Api_Docs
|
||||||
|
displayName: API Docs
|
||||||
|
condition: |
|
||||||
|
and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))
|
||||||
|
|
||||||
|
pool:
|
||||||
|
vmImage: ${{ variables.windowsImage }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- task: UseDotNet@2
|
||||||
|
displayName: 'Install .net core'
|
||||||
|
inputs:
|
||||||
|
version: $(dotnetVersion)
|
||||||
|
- checkout: self
|
||||||
|
submodules: true
|
||||||
|
persistCredentials: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- bash: ./docs.sh Windows
|
||||||
|
displayName: Create openapi.json
|
||||||
|
- bash: |
|
||||||
|
git config --global user.email "development@lidarr.audio"
|
||||||
|
git config --global user.name "Servarr"
|
||||||
|
git checkout -b api-docs
|
||||||
|
git add .
|
||||||
|
git status
|
||||||
|
if git status | grep modified
|
||||||
|
then
|
||||||
|
git commit -am 'Automated API Docs update [skip ci]'
|
||||||
|
git push -f --set-upstream origin api-docs
|
||||||
|
curl -X POST -H "Authorization: token ${GITHUBTOKEN}" -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/readarr/readarr/pulls -d '{"head":"api-docs","base":"develop","title":"Update API docs"}'
|
||||||
|
else
|
||||||
|
echo "No changes since last run"
|
||||||
|
fi
|
||||||
|
displayName: Commit API Doc Change
|
||||||
|
continueOnError: true
|
||||||
|
env:
|
||||||
|
GITHUBTOKEN: $(githubToken)
|
||||||
|
- task: CopyFiles@2
|
||||||
|
displayName: 'Copy openapi.json to: $(Build.ArtifactStagingDirectory)'
|
||||||
|
inputs:
|
||||||
|
SourceFolder: '$(Build.SourcesDirectory)'
|
||||||
|
Contents: |
|
||||||
|
**/*openapi.json
|
||||||
|
TargetFolder: '$(Build.ArtifactStagingDirectory)/api_docs'
|
||||||
|
- publish: $(Build.ArtifactStagingDirectory)/api_docs
|
||||||
|
artifact: 'APIDocs'
|
||||||
|
displayName: Publish API Docs Bundle
|
||||||
|
condition: and(succeeded(), eq(variables['System.JobAttempt'], '1'))
|
||||||
|
|
||||||
- job: Analyze_Backend
|
- job: Analyze_Backend
|
||||||
displayName: Backend
|
displayName: Backend
|
||||||
|
|||||||
38
docs.sh
Normal file
38
docs.sh
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
PLATFORM=$1
|
||||||
|
|
||||||
|
if [ "$PLATFORM" = "Windows" ]; then
|
||||||
|
RUNTIME="win-x64"
|
||||||
|
elif [ "$PLATFORM" = "Linux" ]; then
|
||||||
|
RUNTIME="linux-x64"
|
||||||
|
elif [ "$PLATFORM" = "Mac" ]; then
|
||||||
|
RUNTIME="osx-x64"
|
||||||
|
else
|
||||||
|
echo "Platform must be provided as first arguement: Windows, Linux or Mac"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
outputFolder='_output'
|
||||||
|
testPackageFolder='_tests'
|
||||||
|
|
||||||
|
rm -rf $outputFolder
|
||||||
|
rm -rf $testPackageFolder
|
||||||
|
|
||||||
|
slnFile=src/Readarr.sln
|
||||||
|
|
||||||
|
platform=Posix
|
||||||
|
|
||||||
|
dotnet clean $slnFile -c Debug
|
||||||
|
dotnet clean $slnFile -c Release
|
||||||
|
|
||||||
|
dotnet msbuild -restore $slnFile -p:Configuration=Debug -p:Platform=$platform -p:RuntimeIdentifiers=$RUNTIME -t:PublishAllRids
|
||||||
|
|
||||||
|
dotnet new tool-manifest
|
||||||
|
dotnet tool install --version 6.5.0 Swashbuckle.AspNetCore.Cli
|
||||||
|
|
||||||
|
dotnet tool run swagger tofile --output ./src/Readarr.Api.V1/openapi.json "$outputFolder/net6.0/$RUNTIME/Readarr.console.dll" v1 &
|
||||||
|
|
||||||
|
sleep 45
|
||||||
|
|
||||||
|
kill %1
|
||||||
|
|
||||||
|
exit 0
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
"remove-empty-rulesets": true,
|
|
||||||
"always-semicolon": true,
|
|
||||||
"color-case": "lower",
|
|
||||||
"block-indent": " ",
|
|
||||||
"color-shorthand": false,
|
|
||||||
"element-case": "lower",
|
|
||||||
"eof-newline": true,
|
|
||||||
"leading-zero": true,
|
|
||||||
"quotes": "double",
|
|
||||||
"sort-order-fallback": "abc",
|
|
||||||
"space-before-colon": "",
|
|
||||||
"space-after-colon": " ",
|
|
||||||
"space-before-combinator": " ",
|
|
||||||
"space-after-combinator": " ",
|
|
||||||
"space-between-declarations": "\n",
|
|
||||||
"space-before-opening-brace": " ",
|
|
||||||
"space-after-opening-brace": "\n",
|
|
||||||
"space-after-selector-delimiter": " ",
|
|
||||||
"space-before-selector-delimiter": "",
|
|
||||||
"space-before-closing-brace": "\n",
|
|
||||||
"strip-spaces": true,
|
|
||||||
"tab-size": true,
|
|
||||||
"unitless-zero": false
|
|
||||||
}
|
|
||||||
@@ -1,335 +0,0 @@
|
|||||||
{
|
|
||||||
"indent": {
|
|
||||||
"value": " ",
|
|
||||||
"FunctionExpression": 1,
|
|
||||||
"ArrayExpression": 1,
|
|
||||||
"ObjectExpression": 1
|
|
||||||
},
|
|
||||||
"lineBreak": {
|
|
||||||
"value": "\n",
|
|
||||||
|
|
||||||
"before": {
|
|
||||||
"ArrayPatternClosing": 0,
|
|
||||||
"ArrayPatternComma": 0,
|
|
||||||
"ArrayPatternOpening": 0,
|
|
||||||
"ArrowFunctionExpressionArrow": 0,
|
|
||||||
"ArrowFunctionExpressionClosingBrace": ">=1",
|
|
||||||
"ArrowFunctionExpressionOpeningBrace": 0,
|
|
||||||
"AssignmentExpression": ">=1",
|
|
||||||
"AssignmentOperator": 0,
|
|
||||||
"BlockStatement": 0,
|
|
||||||
"BreakKeyword": ">=1",
|
|
||||||
"CallExpression": -1,
|
|
||||||
"CallExpressionClosingParentheses": -1,
|
|
||||||
"CallExpressionOpeningParentheses": 0,
|
|
||||||
"CatchClosingBrace": ">=1",
|
|
||||||
"CatchKeyword": 0,
|
|
||||||
"CatchOpeningBrace": 0,
|
|
||||||
"ClassDeclaration": ">=1",
|
|
||||||
"ClassDeclarationClosingBrace": ">=1",
|
|
||||||
"ClassDeclarationOpeningBrace": 0,
|
|
||||||
"ConditionalExpression": ">=1",
|
|
||||||
"DeleteOperator": ">=1",
|
|
||||||
"DoWhileStatement": ">=1",
|
|
||||||
"DoWhileStatementClosingBrace": ">=1",
|
|
||||||
"DoWhileStatementOpeningBrace": 0,
|
|
||||||
"ElseIfStatement": 0,
|
|
||||||
"ElseIfStatementClosingBrace": ">=1",
|
|
||||||
"ElseIfStatementOpeningBrace": 0,
|
|
||||||
"ElseStatement": 0,
|
|
||||||
"ElseStatementClosingBrace": ">=1",
|
|
||||||
"ElseStatementOpeningBrace": 0,
|
|
||||||
"EmptyStatement": -1,
|
|
||||||
"EndOfFile": -1,
|
|
||||||
"FinallyClosingBrace": ">=1",
|
|
||||||
"FinallyKeyword": -1,
|
|
||||||
"FinallyOpeningBrace": 0,
|
|
||||||
"ForInStatement": ">=1",
|
|
||||||
"ForInStatementClosingBrace": ">=1",
|
|
||||||
"ForInStatementExpressionClosing": 0,
|
|
||||||
"ForInStatementExpressionOpening": 0,
|
|
||||||
"ForInStatementOpeningBrace": 0,
|
|
||||||
"ForStatement": ">=1",
|
|
||||||
"ForStatementClosingBrace": ">=1",
|
|
||||||
"ForStatementExpressionClosing": "<2",
|
|
||||||
"ForStatementExpressionOpening": 0,
|
|
||||||
"ForStatementOpeningBrace": 0,
|
|
||||||
"FunctionDeclaration": ">=1",
|
|
||||||
"FunctionDeclarationClosingBrace": ">=1",
|
|
||||||
"FunctionDeclarationOpeningBrace": 0,
|
|
||||||
"FunctionExpression": 0,
|
|
||||||
"FunctionExpressionClosingBrace": 1,
|
|
||||||
"FunctionExpressionOpeningBrace":0,
|
|
||||||
"IIFEClosingParentheses": 0,
|
|
||||||
"IfStatement": ">=1",
|
|
||||||
"IfStatementClosingBrace": ">=1",
|
|
||||||
"IfStatementOpeningBrace": 0,
|
|
||||||
"LogicalExpression": -1,
|
|
||||||
"MemberExpressionClosing": 0,
|
|
||||||
"MemberExpressionOpening": 0,
|
|
||||||
"MemberExpressionPeriod": -1,
|
|
||||||
"MethodDefinition": ">=1",
|
|
||||||
"ObjectExpressionClosingBrace": "<=1",
|
|
||||||
"ObjectPatternClosingBrace": 0,
|
|
||||||
"ObjectPatternComma": 0,
|
|
||||||
"ObjectPatternOpeningBrace": 0,
|
|
||||||
"ParameterDefault": 0,
|
|
||||||
"Property": "<=2",
|
|
||||||
"PropertyValue": 0,
|
|
||||||
"ReturnStatement": -1,
|
|
||||||
"SwitchClosingBrace": ">=1",
|
|
||||||
"SwitchOpeningBrace": 0,
|
|
||||||
"ThisExpression": -1,
|
|
||||||
"ThrowStatement": ">=1",
|
|
||||||
"TryClosingBrace": ">=1",
|
|
||||||
"TryKeyword": -1,
|
|
||||||
"TryOpeningBrace": 0,
|
|
||||||
"VariableDeclaration": ">=1",
|
|
||||||
"VariableDeclarationSemiColon": 0,
|
|
||||||
"VariableDeclarationWithoutInit": ">=1",
|
|
||||||
"VariableName": ">=1",
|
|
||||||
"VariableValue": 0,
|
|
||||||
"WhileStatement": ">=1",
|
|
||||||
"WhileStatementClosingBrace": ">=1",
|
|
||||||
"WhileStatementOpeningBrace": 0
|
|
||||||
},
|
|
||||||
|
|
||||||
"after": {
|
|
||||||
"ArrayPatternClosing": 0,
|
|
||||||
"ArrayPatternComma": 0,
|
|
||||||
"ArrayPatternOpening": 0,
|
|
||||||
"ArrowFunctionExpressionArrow": 0,
|
|
||||||
"ArrowFunctionExpressionClosingBrace": -1,
|
|
||||||
"ArrowFunctionExpressionOpeningBrace": ">=1",
|
|
||||||
"AssignmentExpression": ">=1",
|
|
||||||
"AssignmentOperator": 0,
|
|
||||||
"BlockStatement": 0,
|
|
||||||
"BreakKeyword": -1,
|
|
||||||
"CallExpression": -1,
|
|
||||||
"CallExpressionClosingParentheses": -1,
|
|
||||||
"CallExpressionOpeningParentheses": -1,
|
|
||||||
"CatchClosingBrace": ">=0",
|
|
||||||
"CatchKeyword": 0,
|
|
||||||
"CatchOpeningBrace": ">=1",
|
|
||||||
"ClassDeclaration": ">=1",
|
|
||||||
"ClassDeclarationClosingBrace": ">=1",
|
|
||||||
"ClassDeclarationOpeningBrace": ">=1",
|
|
||||||
"ConditionalExpression": ">=1",
|
|
||||||
"DeleteOperator": ">=1",
|
|
||||||
"DoWhileStatement": ">=1",
|
|
||||||
"DoWhileStatementClosingBrace": 0,
|
|
||||||
"DoWhileStatementOpeningBrace": ">=1",
|
|
||||||
"ElseIfStatement": ">=1",
|
|
||||||
"ElseIfStatementClosingBrace": ">=1",
|
|
||||||
"ElseIfStatementOpeningBrace": ">=1",
|
|
||||||
"ElseStatement": ">=1",
|
|
||||||
"ElseStatementClosingBrace": ">=1",
|
|
||||||
"ElseStatementOpeningBrace": ">=1",
|
|
||||||
"EmptyStatement": -1,
|
|
||||||
"FinallyClosingBrace": ">=1",
|
|
||||||
"FinallyKeyword": -1,
|
|
||||||
"FinallyOpeningBrace": ">=1",
|
|
||||||
"ForInStatement": ">=1",
|
|
||||||
"ForInStatementClosingBrace": ">=1",
|
|
||||||
"ForInStatementExpressionClosing": -1,
|
|
||||||
"ForInStatementExpressionOpening": "<2",
|
|
||||||
"ForInStatementOpeningBrace": ">=1",
|
|
||||||
"ForStatement": ">=1",
|
|
||||||
"ForStatementClosingBrace": ">=1",
|
|
||||||
"ForStatementExpressionClosing": -1,
|
|
||||||
"ForStatementExpressionOpening": "<2",
|
|
||||||
"ForStatementOpeningBrace": ">=1",
|
|
||||||
"FunctionDeclaration": ">=1",
|
|
||||||
"FunctionDeclarationClosingBrace": ">=1",
|
|
||||||
"FunctionDeclarationOpeningBrace": ">=1",
|
|
||||||
"FunctionExpression": 0,
|
|
||||||
"FunctionExpressionClosingBrace": -1,
|
|
||||||
"FunctionExpressionOpeningBrace": 1,
|
|
||||||
"IIFEOpeningParentheses": 0,
|
|
||||||
"IfStatement": ">=1",
|
|
||||||
"IfStatementClosingBrace": ">=1",
|
|
||||||
"IfStatementOpeningBrace": ">=1",
|
|
||||||
"LogicalExpression": -1,
|
|
||||||
"MemberExpressionClosing": 0,
|
|
||||||
"MemberExpressionOpening": 0,
|
|
||||||
"MemberExpressionPeriod": 0,
|
|
||||||
"MethodDefinition": ">=1",
|
|
||||||
"ObjectExpressionOpeningBrace": "<=1",
|
|
||||||
"ObjectPatternClosingBrace": 0,
|
|
||||||
"ObjectPatternComma": 0,
|
|
||||||
"ObjectPatternOpeningBrace": 0,
|
|
||||||
"ParameterDefault": 0,
|
|
||||||
"Property": -1,
|
|
||||||
"PropertyName": 0,
|
|
||||||
"ReturnStatement": -1,
|
|
||||||
"SwitchCaseColon": ">=1",
|
|
||||||
"SwitchClosingBrace": ">=1",
|
|
||||||
"SwitchOpeningBrace": ">=1",
|
|
||||||
"ThisExpression": 0,
|
|
||||||
"ThrowStatement": ">=1",
|
|
||||||
"TryClosingBrace": 0,
|
|
||||||
"TryKeyword": -1,
|
|
||||||
"TryOpeningBrace": ">=1",
|
|
||||||
"VariableDeclaration": ">=1",
|
|
||||||
"VariableDeclarationSemiColon": ">=1",
|
|
||||||
"VariableValue": -1,
|
|
||||||
"WhileStatement": ">=1",
|
|
||||||
"WhileStatementClosingBrace": ">=1",
|
|
||||||
"WhileStatementOpeningBrace": ">=1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"whiteSpace": {
|
|
||||||
"value": " ",
|
|
||||||
"removeTrailing": 1,
|
|
||||||
"before": {
|
|
||||||
"ArgumentComma": 0,
|
|
||||||
"ArgumentList": 0,
|
|
||||||
"ArgumentListArrayExpression": 0,
|
|
||||||
"ArgumentListFunctionExpression": 1,
|
|
||||||
"ArgumentListObjectExpression": 0,
|
|
||||||
"ArrayExpressionClosing": 0,
|
|
||||||
"ArrayExpressionComma": 0,
|
|
||||||
"ArrayExpressionOpening": 1,
|
|
||||||
"AssignmentOperator": 1,
|
|
||||||
"BinaryExpression": 0,
|
|
||||||
"BinaryExpressionOperator": 1,
|
|
||||||
"BlockComment": 1,
|
|
||||||
"CallExpression": 1,
|
|
||||||
"CatchClosingBrace": 1,
|
|
||||||
"CatchKeyword": 1,
|
|
||||||
"CatchOpeningBrace": 1,
|
|
||||||
"CatchParameterList": 0,
|
|
||||||
"CommaOperator": 0,
|
|
||||||
"ConditionalExpressionAlternate": 1,
|
|
||||||
"ConditionalExpressionConsequent": 1,
|
|
||||||
"DoWhileStatementClosingBrace": 1,
|
|
||||||
"DoWhileStatementConditional": 1,
|
|
||||||
"DoWhileStatementOpeningBrace": 1,
|
|
||||||
"ElseIfStatementClosingBrace": 1,
|
|
||||||
"ElseIfStatementOpeningBrace": 1,
|
|
||||||
"ElseStatementClosingBrace": 1,
|
|
||||||
"ElseStatementOpeningBrace": 1,
|
|
||||||
"EmptyStatement": 0,
|
|
||||||
"ExpressionClosingParentheses": 0,
|
|
||||||
"FinallyClosingBrace": 1,
|
|
||||||
"FinallyKeyword": -1,
|
|
||||||
"FinallyOpeningBrace": 1,
|
|
||||||
"ForInStatement": 1,
|
|
||||||
"ForInStatementClosingBrace": 1,
|
|
||||||
"ForInStatementExpressionClosing": 0,
|
|
||||||
"ForInStatementExpressionOpening": 1,
|
|
||||||
"ForInStatementOpeningBrace": 1,
|
|
||||||
"ForStatement": 1,
|
|
||||||
"ForStatementClosingBrace": 1,
|
|
||||||
"ForStatementExpressionClosing": 0,
|
|
||||||
"ForStatementExpressionOpening": 1,
|
|
||||||
"ForStatementOpeningBrace": 1,
|
|
||||||
"ForStatementSemicolon": 0,
|
|
||||||
"FunctionDeclarationClosingBrace": 1,
|
|
||||||
"FunctionDeclarationOpeningBrace": 1,
|
|
||||||
"FunctionExpressionClosingBrace": 1,
|
|
||||||
"FunctionExpressionOpeningBrace": 1,
|
|
||||||
"IfStatementClosingBrace": 1,
|
|
||||||
"IfStatementConditionalClosing": 0,
|
|
||||||
"IfStatementConditionalOpening": 1,
|
|
||||||
"IfStatementOpeningBrace": 1,
|
|
||||||
"LineComment": 1,
|
|
||||||
"LogicalExpressionOperator": 1,
|
|
||||||
"MemberExpressionClosing": 0,
|
|
||||||
"ObjectExpressionClosingBrace": 1,
|
|
||||||
"ParameterComma": 0,
|
|
||||||
"ParameterList": 0,
|
|
||||||
"Property": 1,
|
|
||||||
"PropertyName": 1,
|
|
||||||
"PropertyValue": 1,
|
|
||||||
"SwitchDiscriminantClosing": 0,
|
|
||||||
"SwitchDiscriminantOpening": 1,
|
|
||||||
"ThrowKeyword": 1,
|
|
||||||
"TryClosingBrace": 1,
|
|
||||||
"TryKeyword": -1,
|
|
||||||
"TryOpeningBrace": 1,
|
|
||||||
"UnaryExpressionOperator": 0,
|
|
||||||
"VariableName": 1,
|
|
||||||
"VariableValue": 1,
|
|
||||||
"WhileStatementClosingBrace": 1,
|
|
||||||
"WhileStatementConditionalClosing": 0,
|
|
||||||
"WhileStatementConditionalOpening": 1,
|
|
||||||
"WhileStatementOpeningBrace": 1
|
|
||||||
},
|
|
||||||
"after": {
|
|
||||||
"ArgumentComma": 1,
|
|
||||||
"ArgumentList": 0,
|
|
||||||
"ArgumentListArrayExpression": 1,
|
|
||||||
"ArgumentListFunctionExpression": 1,
|
|
||||||
"ArgumentListObjectExpression": 0,
|
|
||||||
"ArrayExpressionClosing": 0,
|
|
||||||
"ArrayExpressionComma": 1,
|
|
||||||
"ArrayExpressionOpening": 0,
|
|
||||||
"AssignmentOperator": 1,
|
|
||||||
"BinaryExpression": 0,
|
|
||||||
"BinaryExpressionOperator": 1,
|
|
||||||
"BlockComment": 1,
|
|
||||||
"CallExpression": 0,
|
|
||||||
"CatchClosingBrace": 1,
|
|
||||||
"CatchKeyword": 1,
|
|
||||||
"CatchOpeningBrace": 1,
|
|
||||||
"CatchParameterList": 0,
|
|
||||||
"CommaOperator": 1,
|
|
||||||
"ConditionalExpressionConsequent": 1,
|
|
||||||
"ConditionalExpressionTest": 1,
|
|
||||||
"DoWhileStatementBody": 1,
|
|
||||||
"DoWhileStatementClosingBrace": 1,
|
|
||||||
"DoWhileStatementOpeningBrace": 1,
|
|
||||||
"ElseIfStatementClosingBrace": 1,
|
|
||||||
"ElseIfStatementOpeningBrace": 1,
|
|
||||||
"ElseStatementClosingBrace": 1,
|
|
||||||
"ElseStatementOpeningBrace": 1,
|
|
||||||
"EmptyStatement": 0,
|
|
||||||
"ExpressionOpeningParentheses": 0,
|
|
||||||
"FinallyClosingBrace": 1,
|
|
||||||
"FinallyKeyword": -1,
|
|
||||||
"FinallyOpeningBrace": 1,
|
|
||||||
"ForInStatement": 1,
|
|
||||||
"ForInStatementClosingBrace": 1,
|
|
||||||
"ForInStatementExpressionClosing": 1,
|
|
||||||
"ForInStatementExpressionOpening": 0,
|
|
||||||
"ForInStatementOpeningBrace": 1,
|
|
||||||
"ForStatement": 1,
|
|
||||||
"ForStatementClosingBrace": 1,
|
|
||||||
"ForStatementExpressionClosing": 1,
|
|
||||||
"ForStatementExpressionOpening": 0,
|
|
||||||
"ForStatementOpeningBrace": 1,
|
|
||||||
"ForStatementSemicolon": 1,
|
|
||||||
"FunctionDeclarationClosingBrace": 0,
|
|
||||||
"FunctionDeclarationOpeningBrace": 0,
|
|
||||||
"FunctionExpressionClosingBrace": 0,
|
|
||||||
"FunctionExpressionOpeningBrace": 0,
|
|
||||||
"FunctionName": 0,
|
|
||||||
"FunctionReservedWord": 0,
|
|
||||||
"IfStatementClosingBrace": 1,
|
|
||||||
"IfStatementConditionalClosing": 0,
|
|
||||||
"IfStatementConditionalOpening": 0,
|
|
||||||
"IfStatementOpeningBrace": 1,
|
|
||||||
"LogicalExpressionOperator": 1,
|
|
||||||
"MemberExpressionOpening": 0,
|
|
||||||
"ObjectExpressionClosingBrace": 0,
|
|
||||||
"ObjectExpressionOpeningBrace": 1,
|
|
||||||
"ParameterComma": 1,
|
|
||||||
"ParameterList": 0,
|
|
||||||
"PropertyName": 0,
|
|
||||||
"PropertyValue": 0,
|
|
||||||
"SwitchDiscriminantClosing": 1,
|
|
||||||
"SwitchDiscriminantOpening": 0,
|
|
||||||
"ThrowKeyword": 1,
|
|
||||||
"TryClosingBrace": 1,
|
|
||||||
"TryKeyword": -1,
|
|
||||||
"TryOpeningBrace": 1,
|
|
||||||
"UnaryExpressionOperator": 0,
|
|
||||||
"VariableName": 1,
|
|
||||||
"WhileStatementClosingBrace": 1,
|
|
||||||
"WhileStatementConditionalClosing": 1,
|
|
||||||
"WhileStatementConditionalOpening": 0,
|
|
||||||
"WhileStatementOpeningBrace": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +1,2 @@
|
|||||||
**/JsLibraries/**
|
**/JsLibraries/**
|
||||||
|
**/*.css.d.ts
|
||||||
|
|||||||
@@ -1,14 +1,21 @@
|
|||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
const path = require('path');
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
const typescriptEslintRecommended = require('@typescript-eslint/eslint-plugin').configs.recommended;
|
||||||
|
|
||||||
|
const frontendFolder = __dirname;
|
||||||
|
|
||||||
const dirs = fs
|
const dirs = fs
|
||||||
.readdirSync('frontend/src', { withFileTypes: true })
|
.readdirSync(path.join(frontendFolder, 'src'), { withFileTypes: true })
|
||||||
.filter((dirent) => dirent.isDirectory())
|
.filter((dirent) => dirent.isDirectory())
|
||||||
.map((dirent) => dirent.name)
|
.map((dirent) => dirent.name)
|
||||||
.join('|');
|
.join('|');
|
||||||
|
|
||||||
const frontendFolder = __dirname;
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
|
||||||
parser: '@babel/eslint-parser',
|
parser: '@babel/eslint-parser',
|
||||||
|
|
||||||
env: {
|
env: {
|
||||||
@@ -28,7 +35,7 @@ module.exports = {
|
|||||||
ecmaVersion: 6,
|
ecmaVersion: 6,
|
||||||
sourceType: 'module',
|
sourceType: 'module',
|
||||||
babelOptions: {
|
babelOptions: {
|
||||||
configFile: `${frontendFolder}/babel.config.js`,
|
configFile: `${frontendFolder}/babel.config.js`
|
||||||
},
|
},
|
||||||
ecmaFeatures: {
|
ecmaFeatures: {
|
||||||
modules: true,
|
modules: true,
|
||||||
@@ -41,7 +48,9 @@ module.exports = {
|
|||||||
'react',
|
'react',
|
||||||
'react-hooks',
|
'react-hooks',
|
||||||
'simple-import-sort',
|
'simple-import-sort',
|
||||||
'import'
|
'import',
|
||||||
|
'@typescript-eslint',
|
||||||
|
'prettier'
|
||||||
],
|
],
|
||||||
|
|
||||||
settings: {
|
settings: {
|
||||||
@@ -224,7 +233,7 @@ module.exports = {
|
|||||||
'consistent-this': ['error', 'self'],
|
'consistent-this': ['error', 'self'],
|
||||||
'eol-last': 'error',
|
'eol-last': 'error',
|
||||||
'func-names': 'off',
|
'func-names': 'off',
|
||||||
'func-style': ['error', 'declaration'],
|
'func-style': ['error', 'declaration', { allowArrowFunctions: true }],
|
||||||
indent: ['error', 2, { SwitchCase: 1 }],
|
indent: ['error', 2, { SwitchCase: 1 }],
|
||||||
'key-spacing': ['error', { beforeColon: false, afterColon: true }],
|
'key-spacing': ['error', { beforeColon: false, afterColon: true }],
|
||||||
'keyword-spacing': ['error', { before: true, after: true }],
|
'keyword-spacing': ['error', { before: true, after: true }],
|
||||||
@@ -315,7 +324,9 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
overrides: [
|
overrides: [
|
||||||
{
|
{
|
||||||
files: ['*.js'],
|
files: [
|
||||||
|
'*.js'
|
||||||
|
],
|
||||||
rules: {
|
rules: {
|
||||||
'simple-import-sort/imports': [
|
'simple-import-sort/imports': [
|
||||||
'error',
|
'error',
|
||||||
@@ -330,6 +341,52 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: [
|
||||||
|
'*.ts',
|
||||||
|
'*.tsx'
|
||||||
|
],
|
||||||
|
|
||||||
|
parser: '@typescript-eslint/parser',
|
||||||
|
parserOptions: {
|
||||||
|
project: './tsconfig.json'
|
||||||
|
},
|
||||||
|
|
||||||
|
extends: [
|
||||||
|
'prettier'
|
||||||
|
],
|
||||||
|
|
||||||
|
rules: Object.assign(typescriptEslintRecommended.rules, {
|
||||||
|
'no-shadow': 'off',
|
||||||
|
// These should be enabled after cleaning things up
|
||||||
|
'@typescript-eslint/no-unused-vars': 'warn',
|
||||||
|
'@typescript-eslint/explicit-function-return-type': 'off',
|
||||||
|
'react/prop-types': 'off',
|
||||||
|
'prettier/prettier': 'error',
|
||||||
|
'simple-import-sort/imports': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
groups: [
|
||||||
|
// Packages
|
||||||
|
// Absolute Paths
|
||||||
|
// Relative Paths
|
||||||
|
// Css
|
||||||
|
['^@?\\w', `^(${dirs})(/.*|$)`, '^\\.', '^\\..*css$']
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: [
|
||||||
|
'*.css.d.ts'
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
'filenames/match-exported': 'off',
|
||||||
|
'init-declarations': 'off',
|
||||||
|
'prettier/prettier': 'off'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"js": {
|
|
||||||
"indent_size": 2,
|
|
||||||
"indent_char": " ",
|
|
||||||
"indent_level": 2,
|
|
||||||
"indent_with_tabs": false,
|
|
||||||
"preserve_newlines": true,
|
|
||||||
"brace_style": "collapse",
|
|
||||||
"max_preserve_newlines": 2,
|
|
||||||
"jslint_happy": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
10
frontend/.prettierignore
Normal file
10
frontend/.prettierignore
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Ignore everything recursively
|
||||||
|
*
|
||||||
|
|
||||||
|
# But not the .ts files
|
||||||
|
!*.ts*
|
||||||
|
|
||||||
|
*css.d.ts
|
||||||
|
|
||||||
|
# Check subdirectories too
|
||||||
|
!*/
|
||||||
6
frontend/.prettierrc.json
Normal file
6
frontend/.prettierrc.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"arrowParens": "always",
|
||||||
|
"endOfLine": "auto",
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "es5"
|
||||||
|
}
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"stylelint-order"
|
"stylelint-order"
|
||||||
],
|
],
|
||||||
"ignoreFiles": [
|
"ignoreFiles": [
|
||||||
"frontend/src/Styles/scaffolding.css",
|
"frontend/src/Styles/scaffolding.css",
|
||||||
"**/*.js"
|
"**/*.js"
|
||||||
],
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
"at-rule-empty-line-before": [
|
"at-rule-empty-line-before": [
|
||||||
"always",
|
"always",
|
||||||
{
|
{
|
||||||
@@ -15,9 +15,6 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"at-rule-name-case": "lower",
|
|
||||||
"at-rule-name-newline-after": "always-multi-line",
|
|
||||||
"at-rule-name-space-after": "always",
|
|
||||||
"at-rule-no-unknown": [
|
"at-rule-no-unknown": [
|
||||||
true,
|
true,
|
||||||
{
|
{
|
||||||
@@ -28,83 +25,36 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"at-rule-no-vendor-prefix": true,
|
"at-rule-no-vendor-prefix": true,
|
||||||
"at-rule-semicolon-newline-after": "always",
|
|
||||||
"at-rule-semicolon-space-before": "never",
|
|
||||||
"block-closing-brace-empty-line-before": "never",
|
|
||||||
"block-closing-brace-newline-after": "always",
|
|
||||||
"block-closing-brace-newline-before": "always",
|
|
||||||
"block-closing-brace-space-after": "always-single-line",
|
|
||||||
"block-closing-brace-space-before": "always-single-line",
|
|
||||||
"block-no-empty": true,
|
"block-no-empty": true,
|
||||||
"block-opening-brace-newline-after": "always",
|
|
||||||
"block-opening-brace-newline-before": "never-single-line",
|
|
||||||
"block-opening-brace-space-after": "always-single-line",
|
|
||||||
"block-opening-brace-space-before": "always",
|
|
||||||
"color-hex-case": "lower",
|
|
||||||
"color-hex-length": "short",
|
"color-hex-length": "short",
|
||||||
"color-named": "never",
|
"color-named": "never",
|
||||||
"color-no-invalid-hex": true,
|
"color-no-invalid-hex": true,
|
||||||
"comment-whitespace-inside": "always",
|
"comment-whitespace-inside": "always",
|
||||||
"declaration-bang-space-after": "never",
|
|
||||||
"declaration-bang-space-before": "always",
|
|
||||||
"declaration-block-no-duplicate-properties": [
|
"declaration-block-no-duplicate-properties": [
|
||||||
true,
|
true,
|
||||||
{
|
{
|
||||||
"ignoreProperties": [
|
"ignoreProperties": [
|
||||||
"composes"
|
"composes"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"declaration-block-no-redundant-longhand-properties": true,
|
"declaration-block-no-redundant-longhand-properties": true,
|
||||||
"declaration-block-no-shorthand-property-overrides": true,
|
"declaration-block-no-shorthand-property-overrides": true,
|
||||||
"declaration-block-semicolon-newline-after": "always",
|
|
||||||
"declaration-block-semicolon-newline-before": "never-multi-line",
|
|
||||||
"declaration-block-semicolon-space-before": "never",
|
|
||||||
"declaration-block-single-line-max-declarations": 1,
|
"declaration-block-single-line-max-declarations": 1,
|
||||||
"declaration-block-trailing-semicolon": "always",
|
|
||||||
"declaration-colon-space-after": "always",
|
|
||||||
"declaration-colon-space-before": "never",
|
|
||||||
"font-family-name-quotes": "always-unless-keyword",
|
"font-family-name-quotes": "always-unless-keyword",
|
||||||
"function-calc-no-unspaced-operator": true,
|
"function-calc-no-unspaced-operator": true,
|
||||||
"function-comma-newline-after": "never-multi-line",
|
|
||||||
"function-comma-newline-before": "never-multi-line",
|
|
||||||
"function-comma-space-after": "always",
|
|
||||||
"function-comma-space-before": "never",
|
|
||||||
"function-linear-gradient-no-nonstandard-direction": true,
|
"function-linear-gradient-no-nonstandard-direction": true,
|
||||||
"function-name-case": "lower",
|
"function-name-case": "lower",
|
||||||
"function-parentheses-newline-inside": "never-multi-line",
|
|
||||||
"function-parentheses-space-inside": "never",
|
|
||||||
"function-url-quotes": "always",
|
"function-url-quotes": "always",
|
||||||
"function-url-scheme-disallowed-list": [
|
"function-url-scheme-disallowed-list": [
|
||||||
"data"
|
"data"
|
||||||
],
|
],
|
||||||
"function-whitespace-after": "always",
|
|
||||||
"indentation": 2,
|
|
||||||
"keyframe-declaration-no-important": true,
|
"keyframe-declaration-no-important": true,
|
||||||
"length-zero-no-unit": true,
|
"length-zero-no-unit": true,
|
||||||
"max-empty-lines": 1,
|
|
||||||
"max-line-length": [
|
|
||||||
100,
|
|
||||||
{
|
|
||||||
"ignore": [
|
|
||||||
"non-comments"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"max-nesting-depth": 2,
|
"max-nesting-depth": 2,
|
||||||
"media-feature-colon-space-after": "always",
|
|
||||||
"media-feature-colon-space-before": "never",
|
|
||||||
"media-feature-name-case": "lower",
|
|
||||||
"media-feature-name-no-vendor-prefix": true,
|
"media-feature-name-no-vendor-prefix": true,
|
||||||
"media-feature-range-operator-space-after": "always",
|
|
||||||
"media-feature-range-operator-space-before": "always",
|
|
||||||
"no-empty-source": true,
|
"no-empty-source": true,
|
||||||
"no-eol-whitespace": true,
|
|
||||||
"no-extra-semicolons": true,
|
|
||||||
"no-invalid-double-slash-comments": true,
|
"no-invalid-double-slash-comments": true,
|
||||||
"no-missing-end-of-source-newline": true,
|
|
||||||
"number-leading-zero": "always",
|
|
||||||
"number-no-trailing-zeros": true,
|
|
||||||
"order/order": [
|
"order/order": [
|
||||||
"custom-properties",
|
"custom-properties",
|
||||||
"dollar-variables",
|
"dollar-variables",
|
||||||
@@ -132,6 +82,7 @@
|
|||||||
"right",
|
"right",
|
||||||
"bottom",
|
"bottom",
|
||||||
"left",
|
"left",
|
||||||
|
"inset",
|
||||||
"z-index",
|
"z-index",
|
||||||
"display",
|
"display",
|
||||||
"visibility",
|
"visibility",
|
||||||
@@ -343,54 +294,33 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"property-case": "lower",
|
|
||||||
"property-no-vendor-prefix": true,
|
"property-no-vendor-prefix": true,
|
||||||
"rule-empty-line-before": [
|
"rule-empty-line-before": [
|
||||||
"always",
|
"always",
|
||||||
{
|
{
|
||||||
"except": [
|
"except": [
|
||||||
"first-nested"
|
"first-nested"
|
||||||
],
|
],
|
||||||
"ignore": [
|
"ignore": [
|
||||||
"after-comment"
|
"after-comment"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"selector-attribute-brackets-space-inside": "never",
|
|
||||||
"selector-attribute-operator-space-after": "never",
|
|
||||||
"selector-attribute-operator-space-before": "never",
|
|
||||||
"selector-attribute-quotes": "never",
|
"selector-attribute-quotes": "never",
|
||||||
"selector-class-pattern": "^[A-Za-z0-9]+$",
|
"selector-class-pattern": "^[A-Za-z0-9]+$",
|
||||||
"selector-combinator-space-after": "always",
|
|
||||||
"selector-combinator-space-before": "always",
|
|
||||||
"selector-descendant-combinator-no-non-space": true,
|
|
||||||
"selector-list-comma-newline-after": "always",
|
|
||||||
"selector-list-comma-newline-before": "never-multi-line",
|
|
||||||
"selector-list-comma-space-before": "never",
|
|
||||||
"selector-max-attribute": 0,
|
"selector-max-attribute": 0,
|
||||||
"selector-max-class": 3,
|
"selector-max-class": 3,
|
||||||
"selector-max-compound-selectors": 3,
|
"selector-max-compound-selectors": 3,
|
||||||
"selector-max-empty-lines": 0,
|
|
||||||
"selector-max-id": 0,
|
"selector-max-id": 0,
|
||||||
"selector-max-universal": 0,
|
"selector-max-universal": 0,
|
||||||
"selector-pseudo-class-case": "lower",
|
|
||||||
"selector-pseudo-class-parentheses-space-inside": "never",
|
|
||||||
"selector-pseudo-element-case": "lower",
|
|
||||||
"selector-pseudo-element-colon-notation": "double",
|
"selector-pseudo-element-colon-notation": "double",
|
||||||
"selector-pseudo-element-no-unknown": true,
|
"selector-pseudo-element-no-unknown": true,
|
||||||
"selector-type-case": "lower",
|
"selector-type-case": "lower",
|
||||||
"selector-type-no-unknown": true,
|
"selector-type-no-unknown": true,
|
||||||
"shorthand-property-no-redundant-values": true,
|
"shorthand-property-no-redundant-values": true,
|
||||||
"string-no-newline": true,
|
"string-no-newline": true,
|
||||||
"string-quotes": "single",
|
|
||||||
"time-min-milliseconds": 100,
|
"time-min-milliseconds": 100,
|
||||||
"unit-case": "lower",
|
|
||||||
"unit-no-unknown": true,
|
"unit-no-unknown": true,
|
||||||
"value-list-comma-newline-after": "never-multi-line",
|
|
||||||
"value-list-comma-newline-before": "never-multi-line",
|
|
||||||
"value-list-comma-space-after": "always",
|
|
||||||
"value-list-comma-space-before": "never",
|
|
||||||
"value-list-max-empty-lines": 0,
|
|
||||||
"value-no-vendor-prefix": true
|
"value-no-vendor-prefix": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
7
frontend/.vscode/extensions.json
vendored
Normal file
7
frontend/.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"stylelint.vscode-stylelint",
|
||||||
|
"dbaeumer.vscode-eslint",
|
||||||
|
"esbenp.prettier-vscode"
|
||||||
|
]
|
||||||
|
}
|
||||||
23
frontend/.vscode/settings.json
vendored
Normal file
23
frontend/.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
// Place your settings in this file to overwrite default and user settings.
|
||||||
|
{
|
||||||
|
"files.insertFinalNewline": true,
|
||||||
|
|
||||||
|
"files.exclude": {
|
||||||
|
"**/node_modules": true,
|
||||||
|
"**/*.d.css": true
|
||||||
|
},
|
||||||
|
|
||||||
|
"editor.formatOnSave": false,
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll": true
|
||||||
|
},
|
||||||
|
|
||||||
|
"typescript.preferences.quoteStyle": "single",
|
||||||
|
|
||||||
|
"eslint.validate": [
|
||||||
|
"javascript",
|
||||||
|
"javascriptreact",
|
||||||
|
"typescript",
|
||||||
|
"typescriptreact"
|
||||||
|
],
|
||||||
|
}
|
||||||
@@ -17,7 +17,8 @@ module.exports = {
|
|||||||
env: {
|
env: {
|
||||||
development: {
|
development: {
|
||||||
presets: [
|
presets: [
|
||||||
['@babel/preset-react', { development: true }]
|
['@babel/preset-react', { development: true }],
|
||||||
|
'@babel/preset-typescript'
|
||||||
],
|
],
|
||||||
plugins: [
|
plugins: [
|
||||||
'babel-plugin-inline-classnames'
|
'babel-plugin-inline-classnames'
|
||||||
@@ -25,7 +26,8 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
production: {
|
production: {
|
||||||
presets: [
|
presets: [
|
||||||
'@babel/preset-react'
|
'@babel/preset-react',
|
||||||
|
'@babel/preset-typescript'
|
||||||
],
|
],
|
||||||
plugins: [
|
plugins: [
|
||||||
'babel-plugin-transform-react-remove-prop-types'
|
'babel-plugin-transform-react-remove-prop-types'
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const webpack = require('webpack');
|
const webpack = require('webpack');
|
||||||
const FileManagerPlugin = require('filemanager-webpack-plugin');
|
const FileManagerPlugin = require('filemanager-webpack-plugin');
|
||||||
@@ -5,6 +6,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|||||||
const LiveReloadPlugin = require('webpack-livereload-plugin');
|
const LiveReloadPlugin = require('webpack-livereload-plugin');
|
||||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||||
const TerserPlugin = require('terser-webpack-plugin');
|
const TerserPlugin = require('terser-webpack-plugin');
|
||||||
|
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
|
||||||
|
|
||||||
module.exports = (env) => {
|
module.exports = (env) => {
|
||||||
const uiFolder = 'UI';
|
const uiFolder = 'UI';
|
||||||
@@ -38,13 +40,18 @@ module.exports = (env) => {
|
|||||||
},
|
},
|
||||||
|
|
||||||
resolve: {
|
resolve: {
|
||||||
|
extensions: [
|
||||||
|
'.ts',
|
||||||
|
'.tsx',
|
||||||
|
'.js'
|
||||||
|
],
|
||||||
modules: [
|
modules: [
|
||||||
srcFolder,
|
srcFolder,
|
||||||
path.join(srcFolder, 'Shims'),
|
path.join(srcFolder, 'Shims'),
|
||||||
'node_modules'
|
'node_modules'
|
||||||
],
|
],
|
||||||
alias: {
|
alias: {
|
||||||
jquery: 'jquery/src/jquery',
|
jquery: 'jquery/dist/jquery.min',
|
||||||
'react-middle-truncate': 'react-middle-truncate/lib/react-middle-truncate'
|
'react-middle-truncate': 'react-middle-truncate/lib/react-middle-truncate'
|
||||||
},
|
},
|
||||||
fallback: {
|
fallback: {
|
||||||
@@ -131,6 +138,8 @@ module.exports = (env) => {
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
new ForkTsCheckerWebpackPlugin(),
|
||||||
|
|
||||||
new LiveReloadPlugin()
|
new LiveReloadPlugin()
|
||||||
],
|
],
|
||||||
|
|
||||||
@@ -154,7 +163,7 @@ module.exports = (env) => {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /\.js?$/,
|
test: [/\.jsx?$/, /\.tsx?$/],
|
||||||
exclude: /(node_modules|JsLibraries)/,
|
exclude: /(node_modules|JsLibraries)/,
|
||||||
use: [
|
use: [
|
||||||
{
|
{
|
||||||
@@ -185,6 +194,7 @@ module.exports = (env) => {
|
|||||||
exclude: /(node_modules|globals.css)/,
|
exclude: /(node_modules|globals.css)/,
|
||||||
use: [
|
use: [
|
||||||
{ loader: MiniCssExtractPlugin.loader },
|
{ loader: MiniCssExtractPlugin.loader },
|
||||||
|
{ loader: 'css-modules-typescript-loader' },
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
@@ -253,18 +263,19 @@ module.exports = (env) => {
|
|||||||
config.resolve.alias['react-dom$'] = 'react-dom/profiling';
|
config.resolve.alias['react-dom$'] = 'react-dom/profiling';
|
||||||
config.resolve.alias['scheduler/tracing'] = 'scheduler/tracing-profiling';
|
config.resolve.alias['scheduler/tracing'] = 'scheduler/tracing-profiling';
|
||||||
|
|
||||||
config.optimization.minimizer = [
|
config.optimization = {
|
||||||
new TerserPlugin({
|
minimize: true,
|
||||||
cache: true,
|
minimizer: [
|
||||||
parallel: true,
|
new TerserPlugin({
|
||||||
sourceMap: true, // Must be set to true if using source-maps in production
|
terserOptions: {
|
||||||
terserOptions: {
|
sourceMap: true, // Must be set to true if using source-maps in production
|
||||||
mangle: false,
|
mangle: false,
|
||||||
keep_classnames: true,
|
keep_classnames: true,
|
||||||
keep_fnames: true
|
keep_fnames: true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
];
|
]
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// eslint-disable-next-line filenames/match-exported
|
||||||
const loaderUtils = require('loader-utils');
|
const loaderUtils = require('loader-utils');
|
||||||
|
|
||||||
module.exports = function cssVariablesLoader(source) {
|
module.exports = function cssVariablesLoader(source) {
|
||||||
|
|||||||
4
frontend/src/.vscode/settings.json
vendored
4
frontend/src/.vscode/settings.json
vendored
@@ -1,4 +0,0 @@
|
|||||||
// Place your settings in this file to overwrite default and user settings.
|
|
||||||
{
|
|
||||||
"files.insertFinalNewline": true
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
import Alert from 'Components/Alert';
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import ConfirmModal from 'Components/Modal/ConfirmModal';
|
import ConfirmModal from 'Components/Modal/ConfirmModal';
|
||||||
import PageContent from 'Components/Page/PageContent';
|
import PageContent from 'Components/Page/PageContent';
|
||||||
@@ -161,16 +162,16 @@ class Blocklist extends Component {
|
|||||||
|
|
||||||
{
|
{
|
||||||
!isAnyFetching && !!error &&
|
!isAnyFetching && !!error &&
|
||||||
<div>
|
<Alert kind={kinds.DANGER}>
|
||||||
{translate('UnableToLoadBlocklist')}
|
{translate('UnableToLoadBlocklist')}
|
||||||
</div>
|
</Alert>
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
isAllPopulated && !error && !items.length &&
|
isAllPopulated && !error && !items.length &&
|
||||||
<div>
|
<Alert kind={kinds.INFO}>
|
||||||
{translate('NoHistoryBlocklist')}
|
{translate('NoHistoryBlocklist')}
|
||||||
</div>
|
</Alert>
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -214,7 +215,7 @@ class Blocklist extends Component {
|
|||||||
isOpen={isConfirmRemoveModalOpen}
|
isOpen={isConfirmRemoveModalOpen}
|
||||||
kind={kinds.DANGER}
|
kind={kinds.DANGER}
|
||||||
title={translate('RemoveSelected')}
|
title={translate('RemoveSelected')}
|
||||||
message={translate('RemoveSelectedMessageText')}
|
message={translate('RemoveSelectedItemBlocklistMessageText')}
|
||||||
confirmLabel={translate('RemoveSelected')}
|
confirmLabel={translate('RemoveSelected')}
|
||||||
onConfirm={this.onRemoveSelectedConfirmed}
|
onConfirm={this.onRemoveSelectedConfirmed}
|
||||||
onCancel={this.onConfirmRemoveModalClose}
|
onCancel={this.onConfirmRemoveModalClose}
|
||||||
|
|||||||
9
frontend/src/Activity/Blocklist/BlocklistRow.css.d.ts
vendored
Normal file
9
frontend/src/Activity/Blocklist/BlocklistRow.css.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'actions': string;
|
||||||
|
'indexer': string;
|
||||||
|
'quality': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Activity/History/Details/HistoryDetails.css.d.ts
vendored
Normal file
7
frontend/src/Activity/History/Details/HistoryDetails.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'description': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
@@ -107,7 +107,7 @@ function HistoryDetails(props) {
|
|||||||
{
|
{
|
||||||
customFormatScore && customFormatScore !== '0' ?
|
customFormatScore && customFormatScore !== '0' ?
|
||||||
<DescriptionListItem
|
<DescriptionListItem
|
||||||
title="Custom Format Score"
|
title={translate('CustomFormatScore')}
|
||||||
data={formatPreferredWordScore(customFormatScore)}
|
data={formatPreferredWordScore(customFormatScore)}
|
||||||
/> :
|
/> :
|
||||||
null
|
null
|
||||||
@@ -224,7 +224,7 @@ function HistoryDetails(props) {
|
|||||||
{
|
{
|
||||||
customFormatScore && customFormatScore !== '0' ?
|
customFormatScore && customFormatScore !== '0' ?
|
||||||
<DescriptionListItem
|
<DescriptionListItem
|
||||||
title="Custom Format Score"
|
title={translate('CustomFormatScore')}
|
||||||
data={formatPreferredWordScore(customFormatScore)}
|
data={formatPreferredWordScore(customFormatScore)}
|
||||||
/> :
|
/> :
|
||||||
null
|
null
|
||||||
@@ -270,7 +270,7 @@ function HistoryDetails(props) {
|
|||||||
{
|
{
|
||||||
customFormatScore && customFormatScore !== '0' ?
|
customFormatScore && customFormatScore !== '0' ?
|
||||||
<DescriptionListItem
|
<DescriptionListItem
|
||||||
title="Custom Format Score"
|
title={translate('CustomFormatScore')}
|
||||||
data={formatPreferredWordScore(customFormatScore)}
|
data={formatPreferredWordScore(customFormatScore)}
|
||||||
/> :
|
/> :
|
||||||
null
|
null
|
||||||
|
|||||||
7
frontend/src/Activity/History/Details/HistoryDetailsModal.css.d.ts
vendored
Normal file
7
frontend/src/Activity/History/Details/HistoryDetailsModal.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'markAsFailedButton': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
import Alert from 'Components/Alert';
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
import FilterMenu from 'Components/Menu/FilterMenu';
|
import FilterMenu from 'Components/Menu/FilterMenu';
|
||||||
import PageContent from 'Components/Page/PageContent';
|
import PageContent from 'Components/Page/PageContent';
|
||||||
@@ -11,7 +12,7 @@ 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 { align, icons } from 'Helpers/Props';
|
import { align, icons, kinds } from 'Helpers/Props';
|
||||||
import translate from 'Utilities/String/translate';
|
import translate from 'Utilities/String/translate';
|
||||||
import HistoryRowConnector from './HistoryRowConnector';
|
import HistoryRowConnector from './HistoryRowConnector';
|
||||||
|
|
||||||
@@ -85,9 +86,9 @@ class History extends Component {
|
|||||||
|
|
||||||
{
|
{
|
||||||
!isFetchingAny && hasError &&
|
!isFetchingAny && hasError &&
|
||||||
<div>
|
<Alert kind={kinds.DANGER}>
|
||||||
{translate('UnableToLoadHistory')}
|
{translate('UnableToLoadHistory')}
|
||||||
</div>
|
</Alert>
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -95,9 +96,9 @@ class History extends Component {
|
|||||||
// wait for the books to populate because they are never coming.
|
// wait for the books to populate because they are never coming.
|
||||||
|
|
||||||
isPopulated && !hasError && !items.length &&
|
isPopulated && !hasError && !items.length &&
|
||||||
<div>
|
<Alert kind={kinds.INFO}>
|
||||||
No history found
|
{translate('NoHistory')}
|
||||||
</div>
|
</Alert>
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
7
frontend/src/Activity/History/HistoryEventTypeCell.css.d.ts
vendored
Normal file
7
frontend/src/Activity/History/HistoryEventTypeCell.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'cell': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
11
frontend/src/Activity/History/HistoryRow.css.d.ts
vendored
Normal file
11
frontend/src/Activity/History/HistoryRow.css.d.ts
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'customFormatScore': string;
|
||||||
|
'details': string;
|
||||||
|
'downloadClient': string;
|
||||||
|
'indexer': string;
|
||||||
|
'releaseGroup': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Activity/Queue/ProtocolLabel.css.d.ts
vendored
Normal file
8
frontend/src/Activity/Queue/ProtocolLabel.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'torrent': string;
|
||||||
|
'usenet': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
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 Alert from 'Components/Alert';
|
||||||
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';
|
||||||
@@ -12,7 +13,7 @@ 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 { align, icons } from 'Helpers/Props';
|
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 translate from 'Utilities/String/translate';
|
import translate from 'Utilities/String/translate';
|
||||||
@@ -233,17 +234,17 @@ class Queue extends Component {
|
|||||||
|
|
||||||
{
|
{
|
||||||
!isRefreshing && hasError ?
|
!isRefreshing && hasError ?
|
||||||
<div>
|
<Alert kind={kinds.DANGER}>
|
||||||
{translate('FailedToLoadQueue')}
|
{translate('FailedToLoadQueue')}
|
||||||
</div> :
|
</Alert> :
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
isAllPopulated && !hasError && !items.length ?
|
isAllPopulated && !hasError && !items.length ?
|
||||||
<div>
|
<Alert kind={kinds.INFO}>
|
||||||
{translate('QueueIsEmpty')}
|
{translate('QueueIsEmpty')}
|
||||||
</div> :
|
</Alert> :
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
10
frontend/src/Activity/Queue/QueueRow.css.d.ts
vendored
Normal file
10
frontend/src/Activity/Queue/QueueRow.css.d.ts
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'actions': string;
|
||||||
|
'progress': string;
|
||||||
|
'protocol': string;
|
||||||
|
'quality': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Activity/Queue/QueueStatusCell.css.d.ts
vendored
Normal file
7
frontend/src/Activity/Queue/QueueStatusCell.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'status': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Activity/Queue/RemoveQueueItemsModal.css.d.ts
vendored
Normal file
7
frontend/src/Activity/Queue/RemoveQueueItemsModal.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'message': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
@@ -89,12 +89,12 @@ class RemoveQueueItemsModal extends Component {
|
|||||||
onModalClose={this.onModalClose}
|
onModalClose={this.onModalClose}
|
||||||
>
|
>
|
||||||
<ModalHeader>
|
<ModalHeader>
|
||||||
Remove Selected Item{selectedCount > 1 ? 's' : ''}
|
{selectedCount > 1 ? translate('RemoveSelectedItems') : translate('RemoveSelectedItem')}
|
||||||
</ModalHeader>
|
</ModalHeader>
|
||||||
|
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
<div className={styles.message}>
|
<div className={styles.message}>
|
||||||
Are you sure you want to remove {selectedCount} item{selectedCount > 1 ? 's' : ''} from the queue?
|
{selectedCount > 1 ? translate('RemoveSelectedItemsQueueMessageText', selectedCount) : translate('RemoveSelectedItemQueueMessageText')}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -118,14 +118,14 @@ class RemoveQueueItemsModal extends Component {
|
|||||||
|
|
||||||
<FormGroup>
|
<FormGroup>
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
Add Release{selectedCount > 1 ? 's' : ''} To Blocklist
|
{selectedCount > 1 ? translate('BlocklistReleases') : translate('BlocklistRelease')}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<FormInputGroup
|
<FormInputGroup
|
||||||
type={inputTypes.CHECK}
|
type={inputTypes.CHECK}
|
||||||
name="blocklist"
|
name="blocklist"
|
||||||
value={blocklist}
|
value={blocklist}
|
||||||
helpText={translate('BlocklistHelpText')}
|
helpText={translate('BlocklistReleaseHelpText')}
|
||||||
onChange={this.onBlocklistChange}
|
onChange={this.onBlocklistChange}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
@@ -150,14 +150,14 @@ class RemoveQueueItemsModal extends Component {
|
|||||||
|
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<Button onPress={this.onModalClose}>
|
<Button onPress={this.onModalClose}>
|
||||||
Close
|
{translate('Close')}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
kind={kinds.DANGER}
|
kind={kinds.DANGER}
|
||||||
onPress={this.onRemoveConfirmed}
|
onPress={this.onRemoveConfirmed}
|
||||||
>
|
>
|
||||||
Remove
|
{translate('Remove')}
|
||||||
</Button>
|
</Button>
|
||||||
</ModalFooter>
|
</ModalFooter>
|
||||||
</ModalContent>
|
</ModalContent>
|
||||||
|
|||||||
7
frontend/src/Activity/Queue/TimeleftCell.css.d.ts
vendored
Normal file
7
frontend/src/Activity/Queue/TimeleftCell.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'timeleft': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
9
frontend/src/App/AppUpdatedModalContent.css.d.ts
vendored
Normal file
9
frontend/src/App/AppUpdatedModalContent.css.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'changes': string;
|
||||||
|
'maintenance': string;
|
||||||
|
'version': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/App/ConnectionLostModal.css.d.ts
vendored
Normal file
7
frontend/src/App/ConnectionLostModal.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'automatic': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
9
frontend/src/Author/Delete/DeleteAuthorModalContent.css.d.ts
vendored
Normal file
9
frontend/src/Author/Delete/DeleteAuthorModalContent.css.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'deleteFilesMessage': string;
|
||||||
|
'pathContainer': string;
|
||||||
|
'pathIcon': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Author/Details/AuthorAlternateTitles.css.d.ts
vendored
Normal file
7
frontend/src/Author/Details/AuthorAlternateTitles.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'alternateTitle': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
17
frontend/src/Author/Details/AuthorDetails.css.d.ts
vendored
Normal file
17
frontend/src/Author/Details/AuthorDetails.css.d.ts
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'authorNavigationButton': string;
|
||||||
|
'authorNavigationButtons': string;
|
||||||
|
'authorUpButton': string;
|
||||||
|
'contentContainer': string;
|
||||||
|
'errorMessage': string;
|
||||||
|
'innerContentBody': string;
|
||||||
|
'metadataMessage': string;
|
||||||
|
'selectedTab': string;
|
||||||
|
'tab': string;
|
||||||
|
'tabContent': string;
|
||||||
|
'tabList': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
29
frontend/src/Author/Details/AuthorDetailsHeader.css.d.ts
vendored
Normal file
29
frontend/src/Author/Details/AuthorDetailsHeader.css.d.ts
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'alternateTitlesIconContainer': string;
|
||||||
|
'authorNavigationButton': string;
|
||||||
|
'authorNavigationButtons': string;
|
||||||
|
'authorUpButton': string;
|
||||||
|
'backdrop': string;
|
||||||
|
'backdropOverlay': string;
|
||||||
|
'details': string;
|
||||||
|
'detailsLabel': string;
|
||||||
|
'header': string;
|
||||||
|
'headerContent': string;
|
||||||
|
'info': string;
|
||||||
|
'links': string;
|
||||||
|
'monitorToggleButton': string;
|
||||||
|
'overview': string;
|
||||||
|
'path': string;
|
||||||
|
'poster': string;
|
||||||
|
'qualityProfileName': string;
|
||||||
|
'sizeOnDisk': string;
|
||||||
|
'tags': string;
|
||||||
|
'title': string;
|
||||||
|
'titleContainer': string;
|
||||||
|
'titleRow': string;
|
||||||
|
'toggleMonitoredContainer': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
9
frontend/src/Author/Details/AuthorDetailsLinks.css.d.ts
vendored
Normal file
9
frontend/src/Author/Details/AuthorDetailsLinks.css.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'link': string;
|
||||||
|
'linkLabel': string;
|
||||||
|
'links': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
@@ -74,7 +74,7 @@ class AuthorDetailsPageConnector extends Component {
|
|||||||
|
|
||||||
if (isFetching && !isPopulated) {
|
if (isFetching && !isPopulated) {
|
||||||
return (
|
return (
|
||||||
<PageContent title='loading'>
|
<PageContent title={translate('Loading')}>
|
||||||
<PageContentBody>
|
<PageContentBody>
|
||||||
<LoadingIndicator />
|
<LoadingIndicator />
|
||||||
</PageContentBody>
|
</PageContentBody>
|
||||||
|
|||||||
23
frontend/src/Author/Details/AuthorDetailsSeason.css.d.ts
vendored
Normal file
23
frontend/src/Author/Details/AuthorDetailsSeason.css.d.ts
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'actionButton': string;
|
||||||
|
'actionMenuIcon': string;
|
||||||
|
'actions': string;
|
||||||
|
'actionsMenu': string;
|
||||||
|
'actionsMenuContent': string;
|
||||||
|
'bookCount': string;
|
||||||
|
'bookType': string;
|
||||||
|
'bookTypeLabel': string;
|
||||||
|
'books': string;
|
||||||
|
'collapseButtonContainer': string;
|
||||||
|
'collapseButtonIcon': string;
|
||||||
|
'episodeCountTooltip': string;
|
||||||
|
'expandButton': string;
|
||||||
|
'expandButtonIcon': string;
|
||||||
|
'header': string;
|
||||||
|
'left': string;
|
||||||
|
'noBooks': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
24
frontend/src/Author/Details/AuthorDetailsSeries.css.d.ts
vendored
Normal file
24
frontend/src/Author/Details/AuthorDetailsSeries.css.d.ts
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'actionButton': string;
|
||||||
|
'actionMenuIcon': string;
|
||||||
|
'actions': string;
|
||||||
|
'actionsMenu': string;
|
||||||
|
'actionsMenuContent': string;
|
||||||
|
'bookCount': string;
|
||||||
|
'bookType': string;
|
||||||
|
'bookTypeLabel': string;
|
||||||
|
'books': string;
|
||||||
|
'collapseButtonContainer': string;
|
||||||
|
'collapseButtonIcon': string;
|
||||||
|
'episodeCountTooltip': string;
|
||||||
|
'expandButton': string;
|
||||||
|
'expandButtonIcon': string;
|
||||||
|
'header': string;
|
||||||
|
'left': string;
|
||||||
|
'noBooks': string;
|
||||||
|
'seriesTitle': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
import _ from 'lodash';
|
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import createAuthorSelector from 'Store/Selectors/createAuthorSelector';
|
import createAuthorSelector from 'Store/Selectors/createAuthorSelector';
|
||||||
@@ -10,15 +9,11 @@ function createMapStateToProps() {
|
|||||||
createAuthorSelector(),
|
createAuthorSelector(),
|
||||||
createTagsSelector(),
|
createTagsSelector(),
|
||||||
(author, tagList) => {
|
(author, tagList) => {
|
||||||
const tags = _.reduce(author.tags, (acc, tag) => {
|
const tags = author.tags
|
||||||
const matchingTag = _.find(tagList, { id: tag });
|
.map((tagId) => tagList.find((tag) => tag.id === tagId))
|
||||||
|
.filter((tag) => !!tag)
|
||||||
if (matchingTag) {
|
.map((tag) => tag.label)
|
||||||
acc.push(matchingTag.label);
|
.sort((a, b) => a.localeCompare(b));
|
||||||
}
|
|
||||||
|
|
||||||
return acc;
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
tags
|
tags
|
||||||
|
|||||||
13
frontend/src/Author/Details/BookRow.css.d.ts
vendored
Normal file
13
frontend/src/Author/Details/BookRow.css.d.ts
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'monitored': string;
|
||||||
|
'pageCount': string;
|
||||||
|
'position': string;
|
||||||
|
'rating': string;
|
||||||
|
'releaseDate': string;
|
||||||
|
'status': string;
|
||||||
|
'title': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Author/Details/BookStatus.css.d.ts
vendored
Normal file
7
frontend/src/Author/Details/BookStatus.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'center': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Author/Edit/EditAuthorModalContent.css.d.ts
vendored
Normal file
8
frontend/src/Author/Edit/EditAuthorModalContent.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'deleteButton': string;
|
||||||
|
'labelIcon': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
12
frontend/src/Author/Editor/AudioTags/RetagAuthorModalContent.css.d.ts
vendored
Normal file
12
frontend/src/Author/Editor/AudioTags/RetagAuthorModalContent.css.d.ts
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'message': string;
|
||||||
|
'retagIcon': string;
|
||||||
|
'searchForNewBookContainer': string;
|
||||||
|
'searchForNewBookInput': string;
|
||||||
|
'searchForNewBookLabel': string;
|
||||||
|
'searchForNewBookLabelContainer': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
16
frontend/src/Author/Editor/AuthorEditorFooter.css.d.ts
vendored
Normal file
16
frontend/src/Author/Editor/AuthorEditorFooter.css.d.ts
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'buttonContainer': string;
|
||||||
|
'buttonContainerContent': string;
|
||||||
|
'buttons': string;
|
||||||
|
'deleteSelectedButton': string;
|
||||||
|
'dropdownContainer': string;
|
||||||
|
'footer': string;
|
||||||
|
'inputContainer': string;
|
||||||
|
'organizeSelectedButton': string;
|
||||||
|
'selectedAuthorLabel': string;
|
||||||
|
'tagsButton': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Author/Editor/AuthorEditorFooterLabel.css.d.ts
vendored
Normal file
8
frontend/src/Author/Editor/AuthorEditorFooterLabel.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'label': string;
|
||||||
|
'savingIcon': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
9
frontend/src/Author/Editor/Delete/DeleteAuthorModalContent.css.d.ts
vendored
Normal file
9
frontend/src/Author/Editor/Delete/DeleteAuthorModalContent.css.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'message': string;
|
||||||
|
'path': string;
|
||||||
|
'pathContainer': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Author/Editor/Organize/OrganizeAuthorModalContent.css.d.ts
vendored
Normal file
8
frontend/src/Author/Editor/Organize/OrganizeAuthorModalContent.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'message': string;
|
||||||
|
'renameIcon': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
9
frontend/src/Author/Editor/Tags/TagsModalContent.css.d.ts
vendored
Normal file
9
frontend/src/Author/Editor/Tags/TagsModalContent.css.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'message': string;
|
||||||
|
'renameIcon': string;
|
||||||
|
'result': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
9
frontend/src/Author/History/AuthorHistoryRow.css.d.ts
vendored
Normal file
9
frontend/src/Author/History/AuthorHistoryRow.css.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'actions': string;
|
||||||
|
'details': string;
|
||||||
|
'sourceTitle': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
import Alert from 'Components/Alert';
|
||||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||||
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 { kinds } from 'Helpers/Props';
|
||||||
import translate from 'Utilities/String/translate';
|
import translate from 'Utilities/String/translate';
|
||||||
import AuthorHistoryRowConnector from './AuthorHistoryRowConnector';
|
import AuthorHistoryRowConnector from './AuthorHistoryRowConnector';
|
||||||
|
|
||||||
@@ -70,9 +72,9 @@ class AuthorHistoryTableContent extends Component {
|
|||||||
|
|
||||||
{
|
{
|
||||||
!isFetching && !!error &&
|
!isFetching && !!error &&
|
||||||
<div>
|
<Alert kind={kinds.DANGER}>
|
||||||
{translate('UnableToLoadHistory')}
|
{translate('UnableToLoadHistory')}
|
||||||
</div>
|
</Alert>
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
13
frontend/src/Author/Index/AuthorIndex.css.d.ts
vendored
Normal file
13
frontend/src/Author/Index/AuthorIndex.css.d.ts
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'bannersInnerContentBody': string;
|
||||||
|
'contentBody': string;
|
||||||
|
'contentBodyContainer': string;
|
||||||
|
'errorMessage': string;
|
||||||
|
'pageContentBodyWrapper': string;
|
||||||
|
'postersInnerContentBody': string;
|
||||||
|
'tableInnerContentBody': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
14
frontend/src/Author/Index/AuthorIndexFooter.css.d.ts
vendored
Normal file
14
frontend/src/Author/Index/AuthorIndexFooter.css.d.ts
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'continuing': string;
|
||||||
|
'ended': string;
|
||||||
|
'footer': string;
|
||||||
|
'legendItem': string;
|
||||||
|
'legendItemColor': string;
|
||||||
|
'missingMonitored': string;
|
||||||
|
'missingUnmonitored': string;
|
||||||
|
'statistics': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
19
frontend/src/Author/Index/Overview/AuthorIndexOverview.css.d.ts
vendored
Normal file
19
frontend/src/Author/Index/Overview/AuthorIndexOverview.css.d.ts
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'actions': string;
|
||||||
|
'container': string;
|
||||||
|
'content': string;
|
||||||
|
'details': string;
|
||||||
|
'editorSelect': string;
|
||||||
|
'ended': string;
|
||||||
|
'info': string;
|
||||||
|
'link': string;
|
||||||
|
'overview': string;
|
||||||
|
'poster': string;
|
||||||
|
'posterContainer': string;
|
||||||
|
'title': string;
|
||||||
|
'titleRow': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Author/Index/Overview/AuthorIndexOverviewInfo.css.d.ts
vendored
Normal file
7
frontend/src/Author/Index/Overview/AuthorIndexOverviewInfo.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'infos': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Author/Index/Overview/AuthorIndexOverviewInfoRow.css.d.ts
vendored
Normal file
8
frontend/src/Author/Index/Overview/AuthorIndexOverviewInfoRow.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'icon': string;
|
||||||
|
'infoRow': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Author/Index/Overview/AuthorIndexOverviews.css.d.ts
vendored
Normal file
7
frontend/src/Author/Index/Overview/AuthorIndexOverviews.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'grid': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
18
frontend/src/Author/Index/Posters/AuthorIndexPoster.css.d.ts
vendored
Normal file
18
frontend/src/Author/Index/Posters/AuthorIndexPoster.css.d.ts
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'action': string;
|
||||||
|
'container': string;
|
||||||
|
'content': string;
|
||||||
|
'controls': string;
|
||||||
|
'editorSelect': string;
|
||||||
|
'ended': string;
|
||||||
|
'link': string;
|
||||||
|
'nextAiring': string;
|
||||||
|
'overlayTitle': string;
|
||||||
|
'poster': string;
|
||||||
|
'posterContainer': string;
|
||||||
|
'title': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Author/Index/Posters/AuthorIndexPosterInfo.css.d.ts
vendored
Normal file
7
frontend/src/Author/Index/Posters/AuthorIndexPosterInfo.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'info': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Author/Index/Posters/AuthorIndexPosters.css.d.ts
vendored
Normal file
7
frontend/src/Author/Index/Posters/AuthorIndexPosters.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'grid': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Author/Index/ProgressBar/AuthorIndexProgressBar.css.d.ts
vendored
Normal file
8
frontend/src/Author/Index/ProgressBar/AuthorIndexProgressBar.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'progress': string;
|
||||||
|
'progressBar': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
25
frontend/src/Author/Index/Table/AuthorIndexHeader.css.d.ts
vendored
Normal file
25
frontend/src/Author/Index/Table/AuthorIndexHeader.css.d.ts
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'actions': string;
|
||||||
|
'added': string;
|
||||||
|
'banner': string;
|
||||||
|
'bannerGrow': string;
|
||||||
|
'bookCount': string;
|
||||||
|
'bookProgress': string;
|
||||||
|
'genres': string;
|
||||||
|
'lastBook': string;
|
||||||
|
'latestBook': string;
|
||||||
|
'metadataProfileId': string;
|
||||||
|
'nextBook': string;
|
||||||
|
'path': string;
|
||||||
|
'qualityProfileId': string;
|
||||||
|
'ratings': string;
|
||||||
|
'sizeOnDisk': string;
|
||||||
|
'sortName': string;
|
||||||
|
'status': string;
|
||||||
|
'tags': string;
|
||||||
|
'useSceneNumbering': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
28
frontend/src/Author/Index/Table/AuthorIndexRow.css.d.ts
vendored
Normal file
28
frontend/src/Author/Index/Table/AuthorIndexRow.css.d.ts
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'actions': string;
|
||||||
|
'added': string;
|
||||||
|
'banner': string;
|
||||||
|
'bannerGrow': string;
|
||||||
|
'bannerImage': string;
|
||||||
|
'bookProgress': string;
|
||||||
|
'cell': string;
|
||||||
|
'checkInput': string;
|
||||||
|
'genres': string;
|
||||||
|
'lastBook': string;
|
||||||
|
'link': string;
|
||||||
|
'metadataProfileId': string;
|
||||||
|
'nextBook': string;
|
||||||
|
'overlayTitle': string;
|
||||||
|
'path': string;
|
||||||
|
'qualityProfileId': string;
|
||||||
|
'ratings': string;
|
||||||
|
'sizeOnDisk': string;
|
||||||
|
'sortName': string;
|
||||||
|
'status': string;
|
||||||
|
'tags': string;
|
||||||
|
'useSceneNumbering': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Author/Index/Table/AuthorIndexTable.css.d.ts
vendored
Normal file
7
frontend/src/Author/Index/Table/AuthorIndexTable.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'tableContainer': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Author/Index/Table/AuthorStatusCell.css.d.ts
vendored
Normal file
8
frontend/src/Author/Index/Table/AuthorStatusCell.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'status': string;
|
||||||
|
'statusIcon': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Author/MoveAuthor/MoveAuthorModal.css.d.ts
vendored
Normal file
7
frontend/src/Author/MoveAuthor/MoveAuthorModal.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'doNotMoveButton': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Author/NoAuthor.css.d.ts
vendored
Normal file
8
frontend/src/Author/NoAuthor.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'buttonContainer': string;
|
||||||
|
'message': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Book/BookSearchCell.css.d.ts
vendored
Normal file
7
frontend/src/Book/BookSearchCell.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'BookSearchCell': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
9
frontend/src/Book/Delete/DeleteBookModalContent.css.d.ts
vendored
Normal file
9
frontend/src/Book/Delete/DeleteBookModalContent.css.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'deleteFilesMessage': string;
|
||||||
|
'pathContainer': string;
|
||||||
|
'pathIcon': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
16
frontend/src/Book/Details/BookDetails.css.d.ts
vendored
Normal file
16
frontend/src/Book/Details/BookDetails.css.d.ts
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'bookNavigationButton': string;
|
||||||
|
'bookNavigationButtons': string;
|
||||||
|
'bookUpButton': string;
|
||||||
|
'contentContainer': string;
|
||||||
|
'filterIcon': string;
|
||||||
|
'innerContentBody': string;
|
||||||
|
'selectedTab': string;
|
||||||
|
'tab': string;
|
||||||
|
'tabContent': string;
|
||||||
|
'tabList': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
26
frontend/src/Book/Details/BookDetailsHeader.css.d.ts
vendored
Normal file
26
frontend/src/Book/Details/BookDetailsHeader.css.d.ts
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'alternateTitlesIconContainer': string;
|
||||||
|
'backdrop': string;
|
||||||
|
'backdropOverlay': string;
|
||||||
|
'cover': string;
|
||||||
|
'details': string;
|
||||||
|
'detailsLabel': string;
|
||||||
|
'duration': string;
|
||||||
|
'header': string;
|
||||||
|
'headerContent': string;
|
||||||
|
'info': string;
|
||||||
|
'links': string;
|
||||||
|
'monitorToggleButton': string;
|
||||||
|
'overview': string;
|
||||||
|
'qualityProfileName': string;
|
||||||
|
'sizeOnDisk': string;
|
||||||
|
'tags': string;
|
||||||
|
'title': string;
|
||||||
|
'titleContainer': string;
|
||||||
|
'titleRow': string;
|
||||||
|
'toggleMonitoredContainer': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
9
frontend/src/Book/Details/BookDetailsLinks.css.d.ts
vendored
Normal file
9
frontend/src/Book/Details/BookDetailsLinks.css.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'link': string;
|
||||||
|
'linkLabel': string;
|
||||||
|
'links': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
@@ -87,7 +87,7 @@ class BookDetailsPageConnector extends Component {
|
|||||||
if ((isFetching || !this.state.hasMounted) ||
|
if ((isFetching || !this.state.hasMounted) ||
|
||||||
(!isFetching && !isPopulated)) {
|
(!isFetching && !isPopulated)) {
|
||||||
return (
|
return (
|
||||||
<PageContent title='loading'>
|
<PageContent title={translate('Loading')}>
|
||||||
<PageContentBody>
|
<PageContentBody>
|
||||||
<LoadingIndicator />
|
<LoadingIndicator />
|
||||||
</PageContentBody>
|
</PageContentBody>
|
||||||
|
|||||||
14
frontend/src/Book/Editor/BookEditorFooter.css.d.ts
vendored
Normal file
14
frontend/src/Book/Editor/BookEditorFooter.css.d.ts
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'buttonContainer': string;
|
||||||
|
'buttonContainerContent': string;
|
||||||
|
'buttons': string;
|
||||||
|
'deleteSelectedButton': string;
|
||||||
|
'inputContainer': string;
|
||||||
|
'organizeSelectedButton': string;
|
||||||
|
'selectedAuthorLabel': string;
|
||||||
|
'tagsButton': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Book/Editor/BookEditorFooterLabel.css.d.ts
vendored
Normal file
8
frontend/src/Book/Editor/BookEditorFooterLabel.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'label': string;
|
||||||
|
'savingIcon': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Book/Editor/Delete/DeleteBookModalContent.css.d.ts
vendored
Normal file
8
frontend/src/Book/Editor/Delete/DeleteBookModalContent.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'deleteFilesMessage': string;
|
||||||
|
'message': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
13
frontend/src/Book/Index/BookIndex.css.d.ts
vendored
Normal file
13
frontend/src/Book/Index/BookIndex.css.d.ts
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'bannersInnerContentBody': string;
|
||||||
|
'contentBody': string;
|
||||||
|
'contentBodyContainer': string;
|
||||||
|
'errorMessage': string;
|
||||||
|
'pageContentBodyWrapper': string;
|
||||||
|
'postersInnerContentBody': string;
|
||||||
|
'tableInnerContentBody': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
14
frontend/src/Book/Index/BookIndexFooter.css.d.ts
vendored
Normal file
14
frontend/src/Book/Index/BookIndexFooter.css.d.ts
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'continuing': string;
|
||||||
|
'ended': string;
|
||||||
|
'footer': string;
|
||||||
|
'legendItem': string;
|
||||||
|
'legendItemColor': string;
|
||||||
|
'missingMonitored': string;
|
||||||
|
'missingUnmonitored': string;
|
||||||
|
'statistics': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
19
frontend/src/Book/Index/Overview/BookIndexOverview.css.d.ts
vendored
Normal file
19
frontend/src/Book/Index/Overview/BookIndexOverview.css.d.ts
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'actions': string;
|
||||||
|
'container': string;
|
||||||
|
'content': string;
|
||||||
|
'details': string;
|
||||||
|
'editorSelect': string;
|
||||||
|
'ended': string;
|
||||||
|
'info': string;
|
||||||
|
'link': string;
|
||||||
|
'overview': string;
|
||||||
|
'poster': string;
|
||||||
|
'posterContainer': string;
|
||||||
|
'title': string;
|
||||||
|
'titleRow': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Book/Index/Overview/BookIndexOverviewInfo.css.d.ts
vendored
Normal file
7
frontend/src/Book/Index/Overview/BookIndexOverviewInfo.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'infos': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Book/Index/Overview/BookIndexOverviewInfoRow.css.d.ts
vendored
Normal file
8
frontend/src/Book/Index/Overview/BookIndexOverviewInfoRow.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'icon': string;
|
||||||
|
'infoRow': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Book/Index/Overview/BookIndexOverviews.css.d.ts
vendored
Normal file
7
frontend/src/Book/Index/Overview/BookIndexOverviews.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'grid': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
18
frontend/src/Book/Index/Posters/BookIndexPoster.css.d.ts
vendored
Normal file
18
frontend/src/Book/Index/Posters/BookIndexPoster.css.d.ts
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'action': string;
|
||||||
|
'container': string;
|
||||||
|
'content': string;
|
||||||
|
'controls': string;
|
||||||
|
'editorSelect': string;
|
||||||
|
'ended': string;
|
||||||
|
'link': string;
|
||||||
|
'nextAiring': string;
|
||||||
|
'overlayTitle': string;
|
||||||
|
'poster': string;
|
||||||
|
'posterContainer': string;
|
||||||
|
'title': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Book/Index/Posters/BookIndexPosterInfo.css.d.ts
vendored
Normal file
7
frontend/src/Book/Index/Posters/BookIndexPosterInfo.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'info': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Book/Index/Posters/BookIndexPosters.css.d.ts
vendored
Normal file
7
frontend/src/Book/Index/Posters/BookIndexPosters.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'grid': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Book/Index/ProgressBar/BookIndexProgressBar.css.d.ts
vendored
Normal file
8
frontend/src/Book/Index/ProgressBar/BookIndexProgressBar.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'progress': string;
|
||||||
|
'progressBar': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
20
frontend/src/Book/Index/Table/BookIndexHeader.css.d.ts
vendored
Normal file
20
frontend/src/Book/Index/Table/BookIndexHeader.css.d.ts
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'actions': string;
|
||||||
|
'added': string;
|
||||||
|
'authorName': string;
|
||||||
|
'bookFileCount': string;
|
||||||
|
'genres': string;
|
||||||
|
'metadataProfileId': string;
|
||||||
|
'path': string;
|
||||||
|
'qualityProfileId': string;
|
||||||
|
'ratings': string;
|
||||||
|
'releaseDate': string;
|
||||||
|
'sizeOnDisk': string;
|
||||||
|
'status': string;
|
||||||
|
'tags': string;
|
||||||
|
'title': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
26
frontend/src/Book/Index/Table/BookIndexRow.css.d.ts
vendored
Normal file
26
frontend/src/Book/Index/Table/BookIndexRow.css.d.ts
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'actions': string;
|
||||||
|
'added': string;
|
||||||
|
'authorName': string;
|
||||||
|
'bannerImage': string;
|
||||||
|
'bookFileCount': string;
|
||||||
|
'bookProgress': string;
|
||||||
|
'cell': string;
|
||||||
|
'checkInput': string;
|
||||||
|
'genres': string;
|
||||||
|
'link': string;
|
||||||
|
'metadataProfileId': string;
|
||||||
|
'overlayTitle': string;
|
||||||
|
'path': string;
|
||||||
|
'qualityProfileId': string;
|
||||||
|
'ratings': string;
|
||||||
|
'releaseDate': string;
|
||||||
|
'sizeOnDisk': string;
|
||||||
|
'status': string;
|
||||||
|
'tags': string;
|
||||||
|
'title': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
7
frontend/src/Book/Index/Table/BookIndexTable.css.d.ts
vendored
Normal file
7
frontend/src/Book/Index/Table/BookIndexTable.css.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'tableContainer': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
8
frontend/src/Book/Index/Table/BookStatusCell.css.d.ts
vendored
Normal file
8
frontend/src/Book/Index/Table/BookStatusCell.css.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is automatically generated.
|
||||||
|
// Please do not change this file!
|
||||||
|
interface CssExports {
|
||||||
|
'status': string;
|
||||||
|
'statusIcon': string;
|
||||||
|
}
|
||||||
|
export const cssExports: CssExports;
|
||||||
|
export default cssExports;
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user