Files
Bridge-Multi/src-angular/app/components/browse/status-bar/status-bar.component.ts
2025-03-09 16:55:53 -05:00

50 lines
1.6 KiB
TypeScript

import { Component, ElementRef, ViewChild } from '@angular/core'
import _ from 'lodash'
import { removeStyleTags } from '../../../../../src-shared/UtilFunctions.js'
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',
standalone: false,
})
export class StatusBarComponent {
@ViewChild('downloadsModal', { static: false }) downloadsModalComponent: ElementRef
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() {
const selectedGroupIds = this.selectedGroupIds
const selectedCharts = this.searchService.groupedSongs.filter(gs => selectedGroupIds.includes(gs[0].groupId))
for (const chart of _.uniqBy(selectedCharts, gs => `${removeStyleTags(gs[0].artist ?? 'Unknown Artist')
} - ${removeStyleTags(gs[0].name ?? 'Unknown Name')
} (${removeStyleTags(gs[0].charter ?? 'Unknown Charter')})`)) {
this.downloadService.addDownload(chart[0])
}
}
clearCompleted() {
this.downloadService.cancelAllCompleted()
}
}