TabbycatDebate/tabbycat

View on GitHub
tabbycat/templates/allocations/HoverPanel.vue

Summary

Maintainability
Test Coverage
<template>

  <transition name="slide-over">
    <div class="panel slideover-info" v-if="this.subject">
      <template v-if="panelRows">
        <div v-for="row in panelRows" class="list-group-item flex-horizontal pl-2 flex-justify">
          <div class="flex-align-start">
            <hover-panel-group :groups="row['left']"></hover-panel-group>
          </div>
          <div>
            <hover-panel-group :groups="row['right']"></hover-panel-group>
          </div>
        </div>
      </template>
    </div>
  </transition>

</template>

<script>
import { mapState, mapGetters } from 'vuex'
import HoverPanelTeamMixin from './HoverPanelTeamMixin.vue'
import HoverPanelAdjudicatorMixin from './HoverPanelAdjudicatorMixin.vue'
import HoverPanelSharedMixin from './HoverPanelSharedMixin.vue'
import HoverPanelGroup from './HoverPanelGroup.vue'

export default {
  components: { HoverPanelGroup },
  mixins: [HoverPanelTeamMixin, HoverPanelAdjudicatorMixin, HoverPanelSharedMixin],
  computed: {
    subject: function () {
      return this.hoverSubject
    },
    panelRows: function () {
      return [this.topRow, this.bottomRow]
    },
    topRow: function () {
      const leftFeatures = this.hoverType ? this['topleft' + this.hoverType] : []
      const rightFeatures = this.hoverType ? this['topright' + this.hoverType] : []
      return { left: leftFeatures, right: rightFeatures }
    },
    bottomRow: function () {
      const leftFeatures = this.hoverType ? this['bottomleft' + this.hoverType] : []
      const rightFeatures = this.hoverType ? this['bottomright' + this.hoverType] : []
      return { left: leftFeatures, right: rightFeatures }
    },
    ...mapState(['hoverSubject', 'hoverType', 'highlights', 'extra']),
    ...mapGetters(['allTeams', 'allInstitutions', 'allAdjudicators']),
  },
}
</script>