Compare commits

...

2 Commits

Author SHA1 Message Date
876d7b5c35 Race card 2025-07-22 16:27:46 +05:30
813d8056a1 updated shared screen styling 2025-07-22 16:27:38 +05:30
12 changed files with 100 additions and 11 deletions

View File

@ -23,10 +23,11 @@ div[style*="background-color: black"] .custom-cell {
.middle-section-container { .middle-section-container {
display: flex; display: flex;
gap: 1rem; gap: 1rem;
height: 38vh;
width: 100%; width: 100%;
/* height is now controlled dynamically via [ngStyle] */
} }
/* Desktop view (default) */ /* Desktop view (default) */
.main-table { .main-table {
width: 60%; width: 60%;

View File

@ -1,5 +1,6 @@
<!-- Responsive Container --> <!-- Responsive Container -->
<div class="middle-section-container"> <div class="middle-section-container" [ngStyle]="{ height: containerHeight }">
<!-- Transaction Summary --> <!-- Transaction Summary -->
<div class="transaction-summary"> <div class="transaction-summary">
<div <div
@ -33,7 +34,7 @@
</div> </div>
<!-- Main Table --> <!-- Main Table -->
<div class="main-table"> <div class="main-table ">
<div <div
class="p-2 rounded h-100 d-flex flex-column justify-content-between" class="p-2 rounded h-100 d-flex flex-column justify-content-between"
style="background-color: #f1f1f1df" style="background-color: #f1f1f1df"

View File

@ -1,15 +1,32 @@
import { Component } from '@angular/core'; // import { Component } from '@angular/core';
import { CommonModule } from '@angular/common'; // ✅ Import this // import { CommonModule } from '@angular/common'; // ✅ Import this
// @Component({
// selector: 'app-middle-section',
// standalone: true,
// imports: [CommonModule], // ✅ Add CommonModule here
// templateUrl: './middle-section.component.html',
// styleUrls: ['./middle-section.component.css']
// })
// export class MiddleSectionComponent {
// rows = Array.from({ length: 5 });
// summaryRows = Array.from({ length: 4 }); // 4 empty rows for now
// }
import { Component, Input } from '@angular/core';
import { CommonModule } from '@angular/common';
@Component({ @Component({
selector: 'app-middle-section', selector: 'app-middle-section',
standalone: true, standalone: true,
imports: [CommonModule], // ✅ Add CommonModule here imports: [CommonModule],
templateUrl: './middle-section.component.html', templateUrl: './middle-section.component.html',
styleUrls: ['./middle-section.component.css'] styleUrls: ['./middle-section.component.css']
}) })
export class MiddleSectionComponent { export class MiddleSectionComponent {
@Input() containerHeight: string = '50vh'; // default for home screen
rows = Array.from({ length: 5 }); rows = Array.from({ length: 5 });
summaryRows = Array.from({ length: 4 }); // 4 empty rows for now summaryRows = Array.from({ length: 4 }); // 4 empty rows for now
} }

View File

@ -17,7 +17,7 @@
<!-- Main Content --> <!-- Main Content -->
<div class="flex-grow-1 p-3"> <div class="flex-grow-1 p-3">
<app-middle-section></app-middle-section> <app-middle-section [containerHeight]="'38vh'"></app-middle-section>
<!-- Tablet View Touchpad --> <!-- Tablet View Touchpad -->
<div *ngIf="isTabletView" class="mt-3"> <div *ngIf="isTabletView" class="mt-3">

View File

@ -19,7 +19,7 @@
</div> </div>
<!-- Scan Enable/Disable Toggle Button --> <!-- Scan Enable/Disable Toggle Button -->
<button <!-- <button
type="button" type="button"
class="scan-toggle-btn" class="scan-toggle-btn"
(click)="toggleScan()" (click)="toggleScan()"
@ -27,7 +27,7 @@
style="margin-bottom: 10px" style="margin-bottom: 10px"
> >
Scanner: {{ scanningEnabled ? "ON" : "OFF" }} Scanner: {{ scanningEnabled ? "ON" : "OFF" }}
</button> </button> -->
<!-- End Scan Toggle Button --> <!-- End Scan Toggle Button -->
<!-- Login Form --> <!-- Login Form -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 KiB

View File

@ -0,0 +1,9 @@
package com.example.cezenBTC.DTO.race_card;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public record Pools(Map<String, Set<Integer>> comboRaces) {
}

View File

@ -0,0 +1,8 @@
package com.example.cezenBTC.DTO.race_card;
import java.time.LocalDate;
import java.util.List;
import java.util.Set;
public record RaceCard(String Venue, LocalDate date, RaceVenueRaces raceVenueRaces, Pools pools) {
}

View File

@ -0,0 +1,9 @@
package com.example.cezenBTC.DTO.race_card;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public record RaceVenueRaces(Set<Set<Integer>> races) {
}

View File

@ -103,6 +103,7 @@ public class CezenRoutsSecurityChain {
"/btc/get_all_venues", "/btc/get_all_venues",
"/btc/get_races_by_venue_id", "/btc/get_races_by_venue_id",
"/btc/get_all_races_by_today", "/btc/get_all_races_by_today",
"/btc/get_race_card",
"/cezen/set_aors", "/cezen/set_aors",
"/cezen/set_password", "/cezen/set_password",
"/cezen/add_extension" "/cezen/add_extension"

View File

@ -1,9 +1,11 @@
package com.example.cezenBTC.controller; package com.example.cezenBTC.controller;
import com.example.cezenBTC.DTO.race_card.RaceCard;
import com.example.cezenBTC.entity.btc_entity.RaceNumber; import com.example.cezenBTC.entity.btc_entity.RaceNumber;
import com.example.cezenBTC.entity.btc_entity.RaceVenue; import com.example.cezenBTC.entity.btc_entity.RaceVenue;
import com.example.cezenBTC.service.BtcRaceService; import com.example.cezenBTC.service.BtcRaceService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
@ -39,4 +41,10 @@ public class BtcOperations {
return this.btcRaceService.getAllRacesByDateService(LocalDate.now()); return this.btcRaceService.getAllRacesByDateService(LocalDate.now());
} }
@GetMapping("/get_race_card")
public ResponseEntity<RaceCard> getRaceCard(){
return this.btcRaceService.getRaceCard(LocalDate.now());
}
} }

View File

@ -2,13 +2,17 @@ package com.example.cezenBTC.service;
import com.example.cezenBTC.DAO.BtcOpsDAO; import com.example.cezenBTC.DAO.BtcOpsDAO;
import com.example.cezenBTC.DTO.ReturnStatus; import com.example.cezenBTC.DTO.ReturnStatus;
import com.example.cezenBTC.DTO.race_card.Pools;
import com.example.cezenBTC.DTO.race_card.RaceCard;
import com.example.cezenBTC.DTO.race_card.RaceVenueRaces;
import com.example.cezenBTC.entity.btc_entity.RaceNumber; import com.example.cezenBTC.entity.btc_entity.RaceNumber;
import com.example.cezenBTC.entity.btc_entity.RaceVenue; import com.example.cezenBTC.entity.btc_entity.RaceVenue;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.*;
@Service @Service
public class BtcRaceService { public class BtcRaceService {
@ -79,4 +83,35 @@ public class BtcRaceService {
return null; return null;
} }
} }
public ResponseEntity<RaceCard> getRaceCard(LocalDate date){
//create race numbers
Set<Integer> races1 = new LinkedHashSet<>(List.of(1,2,3,4,5,6,7,8,10));
Set<Integer> races2 = new LinkedHashSet<>(List.of(2,4,6,8,10,12));
Set<Integer> races3 = new LinkedHashSet<>(List.of(1,2,3,5,7,8,9,10,11));
Set<Integer> races4 = new LinkedHashSet<>(List.of(1,2,3,4,5,6,7,8,10,12,13));
// create a Venue
Set<Set<Integer>> mysRaces = new LinkedHashSet<>();
mysRaces.add(races1);
mysRaces.add(races2);
mysRaces.add(races3);
mysRaces.add(races4);
RaceVenueRaces raceVenueMYS = new RaceVenueRaces(mysRaces);
//create a Pool combination
Set<Integer> pool1 = new LinkedHashSet<>(List.of(5, 6, 7));
Set<Integer> pool2 = new LinkedHashSet<>(List.of(1, 2, 3));
// pole id to pool combo
Map<String, Set<Integer>> mysPools = new LinkedHashMap<>();
mysPools.put("TRB2", pool1);
mysPools.put("MJP1", pool2);
Pools mysPool = new Pools(mysPools);
RaceCard raceCard = new RaceCard("MYS", date, raceVenueMYS, mysPool);
return ResponseEntity.status(200).body(raceCard);
}
} }