@golstats/gsc-reports 1.0.85 → 1.0.86
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/README.md +2 -2
- package/dist/{FilterConditions-55d68355-DMqzcKBO-BztXde2I-kyOFlHfh.js → FilterConditions-55d68355-DMqzcKBO-Dsva57Z5-DGGQbyqc.js} +13 -13
- package/dist/{FilterField-59a73e38-CNaE03Ge-Dx_kEi44-HUfd2M4_.js → FilterField-59a73e38-CNaE03Ge-DoVl6t0F-9HWoGn8h.js} +3 -3
- package/dist/{FilterSubcategories-a9b32cc9-_h5FCZ4r-CpqGlYSI-tKXyAPGC.js → FilterSubcategories-a9b32cc9-_h5FCZ4r-ChNV-mxz-TFHmlF8S.js} +1 -1
- package/dist/css/fonts.css +83 -83
- package/dist/gsc-reports.css +1 -1
- package/dist/gsc-reports.es.js +1 -1
- package/dist/gsc-reports.umd.js +246 -246
- package/dist/{index-Db8K9_It.js → index-jr8PN3sh.js} +60261 -59697
- package/package.json +2 -2
- package/src/components/elementsTemplates/FortalezasView.vue +16 -5
- package/src/components/elementsTemplates/ModalConfigurarContenido.vue +1343 -1341
- package/src/components/elementsTemplates/ModalDeleteTemplate.vue +249 -249
- package/src/components/elementsTemplates/ModalSoloEscritorio.vue +83 -83
- package/src/components/elementsTemplates/ModalduplicateTemplate.vue +300 -300
- package/src/components/elementsTemplates/TooltipReportOptions.vue +97 -97
- package/src/components/elementsTemplates/TooltipTemplateOptions.vue +168 -168
- package/src/components/filters.vue +935 -935
- package/src/components/template-report-maker/CoverSelector.vue +165 -165
- package/src/components/template-report-maker/ReportView.vue +66 -66
- package/src/components/thumbnails-reports/AnalisisPostMatchType1.vue +741 -741
- package/src/components/thumbnails-reports/AnalisisPostMatchType2.vue +743 -743
- package/src/components/thumbnails-reports/AnalisisPrematchType3.vue +173 -173
- package/src/components/thumbnails-reports/AnalisisPrematchType4.vue +173 -173
- package/src/index.js +4 -4
- package/src/types.d.ts +45 -45
- package/src/utils/dateUtils.js +52 -52
- package/dist/images/cancha-horizontal.jpg +0 -0
- package/dist/images/canchaRPH.svg +0 -30
|
@@ -1,1341 +1,1343 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="modal-overlay">
|
|
3
|
-
<div class="modal-content">
|
|
4
|
-
<!-- Botón de cerrar removido -->
|
|
5
|
-
|
|
6
|
-
<div class="modal-header">
|
|
7
|
-
<div class="header-left">
|
|
8
|
-
<img
|
|
9
|
-
src="https://golstatsimages.blob.core.windows.net/reports-images/icn-report-white.svg"
|
|
10
|
-
class="icon-title"
|
|
11
|
-
alt="icono reporte blanco"
|
|
12
|
-
/>
|
|
13
|
-
<span class="modal-title"
|
|
14
|
-
>Generar reporte -
|
|
15
|
-
<span class="prepartido-text">{{ tipoReporteTexto }}</span></span
|
|
16
|
-
>
|
|
17
|
-
</div>
|
|
18
|
-
<div class="step-counter">
|
|
19
|
-
Paso {{ currentStep === 0 ? 1 : currentStep }} de {{ totalSteps }}
|
|
20
|
-
</div>
|
|
21
|
-
</div>
|
|
22
|
-
<div class="header-separator"></div>
|
|
23
|
-
<div class="modal-body" :class="{ transitioning: isTransitioning }">
|
|
24
|
-
<!-- Paso 0: Configuración inicial de opciones -->
|
|
25
|
-
<div v-if="currentStep === 0" class="step-content">
|
|
26
|
-
<!-- Sección Fortalezas - Solo se muestra si existen Fortalezas en el template -->
|
|
27
|
-
<div v-if="hasFortalezas" class="content-section">
|
|
28
|
-
<h3 class="section-title">Fortalezas</h3>
|
|
29
|
-
<div class="title-separator"></div>
|
|
30
|
-
<p class="section-description">
|
|
31
|
-
Este template contiene {{ fortalezasCounts.equipo }} visualizaciones de Fortalezas de
|
|
32
|
-
tu equipo y {{ fortalezasCounts.rival }} de tu rival. ¿Cómo prefieres que se agregue
|
|
33
|
-
este contenido?
|
|
34
|
-
</p>
|
|
35
|
-
<div class="content-separator"></div>
|
|
36
|
-
<div class="radio-group">
|
|
37
|
-
<label class="radio-option">
|
|
38
|
-
<input
|
|
39
|
-
type="radio"
|
|
40
|
-
name="fortalezas"
|
|
41
|
-
value="automatico"
|
|
42
|
-
v-model="fortalezasOption"
|
|
43
|
-
/>
|
|
44
|
-
<span class="radio-custom"></span>
|
|
45
|
-
<span class="radio-label">Automáticamente</span>
|
|
46
|
-
</label>
|
|
47
|
-
<label class="radio-option">
|
|
48
|
-
<input type="radio" name="fortalezas" value="manual" v-model="fortalezasOption" />
|
|
49
|
-
<span class="radio-custom"></span>
|
|
50
|
-
<span class="radio-label">Manualmente</span>
|
|
51
|
-
</label>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
|
|
55
|
-
<!-- Separador removido -->
|
|
56
|
-
|
|
57
|
-
<!-- Sección Tiros de esquina - OCULTA POR EL MOMENTO -->
|
|
58
|
-
<!-- <div v-if="hasCorners" class="content-section">
|
|
59
|
-
<h3 class="section-title">Tiros de esquina</h3>
|
|
60
|
-
<div class="title-separator"></div>
|
|
61
|
-
<p class="section-description">
|
|
62
|
-
Este template contiene 10 visualizaciones de Tiros de esquina de tu equipo. ¿Cómo
|
|
63
|
-
prefieres que se agregue este contenido?
|
|
64
|
-
</p>
|
|
65
|
-
<div class="content-separator"></div>
|
|
66
|
-
<div class="radio-group">
|
|
67
|
-
<label class="radio-option">
|
|
68
|
-
<input
|
|
69
|
-
type="radio"
|
|
70
|
-
name="tiros-esquina"
|
|
71
|
-
value="automatico"
|
|
72
|
-
v-model="tirosEsquinaOption"
|
|
73
|
-
/>
|
|
74
|
-
<span class="radio-custom"></span>
|
|
75
|
-
<span class="radio-label">Automáticamente</span>
|
|
76
|
-
</label>
|
|
77
|
-
<label class="radio-option">
|
|
78
|
-
<input
|
|
79
|
-
type="radio"
|
|
80
|
-
name="tiros-esquina"
|
|
81
|
-
value="manual"
|
|
82
|
-
v-model="tirosEsquinaOption"
|
|
83
|
-
/>
|
|
84
|
-
<span class="radio-custom"></span>
|
|
85
|
-
<span class="radio-label">Manualmente</span>
|
|
86
|
-
</label>
|
|
87
|
-
</div>
|
|
88
|
-
</div> -->
|
|
89
|
-
</div>
|
|
90
|
-
|
|
91
|
-
<!-- Pasos dinámicos renderizados por clave -->
|
|
92
|
-
<!-- Usamos v-show en lugar de v-if para mantener los componentes montados y preservar el estado -->
|
|
93
|
-
<template v-if="fortalezasCounts.equipo > 0">
|
|
94
|
-
<div v-show="buildStepMap()[currentStep] === 'fortalezasEquipo'" class="step-content">
|
|
95
|
-
<FortalezasView
|
|
96
|
-
key="fortalezas-equipo"
|
|
97
|
-
v-model="selectedFortalezasEquipo"
|
|
98
|
-
team-initials="AME"
|
|
99
|
-
:season-id="props.partido?.season_id"
|
|
100
|
-
:team-id="props.partido?.local || props.partido?.home_team"
|
|
101
|
-
:rival-team-id="props.partido?.visita || props.partido?.visiting_team"
|
|
102
|
-
:game-id="props.partido?.game_id || props.partido?.id"
|
|
103
|
-
:token="props.token"
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
:
|
|
119
|
-
:
|
|
120
|
-
:
|
|
121
|
-
:
|
|
122
|
-
|
|
123
|
-
:
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
team-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
team-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
stroke
|
|
166
|
-
stroke-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
</
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
import
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
component.
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
component.
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
} else {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
const
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
const
|
|
384
|
-
const
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
//
|
|
405
|
-
//
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
const
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
const
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
//
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
const
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
const
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
//
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
//
|
|
460
|
-
return
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
//
|
|
481
|
-
//
|
|
482
|
-
//
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
const
|
|
495
|
-
const
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
console.log('
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
console.log('
|
|
611
|
-
console.log('
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
console.log('equipoRef
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
console.log('rivalRef
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
component.
|
|
699
|
-
component.
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
let
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
console.log('
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
if (key === '
|
|
979
|
-
return
|
|
980
|
-
if (key === '
|
|
981
|
-
return
|
|
982
|
-
if (key === '
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
font-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
font-
|
|
1050
|
-
font-
|
|
1051
|
-
font-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
flex
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
margin
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
margin
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
font-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
font-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
font-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1
|
+
<template>
|
|
2
|
+
<div class="modal-overlay">
|
|
3
|
+
<div class="modal-content">
|
|
4
|
+
<!-- Botón de cerrar removido -->
|
|
5
|
+
|
|
6
|
+
<div class="modal-header">
|
|
7
|
+
<div class="header-left">
|
|
8
|
+
<img
|
|
9
|
+
src="https://golstatsimages.blob.core.windows.net/reports-images/icn-report-white.svg"
|
|
10
|
+
class="icon-title"
|
|
11
|
+
alt="icono reporte blanco"
|
|
12
|
+
/>
|
|
13
|
+
<span class="modal-title"
|
|
14
|
+
>Generar reporte -
|
|
15
|
+
<span class="prepartido-text">{{ tipoReporteTexto }}</span></span
|
|
16
|
+
>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="step-counter">
|
|
19
|
+
Paso {{ currentStep === 0 ? 1 : currentStep }} de {{ totalSteps }}
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="header-separator"></div>
|
|
23
|
+
<div class="modal-body" :class="{ transitioning: isTransitioning }">
|
|
24
|
+
<!-- Paso 0: Configuración inicial de opciones -->
|
|
25
|
+
<div v-if="currentStep === 0" class="step-content">
|
|
26
|
+
<!-- Sección Fortalezas - Solo se muestra si existen Fortalezas en el template -->
|
|
27
|
+
<div v-if="hasFortalezas" class="content-section">
|
|
28
|
+
<h3 class="section-title">Fortalezas</h3>
|
|
29
|
+
<div class="title-separator"></div>
|
|
30
|
+
<p class="section-description">
|
|
31
|
+
Este template contiene {{ fortalezasCounts.equipo }} visualizaciones de Fortalezas de
|
|
32
|
+
tu equipo y {{ fortalezasCounts.rival }} de tu rival. ¿Cómo prefieres que se agregue
|
|
33
|
+
este contenido?
|
|
34
|
+
</p>
|
|
35
|
+
<div class="content-separator"></div>
|
|
36
|
+
<div class="radio-group">
|
|
37
|
+
<label class="radio-option">
|
|
38
|
+
<input
|
|
39
|
+
type="radio"
|
|
40
|
+
name="fortalezas"
|
|
41
|
+
value="automatico"
|
|
42
|
+
v-model="fortalezasOption"
|
|
43
|
+
/>
|
|
44
|
+
<span class="radio-custom"></span>
|
|
45
|
+
<span class="radio-label">Automáticamente</span>
|
|
46
|
+
</label>
|
|
47
|
+
<label class="radio-option">
|
|
48
|
+
<input type="radio" name="fortalezas" value="manual" v-model="fortalezasOption" />
|
|
49
|
+
<span class="radio-custom"></span>
|
|
50
|
+
<span class="radio-label">Manualmente</span>
|
|
51
|
+
</label>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<!-- Separador removido -->
|
|
56
|
+
|
|
57
|
+
<!-- Sección Tiros de esquina - OCULTA POR EL MOMENTO -->
|
|
58
|
+
<!-- <div v-if="hasCorners" class="content-section">
|
|
59
|
+
<h3 class="section-title">Tiros de esquina</h3>
|
|
60
|
+
<div class="title-separator"></div>
|
|
61
|
+
<p class="section-description">
|
|
62
|
+
Este template contiene 10 visualizaciones de Tiros de esquina de tu equipo. ¿Cómo
|
|
63
|
+
prefieres que se agregue este contenido?
|
|
64
|
+
</p>
|
|
65
|
+
<div class="content-separator"></div>
|
|
66
|
+
<div class="radio-group">
|
|
67
|
+
<label class="radio-option">
|
|
68
|
+
<input
|
|
69
|
+
type="radio"
|
|
70
|
+
name="tiros-esquina"
|
|
71
|
+
value="automatico"
|
|
72
|
+
v-model="tirosEsquinaOption"
|
|
73
|
+
/>
|
|
74
|
+
<span class="radio-custom"></span>
|
|
75
|
+
<span class="radio-label">Automáticamente</span>
|
|
76
|
+
</label>
|
|
77
|
+
<label class="radio-option">
|
|
78
|
+
<input
|
|
79
|
+
type="radio"
|
|
80
|
+
name="tiros-esquina"
|
|
81
|
+
value="manual"
|
|
82
|
+
v-model="tirosEsquinaOption"
|
|
83
|
+
/>
|
|
84
|
+
<span class="radio-custom"></span>
|
|
85
|
+
<span class="radio-label">Manualmente</span>
|
|
86
|
+
</label>
|
|
87
|
+
</div>
|
|
88
|
+
</div> -->
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<!-- Pasos dinámicos renderizados por clave -->
|
|
92
|
+
<!-- Usamos v-show en lugar de v-if para mantener los componentes montados y preservar el estado -->
|
|
93
|
+
<template v-if="fortalezasCounts.equipo > 0">
|
|
94
|
+
<div v-show="buildStepMap()[currentStep] === 'fortalezasEquipo'" class="step-content">
|
|
95
|
+
<FortalezasView
|
|
96
|
+
key="fortalezas-equipo"
|
|
97
|
+
v-model="selectedFortalezasEquipo"
|
|
98
|
+
team-initials="AME"
|
|
99
|
+
:season-id="props.partido?.season_id"
|
|
100
|
+
:team-id="props.partido?.local || props.partido?.home_team"
|
|
101
|
+
:rival-team-id="props.partido?.visita || props.partido?.visiting_team"
|
|
102
|
+
:game-id="props.partido?.game_id || props.partido?.id"
|
|
103
|
+
:token="props.token"
|
|
104
|
+
:template-type="props.template?.template_type || 1"
|
|
105
|
+
title="Fortalezas a favor de mi equipo"
|
|
106
|
+
:total-fortalezas="fortalezasCounts.equipo"
|
|
107
|
+
ref="fortalezasEquipoRef"
|
|
108
|
+
/>
|
|
109
|
+
</div>
|
|
110
|
+
</template>
|
|
111
|
+
|
|
112
|
+
<template v-if="fortalezasCounts.rival > 0">
|
|
113
|
+
<div v-show="buildStepMap()[currentStep] === 'fortalezasRival'" class="step-content">
|
|
114
|
+
<FortalezasView
|
|
115
|
+
key="fortalezas-rival"
|
|
116
|
+
v-model="selectedFortalezasRival"
|
|
117
|
+
team-initials="RIV"
|
|
118
|
+
:season-id="props.partido?.season_id"
|
|
119
|
+
:team-id="props.partido?.visita || props.partido?.visiting_team"
|
|
120
|
+
:rival-team-id="props.partido?.local || props.partido?.home_team"
|
|
121
|
+
:game-id="props.partido?.game_id || props.partido?.id"
|
|
122
|
+
:token="props.token"
|
|
123
|
+
:template-type="props.template?.template_type || 1"
|
|
124
|
+
title="Fortalezas a favor del rival"
|
|
125
|
+
:total-fortalezas="fortalezasCounts.rival"
|
|
126
|
+
ref="fortalezasRivalRef"
|
|
127
|
+
/>
|
|
128
|
+
</div>
|
|
129
|
+
</template>
|
|
130
|
+
|
|
131
|
+
<div v-if="buildStepMap()[currentStep] === 'cornersEquipo'" class="step-content">
|
|
132
|
+
<TirosEsquinaView
|
|
133
|
+
v-model="selectedCornersEquipo"
|
|
134
|
+
:rival="false"
|
|
135
|
+
team-initials="AME"
|
|
136
|
+
title="Tiros de esquina en contra de mi equipo"
|
|
137
|
+
team-logo-url="https://golstatsimages.blob.core.windows.net/teams-80/2.png"
|
|
138
|
+
ref="cornersEquipoRef"
|
|
139
|
+
/>
|
|
140
|
+
</div>
|
|
141
|
+
|
|
142
|
+
<div v-if="buildStepMap()[currentStep] === 'cornersRival'" class="step-content">
|
|
143
|
+
<TirosEsquinaView
|
|
144
|
+
v-model="selectedCornersRival"
|
|
145
|
+
:rival="true"
|
|
146
|
+
team-initials="RIV"
|
|
147
|
+
title="Tiros de esquina en contra del rival"
|
|
148
|
+
team-logo-url="https://golstatsimages.blob.core.windows.net/teams-80/1.png"
|
|
149
|
+
ref="cornersRivalRef"
|
|
150
|
+
/>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
<div class="header-separator"></div>
|
|
154
|
+
<div class="modal-footer">
|
|
155
|
+
<button class="back-btn" @click="goBack">
|
|
156
|
+
<svg
|
|
157
|
+
width="16"
|
|
158
|
+
height="16"
|
|
159
|
+
viewBox="0 0 16 16"
|
|
160
|
+
fill="none"
|
|
161
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
162
|
+
>
|
|
163
|
+
<path
|
|
164
|
+
d="M10 12L6 8L10 4"
|
|
165
|
+
stroke="white"
|
|
166
|
+
stroke-width="2"
|
|
167
|
+
stroke-linecap="round"
|
|
168
|
+
stroke-linejoin="round"
|
|
169
|
+
/>
|
|
170
|
+
</svg>
|
|
171
|
+
Regresar
|
|
172
|
+
</button>
|
|
173
|
+
<div class="footer-actions">
|
|
174
|
+
<button v-if="currentStep === 0" class="cancel-btn" @click="closeModal">Cancelar</button>
|
|
175
|
+
<button
|
|
176
|
+
v-if="currentStep === 1 || currentStep === 2"
|
|
177
|
+
class="cancel-btn"
|
|
178
|
+
@click="autocompletar"
|
|
179
|
+
>
|
|
180
|
+
Autocompletar
|
|
181
|
+
</button>
|
|
182
|
+
<button
|
|
183
|
+
class="next-btn"
|
|
184
|
+
:class="{ disabled: !canContinue }"
|
|
185
|
+
:disabled="!canContinue"
|
|
186
|
+
@click="continueToNext"
|
|
187
|
+
>
|
|
188
|
+
{{
|
|
189
|
+
currentStep === 0
|
|
190
|
+
? fortalezasOption === 'automatico'
|
|
191
|
+
? 'Finalizar'
|
|
192
|
+
: 'Siguiente'
|
|
193
|
+
: currentStep === totalSteps
|
|
194
|
+
? 'Finalizar'
|
|
195
|
+
: 'Siguiente'
|
|
196
|
+
}}
|
|
197
|
+
</button>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
|
|
203
|
+
<!-- Modal de confirmación para regresar al paso 0 -->
|
|
204
|
+
<div v-if="showConfirmDialog" class="modal-overlay" @click.self="cancelGoBack">
|
|
205
|
+
<div class="modal-content confirm-dialog">
|
|
206
|
+
<div class="modal-header">
|
|
207
|
+
<div class="header-left">
|
|
208
|
+
<span class="modal-title">Confirmación</span>
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
<div class="header-separator"></div>
|
|
212
|
+
<div class="modal-body">
|
|
213
|
+
<div class="step-content">
|
|
214
|
+
<h3 class="confirm-dialog-title">¿Estás seguro de regresar?</h3>
|
|
215
|
+
<p class="confirm-dialog-message">Se perderá la información seleccionada</p>
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
<div class="modal-footer">
|
|
219
|
+
<div class="footer-actions">
|
|
220
|
+
<button class="cancel-btn" @click="cancelGoBack">Cancelar</button>
|
|
221
|
+
<button class="next-btn" @click="confirmGoBackToStep0">Confirmar</button>
|
|
222
|
+
</div>
|
|
223
|
+
</div>
|
|
224
|
+
</div>
|
|
225
|
+
</div>
|
|
226
|
+
</template>
|
|
227
|
+
|
|
228
|
+
<script setup>
|
|
229
|
+
import { ref, defineEmits, computed, nextTick } from 'vue'
|
|
230
|
+
import FortalezasView from './FortalezasView.vue'
|
|
231
|
+
import TirosEsquinaView from './TirosEsquinaView.vue'
|
|
232
|
+
|
|
233
|
+
const emit = defineEmits(['close', 'back', 'next'])
|
|
234
|
+
|
|
235
|
+
// Props para controlar el número de pasos
|
|
236
|
+
const props = defineProps({
|
|
237
|
+
hasRival: {
|
|
238
|
+
type: Boolean,
|
|
239
|
+
default: true,
|
|
240
|
+
},
|
|
241
|
+
token: {
|
|
242
|
+
type: String,
|
|
243
|
+
required: true,
|
|
244
|
+
},
|
|
245
|
+
template: {
|
|
246
|
+
type: Object,
|
|
247
|
+
required: false,
|
|
248
|
+
default: null,
|
|
249
|
+
},
|
|
250
|
+
team: {
|
|
251
|
+
type: Number,
|
|
252
|
+
required: false,
|
|
253
|
+
default: null,
|
|
254
|
+
},
|
|
255
|
+
partido: {
|
|
256
|
+
type: Object,
|
|
257
|
+
required: false,
|
|
258
|
+
default: null,
|
|
259
|
+
},
|
|
260
|
+
})
|
|
261
|
+
|
|
262
|
+
// Función para verificar si existe un componente Fortalezas en el template
|
|
263
|
+
function tieneComponenteFortalezas() {
|
|
264
|
+
if (!props.template || !props.template.pages) {
|
|
265
|
+
return false
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// Iterar sobre todas las pages del template
|
|
269
|
+
for (const page of props.template.pages) {
|
|
270
|
+
// Verificar si la page tiene components
|
|
271
|
+
if (page.components && Array.isArray(page.components)) {
|
|
272
|
+
// Buscar si existe algún componente con name === 'Fortalezas' o id === 15
|
|
273
|
+
const tieneFortalezas = page.components.some(
|
|
274
|
+
(component) =>
|
|
275
|
+
component.title === 'Fortalezas' ||
|
|
276
|
+
component.id === 15 ||
|
|
277
|
+
component.componentName === 'GSCStrengths',
|
|
278
|
+
)
|
|
279
|
+
if (tieneFortalezas) {
|
|
280
|
+
return true
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
return false
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
// Función para contar Fortalezas del equipo propio y del rival
|
|
289
|
+
function contarFortalezas() {
|
|
290
|
+
console.log(
|
|
291
|
+
'5555555555555555 Nuevo Valor al crear fortalezas:: : : :: : : : :: : : :',
|
|
292
|
+
props.template,
|
|
293
|
+
)
|
|
294
|
+
if (!props.template || !props.template.pages) {
|
|
295
|
+
return { equipo: 0, rival: 0, total: 0 }
|
|
296
|
+
}
|
|
297
|
+
console.log('Nuevo Valor al crear fortalezas:: : : :: : : : :: : : :', props.template)
|
|
298
|
+
|
|
299
|
+
let countEquipo = 0
|
|
300
|
+
let countRival = 0
|
|
301
|
+
|
|
302
|
+
// Iterar sobre todas las pages del template
|
|
303
|
+
for (const page of props.template.pages) {
|
|
304
|
+
console.log('page 11 5555555555555555555555555555555555 ', page)
|
|
305
|
+
// Verificar si la page tiene components
|
|
306
|
+
if (page.components && Array.isArray(page.components)) {
|
|
307
|
+
console.log('page entro')
|
|
308
|
+
// Filtrar componentes Fortalezas
|
|
309
|
+
const componentesFortalezas = page.components.filter(
|
|
310
|
+
(component) =>
|
|
311
|
+
component.componentName === 'GSCStrengths' ||
|
|
312
|
+
component.id === 15 ||
|
|
313
|
+
component.name === 'Fortalezas',
|
|
314
|
+
)
|
|
315
|
+
console.log(
|
|
316
|
+
'componentesFortalezas componentesFortalezas componentesFortalezas',
|
|
317
|
+
componentesFortalezas,
|
|
318
|
+
)
|
|
319
|
+
// Para cada componente Fortalezas, verificar dynamicFilters
|
|
320
|
+
for (const component of componentesFortalezas) {
|
|
321
|
+
// Verificar si tiene dynamicFilters y es un array
|
|
322
|
+
if (component.dynamicFilters && Array.isArray(component.dynamicFilters)) {
|
|
323
|
+
// Verificar la posición 1 (que es un array)
|
|
324
|
+
if (component.dynamicFilters[1]) {
|
|
325
|
+
// Consultar la posición 0 para determinar si es equipo propio (1) o rival (2)
|
|
326
|
+
if (component.dynamicFilters[0] === 1) {
|
|
327
|
+
countEquipo += component.dynamicFilters[1]
|
|
328
|
+
} else if (component.dynamicFilters[0] === 2) {
|
|
329
|
+
countRival += component.dynamicFilters[1]
|
|
330
|
+
} else {
|
|
331
|
+
if (component.dynamicFilters[0] === 3) {
|
|
332
|
+
if (component.filterMultiple.isHomeTeam) {
|
|
333
|
+
countEquipo += component.dynamicFilters[1]
|
|
334
|
+
} else {
|
|
335
|
+
countRival += component.dynamicFilters[1]
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
console.log('CONTADOR FINAL DE FORTALEZAS: ', {
|
|
345
|
+
equipo: countEquipo,
|
|
346
|
+
rival: countRival,
|
|
347
|
+
total: countEquipo + countRival,
|
|
348
|
+
})
|
|
349
|
+
return {
|
|
350
|
+
equipo: countEquipo,
|
|
351
|
+
rival: countRival,
|
|
352
|
+
total: countEquipo + countRival,
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// Computed para verificar si tiene Fortalezas
|
|
357
|
+
const hasFortalezas = computed(() => tieneComponenteFortalezas())
|
|
358
|
+
|
|
359
|
+
// Computed para obtener los conteos de Fortalezas
|
|
360
|
+
const fortalezasCounts = computed(() => contarFortalezas())
|
|
361
|
+
|
|
362
|
+
// Computed para determinar el texto del tipo de reporte
|
|
363
|
+
const tipoReporteTexto = computed(() => {
|
|
364
|
+
if (!props.template || !props.template.template_type) {
|
|
365
|
+
return 'Prepartido' // Valor por defecto
|
|
366
|
+
}
|
|
367
|
+
return props.template.template_type === 1 ? 'Prepartido' : 'Postpartido'
|
|
368
|
+
})
|
|
369
|
+
|
|
370
|
+
// const hasCorners = false // OCULTO POR EL MOMENTO
|
|
371
|
+
// Estado del modal
|
|
372
|
+
const currentStep = ref(0) // 0 = configuración inicial, luego pasos dinámicos
|
|
373
|
+
const isTransitioning = ref(false)
|
|
374
|
+
|
|
375
|
+
// Modal de confirmación para regresar al paso 0
|
|
376
|
+
const showConfirmDialog = ref(false)
|
|
377
|
+
|
|
378
|
+
// Opciones seleccionadas para cada sección
|
|
379
|
+
const fortalezasOption = ref('manual')
|
|
380
|
+
const tirosEsquinaOption = ref('manual')
|
|
381
|
+
|
|
382
|
+
// Selecciones por vista
|
|
383
|
+
const selectedFortalezasEquipo = ref([])
|
|
384
|
+
const selectedFortalezasRival = ref([])
|
|
385
|
+
const selectedCornersEquipo = ref([])
|
|
386
|
+
const selectedCornersRival = ref([])
|
|
387
|
+
|
|
388
|
+
// Calcular el número total de pasos
|
|
389
|
+
const totalSteps = computed(() => {
|
|
390
|
+
let steps = 0
|
|
391
|
+
|
|
392
|
+
// Pasos de Fortalezas
|
|
393
|
+
if (hasFortalezas.value && fortalezasOption.value === 'manual') {
|
|
394
|
+
// Si hay fortalezas de equipo, agregar paso 1
|
|
395
|
+
if (fortalezasCounts.value.equipo > 0) {
|
|
396
|
+
steps += 1
|
|
397
|
+
}
|
|
398
|
+
// Si hay fortalezas de rival, agregar paso (será 2 si hay equipo, 1 si no hay)
|
|
399
|
+
if (fortalezasCounts.value.rival > 0) {
|
|
400
|
+
steps += 1
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// Pasos de Tiros de esquina - OCULTOS POR EL MOMENTO
|
|
405
|
+
// if (tirosEsquinaOption.value === 'manual') {
|
|
406
|
+
// steps += props.hasRival ? 2 : 1
|
|
407
|
+
// }
|
|
408
|
+
|
|
409
|
+
return Math.max(steps, 1)
|
|
410
|
+
})
|
|
411
|
+
|
|
412
|
+
// Verificar si se puede continuar al siguiente paso
|
|
413
|
+
const canContinue = computed(() => {
|
|
414
|
+
if (currentStep.value === 0) {
|
|
415
|
+
// Si no hay Fortalezas, no se puede continuar (tirosEsquina está oculto)
|
|
416
|
+
if (!hasFortalezas.value) {
|
|
417
|
+
return false
|
|
418
|
+
}
|
|
419
|
+
// Puede continuar si está en automático o en manual
|
|
420
|
+
return fortalezasOption.value === 'automatico' || fortalezasOption.value === 'manual'
|
|
421
|
+
}
|
|
422
|
+
const stepMap = buildStepMap()
|
|
423
|
+
const key = stepMap[currentStep.value]
|
|
424
|
+
|
|
425
|
+
if (key === 'fortalezasEquipo') {
|
|
426
|
+
const ref = fortalezasEquipoRef.value
|
|
427
|
+
if (!ref) return false
|
|
428
|
+
const selected = selectedFortalezasEquipo.value.length
|
|
429
|
+
const totalRequerido = fortalezasCounts.value.equipo
|
|
430
|
+
// Obtener el total de fortalezas disponibles del componente
|
|
431
|
+
const totalDisponibles = ref.fortalezasData?.length || 0
|
|
432
|
+
|
|
433
|
+
// Puede continuar si:
|
|
434
|
+
// 1. Selecciona el total exacto requerido
|
|
435
|
+
// 2. O si no hay suficientes disponibles, selecciona todos los disponibles
|
|
436
|
+
return (
|
|
437
|
+
selected === totalRequerido ||
|
|
438
|
+
(totalDisponibles > 0 && totalDisponibles < totalRequerido && selected === totalDisponibles)
|
|
439
|
+
)
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
if (key === 'fortalezasRival') {
|
|
443
|
+
const ref = fortalezasRivalRef.value
|
|
444
|
+
if (!ref) return false
|
|
445
|
+
const selected = selectedFortalezasRival.value.length
|
|
446
|
+
const totalRequerido = fortalezasCounts.value.rival
|
|
447
|
+
// Obtener el total de fortalezas disponibles del componente
|
|
448
|
+
const totalDisponibles = ref.fortalezasData?.length || 0
|
|
449
|
+
|
|
450
|
+
// Puede continuar si:
|
|
451
|
+
// 1. Selecciona el total exacto requerido
|
|
452
|
+
// 2. O si no hay suficientes disponibles, selecciona todos los disponibles
|
|
453
|
+
return (
|
|
454
|
+
selected === totalRequerido ||
|
|
455
|
+
(totalDisponibles > 0 && totalDisponibles < totalRequerido && selected === totalDisponibles)
|
|
456
|
+
)
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
// Pasos de corners ocultos
|
|
460
|
+
// if (key === 'cornersEquipo') return selectedCornersEquipo.value.length > 0
|
|
461
|
+
// if (key === 'cornersRival') return selectedCornersRival.value.length > 0
|
|
462
|
+
return false
|
|
463
|
+
})
|
|
464
|
+
|
|
465
|
+
function buildStepMap() {
|
|
466
|
+
const order = []
|
|
467
|
+
|
|
468
|
+
// Solo agregar pasos de Fortalezas si existen en el template y está en modo manual
|
|
469
|
+
if (hasFortalezas.value && fortalezasOption.value === 'manual') {
|
|
470
|
+
// Si hay fortalezas de equipo, agregar paso de equipo
|
|
471
|
+
if (fortalezasCounts.value.equipo > 0) {
|
|
472
|
+
order.push('fortalezasEquipo')
|
|
473
|
+
}
|
|
474
|
+
// Si hay fortalezas de rival, agregar paso de rival
|
|
475
|
+
if (fortalezasCounts.value.rival > 0) {
|
|
476
|
+
order.push('fortalezasRival')
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
// Pasos de Tiros de esquina - OCULTOS POR EL MOMENTO
|
|
481
|
+
// if (tirosEsquinaOption.value === 'manual') {
|
|
482
|
+
// order.push('cornersEquipo')
|
|
483
|
+
// if (props.hasRival) order.push('cornersRival')
|
|
484
|
+
// }
|
|
485
|
+
|
|
486
|
+
const map = {}
|
|
487
|
+
order.forEach((k, idx) => {
|
|
488
|
+
map[idx + 1] = k // pasos empiezan en 1
|
|
489
|
+
})
|
|
490
|
+
return map
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
// Referencias a los componentes
|
|
494
|
+
const fortalezasEquipoRef = ref(null)
|
|
495
|
+
const fortalezasRivalRef = ref(null)
|
|
496
|
+
const cornersEquipoRef = ref(null)
|
|
497
|
+
const cornersRivalRef = ref(null)
|
|
498
|
+
|
|
499
|
+
function closeModal() {
|
|
500
|
+
emit('close')
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
function goBack() {
|
|
504
|
+
if (currentStep.value > 1) {
|
|
505
|
+
// Si estamos en paso 2 o superior, solo regresar sin borrar selecciones
|
|
506
|
+
currentStep.value--
|
|
507
|
+
} else if (currentStep.value === 1) {
|
|
508
|
+
// Si estamos en paso 1 y vamos al paso 0, mostrar modal de confirmación
|
|
509
|
+
// Verificar si hay selecciones antes de mostrar el modal
|
|
510
|
+
const tieneSelecciones =
|
|
511
|
+
selectedFortalezasEquipo.value.length > 0 || selectedFortalezasRival.value.length > 0
|
|
512
|
+
|
|
513
|
+
if (tieneSelecciones) {
|
|
514
|
+
showConfirmDialog.value = true
|
|
515
|
+
} else {
|
|
516
|
+
// Si no hay selecciones, regresar directamente
|
|
517
|
+
currentStep.value--
|
|
518
|
+
}
|
|
519
|
+
} else {
|
|
520
|
+
// Si estamos en paso 0, emitir evento back
|
|
521
|
+
emit('back')
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
function confirmGoBackToStep0() {
|
|
526
|
+
// Limpiar todas las selecciones
|
|
527
|
+
selectedFortalezasEquipo.value = []
|
|
528
|
+
selectedFortalezasRival.value = []
|
|
529
|
+
selectedCornersEquipo.value = []
|
|
530
|
+
selectedCornersRival.value = []
|
|
531
|
+
|
|
532
|
+
// Cerrar el modal de confirmación
|
|
533
|
+
showConfirmDialog.value = false
|
|
534
|
+
|
|
535
|
+
// Regresar al paso 0
|
|
536
|
+
currentStep.value--
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
function cancelGoBack() {
|
|
540
|
+
// Cerrar el modal de confirmación sin hacer nada
|
|
541
|
+
showConfirmDialog.value = false
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
async function continueToNext() {
|
|
545
|
+
if (currentStep.value === 0) {
|
|
546
|
+
// Validar que al menos una opción esté seleccionada
|
|
547
|
+
if (!canContinue.value) {
|
|
548
|
+
return
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
// Si está en automático, finalizar directamente sin construir payload
|
|
552
|
+
if (fortalezasOption.value === 'automatico') {
|
|
553
|
+
// Emitir evento sin payload de strengths (se generarán automáticamente)
|
|
554
|
+
emit('next', {
|
|
555
|
+
fortalezas: fortalezasOption.value,
|
|
556
|
+
tirosEsquina: tirosEsquinaOption.value,
|
|
557
|
+
selectedFortalezasEquipo: [],
|
|
558
|
+
selectedFortalezasRival: [],
|
|
559
|
+
strengthsPayload: {}, // Payload vacío para modo automático
|
|
560
|
+
})
|
|
561
|
+
return
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
// Si es manual, avanzar al siguiente paso
|
|
565
|
+
// Animar transición
|
|
566
|
+
isTransitioning.value = true
|
|
567
|
+
setTimeout(() => {
|
|
568
|
+
currentStep.value++
|
|
569
|
+
isTransitioning.value = false
|
|
570
|
+
}, 300)
|
|
571
|
+
} else if (currentStep.value < totalSteps.value) {
|
|
572
|
+
// Avanzar al siguiente paso
|
|
573
|
+
isTransitioning.value = true
|
|
574
|
+
setTimeout(() => {
|
|
575
|
+
currentStep.value++
|
|
576
|
+
isTransitioning.value = false
|
|
577
|
+
}, 300)
|
|
578
|
+
} else {
|
|
579
|
+
// Esperar un tick para asegurar que los refs estén disponibles
|
|
580
|
+
await nextTick()
|
|
581
|
+
|
|
582
|
+
// Construir el payload de fortalezas antes de emitir
|
|
583
|
+
const strengthsPayload = buildStrengthsPayload()
|
|
584
|
+
console.log('Estructura de strengths emitida:', JSON.stringify(strengthsPayload, null, 2))
|
|
585
|
+
|
|
586
|
+
// Emitir evento con las opciones seleccionadas y el payload de fortalezas
|
|
587
|
+
emit('next', {
|
|
588
|
+
fortalezas: fortalezasOption.value,
|
|
589
|
+
tirosEsquina: tirosEsquinaOption.value,
|
|
590
|
+
selectedFortalezasEquipo: selectedFortalezasEquipo.value,
|
|
591
|
+
selectedFortalezasRival: selectedFortalezasRival.value,
|
|
592
|
+
strengthsPayload,
|
|
593
|
+
})
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
// Función para construir el payload de fortalezas según la estructura requerida
|
|
598
|
+
function buildStrengthsPayload() {
|
|
599
|
+
console.log('=== INICIANDO buildStrengthsPayload ===')
|
|
600
|
+
console.log('Template:', props.template)
|
|
601
|
+
console.log('Template pages:', props.template?.pages)
|
|
602
|
+
|
|
603
|
+
if (!props.template || !props.template.pages) {
|
|
604
|
+
console.warn('No hay template o pages')
|
|
605
|
+
return {}
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
const payload = {}
|
|
609
|
+
|
|
610
|
+
console.log('selectedFortalezasEquipo:', selectedFortalezasEquipo.value)
|
|
611
|
+
console.log('selectedFortalezasRival:', selectedFortalezasRival.value)
|
|
612
|
+
console.log('fortalezasEquipoRef:', fortalezasEquipoRef.value)
|
|
613
|
+
console.log('fortalezasRivalRef:', fortalezasRivalRef.value)
|
|
614
|
+
|
|
615
|
+
// Verificar si los refs están disponibles
|
|
616
|
+
let equipoRef = fortalezasEquipoRef.value
|
|
617
|
+
let rivalRef = fortalezasRivalRef.value
|
|
618
|
+
|
|
619
|
+
// Debug detallado de los refs
|
|
620
|
+
if (equipoRef) {
|
|
621
|
+
console.log('equipoRef keys:', Object.keys(equipoRef))
|
|
622
|
+
console.log('equipoRef.fortalezasRawData:', equipoRef.fortalezasRawData)
|
|
623
|
+
console.log('equipoRef.fortalezasRawData type:', typeof equipoRef.fortalezasRawData)
|
|
624
|
+
|
|
625
|
+
// Verificar si es un ref (tiene .value)
|
|
626
|
+
let rawDataEquipo = equipoRef.fortalezasRawData
|
|
627
|
+
if (rawDataEquipo && typeof rawDataEquipo === 'object' && 'value' in rawDataEquipo) {
|
|
628
|
+
console.log('⚠️ fortalezasRawData es un ref, usando .value')
|
|
629
|
+
rawDataEquipo = rawDataEquipo.value
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
console.log('rawDataEquipo después de verificar ref:', rawDataEquipo)
|
|
633
|
+
console.log('rawDataEquipo is array:', Array.isArray(rawDataEquipo))
|
|
634
|
+
if (Array.isArray(rawDataEquipo)) {
|
|
635
|
+
console.log('rawDataEquipo length:', rawDataEquipo.length)
|
|
636
|
+
if (rawDataEquipo.length > 0) {
|
|
637
|
+
console.log('Primer elemento equipoRef:', rawDataEquipo[0])
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
} else {
|
|
641
|
+
console.error('❌ equipoRef NO está disponible')
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
if (rivalRef) {
|
|
645
|
+
console.log('rivalRef keys:', Object.keys(rivalRef))
|
|
646
|
+
console.log('rivalRef.fortalezasRawData:', rivalRef.fortalezasRawData)
|
|
647
|
+
console.log('rivalRef.fortalezasRawData type:', typeof rivalRef.fortalezasRawData)
|
|
648
|
+
|
|
649
|
+
// Verificar si es un ref (tiene .value)
|
|
650
|
+
let rawDataRival = rivalRef.fortalezasRawData
|
|
651
|
+
if (rawDataRival && typeof rawDataRival === 'object' && 'value' in rawDataRival) {
|
|
652
|
+
console.log('⚠️ fortalezasRawData es un ref, usando .value')
|
|
653
|
+
rawDataRival = rawDataRival.value
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
console.log('rawDataRival después de verificar ref:', rawDataRival)
|
|
657
|
+
console.log('rawDataRival is array:', Array.isArray(rawDataRival))
|
|
658
|
+
if (Array.isArray(rawDataRival)) {
|
|
659
|
+
console.log('rawDataRival length:', rawDataRival.length)
|
|
660
|
+
if (rawDataRival.length > 0) {
|
|
661
|
+
console.log('Primer elemento rivalRef:', rawDataRival[0])
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
} else {
|
|
665
|
+
console.error('❌ rivalRef NO está disponible')
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
// Si los refs no están disponibles, podría ser que los componentes estén ocultos con v-show
|
|
669
|
+
if (!equipoRef && selectedFortalezasEquipo.value.length > 0) {
|
|
670
|
+
console.warn('⚠️ Ref de equipo no disponible, pero hay selecciones')
|
|
671
|
+
}
|
|
672
|
+
if (!rivalRef && selectedFortalezasRival.value.length > 0) {
|
|
673
|
+
console.warn('⚠️ Ref de rival no disponible, pero hay selecciones')
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
// Obtener todas las fortalezas seleccionadas ordenadas por su orden de selección
|
|
677
|
+
const fortalezasEquipoOrdenadas = getOrderedStrengths(selectedFortalezasEquipo.value, equipoRef)
|
|
678
|
+
const fortalezasRivalOrdenadas = getOrderedStrengths(selectedFortalezasRival.value, rivalRef)
|
|
679
|
+
|
|
680
|
+
console.log('fortalezasEquipoOrdenadas:', fortalezasEquipoOrdenadas)
|
|
681
|
+
console.log('fortalezasRivalOrdenadas:', fortalezasRivalOrdenadas)
|
|
682
|
+
|
|
683
|
+
// Contadores para rastrear qué fortalezas ya se han asignado
|
|
684
|
+
let indexEquipo = 0
|
|
685
|
+
let indexRival = 0
|
|
686
|
+
|
|
687
|
+
// Iterar sobre todas las páginas del template
|
|
688
|
+
props.template.pages.forEach((page, pageIndex) => {
|
|
689
|
+
const pageNumber = pageIndex + 1 // Los índices de página empiezan en 1
|
|
690
|
+
console.log(`\n=== Página ${pageNumber} ===`)
|
|
691
|
+
console.log('Page components:', page.components)
|
|
692
|
+
|
|
693
|
+
// Verificar si la página tiene components
|
|
694
|
+
if (page.components && Array.isArray(page.components)) {
|
|
695
|
+
// Buscar componentes Fortalezas - usar la misma condición que en contarFortalezas
|
|
696
|
+
page.components.forEach((component, componentIndex) => {
|
|
697
|
+
const esComponenteFortalezas =
|
|
698
|
+
component.componentName === 'GSCStrengths' ||
|
|
699
|
+
component.id === 15 ||
|
|
700
|
+
component.name === 'Fortalezas' ||
|
|
701
|
+
component.title === 'Fortalezas'
|
|
702
|
+
|
|
703
|
+
if (esComponenteFortalezas) {
|
|
704
|
+
const componentNumber = componentIndex + 1 // Los índices de componente empiezan en 1
|
|
705
|
+
console.log(
|
|
706
|
+
`\n--- Componente ${componentNumber} (Fortalezas) en página ${pageNumber} ---`,
|
|
707
|
+
)
|
|
708
|
+
console.log('Component:', component)
|
|
709
|
+
console.log('Component properties:', {
|
|
710
|
+
name: component.name,
|
|
711
|
+
title: component.title,
|
|
712
|
+
componentName: component.componentName,
|
|
713
|
+
id: component.id,
|
|
714
|
+
})
|
|
715
|
+
console.log('dynamicFilters:', component.dynamicFilters)
|
|
716
|
+
|
|
717
|
+
// Verificar dynamicFilters para determinar tipo y cantidad
|
|
718
|
+
if (component.dynamicFilters && Array.isArray(component.dynamicFilters)) {
|
|
719
|
+
const teamType = component.dynamicFilters[0] // 1 = equipo, 2 = rival, 3 = dinámico
|
|
720
|
+
const cantidadRequerida = component.dynamicFilters[1] || 0 // Cantidad de fortalezas necesarias
|
|
721
|
+
|
|
722
|
+
console.log(
|
|
723
|
+
`Tipo: ${teamType === 1 ? 'Equipo' : teamType === 2 ? 'Rival' : 'Dinámico (3)'}, Cantidad requerida: ${cantidadRequerida}`,
|
|
724
|
+
)
|
|
725
|
+
|
|
726
|
+
// Obtener las fortalezas según el tipo
|
|
727
|
+
let fortalezasAsignar = []
|
|
728
|
+
let fortalezasOrdenadas = []
|
|
729
|
+
let teamId = props.team
|
|
730
|
+
|
|
731
|
+
if (teamType === 1) {
|
|
732
|
+
// Fortalezas de equipo
|
|
733
|
+
fortalezasOrdenadas = fortalezasEquipoOrdenadas
|
|
734
|
+
console.log(
|
|
735
|
+
`Equipo: Total ordenadas=${fortalezasOrdenadas.length}, index=${indexEquipo}, cantidad requerida=${cantidadRequerida}`,
|
|
736
|
+
)
|
|
737
|
+
// Tomar las siguientes N fortalezas (donde N = cantidadRequerida)
|
|
738
|
+
if (fortalezasOrdenadas.length > indexEquipo) {
|
|
739
|
+
fortalezasAsignar = fortalezasOrdenadas.slice(
|
|
740
|
+
indexEquipo,
|
|
741
|
+
indexEquipo + cantidadRequerida,
|
|
742
|
+
)
|
|
743
|
+
console.log(
|
|
744
|
+
`Index equipo: ${indexEquipo}, tomando ${fortalezasAsignar.length} fortalezas de ${fortalezasOrdenadas.length} disponibles`,
|
|
745
|
+
)
|
|
746
|
+
} else {
|
|
747
|
+
console.warn(
|
|
748
|
+
`No hay suficientes fortalezas de equipo. Disponibles: ${fortalezasOrdenadas.length}, Necesarias desde índice: ${indexEquipo}`,
|
|
749
|
+
)
|
|
750
|
+
}
|
|
751
|
+
indexEquipo += cantidadRequerida
|
|
752
|
+
teamId = props.partido?.local || props.partido?.home_team || props.team
|
|
753
|
+
} else if (teamType === 2) {
|
|
754
|
+
// Fortalezas de rival
|
|
755
|
+
fortalezasOrdenadas = fortalezasRivalOrdenadas
|
|
756
|
+
console.log(
|
|
757
|
+
`Rival: Total ordenadas=${fortalezasOrdenadas.length}, index=${indexRival}, cantidad requerida=${cantidadRequerida}`,
|
|
758
|
+
)
|
|
759
|
+
// Tomar las siguientes N fortalezas (donde N = cantidadRequerida)
|
|
760
|
+
if (fortalezasOrdenadas.length > indexRival) {
|
|
761
|
+
fortalezasAsignar = fortalezasOrdenadas.slice(
|
|
762
|
+
indexRival,
|
|
763
|
+
indexRival + cantidadRequerida,
|
|
764
|
+
)
|
|
765
|
+
console.log(
|
|
766
|
+
`Index rival: ${indexRival}, tomando ${fortalezasAsignar.length} fortalezas de ${fortalezasOrdenadas.length} disponibles`,
|
|
767
|
+
)
|
|
768
|
+
} else {
|
|
769
|
+
console.warn(
|
|
770
|
+
`No hay suficientes fortalezas de rival. Disponibles: ${fortalezasOrdenadas.length}, Necesarias desde índice: ${indexRival}`,
|
|
771
|
+
)
|
|
772
|
+
}
|
|
773
|
+
indexRival += cantidadRequerida
|
|
774
|
+
teamId = props.partido?.visita || props.partido?.visiting_team
|
|
775
|
+
} else if (teamType === 3) {
|
|
776
|
+
// Tipo dinámico: depende de filterMultiple.isHomeTeam
|
|
777
|
+
if (component.filterMultiple && component.filterMultiple.isHomeTeam) {
|
|
778
|
+
// Es equipo
|
|
779
|
+
fortalezasOrdenadas = fortalezasEquipoOrdenadas
|
|
780
|
+
console.log(
|
|
781
|
+
`Dinámico (Equipo): Total ordenadas=${fortalezasOrdenadas.length}, index=${indexEquipo}, cantidad requerida=${cantidadRequerida}`,
|
|
782
|
+
)
|
|
783
|
+
if (fortalezasOrdenadas.length > indexEquipo) {
|
|
784
|
+
fortalezasAsignar = fortalezasOrdenadas.slice(
|
|
785
|
+
indexEquipo,
|
|
786
|
+
indexEquipo + cantidadRequerida,
|
|
787
|
+
)
|
|
788
|
+
console.log(
|
|
789
|
+
`Index equipo: ${indexEquipo}, tomando ${fortalezasAsignar.length} fortalezas de ${fortalezasOrdenadas.length} disponibles`,
|
|
790
|
+
)
|
|
791
|
+
} else {
|
|
792
|
+
console.warn(
|
|
793
|
+
`No hay suficientes fortalezas de equipo. Disponibles: ${fortalezasOrdenadas.length}, Necesarias desde índice: ${indexEquipo}`,
|
|
794
|
+
)
|
|
795
|
+
}
|
|
796
|
+
indexEquipo += cantidadRequerida
|
|
797
|
+
teamId = props.partido?.local || props.partido?.home_team || props.team
|
|
798
|
+
} else {
|
|
799
|
+
// Es rival
|
|
800
|
+
fortalezasOrdenadas = fortalezasRivalOrdenadas
|
|
801
|
+
console.log(
|
|
802
|
+
`Dinámico (Rival): Total ordenadas=${fortalezasOrdenadas.length}, index=${indexRival}, cantidad requerida=${cantidadRequerida}`,
|
|
803
|
+
)
|
|
804
|
+
if (fortalezasOrdenadas.length > indexRival) {
|
|
805
|
+
fortalezasAsignar = fortalezasOrdenadas.slice(
|
|
806
|
+
indexRival,
|
|
807
|
+
indexRival + cantidadRequerida,
|
|
808
|
+
)
|
|
809
|
+
console.log(
|
|
810
|
+
`Index rival: ${indexRival}, tomando ${fortalezasAsignar.length} fortalezas de ${fortalezasOrdenadas.length} disponibles`,
|
|
811
|
+
)
|
|
812
|
+
} else {
|
|
813
|
+
console.warn(
|
|
814
|
+
`No hay suficientes fortalezas de rival. Disponibles: ${fortalezasOrdenadas.length}, Necesarias desde índice: ${indexRival}`,
|
|
815
|
+
)
|
|
816
|
+
}
|
|
817
|
+
indexRival += cantidadRequerida
|
|
818
|
+
teamId = props.partido?.visita || props.partido?.visiting_team
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
console.log('fortalezasAsignar:', fortalezasAsignar)
|
|
823
|
+
|
|
824
|
+
// Si hay fortalezas para asignar, agregarlas al payload
|
|
825
|
+
if (fortalezasAsignar.length > 0) {
|
|
826
|
+
// Inicializar la estructura si no existe
|
|
827
|
+
if (!payload[pageNumber]) {
|
|
828
|
+
payload[pageNumber] = {}
|
|
829
|
+
}
|
|
830
|
+
if (!payload[pageNumber][componentNumber]) {
|
|
831
|
+
payload[pageNumber][componentNumber] = []
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
// Agregar las fortalezas con su información completa
|
|
835
|
+
fortalezasAsignar.forEach((strength, index) => {
|
|
836
|
+
payload[pageNumber][componentNumber].push({
|
|
837
|
+
team_id: teamId,
|
|
838
|
+
ranking_type: strength.ranking_type || 1,
|
|
839
|
+
precondition_id: strength.precondition_id || null,
|
|
840
|
+
order: index + 1,
|
|
841
|
+
name: strength.name,
|
|
842
|
+
category_type: strength.category_type || 1,
|
|
843
|
+
total: strength.total || 0,
|
|
844
|
+
is_relevant: strength.is_relevant || 0,
|
|
845
|
+
league_ranking: strength.league_ranking || 0,
|
|
846
|
+
categories: Array.isArray(strength.categories)
|
|
847
|
+
? strength.categories
|
|
848
|
+
: [strength.categories],
|
|
849
|
+
team_contribution: strength.team_contribution || 0,
|
|
850
|
+
})
|
|
851
|
+
})
|
|
852
|
+
console.log(
|
|
853
|
+
`✓ Agregadas ${fortalezasAsignar.length} fortalezas al payload para componente ${componentNumber} en página ${pageNumber}`,
|
|
854
|
+
)
|
|
855
|
+
console.log(
|
|
856
|
+
`Payload actual para página ${pageNumber}:`,
|
|
857
|
+
JSON.stringify(payload[pageNumber], null, 2),
|
|
858
|
+
)
|
|
859
|
+
} else {
|
|
860
|
+
console.warn(
|
|
861
|
+
`⚠️ No hay fortalezas para asignar al componente ${componentNumber} en página ${pageNumber}. IndexEquipo: ${indexEquipo}, IndexRival: ${indexRival}`,
|
|
862
|
+
)
|
|
863
|
+
}
|
|
864
|
+
} else {
|
|
865
|
+
console.warn(
|
|
866
|
+
`⚠️ Componente ${componentIndex + 1} en página ${pageNumber} no tiene dynamicFilters válido`,
|
|
867
|
+
)
|
|
868
|
+
console.warn('Component:', component)
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
})
|
|
872
|
+
console.log(
|
|
873
|
+
`\n✓ Página ${pageNumber} procesada. Componentes de Fortalezas encontrados y procesados.`,
|
|
874
|
+
)
|
|
875
|
+
}
|
|
876
|
+
})
|
|
877
|
+
|
|
878
|
+
console.log('\n=== PAYLOAD FINAL ===')
|
|
879
|
+
console.log(JSON.stringify(payload, null, 2))
|
|
880
|
+
return payload
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
// Función auxiliar para obtener las fortalezas en el mismo orden que fueron seleccionadas
|
|
884
|
+
// Los IDs ya vienen en el orden correcto, solo necesitamos obtener los objetos completos
|
|
885
|
+
function getOrderedStrengths(selectedIds, fortalezasViewRef) {
|
|
886
|
+
console.log('=== getOrderedStrengths INICIO ===')
|
|
887
|
+
console.log('selectedIds (orden de selección):', selectedIds)
|
|
888
|
+
console.log('fortalezasViewRef existe?:', !!fortalezasViewRef)
|
|
889
|
+
|
|
890
|
+
if (!selectedIds || selectedIds.length === 0) {
|
|
891
|
+
console.warn('No hay IDs seleccionados')
|
|
892
|
+
return []
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
if (!fortalezasViewRef) {
|
|
896
|
+
console.warn('Ref no disponible')
|
|
897
|
+
return []
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
// Obtener fortalezasRawData, verificando si es un ref
|
|
901
|
+
let fortalezasRawData = fortalezasViewRef.fortalezasRawData
|
|
902
|
+
if (!fortalezasRawData) {
|
|
903
|
+
console.warn('fortalezasRawData no está disponible en el ref')
|
|
904
|
+
return []
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
// Si es un ref, acceder a su .value
|
|
908
|
+
if (fortalezasRawData && typeof fortalezasRawData === 'object' && 'value' in fortalezasRawData) {
|
|
909
|
+
console.log('⚠️ fortalezasRawData es un ref, accediendo a .value')
|
|
910
|
+
fortalezasRawData = fortalezasRawData.value
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
if (!Array.isArray(fortalezasRawData)) {
|
|
914
|
+
console.warn('fortalezasRawData no es un array:', typeof fortalezasRawData, fortalezasRawData)
|
|
915
|
+
return []
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
if (fortalezasRawData.length === 0) {
|
|
919
|
+
console.warn('fortalezasRawData está vacío')
|
|
920
|
+
return []
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
console.log('fortalezasRawData length:', fortalezasRawData.length)
|
|
924
|
+
console.log('Primeras 2 fortalezas raw:', fortalezasRawData.slice(0, 2))
|
|
925
|
+
|
|
926
|
+
// Obtener las fortalezas en el mismo orden que fueron seleccionadas (sin reordenar)
|
|
927
|
+
// El orden ya está dado por selectedIds, solo necesitamos buscar y devolver el objeto completo
|
|
928
|
+
const selectedStrengths = selectedIds
|
|
929
|
+
.map((id) => {
|
|
930
|
+
console.log(`Buscando ID: ${id} (tipo: ${typeof id})`)
|
|
931
|
+
|
|
932
|
+
// Buscar en los datos raw por categories (que es el id que usamos)
|
|
933
|
+
const strength = fortalezasRawData.find((item) => {
|
|
934
|
+
// Comparar tanto como número como string
|
|
935
|
+
const match =
|
|
936
|
+
item.categories === id ||
|
|
937
|
+
item.categories === Number(id) ||
|
|
938
|
+
String(item.categories) === String(id)
|
|
939
|
+
if (!match && fortalezasRawData.indexOf(item) < 3) {
|
|
940
|
+
console.log(
|
|
941
|
+
` Comparando: item.categories=${item.categories} (${typeof item.categories}) vs id=${id} (${typeof id})`,
|
|
942
|
+
)
|
|
943
|
+
}
|
|
944
|
+
return match
|
|
945
|
+
})
|
|
946
|
+
|
|
947
|
+
if (strength) {
|
|
948
|
+
console.log(`✓ Encontrada: ${strength.name} (categories: ${strength.categories})`)
|
|
949
|
+
return strength
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
console.warn(`✗ No encontrada con categories = ${id}, intentando por id`)
|
|
953
|
+
// Intentar buscar también por id si categories no funciona
|
|
954
|
+
const strengthById = fortalezasRawData.find(
|
|
955
|
+
(item) => item.id === id || item.id === Number(id) || String(item.id) === String(id),
|
|
956
|
+
)
|
|
957
|
+
if (strengthById) {
|
|
958
|
+
console.log(`✓ Encontrada por id: ${strengthById.name}`)
|
|
959
|
+
return strengthById
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
console.error(`✗✗ No se encontró fortaleza con id/categories = ${id}`)
|
|
963
|
+
return null
|
|
964
|
+
})
|
|
965
|
+
.filter(Boolean) // Filtrar los que no se encontraron
|
|
966
|
+
|
|
967
|
+
console.log(
|
|
968
|
+
`selectedStrengths (${selectedStrengths.length} de ${selectedIds.length} encontradas):`,
|
|
969
|
+
selectedStrengths,
|
|
970
|
+
)
|
|
971
|
+
console.log('=== getOrderedStrengths FIN ===')
|
|
972
|
+
return selectedStrengths
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
function autocompletar() {
|
|
976
|
+
const stepMap = buildStepMap()
|
|
977
|
+
const key = stepMap[currentStep.value]
|
|
978
|
+
if (key === 'fortalezasEquipo' && fortalezasEquipoRef.value)
|
|
979
|
+
return fortalezasEquipoRef.value.autocompletar()
|
|
980
|
+
if (key === 'fortalezasRival' && fortalezasRivalRef.value)
|
|
981
|
+
return fortalezasRivalRef.value.autocompletar()
|
|
982
|
+
if (key === 'cornersEquipo' && cornersEquipoRef.value)
|
|
983
|
+
return cornersEquipoRef.value.autocompletar()
|
|
984
|
+
if (key === 'cornersRival' && cornersRivalRef.value) return cornersRivalRef.value.autocompletar()
|
|
985
|
+
}
|
|
986
|
+
</script>
|
|
987
|
+
|
|
988
|
+
<style scoped>
|
|
989
|
+
.modal-overlay {
|
|
990
|
+
position: fixed;
|
|
991
|
+
top: 0;
|
|
992
|
+
left: 0;
|
|
993
|
+
width: 100vw;
|
|
994
|
+
height: 100vh;
|
|
995
|
+
background: rgba(0, 0, 0, 0.45);
|
|
996
|
+
display: flex;
|
|
997
|
+
align-items: center;
|
|
998
|
+
justify-content: center;
|
|
999
|
+
z-index: 3300;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
.modal-content {
|
|
1003
|
+
width: 464px;
|
|
1004
|
+
background: #2e3b46;
|
|
1005
|
+
border-radius: 10px;
|
|
1006
|
+
box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.18);
|
|
1007
|
+
padding: 0;
|
|
1008
|
+
position: relative;
|
|
1009
|
+
display: flex;
|
|
1010
|
+
flex-direction: column;
|
|
1011
|
+
font-family: 'Poppins-Medium', 'Montserrat', sans-serif;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
/* Estilos del botón de cerrar removidos */
|
|
1015
|
+
|
|
1016
|
+
.header-separator {
|
|
1017
|
+
width: 100%;
|
|
1018
|
+
height: 1px;
|
|
1019
|
+
border-bottom: dashed 1px #58626b;
|
|
1020
|
+
margin: 12px 0 0 0;
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
.modal-header {
|
|
1024
|
+
display: flex;
|
|
1025
|
+
align-items: center;
|
|
1026
|
+
justify-content: space-between;
|
|
1027
|
+
padding: 20px 24px 0 24px;
|
|
1028
|
+
}
|
|
1029
|
+
|
|
1030
|
+
.header-left {
|
|
1031
|
+
display: flex;
|
|
1032
|
+
align-items: center;
|
|
1033
|
+
gap: 8px;
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
.step-counter {
|
|
1037
|
+
font-family: Poppins-Medium;
|
|
1038
|
+
font-size: 12px;
|
|
1039
|
+
font-weight: 500;
|
|
1040
|
+
color: rgba(255, 255, 255, 0.7);
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
.icon-title {
|
|
1044
|
+
width: 16px;
|
|
1045
|
+
height: 16px;
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
.modal-title {
|
|
1049
|
+
font-family: Poppins-Medium;
|
|
1050
|
+
font-size: 14px;
|
|
1051
|
+
font-weight: 500;
|
|
1052
|
+
font-stretch: normal;
|
|
1053
|
+
font-style: normal;
|
|
1054
|
+
line-height: 1.5;
|
|
1055
|
+
letter-spacing: normal;
|
|
1056
|
+
text-align: left;
|
|
1057
|
+
color: #fff;
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
.prepartido-text {
|
|
1061
|
+
font-family: 'Poppins-Regular', 'BebasNeue', sans-serif;
|
|
1062
|
+
font-weight: 400;
|
|
1063
|
+
opacity: 0.7;
|
|
1064
|
+
letter-spacing: 1px;
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
.modal-body {
|
|
1068
|
+
flex: 1;
|
|
1069
|
+
display: flex;
|
|
1070
|
+
flex-direction: column;
|
|
1071
|
+
padding: 12px 24px 0 24px;
|
|
1072
|
+
margin-bottom: 17px;
|
|
1073
|
+
margin-top: 5px;
|
|
1074
|
+
gap: 0;
|
|
1075
|
+
position: relative;
|
|
1076
|
+
overflow: hidden;
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
.step-content {
|
|
1080
|
+
transition: transform 0.3s ease-in-out;
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1083
|
+
.modal-body.transitioning .step-content {
|
|
1084
|
+
transform: translateX(-100%);
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
.fortalezas-view {
|
|
1088
|
+
transform: translateX(100%);
|
|
1089
|
+
animation: slideIn 0.3s ease-in-out forwards;
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
@keyframes slideIn {
|
|
1093
|
+
from {
|
|
1094
|
+
transform: translateX(100%);
|
|
1095
|
+
}
|
|
1096
|
+
to {
|
|
1097
|
+
transform: translateX(0);
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
.content-section {
|
|
1102
|
+
background: none;
|
|
1103
|
+
border: solid 1px rgba(255, 255, 255, 0.4);
|
|
1104
|
+
padding: 12px 20px 20px 20px;
|
|
1105
|
+
margin-bottom: 0;
|
|
1106
|
+
border-radius: 8px;
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
.content-section:first-child {
|
|
1110
|
+
margin-bottom: 20px;
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
.title-separator {
|
|
1114
|
+
width: 100%;
|
|
1115
|
+
height: 1px;
|
|
1116
|
+
border-top: 1px dashed rgba(255, 255, 255, 0.3);
|
|
1117
|
+
margin: 8px 0 12px 0;
|
|
1118
|
+
margin-left: -20px;
|
|
1119
|
+
margin-right: -20px;
|
|
1120
|
+
width: calc(100% + 40px);
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
.content-separator {
|
|
1124
|
+
width: 100%;
|
|
1125
|
+
height: 1px;
|
|
1126
|
+
border-top: 1px dashed rgba(255, 255, 255, 0.3);
|
|
1127
|
+
margin: 12px 0 16px 0;
|
|
1128
|
+
margin-left: -20px;
|
|
1129
|
+
margin-right: -20px;
|
|
1130
|
+
width: calc(100% + 40px);
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
.section-title {
|
|
1134
|
+
font-family: Poppins-Medium;
|
|
1135
|
+
font-size: 14px;
|
|
1136
|
+
font-weight: 600;
|
|
1137
|
+
opacity: 0.9;
|
|
1138
|
+
color: #fff;
|
|
1139
|
+
margin: 0 0 12px 0;
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
.section-description {
|
|
1143
|
+
font-family: Poppins-Regular;
|
|
1144
|
+
font-size: 12px;
|
|
1145
|
+
line-height: 1.4;
|
|
1146
|
+
opacity: 0.7;
|
|
1147
|
+
color: #fff;
|
|
1148
|
+
margin: 0 0 13px 0;
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
.radio-group {
|
|
1152
|
+
display: flex;
|
|
1153
|
+
gap: 24px;
|
|
1154
|
+
justify-content: center;
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
.radio-option {
|
|
1158
|
+
display: flex;
|
|
1159
|
+
align-items: center;
|
|
1160
|
+
gap: 8px;
|
|
1161
|
+
cursor: pointer;
|
|
1162
|
+
user-select: none;
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
.radio-option input[type='radio'] {
|
|
1166
|
+
display: none;
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
.radio-custom {
|
|
1170
|
+
width: 20px;
|
|
1171
|
+
height: 20px;
|
|
1172
|
+
border: 1px solid #fff;
|
|
1173
|
+
border-radius: 50%;
|
|
1174
|
+
position: relative;
|
|
1175
|
+
transition: all 0.2s ease;
|
|
1176
|
+
flex-shrink: 0;
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
.radio-option input[type='radio']:checked + .radio-custom {
|
|
1180
|
+
border-color: #fff; /* mantiene el aro blanco */
|
|
1181
|
+
background-color: transparent; /* sin relleno, solo punto central */
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
.radio-option input[type='radio']:checked + .radio-custom::after {
|
|
1185
|
+
content: '';
|
|
1186
|
+
position: absolute;
|
|
1187
|
+
top: 50%;
|
|
1188
|
+
left: 50%;
|
|
1189
|
+
transform: translate(-50%, -50%);
|
|
1190
|
+
width: 10px;
|
|
1191
|
+
height: 10px;
|
|
1192
|
+
background-color: #cbee6b; /* punto verde */
|
|
1193
|
+
border-radius: 50%;
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
/* Cuando el radio está seleccionado, la etiqueta pierde la opacidad */
|
|
1197
|
+
.radio-option input[type='radio']:checked + .radio-custom + .radio-label {
|
|
1198
|
+
opacity: 0.9;
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
.radio-label {
|
|
1202
|
+
font-family: Poppins-Regular;
|
|
1203
|
+
font-size: 13px;
|
|
1204
|
+
color: #fff;
|
|
1205
|
+
opacity: 0.7;
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
/* Estilos del separador removidos */
|
|
1209
|
+
|
|
1210
|
+
.modal-footer {
|
|
1211
|
+
display: flex;
|
|
1212
|
+
justify-content: space-between;
|
|
1213
|
+
align-items: center;
|
|
1214
|
+
padding: 0 24px 12px 24px;
|
|
1215
|
+
margin-top: 13px;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
.footer-actions {
|
|
1219
|
+
display: flex;
|
|
1220
|
+
align-items: center;
|
|
1221
|
+
}
|
|
1222
|
+
|
|
1223
|
+
.back-btn {
|
|
1224
|
+
background: none;
|
|
1225
|
+
border: none;
|
|
1226
|
+
color: #fff;
|
|
1227
|
+
font-size: 14px;
|
|
1228
|
+
font-family: Poppins-Medium;
|
|
1229
|
+
display: flex;
|
|
1230
|
+
align-items: center;
|
|
1231
|
+
gap: 4px;
|
|
1232
|
+
cursor: pointer;
|
|
1233
|
+
opacity: 0.7;
|
|
1234
|
+
padding: 8px 0;
|
|
1235
|
+
transition: opacity 0.2s;
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
.back-btn:hover {
|
|
1239
|
+
opacity: 1;
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
.cancel-btn {
|
|
1243
|
+
background: none;
|
|
1244
|
+
border: none;
|
|
1245
|
+
color: #b0bec5;
|
|
1246
|
+
font-size: 14.9px;
|
|
1247
|
+
font-family: Poppins-Medium;
|
|
1248
|
+
height: 30px;
|
|
1249
|
+
border-radius: 64px;
|
|
1250
|
+
display: flex;
|
|
1251
|
+
align-items: center;
|
|
1252
|
+
justify-content: center;
|
|
1253
|
+
cursor: pointer;
|
|
1254
|
+
padding: 0 18px;
|
|
1255
|
+
transition: color 0.2s;
|
|
1256
|
+
text-decoration: underline;
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
.cancel-btn:hover {
|
|
1260
|
+
color: #fff;
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
.next-btn {
|
|
1264
|
+
width: 107px;
|
|
1265
|
+
height: 30px;
|
|
1266
|
+
border-radius: 79.2px;
|
|
1267
|
+
-webkit-backdrop-filter: blur(19.8px);
|
|
1268
|
+
backdrop-filter: blur(19.8px);
|
|
1269
|
+
border: solid 1px #cbee6b;
|
|
1270
|
+
background-color: rgba(255, 255, 255, 0.06);
|
|
1271
|
+
font-family: Poppins-Medium;
|
|
1272
|
+
font-size: 14.9px;
|
|
1273
|
+
font-weight: 500;
|
|
1274
|
+
color: #fff;
|
|
1275
|
+
cursor: pointer;
|
|
1276
|
+
transition: background 0.2s;
|
|
1277
|
+
display: flex;
|
|
1278
|
+
align-items: center;
|
|
1279
|
+
justify-content: center;
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
.next-btn:hover {
|
|
1283
|
+
background-color: rgba(255, 255, 255, 0.12);
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
.next-btn.disabled {
|
|
1287
|
+
opacity: 0.5;
|
|
1288
|
+
cursor: not-allowed;
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
.next-btn.disabled:hover {
|
|
1292
|
+
background-color: rgba(255, 255, 255, 0.06);
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
/* Estilos para el modal de confirmación */
|
|
1296
|
+
.confirm-dialog {
|
|
1297
|
+
width: 380px;
|
|
1298
|
+
max-width: 90%;
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
/* Asegurar que el overlay del modal de confirmación esté por encima del modal principal */
|
|
1302
|
+
.modal-overlay:has(.confirm-dialog) {
|
|
1303
|
+
z-index: 3400;
|
|
1304
|
+
}
|
|
1305
|
+
|
|
1306
|
+
.confirm-dialog .modal-header {
|
|
1307
|
+
justify-content: center;
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
.confirm-dialog .modal-body {
|
|
1311
|
+
text-align: center;
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
.confirm-dialog-title {
|
|
1315
|
+
font-family: Poppins-Medium;
|
|
1316
|
+
font-size: 16px;
|
|
1317
|
+
font-weight: 500;
|
|
1318
|
+
color: #fff;
|
|
1319
|
+
margin: 0 0 12px 0;
|
|
1320
|
+
text-align: center;
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1323
|
+
.confirm-dialog-message {
|
|
1324
|
+
font-family: Poppins-Regular;
|
|
1325
|
+
font-size: 14px;
|
|
1326
|
+
color: rgba(255, 255, 255, 0.7);
|
|
1327
|
+
margin: 0;
|
|
1328
|
+
text-align: center;
|
|
1329
|
+
line-height: 1.5;
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1332
|
+
.confirm-dialog .modal-footer {
|
|
1333
|
+
justify-content: center;
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
.confirm-dialog .footer-actions {
|
|
1337
|
+
width: 100%;
|
|
1338
|
+
justify-content: center;
|
|
1339
|
+
gap: 12px;
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1342
|
+
/* Estilos para la vista de fortalezas movidos al componente FortalezasView.vue */
|
|
1343
|
+
</style>
|