<commit_before>import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { DettaglioPartenza, Partenza } from '../../model/partenza.model';
import { ListaSquadre } from '../../interface/lista-squadre';
import { MezzoActionInterface } from '../../interface/mezzo-action.interface';
import { StatoRichiesta } from '../../enum/stato-richiesta.enum';
import { NgbDropdownConfig } from '@ng-bootstrap/ng-bootstrap';
import { EventoMezzo } from '../../interface/evento-mezzo.interface';
import { iconaStatiClass, nomeStatiSquadra } from '../../helper/function-composizione';
import { Store } from '@ngxs/store';
import { RemoveAnnullaStatoMezzi } from '../../store/actions/loading/loading.actions';
import { SintesiRichiesteService } from '../../../core/service/lista-richieste-service/lista-richieste.service';
import { Mezzo } from '../../model/mezzo.model';
import { TipoConcorrenzaEnum } from '../../enum/tipo-concorrenza.enum';
import { LockedConcorrenzaService } from '../../../core/service/concorrenza-service/locked-concorrenza.service';

@Component({
    selector: 'app-partenza',
    templateUrl: './partenza.component.html',
    styleUrls: ['./partenza.component.css']
})

export class PartenzaComponent implements OnInit {

    @Input() codiceRichiesta: string;
    @Input() idDaSganciare: string;
    @Input() partenza: DettaglioPartenza;
    @Input() codicePartenza: string;
    @Input() infoPartenza: Partenza;
    @Input() listaEventi: EventoMezzo[];
    @Input() inGestione: boolean;
    @Input() statoRichiesta: StatoRichiesta;
    @Input() index: string;
    @Input() annullaStatoMezzo: boolean;

    @Output() listaSquadre: EventEmitter<{ codiceMezzo: string, listaSquadre: ListaSquadre }> = new EventEmitter<{ codiceMezzo: string, listaSquadre: ListaSquadre }>();
    @Output() actionMezzo: EventEmitter<MezzoActionInterface> = new EventEmitter<MezzoActionInterface>();
    @Output() eliminaPartenza: EventEmitter<string> = new EventEmitter<string>();
    @Output() modificaPartenza: EventEmitter<string> = new EventEmitter<string>();
    @Output() selezioneMezzo: EventEmitter<Mezzo> = new EventEmitter<Mezzo>();

    statoRichiestaEnum = StatoRichiesta;
    tipoConcorrenzaEnum = TipoConcorrenzaEnum;

    listaEventiMezzo: EventoMezzo[] = [];

    constructor(private config: NgbDropdownConfig,
                private store: Store,
                private richiesteService: SintesiRichiesteService,
                private lockedConcorrenzaService: LockedConcorrenzaService) {
        config.placement = 'bottom-left';
    }

    ngOnInit(): void {
        this.checkListaEventiMezzo();
    }

    onAnnullaStato(idMezzo: string): void {
        const obj = {
            codiceRichiesta: this.infoPartenza ? this.infoPartenza.codiceRichiesta : null,
            codicePartenza: this.infoPartenza ? this.infoPartenza.codicePartenza : null,
            targaMezzo: this.infoPartenza.codiceMezzo ? this.infoPartenza.codiceMezzo : null,
        };
        this.richiesteService.eliminaPartenzaRichiesta(obj).subscribe(() => {
            this.store.dispatch(new RemoveAnnullaStatoMezzi(idMezzo));
        }, () => console.log('Richiesta di annullamento cambio stato fallita'));<commit_msg>Aggiunto loader su "Annulla Stato Mezzo"<commit_after>import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { DettaglioPartenza, Partenza } from '../../model/partenza.model';
import { ListaSquadre } from '../../interface/lista-squadre';
import { MezzoActionInterface } from '../../interface/mezzo-action.interface';
import { StatoRichiesta } from '../../enum/stato-richiesta.enum';
import { NgbDropdownConfig } from '@ng-bootstrap/ng-bootstrap';
import { EventoMezzo } from '../../interface/evento-mezzo.interface';
import { iconaStatiClass, nomeStatiSquadra } from '../../helper/function-composizione';
import { Store } from '@ngxs/store';
import { RemoveAnnullaStatoMezzi } from '../../store/actions/loading/loading.actions';
import { SintesiRichiesteService } from '../../../core/service/lista-richieste-service/lista-richieste.service';
import { Mezzo } from '../../model/mezzo.model';
import { TipoConcorrenzaEnum } from '../../enum/tipo-concorrenza.enum';
import { LockedConcorrenzaService } from '../../../core/service/concorrenza-service/locked-concorrenza.service';
import { StartLoadingActionMezzo, StopLoadingActionMezzo } from '../../../features/home/store/actions/richieste/richieste.actions';

@Component({
    selector: 'app-partenza',
    templateUrl: './partenza.component.html',
    styleUrls: ['./partenza.component.css']
})

export class PartenzaComponent implements OnInit {

    @Input() codiceRichiesta: string;
    @Input() idDaSganciare: string;
    @Input() partenza: DettaglioPartenza;
    @Input() codicePartenza: string;
    @Input() infoPartenza: Partenza;
    @Input() listaEventi: EventoMezzo[];
    @Input() inGestione: boolean;
    @Input() statoRichiesta: StatoRichiesta;
    @Input() index: string;
    @Input() annullaStatoMezzo: boolean;

    @Output() listaSquadre: EventEmitter<{ codiceMezzo: string, listaSquadre: ListaSquadre }> = new EventEmitter<{ codiceMezzo: string, listaSquadre: ListaSquadre }>();
    @Output() actionMezzo: EventEmitter<MezzoActionInterface> = new EventEmitter<MezzoActionInterface>();
    @Output() eliminaPartenza: EventEmitter<string> = new EventEmitter<string>();
    @Output() modificaPartenza: EventEmitter<string> = new EventEmitter<string>();
    @Output() selezioneMezzo: EventEmitter<Mezzo> = new EventEmitter<Mezzo>();

    statoRichiestaEnum = StatoRichiesta;
    tipoConcorrenzaEnum = TipoConcorrenzaEnum;

    listaEventiMezzo: EventoMezzo[] = [];

    constructor(private config: NgbDropdownConfig,
                private store: Store,
                private richiesteService: SintesiRichiesteService,
                private lockedConcorrenzaService: LockedConcorrenzaService) {
        config.placement = 'bottom-left';
    }

    ngOnInit(): void {
        this.checkListaEventiMezzo();
    }

    onAnnullaStato(codiceMezzo: string): void {
        const obj = {
            codiceRichiesta: this.infoPartenza ? this.infoPartenza.codiceRichiesta : null,
            codicePartenza: this.infoPartenza ? this.infoPartenza.codicePartenza : null,
            targaMezzo: this.infoPartenza.codiceMezzo ? this.infoPartenza.codiceMezzo : null,
        };
        this.store.dispatch(new StartLoadingActionMezzo(codiceMezzo));
        this.richiesteService.eliminaPartenzaRichiesta(obj).subscribe(() => {
            this.store.dispatch([
                new RemoveAnnullaStatoMezzi(codiceMezzo),
                new StopLoadingActionMezzo(codiceMezzo)
            ]);
        }, () => {
            console.error('Richiesta di annullamento cambio stato fallita');
            this.store.dispatch(new StopLoadingActionMezzo(codiceMezzo));
        });
{'fraction_non_alphanumeric': 0.1355858468677494, 'fraction_numerical': 0.0, 'mean_word_length': 3.8707627118644066, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4268387', 'n_tokens_mistral': 2156, 'n_tokens_neox': 2141, 'n_words': 388}