src/components/MatchesSlider.tsx   A
last analyzed

Complexity

Total Complexity 1
Complexity/F 1

Size

Lines of Code 87
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 70
mnd 0
bc 0
fnc 1
dl 0
loc 87
rs 10
bpm 0
cpm 1
noi 0
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A MatchesSlider.tsx ➔ getData 0 4 1
1
import { Match } from "../Types/Match"
2
import { useSiteMetaData } from "../hooks/use-site-metadata"
3
import { MatchTeaserDetail } from "./MatchTeaser"
4
import "./MatchesSlider.scss"
5
import { Spinner } from "./Spinner"
6
import React, { Fragment, useState } from "react"
7
import { useEffect } from "react"
8
import Slider, { LazyLoadTypes } from "react-slick"
9
import { request } from "../scripts/helper"
10
11
const MatchesSlider = () => {
12
  const [data, setData] = useState<Match[]>([])
13
  const [loading, setLoading] = useState<boolean>(true)
14
15
  const { kcvvPsdApi } = useSiteMetaData()
16
17
  const settings_slickslider = {
18
    slidesToShow: 4,
19
    slidesToScroll: 1,
20
    dots: false,
21
    arrows: true,
22
    centerMode: true,
23
    focusOnSelect: true,
24
    infinite: true,
25
    lazyLoad: `progressive` as LazyLoadTypes,
26
27
    responsive: [
28
      {
29
        breakpoint: 1700,
30
        settings: {
31
          slidesToShow: 4,
32
        },
33
      },
34
      {
35
        breakpoint: 1400,
36
        settings: {
37
          slidesToShow: 3,
38
        },
39
      },
40
      {
41
        breakpoint: 1200,
42
        settings: {
43
          slidesToShow: 2,
44
        },
45
      },
46
      {
47
        breakpoint: 800,
48
        settings: {
49
          slidesToShow: 1,
50
        },
51
      },
52
    ],
53
  }
54
55
  useEffect(() => {
56
    async function getData() {
57
      const response = await request.get(`${kcvvPsdApi}/matches/next`)
58
      setData(response.data)
59
      setLoading(false)
60
    }
61
    getData()
62
  }, [kcvvPsdApi])
63
64
  return (
65
    <Fragment>
66
      {data.length > 0 || loading === false || (
67
        <div className="matches_slider__wrapper">
68
          <Spinner />
69
        </div>
70
      )}
71
      {data.length > 0 && (
72
        <div className="matches_slider__wrapper">
73
          <Slider className={`matches_slider`} {...settings_slickslider}>
74
            {data
75
              .sort((a, b) => a.timestamp - b.timestamp)
76
              .map((match: Match, i) => {
77
                return <MatchTeaserDetail match={match} key={i} data-equalizer-watch="true" />
78
              })}
79
          </Slider>
80
        </div>
81
      )}
82
    </Fragment>
83
  )
84
}
85
86
export default MatchesSlider
87