@mtgame/core 0.0.53 → 0.0.55

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 (69) hide show
  1. package/api/football-game-api.d.ts +19 -0
  2. package/api/public-api.d.ts +1 -0
  3. package/api/tournament-api.d.ts +2 -0
  4. package/bundles/mtgame-core.umd.js +734 -45
  5. package/bundles/mtgame-core.umd.js.map +1 -1
  6. package/bundles/mtgame-core.umd.min.js +2 -2
  7. package/bundles/mtgame-core.umd.min.js.map +1 -1
  8. package/esm2015/api/football-game-api.js +70 -0
  9. package/esm2015/api/public-api.js +2 -1
  10. package/esm2015/api/tournament-api.js +18 -1
  11. package/esm2015/localization/football-game-log-types.js +29 -0
  12. package/esm2015/localization/overtime-types.js +4 -2
  13. package/esm2015/localization/public-api.js +2 -1
  14. package/esm2015/localization/user-profile.js +13 -1
  15. package/esm2015/models/football-game-config.js +34 -0
  16. package/esm2015/models/football-game-log.js +94 -0
  17. package/esm2015/models/football-game-statistic.js +129 -0
  18. package/esm2015/models/football-game-team-statistic.js +27 -0
  19. package/esm2015/models/football-profile.js +43 -0
  20. package/esm2015/models/football-statistic.js +92 -0
  21. package/esm2015/models/game.js +4 -1
  22. package/esm2015/models/hockey-statistic.js +8 -1
  23. package/esm2015/models/public-api.js +7 -1
  24. package/esm2015/models/sport.js +13 -1
  25. package/esm2015/models/team.js +4 -1
  26. package/esm2015/models/tournament.js +6 -1
  27. package/esm2015/models/user.js +4 -1
  28. package/esm5/api/football-game-api.js +85 -0
  29. package/esm5/api/public-api.js +2 -1
  30. package/esm5/api/tournament-api.js +32 -1
  31. package/esm5/localization/football-game-log-types.js +30 -0
  32. package/esm5/localization/overtime-types.js +3 -1
  33. package/esm5/localization/public-api.js +2 -1
  34. package/esm5/localization/user-profile.js +14 -2
  35. package/esm5/models/football-game-config.js +39 -0
  36. package/esm5/models/football-game-log.js +101 -0
  37. package/esm5/models/football-game-statistic.js +206 -0
  38. package/esm5/models/football-game-team-statistic.js +32 -0
  39. package/esm5/models/football-profile.js +48 -0
  40. package/esm5/models/football-statistic.js +101 -0
  41. package/esm5/models/game.js +4 -1
  42. package/esm5/models/hockey-statistic.js +12 -1
  43. package/esm5/models/public-api.js +7 -1
  44. package/esm5/models/sport.js +13 -1
  45. package/esm5/models/team.js +4 -1
  46. package/esm5/models/tournament.js +6 -1
  47. package/esm5/models/user.js +4 -1
  48. package/fesm2015/mtgame-core.js +539 -2
  49. package/fesm2015/mtgame-core.js.map +1 -1
  50. package/fesm5/mtgame-core.js +724 -45
  51. package/fesm5/mtgame-core.js.map +1 -1
  52. package/localization/football-game-log-types.d.ts +28 -0
  53. package/localization/overtime-types.d.ts +2 -0
  54. package/localization/public-api.d.ts +1 -0
  55. package/localization/user-profile.d.ts +12 -0
  56. package/models/football-game-config.d.ts +15 -0
  57. package/models/football-game-log.d.ts +53 -0
  58. package/models/football-game-statistic.d.ts +55 -0
  59. package/models/football-game-team-statistic.d.ts +8 -0
  60. package/models/football-profile.d.ts +20 -0
  61. package/models/football-statistic.d.ts +64 -0
  62. package/models/game.d.ts +2 -0
  63. package/models/hockey-statistic.d.ts +2 -0
  64. package/models/public-api.d.ts +6 -0
  65. package/models/sport.d.ts +7 -1
  66. package/models/tournament.d.ts +3 -1
  67. package/models/user.d.ts +2 -0
  68. package/mtgame-core.metadata.json +1 -1
  69. package/package.json +1 -1
@@ -336,6 +336,9 @@ var SportTypes;
336
336
  SportTypes[SportTypes["hockey"] = 7] = "hockey";
337
337
  SportTypes[SportTypes["ice_hockey"] = 8] = "ice_hockey";
338
338
  SportTypes[SportTypes["ball_hockey"] = 9] = "ball_hockey";
339
+ SportTypes[SportTypes["football"] = 10] = "football";
340
+ SportTypes[SportTypes["classic_football"] = 11] = "classic_football";
341
+ SportTypes[SportTypes["mini_football"] = 12] = "mini_football";
339
342
  })(SportTypes || (SportTypes = {}));
