Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-10-27 08:41:17

0001 <app-firebird-shell>
0002   <div central-pane class="fixed-width-page-content">
0003     <form>
0004 
0005       <mat-card class="config-card">
0006         <mat-card-title>Select Geometry and Events</mat-card-title>
0007         <mat-card-content>
0008           <p>Choose the detector geometry and the events to display.
0009             The choice is saved in this browser and loads when the display opens.</p>
0010           <firebird-data-selector
0011             applyLabel="Display"
0012             [requireChanges]="false"
0013             [showCancel]="false"
0014             (applied)="onDataApplied()">
0015           </firebird-data-selector>
0016         </mat-card-content>
0017       </mat-card>
0018 
0019       <mat-card class="config-card">
0020       <mat-card-title>Configure Geometry Pipeline</mat-card-title>
0021       <mat-card-content>
0022         <img [src]="pipelineDiagramUrl" alt="Geometry Pipeline" style="width:60%; text-align: center"/>
0023         <div class="subsection">
0024           <h3>Geometry Processing Options</h3>
0025           <p>(!) A page reload might be needed to see these changes</p>
0026 
0027 
0028           <div class="section">
0029             <h4>WebGL pipeline</h4>
0030             <p>Select how geometry looks and optimized</p>
0031             <mat-form-field appearance="fill" class="full-width">
0032               <mat-select [formControl]="geometryThemeName" [value]="geometryThemeName">
0033                 @for (option of themeOptions; track option.value) {
0034                   <mat-option [value]="option.value">{{ option.label }}</mat-option>
0035                 }
0036                 <mat-option value="off">Off (may hit performance)</mat-option>
0037               </mat-select>
0038             </mat-form-field>
0039             <p>Performance over quality (remove transparency, simple lights, etc.)</p>
0040             <mat-slide-toggle [formControl]="geometryFastAndUgly">Enabled</mat-slide-toggle>
0041           </div>
0042 
0043 
0044 
0045           <div class="section">
0046             <h4>ROOT Geo pipeline</h4>
0047 
0048             <p>Cut sub-detectors: remove top-level subdetectors before the geometry is built</p>
0049             <mat-form-field appearance="fill" class="full-width">
0050               <mat-select [formControl]="geometryCutListName" [value]="geometryCutListName">
0051                 @for (option of cutListOptions(); track option.value) {
0052                   <mat-option [value]="option.value">{{ option.label }}</mat-option>
0053                 }
0054                 <mat-option value="off">Off (don't remove anything)</mat-option>
0055               </mat-select>
0056             </mat-form-field>
0057 
0058             <p>Clean tree: apply an edit rule set that removes or simplifies parts of the TGeo tree before the geometry is built</p>
0059             <mat-form-field appearance="fill" class="full-width">
0060               <mat-select [formControl]="geometryRootFilterName" [value]="geometryRootFilterName">
0061                 @for (option of rootFilterOptions(); track option.value) {
0062                   <mat-option [value]="option.value">{{ option.label }}</mat-option>
0063                 }
0064                 <mat-option value="off">Off (slow for a full detector)</mat-option>
0065               </mat-select>
0066             </mat-form-field>
0067           </div>
0068 
0069           <div class="action-buttons">
0070             <button type="button" mat-raised-button [routerLink]="['/display']">DISPLAY</button>
0071             <button type="button" mat-raised-button (click)="resetGeometryToDefaults()">Reset pipeline to Defaults</button>
0072           </div>
0073 
0074         </div>
0075 
0076 
0077       </mat-card-content>
0078     </mat-card>
0079 
0080       <mat-card class="config-card">
0081         <mat-card-title>Controls</mat-card-title>
0082         <mat-card-content>
0083           <div class="section">
0084             <h3>Game Controller</h3>
0085             <p>Enable game controller support for navigation</p>
0086             <mat-slide-toggle [formControl]="useController">Use controller</mat-slide-toggle>
0087             <div *ngIf="useController.value" style="margin-top: 10px; padding: 10px; background-color: rgba(0,0,0,0.05); border-radius: 4px;">
0088               <p style="margin: 0 0 10px 0;"><strong>Controller Button Mapping:</strong></p>
0089               <ul style="margin: 0; padding-left: 20px;">
0090                 <li>Left Stick: Rotate camera</li>
0091                 <li>A Button: Zoom out</li>
0092                 <li>X Button: Zoom in</li>
0093                 <li>B Button: Strafe left</li>
0094                 <li>RT Trigger: Strafe right</li>
0095                 <li>LT Trigger: Reset to default view</li>
0096               </ul>
0097             </div>
0098           </div>
0099         </mat-card-content>
0100       </mat-card>
0101 
0102       <mat-card class="config-card">
0103         <mat-card-title>Server API Configuration</mat-card-title>
0104         <mat-card-content>
0105           <mat-slide-toggle [formControl]="serverUseApi">Use specific backend</mat-slide-toggle>
0106           <div class="api-url">
0107             <mat-form-field appearance="fill" class="full-width">
0108               <mat-label>Base API URL</mat-label>
0109               <input matInput type="text" placeholder="Enter API URL: http://localhost:5454"
0110                      [formControl]="serverApiUrl" [disabled]="!serverUseApi.value">
0111             </mat-form-field>
0112           </div>
0113         </mat-card-content>
0114       </mat-card>
0115 
0116       <mat-accordion class="details-accordion">
0117         <mat-expansion-panel>
0118           <mat-expansion-panel-header>
0119             <mat-panel-title>
0120               Backend Details
0121             </mat-panel-title>
0122           </mat-expansion-panel-header>
0123           <table class="details-table">
0124             <thead>
0125             <tr>
0126               <th>Property</th>
0127               <th>Value</th>
0128             </tr>
0129             </thead>
0130             <tbody>
0131             <tr>
0132               <td>Served by Pyrobird</td>
0133               <td>{{ firebirdConfig.servedByPyrobird ? 'Yes' : 'No' }}</td>
0134             </tr>
0135             <tr>
0136               <td>API Available</td>
0137               <td>{{ firebirdConfig.apiAvailable ? 'Yes' : 'No' }}</td>
0138             </tr>
0139             <tr>
0140               <td>API Base URL</td>
0141               <td>{{ firebirdConfig.apiBaseUrl }}</td>
0142             </tr>
0143             <tr>
0144               <td>Backend in use</td>
0145               <td>{{ urlService.serverAddress() || 'None (static frontend)' }}</td>
0146             </tr>
0147             <tr>
0148               <td>Log Level</td>
0149               <td>{{ firebirdConfig.logLevel }}</td>
0150             </tr>
0151             </tbody>
0152           </table>
0153         </mat-expansion-panel>
0154       </mat-accordion>
0155 
0156     </form>
0157   </div>
0158 </app-firebird-shell>