<template>
  <div class="quicklinks form-background">
    <div>
      <dl>
        <dt>{{ $t('pageOverview.quicklinks.bmcTime') }}</dt>
        <dd v-if="bmcTime">
          {{ bmcTime | formatDate }} {{ bmcTime | formatTime }}
        </dd>
        <dd v-else>--</dd>
      </dl>
    </div>
    <div>
      <dl>
        <dt>{{ $t('pageOverview.quicklinks.serverLed') }}</dt>
        <dd>
          <b-form-checkbox
            v-model="indicatorLedActiveState"
            data-test-id="overviewQuickLinks-checkbox-serverLed"
            name="check-button"
            switch
            @change="onChangeServerLed"
          >
            <span v-if="indicatorLedActiveState">
              {{ $t('global.status.on') }}
            </span>
            <span v-else>{{ $t('global.status.off') }}</span>
          </b-form-checkbox>
        </dd>
      </dl>
    </div>
    <div>
      <b-button
        to="/configuration/network-settings"
        variant="secondary"
        data-test-id="overviewQuickLinks-button-networkSettings"
        class="d-flex justify-content-between align-items-center"
      >
        {{ $t('pageOverview.quicklinks.editNetworkSettings') }}
        <icon-arrow-right />
      </b-button>
    </div>
    <div>
      <b-button
        to="/control/serial-over-lan"
        variant="secondary"
        data-test-id="overviewQuickLinks-button-solConsole"
        class="d-flex justify-content-between align-items-center"
      >
        {{ $t('pageOverview.quicklinks.solConsole') }}
        <icon-arrow-right />
      </b-button>
    </div>
  </div>
</template>

<script>
import ArrowRight16 from '@carbon/icons-vue/es/arrow--right/16';
import BVToastMixin from '@/components/Mixins/BVToastMixin';

export default {
  name: 'QuickLinks',
  components: {
    IconArrowRight: ArrowRight16,
  },
  mixins: [BVToastMixin],
  computed: {
    bmcTime() {
      return this.$store.getters['global/bmcTime'];
    },
    indicatorLedActiveState: {
      get() {
        return this.$store.getters['serverLed/getIndicatorLedActiveState'];
      },
      set(value) {
        return value;
      },
    },
  },
  created() {
    Promise.all([
      this.$store.dispatch('global/getBmcTime'),
      this.$store.dispatch('serverLed/getIndicatorLedActiveState'),
    ]).finally(() => {
      this.$root.$emit('overview-quicklinks-complete');
    });
  },
  methods: {
    onChangeServerLed(indicatorLedActiveState) {
      this.$store
        .dispatch(
          'serverLed/saveIndicatorLedActiveState',
          indicatorLedActiveState
        )
        .then((message) => this.successToast(message))
        .catch(({ message }) => this.errorToast(message));
    },
  },
};
</script>

<style lang="scss" scoped>
dd,
dl {
  margin: 0;
}

.quicklinks {
  display: grid;
  grid-gap: 1rem;
  padding: 1rem;
  white-space: nowrap;
  align-items: center;
}

@include media-breakpoint-up(sm) {
  .quicklinks {
    grid-template-columns: repeat(2, 1fr);
  }
}

@include media-breakpoint-up(xl) {
  .quicklinks {
    grid-template-columns: repeat(4, 1fr);
  }
}
</style>
