fix: Split admin comm service into multiple services
This commit is contained in:
161
src/app/admin-view/menu-edit/menu-edit.component.ts
Normal file
161
src/app/admin-view/menu-edit/menu-edit.component.ts
Normal file
@@ -0,0 +1,161 @@
|
||||
import { Component } from '@angular/core'
|
||||
import { FormControl, FormGroup } from '@angular/forms'
|
||||
import { MAT_DATE_RANGE_SELECTION_STRATEGY } from '@angular/material/datepicker'
|
||||
import { FDSelection } from 'src/app/fd.da'
|
||||
import { Menu } from 'src/app/types/menu'
|
||||
import { MatTableDataSource } from '@angular/material/table'
|
||||
import { MatDialog } from '@angular/material/dialog'
|
||||
import { MenuUploadComponent } from './menu-upload/menu-upload.component'
|
||||
import { Status } from 'src/app/types/status'
|
||||
import { MatSnackBar } from '@angular/material/snack-bar'
|
||||
import { MenuAddComponent } from './menu-add/menu-add.component'
|
||||
import { LocalStorageService } from 'src/app/services/local-storage.service'
|
||||
import { DateTime } from 'luxon'
|
||||
import { MenuEditService } from './menu-edit.service'
|
||||
|
||||
@Component({
|
||||
selector: 'app-menu-edit',
|
||||
templateUrl: './menu-edit.component.html',
|
||||
styleUrls: ['./menu-edit.component.scss'],
|
||||
providers: [
|
||||
{ provide: MAT_DATE_RANGE_SELECTION_STRATEGY, useClass: FDSelection },
|
||||
],
|
||||
standalone: false,
|
||||
})
|
||||
export class MenuEditComponent {
|
||||
dcols: string[] = ['day', 'sn', 'ob', 'kol']
|
||||
dataSource: MatTableDataSource<Menu> = new MatTableDataSource<Menu>()
|
||||
range = new FormGroup({
|
||||
start: new FormControl<DateTime | null>(null),
|
||||
end: new FormControl<DateTime | null>(null),
|
||||
})
|
||||
loading = false
|
||||
public options: any
|
||||
|
||||
constructor(
|
||||
private ac: MenuEditService,
|
||||
private dialog: MatDialog,
|
||||
private sb: MatSnackBar,
|
||||
readonly ls: LocalStorageService
|
||||
) {}
|
||||
|
||||
print() {
|
||||
this.ac
|
||||
.print(this.range.value.start, this.range.value.end)
|
||||
?.subscribe(r => {
|
||||
if (r && r.length > 0) {
|
||||
var mywindow = window.open(
|
||||
undefined,
|
||||
'Drukowanie',
|
||||
'height=400,width=400'
|
||||
)
|
||||
mywindow?.document.write(r)
|
||||
mywindow?.print()
|
||||
mywindow?.close()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
addDate() {
|
||||
this.dialog
|
||||
.open(MenuAddComponent)
|
||||
.afterClosed()
|
||||
.subscribe(data => {
|
||||
if (data) {
|
||||
switch (data.type) {
|
||||
case 'day':
|
||||
this.ac.new
|
||||
.single(data.value)
|
||||
.subscribe(s => this.refreshIfGood(s))
|
||||
break
|
||||
case 'week':
|
||||
this.ac.new
|
||||
.range(data.value.start, data.value.count)
|
||||
.subscribe(s => this.refreshIfGood(s))
|
||||
break
|
||||
case 'file':
|
||||
this.requestData()
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
requestData() {
|
||||
this.loading = true
|
||||
this.ac.getOpts().subscribe(o => {
|
||||
this.options = o
|
||||
})
|
||||
this.ac
|
||||
.getMenu(this.range.value.start, this.range.value.end)
|
||||
?.subscribe(data => {
|
||||
this.loading = false
|
||||
this.dataSource.data = data.map(v => {
|
||||
let newMenu: Menu = {
|
||||
...v,
|
||||
day: DateTime.fromISO(v.day),
|
||||
}
|
||||
return newMenu
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
private refreshIfGood(s: Status) {
|
||||
if (s.status.toString().match(/2\d\d/)) {
|
||||
this.requestData()
|
||||
}
|
||||
}
|
||||
|
||||
activateUpload() {
|
||||
this.dialog
|
||||
.open(MenuUploadComponent)
|
||||
.afterClosed()
|
||||
.subscribe(data => {
|
||||
if (data) {
|
||||
this.requestData()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
editSn(id: string) {
|
||||
this.ac
|
||||
.editSn(id, this.dataSource.data.find(v => v._id == id)!.sn)
|
||||
.subscribe(s => this.refreshIfGood(s))
|
||||
}
|
||||
|
||||
editOb(id: string) {
|
||||
this.ac
|
||||
.editOb(id, this.dataSource.data.find(v => v._id == id)!.ob)
|
||||
.subscribe(s => this.refreshIfGood(s))
|
||||
}
|
||||
|
||||
editKol(id: string) {
|
||||
this.ac
|
||||
.editKol(id, this.dataSource.data.find(v => v._id == id)?.kol)
|
||||
.subscribe(s => this.refreshIfGood(s))
|
||||
}
|
||||
|
||||
editTitle(id: string) {
|
||||
this.ac
|
||||
.editTitle(id, this.dataSource.data.find(v => v._id == id)?.dayTitle)
|
||||
.subscribe(s => this.refreshIfGood(s))
|
||||
}
|
||||
|
||||
getStat(day: DateTime, m: 'ob' | 'kol') {
|
||||
this.ac
|
||||
.stat(day, m)
|
||||
.subscribe(s =>
|
||||
this.sb.open(
|
||||
`${s.y} / ${s.y + s.n} = ${((s.y / (s.y + s.n)) * 100).toFixed(2)}%`,
|
||||
'Zamknij',
|
||||
{ duration: 2500 }
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
remove(id: string) {
|
||||
this.ac.rm(id).subscribe(s => this.refreshIfGood(s))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user