Feature: Download Products
Fix: Add user Fix: Added 5000 page size in products Fix: Local Time Pipe was showing the wrong time
This commit is contained in:
@ -1,6 +1,9 @@
|
||||
<mat-card>
|
||||
<mat-card-title-group>
|
||||
<mat-card-title>Products</mat-card-title>
|
||||
<button mat-button mat-icon-button *ngIf="dataSource.data.length" (click)="exportCsv()">
|
||||
<mat-icon>save_alt</mat-icon>
|
||||
</button>
|
||||
<a mat-button [routerLink]="['/Product']">
|
||||
<mat-icon>add_box</mat-icon>
|
||||
Add
|
||||
@ -77,7 +80,7 @@
|
||||
[length]="dataSource.data.length"
|
||||
[pageIndex]="0"
|
||||
[pageSize]="50"
|
||||
[pageSizeOptions]="[25, 50, 100, 250]">
|
||||
[pageSizeOptions]="[25, 50, 100, 250, 5000]">
|
||||
</mat-paginator>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
@ -6,6 +6,7 @@ import {ActivatedRoute} from '@angular/router';
|
||||
import {debounceTime, distinctUntilChanged, startWith} from 'rxjs/operators';
|
||||
import {FormBuilder, FormGroup} from '@angular/forms';
|
||||
import {Observable} from 'rxjs';
|
||||
import {ToCsvService} from "../../shared/to-csv.service";
|
||||
|
||||
@Component({
|
||||
selector: 'app-product-list',
|
||||
@ -23,7 +24,7 @@ export class ProductListComponent implements OnInit, AfterViewInit {
|
||||
/** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */
|
||||
displayedColumns: string[];
|
||||
|
||||
constructor(private route: ActivatedRoute, private fb: FormBuilder) {
|
||||
constructor(private route: ActivatedRoute, private fb: FormBuilder, private toCsv: ToCsvService) {
|
||||
this.showExtended = false;
|
||||
this.createForm();
|
||||
this.filter = this.listenToFilterChange();
|
||||
@ -73,4 +74,24 @@ export class ProductListComponent implements OnInit, AfterViewInit {
|
||||
}
|
||||
}
|
||||
|
||||
exportCsv() {
|
||||
const headers = {
|
||||
Code: 'code',
|
||||
Name: 'name',
|
||||
Units: 'units',
|
||||
Fraction: 'fraction',
|
||||
FractionUnits: 'fractionUnits',
|
||||
CostPrice: 'costPrice',
|
||||
Yield: 'yield',
|
||||
ProductGroup: 'productGroup'
|
||||
};
|
||||
|
||||
const csvData = new Blob([this.toCsv.toCsv(headers, this.dataSource.data)], {type: 'text/csv;charset=utf-8;'});
|
||||
const link = document.createElement('a');
|
||||
link.href = window.URL.createObjectURL(csvData);
|
||||
link.setAttribute('download', 'products.csv');
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ export class LocalTimePipe implements PipeTransform {
|
||||
if (value === undefined) {
|
||||
return '';
|
||||
}
|
||||
return moment(value, 'DD-MMM-YYYY HH:mm').subtract(new Date().getTimezoneOffset(), 'seconds').format('DD-MMM-YYYY HH:mm');
|
||||
return moment(value, 'DD-MMM-YYYY HH:mm').subtract(new Date().getTimezoneOffset(), 'minutes').format('DD-MMM-YYYY HH:mm');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import {ToasterService} from '../../core/toaster.service';
|
||||
import {ConfirmDialogComponent} from '../../shared/confirm-dialog/confirm-dialog.component';
|
||||
import {MatDialog} from '@angular/material';
|
||||
import {FormArray, FormBuilder, FormGroup} from '@angular/forms';
|
||||
import {Account} from "../../account/account";
|
||||
|
||||
@Component({
|
||||
selector: 'app-user-detail',
|
||||
@ -43,18 +44,25 @@ export class UserDetailComponent implements OnInit, AfterViewInit {
|
||||
ngOnInit() {
|
||||
this.route.data
|
||||
.subscribe((data: { item: User }) => {
|
||||
this.item = data.item;
|
||||
this.form.get('name').setValue(this.item.name);
|
||||
this.form.setControl('groups', this.fb.array(
|
||||
this.item.groups.map(
|
||||
x => this.fb.group({
|
||||
group: x.enabled
|
||||
})
|
||||
)
|
||||
));
|
||||
this.showItem(data.item);
|
||||
});
|
||||
}
|
||||
|
||||
showItem(item: User) {
|
||||
this.item = item;
|
||||
this.form.get('name').setValue(item.name);
|
||||
this.form.get('password').setValue('');
|
||||
this.form.get('lockedOut').setValue(item.lockedOut);
|
||||
this.form.setControl('groups', this.fb.array(
|
||||
item.groups.map(
|
||||
x => this.fb.group({
|
||||
group: x.enabled
|
||||
})
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
ngAfterViewInit() {
|
||||
setTimeout(() => {
|
||||
this.nameElement.nativeElement.focus();
|
||||
@ -103,7 +111,7 @@ export class UserDetailComponent implements OnInit, AfterViewInit {
|
||||
getItem(): User {
|
||||
const formModel = this.form.value;
|
||||
this.item.name = formModel.name;
|
||||
this.item.password = formModel.password``;
|
||||
this.item.password = formModel.password;
|
||||
this.item.lockedOut = formModel.lockedOut;
|
||||
const array = this.form.get('groups') as FormArray;
|
||||
this.item.groups.forEach((item, index) => {
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
<mat-card>
|
||||
<mat-card-title-group>
|
||||
<mat-card-title>Users</mat-card-title>
|
||||
<a mat-button [routerLink]="['/User']">
|
||||
<mat-icon>add_box</mat-icon>
|
||||
Add
|
||||
</a>
|
||||
</mat-card-title-group>
|
||||
<mat-card-content>
|
||||
<mat-table #table [dataSource]="dataSource" matSort aria-label="Elements">
|
||||
|
||||
Reference in New Issue
Block a user