docs: configurando deploy via ssh para angular

This commit is contained in:
2026-01-02 19:55:27 -05:00
parent a16d0f0701
commit b0beb50d59
544 changed files with 97696 additions and 0 deletions

View File

@@ -0,0 +1,444 @@
<div class="d-flex flex-column wrapper">
<div class="filter">
<form class="k-form shadow bg-body rounded" [formGroup]="formFilter">
<h4>FAIXA DE COMISSÃO PARCEIROS</h4>
<div class="row mt-2">
<form [formGroup]="formFilter">
<fieldset class="k-form-fieldset">
<label>
<span>Tipo do parceiro</span>
<ul class="k-radio-list k-list-horizontal">
<li class="k-radio-item">
<label>
<input
type="radio"
value="B"
kendoRadioButton
formControlName="typeFilter"
/>
<span> Bella Obra</span>
</label>
</li>
<li class="k-radio-item">
<label>
<input
type="radio"
value="P"
kendoRadioButton
formControlName="typeFilter"
/>
<span> Parceiro</span>
</label>
</li>
<li class="k-radio-item">
<label>
<input
type="radio"
kendoRadioButton
value="M"
formControlName="typeFilter"
/>
<span> Mestre</span>
</label>
</li>
<li class="k-radio-item">
<label>
<input
type="radio"
kendoRadioButton
value="T"
formControlName="typeFilter"
/>
<span> Todos</span>
</label>
</li>
</ul>
</label>
</fieldset>
</form>
</div>
<div class="mt-3 row-buttons">
<button
kendoButton
data-bs-toggle="modal"
data-bs-target="#modalRange"
(click)="createPartnerRange()"
>
INCLUIR
</button>
<button
kendoButton
rounded="medium"
themeColor="waring"
(click)="searchRange()"
>
Pesquisar
</button>
</div>
</form>
</div>
<main class="flex-fill mt-3">
<div class="mt-3">
<kendo-grid
[kendoGridBinding]="gridView"
class="gridPartnerCategory"
(edit)="editPartnerRange($event)"
(remove)="confirmDelete($event)"
[sortable]="true"
[reorderable]="true"
[resizable]="true"
[columnMenu]="{ filter: true }"
>
<kendo-grid-column title="Código" field="id" width="80">
</kendo-grid-column>
<kendo-grid-column
title="Tipo Parceiro"
field="descriptionType"
width="100"
>
</kendo-grid-column>
<kendo-grid-column
field="rangeIni"
title="Faixa Inicial"
[width]="100"
filter="numeric"
>
<ng-template kendoGridCellTemplate let-dataItem>
<span [ngClass]="{ 'red text-bold': dataItem.rangeIni < 0 }">{{
dataItem.rangeIni | number : "1.2-2"
}}</span>
</ng-template>
</kendo-grid-column>
<kendo-grid-column
field="rangeFin"
title="Faixa Inicial"
[width]="100"
filter="numeric"
>
<ng-template
kendoGridCellTemplate
let-dataItem
style="text-align: right"
>
<span [ngClass]="{ 'red text-bold': dataItem.rangeFin < 0 }">{{
dataItem.rangeFin | number : "1.2-2"
}}</span>
</ng-template>
</kendo-grid-column>
<kendo-grid-column title="% Comissão" field="percentComiss" width="150">
</kendo-grid-column>
<kendo-grid-column title="Ações" [width]="60">
<ng-template kendoGridCellTemplate let-dataItem>
<div class="row g-2 justify-content-start">
<div class="col-3 me-2" kendoGridEditCommand>
<i
class="bi bi-pencil text-success"
data-bs-toggle="modal"
data-bs-target="#modalRange"
></i>
</div>
<div class="col-3 me-2" kendoGridRemoveCommand>
<i
class="bi bi-trash text-error"
></i>
</div>
</div>
</ng-template>
</kendo-grid-column>
<ng-template kendoGridNoRecordsTemplate>
<div>
<kendo-badge-container>
<kendo-icon name="user" size="large"></kendo-icon>
<kendo-badge position="inside" themeColor="error">
<kendo-icon name="close"></kendo-icon>
</kendo-badge>
</kendo-badge-container>
</div>
<p>
Não foram localizadas categorias com os filtros inforamdos,
verifique a pesquisa.
</p>
</ng-template>
</kendo-grid>
<!-- Modal -->
<!-- Vertically centered modal -->
<!-- Modal -->
<div
class="modal fade"
id="modalRange"
tabindex="-1"
aria-labelledby="modalRange"
aria-hidden="true"
>
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modalRange">
Cadastro de faixa de comissão
</h5>
<button
type="button"
class="btn-close"
data-bs-dismiss="modal"
aria-label="Close"
></button>
</div>
<div class="modal-body">
<form class="k-form" [formGroup]="formRange">
<fieldset class="k-form-fieldset">
<label>
<span>Tipo do parceiro</span>
<ul class="k-radio-list k-list-horizontal">
<li class="k-radio-item">
<label>
<input
type="radio"
#mestre
value="B"
kendoRadioButton
formControlName="type"
/>
<span> Bella Obra</span>
</label>
</li>
<li class="k-radio-item">
<label>
<input
type="radio"
#mestre
value="P"
kendoRadioButton
formControlName="type"
/>
<span> Parceiro</span>
</label>
</li>
<li class="k-radio-item">
<label>
<input
type="radio"
#parceiro
kendoRadioButton
value="M"
formControlName="type"
/>
<span> Mestre</span>
</label>
</li>
</ul>
</label>
<div class="row mt-3">
<div class="col-6">
<label>
<span>Faixa Inicial</span>
<input
class="input-range"
formControlName="rangeIni"
type="number"
[min]="0"
[max]="90"
format="n2"
/>
</label>
</div>
<div class="col-6">
<label>
<span>Faixa Final</span>
<input
class="input-range"
formControlName="rangeFin"
type="number"
[min]="0"
[max]="90"
format="n2"
/>
</label>
</div>
</div>
<div class="mt-3">
<label>
<span> % Comissão </span>
<input
class="input-range"
formControlName="percentComiss"
type="number"
[min]="0"
[max]="90"
format="n2"
/>
</label>
</div>
</fieldset>
</form>
</div>
<div class="modal-footer">
<button
type="button"
class="btn btn-secondary"
data-bs-dismiss="modal"
>
Fechar
</button>
<button
type="button"
class="btn btn-primary"
data-bs-dismiss="modal"
(click)="savePartnerRange()"
>
Salvar
</button>
</div>
</div>
</div>
</div>
<!--div
class="modal fade modal-dialog-scrollable"
id="exampleModal"
tabindex="-1"
aria-labelledby="modalRange"
aria-hidden="true"
data-bs-backdrop="static" data-bs-keyboard="false"
-->
<!--div class="modal-dialog"-->
<!--div class="modal-dialog">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">
Cadastro de faixa de comissão
</h5>
<button
type="button"
class="btn-close"
data-bs-dismiss="modal"
aria-label="Close"
></button>
</div>
<div class="modal-body">
<form class="k-form" [formGroup]="formRange">
<fieldset class="k-form-fieldset">
<label>
<span>Tipo do parceiro</span>
<ul class="k-radio-list k-list-horizontal">
<li class="k-radio-item">
<label>
<input
type="radio"
#mestre
value="M"
kendoRadioButton
formControlName="type"
/>
<span> Parceiro</span>
</label>
</li>
<li class="k-radio-item">
<label>
<input
type="radio"
#parceiro
kendoRadioButton
value="P"
formControlName="type"
/>
<span> Mestre</span>
</label>
</li>
</ul>
</label>
<div class="row mt-3">
<div class="col-6">
<label>
<span>Faixa Inicial</span>
<input
class="input-range"
formControlName="rangeIni"
type="number"
[min]="0"
[max]="90"
format="n2"
/>
</label>
</div>
<div class="col-6">
<label>
<span>Faixa Final</span>
<input
class="input-range"
formControlName="rangeFin"
type="number"
[min]="0"
[max]="90"
format="n2"
/>
</label>
</div>
</div>
<div class="mt-3">
<label>
<span> % Comissão </span>
<input
class="input-range"
formControlName="percentComiss"
[min]="0"
[max]="90"
format="p"
/>
</label>
</div>
</fieldset>
</form>
</div>
<div class="modal-footer">
<button
type="button"
class="btn btn-secondary"
data-bs-dismiss="modal"
>
Fechar
</button>
<button
type="button"
class="btn btn-primary"
data-bs-dismiss="modal"
(click)="savePartnerRange()"
>
Salvar
</button>
</div>
</!--div>
</div>
</div-->
</div>
</main>
</div>
<kendo-dialog
title="Exclusão de faixa de comissão"
*ngIf="opened"
(close)="resultDelete('cancel')"
[minWidth]="250"
[width]="450"
>
<p style="margin: 30px; text-align: center;">
Confirma exclusão da faixa?
</p>
<kendo-dialog-actions>
<button kendoButton (click)="resultDelete('no')">Não</button>
<button kendoButton (click)="resultDelete('yes')" themeColor="primary">
Sim
</button>
</kendo-dialog-actions>
</kendo-dialog>

