1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-26 18:32:56 +08:00
Commit Graph

4933 Commits

Author SHA1 Message Date
Dean Herbert
4fb4c03956
Merge pull request #7779 from Malox10/hoverable-timestamps
Add tooltips with precise dates to beatmap set overlay
2020-02-21 09:48:22 +09:00
Dean Herbert
3380dbbd71 Improve visual appearance of ProcessingOverlay 2020-02-20 19:49:22 +09:00
Dean Herbert
5c16dbbea9
Merge pull request #7919 from smoogipoo/null-leaderboard-position
Support null leaderboard position
2020-02-20 16:27:24 +09:00
smoogipoo
d79ca97fe9 Make beatmap scores also support null position 2020-02-20 15:04:12 +09:00
Dan Balasescu
eb8a56055f
Merge pull request #7910 from EVAST9919/rankings-clickable-countries
Make country names in RankingsOverlay clickable
2020-02-20 15:00:01 +09:00
Dan Balasescu
474d0635cf
Merge pull request #7913 from TheWildTree/highlight-full-combo
Highlight max combo on beatmap leaderboards
2020-02-20 14:53:55 +09:00
smoogipoo
1a689231c2 Support null leaderboard position 2020-02-20 14:51:25 +09:00
Dan Balasescu
bf5c34a014
Merge branch 'master' into rankings-clickable-countries 2020-02-20 14:21:44 +09:00
Dan Balasescu
ae12097a46
Merge branch 'master' into highlight-full-combo 2020-02-20 14:02:24 +09:00
smoogipoo
00d8be9235 Adjust height transition 2020-02-20 13:48:34 +09:00
Andrei Zavatski
1935a14288 Adjust animations to be much smoother 2020-02-20 05:08:42 +03:00
Andrei Zavatski
a8c735b66d Change default category value 2020-02-20 04:19:50 +03:00
Andrei Zavatski
5d8445676d Merge remote-tracking branch 'refs/remotes/ppy/master' into new-direct-gen-three 2020-02-20 04:15:09 +03:00
Andrei Zavatski
66ea794935 Add debounce to the querying 2020-02-20 02:54:35 +03:00
Andrei Zavatski
7550685a61 DrawableErrorHandler -> NotFoundDrawable 2020-02-20 02:43:13 +03:00
TheWildTree
84d6a8ae2a Add null check 2020-02-19 19:42:56 +01:00
TheWildTree
7ea67aa672 Highlight max combo on beatmap leaderboards 2020-02-19 17:58:59 +01:00
Andrei Zavatski
edef84d9c3 CI fixes 2020-02-19 19:15:18 +03:00
Andrei Zavatski
2ef3c78736 Remove query binding duplicate 2020-02-19 18:19:15 +03:00
Andrei Zavatski
237be50e37 Implement DrawableErrorHandler component 2020-02-19 18:17:02 +03:00
Andrei Zavatski
8fcfb73d72 Implement BeatmapListingOverlay 2020-02-19 17:40:54 +03:00
Dean Herbert
3457d341b2
Merge branch 'master' into fix-async-playlist-enumeration 2020-02-19 23:38:39 +09:00
Andrei Zavatski
1442f5e0db Use DirectSortCriteria for BeatmapListingSortTabControl 2020-02-19 17:30:26 +03:00
Andrei Zavatski
98654586de Implement BeatmapListingHeader component 2020-02-19 17:28:14 +03:00
Andrei Zavatski
7b0c3281c2 Make country names clickable 2020-02-19 16:49:39 +03:00
Andrei Zavatski
378aaf82c1 Fix error when first Show call has been triggered by ShowCountry 2020-02-19 16:32:54 +03:00
Andrei Zavatski
146758862a Remove no longer needed null check 2020-02-19 16:25:06 +03:00
Andrei Zavatski
5d813bf421 Merge remote-tracking branch 'refs/remotes/ppy/master' into ingame-rankings 2020-02-19 16:23:18 +03:00
Dan Balasescu
255e01564f
Merge branch 'master' into rankings-refactor 2020-02-19 10:28:13 +09:00
Andrei Zavatski
e9003346d4 Add missing blank line 2020-02-18 21:28:38 +03:00
Andrei Zavatski
5347119a85 Various RankingsOverlay fixes 2020-02-18 21:26:25 +03:00
Andrei Zavatski
b6423dd92e Small textbox adjustments 2020-02-18 17:40:12 +03:00
Andrei Zavatski
7228900361 Implement BeatmapListingSearchSection component 2020-02-18 17:25:12 +03:00
Dan Balasescu
a195886e1b
Merge branch 'master' into fix-playlist-selected-state 2020-02-18 21:17:03 +09:00
Andrei Zavatski
c7d64d0015 Update BindableList usage in DrawableComment 2020-02-18 13:37:59 +03:00
Andrei Zavatski
3bf3becdd6 Merge remote-tracking branch 'refs/remotes/ppy/master' into subcomments-alter-new 2020-02-18 13:27:08 +03:00
Dean Herbert
035ddb9284
Merge branch 'master' into fix-async-playlist-enumeration 2020-02-18 19:26:32 +09:00
Dean Herbert
2f4c252fc0 Fix playlist items potentially not updating to the correct selected state 2020-02-18 19:19:04 +09:00
Dean Herbert
b18f9e195e Merge branch 'master' into bindable-list-events 2020-02-18 18:47:06 +09:00
Dan Balasescu
9e816e3479
Merge branch 'master' into italic-rankings-stuff 2020-02-18 16:05:18 +09:00
Dan Balasescu
75e0668b4e
Merge branch 'master' into new-direct-sort 2020-02-18 10:17:26 +09:00
Andrei Zavatski
316c6b2a94 Simplify RulesetInfo string presentation 2020-02-18 01:17:12 +03:00
Andrei Zavatski
410686c8b9 Use dropdown in BeatmapSearchFilterRow 2020-02-18 01:04:25 +03:00
Andrei Zavatski
ea99b613c9 Use GridContainer for layout 2020-02-17 23:41:07 +03:00
Andrei Zavatski
c69818925b Merge remote-tracking branch 'refs/remotes/ppy/master' into new-betmap-search-filter 2020-02-17 23:35:12 +03:00
Andrei Zavatski
bce9e7a356 Remove too much nesting for OverlaySortTabControl class 2020-02-17 22:32:58 +03:00
Andrei Zavatski
519548c99f Remove not necessary icon margin changes 2020-02-17 22:06:46 +03:00
Andrei Zavatski
20dc1a7dcd Merge remote-tracking branch 'refs/remotes/ppy/master' into new-direct-sort 2020-02-17 21:57:19 +03:00
smoogipoo
5ca93758dc Fix music playlist being enumerated asynchronously 2020-02-17 16:59:35 +09:00
Andrei Zavatski
c78534d14e Fix possible error in SpotlightsLayout 2020-02-17 10:07:32 +03:00
smoogipoo
958c891d15 Update with framework-side bindable list changes 2020-02-17 15:06:14 +09:00
Andrei Zavatski
480e5677ed Use OverlayColourProvider for CounterPill in profile overlay 2020-02-17 04:29:41 +03:00
Andrei Zavatski
fe7923b7e8 Add SortDirection Bindable and refactor to make everything work 2020-02-17 03:38:14 +03:00
Andrei Zavatski
2ba0bd872b Implement basic BeatmapListingSortTabControl 2020-02-17 02:35:46 +03:00
Andrei Zavatski
a9f366fda3 Implement OverlaySortTabControl component 2020-02-17 02:20:53 +03:00
Andrei Zavatski
ea285fd005 Refactor with including headers 2020-02-17 00:44:55 +03:00
Andrei Zavatski
c85a8a14cc Use property instead of function to set text size 2020-02-17 00:08:28 +03:00
TheWildTree
64a9b9c6fb Remove redundant using directives 2020-02-16 21:52:08 +01:00
TheWildTree
4d180a685a Adjust font sizes and spacing in BeatmapSetOverlay 2020-02-16 21:43:33 +01:00
TheWildTree
8fcd5e93dd Adjust table layout to match osu-web 2020-02-16 21:43:11 +01:00
Andrei Zavatski
e62fec58c1 Add ability to override text size 2020-02-16 16:38:05 +03:00
Andrei Zavatski
54a3705bdb Remove font weight changes on selection 2020-02-16 16:26:18 +03:00
Andrei Zavatski
a71e410e5d Make the filter autosized 2020-02-16 15:04:21 +03:00
Andrei Zavatski
3888911eee Implement BeatmapSearchFilter component 2020-02-16 14:19:49 +03:00
Bartłomiej Dach
e5a66bdef3 Refactor drawable profile score to match web 2020-02-16 06:16:02 +01:00
recapitalverb
03b5e78f61
Merge branch 'master' into align-score-right-content 2020-02-15 18:13:08 +07:00
recapitalverb
ac46b36600 Change right content origin 2020-02-15 16:53:44 +07:00
recapitalverb
7c9569c9a3
Merge branch 'master' into remove-duplicated-load 2020-02-15 12:10:34 +07:00
Andrei Zavatski
7cb11be810 Merge remote-tracking branch 'refs/remotes/ppy/master' into subcomments-alter-new 2020-02-14 20:55:51 +03:00
Andrei Zavatski
f64eabc38b Make countries name non-italic 2020-02-14 20:49:37 +03:00
recapitalverb
ee14a275a2 Make IAPIProvider instances nullable 2020-02-14 22:02:44 +07:00
recapitalverb
c46d828716 Preserve permitNulls 2020-02-14 20:59:51 +07:00
recapitalverb
10798aeab3 Fix code formatting 2020-02-14 20:30:27 +07:00
recapitalverb
c753cb46c5 Use [Resolved] wherever possible 2020-02-14 20:14:00 +07:00
smoogipoo
eb75d26c8f Extract common rearrangeable list design 2020-02-14 15:36:16 +09:00
smoogipoo
3a0b2508d4 Fix possible nullrefs 2020-02-14 15:01:34 +09:00
Andrei Zavatski
c68c347503 Remove unwanted property interpolation 2020-02-14 00:40:52 +03:00
Andrei Zavatski
ab84f4085a Fix possible error on SpotlightsLayout disposal 2020-02-13 23:20:45 +03:00
Bartłomiej Dach
0f25864fae Textbox -> TextBox rename pass 2020-02-13 21:04:53 +01:00
Andrei Zavatski
791bf6bc01 Make username text italic 2020-02-13 19:03:07 +03:00
Andrei Zavatski
e67e4f708e Adjust country name design 2020-02-13 19:01:26 +03:00
Malox10
c08398a404
Merge branch 'master' into hoverable-timestamps 2020-02-13 15:21:09 +01:00
Andrei Zavatski
11c59a141f Add background to rankings header 2020-02-13 14:12:10 +03:00
Andrei Zavatski
f05c1de4c1 Fix possible nullref 2020-02-13 14:11:53 +03:00
Andrei Zavatski
a677aa6cfc Add rankings overlay to the game 2020-02-13 13:39:33 +03:00
Dean Herbert
045d1f9c5b Disallow seeking on osu!direct download progress bars 2020-02-13 13:36:53 +09:00
Dean Herbert
6a2b3c5c02
Merge pull request #7733 from EVAST9919/rankings-overlay-spotlights
Add spotlight selector to RankingsOverlay
2020-02-13 13:14:02 +09:00
Andrei Zavatski
b1b2e4a041 Simplify parent comment assignment 2020-02-13 04:50:04 +03:00
Andrei Zavatski
c391a464a5 Add tests 2020-02-13 04:06:34 +03:00
Andrei Zavatski
483bbac6fd Simplify CommentsPage.onCommentRepliesReceived 2020-02-13 03:13:56 +03:00
Andrei Zavatski
b0db155565 Make replies addition more consistent 2020-02-13 02:47:13 +03:00
Andrei Zavatski
c6f8e157fd Make loadedReplies dictionary private 2020-02-13 02:37:41 +03:00
Andrei Zavatski
5201c1c87b Use new algorithm for comments tree creation 2020-02-13 02:21:13 +03:00
Andrei Zavatski
e2b3494352 Remove dependency on load state for DrawableComment.AddReplies 2020-02-13 00:19:21 +03:00
Andrei Zavatski
ec9c01a75f Merge remote-tracking branch 'refs/remotes/ppy/master' into subcomments-alter-new 2020-02-12 23:32:28 +03:00
Andrei Zavatski
62051c036b Small CommitButton improvements 2020-02-12 13:43:56 +03:00
Andrei Zavatski
ab7adb3a97 Adjust button colours 2020-02-12 13:28:49 +03:00
Andrei Zavatski
760be29015 Merge remote-tracking branch 'refs/remotes/ppy/master' into comment-editor 2020-02-12 13:23:35 +03:00
Dan Balasescu
9a9349a13a
Merge branch 'master' into adjust-beatmap-overlay 2020-02-12 16:52:42 +09:00
Andrei Zavatski
9ac6c271ac Naming adjustments 2020-02-12 02:05:45 +03:00
Andrei Zavatski
53a2b65dbd Create dependency between textbox and commit button 2020-02-12 01:35:08 +03:00
Andrei Zavatski
5a3daf1bd7 Implement CommitButton 2020-02-12 00:57:06 +03:00
Tree
b694b0c90c
Merge branch 'master' into adjust-beatmap-overlay 2020-02-11 21:07:26 +01:00
Andrei Zavatski
c022cf72b5 Implement CancellableCommentEditor 2020-02-11 20:47:51 +03:00
Andrei Zavatski
730c115f49 Fix some size values 2020-02-11 20:11:22 +03:00
Andrei Zavatski
829152c8e8 Implement EditorTextbox 2020-02-11 20:08:24 +03:00
Andrei Zavatski
482f622c94 CommentEditor basic implementation 2020-02-11 18:46:49 +03:00
recapitalverb
2be7d1a873 Remove redundant type specification 2020-02-11 18:19:08 +07:00
recapitalverb
44568ac9e6 Avoid covariant array conversion 2020-02-11 17:36:10 +07:00
recapitalverb
28a39fd8fa Use explicit typing 2020-02-11 17:12:32 +07:00
recapitalverb
17791259ed Fix InfoColumn minWidth implementation 2020-02-11 16:21:31 +07:00
Andrei Zavatski
0b6558dc40 Add SpotlightsLayout to RankingsOverlay 2020-02-11 02:35:23 +03:00
Andrei Zavatski
b04a4b5c8a Implement SpotlightsLayout 2020-02-11 01:44:56 +03:00
Andrei Zavatski
ed6a35cb9f Merge remote-tracking branch 'refs/remotes/ppy/master' into rankings-overlay-spotlights 2020-02-11 00:18:11 +03:00
Andrei Zavatski
15b4e3386f Fix incorrect algorithm for comment tree creation
Can cause one comment to be redrawn multiple times
2020-02-10 23:57:48 +03:00
TheWildTree
e072042d4e Match osu-web font size 2020-02-10 21:11:49 +01:00
Bartłomiej Dach
35d5237ddd Adjust font sizes 2020-02-10 20:40:39 +01:00
Bartłomiej Dach
811553cd60 Remove unnecessary coercions
Comparisons to null of nullable numbers are always false.
2020-02-10 20:37:34 +01:00
Bartłomiej Dach
e2950d7027 Extract method to avoid nested ternaries 2020-02-10 20:27:46 +01:00
Andrei Zavatski
d20a860879 CI fix 2020-02-10 16:08:58 +03:00
Andrei Zavatski
8239f21cad Remove whitespace 2020-02-10 15:52:12 +03:00
Andrei Zavatski
26afe0f31e Add ability to load long comment trees in CommentsContainer 2020-02-10 15:43:11 +03:00
Maximilian Junges
ed8cb1d6bf add missing eof newline 2020-02-09 23:46:06 +01:00
Maximilian Junges
3e06324f61 fix formatting issue 2020-02-09 23:39:34 +01:00
Maximilian Junges
867c733809 make score date hoverable 2020-02-09 23:19:32 +01:00
Maximilian Junges
b45f1ef99a make timestamps hoverable 2020-02-09 22:27:37 +01:00
TheWildTree
2770fb71b2 Use SortedStatistics where needed 2020-02-07 21:12:21 +01:00
TheWildTree
7395f01919 Use osu-web font sizes 2020-02-07 20:28:02 +01:00
Andrei Zavatski
881d192af3 Fix crash when selecting spotlight tab with not-null country 2020-02-07 12:07:16 +03:00
Andrei Zavatski
dc8dd24405 Merge remote-tracking branch 'refs/remotes/ppy/master' into rankings-overlay-spotlights 2020-02-07 11:49:31 +03:00
TheWildTree
c09af0052b Revert accuracy display and column sorting changes 2020-02-06 20:21:47 +01:00
Andrei Zavatski
5946ad7d80 Fix possible memory leak and better user change test support 2020-02-06 16:54:02 +03:00
Andrei Zavatski
0840033343 Merge remote-tracking branch 'refs/remotes/ppy/master' into logged-out-comments 2020-02-06 16:38:47 +03:00
Dean Herbert
48350638a2 Hide drag handles of all playlist items not currently being dragged 2020-02-06 18:38:00 +09:00
Dean Herbert
0c30e802c0 Merge remote-tracking branch 'upstream/master' into rearrangeable-playlist 2020-02-06 17:40:28 +09:00
Andrei Zavatski
7757a3a30b Move spotlight layout to it's own method 2020-02-05 23:06:13 +03:00
Andrei Zavatski
4dd25b42ae Move spotlightsRequest to another place 2020-02-05 23:00:42 +03:00
Andrei Zavatski
24e8a2bd69 Make SpotlightSelector.ShowInfo use the full rankings response 2020-02-05 22:59:01 +03:00
TheWildTree
c93d2c7f00 Adjust loading container corner radius 2020-02-05 18:26:01 +01:00
TheWildTree
63df6b8da6 Change accuracy formatting method 2020-02-05 17:42:14 +01:00
TheWildTree
fa3934ddb4 Match osu-web button description 2020-02-05 17:16:20 +01:00
TheWildTree
e1e1c1a11a Match osu-web display accuracy
Decided to change this only locally instead of modifying FormatAccuracy which would affect everywhere else in the game as well.
2020-02-05 16:34:39 +01:00
TheWildTree
76037e4ffd Recolour ranked status pill 2020-02-05 16:31:14 +01:00
TheWildTree
f4ee281dd6 Add optional decimal place 2020-02-05 16:15:55 +01:00
Andrei Zavatski
6708e271ac Adjust SpotlightSelector animations 2020-02-05 13:01:50 +03:00
Andrei Zavatski
cb30f463fb Update spotlight info based on selected one 2020-02-05 12:48:29 +03:00
Andrei Zavatski
b83ee6dabf Show beatmap panels for selected spotlight 2020-02-05 12:22:42 +03:00
Andrei Zavatski
2b0b789980 Naming adjustments 2020-02-05 12:14:24 +03:00
Andrei Zavatski
fa65e3a5bb Make spotlight selector work 2020-02-05 12:09:32 +03:00
Andrei Zavatski
a3fd952f74 Use new SpotlightSelector in RankingsHeader 2020-02-05 11:21:23 +03:00
Andrei Zavatski
0bbd95a69c Merge remote-tracking branch 'refs/remotes/ppy/master' into logged-out-comments 2020-02-05 10:57:49 +03:00
Dan Balasescu
af4f3e5fff
Merge branch 'master' into rankings-spotlights-table 2020-02-05 13:42:26 +09:00
Tree
447f31ccfc
Remove using directive 2020-02-04 23:25:21 +01:00
Tree
c2a80119ca
Remove using directives 2020-02-04 23:23:57 +01:00
Tree
23d1d3fdf1
Convert field to local variable 2020-02-04 23:09:10 +01:00
Tree
b606408667
Remove space 2020-02-04 23:02:28 +01:00
TheWildTree
c1b8445b00 Add spacing to match osu-web
Note: due to osu-web using flex to even out the spacing and me not being able to implement the same behaviour here, I added a static margin to separate the title from the diffname above. This looks better than the previous state in most cases, the only scenario where this differs somehow visibly from web is on mapsets with large numbers of difficulties.
2020-02-04 21:53:23 +01:00
TheWildTree
86c0b50983 Adjust font once again for readibility 2020-02-04 21:45:45 +01:00
TheWildTree
d7af96a2e5 Adjust corner radius 2020-02-04 21:42:01 +01:00
TheWildTree
82914b5d6e Adjust ScoreTable spacing 2020-02-04 21:41:33 +01:00
TheWildTree
9795897045 Enforce correct column order in ScoreTable 2020-02-04 21:28:31 +01:00
TheWildTree
d23e4a1fa1 Change scoreboard text size 2020-02-04 21:27:51 +01:00
TheWildTree
5458085849 Adjust TopScoreUserSection font and spacing 2020-02-04 21:11:35 +01:00
TheWildTree
3ef6027d57 Show placeholder instead of success rate when beatmap unranked 2020-02-04 21:02:02 +01:00
TheWildTree
48beb9fd6d Recolour PreviewButton 2020-02-04 21:01:02 +01:00
TheWildTree
88e79dfa78 Hide ratings if beatmap has no leaderboard 2020-02-04 21:00:27 +01:00
TheWildTree
85fb4b4a18 Recolour DetailBox 2020-02-04 21:00:00 +01:00
TheWildTree
cbfb90983b Rename variable 2020-02-04 20:17:27 +01:00
TheWildTree
268bb73ac6 Adjust header padding 2020-02-04 20:14:50 +01:00
TheWildTree
2cc1255035 Adjust online status pill font and padding 2020-02-04 20:09:52 +01:00
TheWildTree
d0eb4e4471 Add necessary variable 2020-02-04 20:08:54 +01:00
TheWildTree
86283cc422 Recolour SuccessRate background 2020-02-04 19:55:19 +01:00
TheWildTree
a366a92d4c Use alpha instead of colour opacity 2020-02-04 19:54:51 +01:00
TheWildTree
b6301f6537 Adjust PreviewButton alpha and animation 2020-02-04 19:52:32 +01:00
TheWildTree
5b881568db Adjust header gradient colours 2020-02-04 19:15:02 +01:00
Andrei Zavatski
a9cfade2f4 Adjust null handling 2020-02-04 21:02:10 +03:00
TheWildTree
5eb1619e24 Adjust title / artist font weight 2020-02-04 18:02:49 +01:00
Bartłomiej Dach
4ea9efd92e Enforce column ordering 2020-02-04 17:59:32 +01:00
Andrei Zavatski
a84068448a refetch comments on user change 2020-02-04 19:19:49 +03:00
Andrei Zavatski
5e369534b6 Allow guests to view comments 2020-02-04 19:15:23 +03:00
TheWildTree
9bc45d21f1 Recolour LeaderboardScopeSelector 2020-02-04 17:11:28 +01:00
recapitalverb
833bb28dcf Adjust separator position between top and bottom content 2020-02-04 22:38:25 +07:00
recapitalverb
0cba1a357f Adjust padding on DrawableTopScore 2020-02-04 21:56:22 +07:00
recapitalverb
bd815cd81b Use minWidth on more columns to further match web 2020-02-04 21:55:48 +07:00
recapitalverb
1c16ab1813 Use better colours 2020-02-04 21:55:20 +07:00
recapitalverb
f112760b00 Revert column separator height to 2 2020-02-04 21:55:04 +07:00
Andrei Zavatski
f889f2435b Add test step to TestSceneRankingsTable 2020-02-04 16:20:15 +03:00
recapitalverb
5030b66092 Adjust width of statistics columns 2020-02-04 19:59:11 +07:00
recapitalverb
a8faee91d8 Use minWidth on pp column 2020-02-04 19:54:57 +07:00
recapitalverb
556a4e64cb Use minimum width on statistics columns 2020-02-04 19:46:14 +07:00
recapitalverb
8f9917238e Add optional minimum width to InfoColumn 2020-02-04 19:45:08 +07:00
recapitalverb
4f312ae6bc Adjust InfoColumn spacing 2020-02-04 19:43:14 +07:00
recapitalverb
c12fc67887 Change InfoColumn title font weight 2020-02-04 19:42:37 +07:00
recapitalverb
3571c2b617 Rearrange children in TopScoreStatisticsSection 2020-02-04 19:41:44 +07:00
Andrei Zavatski
cff619b0e4 Adjust overlay layout 2020-02-04 14:46:22 +03:00
Andrei Zavatski
f30cdab025 Update Scores section 2020-02-04 14:35:04 +03:00
Andrei Zavatski
34091103e3 Merge remote-tracking branch 'refs/remotes/ppy/master' into beatmap-overlay-recolour 2020-02-04 14:17:24 +03:00
Andrei Zavatski
0e54e0e092 Recolour DrawableTopScore 2020-02-04 14:17:22 +03:00
Andrei Zavatski
873eda3bb5 Recolour info section 2020-02-04 14:00:18 +03:00
Andrei Zavatski
c3bd6c3f7f Remove no longer used field 2020-02-04 11:21:21 +03:00