<!--
  - Copyright 2014-2018 the original author or authors.
  -
  - Licensed 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.
  -->

<template>
    <div class="application-status">
        <font-awesome-icon :icon="icon" class="application-status__icon"
                           :class="`application-status__icon--${status}`"></font-awesome-icon>
        <small v-if="date">
            <sba-time-ago :date="date"></sba-time-ago>
        </small>
    </div>
</template>

<script>
  import sbaTimeAgo from './sba-time-ago';

  const icons = {
    'UP': 'check',
    'RESTRICTED': 'exclamation',
    'OUT_OF_SERVICE': 'ban',
    'DOWN': 'times-circle',
    'OFFLINE': 'minus-circle',
    'UNKNOWN': 'question-circle'
  };

  export default {
    components: {
      sbaTimeAgo,
    },
    props: {
      status: String,
      date: {},
    },
    computed: {
      icon() {
        return icons[this.status];
      }
    }
  }
</script>

<style lang="scss">
    @import "~@/assets/css/utilities";

    .application-status {
        text-align: center;
        line-height: 1rem;
        display: inline-flex;
        flex-direction: column;

        &__icon {
            color: gray;
            margin: 0 auto;

            &--UP {
                color: $success;
            }

            &--RESTRICTED {
                color: $warning;
            }

            &--OUT_OF_SERVICE,
            &--DOWN {
                color: $danger;
            }

            &--UNKNOWN,
            &--OFFLINE {
                color: $grey;
            }
        }
    }
</style>