SpeciesFileGroup/taxonworks

View on GitHub
app/javascript/vue/tasks/observation_matrices/new/components/shared/tag_list.vue

Summary

Maintainability
Test Coverage
<template>
  <div>
    <template
      v-for="(item, key) in list"
      :key="key"
    >
      <tag-item
        v-if="!isAlreadyCreated(item)"
        :item="item"
        display="object_tag"
        @select="sendItem"
      />
    </template>
  </div>
</template>
<script>
import { GetterNames } from '../../store/getters/getters'
import TagItem from '@/components/tag_item.vue'

export default {
  components: {
    TagItem
  },
  props: {
    list: {
      type: Array,
      required: true
    }
  },
  computed: {
    isRow() {
      return this.$store.getters[GetterNames.GetMatrixView] == 'row'
        ? true
        : false
    },
    columnsListDynamic() {
      return this.$store.getters[GetterNames.GetMatrixColumnsDynamic]
    },
    rowsListDynamic() {
      return this.$store.getters[GetterNames.GetMatrixRowsDynamic]
    }
  },
  methods: {
    sendItem(item) {
      this.$emit('send', item)
    },
    isAlreadyCreated(item) {
      if (!Array.isArray(this.list)) return
      if (this.isRow) {
        return this.rowsListDynamic.find((value) => {
          return value.controlled_vocabulary_term_id == item.id
        })
      } else {
        return this.columnsListDynamic.find((value) => {
          return value.controlled_vocabulary_term_id == item.id
        })
      }
    }
  }
}
</script>