mirror of
https://github.com/Myxelium/Bridge-Multi.git
synced 2026-04-09 05:09:39 +00:00
50 lines
1.6 KiB
TypeScript
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()
|
|
}
|
|
}
|