@golstats/gsc-reports 1.0.99 → 1.0.100

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.
Files changed (27) hide show
  1. package/README.md +2 -2
  2. package/dist/{FilterConditions-55d68355-DMqzcKBO-TyZjze1I-Df0CdKQm.js → FilterConditions-55d68355-DMqzcKBO-TyZjze1I-C-4sxavs.js} +1 -1
  3. package/dist/{FilterField-59a73e38-CNaE03Ge-UliZ6gTE-CPkcDgxo.js → FilterField-59a73e38-CNaE03Ge-UliZ6gTE-DILrovEJ.js} +1 -1
  4. package/dist/{FilterSubcategories-a9b32cc9-_h5FCZ4r-BamOVEDD-C3RNA0PE.js → FilterSubcategories-a9b32cc9-_h5FCZ4r-BamOVEDD-BSBdn0dS.js} +1 -1
  5. package/dist/css/fonts.css +83 -83
  6. package/dist/gsc-reports.css +1 -1
  7. package/dist/gsc-reports.es.js +1 -1
  8. package/dist/gsc-reports.umd.js +98 -98
  9. package/dist/{index-CtphUsvB.js → index-MJf_XCYP.js} +7694 -7690
  10. package/package.json +1 -1
  11. package/src/App.vue +1 -1
  12. package/src/components/elementsTemplates/ModalDeleteTemplate.vue +249 -249
  13. package/src/components/elementsTemplates/ModalGenerarReporte.vue +30 -9
  14. package/src/components/elementsTemplates/ModalSoloEscritorio.vue +83 -83
  15. package/src/components/elementsTemplates/ModalduplicateTemplate.vue +300 -300
  16. package/src/components/elementsTemplates/TooltipReportOptions.vue +97 -97
  17. package/src/components/elementsTemplates/TooltipTemplateOptions.vue +168 -168
  18. package/src/components/filters.vue +935 -935
  19. package/src/components/template-report-maker/CoverSelector.vue +165 -165
  20. package/src/components/template-report-maker/ReportView.vue +66 -66
  21. package/src/components/thumbnails-reports/AnalisisPostMatchType1.vue +741 -741
  22. package/src/components/thumbnails-reports/AnalisisPostMatchType2.vue +743 -743
  23. package/src/components/thumbnails-reports/AnalisisPrematchType3.vue +173 -173
  24. package/src/components/thumbnails-reports/AnalisisPrematchType4.vue +173 -173
  25. package/src/index.js +4 -4
  26. package/src/types.d.ts +45 -45
  27. package/src/utils/dateUtils.js +52 -52
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golstats/gsc-reports",
3
- "version": "1.0.99",
3
+ "version": "1.0.100",
4
4
  "main": "dist/gsc-reports.umd.js",
5
5
  "module": "dist/gsc-reports.es.js",
