<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<mat-card class="visits-chart">
  <mat-card-title class="visits-chart__header">
    <h5 class="visits-chart__title"><span
      [routerLink]="['/services', service.serviceId]">{{service.serviceName}} {{service.version}}</span></h5>
    <app-settings-menu></app-settings-menu>
  </mat-card-title>

  <mat-card-content class="visits-chart__content">
    <div class="visits-chart__content_apis">
      <app-api-short [apiModel]="api" *ngFor="let api of service.apis()"></app-api-short>
    </div>
    <div class="visits-chart__content-stats">
      <div>
        <p class="visits-chart__content-stats-title">Consumer</p>
        <p class="visits-chart__content-stats-data">
          <a [matTooltip]="service.consumersOverview()" matTooltipClass="tooltipBreakLine">
            {{service.consumers.length}}
          </a>
        </p>
      </div>
      <div>
        <p class="visits-chart__content-stats-title">Instance</p>
        <p class="visits-chart__content-stats-data">
          <a [matTooltip]="service.instancesOverview()"
             matTooltipClass="tooltipBreakLine">{{service.instances.length}}</a>
        </p>
      </div>
      <div>
        <p class="visits-chart__content-stats-title">PreviousVersion</p>
        <p class="visits-chart__content-stats-data">
          <a [matTooltip]="service.previousVersionsOverview()" matTooltipClass="tooltipBreakLine">
            {{service.previousVersionsNum()}}
          </a>
        </p>
      </div>

      <div>
        <p class="visits-chart__content-stats-title">KieConf</p>
        <p class="visits-chart__content-stats-data">
          <a [matTooltip]="service.kieConfOverview()" matTooltipClass="tooltipBreakLine">
            {{2}}
          </a>
        </p>
      </div>
    </div>
  </mat-card-content>
</mat-card>
