{{!
 * 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.
}}

{{breadcrumb-bar breadcrumbs=breadcrumbs}}

{{#if actionResponse}}
  <div class="alert-wrapper">
    <div class="col-md-12">
      <div class="alert alert-dismissible {{if (eq actionResponse.type 'error') 'alert-danger' 'alert-success'}}" role="alert">
        <button class="close" data-dismiss="alert" aria-label="Close" {{action "resetActionResponse"}}><span aria-hidden="true">&times;</span></button>
        <strong>{{actionResponse.msg}}</strong>
      </div>
    </div>
  </div>
{{/if}}

<div class="panel-group col-md-12">
  <div class="panel panel-default">
    <div class="yarn-app-header">
      <div class="flex">
        <div>
          <div class="flex">
            <div>
              <h3 class="yarn-app-name">
                {{#if model.app.unmanagedApplication}}
                  <span title="This is an unmanaged application" class="yarn-tooltip">
                    <i class="glyphicon glyphicon-exclamation-sign glyphicon-gray" />
                  </span>
                {{/if}}
                {{model.app.appName}}
              </h3>
            </div>
            {{#if model.app.finalStatus}}
            <div title="Final status" class="yarn-tooltip yarn-app-final-status offset-1">
              <span class={{model.app.finalStatusStyle}}>
                {{model.app.finalStatus}}
              </span>
            </div>
            {{/if}}
          </div>
          <div title="Application id" class="muted-text">{{model.app.id}}</div>
          {{em-table-simple-status-cell content=model.app.state}}
          <div class="flex">
            <div class="tail-2">
              <i class="glyphicon glyphicon-user glyphicon-gray" /> {{model.app.user}}
            </div>
            {{#if model.app.hasFinishedTime}}
              <div title="Started at {{model.app.formattedStartTime}}. &#10; Ran for {{model.app.formattedElapsedTime}}" class="yarn-tooltip">
                <i class="glyphicon glyphicon-time glyphicon-gray" />
                Finished at {{model.app.formattedFinishedTime}}
              </div>
            {{else}}
              <div title="Running for {{model.app.formattedElapsedTime}}" class="yarn-tooltip">
                <i class="glyphicon glyphicon-time glyphicon-gray" />
                Started at {{model.app.formattedStartTime}}
              </div>
            {{/if}}
          </div>
        </div>

        <div class="flex-right">
          <div class="links">
              {{#if (or (or isServiceDeployedOrRunning isServiceStoppped) isAppKillable)}}
              <div class="btn-group">
                <button type="button" class="btn btn-unstyled dropdown-toggle" title="Settings"
                  data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" style="margin-left: -5px;">
                  <i class="glyphicon glyphicon-cog"/> Settings
                </button>
                <ul class="dropdown-menu dropdown-menu-right">
                  {{#if isServiceDeployedOrRunning}}
                    <li>
                      <a href="#"  {{action "showStopServiceConfirm"}} target="_blank">
                        <i class="glyphicon glyphicon-stop" /> &nbsp;Stop Service
                      </a>
                    </li>
                    <li>
                      <a href="#" target="_blank" {{action "showDeleteServiceConfirm"}}>
                        <i class="glyphicon glyphicon-trash" /> &nbsp;Delete Service
                      </a>
                    </li>
                  {{/if}}
                  {{#if isServiceStoppped}}
                  <li>
                    <a href="#" target="_blank" {{action "showDeleteServiceConfirm"}}>
                      <i class="glyphicon glyphicon-trash" /> &nbsp;Delete Service
                    </a>
                  </li>
                  {{/if}}
                  {{#if isAppKillable}}
                    <li>
                      <a href="#"  {{action "showKillApplicationConfirm"}} target="_blank">
                        <i class="glyphicon glyphicon-stop" />&nbsp;Kill Application
                      </a>
                    </li>
                  {{/if}}
                </ul>
              </div>
            {{/if}}

            {{#if model.serviceName}}
              {{#if model.quicklinks}}
              <div class="btn-group quick-links">
                <button type="button" class="btn btn-unstyled dropdown-toggle" title="Quick links" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                  <i class="glyphicon glyphicon-option-vertical" /> Quicklinks
                </button>
                <ul class="dropdown-menu dropdown-menu-right">
                  {{#each model.quicklinks as |link|}}
                    <li><a href="{{link.value}}" target="_blank">{{link.name}}</a></li>
                  {{/each}}
                </ul>
              </div>
              {{/if}}
            {{/if}}
          </div>
          <div class="btn-group">
            <span title="Queue" class="yarn-tooltip">
              <i class="glyphicon glyphicon-tasks glyphicon-gray" /> {{model.app.queue}}
            </span>
          </div>
          <div>Priority: {{model.app.priority}}</div>
          {{#if model.app.trackingUrl}}
            <div><a href="{{model.app.trackingUrl}}" target="_blank">{{model.app.trackingUI}}</a></div>
          {{/if}}
        </div>
      </div>
    </div>
    <div class="panel-heading">
      <div class="clearfix">
        <ul class="nav nav-pills">
          <ul class="nav nav-pills collapse in">
            {{#if model.serviceName}}
              {{#link-to 'yarn-app.components' tagName="li" class=(if (eq target.currentPath 'yarn-app.components') "active")}}
                {{#link-to 'yarn-app.components' appId (query-params service=model.serviceName)}}Components{{/link-to}}
              {{/link-to}}
              {{#link-to 'yarn-app.configs' tagName="li" class=(if (eq target.currentPath 'yarn-app.configs') "active")}}
                {{#link-to 'yarn-app.configs' appId (query-params service=model.serviceName)}}Configurations &amp; Metrics{{/link-to}}
              {{/link-to}}
            {{/if}}
            {{#link-to 'yarn-app.attempts' tagName="li" class=(if (eq target.currentPath 'yarn-app.attempts') "active")}}
              {{#link-to 'yarn-app.attempts' appId (query-params service=model.serviceName)}}Attempts List{{/link-to}}
            {{/link-to}}
            {{#link-to 'yarn-app.charts' tagName="li" class=(if (eq target.currentPath 'yarn-app.charts') "active")}}
              {{#link-to 'yarn-app.charts' appId (query-params service=model.serviceName)}}Resource Usage{{/link-to}}
            {{/link-to}}
            {{#link-to 'yarn-app.info' tagName="li" class=(if (eq target.currentPath 'yarn-app.info') "active")}}
              {{#link-to 'yarn-app.info' appId (query-params service=model.serviceName)}}Diagnostics{{/link-to}}
            {{/link-to}}
            {{#link-to 'yarn-app.logs' tagName="li" class=(if (eq target.currentPath 'yarn-app.logs') "active")}}
              {{#link-to 'yarn-app.logs' appId (query-params service=serviceName)}}Logs{{/link-to}}
            {{/link-to}}
            {{#link-to 'yarn-app.threaddump' tagName="li" class=(if (eq target.currentPath 'yarn-app.threaddump') "active")}}
              {{#link-to 'yarn-app.threaddump' appId (query-params service=serviceName)}}Threaddump{{/link-to}}
            {{/link-to}}
          </ul>
        </ul>
      </div>
    </div>
    <div class="panel-body yarn-app-body">
      {{outlet}}
    </div>
  </div>
</div>

{{confirm-dialog
  dialogId="stopServiceConfirmDialog"
  message=(concat 'Are you sure you want to stop service "' model.serviceName '" for user "' model.app.user '" ?')
  action="stopService"
}}

{{confirm-dialog
  dialogId="deleteServiceConfirmDialog"
  message=(concat 'Are you sure you want to delete service "' model.serviceName '" for user "' model.app.user '" ?')
  action="deleteService"
}}

{{confirm-dialog
  dialogId="killApplicationConfirmDialog"
  message=(concat 'Are you sure you want to kill application "' model.app.id '"?')
  action="killApplication"
}}
