diff --git a/public/images/matchTabs/bets.svg b/public/images/matchTabs/bets.svg
new file mode 100644
index 00000000..d112cddb
--- /dev/null
+++ b/public/images/matchTabs/bets.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/images/matchTabs/chat.svg b/public/images/matchTabs/chat.svg
new file mode 100644
index 00000000..02d75c4b
--- /dev/null
+++ b/public/images/matchTabs/chat.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/images/matchTabs/players.svg b/public/images/matchTabs/players.svg
new file mode 100644
index 00000000..ffa6cb02
--- /dev/null
+++ b/public/images/matchTabs/players.svg
@@ -0,0 +1,6 @@
+
diff --git a/public/images/matchTabs/plays.svg b/public/images/matchTabs/plays.svg
new file mode 100644
index 00000000..0850a8e7
--- /dev/null
+++ b/public/images/matchTabs/plays.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/images/matchTabs/stats.svg b/public/images/matchTabs/stats.svg
new file mode 100644
index 00000000..12afb401
--- /dev/null
+++ b/public/images/matchTabs/stats.svg
@@ -0,0 +1,12 @@
+
diff --git a/public/images/matchTabs/watch.svg b/public/images/matchTabs/watch.svg
new file mode 100644
index 00000000..fdb9114f
--- /dev/null
+++ b/public/images/matchTabs/watch.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/images/sortUp.svg b/public/images/sortUp.svg
new file mode 100644
index 00000000..0f51e40c
--- /dev/null
+++ b/public/images/sortUp.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/config/index.tsx b/src/config/index.tsx
index 357bcd8f..165cff95 100644
--- a/src/config/index.tsx
+++ b/src/config/index.tsx
@@ -11,3 +11,4 @@ export * from './dashes'
export * from './env'
export * from './userAgent'
export * from './queries'
+export * from './keyboardKeys'
diff --git a/src/config/keyboardKeys.tsx b/src/config/keyboardKeys.tsx
new file mode 100644
index 00000000..97d3b125
--- /dev/null
+++ b/src/config/keyboardKeys.tsx
@@ -0,0 +1,3 @@
+export enum KEYBOARD_KEYS {
+ Enter = 'Enter',
+}
diff --git a/src/config/lexics/indexLexics.tsx b/src/config/lexics/indexLexics.tsx
index 9e2f6955..4ea9695b 100644
--- a/src/config/lexics/indexLexics.tsx
+++ b/src/config/lexics/indexLexics.tsx
@@ -15,6 +15,7 @@ const matchPopupLexics = {
display_stats_according_to_video: 19931,
episode_duration: 13410,
events: 1020,
+ final_stats: 19591,
from_end_match: 15396,
from_price: 3992,
from_start_match: 15395,
@@ -27,6 +28,8 @@ const matchPopupLexics = {
match_interviews: 13031,
match_settings: 13490,
no_data: 15397,
+ other_games: 19997,
+ others: 19902,
players_episodes: 13398,
playlist_format: 13406,
playlist_format_all_actions: 13408,
@@ -39,6 +42,7 @@ const matchPopupLexics = {
sign_in: 20003,
sign_in_full_game: 20004,
started_streaming_at: 16042,
+ stats: 18179,
streamed_live_on: 16043,
video: 1017,
views: 13440,
@@ -166,6 +170,7 @@ export const indexLexics = {
no_match_access_body: 13419,
no_match_access_title: 13418,
player: 14975,
+ players: 164,
players_video: 13032,
privacy_policy_and_statement: 15404,
round_highilights: 13050,
diff --git a/src/config/routes.tsx b/src/config/routes.tsx
index dd866e19..220b0cd5 100644
--- a/src/config/routes.tsx
+++ b/src/config/routes.tsx
@@ -23,6 +23,12 @@ const VIEWS_APIS = {
staging: 'https://views.test.insports.tv',
}
+const STATS_APIS = {
+ preproduction: 'https://statistic.insports.tv',
+ production: 'https://statistic.insports.tv',
+ staging: 'https://statistic-stage.insports.tv',
+}
+
const env = isProduction ? ENV : readSelectedApi() ?? ENV
export const VIEWS_API = VIEWS_APIS[env]
@@ -30,3 +36,4 @@ export const AUTH_SERVICE = APIS[env].auth
export const API_ROOT = APIS[env].api
export const DATA_URL = `${API_ROOT}/data`
export const URL_AWS = 'https://cf-aws.insports.tv'
+export const STATS_API_URL = STATS_APIS[env]
diff --git a/src/features/CircleAnimationBar/index.tsx b/src/features/CircleAnimationBar/index.tsx
index 7139059d..4228993f 100644
--- a/src/features/CircleAnimationBar/index.tsx
+++ b/src/features/CircleAnimationBar/index.tsx
@@ -4,7 +4,7 @@ import { useEffect } from 'react'
import isEmpty from 'lodash/isEmpty'
import size from 'lodash/size'
-import type { Events } from 'requests'
+import { useMatchPageStore } from 'features/MatchPage/store'
import { fullEpisodesDuration } from './helpers'
import { Svg, Circle } from './styled'
@@ -24,26 +24,33 @@ export const initialCircleAnimation: TCircleAnimation = {
}
type Props = {
- circleAnimation?: TCircleAnimation,
- filteredEvents: Events,
- setWatchAllEpisodesTimer: (showTimer: boolean) => void,
+ className?: string,
+ size?: number,
+ text?: string,
}
export type TSetCircleAnimation = Dispatch>
export const CircleAnimationBar = ({
- circleAnimation,
- filteredEvents,
- setWatchAllEpisodesTimer,
+ className,
+ size: svgSize = 14,
+ text,
}: Props) => {
+ const {
+ circleAnimation,
+ filteredEvents,
+ setWatchAllEpisodesTimer,
+ } = useMatchPageStore()
+
const {
plaingOrder,
playedProgress,
playing,
ready,
- } = circleAnimation!
+ } = circleAnimation
+
const timeOfAllEpisodes = fullEpisodesDuration(filteredEvents)
- const remainingEvents = filteredEvents.slice(plaingOrder - 1)
+ const remainingEvents = filteredEvents.slice(plaingOrder && plaingOrder - 1)
const fullTimeOfRemainingEpisodes = !isEmpty(remainingEvents)
? fullEpisodesDuration(remainingEvents)
: 0
@@ -52,6 +59,8 @@ export const CircleAnimationBar = ({
const currentAnimationTime = Math.round(fullTimeOfRemainingEpisodes - (playedProgress / 1000))
const currentEpisodesPercent = 100 - (100 / (timeOfAllEpisodes / currentAnimationTime))
+ const strokeDashOffset = svgSize * Math.PI
+
useEffect(() => {
if (currentEpisodesPercent >= 100 && (plaingOrder === size(filteredEvents))) {
setWatchAllEpisodesTimer(false)
@@ -64,7 +73,10 @@ export const CircleAnimationBar = ({
])
return (
-