issue-5-product-gamesystems #11
@ -1,2 +1,4 @@
 | 
				
			|||||||
<app-simple-state-editor [states]="simpleGamesystem!.states" [gamesystem]="simpleGamesystem"></app-simple-state-editor>
 | 
					<app-simple-state-editor [states]="simpleGamesystem!.states" [gamesystem]="simpleGamesystem"></app-simple-state-editor>
 | 
				
			||||||
<app-simple-transition-editor class="transition-editor" [gamesystem]="simpleGamesystem"></app-simple-transition-editor>
 | 
					<div id="transition-editor">
 | 
				
			||||||
 | 
					  <app-simple-transition-editor [gamesystem]="simpleGamesystem"></app-simple-transition-editor>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
.transition-editor {
 | 
					#transition-editor {
 | 
				
			||||||
  margin-top: 15px;
 | 
					  margin-top: 20px !important;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,77 +1,82 @@
 | 
				
			|||||||
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8" multiTemplateDataRows>
 | 
					<mat-card>
 | 
				
			||||||
  <ng-container matColumnDef="name">
 | 
					  <mat-card-content>
 | 
				
			||||||
    <th mat-header-cell *matHeaderCellDef>Label</th>
 | 
					    <table mat-table [dataSource]="dataSource" class="mat-elevation-z8" multiTemplateDataRows>
 | 
				
			||||||
    <td mat-cell *matCellDef="let state">
 | 
					      <ng-container matColumnDef="name">
 | 
				
			||||||
      <span *ngIf="editedElement !== state"> {{state.stateLabel}}</span>
 | 
					        <th mat-header-cell *matHeaderCellDef>Label</th>
 | 
				
			||||||
      <mat-form-field appearance="fill" class="long-form" *ngIf="editedElement === state">
 | 
					        <td mat-cell *matCellDef="let state">
 | 
				
			||||||
        <input matInput [(ngModel)]="state.stateLabel" (ngModelChange)="onStateChange()">
 | 
					          <span *ngIf="editedElement !== state"> {{state.stateLabel}}</span>
 | 
				
			||||||
        <mat-hint class="mat-error" *ngIf="editedStateLabelError"><mat-icon class="warning-icon">warning</mat-icon>Missing State-Label Information</mat-hint>
 | 
					          <mat-form-field appearance="fill" class="long-form" *ngIf="editedElement === state">
 | 
				
			||||||
      </mat-form-field>
 | 
					            <input matInput [(ngModel)]="state.stateLabel" (ngModelChange)="onStateChange()">
 | 
				
			||||||
    </td>
 | 
					            <mat-hint class="mat-error" *ngIf="editedStateLabelError"><mat-icon class="warning-icon">warning</mat-icon>Missing State-Label Information</mat-hint>
 | 
				
			||||||
  </ng-container>
 | 
					          </mat-form-field>
 | 
				
			||||||
 | 
					        </td>
 | 
				
			||||||
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->
 | 
					      <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->
 | 
				
			||||||
  <ng-container matColumnDef="expandedDetail">
 | 
					      <ng-container matColumnDef="expandedDetail">
 | 
				
			||||||
    <td mat-cell *matCellDef="let element" [attr.colspan]="columnsToDisplayWithExpand.length">
 | 
					        <td mat-cell *matCellDef="let element" [attr.colspan]="columnsToDisplayWithExpand.length">
 | 
				
			||||||
      <div class="example-element-detail" [@detailExpand]="element == expandedElement ? 'expanded' : 'collapsed'">
 | 
					          <div class="example-element-detail" [@detailExpand]="element == expandedElement ? 'expanded' : 'collapsed'">
 | 
				
			||||||
        <p *ngIf="editedElement !== element">{{element.stateDescription}}</p>
 | 
					            <p *ngIf="editedElement !== element">{{element.stateDescription}}</p>
 | 
				
			||||||
        <mat-form-field appearance="fill" class="long-form" *ngIf="element === editedElement">
 | 
					            <mat-form-field appearance="fill" class="long-form" *ngIf="element === editedElement">
 | 
				
			||||||
          <mat-label>Description</mat-label>
 | 
					              <mat-label>Description</mat-label>
 | 
				
			||||||
          <textarea matInput [(ngModel)]="element.stateDescription" rows="3" (ngModelChange)="onStateChange()"></textarea>
 | 
					              <textarea matInput [(ngModel)]="element.stateDescription" rows="3" (ngModelChange)="onStateChange()"></textarea>
 | 
				
			||||||
        </mat-form-field>
 | 
					            </mat-form-field>
 | 
				
			||||||
      </div>
 | 
					          </div>
 | 
				
			||||||
    </td>
 | 
					        </td>
 | 
				
			||||||
  </ng-container>
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ng-container matColumnDef="initial">
 | 
					      <ng-container matColumnDef="initial">
 | 
				
			||||||
    <th mat-header-cell *matHeaderCellDef>Initial</th>
 | 
					        <th mat-header-cell *matHeaderCellDef>Initial</th>
 | 
				
			||||||
    <td mat-cell *matCellDef="let state">
 | 
					        <td mat-cell *matCellDef="let state">
 | 
				
			||||||
      <div *ngIf="editedElement !== state">
 | 
					          <div *ngIf="editedElement !== state">
 | 
				
			||||||
        <mat-icon *ngIf="state.initial">done</mat-icon>
 | 
					            <mat-icon *ngIf="state.initial">done</mat-icon>
 | 
				
			||||||
        <mat-icon *ngIf="!state.initial">close</mat-icon>
 | 
					            <mat-icon *ngIf="!state.initial">close</mat-icon>
 | 
				
			||||||
      </div>
 | 
					          </div>
 | 
				
			||||||
      <mat-checkbox *ngIf="editedElement === state" [(ngModel)]="state.initial" (ngModelChange)="onStateChange()"></mat-checkbox>
 | 
					          <mat-checkbox *ngIf="editedElement === state" [(ngModel)]="state.initial" (ngModelChange)="onStateChange()"></mat-checkbox>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    </td>
 | 
					        </td>
 | 
				
			||||||
  </ng-container>
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ng-container matColumnDef="edit">
 | 
					      <ng-container matColumnDef="edit">
 | 
				
			||||||
    <th mat-header-cell *matHeaderCellDef></th>
 | 
					        <th mat-header-cell *matHeaderCellDef></th>
 | 
				
			||||||
    <td mat-cell *matCellDef="let state">
 | 
					        <td mat-cell *matCellDef="let state">
 | 
				
			||||||
      <button mat-icon-button color="primary" *ngIf="editedElement !== state" (click)="editState(state)" [disabled]="editedElement !== null"><mat-icon>edit</mat-icon></button>
 | 
					          <button mat-icon-button color="primary" *ngIf="editedElement !== state" (click)="editState(state)" [disabled]="editedElement !== null"><mat-icon>edit</mat-icon></button>
 | 
				
			||||||
      <button mat-icon-button color="primary" (click)="finishEditing()" *ngIf="editedElement === state"><mat-icon>done</mat-icon></button>
 | 
					          <button mat-icon-button color="primary" (click)="finishEditing()" *ngIf="editedElement === state"><mat-icon>done</mat-icon></button>
 | 
				
			||||||
    </td>
 | 
					        </td>
 | 
				
			||||||
  </ng-container>
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ng-container matColumnDef="delete">
 | 
					      <ng-container matColumnDef="delete">
 | 
				
			||||||
    <th mat-header-cell *matHeaderCellDef></th>
 | 
					        <th mat-header-cell *matHeaderCellDef></th>
 | 
				
			||||||
    <td mat-cell *matCellDef="let state">
 | 
					        <td mat-cell *matCellDef="let state">
 | 
				
			||||||
      <button mat-icon-button color="warn" (click)="deleteState(state)"><mat-icon>delete</mat-icon></button>
 | 
					          <button mat-icon-button color="warn" (click)="deleteState(state)"><mat-icon>delete</mat-icon></button>
 | 
				
			||||||
    </td>
 | 
					        </td>
 | 
				
			||||||
  </ng-container>
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ng-container matColumnDef="expand">
 | 
					      <ng-container matColumnDef="expand">
 | 
				
			||||||
    <th mat-header-cell *matHeaderCellDef aria-label="row actions">
 | 
					        <th mat-header-cell *matHeaderCellDef aria-label="row actions">
 | 
				
			||||||
      <button mat-icon-button (click)="addState()"><mat-icon>add</mat-icon></button>
 | 
					          <button mat-icon-button (click)="addState()"><mat-icon>add</mat-icon></button>
 | 
				
			||||||
    </th>
 | 
					        </th>
 | 
				
			||||||
    <td mat-cell *matCellDef="let element">
 | 
					        <td mat-cell *matCellDef="let element">
 | 
				
			||||||
      <button mat-icon-button aria-label="expand row" (click)="(expandedElement = expandedElement === element ? null : element); $event.stopPropagation()">
 | 
					          <button mat-icon-button aria-label="expand row" (click)="(expandedElement = expandedElement === element ? null : element); $event.stopPropagation()">
 | 
				
			||||||
        @if (expandedElement === element) {
 | 
					            @if (expandedElement === element) {
 | 
				
			||||||
          <mat-icon>keyboard_arrow_up</mat-icon>
 | 
					              <mat-icon>keyboard_arrow_up</mat-icon>
 | 
				
			||||||
        } @else {
 | 
					            } @else {
 | 
				
			||||||
          <mat-icon>keyboard_arrow_down</mat-icon>
 | 
					              <mat-icon>keyboard_arrow_down</mat-icon>
 | 
				
			||||||
        }
 | 
					            }
 | 
				
			||||||
      </button>
 | 
					          </button>
 | 
				
			||||||
    </td>
 | 
					        </td>
 | 
				
			||||||
  </ng-container>
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <tr mat-header-row *matHeaderRowDef="columnsToDisplayWithExpand"></tr>
 | 
					      <tr mat-header-row *matHeaderRowDef="columnsToDisplayWithExpand"></tr>
 | 
				
			||||||
  <tr mat-row *matRowDef="let element; columns: columnsToDisplayWithExpand;"
 | 
					      <tr mat-row *matRowDef="let element; columns: columnsToDisplayWithExpand;"
 | 
				
			||||||
      class="example-element-row"
 | 
					          class="example-element-row"
 | 
				
			||||||
      [class.example-expanded-row]="expandedElement === element"
 | 
					          [class.example-expanded-row]="expandedElement === element"
 | 
				
			||||||
      (click)="expandedElement = expandedElement === element ? null : element">
 | 
					          (click)="expandedElement = expandedElement === element ? null : element">
 | 
				
			||||||
  </tr>
 | 
					      </tr>
 | 
				
			||||||
  <tr mat-row *matRowDef="let row; columns: ['expandedDetail']" class="example-detail-row"></tr>
 | 
					      <tr mat-row *matRowDef="let row; columns: ['expandedDetail']" class="example-detail-row"></tr>
 | 
				
			||||||
</table>
 | 
					    </table>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  </mat-card-content>
 | 
				
			||||||
 | 
					</mat-card>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,81 +1,91 @@
 | 
				
			|||||||
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8" multiTemplateDataRows>
 | 
					<mat-card>
 | 
				
			||||||
  <ng-container matColumnDef="starting-state">
 | 
					  <mat-card-content>
 | 
				
			||||||
    <th mat-header-cell *matHeaderCellDef>Starting State</th>
 | 
					    <mat-form-field class="long-form">
 | 
				
			||||||
    <td mat-cell *matCellDef="let transition">
 | 
					      <mat-label>Filter</mat-label>
 | 
				
			||||||
      <span *ngIf="editedTransition !== transition">{{transition.startingState.stateLabel}}</span>
 | 
					      <input matInput (keyup)="applyFilter($event)" placeholder="Filter" #input>
 | 
				
			||||||
      <mat-form-field appearance="fill" class="long-form" *ngIf="editedTransition == transition">
 | 
					    </mat-form-field>
 | 
				
			||||||
        <mat-select [(ngModel)]="editedTransition!.startingState" (ngModelChange)="validateEditedTransition()">
 | 
					
 | 
				
			||||||
          <mat-option *ngFor="let state of gamesystem!.states" [value]="state"
 | 
					    <table mat-table [dataSource]="dataSource" class="mat-elevation-z8" multiTemplateDataRows>
 | 
				
			||||||
 | 
					      <ng-container matColumnDef="starting-state">
 | 
				
			||||||
 | 
					        <th mat-header-cell *matHeaderCellDef>Starting State</th>
 | 
				
			||||||
 | 
					        <td mat-cell *matCellDef="let transition">
 | 
				
			||||||
 | 
					          <span *ngIf="editedTransition !== transition">{{transition.startingState.stateLabel}}</span>
 | 
				
			||||||
 | 
					          <mat-form-field appearance="fill" class="long-form" *ngIf="editedTransition == transition">
 | 
				
			||||||
 | 
					            <mat-select [(ngModel)]="editedTransition!.startingState" (ngModelChange)="validateEditedTransition()">
 | 
				
			||||||
 | 
					              <mat-option *ngFor="let state of gamesystem!.states" [value]="state"
 | 
				
			||||||
                          (onSelectionChange)="validateEditedTransition()">{{state.stateLabel}}</mat-option>
 | 
					                          (onSelectionChange)="validateEditedTransition()">{{state.stateLabel}}</mat-option>
 | 
				
			||||||
        </mat-select>
 | 
					            </mat-select>
 | 
				
			||||||
        <mat-hint class="mat-error" *ngIf="transitionError"><mat-icon class="warning-icon">warning</mat-icon> Starting and Ending State cannot be the same!</mat-hint>
 | 
					            <mat-hint class="mat-error" *ngIf="transitionError"><mat-icon class="warning-icon">warning</mat-icon> Starting and Ending State cannot be the same!</mat-hint>
 | 
				
			||||||
        <mat-hint class="mat-error" *ngIf="!transitionError && transitionStartingStateError"><mat-icon class="warning-icon">warning</mat-icon>  Select a valid Starting State!</mat-hint>
 | 
					            <mat-hint class="mat-error" *ngIf="!transitionError && transitionStartingStateError"><mat-icon class="warning-icon">warning</mat-icon>  Select a valid Starting State!</mat-hint>
 | 
				
			||||||
      </mat-form-field>
 | 
					          </mat-form-field>
 | 
				
			||||||
    </td>
 | 
					        </td>
 | 
				
			||||||
  </ng-container>
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ng-container matColumnDef="ending-state">
 | 
					      <ng-container matColumnDef="ending-state">
 | 
				
			||||||
    <th mat-header-cell *matHeaderCellDef>Ending State</th>
 | 
					        <th mat-header-cell *matHeaderCellDef>Ending State</th>
 | 
				
			||||||
    <td mat-cell *matCellDef="let transition">
 | 
					        <td mat-cell *matCellDef="let transition">
 | 
				
			||||||
      <span *ngIf="editedTransition !== transition">{{transition.endingState.stateLabel}}</span>
 | 
					          <span *ngIf="editedTransition !== transition">{{transition.endingState.stateLabel}}</span>
 | 
				
			||||||
      <mat-form-field appearance="fill" class="long-form" *ngIf="editedTransition == transition">
 | 
					          <mat-form-field appearance="fill" class="long-form" *ngIf="editedTransition == transition">
 | 
				
			||||||
        <mat-select [(ngModel)]="editedTransition!.endingState" (ngModelChange)="validateEditedTransition()">
 | 
					            <mat-select [(ngModel)]="editedTransition!.endingState" (ngModelChange)="validateEditedTransition()">
 | 
				
			||||||
          <mat-option *ngFor="let state of gamesystem!.states" [value]="state"
 | 
					              <mat-option *ngFor="let state of gamesystem!.states" [value]="state"
 | 
				
			||||||
                        (onSelectionChange)="validateEditedTransition()">{{state.stateLabel}}</mat-option>
 | 
					                          (onSelectionChange)="validateEditedTransition()">{{state.stateLabel}}</mat-option>
 | 
				
			||||||
        </mat-select>
 | 
					            </mat-select>
 | 
				
			||||||
        <mat-hint class="mat-error" *ngIf="transitionError"><mat-icon class="warning-icon">warning</mat-icon> Starting and Ending State cannot be the same!</mat-hint>
 | 
					            <mat-hint class="mat-error" *ngIf="transitionError"><mat-icon class="warning-icon">warning</mat-icon> Starting and Ending State cannot be the same!</mat-hint>
 | 
				
			||||||
        <mat-hint class="mat-error" *ngIf="!transitionError && transitionEndingStateError"> <mat-icon class="warning-icon">warning</mat-icon> Select a valid Ending State!</mat-hint>
 | 
					            <mat-hint class="mat-error" *ngIf="!transitionError && transitionEndingStateError"> <mat-icon class="warning-icon">warning</mat-icon> Select a valid Ending State!</mat-hint>
 | 
				
			||||||
      </mat-form-field>
 | 
					          </mat-form-field>
 | 
				
			||||||
    </td>
 | 
					        </td>
 | 
				
			||||||
  </ng-container>
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ng-container matColumnDef="expandedDetail">
 | 
					      <ng-container matColumnDef="expandedDetail">
 | 
				
			||||||
    <td mat-cell *matCellDef="let element" [attr.colspan]="columnsToDisplayWithExpand.length">
 | 
					        <td mat-cell *matCellDef="let element" [attr.colspan]="columnsToDisplayWithExpand.length">
 | 
				
			||||||
      <div class="example-element-detail"
 | 
					          <div class="example-element-detail"
 | 
				
			||||||
           [@detailExpand]="element == expandedElement ? 'expanded' : 'collapsed'">
 | 
					               [@detailExpand]="element == expandedElement ? 'expanded' : 'collapsed'">
 | 
				
			||||||
        <p>Expanded Detail</p>
 | 
					            <p>Expanded Detail</p>
 | 
				
			||||||
      </div>
 | 
					          </div>
 | 
				
			||||||
    </td>
 | 
					        </td>
 | 
				
			||||||
  </ng-container>
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ng-container matColumnDef="edit">
 | 
					      <ng-container matColumnDef="edit">
 | 
				
			||||||
    <th mat-header-cell *matHeaderCellDef></th>
 | 
					        <th mat-header-cell *matHeaderCellDef></th>
 | 
				
			||||||
    <td mat-cell *matCellDef="let transition">
 | 
					        <td mat-cell *matCellDef="let transition">
 | 
				
			||||||
      <button mat-icon-button color="primary" *ngIf="editedTransition !== transition" [disabled]="editedTransition != undefined"><mat-icon>edit</mat-icon></button>
 | 
					          <button mat-icon-button color="primary" *ngIf="editedTransition !== transition" [disabled]="editedTransition != undefined"><mat-icon>edit</mat-icon></button>
 | 
				
			||||||
      <button mat-icon-button color="primary" *ngIf="editedTransition === transition"
 | 
					          <button mat-icon-button color="primary" *ngIf="editedTransition === transition"
 | 
				
			||||||
        [disabled]="transitionError || transitionStartingStateError || transitionEndingStateError" (click)="finishEditing()"
 | 
					                  [disabled]="transitionError || transitionStartingStateError || transitionEndingStateError" (click)="finishEditing()"
 | 
				
			||||||
      ><mat-icon>done</mat-icon></button>
 | 
					          ><mat-icon>done</mat-icon></button>
 | 
				
			||||||
    </td>
 | 
					        </td>
 | 
				
			||||||
  </ng-container>
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ng-container matColumnDef="delete">
 | 
					      <ng-container matColumnDef="delete">
 | 
				
			||||||
    <th mat-header-cell *matHeaderCellDef></th>
 | 
					        <th mat-header-cell *matHeaderCellDef></th>
 | 
				
			||||||
    <td mat-cell *matCellDef="let transition">
 | 
					        <td mat-cell *matCellDef="let transition">
 | 
				
			||||||
      <button mat-icon-button color="warn" (click)="deleteTransition(transition)"><mat-icon>delete</mat-icon></button>
 | 
					          <button mat-icon-button color="warn" (click)="deleteTransition(transition)"><mat-icon>delete</mat-icon></button>
 | 
				
			||||||
    </td>
 | 
					        </td>
 | 
				
			||||||
  </ng-container>
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ng-container matColumnDef="expand">
 | 
					      <ng-container matColumnDef="expand">
 | 
				
			||||||
    <th mat-header-cell *matHeaderCellDef aria-label="row actions">
 | 
					        <th mat-header-cell *matHeaderCellDef aria-label="row actions">
 | 
				
			||||||
      <button mat-icon-button (click)="addTransition()" [disabled]="editedTransition != undefined"><mat-icon>add</mat-icon></button>
 | 
					          <button mat-icon-button (click)="addTransition()" [disabled]="editedTransition != undefined"><mat-icon>add</mat-icon></button>
 | 
				
			||||||
    </th>
 | 
					        </th>
 | 
				
			||||||
    <td mat-cell *matCellDef="let element">
 | 
					        <td mat-cell *matCellDef="let element">
 | 
				
			||||||
      <button mat-icon-button aria-label="expand row" (click)="(expandedElement = expandedElement === element ? null : element); $event.stopPropagation()">
 | 
					          <button mat-icon-button aria-label="expand row" (click)="(expandedElement = expandedElement === element ? null : element); $event.stopPropagation()">
 | 
				
			||||||
        @if (expandedElement === element) {
 | 
					            @if (expandedElement === element) {
 | 
				
			||||||
          <mat-icon>keyboard_arrow_up</mat-icon>
 | 
					              <mat-icon>keyboard_arrow_up</mat-icon>
 | 
				
			||||||
        } @else {
 | 
					            } @else {
 | 
				
			||||||
          <mat-icon>keyboard_arrow_down</mat-icon>
 | 
					              <mat-icon>keyboard_arrow_down</mat-icon>
 | 
				
			||||||
        }
 | 
					            }
 | 
				
			||||||
      </button>
 | 
					          </button>
 | 
				
			||||||
    </td>
 | 
					        </td>
 | 
				
			||||||
  </ng-container>
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <tr mat-header-row *matHeaderRowDef="columnsToDisplayWithExpand"></tr>
 | 
					      <tr mat-header-row *matHeaderRowDef="columnsToDisplayWithExpand"></tr>
 | 
				
			||||||
  <tr mat-row *matRowDef="let element; columns: columnsToDisplayWithExpand;"
 | 
					      <tr mat-row *matRowDef="let element; columns: columnsToDisplayWithExpand;"
 | 
				
			||||||
      class="example-element-row"
 | 
					          class="example-element-row"
 | 
				
			||||||
      [class.example-expanded-row]="expandedElement === element"
 | 
					          [class.example-expanded-row]="expandedElement === element"
 | 
				
			||||||
      (click)="expandedElement = expandedElement === element ? null : element">
 | 
					          (click)="expandedElement = expandedElement === element ? null : element">
 | 
				
			||||||
  </tr>
 | 
					      </tr>
 | 
				
			||||||
  <tr mat-row *matRowDef="let row; columns: ['expandedDetail']" class="example-detail-row"></tr>
 | 
					      <tr mat-row *matRowDef="let row; columns: ['expandedDetail']" class="example-detail-row"></tr>
 | 
				
			||||||
</table>
 | 
					    </table>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  </mat-card-content>
 | 
				
			||||||
 | 
					</mat-card>
 | 
				
			||||||
 | 
				
			|||||||
@ -13,6 +13,8 @@ import {
 | 
				
			|||||||
import {SimpleTransition} from "../../../../game-model/gamesystems/SimpleTransition";
 | 
					import {SimpleTransition} from "../../../../game-model/gamesystems/SimpleTransition";
 | 
				
			||||||
import {animate, state, style, transition, trigger} from "@angular/animations";
 | 
					import {animate, state, style, transition, trigger} from "@angular/animations";
 | 
				
			||||||
import {SimpleState} from "../../../../game-model/gamesystems/SimpleState";
 | 
					import {SimpleState} from "../../../../game-model/gamesystems/SimpleState";
 | 
				
			||||||
 | 
					import {ProductTransition} from "../../../../game-model/gamesystems/ProductTransition";
 | 
				
			||||||
 | 
					import {LeafGamesystemCalculator} from "../../product-gamesystem-editor/LeafGamesystemCalculator";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
  selector: 'app-simple-transition-editor',
 | 
					  selector: 'app-simple-transition-editor',
 | 
				
			||||||
@ -44,6 +46,9 @@ export class SimpleTransitionEditorComponent implements OnInit {
 | 
				
			|||||||
  transitionEndingStateError = true;
 | 
					  transitionEndingStateError = true;
 | 
				
			||||||
  ngOnInit() {
 | 
					  ngOnInit() {
 | 
				
			||||||
    this.dataSource.data = this.gamesystem!.transitions;
 | 
					    this.dataSource.data = this.gamesystem!.transitions;
 | 
				
			||||||
 | 
					    this.dataSource.filterPredicate = (data: SimpleTransition, filter: string) => {
 | 
				
			||||||
 | 
					      return [data.startingState, data.endingState].some((state) => state.stateLabel.toLowerCase().includes(filter))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  addTransition() {
 | 
					  addTransition() {
 | 
				
			||||||
@ -83,4 +88,9 @@ export class SimpleTransitionEditorComponent implements OnInit {
 | 
				
			|||||||
      this.dataSource.data = this.gamesystem!.transitions;
 | 
					      this.dataSource.data = this.gamesystem!.transitions;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  applyFilter(event: KeyboardEvent) {
 | 
				
			||||||
 | 
					    const filterValue = (event.target as HTMLInputElement).value;
 | 
				
			||||||
 | 
					    this.dataSource.filter = filterValue.trim().toLowerCase();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user