Cat UI
GitHub
  • Comece por aqui
    • 1. Instalação
      • Icones
      • Bootstrap
    • 2. Aplicando Tema
    • 3. Estrutura da aplicação
    • 4. Segurança
      • OpenID (Opcional)
      • Claims (Optional)
  • Menu
    • Sidenav
    • Toolbar
    • Dropdown
    • Tab
  • Exibição de Dados
    • Datatable
    • Componentes Dinâmicos
    • Exportação e Download de Dados
      • .csv
      • .xlsx
      • Visualizar .pdf
      • Download base64
    • Chip
  • Formulário
    • Formulário Dinâmico
    • Lista de Itens
    • Campos Personalizados
    • Stepper
    • Expansive Panel
    • Filtro Sobre Demanda
  • Janelas e Alertas
    • Dialog
    • Confirm
    • Alert
    • Snackbar
    • SideWindow
    • Notifications
    • Tooltip
  • Loaders
    • Spinner
    • Loader Page
  • Botões
    • Button
  • Abstrações
    • ServiceBase
    • ComponentBase
    • CRUDComponentBase
    • FormBase
  • Guias
    • Criando uma Aplicação de CRUD
      • Criando Projeto
      • Estrutura
      • Tela de Login
      • Menu
      • Tela de Adoção
      • Serviço HTTP
      • Lista de Pets
      • Formulário de Cadastro e Edição
      • Excluir Pet
      • Conclusão
Powered by GitBook
On this page

Was this helpful?

  1. Guias
  2. Criando uma Aplicação de CRUD

Lista de Pets

page-adoption.component.ts
import { AdoptionService } from './../../shared/services/adoption/adoption.service';
import { Component } from '@angular/core';
import { CatCRUDComponentBase } from '@catrx/ui/common';
import { CatDatatableService } from '@catrx/ui/datatable';
import { CatFormService, CatFormListOptions } from '@catrx/ui/form';
import { CatDialogService } from '@catrx/ui/dialog';
import { CatLoaderPageService } from '@catrx/ui/loader-page';
import { CatSnackbarService } from '@catrx/ui/snackbar';
import { CatConfirmService } from '@catrx/ui/confirm';
import { CatXlsxService } from '@catrx/ui/utils/xlsx';
import { PetSexOptions } from '../../shared/services/adoption/adoption.interface';
import { klArray } from '@koalarx/utils/operators/array';

@Component({
  templateUrl: './page-adoption.component.html',
  styles: [
    `
      cat-form {
        display: block;
        margin: 20px 20px 10px;
      }
    `,
  ],
})
export class PageAdoptionComponent extends CatCRUDComponentBase {
  filterForm = this.formService
    .build()
    .search('Raça', 'race', (builder) => builder.grid(3).generate())
    .select('Sexo', 'sex', (builder) =>
      builder
        .setOptions(
          klArray<CatFormListOptions>([{ value: '', name: 'Todos' }])
            .merge(PetSexOptions)
            .getValue()
        )
        .grid(3)
        .generate()
    )
    .onChange((filter) => this.filterValueChanges$.next(filter))
    .generate();

  listConfig = this.datatableService
    .build(this.filterValueChanges$, (filter) =>
      this.service.getDatatable(filter)
    )
    .setColumns(['Raça', 'Sexo', 'Peso', 'Idade'])
    .setActionButton({
      iconName: 'fa-solid fa-pen',
      tooltip: 'Editar',
      fnAction: (item) => console.log(item),
    })
    .setItemLine({
      columnIndex: 0,
      text: (item) => item.race,
    })
    .setItemLine({
      columnIndex: 1,
      text: (item) => (item.sex === 'M' ? 'Macho' : 'Fêmea'),
    })
    .setItemLine({
      columnIndex: 2,
      text: (item) => item.weight,
    })
    .setItemLine({
      columnIndex: 3,
      text: (item) => item.yearsOld ?? '-',
    })
    .hasSelection()
    .hasActions()
    .getSelection((selection) => (this.selection = selection))
    .getDatasource((datasource) => (this.datasource = datasource))
    .generate();

  constructor(
    formService: CatFormService,
    datatableService: CatDatatableService,
    loaderService: CatLoaderPageService,
    snackbarService: CatSnackbarService,
    dialogService: CatDialogService,
    confirmService: CatConfirmService,
    xlsxService: CatXlsxService,
    protected override service: AdoptionService
  ) {
    super(
      formService,
      datatableService,
      service,
      loaderService,
      snackbarService,
      dialogService,
      confirmService,
      { xlsx: xlsxService }
    );
  }

  export(filename: string): void {
    this.exportByService(
      {
        xlsx: { filename, sheetName: 'Pets para Adoção' },
      },
      this.service.exportPets(this.filterValueChanges$.getValue())
    );
  }
}
page-adoption.component.html
<cat-toolbar [config]="getToolbarInfo()"></cat-toolbar>

<cat-form [config]="filterForm"></cat-form>

<cat-datatable [config]="listConfig">
  <nav list-actions>
    <cat-icon-button (click)="export('Pets para Adoção')" icon="fa-solid fa-download"></cat-icon-button>
  </nav>
</cat-datatable>
PreviousServiço HTTPNextFormulário de Cadastro e Edição

Last updated 2 years ago

Was this helpful?