add ability to retire canvas and retire 1bit canvas
This commit is contained in:
parent
fac58caa71
commit
20046e88e0
|
@ -133,7 +133,6 @@ Meaning of some values:
|
|||
| size | canvas size, power of 2 and between 256 and 65536 |
|
||||
| bcd | Base cooldown for unset pixels |
|
||||
| cds | Stack time of Cooldown |
|
||||
| sd | Start-date of the canvas (for historical view) |
|
||||
|
||||
#### Optional canvases Configuration
|
||||
|
||||
|
@ -145,6 +144,8 @@ Meaning of some values:
|
|||
| ranked | If pixels on canvas count on player statistic (default: false) |
|
||||
| v | If 3D voxel canvas (boolean) (default: false) |
|
||||
| hid | Hidden canvases, can be just seen by pressing P (default: false)|
|
||||
| sd | Start-date of the canvas (for historical view) |
|
||||
| ed | end date for historical view (canvas retired) |
|
||||
|
||||
Notes:
|
||||
|
||||
|
|
|
@ -98,22 +98,22 @@ msgstr ""
|
|||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/PopUp.jsx:55
|
||||
msgid "ppfun"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/PopUp.jsx:56
|
||||
msgid "PixelPlanet.Fun PopUp"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/Main.jsx:64
|
||||
#: src/ssr/Main.jsx:55
|
||||
msgid "PixelPlanet.Fun"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/Main.jsx:65
|
||||
#: src/ssr/Main.jsx:56
|
||||
msgid "Place color pixels on an map styled canvas with other players online"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/PopUp.jsx:47
|
||||
msgid "ppfun"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/PopUp.jsx:48
|
||||
msgid "PixelPlanet.Fun PopUp"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:17
|
||||
msgid "Email can't be empty."
|
||||
msgstr ""
|
||||
|
@ -204,6 +204,10 @@ msgstr ""
|
|||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/baninfo.js:32
|
||||
msgid "You are not banned"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/modtools.js:53
|
||||
msgid "You are not logged in"
|
||||
msgstr ""
|
||||
|
@ -216,8 +220,44 @@ msgstr ""
|
|||
msgid "Just admins can do that"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/baninfo.js:32
|
||||
msgid "You are not banned"
|
||||
#: src/routes/api/auth/logout.js:11
|
||||
msgid "You are not even logged in."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/delete_account.js:65
|
||||
#: src/routes/api/auth/logout.js:20
|
||||
msgid "Server error when logging out."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/verify.js:26
|
||||
#: src/routes/api/auth/verify.js:35
|
||||
msgid "Mail verification"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/verify.js:27
|
||||
msgid "You are now verified :)"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/verify.js:35
|
||||
msgid ""
|
||||
"Your mail verification code is invalid or already expired :(, please "
|
||||
"request a new one."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/change_mail.js:44
|
||||
#: src/routes/api/auth/change_passwd.js:34
|
||||
#: src/routes/api/auth/delete_account.js:36
|
||||
msgid "You are not authenticated."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/change_mail.js:53
|
||||
#: src/routes/api/auth/change_passwd.js:43
|
||||
#: src/routes/api/auth/delete_account.js:55
|
||||
msgid "Incorrect password!"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/delete_account.js:46
|
||||
msgid "Muted users can not delete their account."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/change_mail.js:22
|
||||
|
@ -225,6 +265,23 @@ msgstr ""
|
|||
msgid "This email provider is not allowed"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/change_mail.js:62
|
||||
msgid "Muted users can not do this."
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/RedirectionPage.jsx:19
|
||||
msgid "PixelPlanet.fun Accounts"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/RedirectionPage.jsx:29
|
||||
msgid "You will be automatically redirected after 15s"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/RedirectionPage.jsx:30
|
||||
#, javascript-format
|
||||
msgid "Or ${ clickHere } to go back to pixelplanet"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/register.js:31
|
||||
msgid "No Captcha given"
|
||||
msgstr ""
|
||||
|
@ -257,136 +314,79 @@ msgstr ""
|
|||
msgid "Failed to establish session after register :("
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/verify.js:26
|
||||
#: src/routes/api/auth/verify.js:35
|
||||
msgid "Mail verification"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/verify.js:27
|
||||
msgid "You are now verified :)"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/verify.js:35
|
||||
msgid ""
|
||||
"Your mail verification code is invalid or already expired :(, please "
|
||||
"request a new one."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/logout.js:11
|
||||
msgid "You are not even logged in."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/delete_account.js:65
|
||||
#: src/routes/api/auth/logout.js:20
|
||||
msgid "Server error when logging out."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/change_mail.js:44
|
||||
#: src/routes/api/auth/change_passwd.js:34
|
||||
#: src/routes/api/auth/delete_account.js:36
|
||||
msgid "You are not authenticated."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/change_mail.js:53
|
||||
#: src/routes/api/auth/change_passwd.js:43
|
||||
#: src/routes/api/auth/delete_account.js:55
|
||||
msgid "Incorrect password!"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/delete_account.js:46
|
||||
msgid "Muted users can not delete their account."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/change_mail.js:62
|
||||
msgid "Muted users can not do this."
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/RedirectionPage.jsx:19
|
||||
msgid "PixelPlanet.fun Accounts"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/RedirectionPage.jsx:29
|
||||
msgid "You will be automatically redirected after 15s"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr/RedirectionPage.jsx:30
|
||||
#, javascript-format
|
||||
msgid "Or ${ clickHere } to go back to pixelplanet"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:19
|
||||
#: src/canvasesDesc.js:20
|
||||
msgid "Earth"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:20
|
||||
#: src/canvasesDesc.js:21
|
||||
msgid "Moon"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:21
|
||||
#: src/canvasesDesc.js:22
|
||||
msgid "3D Canvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:22
|
||||
#: src/canvasesDesc.js:23
|
||||
msgid "Coronavirus"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:23
|
||||
#: src/canvasesDesc.js:24
|
||||
msgid "PixelZone"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:24
|
||||
#: src/canvasesDesc.js:25
|
||||
msgid "PixelCanvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:25
|
||||
#: src/canvasesDesc.js:26
|
||||
msgid "1bit"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:26
|
||||
#: src/canvasesDesc.js:27
|
||||
msgid "Top10"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:27
|
||||
#: src/canvasesDesc.js:28
|
||||
msgid "Thoia"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:30
|
||||
#: src/canvasesDesc.js:31
|
||||
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:31
|
||||
#: src/canvasesDesc.js:32
|
||||
msgid ""
|
||||
"Moon canvas. Safe space for art. No flags or large text (unless part of "
|
||||
"art) or art larger than 1.5k x 1.5k pixels."
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:32
|
||||
#: src/canvasesDesc.js:33
|
||||
msgid "Place Voxels on a 3D canvas with others"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:33
|
||||
#: src/canvasesDesc.js:34
|
||||
msgid "Special canvas to spread awareness of SARS-CoV2"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:34
|
||||
#: src/canvasesDesc.js:35
|
||||
msgid "Mirror of PixelZone"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:35
|
||||
#: src/canvasesDesc.js:36
|
||||
msgid "Mirror of PixelCanvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:36
|
||||
#: src/canvasesDesc.js:37
|
||||
msgid "Black and White canvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:37
|
||||
#: src/canvasesDesc.js:38
|
||||
msgid ""
|
||||
"A canvas for the most active players from the the previous day. Daily "
|
||||
"ranking updates at 00:00 UTC."
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:38
|
||||
#: src/canvasesDesc.js:39
|
||||
msgid ""
|
||||
"Thoia World Canvas. Advanced fictional worldbuilding and arts. Abandon the "
|
||||
"old world and all it entails."
|
||||
|
|
|
@ -46,6 +46,14 @@ msgstr ""
|
|||
msgid "Hide Hidden Canvases"
|
||||
msgstr ""
|
||||
|
||||
#: src/ui/rendererFactory.js:30
|
||||
msgid "Canvas Error"
|
||||
msgstr ""
|
||||
|
||||
#: src/ui/rendererFactory.js:31
|
||||
msgid "Can't render 3D canvas, do you have WebGL2 disabled?"
|
||||
msgstr ""
|
||||
|
||||
#: src/ui/PixelTransferController.js:70
|
||||
msgid "Error :("
|
||||
msgstr ""
|
||||
|
@ -171,14 +179,6 @@ msgstr ""
|
|||
msgid "Error ${ retCode }"
|
||||
msgstr ""
|
||||
|
||||
#: src/ui/rendererFactory.js:30
|
||||
msgid "Canvas Error"
|
||||
msgstr ""
|
||||
|
||||
#: src/ui/rendererFactory.js:31
|
||||
msgid "Can't render 3D canvas, do you have WebGL2 disabled?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/BanInfo.jsx:136
|
||||
#: src/store/actions/index.js:7
|
||||
msgid "OK"
|
||||
|
@ -231,6 +231,13 @@ msgstr ""
|
|||
msgid "You have new messages in chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Converter.jsx:565
|
||||
#: src/components/CoordinatesBox.jsx:31
|
||||
#: src/components/ModWatchtools.jsx:384
|
||||
#: src/components/ModWatchtools.jsx:402
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/OnlineBox.jsx:40
|
||||
msgid "Online Users on Canvas"
|
||||
msgstr ""
|
||||
|
@ -243,26 +250,11 @@ msgstr ""
|
|||
msgid "Pixels placed"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Converter.jsx:565
|
||||
#: src/components/CoordinatesBox.jsx:31
|
||||
#: src/components/ModWatchtools.jsx:378
|
||||
#: src/components/ModWatchtools.jsx:396
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/buttons/CanvasSwitchButton.jsx:20
|
||||
#: src/components/windows/index.js:19
|
||||
msgid "Canvas Selection"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/buttons/ChatButton.jsx:88
|
||||
msgid "Close Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/buttons/ChatButton.jsx:88
|
||||
msgid "Open Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/buttons/ExpandMenuButton.jsx:22
|
||||
msgid "Close Menu"
|
||||
msgstr ""
|
||||
|
@ -271,11 +263,19 @@ msgstr ""
|
|||
msgid "Open Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/HistorySelect.jsx:144
|
||||
#: src/components/buttons/ChatButton.jsx:88
|
||||
msgid "Close Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/buttons/ChatButton.jsx:88
|
||||
msgid "Open Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/HistorySelect.jsx:146
|
||||
msgid "Loading"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/HistorySelect.jsx:145
|
||||
#: src/components/HistorySelect.jsx:147
|
||||
msgid "Select Date above"
|
||||
msgstr ""
|
||||
|
||||
|
@ -449,6 +449,54 @@ msgstr ""
|
|||
msgid "Why?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/CanvasSelect.jsx:29
|
||||
msgid ""
|
||||
"Select the canvas you want to use.\n"
|
||||
"Every canvas is unique and has different palettes, cooldown and "
|
||||
"requirements.\n"
|
||||
"Archive of closed canvases can be accessed here:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/CanvasSelect.jsx:37
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Archive.jsx:29
|
||||
msgid ""
|
||||
"While we tend to not delete canvases, some canvases are started for fun or "
|
||||
"as a request by users who currently like a meme. Those canvases can get "
|
||||
"boring after a while and after weeks of no major change and if they really "
|
||||
"aren't worth being kept active. And Some other canvases might outlive their "
|
||||
"welcome and become useless."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Archive.jsx:30
|
||||
msgid "Here we collect removed canvases to archive them in a proper way."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Archive.jsx:35
|
||||
msgid "Removed Canvases with history available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Archive.jsx:53
|
||||
msgid "Political Compass Canvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Archive.jsx:60
|
||||
msgid ""
|
||||
"This canvas got requested during a time of political conflicts on the main "
|
||||
"Earth canvas. It was a 1024x1024 representation of the political compass "
|
||||
"with a 5s cooldown and 60s stacking. It got launched on May 11th and "
|
||||
"remained active for months till it got shut down on November 30th."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Archive.jsx:61
|
||||
msgid ""
|
||||
"We decided to archive it as a timelapse with lossless encoded webm. Taking "
|
||||
"a screenshot from the timelapse results in a perfect 1:1 representation of "
|
||||
"how the canvas was at that time."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Help.jsx:42
|
||||
msgid "Place color pixels on a large canvas with other players online!"
|
||||
msgstr ""
|
||||
|
@ -782,60 +830,16 @@ msgstr ""
|
|||
|
||||
#: src/components/Admintools.jsx:154
|
||||
#: src/components/Admintools.jsx:238
|
||||
#: src/components/ModCanvastools.jsx:302
|
||||
#: src/components/ModCanvastools.jsx:382
|
||||
#: src/components/ModCanvastools.jsx:455
|
||||
#: src/components/ModCanvastools.jsx:546
|
||||
#: src/components/ModCanvastools.jsx:305
|
||||
#: src/components/ModCanvastools.jsx:390
|
||||
#: src/components/ModCanvastools.jsx:467
|
||||
#: src/components/ModCanvastools.jsx:562
|
||||
#: src/components/ModIIDtools.jsx:135
|
||||
#: src/components/windows/ForgotPassword.jsx:84
|
||||
#: src/components/windows/Register.jsx:127
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/CanvasSelect.jsx:29
|
||||
msgid ""
|
||||
"Select the canvas you want to use. Every canvas is unique and has "
|
||||
"different palettes, cooldown and requirements. Archive of closed canvases "
|
||||
"can be accessed here:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/CanvasSelect.jsx:37
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Archive.jsx:16
|
||||
msgid ""
|
||||
"While we tend to not delete canvases, some canvases are started for fun or "
|
||||
"as a request by users who currently like a meme. Those canvases can get "
|
||||
"boring after a while and after weeks of no major change and if they really "
|
||||
"aren't worth being kept active, we decide to remove them."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Archive.jsx:18
|
||||
msgid ""
|
||||
"Here we collect those canvases to archive them in a proper way (which is "
|
||||
"currently just one)."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Archive.jsx:20
|
||||
msgid "Political Compass Canvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Archive.jsx:27
|
||||
msgid ""
|
||||
"This canvas got requested during a time of political conflicts on the main "
|
||||
"Earth canvas. It was a 1024x1024 representation of the political compass "
|
||||
"with a 5s cooldown and 60s stacking. It got launched on May 11th and "
|
||||
"remained active for months till it got shut down on November 30th."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Archive.jsx:28
|
||||
msgid ""
|
||||
"We decided to archive it as a timelapse with lossless encoded webm. Taking "
|
||||
"a screenshot from the timelapse results in a perfect 1:1 representation of "
|
||||
"how the canvas was at that time."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/windows/Chat.jsx:180
|
||||
msgid "Start chatting here"
|
||||
msgstr ""
|
||||
|
@ -949,13 +953,6 @@ msgstr ""
|
|||
msgid "Copy"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:91
|
||||
#: src/components/ChangeName.jsx:68
|
||||
#: src/components/ChangePassword.jsx:109
|
||||
#: src/components/LanguageSelect.jsx:80
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/LogInArea.jsx:19
|
||||
msgid "Login to access more features and stats."
|
||||
msgstr ""
|
||||
|
@ -980,6 +977,58 @@ msgstr ""
|
|||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:29
|
||||
msgid "Online Users"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:34
|
||||
msgid "Cooldown"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:40
|
||||
msgid "Stacking till"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:42
|
||||
msgid "Ranked"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:44
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:44
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:50
|
||||
msgid "Requirements"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:53
|
||||
msgid "User Account"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:55
|
||||
#, javascript-format
|
||||
msgid "and ${ canvas.req } Pixels set"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:58
|
||||
msgid "Top 10 Daily Ranking"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:64
|
||||
msgid "Dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:91
|
||||
#: src/components/ChangeName.jsx:68
|
||||
#: src/components/ChangePassword.jsx:109
|
||||
#: src/components/LanguageSelect.jsx:80
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserAreaContent.jsx:62
|
||||
msgid "Today Placed Pixels"
|
||||
msgstr ""
|
||||
|
@ -1138,79 +1187,6 @@ msgstr ""
|
|||
msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:29
|
||||
msgid "Online Users"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:34
|
||||
msgid "Cooldown"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:40
|
||||
msgid "Stacking till"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:42
|
||||
msgid "Ranked"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:44
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:44
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:50
|
||||
msgid "Requirements"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:53
|
||||
msgid "User Account"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:55
|
||||
#, javascript-format
|
||||
msgid "and ${ canvas.req } Pixels set"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:58
|
||||
msgid "Top 10 Daily Ranking"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:64
|
||||
msgid "Dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/chartSettings.js:30
|
||||
msgid "Top 10 Countries [pxls / day]"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/chartSettings.js:127
|
||||
msgid "Players and Pixels per hour"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/chartSettings.js:221
|
||||
msgid "Top 10 Players [pxls / day]"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/chartSettings.js:294
|
||||
msgid "Countries by Pixels Today"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/chartSettings.js:351
|
||||
msgid "Total Pixels placed per day"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/LogInForm.jsx:77
|
||||
msgid "Name or Email"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/LogInForm.jsx:88
|
||||
msgid "LogIn"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserMessages.jsx:28
|
||||
msgid ""
|
||||
"Please verify your mail address or your account could get deleted after a "
|
||||
|
@ -1225,6 +1201,14 @@ msgstr ""
|
|||
msgid "Click here to request a new verification mail."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeName.jsx:64
|
||||
msgid "New Username"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/DeleteAccount.jsx:66
|
||||
msgid "Yes, Delete My Account!"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangePassword.jsx:21
|
||||
msgid "Passwords do not match."
|
||||
msgstr ""
|
||||
|
@ -1245,24 +1229,6 @@ msgstr ""
|
|||
msgid "Confirm New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeName.jsx:64
|
||||
msgid "New Username"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:59
|
||||
msgid ""
|
||||
"Changed Mail successfully. We sent you a verification mail, "
|
||||
"please verify your new mail address."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:87
|
||||
msgid "New Mail"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/DeleteAccount.jsx:66
|
||||
msgid "Yes, Delete My Account!"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/SocialSettings.jsx:35
|
||||
msgid "Block DMs"
|
||||
msgstr ""
|
||||
|
@ -1287,6 +1253,14 @@ msgstr ""
|
|||
msgid "You have no users blocked"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/LogInForm.jsx:77
|
||||
msgid "Name or Email"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/LogInForm.jsx:88
|
||||
msgid "LogIn"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModCanvastools.jsx:168
|
||||
msgid "Build image on canvas."
|
||||
msgstr ""
|
||||
|
@ -1333,50 +1307,50 @@ msgid "File"
|
|||
msgstr ""
|
||||
|
||||
#: src/components/ModCanvastools.jsx:269
|
||||
msgid "Coordinates in X_Y format:"
|
||||
msgid "Coordinates:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModCanvastools.jsx:307
|
||||
#: src/components/ModCanvastools.jsx:310
|
||||
msgid "Pixel Protection"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModCanvastools.jsx:309
|
||||
#: src/components/ModCanvastools.jsx:314
|
||||
msgid ""
|
||||
"Set protection of areas (if you need finer grained control, "
|
||||
"use protect with image upload and alpha layers)"
|
||||
"Set protection of areas (if you need finer grained control, use protect "
|
||||
"with image upload and alpha layers)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModCanvastools.jsx:330
|
||||
#: src/components/ModCanvastools.jsx:403
|
||||
#: src/components/ModCanvastools.jsx:486
|
||||
#: src/components/ModCanvastools.jsx:334
|
||||
#: src/components/ModCanvastools.jsx:411
|
||||
#: src/components/ModCanvastools.jsx:498
|
||||
#: src/components/ModWatchtools.jsx:176
|
||||
msgid "Top-left corner"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModCanvastools.jsx:347
|
||||
#: src/components/ModCanvastools.jsx:420
|
||||
#: src/components/ModCanvastools.jsx:503
|
||||
#: src/components/ModWatchtools.jsx:193
|
||||
#: src/components/ModCanvastools.jsx:353
|
||||
#: src/components/ModCanvastools.jsx:430
|
||||
#: src/components/ModCanvastools.jsx:517
|
||||
#: src/components/ModWatchtools.jsx:195
|
||||
msgid "Bottom-right corner"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModCanvastools.jsx:388
|
||||
#: src/components/ModCanvastools.jsx:396
|
||||
msgid "Rollback to Date"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModCanvastools.jsx:390
|
||||
#: src/components/ModCanvastools.jsx:398
|
||||
msgid "Rollback an area of the canvas to a set date (00:00 UTC)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModCanvastools.jsx:461
|
||||
#: src/components/ModCanvastools.jsx:473
|
||||
msgid "Canvas Cleaner"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModCanvastools.jsx:463
|
||||
#: src/components/ModCanvastools.jsx:475
|
||||
msgid "Apply a filter to clean trash in large canvas areas."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModCanvastools.jsx:564
|
||||
#: src/components/ModCanvastools.jsx:580
|
||||
msgid "Stop Cleaner"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1412,6 +1386,16 @@ msgstr ""
|
|||
msgid "User Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:59
|
||||
msgid ""
|
||||
"Changed Mail successfully. We sent you a verification mail, "
|
||||
"please verify your new mail address."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:87
|
||||
msgid "New Mail"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModWatchtools.jsx:48
|
||||
msgid "Interval is invalid"
|
||||
msgstr ""
|
||||
|
@ -1432,11 +1416,11 @@ msgstr ""
|
|||
msgid "IID (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModWatchtools.jsx:239
|
||||
#: src/components/ModWatchtools.jsx:243
|
||||
msgid "Get Pixels"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ModWatchtools.jsx:271
|
||||
#: src/components/ModWatchtools.jsx:275
|
||||
msgid "Get Users"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1460,6 +1444,26 @@ msgstr ""
|
|||
msgid "(0 = infinite)"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/chartSettings.js:30
|
||||
msgid "Top 10 Countries [pxls / day]"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/chartSettings.js:127
|
||||
msgid "Players and Pixels per hour"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/chartSettings.js:221
|
||||
msgid "Top 10 Players [pxls / day]"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/chartSettings.js:294
|
||||
msgid "Countries by Pixels Today"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/chartSettings.js:351
|
||||
msgid "Total Pixels placed per day"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/contextmenus/UserContextMenu.jsx:49
|
||||
msgid "Ping"
|
||||
msgstr ""
|
||||
|
|
|
@ -267,7 +267,8 @@
|
|||
"cds": 1000000,
|
||||
"ranked": true,
|
||||
"req": 5000,
|
||||
"sd": "2020-11-09"
|
||||
"sd": "2020-11-09",
|
||||
"ed": "2024-01-04"
|
||||
},
|
||||
"8": {
|
||||
"ident": "t",
|
||||
|
|
|
@ -197,7 +197,7 @@ function Converter() {
|
|||
>
|
||||
{
|
||||
Object.keys(canvases).map((canvas) => (
|
||||
(canvases[canvas].v
|
||||
(canvases[canvas].v || canvases[canvas].ed
|
||||
|| (canvases[canvas].hid && !showHiddenCanvases))
|
||||
? null
|
||||
: (
|
||||
|
|
|
@ -34,11 +34,13 @@ const HistorySelect = () => {
|
|||
const [
|
||||
canvasId,
|
||||
canvasStartDate,
|
||||
canvasEndDate,
|
||||
historicalDate,
|
||||
historicalTime,
|
||||
] = useSelector((state) => [
|
||||
state.canvas.canvasId,
|
||||
state.canvas.canvasStartDate,
|
||||
state.canvas.canvasEndDate,
|
||||
state.canvas.historicalDate,
|
||||
state.canvas.historicalTime,
|
||||
], shallowEqual);
|
||||
|
@ -108,7 +110,7 @@ const HistorySelect = () => {
|
|||
key="dateinput"
|
||||
value={selectedDate}
|
||||
min={canvasStartDate}
|
||||
max={max}
|
||||
max={canvasEndDate || max}
|
||||
ref={dateSelect}
|
||||
onChange={handleDateChange}
|
||||
/>
|
||||
|
|
|
@ -266,7 +266,7 @@ function ModCanvastools() {
|
|||
</select>
|
||||
<p>{descAction}</p>
|
||||
<p>
|
||||
{t`Coordinates in X_Y format:`}
|
||||
{t`Coordinates:`}
|
||||
<input
|
||||
defaultValue={keptState.coords}
|
||||
style={{
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
/* eslint-disable max-len */
|
||||
|
||||
import React from 'react';
|
||||
import React, { useCallback } from 'react';
|
||||
import { useDispatch, useSelector, shallowEqual } from 'react-redux';
|
||||
import { t } from 'ttag';
|
||||
|
||||
import CanvasItem from '../CanvasItem';
|
||||
import { selectCanvas } from '../../store/actions';
|
||||
|
||||
const imageStyle = {
|
||||
maxWidth: '20%',
|
||||
padding: 2,
|
||||
|
@ -10,35 +14,65 @@ const imageStyle = {
|
|||
verticalAlign: 'middle',
|
||||
};
|
||||
|
||||
const Archive = () => (
|
||||
<div className="content">
|
||||
<p>
|
||||
{t`While we tend to not delete canvases, some canvases are started for fun or as a request by users who currently like a meme. \
|
||||
Those canvases can get boring after a while and after weeks of no major change and if they really aren't worth being kept active, we decide to remove them.`}<br />
|
||||
{t`Here we collect those canvases to archive them in a proper way (which is currently just one).`}
|
||||
</p>
|
||||
<h3>{t`Political Compass Canvas`}</h3>
|
||||
<img
|
||||
style={imageStyle}
|
||||
alt="political-compass"
|
||||
src="https://storage.pixelplanet.fun/compass-preview.png"
|
||||
/>
|
||||
<p>
|
||||
{t`This canvas got requested during a time of political conflicts on the main Earth canvas. It was a 1024x1024 representation of the political compass with a 5s cooldown and 60s stacking. It got launched on May 11th and remained active for months till it got shut down on November 30th.`}<br />
|
||||
{t`We decided to archive it as a timelapse with lossless encoded webm. Taking a screenshot from the timelapse results in a perfect 1:1 representation of how the canvas was at that time.`}
|
||||
</p>
|
||||
<p className="modalinfo">
|
||||
Timelapse:
|
||||
<a href="https://storage.pixelplanet.fun/compass-timelapse.webm">
|
||||
Download
|
||||
</a>
|
||||
</p>
|
||||
<img
|
||||
style={{ padding: 2, maxWidth: '80%', verticalAlign: 'middle' }}
|
||||
alt="political-compass"
|
||||
src="https://storage.pixelplanet.fun/compass-final.png"
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
const Archive = () => {
|
||||
const [canvases, online] = useSelector((state) => [
|
||||
state.canvas.canvases,
|
||||
state.ranks.online,
|
||||
], shallowEqual);
|
||||
const dispatch = useDispatch();
|
||||
const selCanvas = useCallback((canvasId) => dispatch(selectCanvas(canvasId)),
|
||||
[dispatch]);
|
||||
|
||||
return (
|
||||
<div className="content">
|
||||
<p>
|
||||
{t`While we tend to not delete canvases, some canvases are started for fun or as a request by users who currently like a meme. Those canvases can get boring after a while and after weeks of no major change and if they really aren't worth being kept active. And Some other canvases might outlive their welcome and become useless.`}<br />
|
||||
{t`Here we collect removed canvases to archive them in a proper way.`}
|
||||
</p>
|
||||
{
|
||||
(window.ssv?.backupurl) && (
|
||||
<>
|
||||
<h3>{t`Removed Canvases with history available`}</h3>
|
||||
{
|
||||
Object.keys(canvases).map((canvasId) => (
|
||||
canvases[canvasId].ed
|
||||
&& (
|
||||
<CanvasItem
|
||||
key={canvasId}
|
||||
online={online[canvasId]}
|
||||
canvasId={canvasId}
|
||||
canvas={canvases[canvasId]}
|
||||
selCanvas={selCanvas}
|
||||
/>
|
||||
)
|
||||
))
|
||||
}
|
||||
</>
|
||||
)
|
||||
}
|
||||
<h3>{t`Political Compass Canvas`}</h3>
|
||||
<img
|
||||
style={imageStyle}
|
||||
alt="political-compass"
|
||||
src="https://storage.pixelplanet.fun/compass-preview.png"
|
||||
/>
|
||||
<p>
|
||||
{t`This canvas got requested during a time of political conflicts on the main Earth canvas. It was a 1024x1024 representation of the political compass with a 5s cooldown and 60s stacking. It got launched on May 11th and remained active for months till it got shut down on November 30th.`}<br />
|
||||
{t`We decided to archive it as a timelapse with lossless encoded webm. Taking a screenshot from the timelapse results in a perfect 1:1 representation of how the canvas was at that time.`}
|
||||
</p>
|
||||
<p className="modalinfo">
|
||||
Timelapse:
|
||||
<a href="https://storage.pixelplanet.fun/compass-timelapse.webm">
|
||||
Download
|
||||
</a>
|
||||
</p>
|
||||
<img
|
||||
style={{ padding: 2, maxWidth: '80%', verticalAlign: 'middle' }}
|
||||
alt="political-compass"
|
||||
src="https://storage.pixelplanet.fun/compass-final.png"
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Archive;
|
||||
|
|
|
@ -26,30 +26,31 @@ const CanvasSelect = () => {
|
|||
return (
|
||||
<div className="content">
|
||||
<p>
|
||||
{t`Select the canvas you want to use. \
|
||||
Every canvas is unique and has different palettes, cooldown and requirements. \
|
||||
Archive of closed canvases can be accessed here:`}
|
||||
{t`Select the canvas you want to use.
|
||||
Every canvas is unique and has different palettes, cooldown and requirements.
|
||||
Archive of closed canvases can be accessed here:`}
|
||||
<span
|
||||
role="button"
|
||||
tabIndex={0}
|
||||
className="modallink"
|
||||
onClick={() => link('ARCHIVE')}
|
||||
>{t`Archive`}</span>)
|
||||
>{t`Archive`}</span>
|
||||
</p>
|
||||
{
|
||||
Object.keys(canvases).map((canvasId) => (
|
||||
(!canvases[canvasId].hid || showHiddenCanvases)
|
||||
&& (
|
||||
<CanvasItem
|
||||
key={canvasId}
|
||||
online={online[canvasId]}
|
||||
canvasId={canvasId}
|
||||
canvas={canvases[canvasId]}
|
||||
selCanvas={selCanvas}
|
||||
/>
|
||||
)
|
||||
))
|
||||
}
|
||||
Object.keys(canvases).map((canvasId) => (
|
||||
(!canvases[canvasId].hid || showHiddenCanvases)
|
||||
&& !canvases[canvasId].ed
|
||||
&& (
|
||||
<CanvasItem
|
||||
key={canvasId}
|
||||
online={online[canvasId]}
|
||||
canvasId={canvasId}
|
||||
canvas={canvases[canvasId]}
|
||||
selCanvas={selCanvas}
|
||||
/>
|
||||
)
|
||||
))
|
||||
}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -65,7 +65,7 @@ function createKeyPressHandler(store) {
|
|||
: t`Grid OFF`));
|
||||
return;
|
||||
case 'h':
|
||||
if (window.ssv && window.ssv.backupurl) {
|
||||
if (window?.ssv.backupurl) {
|
||||
store.dispatch(toggleHistoricalView());
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -87,8 +87,8 @@ export default async function drawByOffsets(
|
|||
curReqIPs.set(ip, startTime);
|
||||
|
||||
const canvas = canvases[canvasId];
|
||||
if (!canvas) {
|
||||
// canvas doesn't exist
|
||||
if (!canvas || canvas.ed) {
|
||||
// canvas doesn't exist or is expired
|
||||
throw new Error(1);
|
||||
}
|
||||
|
||||
|
@ -124,13 +124,6 @@ export default async function drawByOffsets(
|
|||
|
||||
factor *= rankings.getCountryCoolDownFactor(user.country);
|
||||
|
||||
if (canvasId === 0 && (user.country === 'ir')) {
|
||||
factor *= 0.5;
|
||||
if (canvas.bcd * factor < 1000) {
|
||||
factor = 1000 / canvas.bcd;
|
||||
}
|
||||
}
|
||||
|
||||
const bcd = Math.floor(canvas.bcd * factor);
|
||||
const pcd = Math.floor((canvas.pcd) ? canvas.pcd * factor : bcd);
|
||||
const userId = user.id;
|
||||
|
|
|
@ -24,8 +24,8 @@ export async function updateBackupRedis(canvasRedis, backupRedis, canvases) {
|
|||
for (let i = 0; i < ids.length; i += 1) {
|
||||
const id = ids[i];
|
||||
const canvas = canvases[id];
|
||||
if (canvas.v || canvas.hid) {
|
||||
// ignore 3D and hidden canvases
|
||||
if (canvas.v || canvas.hid || canvas.ed) {
|
||||
// ignore 3D, hidden and retired canvases
|
||||
continue;
|
||||
}
|
||||
const chunksXY = (canvas.size / TILE_SIZE);
|
||||
|
@ -86,8 +86,8 @@ export async function incrementalBackupRedis(
|
|||
const id = ids[ind];
|
||||
|
||||
const canvas = canvases[id];
|
||||
if (canvas.v || canvas.hid) {
|
||||
// ignore 3D and hidden canvases
|
||||
if (canvas.v || canvas.hid || canvas.ed) {
|
||||
// ignore 3D, hidden and retired canvases
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -51,15 +51,15 @@ export function dateToString(date) {
|
|||
}
|
||||
|
||||
/*
|
||||
* get current date in YYYY-MM-DD
|
||||
* get current UTC date in YYYY-MM-DD
|
||||
*/
|
||||
export function getToday() {
|
||||
const date = new Date();
|
||||
let day = date.getDate();
|
||||
let month = date.getMonth() + 1;
|
||||
let day = date.getUTCDate();
|
||||
let month = date.getUTCMonth() + 1;
|
||||
if (month < 10) month = `0${month}`;
|
||||
if (day < 10) day = `0${day}`;
|
||||
return `${date.getFullYear()}-${month}-${day}`;
|
||||
return `${date.getUTCFullYear()}-${month}-${day}`;
|
||||
}
|
||||
|
||||
// z is assumed to be height here
|
||||
|
|
|
@ -584,6 +584,7 @@ class SocketServer {
|
|||
this.deleteAllChunks(ws);
|
||||
}
|
||||
ws.canvasId = canvasId;
|
||||
if (canvases[canvasId].ed) return;
|
||||
const wait = await ws.user.getWait(canvasId);
|
||||
ws.send(dehydrateCoolDown(wait));
|
||||
break;
|
||||
|
|
|
@ -23,6 +23,7 @@ export type CanvasState = {
|
|||
is3D: boolean,
|
||||
canvasSize: number,
|
||||
canvasStartDate: string,
|
||||
canvasEndDate: string,
|
||||
palette: Palette,
|
||||
clrIgnore: number,
|
||||
view: Array,
|
||||
|
@ -68,10 +69,12 @@ function getViewFromURL(canvases) {
|
|||
const clrIgnore = canvas.cli || 0;
|
||||
const {
|
||||
colors,
|
||||
sd: canvasStartDate,
|
||||
sd: canvasStartDate = null,
|
||||
ed: canvasEndDate = null,
|
||||
size: canvasSize,
|
||||
} = canvas;
|
||||
const is3D = !!canvas.v;
|
||||
const isHistoricalView = !!canvasEndDate;
|
||||
|
||||
const x = parseInt(almost[1], 10);
|
||||
const y = parseInt(almost[2], 10);
|
||||
|
@ -92,7 +95,8 @@ function getViewFromURL(canvases) {
|
|||
}
|
||||
|
||||
if (!is3D && canvasId !== null) {
|
||||
scale = clamp(scale, TILE_SIZE / canvasSize, MAX_SCALE);
|
||||
const minScale = (isHistoricalView) ? 0.7 : TILE_SIZE / canvasSize;
|
||||
scale = clamp(scale, minScale, MAX_SCALE);
|
||||
view.length = 2;
|
||||
}
|
||||
|
||||
|
@ -103,12 +107,14 @@ function getViewFromURL(canvases) {
|
|||
historicalCanvasSize: canvasSize,
|
||||
is3D,
|
||||
canvasStartDate,
|
||||
canvasEndDate,
|
||||
canvasMaxTiledZoom: getMaxTiledZoom(canvasSize),
|
||||
palette: new Palette(colors, 0),
|
||||
clrIgnore,
|
||||
selectedColor: clrIgnore,
|
||||
view,
|
||||
viewscale: scale,
|
||||
isHistoricalView,
|
||||
scale,
|
||||
canvases,
|
||||
};
|
||||
|
@ -121,12 +127,14 @@ function getViewFromURL(canvases) {
|
|||
historicalCanvasSize: canvasd.size,
|
||||
is3D: !!canvasd.v,
|
||||
canvasStartDate: null,
|
||||
canvasEndDate: null,
|
||||
canvasMaxTiledZoom: getMaxTiledZoom(canvasd.size),
|
||||
palette: new Palette(canvasd.colors, 0),
|
||||
clrIgnore: canvasd.cli || 0,
|
||||
selectedColor: canvasd.cli || 0,
|
||||
view: [0, 0, 0],
|
||||
viewscale: DEFAULT_SCALE,
|
||||
isHistoricalView: false,
|
||||
scale: DEFAULT_SCALE,
|
||||
canvases,
|
||||
};
|
||||
|
@ -135,7 +143,6 @@ function getViewFromURL(canvases) {
|
|||
|
||||
const initialState = {
|
||||
...getViewFromURL(DEFAULT_CANVASES),
|
||||
isHistoricalView: false,
|
||||
historicalDate: null,
|
||||
historicalTime: null,
|
||||
showHiddenCanvases: false,
|
||||
|
@ -220,9 +227,11 @@ export default function canvasReducer(
|
|||
} = state;
|
||||
return {
|
||||
...state,
|
||||
scale: (scale < 1.0) ? 1.0 : scale,
|
||||
viewscale: (viewscale < 1.0) ? 1.0 : viewscale,
|
||||
isHistoricalView: !state.is3D && !state.isHistoricalView,
|
||||
scale: (scale < 0.7) ? 0.7 : scale,
|
||||
viewscale: (viewscale < 0.7) ? 0.7 : viewscale,
|
||||
isHistoricalView: !state.is3D && (
|
||||
!state.isHistoricalView || state.canvasEndDate
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -289,7 +298,8 @@ export default function canvasReducer(
|
|||
const clrIgnore = canvas.cli || 0;
|
||||
const {
|
||||
size: canvasSize,
|
||||
sd: canvasStartDate,
|
||||
sd: canvasStartDate = null,
|
||||
ed: canvasEndDate = null,
|
||||
ident: canvasIdent,
|
||||
colors,
|
||||
} = canvas;
|
||||
|
@ -306,7 +316,9 @@ export default function canvasReducer(
|
|||
selectedColor = prevCanvasCoords[canvasId].selectedColor;
|
||||
}
|
||||
//---
|
||||
const isHistoricalView = !is3D && state.isHistoricalView;
|
||||
const isHistoricalView = !is3D && (
|
||||
state.isHistoricalView || !!canvasEndDate
|
||||
);
|
||||
const historicalCanvasSize = getHistoricalCanvasSize(
|
||||
state.historicalDate,
|
||||
canvasSize,
|
||||
|
@ -324,6 +336,7 @@ export default function canvasReducer(
|
|||
canvasSize,
|
||||
is3D,
|
||||
canvasStartDate,
|
||||
canvasEndDate,
|
||||
palette,
|
||||
clrIgnore,
|
||||
view,
|
||||
|
@ -349,7 +362,9 @@ export default function canvasReducer(
|
|||
let { canvasIdent, scale, view } = state;
|
||||
|
||||
let canvasId = getIdFromObject(canvases, canvasIdent);
|
||||
if (canvasId === null) {
|
||||
if (canvasId === null || (
|
||||
!window.ssv?.backupurl && canvases[canvasId].ed
|
||||
)) {
|
||||
canvasId = DEFAULT_CANVAS_ID;
|
||||
canvasIdent = canvases[DEFAULT_CANVAS_ID].ident;
|
||||
}
|
||||
|
@ -358,13 +373,16 @@ export default function canvasReducer(
|
|||
const is3D = !!canvas.v;
|
||||
const {
|
||||
size: canvasSize,
|
||||
sd: canvasStartDate,
|
||||
sd: canvasStartDate = null,
|
||||
ed: canvasEndDate = null,
|
||||
colors,
|
||||
} = canvas;
|
||||
const palette = new Palette(colors, 0);
|
||||
const isHistoricalView = !!canvasEndDate;
|
||||
|
||||
if (!is3D) {
|
||||
scale = clamp(scale, TILE_SIZE / canvasSize, MAX_SCALE);
|
||||
const minScale = (isHistoricalView) ? 0.7 : TILE_SIZE / canvasSize;
|
||||
scale = clamp(scale, minScale, MAX_SCALE);
|
||||
view = [view[0], view[1]];
|
||||
}
|
||||
|
||||
|
@ -380,6 +398,7 @@ export default function canvasReducer(
|
|||
canvases,
|
||||
viewscale: scale,
|
||||
scale,
|
||||
isHistoricalView,
|
||||
view,
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue