Passed
Push — feature/full-redesign ( 58f6d4...ff7e17 )
by Kevin Van
04:32
created

helper.ts ➔ getPositions   A

Complexity

Conditions 1

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 8
dl 0
loc 14
rs 10
c 0
b 0
f 0
cc 1
1
import { RankingDataTeamObject } from "../Types/Ranking"
2
3
export function mapPsdStatus(statusCode: number): string | null {
4
  const statusCodes = new Map([
5
    [0, `Gepland`],
6
    [1, `Forfait`],
7
    [2, `Afgelast`],
8
    [3, `Onderbroken`],
9
  ])
10
11
  return statusCodes.get(statusCode) || null
12
}
13
14
export function mapPsdStatusShort(statusCode: number): string | null {
15
  const statusCodes = new Map([
16
    [0, ``],
17
    [1, `FF`],
18
    [2, `AFG`],
19
    [3, `STOP`],
20
  ])
21
22
  return statusCodes.get(statusCode) || null
23
}
24
25
export function sortRankings(a: RankingDataTeamObject, b: RankingDataTeamObject) {
26
  // Rank lager: A stijgt in sortering.
27
  if (a.rank < b.rank) {
28
    return -1
29
  }
30
  if (a.rank > b.rank) {
31
    return 1
32
  }
33
  // Aantal overwinningen hoger: A stijgt in sortering.
34
  if (a.wins > b.wins) {
35
    return -1
36
  }
37
  if (a.wins < b.wins) {
38
    return 1
39
  }
40
  // Doelpuntensaldo beter: A stijgt in sortering.
41
  if (a.goalsScored - a.goalsConceded > b.goalsScored - b.goalsConceded) {
42
    return -1
43
  }
44
  if (a.goalsScored - a.goalsConceded < b.goalsScored - b.goalsConceded) {
45
    return 1
46
  }
47
  // Aantal gemaakte doelpunten hoger: A stijgt in sortering.
48
  if (a.goalsScored > b.goalsScored) {
49
    return -1
50
  }
51
  if (a.goalsScored < b.goalsScored) {
52
    return 1
53
  }
54
  // Aantal uitoverwinningen hoger: A stijgt in sortering.
55
  if (a.winsAway > b.winsAway) {
56
    return -1
57
  }
58
  if (a.winsAway < b.winsAway) {
59
    return 1
60
  }
61
  // Doelpuntensaldo op verplaatsing beter: A stijgt in sortering.
62
  if (a.goalsScoredAway - a.goalsConcededAway > b.goalsScoredAway - b.goalsConcededAway) {
63
    return -1
64
  }
65
  if (a.goalsScoredAway - a.goalsConcededAway < b.goalsScoredAway - b.goalsConcededAway) {
66
    return 1
67
  }
68
  // Aantal gemaakte doelpunten op verplaatsing hoger: A stijgt in sortering.
69
  if (a.goalsScoredAway > b.goalsScoredAway) {
70
    return -1
71
  }
72
  if (a.goalsScoredAway < b.goalsScoredAway) {
73
    return 1
74
  }
75
76
  return a.team?.club?.localName.localeCompare(b.team?.club?.localName)
77
}
78
79
export function replaceAll(source: string, search: string, replacement: string) {
80
  return source.replace(new RegExp(search, `g`), replacement)
81
}
82
83
export function translateGameResult(result: string) {
84
  const statusCodes = new Map([
85
    [`WON`, `Gewonnen`],
86
    [`EQUAL`, `Gelijkgespeeld`],
87
    [`LOST`, `Verloren`],
88
  ])
89
  return statusCodes.get(result) || null
90
}
91
92
/**
93
 * Map a positionCode to a descriptive label.
94
 *
95
 * @param {string} positionCode
96
 */
97
export function mapPositionCode(positionCode: string) {
98
  return getPositions().get(positionCode) || null
99
}
100
101
/**
102
 * List of all positions, in order of position on the fields.
103
 *
104
 * @param {string} positionCode
105
 */
106
export function getPositions() {
107
  const positions = new Map([
108
    [`k`, `Doelman`],
109
    [`d`, `Verdediger`],
110
    [`m`, `Middenvelder`],
111
    [`a`, `Aanvaller`],
112
  ])
113
  return positions
114
}
115