Files
Bridge-Multi/src-angular/app/components/browse/status-bar/status-bar.component.ts
2023-12-25 02:49:46 -06:00

103 lines
3.3 KiB
TypeScript

import { Component, ElementRef, ViewChild } from '@angular/core'
import { keys, pickBy } from 'lodash'
import { DownloadService } from '../../../core/services/download.service'
import { SearchService } from '../../../core/services/search.service'
import { SelectionService } from '../../../core/services/selection.service'
@Component({
selector: 'app-status-bar',
templateUrl: './status-bar.component.html',
})
export class StatusBarComponent {
@ViewChild('downloadsModal', { static: false }) downloadsModalComponent: ElementRef
multipleCompleted = false
downloading = false
error = false
percent = 0
// TODO
// eslint-disable-next-line @typescript-eslint/no-explicit-any
batchResults: any[]
// eslint-disable-next-line @typescript-eslint/no-explicit-any
chartGroups: any[][]
constructor(
public downloadService: DownloadService,
public searchService: SearchService,
private selectionService: SelectionService,
) {
this.downloadService.downloadCountChanges.subscribe(downloadCount => {
if (downloadCount === 0) {
this.downloadsModalComponent.nativeElement.close()
}
})
}
get selectedGroupIds() {
return keys(pickBy(this.selectionService.selections)).map(k => Number(k))
}
async downloadSelected() {
// this.chartGroups = []
// // TODO
// // this.batchResults = await window.electron.invoke.getBatchSongDetails(this.selectedResults.map(result => result.id))
// const versionGroups = groupBy(this.batchResults, 'songID')
// for (const versionGroup of versionGroups) {
// if (versionGroup.findIndex(version => version.chartID !== versionGroup[0].chartID) !== -1) {
// // Must have multiple charts of this song
// this.chartGroups.push(versionGroup.filter(version => version.versionID === version.latestVersionID))
// }
// }
// if (this.chartGroups.length === 0) {
// for (const versions of versionGroups) {
// // this.searchService.sortChart(versions)
// const downloadVersion = versions[0]
// const downloadSong = this.selectedResults.find(song => song.id === downloadVersion.songID)!
// this.downloadService.addDownload(
// downloadVersion.versionID, {
// chartName: downloadVersion.chartName,
// artist: downloadSong.artist,
// charter: downloadVersion.charters,
// driveData: downloadVersion.driveData,
// })
// }
// } else {
// // TODO
// // $('#selectedModal').modal('show')
// // [download all charts for each song] [deselect these songs] [X]
// }
}
downloadAllCharts() {
// const songChartGroups = groupBy(this.batchResults, 'songID', 'chartID')
// for (const chart of songChartGroups) {
// // this.searchService.sortChart(chart)
// const downloadVersion = chart[0]
// const downloadSong = this.selectedResults.find(song => song.id === downloadVersion.songID)!
// this.downloadService.addDownload(
// downloadVersion.versionID, {
// chartName: downloadVersion.chartName,
// artist: downloadSong.artist,
// charter: downloadVersion.charters,
// driveData: downloadVersion.driveData,
// }
// )
// }
}
deselectSongsWithMultipleCharts() {
// TODO
// for (const chartGroup of this.chartGroups) {
// this.selectionService.deselectSong(chartGroup[0].songID)
// }
}
clearCompleted() {
this.downloadService.cancelAllCompleted()
}
}