6
6
  "exports": {
package/src/App.vue CHANGED
@@ -27,7 +27,7 @@ function handleModalNext(options) {
27
27
  <template>
28
28
  <div class="container-reports">
29
29
  <GSCReports
30
- :team="950"
30
+ :team="1"
31
31
  :user-id="481"
32
32
  token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NDgxLCJuYW1lIjoiR29sU3RhdHMiLCJ1c2VybmFtZSI6ImdvbHNhbWNoaXZhcyIsImVtYWlsIjoiIiwicHJvdmlkZXJfaWQiOjEsImxvZ2luX2dvbHN0YXRzIjoxLCJpYXQiOjE3NjI1NDQwMDUsImV4cCI6MTc5NDA4MDAwNX0.SGWoxQjwtNKmYVSX0j-0yivKHECqu-C_0Fu-Iae1XEY"
33
33
  @toHome="handleToHome"
@@ -1,249 +1,249 @@
1
- <template>
2
- <div class="modal-overlay">
3
- <div class="modal-content">
4
- <button class="close-btn" @click="$emit('close')">
5
- <img
6
- src="https://golstatsimages.blob.core.windows.net/reports-images/icn-close.svg"
7
- alt="Cerrar"
8
- />
9
- </button>
10
- <div class="modal-header">
11
- <img
12
- src="https://golstatsimages.blob.core.windows.net/reports-images/icn-delete-delete.svg"
13
- class="icon-title"
14
- alt="icon"
15
- />
16
- <span class="modal-title">Eliminar template</span>
17
- </div>
18
- <div class="header-separator"></div>
19
- <div class="modal-body confirm-text">
20
- ¿Estás seguro que deseas eliminar<br />
21
- este template? Si lo haces no habrá manera<br />
22
- de recuperarlo.
23
- </div>
24
- <div class="header-separator"></div>
25
- <div class="modal-footer">
26
- <button class="cancel-btn" @click="$emit('close')">Cancelar</button>
27
- <button class="delete-btn" @click="handleDelete" :disabled="isDeleting">
28
- {{ isDeleting ? 'Eliminando...' : 'Eliminar' }}
29
- </button>
30
- </div>
31
- </div>
32
- </div>
33
- </template>
34
-
35
- <script setup>
36
- import { ref, onMounted, onUnmounted } from 'vue'
37
- import axios from 'axios'
38
-
39
- // Props para recibir el ID del template, user_id y token
40
- const props = defineProps({
41
- templateId: {
42
- type: String,
43
- required: true,
44
- },
45
- userId: {
46
- type: String,
47
- required: true,
48
- },
49
- token: {
50
- type: String,
51
- required: true,
52
- },
53
- })
54
-
55
- // Emits para comunicar con el componente padre
56
- const emit = defineEmits(['close', 'delete', 'templateDeleted'])
57
-
58
- // Estado para controlar el loading
59
- const isDeleting = ref(false)
60
-
61
- // Deshabilitar scroll al abrir la modal y restaurar al cerrar
62
- onMounted(() => {
63
- document.body.style.overflow = 'hidden'
64
- })
65
- onUnmounted(() => {
66
- document.body.style.overflow = ''
67
- })
68
-
69
- // Función para eliminar el template
70
- const handleDelete = async () => {
71
- try {
72
- isDeleting.value = true
73
- const axiosInstance = axios.create({ headers: { Authorization: `${props.token}` } })
74
- const response = await axiosInstance.delete(
75
- `https://m9qip57rsh.execute-api.us-east-2.amazonaws.com/prod/users/${props.userId}/templates/${props.templateId}`,
76
- )
77
-
78
- if (response.status === 200 || response.status === 204) {
79
- // Emitir evento de éxito para refrescar la lista
80
- emit('templateDeleted', props.templateId)
81
- emit('close')
82
- }
83
- } catch (error) {
84
- console.error('Error al eliminar template:', error)
85
- // Aquí podrías mostrar un mensaje de error al usuario
86
- alert('Error al eliminar el template. Por favor, inténtalo de nuevo.')
87
- } finally {
88
- isDeleting.value = false
89
- }
90
- }
91
- </script>
92
-
93
- <style scoped>
94
- .modal-overlay {
95
- position: fixed;
96
- top: 0;
97
- left: 0;
98
- width: 100vw;
99
- height: 100vh;
100
- background: rgba(0, 0, 0, 0.45);
101
- display: flex;
102
- align-items: center;
103
- justify-content: center;
104
- z-index: 3200;
105
- }
106
- .modal-content {
107
- width: 375px;
108
- height: 218px;
109
- background: #2e3b46;
110
- border-radius: 10px;
111
- box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.18);
112
- padding: 0;
113
- position: relative;
114
- display: flex;
115
- flex-direction: column;
116
- font-family: 'Poppins-Regular', 'Montserrat', sans-serif;
117
- }
118
- .close-btn {
119
- position: absolute;
120
- top: 16px;
121
- right: 16px;
122
- background: none;
123
- border: none;
124
- cursor: pointer;
125
- z-index: 2;
126
- padding: 0;
127
- display: flex;
128
- align-items: center;
129
- justify-content: center;
130
- }
131
- .close-btn:hover {
132
- opacity: 0.7;
133
- }
134
- .close-btn img {
135
- width: 20px;
136
- height: 20px;
137
- }
138
- .header-separator {
139
- width: 100%;
140
- height: 1px;
141
- border-bottom: dashed 1px #58626b;
142
- margin: 12px 0 0 0;
143
- }
144
- .modal-header {
145
- display: flex;
146
- align-items: center;
147
- gap: 8px;
148
- padding: 20px 24px 0 24px;
149
- }
150
- .icon-title {
151
- width: 15px;
152
- height: 15px;
153
- }
154
- .modal-title {
155
- font-family: Poppins-Medium;
156
- font-size: 14px;
157
- font-weight: 500;
158
- font-stretch: normal;
159
- font-style: normal;
160
- line-height: 1.5;
161
- letter-spacing: normal;
162
- text-align: left;
163
- color: #fff;
164
- }
165
- .modal-body.confirm-text {
166
- flex: 1;
167
- display: flex;
168
- flex-direction: column;
169
- justify-content: center;
170
- align-items: center;
171
- padding: 4px 24px 0 24px;
172
- opacity: 0.5;
173
- font-family: Poppins-Regular;
174
- font-size: 13px;
175
- font-weight: normal;
176
- font-stretch: normal;
177
- font-style: normal;
178
- line-height: 1.38;
179
- letter-spacing: normal;
180
- text-align: center;
181
- color: #fff;
182
- }
183
- .modal-footer {
184
- display: flex;
185
- justify-content: center;
186
- align-items: center;
187
- gap: 18px;
188
- margin-top: 13px;
189
- padding: 0 24px 12px 24px;
190
- }
191
- .cancel-btn {
192
- background: none;
193
- border: none;
194
- color: #b0bec5;
195
- font-size: 14.9px;
196
- font-family: Poppins-Medium;
197
- height: 30px;
198
- border-radius: 64px;
199
- display: flex;
200
- align-items: center;
201
- justify-content: center;
202
- cursor: pointer;
203
- padding: 0 18px;
204
- transition: color 0.2s;
205
- text-decoration: underline;
206
- }
207
- .cancel-btn:hover {
208
- color: #fff;
209
- }
210
- .delete-btn {
211
- width: 107px;
212
- height: 30px;
213
- border-radius: 64px;
214
- -webkit-backdrop-filter: blur(16px);
215
- backdrop-filter: blur(16px);
216
- border: solid 0.8px #ff6b6b;
217
- background-color: rgba(255, 255, 255, 0.06);
218
- font-family: Poppins-Medium;
219
- font-size: 14.9px;
220
- font-weight: 500;
221
- font-stretch: normal;
222
- font-style: normal;
223
- line-height: 1.2;
224
- letter-spacing: -0.45px;
225
- text-align: center;
226
- color: #ff6b6b;
227
- cursor: pointer;
228
- transition:
229
- background 0.2s,
230
- color 0.2s;
231
- display: flex;
232
- align-items: center;
233
- justify-content: center;
234
- }
235
- .delete-btn:hover {
236
- background: #ff6b6b;
237
- color: #fff;
238
- }
239
-
240
- .delete-btn:disabled {
241
- opacity: 0.5;
242
- cursor: not-allowed;
243
- }
244
-
245
- .delete-btn:disabled:hover {
246
- background-color: rgba(255, 255, 255, 0.06);
247
- color: #ff6b6b;
248
- }
249
- </style>
1
+ <template>
2
+ <div class="modal-overlay">
3
+ <div class="modal-content">
4
+ <button class="close-btn" @click="$emit('close')">
5
+ <img
6
+ src="https://golstatsimages.blob.core.windows.net/reports-images/icn-close.svg"
7
+ alt="Cerrar"
8
+ />
9
+ </button>
10
+ <div class="modal-header">
11
+ <img
12
+ src="https://golstatsimages.blob.core.windows.net/reports-images/icn-delete-delete.svg"
13
+ class="icon-title"
14
+ alt="icon"
15
+ />
16
+ <span class="modal-title">Eliminar template</span>
17
+ </div>
18
+ <div class="header-separator"></div>
19
+ <div class="modal-body confirm-text">
20
+ ¿Estás seguro que deseas eliminar<br />
21
+ este template? Si lo haces no habrá manera<br />
22
+ de recuperarlo.
23
+ </div>
24
+ <div class="header-separator"></div>
25
+ <div class="modal-footer">
26
+ <button class="cancel-btn" @click="$emit('close')">Cancelar</button>
27
+ <button class="delete-btn" @click="handleDelete" :disabled="isDeleting">
28
+ {{ isDeleting ? 'Eliminando...' : 'Eliminar' }}
29
+ </button>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </template>
34
+
35
+ <script setup>
36
+ import { ref, onMounted, onUnmounted } from 'vue'
37
+ import axios from 'axios'
38
+
39
+ // Props para recibir el ID del template, user_id y token
40
+ const props = defineProps({
41
+ templateId: {
42
+ type: String,
43
+ required: true,
44
+ },
45
+ userId: {
46
+ type: String,
47
+ required: true,
48
+ },
49
+ token: {
50
+ type: String,
51
+ required: true,
52
+ },
53
+ })
54
+
55
+ // Emits para comunicar con el componente padre
56
+ const emit = defineEmits(['close', 'delete', 'templateDeleted'])
57
+
58
+ // Estado para controlar el loading
59
+ const isDeleting = ref(false)
60
+
61
+ // Deshabilitar scroll al abrir la modal y restaurar al cerrar
62
+ onMounted(() => {
63
+ document.body.style.overflow = 'hidden'
64
+ })
65
+ onUnmounted(() => {
66
+ document.body.style.overflow = ''
67
+ })
68
+
69
+ // Función para eliminar el template
70
+ const handleDelete = async () => {
71
+ try {
72
+ isDeleting.value = true
73
+ const axiosInstance = axios.create({ headers: { Authorization: `${props.token}` } })
74
+ const response = await axiosInstance.delete(
75
+ `https://m9qip57rsh.execute-api.us-east-2.amazonaws.com/prod/users/${props.userId}/templates/${props.templateId}`,
76
+ )
77
+
78
+ if (response.status === 200 || response.status === 204) {
79
+ // Emitir evento de éxito para refrescar la lista
80
+ emit('templateDeleted', props.templateId)
81
+ emit('close')
82
+ }
83
+ } catch (error) {
84
+ console.error('Error al eliminar template:', error)
85
+ // Aquí podrías mostrar un mensaje de error al usuario
86
+ alert('Error al eliminar el template. Por favor, inténtalo de nuevo.')
87
+ } finally {
88
+ isDeleting.value = false
89
+ }
90
+ }
91
+ </script>
92
+
93
+ <style scoped>
94
+ .modal-overlay {
95
+ position: fixed;
96
+ top: 0;
97
+ left: 0;
98
+ width: 100vw;
99
+ height: 100vh;
100
+ background: rgba(0, 0, 0, 0.45);
101
+ display: flex;
102
+ align-items: center;
103
+ justify-content: center;
104
+ z-index: 3200;
105
+ }
106
+ .modal-content {
107
+ width: 375px;
108
+ height: 218px;
109
+ background: #2e3b46;
110
+ border-radius: 10px;
111
+ box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.18);
112
+ padding: 0;
113
+ position: relative;
114
+ display: flex;
115
+ flex-direction: column;
116
+ font-family: 'Poppins-Regular', 'Montserrat', sans-serif;
117
+ }
118
+ .close-btn {
119
+ position: absolute;
120
+ top: 16px;
121
+ right: 16px;
122
+ background: none;
123
+ border: none;
124
+ cursor: pointer;
125
+ z-index: 2;
126
+ padding: 0;
127
+ display: flex;
128
+ align-items: center;
129
+ justify-content: center;
130
+ }
131
+ .close-btn:hover {
132
+ opacity: 0.7;
133
+ }
134
+ .close-btn img {
135
+ width: 20px;
136
+ height: 20px;
137
+ }
138
+ .header-separator {
139
+ width: 100%;
140
+ height: 1px;
141
+ border-bottom: dashed 1px #58626b;
142
+ margin: 12px 0 0 0;
143
+ }
144
+ .modal-header {
145
+ display: flex;
146
+ align-items: center;
147
+ gap: 8px;
148
+ padding: 20px 24px 0 24px;
149
+ }
150
+ .icon-title {
151
+ width: 15px;
152
+ height: 15px;
153
+ }
154
+ .modal-title {
155
+ font-family: Poppins-Medium;
156
+ font-size: 14px;
157
+ font-weight: 500;
158
+ font-stretch: normal;
159
+ font-style: normal;
160
+ line-height: 1.5;
161
+ letter-spacing: normal;
162
+ text-align: left;
163
+ color: #fff;
164
+ }
165
+ .modal-body.confirm-text {
166
+ flex: 1;
167
+ display: flex;
168
+ flex-direction: column;
169
+ justify-content: center;
170
+ align-items: center;
171
+ padding: 4px 24px 0 24px;
172
+ opacity: 0.5;
173
+ font-family: Poppins-Regular;
174
+ font-size: 13px;
175
+ font-weight: normal;
176
+ font-stretch: normal;
177
+ font-style: normal;
178
+ line-height: 1.38;
179
+ letter-spacing: normal;
180
+ text-align: center;
181
+ color: #fff;
182
+ }
183
+ .modal-footer {
184
+ display: flex;
185
+ justify-content: center;
186
+ align-items: center;
187
+ gap: 18px;
188
+ margin-top: 13px;
189
+ padding: 0 24px 12px 24px;
190
+ }
191
+ .cancel-btn {
192
+ background: none;
193
+ border: none;
194
+ color: #b0bec5;
195
+ font-size: 14.9px;
196
+ font-family: Poppins-Medium;
197
+ height: 30px;
198
+ border-radius: 64px;
199
+ display: flex;
200
+ align-items: center;
201
+ justify-content: center;
202
+ cursor: pointer;
203
+ padding: 0 18px;
204
+ transition: color 0.2s;
205
+ text-decoration: underline;
206
+ }
207
+ .cancel-btn:hover {
208
+ color: #fff;
209
+ }
210
+ .delete-btn {
211
+ width: 107px;
212
+ height: 30px;
213
+ border-radius: 64px;
214
+ -webkit-backdrop-filter: blur(16px);
215
+ backdrop-filter: blur(16px);
216
+ border: solid 0.8px #ff6b6b;
217
+ background-color: rgba(255, 255, 255, 0.06);
218
+ font-family: Poppins-Medium;
219
+ font-size: 14.9px;
220
+ font-weight: 500;
221
+ font-stretch: normal;
222
+ font-style: normal;
223
+ line-height: 1.2;
224
+ letter-spacing: -0.45px;
225
+ text-align: center;
226
+ color: #ff6b6b;
227
+ cursor: pointer;
228
+ transition:
229
+ background 0.2s,
230
+ color 0.2s;
231
+ display: flex;
232
+ align-items: center;
233
+ justify-content: center;
234
+ }
235
+ .delete-btn:hover {
236
+ background: #ff6b6b;
237
+ color: #fff;
238
+ }
239
+
240
+ .delete-btn:disabled {
241
+ opacity: 0.5;
242
+ cursor: not-allowed;
243
+ }
244
+
245
+ .delete-btn:disabled:hover {
246
+ background-color: rgba(255, 255, 255, 0.06);
247
+ color: #ff6b6b;
248
+ }
249
+ </style>
@@ -678,9 +678,7 @@ function hasSpecificPlaysView() {
678
678
  for (const page of props.template.pages) {
679
679
  if (page.components && Array.isArray(page.components)) {
680
680
  for (const component of page.components) {
681
- if (
682
- component.coreView && component.coreView.id === 18
683
- ) {
681
+ if (component.coreView && component.coreView.id === 18) {
684
682
  hasSpecificPlays = true
685
683
  break
686
684
  }
@@ -729,7 +727,7 @@ async function generarReporte() {
729
727
  torneo: selectedTorneo.value,
730
728
  jornada: selectedJornada.value,
731
729
  partido: selectedPartido.value,
732
- template: props.template
730
+ template: props.template,
733
731
  })
734
732
  // Cerrar este modal
735
733
  emit('close')
@@ -858,10 +856,9 @@ watch(selectedLiga, (nuevaLiga, anteriorLiga) => {
858
856
  !anteriorLiga &&
859
857
  !cambioAutomatico.value
860
858
  ) {
861
- // Buscar torneo automáticamente
862
- const torneoEncontrado = torneos.value.find(
863
- (torneo) => torneo.id === partidoParaConfigurar.value.season_id,
864
- )
859
+ // Buscar torneo automáticamente usando la función auxiliar
860
+ // para encontrar la season principal si es una related season
861
+ const torneoEncontrado = encontrarSeasonPrincipal(partidoParaConfigurar.value.season_id)
865
862
  if (torneoEncontrado) {
866
863
  cambioAutomatico.value = true
867
864
  selectedTorneo.value = torneoEncontrado
@@ -1007,6 +1004,29 @@ async function cargarUltimosJuegos() {
1007
1004
  }
1008
1005
  }
1009
1006
 
1007
+ // Función auxiliar para encontrar la season principal si el season_id es una related season
1008
+ function encontrarSeasonPrincipal(seasonId) {
1009
+ if (!seasonId || !torneos.value.length) {
1010
+ return null
1011
+ }
1012
+
1013
+ // Primero buscar directamente por ID
1014
+ const seasonDirecta = torneos.value.find((torneo) => torneo.id === seasonId)
1015
+ if (seasonDirecta) {
1016
+ return seasonDirecta
1017
+ }
1018
+
1019
+ // Si no se encuentra directamente, buscar si alguna season principal tiene este ID en related_seasons
1020
+ const seasonPrincipal = torneos.value.find((torneo) => {
1021
+ if (torneo.related_seasons && Array.isArray(torneo.related_seasons)) {
1022
+ return torneo.related_seasons.some((related) => related.id === seasonId)
1023
+ }
1024
+ return false
1025
+ })
1026
+
1027
+ return seasonPrincipal || null
1028
+ }
1029
+
1010
1030
  // Función para configurar automáticamente los selectores basado en el partido
1011
1031
  function configurarSelectoresAutomaticamente(partido) {
1012
1032
  if (!partido || !partido.game_id) {
@@ -1039,8 +1059,9 @@ function configurarSelectoresSoloSetear(partido) {
1039
1059
  selectedLiga.value = ligaEncontrada
1040
1060
 
1041
1061
  // Buscar y seleccionar la temporada (ya están cargados los torneos)
1062
+ // Usar la función auxiliar para encontrar la season principal si es una related season
1042
1063
  if (partido.season_id && torneos.value.length > 0) {
1043
- const torneoEncontrado = torneos.value.find((torneo) => torneo.id === partido.season_id)
1064
+ const torneoEncontrado = encontrarSeasonPrincipal(partido.season_id)
1044
1065
  if (torneoEncontrado) {
1045
1066
  selectedTorneo.value = torneoEncontrado
1046
1067