umts/pvta-multiplatform

View on GitHub
src/pages/routes-and-stops/routes-and-stops.html

Summary

Maintainability
Test Coverage
<ion-header>
  <ion-navbar color="primary">
    <button ion-button menuToggle aria-label="Open the menu" tabindex=1>
      <ion-icon name="menu"></ion-icon>
    </button>
    <ion-title role="heading">Routes and Stops</ion-title>
  </ion-navbar>
  <ion-searchbar
    [(ngModel)]="searchQuery"
    showCancelButton
    (ionInput)="onSearchQueryChanged($event.target.value)">
    <!-- (ionCancel)="onCancel($event)"> -->
  </ion-searchbar>
  <ion-toolbar>
    <ion-segment [(ngModel)]="cDisplay" (ionChange)="toggleOrdering()">
      <ion-segment-button value="routes">
        Routes
      </ion-segment-button>
      <ion-segment-button value="stops">
        Stops
      </ion-segment-button>
    </ion-segment>
  </ion-toolbar>
  <ion-item *ngIf="!isInternetExplorer">
    <ion-label>Order {{cDisplay == 'routes' ? 'Routes' : 'Stops'}} By:</ion-label>
    <ion-select [(ngModel)]="order" (ionChange)="toggleOrdering()">
      <ion-option value="favorites">Favorites</ion-option>
      <ion-option *ngIf="cDisplay == 'routes'" value="name" aria-label="Name">Name</ion-option>
      <ion-option *ngIf="cDisplay == 'stops'" value="distance" aria-label="Distance">Distance</ion-option>
    </ion-select>
  </ion-item>
</ion-header>
<ion-content>
  <div [ngSwitch]="cDisplay">
    <ion-list role="list" aria-label="all routes" text-wrap *ngSwitchCase="'routes'">
      <div ion-item *ngFor="let route of routesDisp"
        (click)="goToRoutePage(route.RouteId)">
        <ion-icon aria-hidden="true" name="bus" style="margin-right: 10px"></ion-icon>
        <span role="heading" [style.color]="'#' + route.Color" style="font-size: 125%; font-weight: bold; margin-left: 10px">
          {{route.RouteAbbreviation}}
        </span>
          <p>{{route.GoogleDescription}}</p>
          <button ion-button icon-only item-right clear (click)="route.Liked = !route.Liked; toggleRouteHeart(route); $event.stopPropagation()" attr.aria-label="{{route.Liked ? 'Unlike this route' : 'Like this route'}}">
            <ion-icon name="{{route.Liked ? 'ios-heart' : 'ios-heart-outline'}}"></ion-icon>
          </button>
      </div>
    </ion-list>

    <ion-list role="list" aria-label="stops" text-wrap *ngSwitchCase="'stops'">
      <div ion-item *ngFor="let stop of stopsDisp | paginate: { itemsPerPage: 40, currentPage: p }"
        (click)="goToStopPage(stop.StopId)">
        <ion-icon aria-hidden="true" name="pin" style="margin-right: 10px"></ion-icon>
        <span role="heading">{{stop.Description}} ({{stop.StopId}})</span>
        <button ion-button icon-only item-right clear (click)="stop.Liked = !stop.Liked; toggleStopHeart(stop); $event.stopPropagation()" attr.aria-label="{{stop.Liked ? 'Unlike this stop' : 'Like this stop'}}">
          <ion-icon name="{{stop.Liked ? 'ios-heart' : 'ios-heart-outline'}}"></ion-icon>
        </button>
      </div>
      <pagination-controls center class="pages" (pageChange)="p = $event"></pagination-controls>
    </ion-list>
  </div>
</ion-content>