<commit_before>import { Component, OnDestroy, OnInit } from '@angular/core';
import { Select, Store } from '@ngxs/store';
import { RicercaFilterbarState } from '../../../features/home/store/states/filterbar/ricerca-filterbar.state';
import { Observable, Subscription } from 'rxjs';
import { PaginationState } from '../../store/states/pagination/pagination.state';
import { SchedeContattoState } from '../../../features/home/store/states/schede-contatto/schede-contatto.state';
import { SchedaContatto } from '../../interface/scheda-contatto.interface';
import { ContatoriSchedeContatto } from '../../interface/contatori-schede-contatto.interface';
import { RangeSchedeContattoEnum } from '../../enum/range-schede-contatto';
import { ClassificazioneSchedaContatto } from '../../enum/classificazione-scheda-contatto.enum';
import { MergeSchedeContattoState } from '../../../features/home/store/states/schede-contatto/merge-schede-contatto.state';
import { LoadingState } from '../../store/states/loading/loading.state';
import { PermissionFeatures } from '../../enum/permission-features.enum';
import {
    ClearSchedaContattoHover,
    GetListaSchedeContatto,
    OpenDettaglioSchedaContatto,
    SetRangeVisualizzazioneSchedeContatto,
    SetSchedaContattoGestita,
    SetSchedaContattoHover,
    SetSchedaContattoTelefonata,
    SetTabAttivo,
    ToggleCollapsed,
    UndoMergeSchedeContatto
} from '../../../features/home/store/actions/schede-contatto/schede-contatto.actions';
import { ToggleSchedeContatto } from '../../../features/home/store/actions/view/view.actions';
import { ClearMergeSchedeContatto, InitSaveMergeSchedeContatto, SetMergeSchedaId, ToggleModalitaMerge } from '../../../features/home/store/actions/schede-contatto/merge-schede-contatto.actions';
import { CheckboxInterface } from '../../interface/checkbox.interface';
import { NgbActiveModal, NgbModal, NgbTabChangeEvent } from '@ng-bootstrap/ng-bootstrap';
import { ConfirmModalComponent } from '../confirm-modal/confirm-modal.component';
import { ClearRicercaFilterbar } from '../../../features/home/store/actions/filterbar/ricerca-richieste.actions';

@Component({
    selector: 'app-lista-schede-contatto-modal',
    templateUrl: './lista-schede-contatto-modal.component.html',
    styleUrls: ['./lista-schede-contatto-modal.component.scss']
})
export class ListaSchedeContattoModalComponent implements OnInit, OnDestroy {

    @Select(RicercaFilterbarState.ricerca) ricerca$: Observable<string>;
    ricerca: string;
    @Select(PaginationState.pageSize) pageSize$: Observable<number>;
    @Select(PaginationState.pageSizes) pageSizes$: Observable<number[]>;
    @Select(PaginationState.totalItems) totalItems$: Observable<number>;
    @Select(PaginationState.page) page$: Observable<number>;

    @Select(SchedeContattoState.schedeContatto) schedeContatto$: Observable<SchedaContatto[]>;
    schedeContatto: SchedaContatto[];

    @Select(SchedeContattoState.idVisualizzati) idVisualizzati$: Observable<string[]>;
    @Select(SchedeContattoState.idCollapsed) idCollapsed$: Observable<string[]>;

    @Select(SchedeContattoState.codiceSchedaContattoHover) codiceSchedaContattoHover$: Observable<string>;
    codiceSchedaContattoHover: string;
    @Select(SchedeContattoState.contatoriSchedeContatto) contatoriSchedeContatto$: Observable<ContatoriSchedeContatto>;
    contatoriSchedeContatto: ContatoriSchedeContatto;
    @Select(SchedeContattoState.rangeVisualizzazione) rangeVisualizzazione$: Observable<RangeSchedeContattoEnum>;
    rangeVisualizzazione: RangeSchedeContattoEnum;
    @Select(SchedeContattoState.tabAttivo) tabAttivo$: Observable<ClassificazioneSchedaContatto>;

    @Select(MergeSchedeContattoState.statoModalita) statoModalita$: Observable<boolean>;
    statoModalita: boolean;
    @Select(MergeSchedeContattoState.classificazione) classificazioneMerge$: Observable<ClassificazioneSchedaContatto>;
    classificazioneMerge: ClassificazioneSchedaContatto;
    @Select(MergeSchedeContattoState.schedeSelezionateId) idSelezionatiMerge$: Observable<string[]>;
    idSelezionatiMerge: string[];
    @Select(LoadingState.loading) loading$: Observable<boolean>;
    @Select(SchedeContattoState.loadingSchedeContatto) loadingSchedeContatto$: Observable<boolean>;

    permessiFeature = PermissionFeatures;