View File

@@ -0,0 +1,37 @@
.wrapper {
min-height: calc(100vh - 80px);
}
.gridPartnerCatetgory {
max-height: calc(100vh - 410px);
}
.form-partner {
display: flex;
justify-content: start;
}
.wrap {
display: flex;
justify-content: space-between;
}
.wrap .arrival-date {
width: 90%;
margin-right: 18px;
}
.k-form {
width: 100%;
background-color: white;
padding: 25px;
}
label {
width: 100%;
}
.row-buttons {
display: flex;
justify-content: start space-between;
}
.row-buttons button {
margin-right: 10px;
}

View File

@@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { PartnerRangeComponent } from './partner-range.component';
describe('PartnerRangeComponent', () => {
let component: PartnerRangeComponent;
let fixture: ComponentFixture<PartnerRangeComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ PartnerRangeComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(PartnerRangeComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@@ -0,0 +1,141 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Observable, of } from 'rxjs';
import { PartnerRange } from 'src/app/models/partner-range.model';
import { PartnerRangeService } from 'src/app/services/partner-range.service';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { AuthService } from 'src/app/auth/services/auth.service';
import { User } from 'src/app/models/user.model';
import { catchError, tap } from 'rxjs/operators';
import { DataBindingDirective } from '@progress/kendo-angular-grid';
@Component({
selector: 'app-partner-range',
templateUrl: './partner-range.component.html',
styleUrls: ['./partner-range.component.scss']
})
export class PartnerRangeComponent implements OnInit {
@ViewChild(DataBindingDirective) dataBinding: DataBindingDirective;
public gridView: unknown[];
partnerRange$: Observable<PartnerRange[]>;
formRange: FormGroup;
rangeIni = 0;
rangeFin = 0;
percent = 0;
partnerRangeSelect: PartnerRange = null;
loading = false;
formFilter: FormGroup;
public opened = false;
selectedPartnerRange: PartnerRange;
public resultDelete(status: string): void {
console.log(`Dialog result: ${status}`);
this.opened = false;
if (status == 'yes') {
this.deleteRange();
}
}
constructor(
private readonly partnerRangeService: PartnerRangeService,
private route: ActivatedRoute,
private router: Router,
private authService: AuthService
) {
}
ngOnInit(): void {
this.formFilter = new FormGroup({
typeFilter: new FormControl('T', []),
});
this.partnerRangeService.getPartnerRange('T').subscribe(range => {
this.gridView = range;
});
this.formRange = new FormGroup({
id: new FormControl(),
rangeIni: new FormControl(this.rangeIni, [Validators.required]),
rangeFin: new FormControl(this.rangeFin, [Validators.required]),
percentComiss: new FormControl(this.percent, [Validators.required]),
type: new FormControl(),
});
}
editPartnerRange(data) {
console.log(data);
this.partnerRangeSelect = data.dataItem as PartnerRange;
this.formRange.patchValue({
id: this.partnerRangeSelect.id,
rangeIni: this.partnerRangeSelect.rangeIni,
rangeFin: this.partnerRangeSelect.rangeFin,
percentComiss: this.partnerRangeSelect.percentComiss,
type: this.partnerRangeSelect.type,
});
// this.router.navigate([`/partner/range/edit/range/${data.dataItem.id}`]);
}
confirmDelete(data: any) {
console.log(data);
this.selectedPartnerRange = data.dataItem as PartnerRange;
this.opened = true;
}
createPartnerRange() {
this.partnerRangeSelect = null;
this.formRange.reset();
}
savePartnerRange() {
console.log(this.formRange.value);
const user = this.authService.getUser();
console.log(this.formRange.get('rangeIni').value);
if ( this.partnerRangeSelect == null ){
this.partnerRangeSelect = new PartnerRange();
}
this.partnerRangeSelect.rangeIni = this.formRange.get('rangeIni').value;
this.partnerRangeSelect.rangeFin = this.formRange.get('rangeFin').value;
this.partnerRangeSelect.percentComiss = this.formRange.get('percentComiss').value;
this.partnerRangeSelect.type = this.formRange.get('type').value;
this.partnerRangeSelect.createUserId = user.id;
this.partnerRangeSelect.updateUserId = user.id;
this.loading = true;
this.partnerRangeService.createOrReplace(this.partnerRangeSelect).pipe(
tap(() => {
this.searchRange();
this.loading = false;
}),
catchError((error) => {
console.log(error);
return of(error.message);
})
).subscribe();
}
searchRange() {
const type = this.formFilter.get('typeFilter').value;
this.partnerRangeService.getPartnerRange(type).subscribe(range => {
this.gridView = range;
});
}
deleteRange() {
this.loading = true;
this.partnerRangeService.DeletePartnerRangeById(this.selectedPartnerRange.id.toString())
.pipe(
tap(() => {
this.searchRange();
this.loading = false;
}),
catchError((error) => {
console.log(error);
return of(error.message);
})
).subscribe();
}
}