<template>
  <div class="w-full">
    <div v-if="missingParts.length" class="bg-error border-red-800 shadow-md p-4">
      <p class="text-sm mb-2">
        {{ $strings.LabelMissingParts }} <span class="text-sm">({{ missingParts.length }})</span>
      </p>
      <p class="text-sm font-mono">{{ missingPartChunks.join(', ') }}</p>
    </div>

    <div v-if="invalidParts.length" class="bg-error border-red-800 shadow-md p-4">
      <p class="text-sm mb-2">
        {{ $strings.LabelInvalidParts }} <span class="text-sm">({{ invalidParts.length }})</span>
      </p>
      <div>
        <p v-for="part in invalidParts" :key="part.filename" class="text-sm font-mono">{{ part.filename }}: {{ part.error }}</p>
      </div>
    </div>

    <tables-tracks-table :title="$strings.LabelStatsAudioTracks" :tracks="tracksWithAudioFile" :is-file="isFile" :library-item-id="libraryItemId" class="mt-6" />
  </div>
</template>

<script>
export default {
  props: {
    libraryItemId: String,
    media: {
      type: Object,
      default: () => {}
    },
    isFile: Boolean
  },
  data() {
    return {}
  },
  computed: {
    tracksWithAudioFile() {
      return this.media.tracks.map((track) => {
        track.audioFile = this.media.audioFiles.find((af) => af.metadata.path === track.metadata.path)
        return track
      })
    },
    missingPartChunks() {
      if (this.missingParts === 1) return this.missingParts[0]
      var chunks = []

      var currentIndex = this.missingParts[0]
      var currentChunk = [this.missingParts[0]]

      for (let i = 1; i < this.missingParts.length; i++) {
        var partIndex = this.missingParts[i]
        if (currentIndex === partIndex - 1) {
          currentChunk.push(partIndex)
          currentIndex = partIndex
        } else {
          // console.log('Chunk ended', currentChunk.join(', '), currentIndex, partIndex)
          if (currentChunk.length === 0) {
            console.error('How is current chunk 0?', currentChunk.join(', '))
          }
          chunks.push(currentChunk)
          currentChunk = [partIndex]
          currentIndex = partIndex
        }
      }
      if (currentChunk.length) {
        chunks.push(currentChunk)
      }
      chunks = chunks.map((chunk) => {
        if (chunk.length === 1) return chunk[0]
        else return `${chunk[0]}-${chunk[chunk.length - 1]}`
      })
      return chunks
    },
    missingParts() {
      return this.media.missingParts || []
    },
    invalidParts() {
      return this.media.invalidParts || []
    }
  },
  methods: {},
  mounted() {}
}
</script>