Passed
Push — master ( 7aa1e4...a37cc0 )
by Kevin Van
05:30
created

src/templates/Staff.tsx   A

Complexity

Total Complexity 33
Complexity/F 0

Size

Lines of Code 157
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 33
eloc 94
mnd 33
bc 33
fnc 0
dl 0
loc 157
rs 9.76
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
1
import { graphql, Link } from "gatsby"
2
import { GatsbyImage, getSrc, StaticImage } from "gatsby-plugin-image"
3
import React from "react"
4
import { Seo } from "../components/Seo"
5
import Layout from "../layouts"
6
import { StaffQuery } from "../Types/Player"
7
import "./Player.scss"
8
9
const Staff = ({ data: { nodeStaff } }: StaffQuery) => {
10
  const cleanBody =
11
    (nodeStaff?.body &&
12
      nodeStaff?.body?.processed?.replaceAll(`/sites/default/`, `${process.env.GATSBY_API_DOMAIN}/sites/default/`)) ||
13
    ``
14
  const picture = nodeStaff?.relationships?.field_image?.localFile?.childImageSharp?.gatsbyImageData && (
15
    <GatsbyImage
16
      image={nodeStaff?.relationships?.field_image?.localFile?.childImageSharp?.gatsbyImageData}
17
      alt={`${nodeStaff.field_firstname} ${nodeStaff.field_lastname}`}
18
    />
19
  )
20
21
  return (
22
    <Layout>
23
      <div className="player__details__top">
24
        <header className="page_header__wrapper player__header__wrapper">
25
          <div className="page_header page_header--max player__header">
26
            <div className="player__header__inner">
27
              <div className="player__header__inner_text">
28
                <h1 className={`player__detail__name`}>
29
                  <span className={`player__detail__name_first`}>{nodeStaff.field_firstname}</span>
30
                  <span className={`player__detail__name_last`}>{nodeStaff.field_lastname}</span>
31
                </h1>
32
                <p
33
                  className={`player__detail__shirt_number`}
34
                  aria-hidden="true"
35
                  title={nodeStaff.field_position_staff || ``}
36
                >
37
                  {nodeStaff?.field_position_short || ``}
38
                </p>
39
              </div>
40
              <div className="player__header__inner_image">
41
                {picture || (
42
                  <StaticImage
43
                    src={`../images/kcvv-player-bg.png`}
44
                    alt={`${nodeStaff.field_firstname} ${nodeStaff.field_lastname}`}
45
                    placeholder={`tracedSVG`}
46
                  />
47
                )}
48
              </div>
49
            </div>
50
          </div>
51
        </header>
52
      </div>
53
      <main className="player__details__middle">
54
        {renderMeta(nodeStaff)}
55
        {cleanBody && <div dangerouslySetInnerHTML={{ __html: cleanBody }} className="player__details__intro" />}
56
      </main>
57
      {/* <PlayerDetail player={nodePlayer} /> */}
58
    </Layout>
59
  )
60
}
61
62
export const Head = ({ data: { nodeStaff } }: StaffQuery) => {
63
  const pathUrl = nodeStaff?.path?.alias || ``
64
  const heroImage = nodeStaff?.relationships?.field_image?.localFile?.childImageSharp?.gatsbyImageData
65
66
  const ogImage = heroImage && {
67
    src: getSrc(heroImage) || ``,
68
    width: heroImage.width,
69
    height: heroImage.height,
70
  }
71
  return (
72
    <Seo
73
      title={nodeStaff?.title || ``}
74
      path={pathUrl}
75
      image={ogImage}
76
      description={nodeStaff?.title + ` - Staflid van KCVV Elewijt`}
77
    />
78
  )
79
}
80
81
export default Staff
82
83
const renderMeta = (nodeStaff: Queries.node__staff) => {
84
  return (
85
    <div className="player__details__meta">
86
      <div className="player__details__meta__item player__details__meta__item--birthdate">
87
        <span className="player__details__meta__item__label">Geboortedatum</span>
88
        <span className="player__details__meta__item__data">{nodeStaff.field_birth_date || `Onbekend`}</span>
89
      </div>
90
      <div className="player__details__meta__item player__details__meta__item--position">
91
        <span className="player__details__meta__item__data">{nodeStaff.field_position_staff}</span>
92
        <span className="player__details__meta__item__label">
93
          {nodeStaff?.relationships?.node__team && (
94
            <Link to={nodeStaff?.relationships?.node__team[0]?.path?.alias || ``}>
95
              {nodeStaff?.relationships?.node__team[0]?.title}
96
            </Link>
97
          )}
98
        </span>
99
      </div>
100
      <div className="player__details__meta__item player__details__meta__item--joindate">
101
        <span className="player__details__meta__item__label">Aangesloten bij KCVV sinds</span>
102
        <span className="player__details__meta__item__data">{nodeStaff.field_join_date || `Onbekend`}</span>
103
      </div>
104
    </div>
105
  )
106
}
107
108
export const query = graphql`
109
  query StaffQuery($slug: String!) {
110
    nodeStaff(path: { alias: { eq: $slug } }) {
111
      path {
112
        alias
113
      }
114
      body {
115
        processed
116
      }
117
      title
118
      field_join_date
119
      field_lastname
120
      field_position_staff
121
      field_firstname
122
      field_birth_date
123
      field_position_short
124
      relationships {
125
        node__article {
126
          title
127
          path {
128
            alias
129
          }
130
          timestamp: created(formatString: "x")
131
          relationships {
132
            field_media_article_image {
133
              ...ArticleImage
134
            }
135
          }
136
        }
137
        node__team {
138
          title
139
          relationships {
140
            field_media_article_image {
141
              ...ArticleImage
142
            }
143
          }
144
          path {
145
            alias
146
          }
147
        }
148
        field_image {
149
          localFile {
150
            ...KCVVFixedPlayerTeaser
151
          }
152
        }
153
      }
154
    }
155
  }
156
`
157