    private subscriptions: Subscription = new Subscription();

    constructor(private store: Store,
                private modal: NgbModal,
                private activeModal: NgbActiveModal) {
        this.getRicerca();
        this.getSchedeContatto();
        this.getSchedeContattoHover();
        this.getRangeVisualizzazioneContatoriSchedeContatto();
        this.getContatoriSchedeContatto();
        this.subscriptions.add(this.statoModalita$.subscribe((stato: boolean) => this.statoModalita = stato));
        this.subscriptions.add(this.classificazioneMerge$.subscribe((classificazione: ClassificazioneSchedaContatto) => this.classificazioneMerge = classificazione));
        this.subscriptions.add(this.idSelezionatiMerge$.subscribe((idSelezionatiMerge: string[]) => this.idSelezionatiMerge = idSelezionatiMerge));

    }

    ngOnInit(): void {
        console.log('Componente Schede Contatto creato');
    }

    ngOnDestroy(): void {
        this.store.dispatch([
            new ClearMergeSchedeContatto(),
            new ClearRicercaFilterbar()
        ]);
        this.subscriptions.unsubscribe();
        console.log('Componente Schede Contatto distrutto');
    }

    getRicerca(): void {
        this.subscriptions.add(
            this.ricerca$.subscribe((ricerca: string) => {
                if (ricerca || ricerca === '') {
                    this.ricerca = ricerca;
                    this.store.dispatch(new GetListaSchedeContatto(null, RangeSchedeContattoEnum.Ultimi30));
                }
            })
        );
    }

    getSchedeContatto(): void {
        this.store.dispatch(new GetListaSchedeContatto(null, RangeSchedeContattoEnum.Ultimi30));
        this.subscriptions.add(
            this.schedeContatto$.subscribe((schedeContatto: SchedaContatto[]) => {
                this.schedeContatto = schedeContatto;
            })
        );
    }

