@vixoniccom/footbal-score 1.0.1 → 1.0.2-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build.zip +0 -0
- package/configuration.json +111 -41
- package/package.json +1 -1
- package/src/App.tsx +38 -11
- package/src/contex/configureContext/ConfigureProvider.tsx +2 -0
- package/src/contex/configureContext/configureReducer.ts +3 -1
- package/src/parameters.d.ts +2 -0
- package/src/test/parameters.json +1 -1
- package/src/helpers/getEmployees.ts +0 -21
- package/src/helpers/parseMonthAndDay.ts +0 -38
- package/src/helpers/setToken.ts +0 -71
- package/src/helpers/utils.ts +0 -52
- package/src/hooks/useFetch.ts +0 -47
- package/src/model/income.ts +0 -129
- package/src/soccer_field.png +0 -0
- package/src/sprite.svg +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [1.0.2-beta.0](https://gitlab.com/mandomedio/vixonic/football-score/compare/v1.0.1...v1.0.2-beta.0) (2022-11-29)
|
|
6
|
+
|
|
5
7
|
### [1.0.1](https://gitlab.com/mandomedio/vixonic/football-score/compare/v1.0.1-beta.20...v1.0.1) (2022-11-24)
|
|
6
8
|
|
|
7
9
|
### [1.0.1-beta.20](https://gitlab.com/mandomedio/vixonic/football-score/compare/v1.0.1-beta.19...v1.0.1-beta.20) (2022-11-24)
|
package/build.zip
CHANGED
|
Binary file
|
package/configuration.json
CHANGED
|
@@ -11,42 +11,112 @@
|
|
|
11
11
|
"label": "Datos"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
14
|
+
"id": "timeStart",
|
|
15
|
+
"type": "select-input",
|
|
16
|
+
"required": true,
|
|
17
|
+
"label": "Hora Inicio",
|
|
18
|
+
"defaultValue": "6am",
|
|
19
|
+
"items": [
|
|
20
|
+
{
|
|
21
|
+
"label": "6 am",
|
|
22
|
+
"value": "6am"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"label": "7 am",
|
|
26
|
+
"value": "7am"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"label": "8 am",
|
|
30
|
+
"value": "8am"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"label": "9 am",
|
|
34
|
+
"value": "9am"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"label": "10 am",
|
|
38
|
+
"value": "10am"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"label": "11 am",
|
|
42
|
+
"value": "11am"
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "timeEnd",
|
|
48
|
+
"type": "select-input",
|
|
49
|
+
"required": true,
|
|
50
|
+
"label": "Hora Fin",
|
|
51
|
+
"defaultValue": "7pm",
|
|
52
|
+
"items": [
|
|
53
|
+
{
|
|
54
|
+
"label": "5 pm",
|
|
55
|
+
"value": "5pm"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"label": "6 pm",
|
|
59
|
+
"value": "6pm"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"label": "7 pm",
|
|
63
|
+
"value": "7pm"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"label": "8 pm",
|
|
67
|
+
"value": "8pm"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"label": "9 pm",
|
|
71
|
+
"value": "9pm"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"label": "10 pm",
|
|
75
|
+
"value": "10pm"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"label": "11 pm",
|
|
79
|
+
"value": "11pm"
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "updateTime",
|
|
85
|
+
"type": "select-input",
|
|
86
|
+
"required": true,
|
|
87
|
+
"label": "Actualización",
|
|
88
|
+
"defaultValue": 300000,
|
|
89
|
+
"items": [
|
|
90
|
+
{
|
|
91
|
+
"label": "5 minutos",
|
|
92
|
+
"value": 300000
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"label": "10 minutos",
|
|
96
|
+
"value": 600000
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"label": "30 minutos",
|
|
100
|
+
"value": 1800000
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"label": "1 hora",
|
|
104
|
+
"value": 3600000
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"label": "6 horas",
|
|
108
|
+
"value": 21600000
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"label": "12 horas",
|
|
112
|
+
"value": 43200000
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"label": "Diario",
|
|
116
|
+
"value": 86400000
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
},
|
|
50
120
|
{
|
|
51
121
|
"type": "switch",
|
|
52
122
|
"id": "titleEnabled",
|
|
@@ -134,7 +204,7 @@
|
|
|
134
204
|
"required": false,
|
|
135
205
|
"label": "Ancho columna fecha partido",
|
|
136
206
|
"description": "Agregar en px, ejemplo 100px. (Por defecto son 200px)",
|
|
137
|
-
"defaultValue":"200px"
|
|
207
|
+
"defaultValue": "200px"
|
|
138
208
|
},
|
|
139
209
|
{
|
|
140
210
|
"type": "text-format",
|
|
@@ -147,7 +217,7 @@
|
|
|
147
217
|
"required": false,
|
|
148
218
|
"label": "Ancho columna Status Partido",
|
|
149
219
|
"description": "Agregar en px, ejemplo 100px. (Por defecto son 200px)",
|
|
150
|
-
"defaultValue":"200px"
|
|
220
|
+
"defaultValue": "200px"
|
|
151
221
|
},
|
|
152
222
|
{
|
|
153
223
|
"type": "text-format",
|
|
@@ -160,7 +230,7 @@
|
|
|
160
230
|
"required": false,
|
|
161
231
|
"label": "Ancho columna Goles",
|
|
162
232
|
"description": "Agregar en px, ejemplo 100px. (Por defecto son 100px)",
|
|
163
|
-
"defaultValue":"200px"
|
|
233
|
+
"defaultValue": "200px"
|
|
164
234
|
},
|
|
165
235
|
{
|
|
166
236
|
"type": "switch",
|
|
@@ -181,7 +251,7 @@
|
|
|
181
251
|
"label": "Ancho columna Nombre Equipo",
|
|
182
252
|
"show": "{{descriptionEnabled}} === true",
|
|
183
253
|
"description": "Agregar en px, ejemplo 100px. (Por defecto son 200px)",
|
|
184
|
-
"defaultValue":"200px"
|
|
254
|
+
"defaultValue": "200px"
|
|
185
255
|
},
|
|
186
256
|
{
|
|
187
257
|
"type": "label",
|
|
@@ -200,7 +270,7 @@
|
|
|
200
270
|
"required": false,
|
|
201
271
|
"label": "Ancho columna Bandera",
|
|
202
272
|
"description": "Agregar en px, ejemplo 100px. (Por defecto son 300px)",
|
|
203
|
-
"defaultValue":"300px"
|
|
273
|
+
"defaultValue": "300px"
|
|
204
274
|
}
|
|
205
275
|
]
|
|
206
276
|
}
|
package/package.json
CHANGED
package/src/App.tsx
CHANGED
|
@@ -4,13 +4,18 @@ import { FormattedText } from './components/FormattedText';
|
|
|
4
4
|
import { Table } from './components/table-fixture/Table';
|
|
5
5
|
import { ConfigureContext } from './contex/configureContext/ConfigureContext';
|
|
6
6
|
import { getFixture } from './helpers/getFixture';
|
|
7
|
+
import localforage from 'localforage';
|
|
8
|
+
import moment from 'moment';
|
|
9
|
+
|
|
7
10
|
type Props = {
|
|
8
11
|
data: VixonicData,
|
|
9
12
|
start: boolean
|
|
10
13
|
}
|
|
11
14
|
|
|
12
15
|
export const App = ({ data, start }: Props) => {
|
|
13
|
-
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
const [dataFixture, setDataFixture] = useState([]);
|
|
14
19
|
|
|
15
20
|
const { configureState, addConfiguration } = useContext(ConfigureContext)
|
|
16
21
|
|
|
@@ -21,32 +26,54 @@ export const App = ({ data, start }: Props) => {
|
|
|
21
26
|
msj0 = '',
|
|
22
27
|
updateTime
|
|
23
28
|
} = parameters
|
|
24
|
-
console.log("🚀 ~ file: App.tsx ~ line 24 ~ App ~ updateTime", updateTime)
|
|
25
29
|
|
|
26
30
|
let backgroundImageState = backgroundImage && backgroundImage.filename
|
|
27
31
|
? `url("${downloadsPath}/${backgroundImage.filename}")`
|
|
28
32
|
: ''
|
|
29
33
|
|
|
30
34
|
const getData = async () => {
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
let dataLocal: any = await getLocalData()
|
|
36
|
+
let momentLocalStorage: any = dataLocal ? moment().diff(dataLocal.date, 'millisecond') : undefined
|
|
37
|
+
let timeNowFormat = moment().format('h:mma')
|
|
38
|
+
let timeNow = moment(timeNowFormat, 'h:mma');
|
|
39
|
+
let horaInicio = moment(data.parameters.timeStart, 'h:mma');
|
|
40
|
+
let horaFin = moment(data.parameters.timeEnd, 'h:mma');
|
|
41
|
+
if (momentLocalStorage == undefined || (timeNow.isBetween(horaInicio, horaFin) && momentLocalStorage > updateTime!)) {
|
|
42
|
+
const data = await getFixture();
|
|
43
|
+
setDataLocal(data)
|
|
44
|
+
setDataFixture(data);
|
|
45
|
+
} else {
|
|
46
|
+
setDataFixture(dataLocal.data)
|
|
47
|
+
}
|
|
33
48
|
}
|
|
34
49
|
|
|
35
|
-
|
|
36
50
|
useEffect(() => {
|
|
37
|
-
|
|
38
|
-
|
|
51
|
+
if (start) {
|
|
52
|
+
getData()
|
|
53
|
+
}
|
|
39
54
|
addConfiguration(data)
|
|
40
55
|
}, [data])
|
|
41
56
|
|
|
42
57
|
//Request data every 5 minutes
|
|
43
58
|
useEffect(() => {
|
|
44
|
-
|
|
59
|
+
let interval = setInterval(() => {
|
|
45
60
|
getData()
|
|
46
|
-
}, updateTime || 300000)
|
|
61
|
+
}, updateTime! || 300000);
|
|
47
62
|
return () => clearInterval(interval)
|
|
48
|
-
}, [updateTime])
|
|
63
|
+
}, [updateTime, data])
|
|
64
|
+
|
|
65
|
+
const setDataLocal = (data: any) => {
|
|
66
|
+
localforage.config({ name: 'request_api_football' })
|
|
67
|
+
localforage.setItem('football-score', {
|
|
68
|
+
date: Date.now(),
|
|
69
|
+
data: data
|
|
70
|
+
}, (err) => { if (err) console.log('err', err) })
|
|
71
|
+
}
|
|
49
72
|
|
|
73
|
+
const getLocalData = async () => {
|
|
74
|
+
let dataLocal = await localforage.getItem('football-score')
|
|
75
|
+
return dataLocal
|
|
76
|
+
}
|
|
50
77
|
|
|
51
78
|
|
|
52
79
|
return (
|
|
@@ -63,7 +90,7 @@ export const App = ({ data, start }: Props) => {
|
|
|
63
90
|
padding: padding
|
|
64
91
|
}}
|
|
65
92
|
>
|
|
66
|
-
<FontLoader paths={['nameFormat.font','statusFormat.font', 'timeFormat.font','titleFormat.font', 'descriptionFormat.font', 'dateDayFormat.font', 'dateMonthFormat.font', 'goalsFormat.font']} parameters={parameters} downloadsPath={downloadsPath} />
|
|
93
|
+
<FontLoader paths={['nameFormat.font', 'statusFormat.font', 'timeFormat.font', 'titleFormat.font', 'descriptionFormat.font', 'dateDayFormat.font', 'dateMonthFormat.font', 'goalsFormat.font']} parameters={parameters} downloadsPath={downloadsPath} />
|
|
67
94
|
{
|
|
68
95
|
parameters.titleEnabled &&
|
|
69
96
|
<div style={{
|
|
@@ -8,7 +8,6 @@ export const parameterReducer = (state: VixonicData, action: ConfigureAction) =>
|
|
|
8
8
|
const { downloadsPath, parameters } = action.payload
|
|
9
9
|
switch (action.type) {
|
|
10
10
|
case 'addConfigure':
|
|
11
|
-
console.log(parameters)
|
|
12
11
|
return {
|
|
13
12
|
downloadsPath: downloadsPath,
|
|
14
13
|
parameters: {
|
|
@@ -51,6 +50,9 @@ export const parameterReducer = (state: VixonicData, action: ConfigureAction) =>
|
|
|
51
50
|
rowGap: parameters.rowGap,
|
|
52
51
|
widthTime: parameters.widthTime,
|
|
53
52
|
widthStatus: parameters.widthStatus,
|
|
53
|
+
timeStart: parameters.timeStart,
|
|
54
|
+
timeEnd: parameters.timeEnd,
|
|
55
|
+
|
|
54
56
|
}
|
|
55
57
|
}
|
|
56
58
|
default:
|
package/src/parameters.d.ts
CHANGED
package/src/test/parameters.json
CHANGED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import axios from "axios";
|
|
2
|
-
const API_KEY = 'AIzaSyDQcTlxfd5IyjbeSJooRtNt6OF04DLykqc'
|
|
3
|
-
import { getMonth } from "./utils";
|
|
4
|
-
|
|
5
|
-
export default function getEmployees(apiDomain: string) {
|
|
6
|
-
let idGoogle = apiDomain.split("/")[5]
|
|
7
|
-
console.log(idGoogle)
|
|
8
|
-
let URL = `https://sheets.googleapis.com/v4/spreadsheets/${idGoogle}/values`
|
|
9
|
-
const monthTab = getMonth()
|
|
10
|
-
|
|
11
|
-
try {
|
|
12
|
-
const response = axios({
|
|
13
|
-
url: `${URL}/${monthTab}?key=${API_KEY}`
|
|
14
|
-
});
|
|
15
|
-
return response;
|
|
16
|
-
} catch (error) {
|
|
17
|
-
console.error(error);
|
|
18
|
-
return error;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import moment from "moment"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const getAnniversaryFromMonth = (apiData: any, month: any) => {
|
|
5
|
-
let monthArray = []
|
|
6
|
-
for (let i = 0; i < apiData.length; i++) {
|
|
7
|
-
let monthA = Number(moment(apiData[i].fechaInic, 'YYYY-MM-DD').format('M')) - 1
|
|
8
|
-
if (monthA === month) {
|
|
9
|
-
let dayA = Number(moment(apiData[i].fechaInic, 'YYYY-MM-DD').format('D'))
|
|
10
|
-
apiData[i].day = dayA
|
|
11
|
-
apiData[i].month = month
|
|
12
|
-
apiData[i].name = `${apiData[i].nombre} ${apiData[i].apellidoPate}`
|
|
13
|
-
apiData[i].position = apiData[i].nombreCargo
|
|
14
|
-
apiData[i].image = apiData[i].foto
|
|
15
|
-
monthArray.push(apiData[i])
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
monthArray.sort((a, b) => {
|
|
19
|
-
if (a.day < b.day) return -1
|
|
20
|
-
else if (a.day === b.day) return 0
|
|
21
|
-
else return 1
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return monthArray
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export const parseFromApi = (apiData: any) => {
|
|
29
|
-
let monthsArray = []
|
|
30
|
-
for (let month = 0; month < 12; month++) {
|
|
31
|
-
let monthArray = getAnniversaryFromMonth(apiData, month)
|
|
32
|
-
if (monthArray.length > 0) monthsArray.push(...monthArray)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return monthsArray
|
|
37
|
-
}
|
|
38
|
-
|
package/src/helpers/setToken.ts
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import localforage from 'localforage'
|
|
2
|
-
import axios from 'axios'
|
|
3
|
-
|
|
4
|
-
const urlCF = 'https://us-central1-vixoniccloudcom.cloudfunctions.net/rexTokenCentralizer'
|
|
5
|
-
const tokenCF = 'd2dca806-4f70-41a3-ab70-0fe9bf051d2e'
|
|
6
|
-
let updateTimer: any
|
|
7
|
-
|
|
8
|
-
function setUpdateTime(milliseconds: any, requestData: any) {
|
|
9
|
-
clearTimeout(updateTimer)
|
|
10
|
-
if (milliseconds === null) return
|
|
11
|
-
updateTimer = setTimeout(requestData, milliseconds)
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function getToken(apiDomain: any) {
|
|
15
|
-
try {
|
|
16
|
-
const config = { 'Authorization': tokenCF }
|
|
17
|
-
const response = axios({
|
|
18
|
-
method: 'post',
|
|
19
|
-
url: urlCF,
|
|
20
|
-
headers: config,
|
|
21
|
-
data: {
|
|
22
|
-
orgDomain: apiDomain // This is the body part
|
|
23
|
-
}
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
console.log(response)
|
|
27
|
-
return response
|
|
28
|
-
} catch (error) {
|
|
29
|
-
console.error(error);
|
|
30
|
-
return error
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function setTokenLocal(token: any, apiDomain: any) {
|
|
35
|
-
localforage.config({ name: `request_${apiDomain}` })
|
|
36
|
-
localforage.setItem('rexmas', {
|
|
37
|
-
token: token,
|
|
38
|
-
apiDomain: apiDomain,
|
|
39
|
-
date: Date.now()
|
|
40
|
-
}, (err) => { if (err) console.log(err) })
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
export default function setToken(apiDomain: any, requestData: any) {
|
|
47
|
-
let pt: any = getToken(apiDomain)
|
|
48
|
-
pt.then(function (response: any) {
|
|
49
|
-
console.log('rr...', response)
|
|
50
|
-
let token = response.data.token
|
|
51
|
-
if (token === '') {
|
|
52
|
-
console.log(response.data.msg)
|
|
53
|
-
// renderLog(response.data.msg)
|
|
54
|
-
setUpdateTime(null, requestData)
|
|
55
|
-
} else {
|
|
56
|
-
console.log('Access granted to Rex+ API')
|
|
57
|
-
setTokenLocal(token, apiDomain)
|
|
58
|
-
setUpdateTime(2000, requestData)
|
|
59
|
-
}
|
|
60
|
-
return
|
|
61
|
-
})
|
|
62
|
-
.catch(function (error: any) {
|
|
63
|
-
console.log(error);
|
|
64
|
-
console.log(`Error getting token ${error.response.data && error.response.data.detalle}`)
|
|
65
|
-
// setUpdateTime(null)
|
|
66
|
-
return
|
|
67
|
-
})
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
package/src/helpers/utils.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import moment from "moment";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export const getMonth = () => {
|
|
6
|
-
const date = moment()
|
|
7
|
-
let numberMonth: number = Number(date.format('M'))
|
|
8
|
-
let month
|
|
9
|
-
switch (numberMonth) {
|
|
10
|
-
case 1:
|
|
11
|
-
month = 'Enero'
|
|
12
|
-
break
|
|
13
|
-
case 2:
|
|
14
|
-
month = 'Febrero'
|
|
15
|
-
break
|
|
16
|
-
case 3:
|
|
17
|
-
month = 'Marzo'
|
|
18
|
-
break
|
|
19
|
-
case 4:
|
|
20
|
-
month = 'Abril'
|
|
21
|
-
break
|
|
22
|
-
case 5:
|
|
23
|
-
month = 'Mayo'
|
|
24
|
-
break
|
|
25
|
-
case 6:
|
|
26
|
-
month = 'Junio'
|
|
27
|
-
break
|
|
28
|
-
case 7:
|
|
29
|
-
month = 'Julio'
|
|
30
|
-
break
|
|
31
|
-
case 8:
|
|
32
|
-
month = 'Agosto'
|
|
33
|
-
break
|
|
34
|
-
case 9:
|
|
35
|
-
month = 'Septiembre'
|
|
36
|
-
break
|
|
37
|
-
case 10:
|
|
38
|
-
month = 'Octubre'
|
|
39
|
-
break
|
|
40
|
-
case 11:
|
|
41
|
-
month = 'Noviembre'
|
|
42
|
-
break
|
|
43
|
-
case 12:
|
|
44
|
-
month = 'Diciembre'
|
|
45
|
-
break
|
|
46
|
-
default:
|
|
47
|
-
month = 'ENERO'
|
|
48
|
-
break
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return month
|
|
52
|
-
}
|
package/src/hooks/useFetch.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef, useState } from "react"
|
|
2
|
-
|
|
3
|
-
type State = {
|
|
4
|
-
data: string | null
|
|
5
|
-
loading: boolean,
|
|
6
|
-
error: boolean | null
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export const useFetch = (url: string): State => {
|
|
11
|
-
|
|
12
|
-
const isMounted = useRef(true);
|
|
13
|
-
const [state, setState] = useState<State>({ data: null, loading: true, error: null })
|
|
14
|
-
|
|
15
|
-
useEffect(() => {
|
|
16
|
-
return () => {
|
|
17
|
-
isMounted.current = false;
|
|
18
|
-
}
|
|
19
|
-
}, [])
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
|
|
24
|
-
setState({ data: null, loading: true, error: null });
|
|
25
|
-
|
|
26
|
-
fetch(url, {
|
|
27
|
-
headers: {
|
|
28
|
-
'Authorization': `Token`
|
|
29
|
-
}
|
|
30
|
-
})
|
|
31
|
-
.then(resp => resp.json())
|
|
32
|
-
.then(data => {
|
|
33
|
-
|
|
34
|
-
if (isMounted.current) {
|
|
35
|
-
setState({
|
|
36
|
-
loading: false,
|
|
37
|
-
error: null,
|
|
38
|
-
data
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
}, [url])
|
|
45
|
-
|
|
46
|
-
return state;
|
|
47
|
-
}
|
package/src/model/income.ts
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
// import moment from "moment"
|
|
2
|
-
// import _ from 'lodash'
|
|
3
|
-
|
|
4
|
-
// /**
|
|
5
|
-
// * @class Birthdays
|
|
6
|
-
// */
|
|
7
|
-
// class Income {
|
|
8
|
-
|
|
9
|
-
// public _data: any
|
|
10
|
-
// public day: any
|
|
11
|
-
|
|
12
|
-
// constructor() {
|
|
13
|
-
// /** @type {Birthday[][] | undefined} */
|
|
14
|
-
// this._data = undefined
|
|
15
|
-
// }
|
|
16
|
-
|
|
17
|
-
// /**
|
|
18
|
-
// * @type {Birthday[][]}
|
|
19
|
-
// */
|
|
20
|
-
// get data() {
|
|
21
|
-
// return this._data
|
|
22
|
-
// }
|
|
23
|
-
|
|
24
|
-
// /**
|
|
25
|
-
// * @typedef BirthdaysUpdateOptions
|
|
26
|
-
// * @property {Birthday[][]} data
|
|
27
|
-
// * @property {Birthday[][]} api
|
|
28
|
-
// */
|
|
29
|
-
// /**
|
|
30
|
-
// * @param {BirthdaysUpdateOptions} options
|
|
31
|
-
// * @param {*} callback
|
|
32
|
-
// */
|
|
33
|
-
|
|
34
|
-
// update(options : any) {
|
|
35
|
-
|
|
36
|
-
// if (options.data) {
|
|
37
|
-
// this._data = options.data
|
|
38
|
-
// } else if (options.api) {
|
|
39
|
-
// this._data = this.parseFromApi(options.api)
|
|
40
|
-
// }
|
|
41
|
-
// }
|
|
42
|
-
|
|
43
|
-
// getAnniversaryFromMonth(apiData:any, month:any) {
|
|
44
|
-
// let monthArray = []
|
|
45
|
-
// for (let i = 0; i < apiData.length; i++) {
|
|
46
|
-
// let monthA = Number(moment(apiData[i].fechaInic, 'YYYY-MM-DD').format('M')) - 1
|
|
47
|
-
// if (monthA === month) {
|
|
48
|
-
// let dayA = Number(moment(apiData[i].fechaInic, 'YYYY-MM-DD').format('D'))
|
|
49
|
-
// let income = new Ingress({
|
|
50
|
-
// day: dayA,
|
|
51
|
-
// month: month,
|
|
52
|
-
// name: `${apiData[i].nombre} ${apiData[i].apellidoPate}`,
|
|
53
|
-
// description: undefined,
|
|
54
|
-
// image: apiData[i].foto
|
|
55
|
-
// })
|
|
56
|
-
// monthArray.push(income)
|
|
57
|
-
// }
|
|
58
|
-
// }
|
|
59
|
-
|
|
60
|
-
// monthArray.sort((a, b) => {
|
|
61
|
-
// if (a.day < b.day) return -1
|
|
62
|
-
// else if (a.day === b.day) return 0
|
|
63
|
-
// else return 1
|
|
64
|
-
// })
|
|
65
|
-
// return monthArray
|
|
66
|
-
// }
|
|
67
|
-
|
|
68
|
-
// parseFromApi(apiData:any) {
|
|
69
|
-
// let monthsArray = []
|
|
70
|
-
// for (let month = 0; month < 12; month++) {
|
|
71
|
-
// let monthArray = this.getAnniversaryFromMonth(apiData, month)
|
|
72
|
-
// monthsArray.push(monthArray)
|
|
73
|
-
// }
|
|
74
|
-
|
|
75
|
-
// return monthsArray
|
|
76
|
-
// }
|
|
77
|
-
|
|
78
|
-
// /**
|
|
79
|
-
// * @param {string} mode
|
|
80
|
-
// * @param {boolean} excludePast
|
|
81
|
-
// */
|
|
82
|
-
// getList(mode :any, excludePast:any) {
|
|
83
|
-
|
|
84
|
-
// if (!mode) mode = 'monthly'
|
|
85
|
-
// let dd = moment()
|
|
86
|
-
// let month = Number(dd.format('M'))
|
|
87
|
-
// let today = Number(dd.format('D'))
|
|
88
|
-
|
|
89
|
-
// /**
|
|
90
|
-
// * Filter method
|
|
91
|
-
// * @param {Anniversary[]} data
|
|
92
|
-
// * @inner
|
|
93
|
-
// */
|
|
94
|
-
// let filter = (data:any) => {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
// const filterMonthDay = excludePast ? data.filter((da:any )=> da.month >= (month - 1)).filter((da:any) => da.day >= today) : data
|
|
98
|
-
|
|
99
|
-
// return filterMonthDay
|
|
100
|
-
// }
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
// return filter(_.flatten(this._data))
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
// }
|
|
107
|
-
// }
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
// class Ingress {
|
|
111
|
-
|
|
112
|
-
// public day
|
|
113
|
-
// public month
|
|
114
|
-
// public name
|
|
115
|
-
// public description
|
|
116
|
-
// public image
|
|
117
|
-
|
|
118
|
-
// constructor(options:any) {
|
|
119
|
-
|
|
120
|
-
// this.day = options.day
|
|
121
|
-
// this.month = options.month
|
|
122
|
-
// this.name = options.name
|
|
123
|
-
// this.description = options.description
|
|
124
|
-
// this.image = options.image
|
|
125
|
-
// }
|
|
126
|
-
|
|
127
|
-
// }
|
|
128
|
-
|
|
129
|
-
// module.exports = exports = Animation
|
package/src/soccer_field.png
DELETED
|
Binary file
|
package/src/sprite.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="130" height="491" viewBox="0 0 130 491"><svg width="15" height="20" id="icon-corner-flag" y="0"><path fill-rule="evenodd" fill="#E4E7ED" d="M13 0h2v19.999h-2V0z"></path><path fill-rule="evenodd" fill="#FFDC19" d="M15 0v9.999L0 4.833 15 0z"></path></svg><svg width="9" height="12" id="icon-in" y="20"><path fill-rule="evenodd" fill="#14D6C6" d="M3 11.656L.878 9.535l3.536-3.536L.878 2.464 3 .342l5.657 5.657L3 11.656z"></path></svg><svg width="16" height="16" id="icon-injury" y="32"><path fill-rule="evenodd" fill="#E54444" d="M8-.001a8 8 0 1 1 0 16A8 8 0 0 1 8 0z"></path><path fill-rule="evenodd" fill="#FF5353" d="M7.997.995a7.002 7.002 0 1 1 0 14.004 7.002 7.002 0 0 1 0-14.004z"></path><path fill-rule="evenodd" fill="#FFF" d="M12 9H9v3H7V9H4V7h3V4h2v3h3v2z"></path></svg><svg width="16" height="22" id="icon-keepers-glove" y="48"><path fill-rule="evenodd" fill="#BAC1C8" d="M0 4.831s.284 3.606.568 5.023c.284 1.417.379 4.702.947 6.184.568 1.481.516 2.899.485 3.962-.032 1.062-.201 1.994 1.03 1.994h5.869S10 21.902 10 21v-2s-.253-.131 0-1.001c.252-.869.227-1.945 1.172-3.121C12.509 13.213 15.387 10.783 15 9c-.373-1.715-2.306.678-3 1-.694.322-1.491.53-1.396-.726.094-1.255.41-6.795.378-7.342C10.951 1.385 10.073.389 9 2v3H8S7.795 1.175 7.763.966C7.732.757 7.495 0 6.627 0 5.759 0 6 .516 6 1v5H5s.002-4.003-.077-4.455c-.079-.45-.678-.901-1.325-.579C2.951 1.288 2.984 1.969 3 3c.016 1.03 0 7 0 7S2.193 3.333.947 3.671c0 0-.852.274-.947 1.16z"></path><path fill-rule="evenodd" fill="#9099A2" d="M1 16h10c.552 0 1 .537 1 1.2v3.6c0 .663-.448 1.2-1 1.2H1c-.552 0-1-.537-1-1.2v-3.6c0-.663.448-1.2 1-1.2z"></path><path fill-rule="evenodd" fill="#C2FF1F" d="M2 17.999h5c.552 0 1 .299 1 .668v.666c0 .368-.448.667-1 .667H2c-.552 0-1-.299-1-.667v-.666c0-.369.448-.668 1-.668z"></path></svg><svg width="22" height="18" id="icon-offside-flag" y="70"><path fill-rule="evenodd" fill="#FFE659" d="M4.902 7.437l3.464-2 4 6.929-3.464 2-4-6.929z"></path><path fill-rule="evenodd" fill="#FFDC19" d="M1.438 9.438l3.464-2.001 4 6.929-3.464 2-4-6.928z"></path><path fill-rule="evenodd" fill="#FFDC19" d="M.438 7.705L10.83 1.706l5 8.66-10.392 6-5-8.661z"></path><path fill-rule="evenodd" fill="#FF9307" d="M2.938 12.036l5.196-3.001 2.5 4.331-5.196 3-2.5-4.33zM5.634 4.705l5.196-2.999 2.5 4.33-5.196 2.999-2.5-4.33z"></path><path fill-rule="evenodd" fill="#E4E7ED" d="M10.83 1.705l1.732-1 9 15.589-1.732 1-9-15.589z"></path></svg><svg width="8" height="11" id="icon-out" y="88"><path fill-rule="evenodd" fill="#EE5353" d="M7.996 8.937L5.815 11-.001 5.499l5.816-5.5 2.181 2.062-3.635 3.438 3.635 3.438z"></path></svg><svg width="12" height="16" id="icon-red-card" y="99"><path fill-rule="evenodd" fill="#EE5353" d="M2.4-.002h7.2c1.325 0 2.4.896 2.4 2.001v11.999c0 1.105-1.075 2.001-2.4 2.001H2.4c-1.326 0-2.4-.896-2.4-2.001V1.999C0 .894 1.074-.002 2.4-.002z"></path></svg><svg width="32" height="32" id="icon-shirt" y="115"><path fill-rule="evenodd" fill="#40ACFF" d="M16 31.992c-1.092-.025-4.912-.197-6.757-.369-1.845-.172-1.949-.369-1.949-.369v-.615c.104-2.066.65-4.305.65-4.305 1.039-4.355.675-8.34.13-10.21-.546-1.869-.52-3.96-.52-4.181 0-.222-.13-.739-.13-.739-.26.246-1.538 2.563-1.689 2.829-.152.267-.78-.245-.78-.245-1.169-1.108-3.703-1.989-4.418-2.215-.714-.225-.519-.492-.519-.492l1.949-3.813c2.144-4.182 3.54-4.705 5.327-5.043A11.91 11.91 0 0 0 10.701 1h.814c-.046.34.045.707.485 1 1.125.75 4 2.125 4 3v26.992z"></path><path fill-rule="evenodd" fill="#586B79" d="M31.439 11.591c-.714.225-3.244 1.106-4.411 2.212 0 0-.627.512-.779.246-.151-.267-1.427-2.581-1.686-2.827 0 0-.13.516-.13.737 0 .221.026 2.311-.519 4.179-.545 1.868-.908 5.85.13 10.201 0 0 .545 2.236.649 4.301v.615s-.104.196-1.947.368c-1.842.172-5.656.344-6.746.369V5c0-.875 2.556-2.25 3.556-3 .391-.293.469-.66.429-1h1.257c.841.478 2.127.999 3.451 1.25 1.783.338 3.178.86 5.319 5.039l1.946 3.81s.194.266-.519.492z"></path><path fill-rule="evenodd" fill="#586B79" d="M20.528 2.505c-.859.723-1.274.737-1.719 1.02-.339.216-1.964.85-2.824 1.473-.853-.623-2.468-1.257-2.804-1.473-.442-.283-.854-.297-1.707-1.02-.854-.722-.244-1.699-.244-1.699l.239-.519C11.78.92 12.265 1.625 13 2c1.531.781 3.031 1.5 3 2-.034-.5 1.593-1.219 3.254-2 .918-.432 1.119-1.295 1.123-1.988h.028l.369.794s.613.977-.246 1.699z"></path><path fill-rule="evenodd" fill="#586B79" d="M20.528 2.505c-.859.723-1.274.737-1.719 1.02-.339.216-1.964.85-2.824 1.473-.853-.623-2.468-1.257-2.804-1.473-.442-.283-.854-.297-1.707-1.02-.854-.722-.244-1.699-.244-1.699l.239-.519C11.78.92 12.265 1.625 13 2c1.531.781 3.031 1.5 3 2-.034-.5 1.593-1.219 3.254-2 .918-.432 1.119-1.295 1.123-1.988h.028l.369.794s.613.977-.246 1.699z"></path><path fill-rule="evenodd" fill="#4B5B67" d="M.572 9.997c1.157.046 3.844.448 5.758 2.98-.288.505-.534.949-.595 1.056-.152.267-.78-.245-.78-.245-1.169-1.108-3.703-1.989-4.418-2.215-.714-.225-.519-.492-.519-.492l.554-1.084zM26.265 14.033c-.061-.107-.307-.551-.595-1.056 1.914-2.532 4.601-2.934 5.758-2.98l.554 1.084s.195.267-.519.492c-.715.226-3.249 1.107-4.418 2.215 0 0-.628.512-.78.245z"></path><path fill-rule="evenodd" opacity=".149" d="M8.074 16.124a11.896 11.896 0 0 1-.325-1.508c.836 1.269 2.091 5.164 2.236 17.069a46.13 46.13 0 0 1-.742-.062c-1.845-.172-1.949-.369-1.949-.369v-.615c.104-2.066.65-4.305.65-4.305 1.039-4.355.675-8.34.13-10.21zM24.207 14.651a11.847 11.847 0 0 1-.324 1.505c-.545 1.867-.908 5.845.129 10.192 0 0 .545 2.234.649 4.297v.614s-.104.196-1.946.368c-.22.021-.472.041-.74.062.145-11.883 1.397-15.772 2.232-17.038z"></path><path fill-rule="evenodd" opacity=".149" d="M7 10s3.906 5 8 5c0 0-2.747.846-6.964.974-.502-1.83-.482-3.816-.482-4.031 0-.222-.13-.739-.13-.739-.074.07-.234.316-.424.627V10zM24.93 10v1.831c-.189-.311-.349-.557-.423-.627 0 0-.13.517-.13.739 0 .215.021 2.201-.48 4.031-4.207-.128-6.946-.974-6.946-.974 4.083 0 7.979-5 7.979-5z"></path></svg><svg width="32" height="32" id="icon-shirt-alt" y="147"><path fill-rule="evenodd" fill="#91e44c" d="M16 31.992c-1.092-.025-4.912-.197-6.757-.369-1.845-.172-1.949-.369-1.949-.369v-.615c.104-2.066.65-4.305.65-4.305 1.039-4.355.675-8.34.13-10.21-.546-1.869-.52-3.96-.52-4.181 0-.222-.13-.739-.13-.739-.26.246-1.538 2.563-1.689 2.829-.152.267-.78-.245-.78-.245-1.169-1.108-3.703-1.989-4.418-2.215-.714-.225-.519-.492-.519-.492l1.949-3.813c2.144-4.182 3.54-4.705 5.327-5.043A11.91 11.91 0 0 0 10.701 1h.814c-.046.34.045.707.485 1 1.125.75 4 2.125 4 3v26.992z"></path><path fill-rule="evenodd" fill="#2fbc4b" d="M31.439 11.591c-.714.225-3.244 1.106-4.411 2.212 0 0-.627.512-.779.246-.151-.267-1.427-2.581-1.686-2.827 0 0-.13.516-.13.737 0 .221.026 2.311-.519 4.179-.545 1.868-.908 5.85.13 10.201 0 0 .545 2.236.649 4.301v.615s-.104.196-1.947.368c-1.842.172-5.656.344-6.746.369V5c0-.875 2.556-2.25 3.556-3 .391-.293.469-.66.429-1h1.257c.841.478 2.127.999 3.451 1.25 1.783.338 3.178.86 5.319 5.039l1.946 3.81s.194.266-.519.492z"></path><path fill-rule="evenodd" fill="#2fbc4b" d="M20.528 2.505c-.859.723-1.274.737-1.719 1.02-.339.216-1.964.85-2.824 1.473-.853-.623-2.468-1.257-2.804-1.473-.442-.283-.854-.297-1.707-1.02-.854-.722-.244-1.699-.244-1.699l.239-.519C11.78.92 12.265 1.625 13 2c1.531.781 3.031 1.5 3 2-.034-.5 1.593-1.219 3.254-2 .918-.432 1.119-1.295 1.123-1.988h.028l.369.794s.613.977-.246 1.699z"></path><path fill-rule="evenodd" fill="#2fbc4b" d="M20.528 2.505c-.859.723-1.274.737-1.719 1.02-.339.216-1.964.85-2.824 1.473-.853-.623-2.468-1.257-2.804-1.473-.442-.283-.854-.297-1.707-1.02-.854-.722-.244-1.699-.244-1.699l.239-.519C11.78.92 12.265 1.625 13 2c1.531.781 3.031 1.5 3 2-.034-.5 1.593-1.219 3.254-2 .918-.432 1.119-1.295 1.123-1.988h.028l.369.794s.613.977-.246 1.699z"></path><path fill-rule="evenodd" fill="#1ea23a" d="M.572 9.997c1.157.046 3.844.448 5.758 2.98-.288.505-.534.949-.595 1.056-.152.267-.78-.245-.78-.245-1.169-1.108-3.703-1.989-4.418-2.215-.714-.225-.519-.492-.519-.492l.554-1.084zM26.265 14.033c-.061-.107-.307-.551-.595-1.056 1.914-2.532 4.601-2.934 5.758-2.98l.554 1.084s.195.267-.519.492c-.715.226-3.249 1.107-4.418 2.215 0 0-.628.512-.78.245z"></path><path fill-rule="evenodd" opacity=".149" d="M8.074 16.124a11.896 11.896 0 0 1-.325-1.508c.836 1.269 2.091 5.164 2.236 17.069a46.13 46.13 0 0 1-.742-.062c-1.845-.172-1.949-.369-1.949-.369v-.615c.104-2.066.65-4.305.65-4.305 1.039-4.355.675-8.34.13-10.21zM24.207 14.651a11.847 11.847 0 0 1-.324 1.505c-.545 1.867-.908 5.845.129 10.192 0 0 .545 2.234.649 4.297v.614s-.104.196-1.946.368c-.22.021-.472.041-.74.062.145-11.883 1.397-15.772 2.232-17.038z"></path><path fill-rule="evenodd" opacity=".149" d="M7 10s3.906 5 8 5c0 0-2.747.846-6.964.974-.502-1.83-.482-3.816-.482-4.031 0-.222-.13-.739-.13-.739-.074.07-.234.316-.424.627V10zM24.93 10v1.831c-.189-.311-.349-.557-.423-.627 0 0-.13.517-.13.739 0 .215.021 2.201-.48 4.031-4.207-.128-6.946-.974-6.946-.974 4.083 0 7.979-5 7.979-5z"></path></svg><svg width="16" height="16" id="icon-soccer-ball" y="179"><path fill-rule="evenodd" fill="#40484B" d="M8-.001a8 8 0 1 1 0 16A8 8 0 0 1 8 0z"></path><path fill-rule="evenodd" fill="#F8FAFC" d="M7.982.526a7.455 7.455 0 1 1-.001 14.909A7.455 7.455 0 0 1 7.982.526z"></path><path fill-rule="evenodd" opacity=".6" fill="#40484B" d="M13.687 11.643l-.174-.052 1.054-3.455.174.053-1.054 3.454zM10.28 7.058l2.964-.982.057.173-2.964.982-.057-.173zm-.04-5.165l.102-.151 2.854 1.927-.102.151-2.854-1.927zm.888 10.399l-1.891-2.4.143-.113 1.891 2.4-.143.113zM7.909 2.526h.182v4.109h-.182V2.526zM4.144 13.128L6.453 9.91l.148.106-2.309 3.218-.148-.106zm-1.372-6.77l.056-.173 3.109 1-.056.173-3.109-1zm-.097-2.652L5.602 1.67l.104.149-2.927 2.036-.104-.149zm-1.49 4.426l.175-.048 1.019 3.801-.176.047-1.018-3.8zm9.124 6.267H6.127v-.182h4.182v.182z"></path><path fill-rule="evenodd" fill="#40484B" d="M7.982 5.281l2.533 1.84-.968 2.978H6.416l-.968-2.978 2.534-1.84zM7.991 2.817l2.536-.882-.309-1.427H5.763l-.308 1.427 2.536.882zM12.904 6.306l1.642 2.124 1.255-.746-1.415-4.224-1.451.161-.031 2.685zM2.982 6.296L1.343 8.417.091 7.672l1.412-4.218 1.448.16.031 2.682zM4.807 12.191l1.605 2.147-1.053 1.007-3.686-2.49.542-1.353 2.592.689zM11.121 12.144L9.57 14.329l1.081.977 3.624-2.583-.579-1.335-2.575.756z"></path></svg><svg width="18" height="18" id="icon-soccer-ball-missed-penalty" y="195"><path fill-rule="evenodd" fill="#40484B" d="M8-.001a8 8 0 1 1 0 16A8 8 0 0 1 8 0z"></path><path fill-rule="evenodd" fill="#F8FAFC" d="M7.982.526a7.455 7.455 0 1 1-.001 14.909A7.455 7.455 0 0 1 7.982.526z"></path><path fill-rule="evenodd" opacity=".6" fill="#40484B" d="M13.687 11.644l-.174-.053 1.054-3.455.174.053-1.054 3.455zM10.28 7.058l2.964-.982.057.173-2.964.982-.057-.173zm-.04-5.165l.102-.151 2.854 1.927-.102.151-2.854-1.927zm.888 10.399L9.237 9.891l.143-.112 1.891 2.4-.143.113zM7.909 2.526h.182v4.109h-.182V2.526zM4.144 13.128L6.453 9.91l.148.105-2.309 3.219-.148-.106zm-1.372-6.77l.056-.173 3.109 1-.056.173-3.109-1zm-.097-2.652l2.927-2.037.104.15-2.927 2.036-.104-.149zm-1.49 4.426l.175-.048 1.019 3.8-.176.048-1.018-3.8zm9.124 6.267H6.127v-.182h4.182v.182z"></path><path fill-rule="evenodd" fill="#40484B" d="M7.982 5.28l2.533 1.841-.968 2.978H6.416l-.968-2.978L7.982 5.28zM7.991 2.817l2.536-.882-.309-1.427H5.763l-.308 1.427 2.536.882zM12.904 6.305l1.642 2.125 1.255-.746-1.415-4.224-1.451.161-.031 2.684zM2.982 6.296L1.343 8.417.091 7.672l1.412-4.218 1.448.16.031 2.682zM4.807 12.191l1.605 2.147-1.053 1.007-3.686-2.49.542-1.353 2.592.689zM11.121 12.143L9.57 14.329l1.081.976 3.624-2.582-.579-1.335-2.575.755z"></path><path fill-rule="evenodd" fill="#EE5353" d="M12.5 7a5.5 5.5 0 1 1 0 10.999A5.5 5.5 0 1 1 12.5 7z"></path><text font-family="Myriad Pro" font-size="7" x="10" y="16"><tspan font-family="Montserrat" font-weight="bold" fill="#FEFEFF">P</tspan></text></svg><svg width="16" height="16" id="icon-soccer-ball-own-goal" y="213"><path fill-rule="evenodd" fill="#C12323" d="M8-.001a8 8 0 1 1 0 15.999 8 8 0 0 1-8-8A7.999 7.999 0 0 1 8-.001z"></path><path fill-rule="evenodd" fill="#F8FAFC" d="M7.982.525a7.455 7.455 0 0 1 7.454 7.455 7.455 7.455 0 1 1-14.909 0A7.455 7.455 0 0 1 7.982.525z"></path><path fill-rule="evenodd" opacity=".6" fill="#40484B" d="M13.687 11.643l-.174-.053 1.054-3.454.174.053-1.054 3.454zM10.28 7.058l2.964-.982.057.172-2.964.982-.057-.172zm-.04-5.166l.102-.151 2.854 1.928-.102.15-2.854-1.927zm.888 10.399l-1.891-2.4.143-.113 1.891 2.401-.143.112zM7.909 2.526h.182v4.109h-.182V2.526zM4.144 13.128l2.309-3.219.148.106-2.309 3.218-.148-.105zm-1.372-6.77l.056-.173 3.109 1-.056.173-3.109-1zm-.097-2.652l2.927-2.037.104.15-2.927 2.036-.104-.149zm-1.49 4.425l.175-.047 1.019 3.8-.176.047-1.018-3.8zm9.124 6.268H6.127v-.182h4.182v.182z"></path><path fill-rule="evenodd" fill="#DD4D4D" d="M7.982 5.28l2.533 1.841-.968 2.978H6.416l-.968-2.978L7.982 5.28zM7.991 2.817l2.536-.883-.309-1.426H5.763l-.308 1.426 2.536.883zM12.904 6.305l1.642 2.124 1.255-.746-1.415-4.223-1.451.16-.031 2.685zM2.982 6.295L1.343 8.417.091 7.671l1.412-4.218 1.448.161.031 2.681zM4.807 12.191l1.605 2.146-1.053 1.007-3.686-2.49.542-1.352 2.592.689zM11.121 12.143L9.57 14.328l1.081.977 3.624-2.583-.579-1.335-2.575.756z"></path></svg><svg width="18" height="18" id="icon-soccer-ball-penalty" y="229"><path fill-rule="evenodd" fill="#40484B" d="M8-.001a8 8 0 1 1 0 16A8 8 0 0 1 8 0z"></path><path fill-rule="evenodd" fill="#F8FAFC" d="M7.982.526a7.455 7.455 0 1 1-.001 14.909A7.455 7.455 0 0 1 7.982.526z"></path><path fill-rule="evenodd" opacity=".6" fill="#40484B" d="M13.687 11.643l-.174-.052 1.054-3.455.174.053-1.054 3.454zM10.28 7.058l2.964-.982.057.173-2.964.982-.057-.173zm-.04-5.165l.102-.151 2.854 1.927-.102.151-2.854-1.927zm.888 10.398L9.237 9.892l.143-.113 1.891 2.4-.143.112zM7.909 2.526h.182v4.109h-.182V2.526zM4.144 13.128L6.453 9.91l.148.106-2.309 3.217-.148-.105zm-1.372-6.77l.056-.173 3.109 1-.056.173-3.109-1zm-.097-2.652l2.927-2.037.104.15-2.927 2.036-.104-.149zm-1.49 4.425l.175-.047 1.019 3.8-.176.048-1.018-3.801zm9.124 6.268H6.127v-.182h4.182v.182z"></path><path fill-rule="evenodd" fill="#40484B" d="M7.982 5.28l2.533 1.841-.968 2.978H6.416l-.968-2.978L7.982 5.28zM7.991 2.817l2.536-.882-.309-1.427H5.763l-.308 1.427 2.536.882zM12.904 6.306l1.642 2.124 1.255-.747-1.415-4.223-1.451.161-.031 2.685zM2.982 6.296L1.343 8.417.091 7.672l1.412-4.218 1.448.16.031 2.682zM4.807 12.191l1.605 2.147-1.053 1.007-3.686-2.491.542-1.352 2.592.689zM11.121 12.143L9.57 14.329l1.081.977 3.624-2.583-.579-1.335-2.575.755z"></path><path fill-rule="evenodd" fill="#31404B" d="M12.5 7a5.5 5.5 0 1 1 0 11 5.5 5.5 0 0 1 0-11z"></path><text font-family="Myriad Pro" font-size="7" x="10" y="16"><tspan font-family="Montserrat" font-weight="bold" fill="#FEFEFF">P</tspan></text></svg><svg width="130" height="122" id="icon-soccer-gate" y="247"><path fill-rule="evenodd" fill="#FAFDFF" d="M129.104 70.192l-1.414 1.414-9.193-9.192-8.485 8.485 9.193 9.193-1.415 1.414-9.192-9.192-8.485 8.485 9.192 9.192-1.414 1.414-9.192-9.192-8.486 8.485 9.193 9.193-1.415 1.414-9.192-9.192-8.485 8.485 9.192 9.192-1.414 1.414-9.193-9.192-8.485 8.485 9.193 9.193-1.415 1.414L69 111.912l-9.192 9.192-1.415-1.414 9.193-9.193-8.486-8.485-9.192 9.192-1.414-1.414 9.192-9.192-8.485-8.485-9.192 9.192-1.415-1.414 9.193-9.193-8.486-8.485-9.192 9.192-1.414-1.414 9.192-9.192-8.485-8.485-9.192 9.192-1.415-1.414 9.193-9.193-8.486-8.485-9.192 9.192-1.414-1.414L18.088 61l-9.192-9.193 1.414-1.414 9.192 9.193 8.486-8.486-9.193-9.192 1.415-1.414 9.192 9.192 8.485-8.485-9.192-9.193 1.414-1.414 9.192 9.193 8.486-8.486-9.193-9.192 1.415-1.414 9.192 9.192 8.485-8.485-9.192-9.192 1.414-1.415 9.193 9.193 8.485-8.486-9.193-9.192L59.808.896 69 10.088 78.192.896l1.415 1.414-9.193 9.192 8.485 8.486 9.193-9.193 1.414 1.415-9.192 9.192 8.485 8.485 9.192-9.192 1.415 1.414-9.193 9.192 8.485 8.486 9.193-9.193 1.414 1.414-9.192 9.193 8.485 8.485 9.192-9.192 1.415 1.414-9.193 9.192 8.485 8.486 9.193-9.193 1.414 1.414L119.912 61l9.192 9.192zm-21.92.707l-8.486-8.485-8.485 8.485 8.485 8.486 8.486-8.486zm-36.77 0l8.485 8.486 8.486-8.486-8.485-8.485-8.486 8.485zM77.485 61L69 52.514 60.515 61 69 69.485 77.485 61zM69 72.314l-8.485 8.485L69 89.284l8.485-8.485L69 72.314zm-1.414-1.415L59.1 62.414l-8.485 8.485 8.485 8.486 8.486-8.486zM57.686 61l-8.485-8.485L40.716 61l8.485 8.485L57.686 61zm1.415-1.414l8.485-8.486-8.485-8.485-8.486 8.485 8.486 8.486zm9.899-9.9l8.485-8.485L69 32.716l-8.485 8.485L69 49.686zm1.414 1.414l8.485 8.486 8.486-8.486-8.486-8.485-8.485 8.485zm9.9 9.9l8.485 8.485L97.284 61l-8.485-8.485L80.314 61zm8.485 28.284l8.485-8.485-8.485-8.486-8.485 8.486 8.485 8.485zm-9.9 9.9l8.486-8.486-8.486-8.485-8.485 8.485 8.485 8.486zM69 109.083l8.485-8.485L69 92.112l-8.485 8.486L69 109.083zm-9.9-9.899l8.486-8.486-8.485-8.485-8.486 8.485 8.485 8.486zm-9.899-9.9l8.485-8.485-8.485-8.486-8.485 8.486 8.485 8.485zm-9.9-9.899l8.486-8.486-8.486-8.485-8.485 8.485 8.485 8.486zM20.917 61l8.485 8.485L37.887 61l-8.485-8.485L20.917 61zm18.384-18.385L30.816 51.1l8.485 8.486 8.486-8.486-8.486-8.485zm1.415-1.414l8.485 8.485 8.485-8.485-8.485-8.486-8.485 8.486zM59.1 22.816l-8.485 8.485 8.485 8.486 8.486-8.486-8.486-8.485zm9.9-9.899l-8.485 8.485L69 29.887l8.485-8.485L69 12.917zm9.899 9.899l-8.485 8.485 8.486 8.486 8.485-8.486-8.486-8.485zm9.9 9.899l-8.485 8.486 8.485 8.485 8.485-8.485-8.485-8.486zm9.899 9.9L90.213 51.1l8.485 8.486 8.486-8.486-8.486-8.485zm9.9 9.9L100.113 61l8.485 8.485L117.083 61l-8.485-8.485z"></path><path fill-rule="evenodd" fill="#D3D9E0" d="M83.952 21.526H28.667c-4.524 0-8.191 3.676-8.191 8.211V79H8.19C3.667 79 0 75.324 0 70.789V9.21C0 4.676 3.667 1 8.19 1h69.619C82.333 1 86 4.676 86 9.21v12.316h-2.048z"></path><path fill-rule="evenodd" fill="#F1F5F8" d="M84 23H30a8 8 0 0 0-8 8v48H10a8 8 0 0 1-8-8V11a8 8 0 0 1 8-8h68a8 8 0 0 1 8 8v12h-2z"></path><path fill-rule="evenodd" fill="#DCDFE2" d="M96 35H42a8 8 0 0 0-8 8v48H22a8 8 0 0 1-8-8V23a8 8 0 0 1 8-8h68a8 8 0 0 1 8 8v12h-2z"></path></svg><svg width="20" height="17" id="icon-soccer-shoe" y="369"><path fill-rule="evenodd" fill="#202020" d="M18.59 8.645a1.021 1.021 0 0 1-1.398-.376l-.512-.891a1.031 1.031 0 0 1 .374-1.405 1.021 1.021 0 0 1 1.399.377l.512.89a1.03 1.03 0 0 1-.375 1.405zm-4.946 1.68l-.512-.891a1.03 1.03 0 0 1 .375-1.404 1.022 1.022 0 0 1 1.399.376l.512.891a1.03 1.03 0 0 1-.375 1.405 1.022 1.022 0 0 1-1.399-.377zm-3.547 2.057l-.512-.891a1.03 1.03 0 0 1 .375-1.405 1.023 1.023 0 0 1 1.399.377l.512.89a1.031 1.031 0 0 1-.375 1.405 1.022 1.022 0 0 1-1.399-.376zM6.55 14.439l-.512-.891a1.03 1.03 0 0 1 .375-1.405 1.022 1.022 0 0 1 1.399.377l.512.89a1.032 1.032 0 0 1-.375 1.405 1.022 1.022 0 0 1-1.399-.376zm-3.547 2.056l-.512-.89a1.031 1.031 0 0 1 .374-1.405 1.022 1.022 0 0 1 1.399.376l.512.891a1.03 1.03 0 0 1-.375 1.405 1.022 1.022 0 0 1-1.398-.377z"></path><path fill-rule="evenodd" fill="#6F6F6F" d="M15.577.747s.228-1.023 1.102-.639c.874.384 2.47 3.303 3.036 4.429.565 1.126.745 2.006-4.171 4.669S2.69 16.658 2.69 16.658s-1.833.36-2.439-.836c-.606-1.196-.082-2.343.99-3.387C2.314 11.391 4.86 8.508 6.894 3.53c0 0 .611-2.558 1.961-1.699 1.351.857 2.953 2.226 5.004 1.037 2.05-1.189 1.718-2.121 1.718-2.121z"></path><path fill-rule="evenodd" fill="#FFF" d="M1.686 8.107a.51.51 0 0 1 .627-.363l4.945 1.33a.515.515 0 0 1-.265.994L2.048 8.737a.514.514 0 0 1-.362-.63zM2.216 6.121a.51.51 0 0 1 .627-.364l4.945 1.331a.514.514 0 0 1-.265.993L2.578 6.75a.512.512 0 0 1-.362-.629zM2.746 4.134a.513.513 0 0 1 .627-.364l4.945 1.331a.514.514 0 0 1-.265.993l-4.945-1.33a.514.514 0 0 1-.362-.63zM14.7 4.963l.887-.514a.51.51 0 0 1 .699.188.515.515 0 0 1-.187.703l-.887.514a.51.51 0 0 1-.699-.188.515.515 0 0 1 .187-.703z"></path></svg><svg width="14.906" height="16.38" viewBox="0 0 14.906 16.38" id="icon-soccer-shots" y="386"><defs><style>.cls-1{fill:#40484b;fill-rule:evenodd}</style></defs><path id="Detail_" data-name="Detail" class="cls-1" d="M274.237 2233.69l6.928-4a1 1 0 1 1 1 1.73l-6.928 4a1 1 0 0 1-1-1.73zm3.866 4.69l8.66-5a1 1 0 0 1 1 1.74l-8.66 5a1 1 0 0 1-1.003-1.74zm2.134 5.7l6.928-4a1 1 0 0 1 1 1.73l-6.928 4a1 1 0 1 1-1-1.73z" transform="translate(-273.75 -2229.56)"></path></svg><svg width="17" height="19" id="icon-stopwatch" y="403"><path fill-rule="evenodd" fill="#BAC1C8" d="M8 2.999a8 8 0 1 1 0 16A8 8 0 0 1 8 3z"></path><path fill-rule="evenodd" fill="#F8FAFC" d="M7.997 3.995a7.002 7.002 0 1 1 0 14.004 7.002 7.002 0 0 1 0-14.004z"></path><path fill-rule="evenodd" fill="#9099A2" d="M7 .999h2v2H7v-2z"></path><path fill-rule="evenodd" fill="#BAC1C8" d="M5 0h6v2H5V0z"></path><path fill-rule="evenodd" fill="#A3ABB3" d="M12.967 2.016l3.239 2.347-1.173 1.619-3.239-2.346 1.173-1.62z"></path><path fill-rule="evenodd" fill="#EF3A3A" d="M11.621 7.878a.5.5 0 0 1 0 .707l-3.535 3.536a.5.5 0 0 1-.707-.707l3.535-3.536a.5.5 0 0 1 .707 0z"></path></svg><svg width="18" height="17" id="icon-substitution" y="422"><path fill-rule="evenodd" fill="#14D6C6" d="M12 11.656L9.879 9.535l3.535-3.536-3.535-3.535L12 .342l5.657 5.657L12 11.656z"></path><path fill-rule="evenodd" fill="#EE5353" d="M7.996 14.937L5.815 17l-5.816-5.501 5.816-5.5 2.181 2.062-3.635 3.438 3.635 3.438z"></path></svg><svg width="18" height="19" id="icon-trophy" y="439"><path fill-rule="evenodd" fill="#FFD307" d="M5.027 18.997a1.777 1.777 0 0 1-.01-.18c0-.995.864-1.801 1.929-1.801H11.1c1.065 0 1.928.806 1.928 1.801 0 .061-.003.121-.01.18H5.027z"></path><path fill-rule="evenodd" fill="#FFB505" d="M7.023 12.001h3.995v5.001H7.023v-5.001z"></path><path fill-rule="evenodd" fill="#FFD307" d="M1.289 3s.226 5.859 3.451 5.885L5.013 10C.006 10 .333 1.993.333 1.993H3.05L3.297 3H1.289zM12.991 10l.292-1.115C16.731 8.859 16.973 3 16.973 3h-2.148l.264-1.007h2.906S18.345 10 12.991 10z"></path><path fill-rule="evenodd" fill="#FFD307" d="M13.819 7.87c-1 2.939-2.636 4.964-4.817 5.137-2.181-.173-3.817-2.198-4.817-5.137-1-2.939-1.181-6.867-1.181-6.867H15s-.181 3.928-1.181 6.867z"></path><path fill-rule="evenodd" opacity=".6" d="M3.007.671v1.297L15 1 10.887-.006l-7.88.677z"></path><path fill-rule="evenodd" fill="#FFE56A" d="M2.203.008h13.594c.114 0 .205.1.205.224V.79c0 .123-.091.223-.205.223H2.203c-.114 0-.205-.1-.205-.223V.232c0-.124.091-.224.205-.224z"></path></svg><svg width="16" height="17" id="icon-whistle" y="458"><path fill-rule="evenodd" fill="#A5AEB8" d="M8.711 12.054l-5.327 4.938s-.842-.221-2.119-.605C-.012 16.003.143 15.125.143 15.125L6.559 4.04l2.152 8.014z"></path><path fill-rule="evenodd" fill="#C6CED7" d="M6.024 4.964a5.354 5.354 0 0 1 7.303-1.953 5.327 5.327 0 0 1 1.957 7.286 5.353 5.353 0 0 1-7.303 1.952 5.326 5.326 0 0 1-1.957-7.285z"></path><path fill-rule="evenodd" fill="#96A0AB" d="M7.876 6.03a3.212 3.212 0 0 1 4.382-1.171 3.197 3.197 0 0 1 1.174 4.371 3.213 3.213 0 0 1-4.382 1.172A3.197 3.197 0 0 1 7.876 6.03z"></path><path fill-rule="evenodd" fill="#C6CED7" d="M8.43.807a1.605 1.605 0 0 1 2.191-.586 1.598 1.598 0 0 1 .587 2.186 1.606 1.606 0 0 1-2.191.585A1.597 1.597 0 0 1 8.43.807z"></path></svg><svg width="12" height="16" id="icon-yellow-card" y="475"><path fill-rule="evenodd" fill="#FFE035" d="M2.4-.002h7.2c1.325 0 2.4.896 2.4 2.001v12c0 1.104-1.075 2-2.4 2H2.4c-1.326 0-2.4-.896-2.4-2v-12C0 .894 1.074-.002 2.4-.002z"></path></svg></svg>
|