<template>
  <div class="row-history-entry__field-content">
    <div
      v-for="item in allItems"
      :key="item.id"
      class="row-history-field-select-option__diff"
      :class="{
        'row-history-field-select-option__diff--removed':
          removedItems.includes(item),
        'row-history-field-select-option__diff--added':
          addedItems.includes(item),
      }"
    >
      <div
        class="row-history-field-select-option__diff-inner"
        :class="'background-color--' + selectOptionColor(item)"
      >
        {{ selectOptionValue(item) }}
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'RowHistoryFieldMultipleSelect',
  props: {
    entry: {
      type: Object,
      required: true,
    },
    fieldIdentifier: {
      type: String,
      required: true,
    },
    field: {
      type: Object,
      required: false,
      default: null,
    },
  },
  computed: {
    allItems() {
      return this.removedItems.concat(this.addedItems)
    },
    removedItems() {
      return this.entry.before[this.fieldIdentifier].filter((before) => {
        return (
          this.entry.after[this.fieldIdentifier].findIndex(
            (item) => item === before
          ) === -1
        )
      })
    },
    addedItems() {
      return this.entry.after[this.fieldIdentifier].filter((after) => {
        return (
          this.entry.before[this.fieldIdentifier].findIndex(
            (item) => item === after
          ) === -1
        )
      })
    },
  },
  methods: {
    selectOptionValue(id) {
      return this.entry.fields_metadata[this.fieldIdentifier].select_options[id]
        ?.value
    },
    selectOptionColor(id) {
      return this.entry.fields_metadata[this.fieldIdentifier].select_options[id]
        ?.color
    },
  },
}
</script>