    getSchedeContattoHover(): void {
        this.subscriptions.add(
            this.codiceSchedaContattoHover$.subscribe((codiceSchedaContatto: string) => {
                this.codiceSchedaContattoHover = codiceSchedaContatto;<commit_msg>Schede Contatto: fix reset filtri<commit_after>import { Component, OnDestroy, OnInit } from '@angular/core';
import { Select, Store } from '@ngxs/store';
import { RicercaFilterbarState } from '../../../features/home/store/states/filterbar/ricerca-filterbar.state';
import { Observable, Subscription } from 'rxjs';
import { PaginationState } from '../../store/states/pagination/pagination.state';
import { SchedeContattoState } from '../../../features/home/store/states/schede-contatto/schede-contatto.state';
import { SchedaContatto } from '../../interface/scheda-contatto.interface';
import { ContatoriSchedeContatto } from '../../interface/contatori-schede-contatto.interface';
import { RangeSchedeContattoEnum } from '../../enum/range-schede-contatto';
import { ClassificazioneSchedaContatto } from '../../enum/classificazione-scheda-contatto.enum';
import { MergeSchedeContattoState } from '../../../features/home/store/states/schede-contatto/merge-schede-contatto.state';
import { LoadingState } from '../../store/states/loading/loading.state';
import { PermissionFeatures } from '../../enum/permission-features.enum';
import {
    ClearFiltriSchedeContatto, ClearListaSchedeContatto,
    ClearSchedaContattoHover,
    GetListaSchedeContatto,
    OpenDettaglioSchedaContatto,
    SetRangeVisualizzazioneSchedeContatto,
    SetSchedaContattoGestita,
    SetSchedaContattoHover,
    SetSchedaContattoTelefonata,
    SetTabAttivo,
    ToggleCollapsed,
    UndoMergeSchedeContatto
} from '../../../features/home/store/actions/schede-contatto/schede-contatto.actions';
import { ToggleSchedeContatto } from '../../../features/home/store/actions/view/view.actions';
import { ClearMergeSchedeContatto, InitSaveMergeSchedeContatto, SetMergeSchedaId, ToggleModalitaMerge } from '../../../features/home/store/actions/schede-contatto/merge-schede-contatto.actions';
import { CheckboxInterface } from '../../interface/checkbox.interface';
import { NgbActiveModal, NgbModal, NgbTabChangeEvent } from '@ng-bootstrap/ng-bootstrap';
import { ConfirmModalComponent } from '../confirm-modal/confirm-modal.component';
import { ClearRicercaFilterbar } from '../../../features/home/store/actions/filterbar/ricerca-richieste.actions';

@Component({
    selector: 'app-lista-schede-contatto-modal',
    templateUrl: './lista-schede-contatto-modal.component.html',
    styleUrls: ['./lista-schede-contatto-modal.component.scss']
})
export class ListaSchedeContattoModalComponent implements OnInit, OnDestroy {

    @Select(RicercaFilterbarState.ricerca) ricerca$: Observable<string>;
    ricerca: string;
    @Select(PaginationState.pageSize) pageSize$: Observable<number>;
    @Select(PaginationState.pageSizes) pageSizes$: Observable<number[]>;
    @Select(PaginationState.totalItems) totalItems$: Observable<number>;
    @Select(PaginationState.page) page$: Observable<number>;

    @Select(SchedeContattoState.schedeContatto) schedeContatto$: Observable<SchedaContatto[]>;
    schedeContatto: SchedaContatto[];

    @Select(SchedeContattoState.idVisualizzati) idVisualizzati$: Observable<string[]>;
    @Select(SchedeContattoState.idCollapsed) idCollapsed$: Observable<string[]>;

    @Select(SchedeContattoState.codiceSchedaContattoHover) codiceSchedaContattoHover$: Observable<string>;
    codiceSchedaContattoHover: string;
    @Select(SchedeContattoState.contatoriSchedeContatto) contatoriSchedeContatto$: Observable<ContatoriSchedeContatto>;
    contatoriSchedeContatto: ContatoriSchedeContatto;
    @Select(SchedeContattoState.rangeVisualizzazione) rangeVisualizzazione$: Observable<RangeSchedeContattoEnum>;
    rangeVisualizzazione: RangeSchedeContattoEnum;
    @Select(SchedeContattoState.tabAttivo) tabAttivo$: Observable<ClassificazioneSchedaContatto>;

    @Select(MergeSchedeContattoState.statoModalita) statoModalita$: Observable<boolean>;
    statoModalita: boolean;
    @Select(MergeSchedeContattoState.classificazione) classificazioneMerge$: Observable<ClassificazioneSchedaContatto>;
    classificazioneMerge: ClassificazioneSchedaContatto;
    @Select(MergeSchedeContattoState.schedeSelezionateId) idSelezionatiMerge$: Observable<string[]>;
    idSelezionatiMerge: string[];
    @Select(LoadingState.loading) loading$: Observable<boolean>;
    @Select(SchedeContattoState.loadingSchedeContatto) loadingSchedeContatto$: Observable<boolean>;

    permessiFeature = PermissionFeatures;

    private subscriptions: Subscription = new Subscription();

    constructor(private store: Store,
                private modal: NgbModal,
                private activeModal: NgbActiveModal) {
        this.getRicerca();
        this.getSchedeContatto();
        this.getSchedeContattoHover();
        this.getRangeVisualizzazioneContatoriSchedeContatto();
        this.getContatoriSchedeContatto();
        this.subscriptions.add(this.statoModalita$.subscribe((stato: boolean) => this.statoModalita = stato));
        this.subscriptions.add(this.classificazioneMerge$.subscribe((classificazione: ClassificazioneSchedaContatto) => this.classificazioneMerge = classificazione));
        this.subscriptions.add(this.idSelezionatiMerge$.subscribe((idSelezionatiMerge: string[]) => this.idSelezionatiMerge = idSelezionatiMerge));

    }

    ngOnInit(): void {
        console.log('Componente Schede Contatto creato');
    }

    ngOnDestroy(): void {
        this.store.dispatch([
            new ClearFiltriSchedeContatto(),
            new ClearListaSchedeContatto(),
            new ClearMergeSchedeContatto(),
            new ClearRicercaFilterbar()
        ]);
        this.subscriptions.unsubscribe();
        console.log('Componente Schede Contatto distrutto');
    }

    getRicerca(): void {
        this.subscriptions.add(
            this.ricerca$.subscribe((ricerca: string) => {
                if (ricerca || ricerca === '') {
                    this.ricerca = ricerca;
                    this.store.dispatch(new GetListaSchedeContatto(null, RangeSchedeContattoEnum.Ultimi30));
                }
            })
        );
    }

    getSchedeContatto(): void {
        this.store.dispatch(new GetListaSchedeContatto(null, RangeSchedeContattoEnum.Ultimi30));
        this.subscriptions.add(
            this.schedeContatto$.subscribe((schedeContatto: SchedaContatto[]) => {
                this.schedeContatto = schedeContatto;
            })
        );
    }

    getSchedeContattoHover(): void {
        this.subscriptions.add(
            this.codiceSchedaContattoHover$.subscribe((codiceSchedaContatto: string) => {
                this.codiceSchedaContattoHover = codiceSchedaContatto;
{'fraction_non_alphanumeric': 0.120218159471501, 'fraction_numerical': 0.0006145337225380243, 'mean_word_length': 4.27298501417578, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 49, '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': '4447744', 'n_tokens_mistral': 3827, 'n_tokens_neox': 3739, 'n_words': 527}