340
343
  let Sport = class Sport extends BaseModel {
341
344
  isBasketball() {
@@ -365,6 +368,15 @@ let Sport = class Sport extends BaseModel {
365
368
  isBallHockey() {
366
369
  return this.id === SportTypes.ball_hockey;
367
370
  }
371
+ isFootball() {
372
+ return this.id === SportTypes.football || this.parentId === SportTypes.football;
373
+ }
374
+ isClassicFootball() {
375
+ return this.id === SportTypes.classic_football;
376
+ }
377
+ isMiniFootball() {
378
+ return this.id === SportTypes.mini_football;
379
+ }
368
380
  static toFront(data) {
369
381
  return null;
370
382
  }
@@ -547,6 +559,46 @@ HockeyProfile = __decorate([
547
559
  })
548
560
  ], HockeyProfile);
549
561
 
562
+ var GameFootballPosition;
563
+ (function (GameFootballPosition) {
564
+ GameFootballPosition[GameFootballPosition["defensemen"] = 1] = "defensemen";
565
+ GameFootballPosition[GameFootballPosition["midfielder"] = 2] = "midfielder";
566
+ GameFootballPosition[GameFootballPosition["forward"] = 3] = "forward";
567
+ GameFootballPosition[GameFootballPosition["goalkeeper"] = 4] = "goalkeeper";
568
+ })(GameFootballPosition || (GameFootballPosition = {}));
569
+ var FootballWorkFoot;
570
+ (function (FootballWorkFoot) {
571
+ FootballWorkFoot[FootballWorkFoot["left"] = 1] = "left";
572
+ FootballWorkFoot[FootballWorkFoot["right"] = 2] = "right";
573
+ FootballWorkFoot[FootballWorkFoot["both"] = 3] = "both";
574
+ })(FootballWorkFoot || (FootballWorkFoot = {}));
575
+ let FootballProfile = class FootballProfile extends BaseModel {
576
+ static toFront(value) {
577
+ }
578
+ static toBack(value) {
579
+ }
580
+ };
581
+ __decorate([
582
+ ToFrontHook
583
+ ], FootballProfile, "toFront", null);
584
+ __decorate([
585
+ ToBackHook
586
+ ], FootballProfile, "toBack", null);
587
+ FootballProfile = __decorate([
588
+ ModelInstance({
589
+ mappingFields: {
590
+ id: 'id',
591
+ user_id: 'userId',
592
+ position: 'position',
593
+ work_foot: 'workFoot'
594
+ },
595
+ relation: {
596
+ position: enumField(GameFootballPosition),
597
+ workFoot: enumField(FootballWorkFoot)
598
+ }
599
+ })
600
+ ], FootballProfile);
601
+
550
602
  var UserGender;
551
603
  (function (UserGender) {
552
604
  UserGender[UserGender["male"] = 1] = "male";
@@ -597,6 +649,7 @@ User = __decorate([
597
649
  basketball_profile: 'basketballProfile',
598
650
  volleyball_profile: 'volleyballProfile',
599
651
  hockey_profile: 'hockeyProfile',
652
+ football_profile: 'footballProfile',
600
653
  wizards: 'wizards',
601
654
  city: 'city',
602
655
  gender: 'gender',
@@ -609,6 +662,7 @@ User = __decorate([
609
662
  basketballProfile: BasketballProfile,
610
663
  volleyballProfile: VolleyballProfile,
611
664
  hockeyProfile: HockeyProfile,
665
+ footballProfile: FootballProfile,
612
666
  city: City,
613
667
  gender: enumField(UserGender)
614
668
  }
@@ -627,6 +681,9 @@ let Team = class Team extends BaseModel {
627
681
  if (this.sport.isHockey()) {
628
682
  classList.push('empty-logo-hockey');
629
683
  }
684
+ if (this.sport.isFootball()) {
685
+ classList.push('empty-logo-football');
686
+ }
630
687
  return classList.join(' ');
631
688
  }
632
689
  static toFront(data) {
@@ -821,6 +878,8 @@ var OvertimeTypes;
821
878
  OvertimeTypes[OvertimeTypes["to_first_goal"] = 5] = "to_first_goal";
822
879
  OvertimeTypes[OvertimeTypes["to_first_goal_and_bullitts"] = 6] = "to_first_goal_and_bullitts";
823
880
  OvertimeTypes[OvertimeTypes["bullitts"] = 7] = "bullitts";
881
+ OvertimeTypes[OvertimeTypes["penalties"] = 8] = "penalties";
882
+ OvertimeTypes[OvertimeTypes["time_and_penalties"] = 9] = "time_and_penalties";
824
883
  })(OvertimeTypes || (OvertimeTypes = {}));
825
884
  let TournamentSettings = class TournamentSettings extends BaseModel {
826
885
  static toFront(data) { }
@@ -910,6 +969,9 @@ let Tournament = class Tournament extends BaseModel {
910
969
  if (this.sport.isHockey()) {
911
970
  classList.push('empty-logo-hockey');
912
971
  }
972
+ if (this.sport.isFootball()) {
973
+ classList.push('empty-logo-football');
974
+ }
913
975
  return classList.join(' ');
914
976
  }
915
977
  static toFront(data) { }
@@ -1128,6 +1190,36 @@ HockeyGameConfig = __decorate([
1128
1190
  })
1129
1191
  ], HockeyGameConfig);
1130
1192
 
1193
+ let FootballGameConfig = class FootballGameConfig extends BaseModel {
1194
+ static toFront(data) { }
1195
+ static toBack(data) { }
1196
+ };
1197
+ __decorate([
1198
+ ToFrontHook
1199
+ ], FootballGameConfig, "toFront", null);
1200
+ __decorate([
1201
+ ToBackHook
1202
+ ], FootballGameConfig, "toBack", null);
1203
+ FootballGameConfig = __decorate([
1204
+ ModelInstance({
1205
+ mappingFields: {
1206
+ periods_count: 'periodsCount',
1207
+ period_time: 'periodTime',
1208
+ overtime_type: 'overtimeType',
1209
+ overtime_time: 'overtimeTime',
1210
+ max_game_players: 'maxGamePlayers',
1211
+ timeout_count: 'timeoutCount',
1212
+ overtime_timeout_count: 'overtimeTimeoutCount',
1213
+ timeout_time: 'timeoutTime',
1214
+ game_time_type: 'gameTimeType',
1215
+ },
1216
+ relation: {
1217
+ overtimeType: enumField(OvertimeTypes),
1218
+ gameTimeType: enumField(GameTimeTypes),
1219
+ }
1220
+ })
1221
+ ], FootballGameConfig);
1222
+
1131
1223
  var GameStatuses;
1132
1224
  (function (GameStatuses) {
1133
1225
  GameStatuses[GameStatuses["open"] = 1] = "open";
@@ -1209,6 +1301,7 @@ Game = __decorate([
1209
1301
  basketball_game_config: 'basketballGameConfig',
1210
1302
  volleyball_game_config: 'volleyballGameConfig',
1211
1303
  hockey_game_config: 'hockeyGameConfig',
1304
+ football_game_config: 'footballGameConfig',
1212
1305
  score_by_period: 'scoreByPeriod',
1213
1306
  playoff_stage: 'playoffStage',
1214
1307
  tournament_stage_id: 'tournamentStageId',
@@ -1228,6 +1321,7 @@ Game = __decorate([
1228
1321
  basketballGameConfig: BasketballGameConfig,
1229
1322
  volleyballGameConfig: VolleyballGameConfig,
1230
1323
  hockeyGameConfig: HockeyGameConfig,
1324
+ footballGameConfig: FootballGameConfig,
1231
1325
  tournamentCourt: LeagueCourt,
1232
1326
  media: listField(MediaItem),
1233
1327
  tournament: Tournament,
@@ -2231,6 +2325,12 @@ let HockeyStatistic = class HockeyStatistic extends BaseStatistic {
2231
2325
  const seconds = Math.floor(this.gameTime - minutes * 60);
2232
2326
  return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;
2233
2327
  }
2328
+ get gamesWonPercent() {
2329
+ if (!this.gamesCount) {
2330
+ return 0;
2331
+ }
2332
+ return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;
2333
+ }
2234
2334
  static toFront(data) { }
2235
2335
  static toBack(data) { }
2236
2336
  };
@@ -2252,6 +2352,7 @@ HockeyStatistic = __decorate([
2252
2352
  win_lose: 'winLose',
2253
2353
  games_count: 'gamesCount',
2254
2354
  won_games_count: 'wonGamesCount',
2355
+ lose_games_count: 'loseGamesCount',
2255
2356
  points: 'points',
2256
2357
  pp_shots: 'ppShots',
2257
2358
  pp_shot_misses: 'ppShotMisses',
@@ -2387,6 +2488,385 @@ HockeyGameApi = __decorate([
2387
2488
  Injectable({ providedIn: 'root' })
2388
2489
  ], HockeyGameApi);
2389
2490
 
2491
+ var FootballGameLogTypes;
2492
+ (function (FootballGameLogTypes) {
2493
+ FootballGameLogTypes[FootballGameLogTypes["enter_game"] = 1] = "enter_game";
2494
+ FootballGameLogTypes[FootballGameLogTypes["exit_game"] = 2] = "exit_game";
2495
+ FootballGameLogTypes[FootballGameLogTypes["shot_miss"] = 3] = "shot_miss";
2496
+ FootballGameLogTypes[FootballGameLogTypes["shot_on_goal"] = 4] = "shot_on_goal";
2497
+ FootballGameLogTypes[FootballGameLogTypes["shot_blocked"] = 5] = "shot_blocked";
2498
+ FootballGameLogTypes[FootballGameLogTypes["goal"] = 6] = "goal";
2499
+ FootballGameLogTypes[FootballGameLogTypes["penalty_attempt"] = 7] = "penalty_attempt";
2500
+ FootballGameLogTypes[FootballGameLogTypes["penalty_goal"] = 8] = "penalty_goal";
2501
+ FootballGameLogTypes[FootballGameLogTypes["penalty_save"] = 9] = "penalty_save";
2502
+ FootballGameLogTypes[FootballGameLogTypes["small_penalty_attempt"] = 10] = "small_penalty_attempt";
2503
+ FootballGameLogTypes[FootballGameLogTypes["small_penalty_goal"] = 11] = "small_penalty_goal";
2504
+ FootballGameLogTypes[FootballGameLogTypes["small_penalty_save"] = 12] = "small_penalty_save";
2505
+ FootballGameLogTypes[FootballGameLogTypes["assist"] = 13] = "assist";
2506
+ FootballGameLogTypes[FootballGameLogTypes["block_shot"] = 14] = "block_shot";
2507
+ FootballGameLogTypes[FootballGameLogTypes["corner"] = 15] = "corner";
2508
+ FootballGameLogTypes[FootballGameLogTypes["free_kick"] = 16] = "free_kick";
2509
+ FootballGameLogTypes[FootballGameLogTypes["foul"] = 17] = "foul";
2510
+ FootballGameLogTypes[FootballGameLogTypes["save"] = 18] = "save";
2511
+ FootballGameLogTypes[FootballGameLogTypes["yellow_card"] = 19] = "yellow_card";
2512
+ FootballGameLogTypes[FootballGameLogTypes["red_card"] = 20] = "red_card";
2513
+ FootballGameLogTypes[FootballGameLogTypes["perfect_pass"] = 21] = "perfect_pass";
2514
+ FootballGameLogTypes[FootballGameLogTypes["loss"] = 22] = "loss";
2515
+ FootballGameLogTypes[FootballGameLogTypes["steal"] = 23] = "steal";
2516
+ FootballGameLogTypes[FootballGameLogTypes["out"] = 24] = "out";
2517
+ FootballGameLogTypes[FootballGameLogTypes["timeout"] = 25] = "timeout";
2518
+ })(FootballGameLogTypes || (FootballGameLogTypes = {}));
2519
+ let FootballGameLog = class FootballGameLog extends BaseModel {
2520
+ constructor() {
2521
+ super(...arguments);
2522
+ this.active = true;
2523
+ }
2524
+ compare(model) {
2525
+ if (this.time === model.time && this.period === model.period) {
2526
+ return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;
2527
+ }
2528
+ if (this.period === model.period) {
2529
+ return this.time < model.time ? 1 : -1;
2530
+ }
2531
+ return this.period < model.period ? 1 : -1;
2532
+ }
2533
+ get timeFormatted() {
2534
+ const minutes = Math.floor(this.time / 60);
2535
+ const seconds = this.time - minutes * 60;
2536
+ return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;
2537
+ }
2538
+ isScoreType() {
2539
+ return [FootballGameLogTypes.goal, FootballGameLogTypes.penalty_goal, FootballGameLogTypes.small_penalty_goal].indexOf(this.logType) > -1;
2540
+ }
2541
+ isAfter(log) {
2542
+ if (this.time === log.time && this.period === log.period) {
2543
+ return this.id > log.id;
2544
+ }
2545
+ if (this.period === log.period) {
2546
+ return this.time > log.time;
2547
+ }
2548
+ return this.period > log.period;
2549
+ }
2550
+ static toFront(value) { }
2551
+ static toBack(value) { }
2552
+ };
2553
+ __decorate([
2554
+ ToFrontHook
2555
+ ], FootballGameLog, "toFront", null);
2556
+ __decorate([
2557
+ ToBackHook
2558
+ ], FootballGameLog, "toBack", null);
2559
+ FootballGameLog = __decorate([
2560
+ ModelInstance({
2561
+ mappingFields: {
2562
+ id: 'id',
2563
+ unique_id: 'uniqueId',
2564
+ game_id: 'gameId',
2565
+ game_user_id: 'gameUserId',
2566
+ team_id: 'teamId',
2567
+ log_type: 'logType',
2568
+ datetime: 'datetime',
2569
+ time: 'time',
2570
+ period: 'period',
2571
+ active: 'active',
2572
+ is_highlight: 'isHighlight',
2573
+ is_goalie: 'isGoalie',
2574
+ },
2575
+ relation: {
2576
+ datetime: DateTimeField,
2577
+ logType: enumField(FootballGameLogTypes)
2578
+ }
2579
+ })
2580
+ ], FootballGameLog);
2581
+
2582
+ let FootballGameStatistic = class FootballGameStatistic extends BaseModel {
2583
+ get id() {
2584
+ return this.gameUserId;
2585
+ }
2586
+ get shots() {
2587
+ return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);
2588
+ }
2589
+ get totalGoals() {
2590
+ return (this.goals || 0) + (this.penaltyGoals || 0) + (this.smallPenaltyGoals || 0);
2591
+ }
2592
+ get goalsPercent() {
2593
+ if (!this.shots || !this.totalGoals) {
2594
+ return 0;
2595
+ }
2596
+ return Math.round(1000 * this.totalGoals / this.shots) / 10;
2597
+ }
2598
+ get shotsOnGoalPercent() {
2599
+ if (!this.shotsOnGoal || !this.shots) {
2600
+ return 0;
2601
+ }
2602
+ return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;
2603
+ }
2604
+ get penalties() {
2605
+ return (this.penaltyGoals || 0) + (this.penaltyAttempts || 0);
2606
+ }
2607
+ get penaltyGoalsPercent() {
2608
+ if (!this.penaltyAttempts || !this.penaltyGoals) {
2609
+ return 0;
2610
+ }
2611
+ return Math.round(1000 * this.penaltyGoals / this.penaltyAttempts) / 10;
2612
+ }
2613
+ get smallPenalties() {
2614
+ return (this.smallPenaltyGoals || 0) + (this.smallPenaltyAttempts || 0);
2615
+ }
2616
+ get smallPenaltyGoalsPercent() {
2617
+ if (!this.smallPenaltyAttempts || !this.smallPenaltyGoals) {
2618
+ return 0;
2619
+ }
2620
+ return Math.round(1000 * this.smallPenaltyGoals / this.smallPenaltyAttempts) / 10;
2621
+ }
2622
+ get shotsAgainst() {
2623
+ return (this.saves || 0) + (this.goalsAgainst || 0);
2624
+ }
2625
+ get penaltyShotsAgainst() {
2626
+ return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);
2627
+ }
2628
+ get smallPenaltyShotsAgainst() {
2629
+ return (this.smallPenaltySaves || 0) + (this.smallPenaltyGoalsAgainst || 0);
2630
+ }
2631
+ get totalGoalsAgainst() {
2632
+ return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0) + (this.smallPenaltyGoalsAgainst || 0);
2633
+ }
2634
+ get totalSaves() {
2635
+ return (this.saves || 0) + (this.penaltySaves || 0) + (this.smallPenaltySaves || 0);
2636
+ }
2637
+ get savesPercent() {
2638
+ if (!this.shotsAgainst || !this.saves) {
2639
+ return 0;
2640
+ }
2641
+ return Math.round(1000 * this.saves / this.shotsAgainst) / 10;
2642
+ }
2643
+ get penaltySavesPercent() {
2644
+ if (!this.penaltyShotsAgainst || !this.penaltySaves) {
2645
+ return 0;
2646
+ }
2647
+ return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;
2648
+ }
2649
+ get smallPenaltySavesPercent() {
2650
+ if (!this.smallPenaltyShotsAgainst || !this.smallPenaltySaves) {
2651
+ return 0;
2652
+ }
2653
+ return Math.round(1000 * this.smallPenaltySaves / this.smallPenaltyShotsAgainst) / 10;
2654
+ }
2655
+ get gameMinutes() {
2656
+ return Math.floor(this.gameTime / 60);
2657
+ }
2658
+ static toFront(data) { }
2659
+ static toBack(data) { }
2660
+ };
2661
+ __decorate([
2662
+ ToFrontHook
2663
+ ], FootballGameStatistic, "toFront", null);
2664
+ __decorate([
2665
+ ToBackHook
2666
+ ], FootballGameStatistic, "toBack", null);
2667
+ FootballGameStatistic = __decorate([
2668
+ ModelInstance({
2669
+ mappingFields: {
2670
+ game_user_id: 'gameUserId',
2671
+ updated_at: 'updatedAt',
2672
+ points: 'points',
2673
+ shot_misses: 'shotMisses',
2674
+ shots_on_goal: 'shotsOnGoal',
2675
+ shots_blocked: 'shotsBlocked',
2676
+ goals: 'goals',
2677
+ assists: 'assists',
2678
+ corners: 'corners',
2679
+ free_kicks: 'freeKicks',
2680
+ penalty_goals: 'penaltyGoals',
2681
+ penalty_attempts: 'penaltyAttempts',
2682
+ penalty_goals_against: 'penaltyGoalsAgainst',
2683
+ penalty_saves: 'penaltySaves',
2684
+ small_penalty_goals: 'smallPenaltyGoals',
2685
+ small_penalty_attempts: 'smallPenaltyAttempts',
2686
+ small_penalty_goals_against: 'smallPenaltyGoalsAgainst',
2687
+ small_penalty_saves: 'smallPenaltySaves',
2688
+ saves: 'saves',
2689
+ goals_against: 'goalsAgainst',
2690
+ safety_rate: 'safetyRate',
2691
+ game_time: 'gameTime',
2692
+ plus_minus: 'plusMinus',
2693
+ fouls: 'fouls',
2694
+ yellow_cards: 'yellowCards',
2695
+ red_cards: 'redCards',
2696
+ perfect_passes: 'perfectPasses',
2697
+ losses: 'losses',
2698
+ steals: 'steals',
2699
+ outs: 'outs',
2700
+ block_shots: 'blockShots'
2701
+ },
2702
+ relation: {
2703
+ updatedAt: DateTimeField,
2704
+ }
2705
+ })
2706
+ ], FootballGameStatistic);
2707
+
2708
+ let FootballStatistic = class FootballStatistic extends BaseStatistic {
2709
+ get userMinutes() {
2710
+ const minutes = Math.floor(this.gameTime / 60);
2711
+ const seconds = Math.floor(this.gameTime - minutes * 60);
2712
+ return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;
2713
+ }
2714
+ static toFront(data) { }
2715
+ static toBack(data) { }
2716
+ };
2717
+ __decorate([
2718
+ ToFrontHook
2719
+ ], FootballStatistic, "toFront", null);
2720
+ __decorate([
2721
+ ToBackHook
2722
+ ], FootballStatistic, "toBack", null);
2723
+ FootballStatistic = __decorate([
2724
+ ModelInstance({
2725
+ mappingFields: {
2726
+ tournament_team_user: 'tournamentTeamUser',
2727
+ team: 'team',
2728
+ team_user: 'teamUser',
2729
+ user: 'user',
2730
+ tournament_team: 'tournamentTeam',
2731
+ month: 'month',
2732
+ win_lose: 'winLose',
2733
+ games_count: 'gamesCount',
2734
+ won_games_count: 'wonGamesCount',
2735
+ points: 'points',
2736
+ shot_misses: 'shotMisses',
2737
+ shots_on_goal: 'shotsOnGoal',
2738
+ shots_blocked: 'shotsBlocked',
2739
+ shots_on_goal_percent: 'shotsOnGoalPercent',
2740
+ shots: 'shots',
2741
+ goals: 'goals',
2742
+ goals_percent: 'goalsPercent',
2743
+ total_goals: 'totalGoals',
2744
+ assists: 'assists',
2745
+ penalty_goals: 'penaltyGoals',
2746
+ penalty_attempts: 'penaltyAttempts',
2747
+ penalty_goals_percent: 'penaltyGoalsPercent',
2748
+ penalty_saves: 'penaltySaves',
2749
+ penalty_goals_against: 'penaltyGoalsAgainst',
2750
+ penalty_shots_against: 'penaltyShotsAgainst',
2751
+ penalty_saves_percent: 'penaltySavesPercent',
2752
+ small_penalty_goals: 'smallPenaltyGoals',
2753
+ small_penalty_attempts: 'smallPenaltyAttempts',
2754
+ small_penalty_goals_percent: 'smallPenaltyGoalsPercent',
2755
+ small_penalty_saves: 'smallPenaltySaves',
2756
+ small_penalty_goals_against: 'smallPenaltyGoalsAgainst',
2757
+ small_penalty_shots_against: 'smallPenaltyShotsAgainst',
2758
+ small_penalty_saves_percent: 'smallPenaltySavesPercent',
2759
+ saves: 'saves',
2760
+ saves_percent: 'savesPercent',
2761
+ total_saves: 'totalSaves',
2762
+ goals_against: 'goalsAgainst',
2763
+ total_goals_against: 'totalGoalsAgainst',
2764
+ shots_against: 'shotsAgainst',
2765
+ safety_rate: 'safetyRate',
2766
+ fouls: 'fouls',
2767
+ yellow_cards: 'yellowCards',
2768
+ red_cards: 'redCards',
2769
+ perfect_passes: 'perfectPasses',
2770
+ losses: 'losses',
2771
+ steals: 'steals',
2772
+ outs: 'outs',
2773
+ block_shots: 'blockShots',
2774
+ corners: 'corners',
2775
+ free_kicks: 'freeKicks',
2776
+ game_time: 'gameTime',
2777
+ plus_minus: 'plusMinus',
2778
+ newbie: 'newbie'
2779
+ },
2780
+ relation: {
2781
+ tournamentTeamUser: TournamentTeamUser,
2782
+ team: Team,
2783
+ teamUser: TeamUser,
2784
+ user: User,
2785
+ tournamentTeam: TournamentTeam,
2786
+ month: DateField
2787
+ }
2788
+ })
2789
+ ], FootballStatistic);
2790
+
2791
+ let FootballGameTeamStatistic = class FootballGameTeamStatistic extends BaseModel {
2792
+ static toFront(data) { }
2793
+ static toBack(data) { }
2794
+ };
2795
+ __decorate([
2796
+ ToFrontHook
2797
+ ], FootballGameTeamStatistic, "toFront", null);
2798
+ __decorate([
2799
+ ToBackHook
2800
+ ], FootballGameTeamStatistic, "toBack", null);
2801
+ FootballGameTeamStatistic = __decorate([
2802
+ ModelInstance({
2803
+ mappingFields: {
2804
+ team: 'team',
2805
+ competitor_team: 'competitorTeam'
2806
+ },
2807
+ relation: {
2808
+ team: FootballStatistic,
2809
+ competitorTeam: FootballStatistic
2810
+ }
2811
+ })
2812
+ ], FootballGameTeamStatistic);
2813
+
2814
+ let FootballGameApi = class FootballGameApi {
2815
+ constructor(httpClient, configService) {
2816
+ this.httpClient = httpClient;
2817
+ this.configService = configService;
2818
+ }
2819
+ getById(gameId) {
2820
+ return __awaiter(this, void 0, void 0, function* () {
2821
+ return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/`).pipe(map(result => Game.toFront(result))).toPromise();
2822
+ });
2823
+ }
2824
+ getUsers(gameId) {
2825
+ return __awaiter(this, void 0, void 0, function* () {
2826
+ return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(map(result => GameUser.toFront(result))).toPromise();
2827
+ });
2828
+ }
2829
+ getTeamStatistic(gameId) {
2830
+ return __awaiter(this, void 0, void 0, function* () {
2831
+ return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/team_statistic/`).pipe(map(result => FootballGameTeamStatistic.toFront(result))).toPromise();
2832
+ });
2833
+ }
2834
+ getUserStatistic(gameId) {
2835
+ return __awaiter(this, void 0, void 0, function* () {
2836
+ return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/user_statistic/`).pipe(map(result => FootballGameStatistic.toFront(result))).toPromise();
2837
+ });
2838
+ }
2839
+ getLogs(gameId) {
2840
+ return __awaiter(this, void 0, void 0, function* () {
2841
+ return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/logs/`).pipe(map(result => FootballGameLog.toFront(result))).toPromise();
2842
+ });
2843
+ }
2844
+ downloadProtocol(gameId, format) {
2845
+ return __awaiter(this, void 0, void 0, function* () {
2846
+ return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_protocol/`, {
2847
+ params: new HttpParams().set('file_type', format),
2848
+ responseType: 'blob'
2849
+ }).toPromise();
2850
+ });
2851
+ }
2852
+ downloadApplication(gameId, format, type) {
2853
+ return __awaiter(this, void 0, void 0, function* () {
2854
+ return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_application_file/`, {
2855
+ params: new HttpParams().set('file_type', format).set('application_type', type),
2856
+ responseType: 'blob'
2857
+ }).toPromise();
2858
+ });
2859
+ }
2860
+ };
2861
+ FootballGameApi.ctorParameters = () => [
2862
+ { type: HttpClient },
2863
+ { type: ConfigService }
2864
+ ];
2865
+ FootballGameApi.ɵprov = ɵɵdefineInjectable({ factory: function FootballGameApi_Factory() { return new FootballGameApi(ɵɵinject(HttpClient), ɵɵinject(ConfigService)); }, token: FootballGameApi, providedIn: "root" });
2866
+ FootballGameApi = __decorate([
2867
+ Injectable({ providedIn: 'root' })
2868
+ ], FootballGameApi);
2869
+
2390
2870
  var LeagueNewsType;
2391
2871
  (function (LeagueNewsType) {
2392
2872
  LeagueNewsType[LeagueNewsType["text"] = 1] = "text";
@@ -4507,6 +4987,22 @@ let TournamentApi = class TournamentApi {
4507
4987
  return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, { params }).pipe(map(result => HockeyStatistic.toFront(result))).toPromise();
4508
4988
  });
4509
4989
  }
4990
+ getFootballStatistic(filters) {
4991
+ return __awaiter(this, void 0, void 0, function* () {
4992
+ let params = new HttpParams();
4993
+ if (filters) {
4994
+ for (const key of Object.keys(filters)) {
4995
+ if (filters[key]) {
4996
+ params = params.set(key, filters[key]);
4997
+ }
4998
+ }
4999
+ if (filters.per_game !== undefined) {
5000
+ params = params.set('per_game', filters.per_game ? '1' : '0');
5001
+ }
5002
+ }
5003
+ return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic/`, { params }).pipe(map(result => FootballStatistic.toFront(result))).toPromise();
5004
+ });
5005
+ }
4510
5006
  getTournamentTeamUsers(tournamentTeamId) {
4511
5007
  return __awaiter(this, void 0, void 0, function* () {
4512
5008
  return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`).pipe(map(result => TournamentTeamUser.toFront(result))).toPromise();
@@ -5400,6 +5896,34 @@ const HockeyGameLogTypeLocalization = {
5400
5896
  [HockeyGameLogTypes.penalty_end]: 'Конец штрафного времени'
5401
5897
  };
5402
5898
 
5899
+ const FootballGameLogTypeLocalization = {
5900
+ [FootballGameLogTypes.enter_game]: 'Выход на поле',
5901
+ [FootballGameLogTypes.exit_game]: 'Ушел с поля',
5902
+ [FootballGameLogTypes.shot_miss]: 'Удар мимо',
5903
+ [FootballGameLogTypes.shot_on_goal]: 'Удар в створ',
5904
+ [FootballGameLogTypes.shot_blocked]: 'Заблокированный удар',
5905
+ [FootballGameLogTypes.goal]: 'Гол',
5906
+ [FootballGameLogTypes.assist]: 'Передача',
5907
+ [FootballGameLogTypes.penalty_attempt]: 'Пенальти промах',
5908
+ [FootballGameLogTypes.penalty_goal]: 'Пенальти гол',
5909
+ [FootballGameLogTypes.small_penalty_attempt]: '10-метровый промах',
5910
+ [FootballGameLogTypes.small_penalty_goal]: '10-метровый гол',
5911
+ [FootballGameLogTypes.block_shot]: 'Блокировка удара',
5912
+ [FootballGameLogTypes.corner]: 'Угловой',
5913
+ [FootballGameLogTypes.free_kick]: 'Штрафной удар',
5914
+ [FootballGameLogTypes.save]: 'Отражен удар',
5915
+ [FootballGameLogTypes.penalty_save]: 'Отражен пенальти',
5916
+ [FootballGameLogTypes.small_penalty_save]: 'Отражен 10 метровый',
5917
+ [FootballGameLogTypes.foul]: 'Фол',
5918
+ [FootballGameLogTypes.yellow_card]: 'Желтая карточка',
5919
+ [FootballGameLogTypes.red_card]: 'Красная карточка',
5920
+ [FootballGameLogTypes.perfect_pass]: 'Пас',
5921
+ [FootballGameLogTypes.loss]: 'Потеря',
5922
+ [FootballGameLogTypes.steal]: 'Перехват',
5923
+ [FootballGameLogTypes.out]: 'Аут',
5924
+ [FootballGameLogTypes.timeout]: 'Таймаут'
5925
+ };
5926
+
5403
5927
  const OvertimeTypeLocalization = {
5404
5928
  [OvertimeTypes.to_score_diff]: 'До разницы в N мячей',
5405
5929
  [OvertimeTypes.to_score_total]: 'До N очков',
@@ -5407,7 +5931,9 @@ const OvertimeTypeLocalization = {
5407
5931
  [OvertimeTypes.without_overtime]: 'Без овертайма',
5408
5932
  [OvertimeTypes.to_first_goal]: 'На N минут до первой шайбы',
5409
5933
  [OvertimeTypes.to_first_goal_and_bullitts]: 'На N минут до первой шайбы + буллиты',
5410
- [OvertimeTypes.bullitts]: 'Буллиты'
5934
+ [OvertimeTypes.bullitts]: 'Буллиты',
5935
+ [OvertimeTypes.penalties]: 'Пенальти',
5936
+ [OvertimeTypes.time_and_penalties]: 'Дополнительное время + пенальти'
5411
5937
  };
5412
5938
 
5413
5939
  const TeamUserRoleLocalization = {
@@ -5464,6 +5990,17 @@ const GameHockeyPositionLocalization = {
5464
5990
  [GameHockeyPosition.defensemen]: 'Защитник',
5465
5991
  [GameHockeyPosition.forward]: 'Нападающий'
5466
5992
  };
5993
+ const GameFootballPositionLocalization = {
5994
+ [GameFootballPosition.goalkeeper]: 'Вратарь',
5995
+ [GameFootballPosition.defensemen]: 'Защитник',
5996
+ [GameFootballPosition.midfielder]: 'Полузащитник',
5997
+ [GameFootballPosition.forward]: 'Нападающий'
5998
+ };
5999
+ const FootballWorkFootLocalization = {
6000
+ [FootballWorkFoot.left]: 'Левая',
6001
+ [FootballWorkFoot.right]: 'Правая',
6002
+ [FootballWorkFoot.both]: 'Обе'
6003
+ };
5467
6004
 
5468
6005
  const VolleyballGameLogTypeLocalization = {
5469
6006
  [VolleyballGameLogType.enter_game]: 'Выход на площадку',
@@ -5877,5 +6414,5 @@ HttpCookieInterceptor = __decorate([
5877
6414
  * Generated bundle index. Do not edit.
5878
6415
  */
5879
6416
 
5880
- export { BannerLocation, BaseModel, BaseService, BaseStatistic, BasketballGameApi, BasketballGameConfig, BasketballGameLog, BasketballGameLogTypeLocalization, BasketballGameLogTypes, BasketballGameStatistic, BasketballGameTeamStatistic, BasketballProfile, BasketballStatistic, BasketballStatisticTypes, CONFIG_DATA, CentrifugoService, City, ConfigService, DateField, DateTimeField, FAULT_LOG_TYPES, Feedback, FeedbackApi, File, FileApi, FileEngine, Game, GameBasketballPosition, GameBasketballPositionLocalization, GameBasketballPositionShortLocalization, GameHockeyPosition, GameHockeyPositionLocalization, GameInvite, GameInviteStatus, GameResultTypes, GameStatuses, GameTimeTypes, GameTimelineStageItem, GameTimelineStages, GameUser, GameVolleyballPosition, GameVolleyballPositionLocalization, GameVolleyballPositionShortLocalization, GameVolleyballPositionShortRuLocalization, HockeyAdvantageTypes, HockeyGameApi, HockeyGameConfig, HockeyGameLog, HockeyGameLogTypeLocalization, HockeyGameLogTypes, HockeyGameStatistic, HockeyGameTeamStatistic, HockeyPenaltyTypes, HockeyProfile, HockeyStatistic, HockeyWorkHand, HttpCookieInterceptor, League, LeagueApi, LeagueBanner, LeagueCourt, LeagueNews, LeagueNewsApi, LeagueNewsType, LeaguePartner, LeaguePlaylist, LocalStorageEngine, MediaApi, MediaItem, ModelInstance, Notification, NotificationAllowTypes, NotificationApi, NotificationBaseApi, NotificationServiceEnum, NotificationSettings, NotificationType, OrgNotificationApi, Organization, OvertimeTypeLocalization, OvertimeTypes, Playoff, PlayoffSettings, PlayoffTypes, Poll, PollAnswer, PollStatuses, PollVariant, ReferenceApi, SCORE_LOG_TYPES, Sport, SportTypes, StorageEngine, StorageEngineField, Store, Team, TeamAccess, TeamApi, TeamEvent, TeamEventApi, TeamEventInvite, TeamEventInviteStatuses, TeamEventTypeLocalization, TeamEventTypes, TeamInvite, TeamInviteExternal, TeamPermission, TeamPermissionTypes, TeamUser, TeamUserRole, TeamUserRoleLocalization, ToBackHook, ToFrontHook, Tournament, TournamentApi, TournamentDisqualification, TournamentEvent, TournamentEventTypes, TournamentGender, TournamentGroup, TournamentInvite, TournamentJoinApi, TournamentJoinData, TournamentJoinTeam, TournamentNews, TournamentSeason, TournamentSeasonApi, TournamentSeasonStatuses, TournamentSettings, TournamentStage, TournamentStageApi, TournamentStageStatuses, TournamentStageTeam, TournamentStatuses, TournamentTeam, TournamentTeamUser, TournamentTeamUserInvite, TournamentTeamWinner, TournamentTypes, UntilDestroy, User, UserAccess, UserApi, UserGender, UserPermission, UserPermissionTypes, UserProfile, VolleyballGameApi, VolleyballGameConfig, VolleyballGameLog, VolleyballGameLogType, VolleyballGameLogTypeLocalization, VolleyballGameStatistic, VolleyballGameTeamStatistic, VolleyballGameTypes, VolleyballProfile, VolleyballStatistic, VolleyballStatisticTypes, VolleyballWorkHand, VolleyballWorkHandLocalization, WorkHand, WorkHandLocalization, addItemInArray, changeFavicons, componentDestroyed, deleteItemFromArray, enumField, fileSizeValidator, generateArray, getArrayChunks, getCookie, getEnumOptions, getIconsData, handleError, isTouchDevice, listField, markFormGroupTouched, minLengthArrayValidator, patchItemInArray, updateItemInArray, updateItemsInArray, validateDate, validateEmail, validatePhone, validateUrl, penaltyTypeField as ɵa };
6417
+ export { BannerLocation, BaseModel, BaseService, BaseStatistic, BasketballGameApi, BasketballGameConfig, BasketballGameLog, BasketballGameLogTypeLocalization, BasketballGameLogTypes, BasketballGameStatistic, BasketballGameTeamStatistic, BasketballProfile, BasketballStatistic, BasketballStatisticTypes, CONFIG_DATA, CentrifugoService, City, ConfigService, DateField, DateTimeField, FAULT_LOG_TYPES, Feedback, FeedbackApi, File, FileApi, FileEngine, FootballGameApi, FootballGameConfig, FootballGameLog, FootballGameLogTypeLocalization, FootballGameLogTypes, FootballGameStatistic, FootballGameTeamStatistic, FootballProfile, FootballStatistic, FootballWorkFoot, FootballWorkFootLocalization, Game, GameBasketballPosition, GameBasketballPositionLocalization, GameBasketballPositionShortLocalization, GameFootballPosition, GameFootballPositionLocalization, GameHockeyPosition, GameHockeyPositionLocalization, GameInvite, GameInviteStatus, GameResultTypes, GameStatuses, GameTimeTypes, GameTimelineStageItem, GameTimelineStages, GameUser, GameVolleyballPosition, GameVolleyballPositionLocalization, GameVolleyballPositionShortLocalization, GameVolleyballPositionShortRuLocalization, HockeyAdvantageTypes, HockeyGameApi, HockeyGameConfig, HockeyGameLog, HockeyGameLogTypeLocalization, HockeyGameLogTypes, HockeyGameStatistic, HockeyGameTeamStatistic, HockeyPenaltyTypes, HockeyProfile, HockeyStatistic, HockeyWorkHand, HttpCookieInterceptor, League, LeagueApi, LeagueBanner, LeagueCourt, LeagueNews, LeagueNewsApi, LeagueNewsType, LeaguePartner, LeaguePlaylist, LocalStorageEngine, MediaApi, MediaItem, ModelInstance, Notification, NotificationAllowTypes, NotificationApi, NotificationBaseApi, NotificationServiceEnum, NotificationSettings, NotificationType, OrgNotificationApi, Organization, OvertimeTypeLocalization, OvertimeTypes, Playoff, PlayoffSettings, PlayoffTypes, Poll, PollAnswer, PollStatuses, PollVariant, ReferenceApi, SCORE_LOG_TYPES, Sport, SportTypes, StorageEngine, StorageEngineField, Store, Team, TeamAccess, TeamApi, TeamEvent, TeamEventApi, TeamEventInvite, TeamEventInviteStatuses, TeamEventTypeLocalization, TeamEventTypes, TeamInvite, TeamInviteExternal, TeamPermission, TeamPermissionTypes, TeamUser, TeamUserRole, TeamUserRoleLocalization, ToBackHook, ToFrontHook, Tournament, TournamentApi, TournamentDisqualification, TournamentEvent, TournamentEventTypes, TournamentGender, TournamentGroup, TournamentInvite, TournamentJoinApi, TournamentJoinData, TournamentJoinTeam, TournamentNews, TournamentSeason, TournamentSeasonApi, TournamentSeasonStatuses, TournamentSettings, TournamentStage, TournamentStageApi, TournamentStageStatuses, TournamentStageTeam, TournamentStatuses, TournamentTeam, TournamentTeamUser, TournamentTeamUserInvite, TournamentTeamWinner, TournamentTypes, UntilDestroy, User, UserAccess, UserApi, UserGender, UserPermission, UserPermissionTypes, UserProfile, VolleyballGameApi, VolleyballGameConfig, VolleyballGameLog, VolleyballGameLogType, VolleyballGameLogTypeLocalization, VolleyballGameStatistic, VolleyballGameTeamStatistic, VolleyballGameTypes, VolleyballProfile, VolleyballStatistic, VolleyballStatisticTypes, VolleyballWorkHand, VolleyballWorkHandLocalization, WorkHand, WorkHandLocalization, addItemInArray, changeFavicons, componentDestroyed, deleteItemFromArray, enumField, fileSizeValidator, generateArray, getArrayChunks, getCookie, getEnumOptions, getIconsData, handleError, isTouchDevice, listField, markFormGroupTouched, minLengthArrayValidator, patchItemInArray, updateItemInArray, updateItemsInArray, validateDate, validateEmail, validatePhone, validateUrl, penaltyTypeField as ɵa };
5881
6418
  //# sourceMappingURL=mtgame-core.js.map