Compare commits

..

No commits in common. "master" and "update" have entirely different histories.

41 changed files with 105 additions and 521 deletions

View File

@ -13,7 +13,7 @@ set('default_stage', 'production');
// Servers // Servers
host('bggeneral.hu') host('lxuz.hu')
->stage('production') ->stage('production')
->user('benkeg_gulbaba_frontend_access') ->user('benkeg_gulbaba_frontend_access')
->forwardAgent() ->forwardAgent()

5
package-lock.json generated
View File

@ -2785,11 +2785,6 @@
} }
} }
}, },
"date-fns": {
"version": "2.0.0-alpha.25",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.0.0-alpha.25.tgz",
"integrity": "sha512-iQzJkHF0L4wah9Ae9PkvwemwFz6qmRLuNZcghmvf2t+ptLs1qXzONLiGtjmPQzL6+JpC01JjlTopY2AEy4NFAg=="
},
"date-format": { "date-format": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz",

View File

@ -24,7 +24,6 @@
"@auth0/angular-jwt": "^2.0.0", "@auth0/angular-jwt": "^2.0.0",
"@types/jquery": "^3.3.22", "@types/jquery": "^3.3.22",
"core-js": "^2.5.4", "core-js": "^2.5.4",
"date-fns": "^2.0.0-alpha.25",
"jquery": "^3.3.1", "jquery": "^3.3.1",
"rxjs": "~6.3.3", "rxjs": "~6.3.3",
"zone.js": "~0.8.26" "zone.js": "~0.8.26"

View File

@ -2,22 +2,22 @@
<div class="column"> <div class="column">
<h2 class="ui teal image header"> <h2 class="ui teal image header">
<i class="circular inverted tiny olive wrench icon"></i> <i class="circular inverted tiny olive wrench icon"></i>
<span class="content"> <div class="content">
WN GÜLBABA Bejelentkezés WN GÜLBABA Bejelentkezés
</span> </div>
</h2> </h2>
<form (ngSubmit)="doSubmit()" class="ui large form" [class.error]="hasError" [class.loading]="isLoading"> <form (ngSubmit)="doSubmit()" class="ui large form" [class.error]="hasError" [class.loading]="isLoading">
<div class="ui raised segment"> <div class="ui raised segment">
<div class="field"> <div class="field">
<div class="ui left icon input"> <div class="ui left icon input">
<i class="user icon"></i> <i class="user icon"></i>
<input type="text" #loginField name="login" placeholder="E-mail cím" autocomplete="username"> <input type="text" #loginField name="login" placeholder="E-mail cím">
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<div class="ui left icon input"> <div class="ui left icon input">
<i class="lock icon"></i> <i class="lock icon"></i>
<input type="password" #passwordField name="password" placeholder="Jelszó" autocomplete="current-password"> <input type="password" #passwordField name="password" placeholder="Jelszó">
</div> </div>
</div> </div>
<button class="ui fluid large teal submit button">Bejelentkezés</button> <button class="ui fluid large teal submit button">Bejelentkezés</button>

View File

@ -26,11 +26,8 @@ export class RoleGuardService{
new RegExp("/hiba/megjelenites/[\\d]+", "i"), new RegExp("/hiba/megjelenites/[\\d]+", "i"),
new RegExp("/beallitasok", "i"), new RegExp("/beallitasok", "i"),
new RegExp("/karbantartas/(idoszeru|teljes)-lista", "i"), new RegExp("/karbantartas/(idoszeru|teljes)-lista", "i"),
new RegExp("/karbantartas/naptar", "i"),
new RegExp("/karbantartas/naptar/[\\d]+", "i"),
], ],
'projektvezeto': [ 'projektvezeto': [
new RegExp("/hiba/rogzites", "i"),
new RegExp("/hiba/lista", "i"), new RegExp("/hiba/lista", "i"),
new RegExp("/hiba/feladat-lista", "i"), new RegExp("/hiba/feladat-lista", "i"),
new RegExp("/hiba/visszaigazolas/[\\d]+", "i"), new RegExp("/hiba/visszaigazolas/[\\d]+", "i"),
@ -41,8 +38,6 @@ export class RoleGuardService{
new RegExp("/riportok/szures", "i"), new RegExp("/riportok/szures", "i"),
new RegExp("/riportok/havi-zaras", "i"), new RegExp("/riportok/havi-zaras", "i"),
new RegExp("/karbantartas/(idoszeru|teljes)-lista", "i"), new RegExp("/karbantartas/(idoszeru|teljes)-lista", "i"),
new RegExp("/karbantartas/naptar", "i"),
new RegExp("/karbantartas/naptar/[\\d]+", "i"),
new RegExp("/karbantartas/szerkesztes", "i"), new RegExp("/karbantartas/szerkesztes", "i"),
], ],
@ -96,9 +91,6 @@ export class RoleGuardService{
if (roles.indexOf('uzemeltetesi_vezeto') != -1) { if (roles.indexOf('uzemeltetesi_vezeto') != -1) {
return true; return true;
} }
if (roles.indexOf('projektvezeto') != -1) {
return true;
}
break; break;
case 'confirm': case 'confirm':
if (roles.indexOf('projektvezeto') != -1) { if (roles.indexOf('projektvezeto') != -1) {
@ -129,11 +121,6 @@ export class RoleGuardService{
return true; return true;
} }
break; break;
case 'setFaultType':
if (roles.indexOf('projektvezeto') != -1) {
return true;
}
break;
case 'monthlyClose': case 'monthlyClose':
if (roles.indexOf('projektvezeto') != -1) { if (roles.indexOf('projektvezeto') != -1) {
return true; return true;

View File

@ -5,7 +5,7 @@
<div class="ui indeterminate text loader">Mentés</div> <div class="ui indeterminate text loader">Mentés</div>
</div> </div>
<form class="ui form" #confirmForm> <form class="ui form" #confirmForm>
<h4 class="ui dividing header">Munka jóváhagyása</h4> <h4 class="ui dividing header">Nagyértékű munka jóváhagyása</h4>
<div class="field"> <div class="field">
<label>Elutasítás indoklása</label> <label>Elutasítás indoklása</label>
<textarea rows="3" <textarea rows="3"
@ -13,30 +13,9 @@
name="rejectReason" name="rejectReason"
[(ngModel)]="rejectReason"></textarea> [(ngModel)]="rejectReason"></textarea>
</div> </div>
<div class="inline fields">
<label>Hiba típusa</label>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="faultType" id="uzemeltetesi" value="uzemeltetesi" [(ngModel)]="fault.faultType">
<label for="uzemeltetesi">Üzemeltetési</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="faultType" id="garancialis" value="garancialis" [(ngModel)]="fault.faultType">
<label for="garancialis">Garanciális</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="faultType" id="arajanlat" value="arajanlat" [(ngModel)]="fault.faultType">
<label for="arajanlat">Árajánlat</label>
</div>
</div>
</div>
<div class="four inline fields"> <div class="four inline fields">
<div class="two wide field"> <div class="two wide field">
<button class="ui fluid button" [class.negative]="canReject" [class.disabled]="!canReject" (click)="reject()">Elutasítás</button> <button class="ui fluid button" [class.negative]="canReject" [class.disabled]="!canReject" (click)="reject()">Elvetés</button>
</div> </div>
<div class="three wide field"> <div class="three wide field">
<button class="ui fluid button" <button class="ui fluid button"
@ -44,17 +23,17 @@
[class.disabled]="submitInProgress" [class.disabled]="submitInProgress"
(click)="confirm()">Jóváhagyás</button> (click)="confirm()">Jóváhagyás</button>
</div> </div>
<!--<div class="five wide field">--> <div class="five wide field">
<!--<div class="ui checkbox">--> <div class="ui checkbox">
<!--<input type="checkbox" id="mustLowerCost" name="mustLowerCost"--> <input type="checkbox" id="mustLowerCost" name="mustLowerCost"
<!--[(ngModel)]="fault.mustLowerCost">--> [(ngModel)]="fault.mustLowerCost">
<!--<label for="mustLowerCost">Költség csökkentés szükséges</label>--> <label for="mustLowerCost">Költség csökkentés szükséges</label>
<!--</div>--> </div>
<!--</div>--> </div>
<!--<div class="six wide field" [class.error]="noAllocatedExpense" *ngIf="fault.mustLowerCost">--> <div class="six wide field" [class.error]="noAllocatedExpense" *ngIf="fault.mustLowerCost">
<!--<label>Keret összeg:</label>--> <label>Keret összeg:</label>
<!--<input type="number" name="allocatedExpense" [(ngModel)]="fault.allocatedExpense">--> <input type="number" name="allocatedExpense" [(ngModel)]="fault.allocatedExpense">
<!--</div>--> </div>
</div> </div>
<h4 class="ui dividing header">Hiba adatai</h4> <h4 class="ui dividing header">Hiba adatai</h4>
@ -67,11 +46,11 @@
<td class="collapsing">Becsült alapanyagköltség</td> <td class="collapsing">Becsült alapanyagköltség</td>
<td>{{numericMaterialCostEstimate|currencyFormat}}</td> <td>{{numericMaterialCostEstimate|currencyFormat}}</td>
</tr> </tr>
<!--<tr>--> <tr>
<!--<td class="collapsing">Részletes költségvetés</td>--> <td class="collapsing">Részletes költségvetés</td>
<!--<td><a [href]="expensePdfDownloadUrl" target="_blank"><i class="file pdf outline icon"></i>Letöltés</a>--> <td><a [href]="expensePdfDownloadUrl" target="_blank"><i class="file pdf outline icon"></i>Letöltés</a>
<!--</td>--> </td>
<!--</tr>--> </tr>
<tr> <tr>
<td class="collapsing">Hiba helye</td> <td class="collapsing">Hiba helye</td>
<td><b>{{fault.facilityLocation.roomNumber}}</b>-{{fault.facilityLocation.name}}</td> <td><b>{{fault.facilityLocation.roomNumber}}</b>-{{fault.facilityLocation.name}}</td>

View File

@ -24,35 +24,26 @@
[(ngModel)]="fault.workCostEstimate"> [(ngModel)]="fault.workCostEstimate">
</div> </div>
</div> </div>
<!--<div class="field" [class.error]="hasNoPdfAttachment" [hidden]="!highExpense">--> <div class="field" [class.error]="hasNoPdfAttachment" [hidden]="!highExpense">
<!--<h4 class="ui dividing header">Költség becslés pdf formátumban</h4>--> <h4 class="ui dividing header">Költség becslés pdf formátumban</h4>
<!--<input #pdfUpload type="file" accept="application/pdf"/>--> <input #pdfUpload type="file" accept="application/pdf"/>
<!--</div>--> </div>
<div class="ui error message" [class.visible]="hasErrors"> <div class="ui error message" [class.visible]="hasErrors">
<p>A pirossal jelölt mezők kitöltése kötelező.</p> <p>A pirossal jelölt mezők kitöltése kötelező.</p>
</div> </div>
<button class="ui button" <button *ngIf="!highExpense" class="ui button"
[class.positive]="canConfirm" [class.positive]="canConfirm"
[class.disabled]="!canConfirm" tabindex="0" [class.disabled]="!canConfirm" tabindex="0"
(click)="confirm()">Visszaigazolás (click)="confirm()">Visszaigazolás
</button> </button>
<!--<button *ngIf="!highExpense" class="ui button"--> <button *ngIf="highExpense" class="ui button"
<!--[class.positive]="canConfirm"--> [class.orange]="canHighExpense"
<!--[class.disabled]="!canConfirm" tabindex="0"--> [class.disabled]="!canHighExpense" tabindex="0"
<!--(click)="confirm()">Visszaigazolás--> (click)="setHighExpenseFault()">Nagyértékű munka továbbküldése jóváhagyásra
<!--</button>--> </button>
<!--<button *ngIf="highExpense" class="ui button"-->
<!--[class.orange]="canHighExpense"-->
<!--[class.disabled]="!canHighExpense" tabindex="0"-->
<!--(click)="setHighExpenseFault()">Nagyértékű munka továbbküldése jóváhagyásra-->
<!--</button>-->
<h4 class="ui dividing header">Hiba helye</h4> <h4 class="ui dividing header">Hiba helye</h4>
<table class="ui red definition table"> <table class="ui red definition table">
<tr>
<td class="collapsing">Hiba típus</td>
<td>{{faultType}}</td>
</tr>
<tr> <tr>
<td class="collapsing">Hiba helye</td> <td class="collapsing">Hiba helye</td>
<td><b>{{fault.facilityLocation.roomNumber}}</b>-{{fault.facilityLocation.name}}</td> <td><b>{{fault.facilityLocation.roomNumber}}</b>-{{fault.facilityLocation.name}}</td>

View File

@ -6,7 +6,6 @@ import { finalize } from 'rxjs/operators';
import { environment } from "../../../environments/environment"; import { environment } from "../../../environments/environment";
import { FaultManagerService } from "../fault-manager.service"; import { FaultManagerService } from "../fault-manager.service";
import { Fault } from "../shared/fault"; import { Fault } from "../shared/fault";
import { FaultType } from "../shared/fault-type";
@Component({ @Component({
selector: 'app-confirm-fault', selector: 'app-confirm-fault',
@ -37,54 +36,49 @@ export class ConfirmFaultComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.titleService.setTitle('Webnapló : Hiba visszaigazolása'); this.titleService.setTitle('Webnapló : Hiba visszaigazolása');
this.route.data.subscribe((data: { fault: Fault }) => this.fault = data.fault); this.route.data.subscribe((data: { fault: Fault }) => this.fault = data.fault);
// jQuery(this.pdfUpload.nativeElement).on('change', changeEvent => { jQuery(this.pdfUpload.nativeElement).on('change', changeEvent => {
// for (let i = 0; i < this.pdfUpload.nativeElement.files.length; i++) { for (let i = 0; i < this.pdfUpload.nativeElement.files.length; i++) {
// if (!/\.(pdf)$/i.test(this.pdfUpload.nativeElement.files[i].name)) { if (!/\.(pdf)$/i.test(this.pdfUpload.nativeElement.files[i].name)) {
// this.pdfUpload.nativeElement.value = null; this.pdfUpload.nativeElement.value = null;
// break; break;
// } }
// } }
// }); });
// jQuery(this.photoUpload.nativeElement).on('change', changeEvent => { jQuery(this.photoUpload.nativeElement).on('change', changeEvent => {
// this.rawImageData = []; this.rawImageData = [];
// for (let i = 0; i < this.photoUpload.nativeElement.files.length; i++) { for (let i = 0; i < this.photoUpload.nativeElement.files.length; i++) {
// if (!/\.(jpe?g|png|gif)$/i.test(this.photoUpload.nativeElement.files[i].name)) { if (!/\.(jpe?g|png|gif)$/i.test(this.photoUpload.nativeElement.files[i].name)) {
// continue; continue;
// } }
// let reader = new FileReader(); let reader = new FileReader();
// reader.addEventListener("load", () => { reader.addEventListener("load", () => {
// this.rawImageData.push(reader.result); this.rawImageData.push(reader.result);
// }); });
// reader.readAsDataURL(this.photoUpload.nativeElement.files[i]); reader.readAsDataURL(this.photoUpload.nativeElement.files[i]);
// } }
// }); });
} }
public confirm() { public confirm() {
this.submitInProgress = true; this.submitInProgress = true;
this.faultManager.setHighExpenseFault(this.fault).pipe( // this.fault.costEstimate = this.costEstimate;
this.faultManager.confirmFault(this.fault).pipe(
finalize(() => this.submitInProgress = false)) finalize(() => this.submitInProgress = false))
.subscribe(() => this.router.navigate(['/hiba/feladat-lista'])); .subscribe(() => this.router.navigate(['/hiba/feladat-lista']));
} }
// public confirm() { public setHighExpenseFault() {
// this.submitInProgress = true; this.submitInProgress = true;
// this.faultManager.confirmFault(this.fault).pipe( // this.fault.costEstimate = this.costEstimate;
// finalize(() => this.submitInProgress = false)) this.faultManager.setHighExpenseFault(this.fault).pipe(
// .subscribe(() => this.router.navigate(['/hiba/feladat-lista'])); finalize(() => this.submitInProgress = false))
// } .subscribe(fault => {
// this.faultManager.attachPdf(this.fault.id, this.pdfUpload.nativeElement.files).subscribe(
// public setHighExpenseFault() { attRes => this.router.navigate(['/hiba/feladat-lista']),
// this.submitInProgress = true; attErr => console.log("File upload error: ", attErr)
// this.faultManager.setHighExpenseFault(this.fault).pipe( );
// finalize(() => this.submitInProgress = false)) });
// .subscribe(fault => { }
// this.faultManager.attachPdf(this.fault.id, this.pdfUpload.nativeElement.files).subscribe(
// attRes => this.router.navigate(['/hiba/feladat-lista']),
// attErr => console.log("File upload error: ", attErr)
// );
// });
// }
public attachImages() { public attachImages() {
this.submitInProgress = true; this.submitInProgress = true;
@ -151,8 +145,4 @@ export class ConfirmFaultComponent implements OnInit {
&& !this.noWorkCostEstimate && !this.noWorkCostEstimate
&& !this.noMaterialCostEstimate); && !this.noMaterialCostEstimate);
} }
get faultType(): string {
return FaultType[this.fault.faultType];
}
} }

View File

@ -194,7 +194,6 @@ export class FaultManagerService implements Resolve<false|Array<Fault>> {
return { return {
id: fault.id, id: fault.id,
workSheetNumber: fault.worksheetNumber, workSheetNumber: fault.worksheetNumber,
faultType: fault.faultType,
errorOrigin: fault.errorOrigin.id, errorOrigin: fault.errorOrigin.id,
errorCategory: fault.errorCategory.id, errorCategory: fault.errorCategory.id,
solutionTimeInterval: fault.solutionTimeInterval.id, solutionTimeInterval: fault.solutionTimeInterval.id,

View File

@ -7,8 +7,8 @@
heading="Visszaigazolásra váró hiba jelentések"></div> heading="Visszaigazolásra váró hiba jelentések"></div>
<div app-table-view class="ui segment" [editor]="hasPermission('confirmExtraCost')" <div app-table-view class="ui segment" [editor]="hasPermission('confirmExtraCost')"
(actionClicked)="actionClickHandler($event)" [actions]="actionButtons['exp']" (actionClicked)="actionClickHandler($event)" [actions]="actionButtons['exp']"
[faults]="expFaults" noRecordMessage="Nincs jóváhagyásra váró munka." [faults]="expFaults" noRecordMessage="Nincs jóváhagyásra váró nagyértékű munka."
heading="Jóváhagyásra váró munkák"></div> heading="Jóváhagyásra váró nagyértékű munkák"></div>
<div app-table-view class="ui segment" showWorksheetNumber="true" [editor]="hasPermission('repair')" <div app-table-view class="ui segment" showWorksheetNumber="true" [editor]="hasPermission('repair')"
(actionClicked)="actionClickHandler($event)" [actions]="actionButtons['cnf']" (actionClicked)="actionClickHandler($event)" [actions]="actionButtons['cnf']"
[faults]="cnfFaults" noRecordMessage="Nincs javításra váró hiba." [faults]="cnfFaults" noRecordMessage="Nincs javításra váró hiba."

View File

@ -7,8 +7,8 @@
heading="Visszaigazolásra váró hiba jelentések"></div> heading="Visszaigazolásra váró hiba jelentések"></div>
<div app-table-view class="ui segment" *ngIf="hasPermission('confirmExtraCost')" <div app-table-view class="ui segment" *ngIf="hasPermission('confirmExtraCost')"
(actionClicked)="actionClickHandler($event)" [actions]="actionButtons['exp']" (actionClicked)="actionClickHandler($event)" [actions]="actionButtons['exp']"
[faults]="expFaults" noRecordMessage="Nincs jóváhagyásra váró munka." [faults]="expFaults" noRecordMessage="Nincs jóváhagyásra váró nagyértékű munka."
heading="Jóváhagyásra váró munkák"></div> heading="Jóváhagyásra váró nagyértékű munkák"></div>
<div app-table-view class="ui segment" showWorksheetNumber="true" *ngIf="hasPermission('repair')" <div app-table-view class="ui segment" showWorksheetNumber="true" *ngIf="hasPermission('repair')"
(actionClicked)="actionClickHandler($event)" [actions]="actionButtons['cnf']" (actionClicked)="actionClickHandler($event)" [actions]="actionButtons['cnf']"
[faults]="cnfFaults" noRecordMessage="Nincs javításra váró hiba." [faults]="cnfFaults" noRecordMessage="Nincs javításra váró hiba."

View File

@ -45,10 +45,6 @@
<h4 class="ui dividing header">Hiba adatai</h4> <h4 class="ui dividing header">Hiba adatai</h4>
<table class="ui red definition table"> <table class="ui red definition table">
<tr *ngIf="fault">
<td class="collapsing">Hiba típus</td>
<td>{{faultType}}</td>
</tr>
<tr *ngIf="fault?.worksheetNumber"> <tr *ngIf="fault?.worksheetNumber">
<td class="collapsing">Munkalap száma</td> <td class="collapsing">Munkalap száma</td>
<td>{{fault?.worksheetNumber}}</td> <td>{{fault?.worksheetNumber}}</td>

View File

@ -8,7 +8,6 @@ import { environment } from "../../../environments/environment";
import { Fault } from "../shared/fault"; import { Fault } from "../shared/fault";
import { AuthService } from "../../auth/auth.service"; import { AuthService } from "../../auth/auth.service";
import { FaultManagerService } from "../fault-manager.service"; import { FaultManagerService } from "../fault-manager.service";
import { FaultType } from "../shared/fault-type";
@Component({ @Component({
selector: 'app-readonly-display', selector: 'app-readonly-display',
@ -93,8 +92,4 @@ export class ReadonlyDisplayComponent implements OnInit {
attErr => alert("Hiba történt a képfeltöltés közben.") attErr => alert("Hiba történt a képfeltöltés közben.")
); );
} }
get faultType(): string {
return FaultType[this.fault.faultType];
}
} }

View File

@ -31,28 +31,6 @@
</div> </div>
<h4 class="ui dividing header">Hiba</h4> <h4 class="ui dividing header">Hiba</h4>
<div class="inline fields" *ngIf="hasPermission('setFaultType')">
<label>Hiba típusa</label>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="faultType" id="uzemeltetesi" value="uzemeltetesi" [(ngModel)]="faultType">
<label for="uzemeltetesi">Üzemeltetési</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="faultType" id="garancialis" value="garancialis" [(ngModel)]="faultType">
<label for="garancialis">Garanciális</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="faultType" id="arajanlat" value="arajanlat" [(ngModel)]="faultType">
<label for="arajanlat">Árajánlat</label>
</div>
</div>
</div>
<div class="two fields"> <div class="two fields">
<div class="field" [class.error]="noErrorCategory"> <div class="field" [class.error]="noErrorCategory">
<label>Hiba szakág</label> <label>Hiba szakág</label>
@ -101,7 +79,7 @@
<div class="field" [class.error]="noAttachments"> <div class="field" [class.error]="noAttachments">
<input #photoUpload type="file" accept="image/*" multiple/> <input #photoUpload type="file" accept="image/*" multiple/>
</div> </div>
<div #photoAttachments class="ui bordered images segment photoAttachments" <div #photoAttachments class="photoAttachments" class="ui bordered images segment"
*ngIf="rawImageData?.length"> *ngIf="rawImageData?.length">
<img class="ui image" *ngFor="let image of rawImageData; let idx = index" [src]="image" height="200"/> <img class="ui image" *ngFor="let image of rawImageData; let idx = index" [src]="image" height="200"/>
</div> </div>

View File

@ -9,7 +9,6 @@ import { SolutionTimeInterval } from "../shared";
import { FaultManagerService } from "../fault-manager.service"; import { FaultManagerService } from "../fault-manager.service";
import { SimpleFault } from "../shared/simple-fault"; import { SimpleFault } from "../shared/simple-fault";
import { Title } from "@angular/platform-browser"; import { Title } from "@angular/platform-browser";
import { RoleGuardService } from "../../auth/role-guard.service";
@Component({ @Component({
selector: 'app-record-fault', selector: 'app-record-fault',
@ -24,7 +23,6 @@ export class RecordFaultComponent implements OnInit, AfterViewInit {
public submitInProgress: boolean = false; public submitInProgress: boolean = false;
public faultType: string = 'uzemeltetesi';
public facilityLocationText: string = ''; public facilityLocationText: string = '';
public errorCategory: ErrorCategory; public errorCategory: ErrorCategory;
public errorOrigin: ErrorOrigin; public errorOrigin: ErrorOrigin;
@ -41,8 +39,7 @@ export class RecordFaultComponent implements OnInit, AfterViewInit {
constructor(private activatedRoute: ActivatedRoute, constructor(private activatedRoute: ActivatedRoute,
private router: Router, private router: Router,
private faultService: FaultManagerService, private faultService: FaultManagerService,
private titleService: Title, private titleService: Title) {
private roleGuard: RoleGuardService) {
} }
ngOnInit() { ngOnInit() {
@ -86,7 +83,6 @@ export class RecordFaultComponent implements OnInit, AfterViewInit {
this.submitInProgress = true; this.submitInProgress = true;
let fault: SimpleFault = { let fault: SimpleFault = {
// id: null, // id: null,
faultType: this.faultType,
facilityLocation: parseInt(this.facilityLocationIdElement.nativeElement.value), facilityLocation: parseInt(this.facilityLocationIdElement.nativeElement.value),
facilityLocationDescription: this.facilityLocationText, facilityLocationDescription: this.facilityLocationText,
errorCategory: this.errorCategory.id, errorCategory: this.errorCategory.id,
@ -158,8 +154,4 @@ export class RecordFaultComponent implements OnInit, AfterViewInit {
get noAttachments(): boolean { get noAttachments(): boolean {
return this.rawImageData.length == 0; return this.rawImageData.length == 0;
} }
public hasPermission(resourceName: string): boolean {
return this.roleGuard.userCanAccessResource(resourceName);
}
} }

View File

@ -57,10 +57,6 @@
<h4 class="ui dividing header">Hiba adatai</h4> <h4 class="ui dividing header">Hiba adatai</h4>
<table class="ui red definition table"> <table class="ui red definition table">
<tr>
<td class="collapsing">Hiba típus</td>
<td>{{faultType}}</td>
</tr>
<tr> <tr>
<td class="collapsing">Becsült munkaköltség</td> <td class="collapsing">Becsült munkaköltség</td>
<td>{{fault.workCostEstimate|currencyFormat}}</td> <td>{{fault.workCostEstimate|currencyFormat}}</td>

View File

@ -6,7 +6,6 @@ import { Fault } from "../shared/fault";
import { FaultManagerService } from "../fault-manager.service"; import { FaultManagerService } from "../fault-manager.service";
import { Title } from "@angular/platform-browser"; import { Title } from "@angular/platform-browser";
import { ActivatedRoute, Router } from "@angular/router"; import { ActivatedRoute, Router } from "@angular/router";
import { FaultType } from "../shared/fault-type";
@Component({ @Component({
selector: 'app-repair-complete', selector: 'app-repair-complete',
@ -76,8 +75,4 @@ export class RepairCompleteComponent implements OnInit {
? this.fault.materialCostEstimate ? this.fault.materialCostEstimate
: 0; : 0;
} }
get faultType(): string {
return FaultType[this.fault.faultType];
}
} }

View File

@ -128,10 +128,6 @@
<h4 class="ui dividing header">Hiba adatai</h4> <h4 class="ui dividing header">Hiba adatai</h4>
<table class="ui red definition table"> <table class="ui red definition table">
<tr>
<td class="collapsing">Hiba típus</td>
<td>{{faultType}}</td>
</tr>
<tr> <tr>
<td class="collapsing">Becsült munkaköltség</td> <td class="collapsing">Becsült munkaköltség</td>
<td>{{fault.workCostEstimate|currencyFormat}}</td> <td>{{fault.workCostEstimate|currencyFormat}}</td>

View File

@ -11,7 +11,6 @@ import { Fault } from "../shared/fault";
import { UsedMaterial } from "../shared/used-material"; import { UsedMaterial } from "../shared/used-material";
import { User } from "../../user/shared/user"; import { User } from "../../user/shared/user";
import { Comment } from "../shared/comment"; import { Comment } from "../shared/comment";
import { FaultType } from "../shared/fault-type";
@Component({ @Component({
selector: 'app-repair-fault', selector: 'app-repair-fault',
@ -186,8 +185,4 @@ export class RepairFaultComponent implements OnInit {
? this.fault.materialCostEstimate ? this.fault.materialCostEstimate
: 0; : 0;
} }
get faultType(): string {
return FaultType[this.fault.faultType];
}
} }

View File

@ -1,5 +0,0 @@
export enum FaultType {
uzemeltetesi = 'Üzemeltetési',
garancialis = 'Garanciális',
arajanlat = 'Árajánlat',
}

View File

@ -9,7 +9,6 @@ import { UsedMaterial } from "./used-material";
export class Fault { export class Fault {
public id?: number; public id?: number;
public worksheetNumber: string; public worksheetNumber: string;
public faultType: string;
public facilityLocation: FacilityLocation; public facilityLocation: FacilityLocation;
public facilityLocationDescription: string; public facilityLocationDescription: string;
public errorCategory: ErrorCategory; public errorCategory: ErrorCategory;

View File

@ -4,7 +4,6 @@ import {Comment} from "./comment";
export class SimpleFault { export class SimpleFault {
public id?: number; public id?: number;
public workSheetNumber?: string; public workSheetNumber?: string;
public faultType: string;
public facilityLocation: number; public facilityLocation: number;
public facilityLocationDescription: string; public facilityLocationDescription: string;
public errorCategory: number; public errorCategory: number;

View File

@ -1,10 +1,5 @@
<div class="ui main container"> <div class="ui main container">
<h1 class="ui dividing header">Éves karbantartási feladatok</h1> <h1 class="ui dividing header">Éves karbantartási feladatok</h1>
<div class="ui two item stackable tabs menu">
<a class="item" [class.active]="year==2018" [routerLink]="['/karbantartas/teljes-lista/2018']">2018</a>
<a class="item" [class.active]="year==2019" [routerLink]="['/karbantartas/teljes-lista/2019']">2019</a>
<a class="item" [class.active]="year==2020" [routerLink]="['/karbantartas/teljes-lista/2020']">2020</a>
</div>
<div class="ui raised segments"> <div class="ui raised segments">
<div class="ui segment" *ngFor="let group of maintenances"> <div class="ui segment" *ngFor="let group of maintenances">
<table class="ui celled striped selectable table"> <table class="ui celled striped selectable table">
@ -18,7 +13,7 @@
<tbody> <tbody>
<tr *ngFor="let device of group.devices"> <tr *ngFor="let device of group.devices">
<td class="collapsing-off">{{device.name}}</td> <td class="collapsing">{{device.name}}</td>
<td>{{device.workDescription}}</td> <td>{{device.workDescription}}</td>
<td> <td>
<div class="date-card-holder"> <div class="date-card-holder">
@ -29,7 +24,7 @@
<i class="file pdf outline icon"></i> <i class="file pdf outline icon"></i>
</a> </a>
<i *ngIf="!hasPdf(task)" class="icon {{taskIcon(task)}}"></i> <i *ngIf="!hasPdf(task)" class="icon {{taskIcon(task)}}"></i>
<a *ngIf="canModify()" [routerLink]="['/karbantartas/szerkesztes', year, task.hash]" <a *ngIf="canModify()" [routerLink]="['/karbantartas/szerkesztes', task.hash]"
title="Szerkesztés">{{task?.shouldStartAt}}</a> title="Szerkesztés">{{task?.shouldStartAt}}</a>
<ng-container *ngIf="!canModify()">{{task?.shouldStartAt}}</ng-container> <ng-container *ngIf="!canModify()">{{task?.shouldStartAt}}</ng-container>
</div> </div>

View File

@ -15,7 +15,6 @@ import { RoleGuardService } from "../../auth/role-guard.service";
}) })
export class ListAllMaintenancesComponent implements OnInit { export class ListAllMaintenancesComponent implements OnInit {
public year: number = 2020;
private today: string = ""; private today: string = "";
constructor(private maintenanceManager: MaintenanceManagerService, constructor(private maintenanceManager: MaintenanceManagerService,
@ -27,11 +26,6 @@ export class ListAllMaintenancesComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.titleService.setTitle('Webnapló : Éves karbantartási feladatok'); this.titleService.setTitle('Webnapló : Éves karbantartási feladatok');
this.route.params.subscribe((params: {
year: number
}) => {
this.year = params.year ? params.year : new Date().getFullYear();
});
this.route.data.subscribe((data: { this.route.data.subscribe((data: {
maintenances: Array<DeviceGroup>, maintenances: Array<DeviceGroup>,
}) => { }) => {

View File

@ -1,13 +0,0 @@
<div class="ui main container">
<h1 class="ui dividing header">Karbantartási naptár</h1>
<div class="ui two item stackable tabs menu">
<a class="item" [class.active]="year==2018" [routerLink]="['/karbantartas/naptar/2018']">2018</a>
<a class="item" [class.active]="year==2019" [routerLink]="['/karbantartas/naptar/2019']">2019</a>
<a class="item" [class.active]="year==2020" [routerLink]="['/karbantartas/naptar/2020']">2020</a>
</div>
<div class="ui raised segments">
<div class="ui segment" *ngFor="let data of maintenances">
<app-calendar [year]="year" [month]="data[0].month" [data]="data"></app-calendar>
</div>
</div>
</div>

View File

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

View File

@ -1,43 +0,0 @@
import { Component, OnInit } from '@angular/core';
import { DeviceGroup } from "../shared/device-group";
import { MaintenanceManagerService } from "../maintenance-manager.service";
import { Title } from "@angular/platform-browser";
import { ActivatedRoute } from "@angular/router";
@Component({
selector: 'app-maintenance-calendar',
templateUrl: './maintenance-calendar.component.html',
styleUrls: ['./maintenance-calendar.component.css']
})
export class MaintenanceCalendarComponent implements OnInit {
public year: number = 2018;
constructor(private maintenanceManager: MaintenanceManagerService,
private titleService: Title,
private route: ActivatedRoute) {
}
ngOnInit() {
this.titleService.setTitle('Webnapló : Éves karbantartási feladatok');
this.route.params.subscribe((params: {
year: number
}) => {
this.year = params.year ? params.year : new Date().getFullYear();
});
this.route.data.subscribe((data: {
maintenances: Array<DeviceGroup>,
}) => {
this.maintenances = data.maintenances;
});
}
get maintenances(): Array<DeviceGroup> {
return this.maintenanceManager.maintenances;
}
set maintenances(maintenances: Array<DeviceGroup>) {
this.maintenanceManager.maintenances = maintenances;
}
}

View File

@ -1,28 +1,21 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Observable } from "rxjs"; import { Observable } from "rxjs";
import { HttpClient } from "@angular/common/http"; import { HttpClient, HttpHeaders, HttpRequest } from "@angular/common/http";
import { environment } from "../../environments/environment"; import { environment } from "../../environments/environment";
import { ActivatedRouteSnapshot, RouterStateSnapshot } from "@angular/router"; import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from "@angular/router";
import { DeviceGroup } from "./shared/device-group"; import { DeviceGroup } from "./shared/device-group";
import { MaintenanceEntity } from "./shared/maintenance-entity"; import { MaintenanceEntity } from "./shared/maintenance-entity";
@Injectable() @Injectable()
export class MaintenanceManagerService { export class MaintenanceManagerService {
static apiEndpoint = environment.apiUrl + '/api/maintenance'; private apiEndpoint = environment.apiUrl + '/api/maintenance';
static apiEndpointUpcoming = environment.apiUrl + '/api/maintenance/upcoming'; private apiEndpointUpcoming = environment.apiUrl + '/api/maintenance/upcoming';
static apiEndpointCalendar = environment.apiUrl + '/api/maintenance/calendar';
static endpointMap = {
all: MaintenanceManagerService.apiEndpoint,
upcoming: MaintenanceManagerService.apiEndpointUpcoming,
calendar: MaintenanceManagerService.apiEndpointCalendar,
};
private cachedMaintenances: Array<DeviceGroup> = []; private cachedMaintenances: Array<DeviceGroup> = [];
constructor(private httpClient: HttpClient) {} constructor(private httpClient: HttpClient) {
}
/** /**
* Resolver for the route * Resolver for the route
@ -32,9 +25,10 @@ export class MaintenanceManagerService {
* @returns {Promise<Array<Fault>>} * @returns {Promise<Array<Fault>>}
*/ */
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<Array<DeviceGroup>> { resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<Array<DeviceGroup>> {
let year = route.params.year ? route.params.year : new Date().getFullYear(); let filter = route.data.filter ? route.data.filter : 'upcoming';
let filter = route.data.filter ? route.data.filter : 'all'; let url = filter == 'upcoming'
let url = `${MaintenanceManagerService.endpointMap[filter]}/${year}`; ? this.apiEndpointUpcoming
: this.apiEndpoint;
return this.list(url).toPromise(); return this.list(url).toPromise();
} }
@ -48,15 +42,11 @@ export class MaintenanceManagerService {
} }
public get(hash: string): Observable<MaintenanceEntity> { public get(hash: string): Observable<MaintenanceEntity> {
return this.httpClient.get<MaintenanceEntity>(`${MaintenanceManagerService.apiEndpoint}/${hash}`); return this.httpClient.get<MaintenanceEntity>(`${this.apiEndpoint}/${hash}`);
}
public getByIdAndYear(hash: string, year: number): Observable<MaintenanceEntity> {
return this.httpClient.get<MaintenanceEntity>(`${MaintenanceManagerService.apiEndpoint}/${year}/${hash}`);
} }
public update(maintenance: MaintenanceEntity) { public update(maintenance: MaintenanceEntity) {
return this.httpClient.put<MaintenanceEntity>(`${MaintenanceManagerService.apiEndpoint}/${maintenance.hash}`, maintenance); return this.httpClient.put<MaintenanceEntity>(`${this.apiEndpoint}/${maintenance.hash}`, maintenance);
} }
get maintenances(): Array<DeviceGroup> { get maintenances(): Array<DeviceGroup> {
@ -69,8 +59,10 @@ export class MaintenanceManagerService {
public setWip(id: string, page: string) { public setWip(id: string, page: string) {
if(confirm("Biztos benne?")) { if(confirm("Biztos benne?")) {
let url = MaintenanceManagerService.endpointMap[page]; let url = page == 'upcoming'
this.httpClient.post<any>(`${MaintenanceManagerService.apiEndpoint}/${id}/wip`,{}).subscribe(()=>{ ? this.apiEndpointUpcoming
: this.apiEndpoint;
this.httpClient.post<any>(`${this.apiEndpoint}/${id}/wip`,{}).subscribe(()=>{
this.list(url).subscribe(result => this.cachedMaintenances = result); this.list(url).subscribe(result => this.cachedMaintenances = result);
}); });
} }
@ -78,8 +70,10 @@ export class MaintenanceManagerService {
public setFin(id: string, page: string) { public setFin(id: string, page: string) {
if(confirm("Biztos benne?")) { if(confirm("Biztos benne?")) {
let url = MaintenanceManagerService.endpointMap[page]; let url = page == 'upcoming'
this.httpClient.post<any>(`${MaintenanceManagerService.apiEndpoint}/${id}/fin`, {}).subscribe(() => { ? this.apiEndpointUpcoming
: this.apiEndpoint;
this.httpClient.post<any>(`${this.apiEndpoint}/${id}/fin`, {}).subscribe(() => {
this.list(url).subscribe(result => this.cachedMaintenances = result); this.list(url).subscribe(result => this.cachedMaintenances = result);
}); });
} }

View File

@ -17,7 +17,6 @@ export class MaintenanceResolverService {
* @returns {Promise<MaintenanceEntity>} * @returns {Promise<MaintenanceEntity>}
*/ */
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<MaintenanceEntity> { resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<MaintenanceEntity> {
// return this.maintenanceManager.get(route.params.id).toPromise(); return this.maintenanceManager.get(route.params.id).toPromise();
return this.maintenanceManager.getByIdAndYear(route.params.id, route.params.year).toPromise();
} }
} }

View File

@ -8,20 +8,9 @@ import { ListAllMaintenancesComponent } from "./list-all-maintenances/list-all-m
import { ListUpcomingMaintenancesComponent } from "./list-upcoming-maintenances/list-upcoming-maintenances.component"; import { ListUpcomingMaintenancesComponent } from "./list-upcoming-maintenances/list-upcoming-maintenances.component";
import { EditMaintenanceComponent } from "./edit-maintenance/edit-maintenance.component"; import { EditMaintenanceComponent } from "./edit-maintenance/edit-maintenance.component";
import { MaintenanceResolverService } from "./maintenance-resolver.service"; import { MaintenanceResolverService } from "./maintenance-resolver.service";
import { MaintenanceCalendarComponent } from "./maintenance-calendar/maintenance-calendar.component";
const routes: Routes = [ const routes: Routes = [
{ {
path: 'karbantartas/teljes-lista/:year',
component: ListAllMaintenancesComponent,
canActivate: [AuthGuardService, RoleGuardService],
resolve: {
maintenances: MaintenanceManagerService,
},
data: {
filter: 'all',
},
}, {
path: 'karbantartas/teljes-lista', path: 'karbantartas/teljes-lista',
component: ListAllMaintenancesComponent, component: ListAllMaintenancesComponent,
canActivate: [AuthGuardService, RoleGuardService], canActivate: [AuthGuardService, RoleGuardService],
@ -31,16 +20,6 @@ const routes: Routes = [
data: { data: {
filter: 'all', filter: 'all',
}, },
}, {
path: 'karbantartas/idoszeru-lista/:year',
component: ListUpcomingMaintenancesComponent,
canActivate: [AuthGuardService, RoleGuardService],
resolve: {
maintenances: MaintenanceManagerService,
},
data: {
filter: 'upcoming',
},
}, { }, {
path: 'karbantartas/idoszeru-lista', path: 'karbantartas/idoszeru-lista',
component: ListUpcomingMaintenancesComponent, component: ListUpcomingMaintenancesComponent,
@ -52,27 +31,7 @@ const routes: Routes = [
filter: 'upcoming', filter: 'upcoming',
}, },
}, { }, {
path: 'karbantartas/naptar/:year', path: 'karbantartas/szerkesztes/:id',
component: MaintenanceCalendarComponent,
canActivate: [AuthGuardService, RoleGuardService],
resolve: {
maintenances: MaintenanceManagerService,
},
data: {
filter: 'calendar',
},
}, {
path: 'karbantartas/naptar',
component: MaintenanceCalendarComponent,
canActivate: [AuthGuardService, RoleGuardService],
resolve: {
maintenances: MaintenanceManagerService,
},
data: {
filter: 'calendar',
},
}, {
path: 'karbantartas/szerkesztes/:year/:id',
component: EditMaintenanceComponent, component: EditMaintenanceComponent,
canActivate: [AuthGuardService, RoleGuardService], canActivate: [AuthGuardService, RoleGuardService],
resolve: { resolve: {

View File

@ -9,31 +9,17 @@ import { ListAllMaintenancesComponent } from './list-all-maintenances/list-all-m
import { ListUpcomingMaintenancesComponent } from './list-upcoming-maintenances/list-upcoming-maintenances.component'; import { ListUpcomingMaintenancesComponent } from './list-upcoming-maintenances/list-upcoming-maintenances.component';
import { EditMaintenanceComponent } from './edit-maintenance/edit-maintenance.component'; import { EditMaintenanceComponent } from './edit-maintenance/edit-maintenance.component';
import { MaintenanceResolverService } from './maintenance-resolver.service'; import { MaintenanceResolverService } from './maintenance-resolver.service';
import { SharedModule } from "../shared/shared.module";
import { MaintenanceCalendarComponent } from './maintenance-calendar/maintenance-calendar.component';
@NgModule({ @NgModule({
imports: [ imports: [
CommonModule, CommonModule,
FormsModule, FormsModule,
ReactiveFormsModule, ReactiveFormsModule,
SharedModule, MaintenanceRoutingModule
MaintenanceRoutingModule,
],
declarations: [
UpcomingMaintenancesComponent,
ListAllMaintenancesComponent,
ListUpcomingMaintenancesComponent,
EditMaintenanceComponent,
MaintenanceCalendarComponent,
],
providers: [
MaintenanceManagerService,
MaintenanceResolverService,
],
exports: [
UpcomingMaintenancesComponent,
], ],
declarations: [UpcomingMaintenancesComponent, ListAllMaintenancesComponent, ListUpcomingMaintenancesComponent, EditMaintenanceComponent],
providers: [MaintenanceManagerService, MaintenanceResolverService],
exports: [UpcomingMaintenancesComponent],
}) })
export class MaintenanceModule { export class MaintenanceModule {
} }

View File

@ -18,7 +18,7 @@
<td *ngIf="canModify()" class="collapsing icon"> <td *ngIf="canModify()" class="collapsing icon">
<a *ngIf="hasMaintenanceSheet(task)" title="PDF letöltés" <a *ngIf="hasMaintenanceSheet(task)" title="PDF letöltés"
[href]="maintenancePdfUrl(task)" target="_blank"><i class="file pdf outline icon"></i></a> [href]="maintenancePdfUrl(task)" target="_blank"><i class="file pdf outline icon"></i></a>
<a [routerLink]="['/karbantartas/szerkesztes', year, task.hash]" <a [routerLink]="['/karbantartas/szerkesztes', task.hash]"
title="Szerkesztés"><i class="fitted pencil icon"></i></a> title="Szerkesztés"><i class="fitted pencil icon"></i></a>
</td> </td>
<td class="collapsing">{{device.name}}</td> <td class="collapsing">{{device.name}}</td>

View File

@ -17,14 +17,12 @@ export class UpcomingMaintenancesComponent implements OnInit {
@Input() warnWhenPast: boolean = true; @Input() warnWhenPast: boolean = true;
@Input() maintenances: Array<DeviceGroup> = []; @Input() maintenances: Array<DeviceGroup> = [];
private today: string = ""; private today: string = "";
public year: number;
constructor( constructor(
private roleGuard: RoleGuardService, private roleGuard: RoleGuardService,
private maintenanceManager: MaintenanceManagerService private maintenanceManager: MaintenanceManagerService
) { ) {
this.today = (new Date()).toISOString().substring(0, 10); this.today = (new Date()).toISOString().substring(0, 10);
this.year = new Date().getFullYear();
} }
ngOnInit() { ngOnInit() {

View File

@ -24,9 +24,8 @@
<div class="ui simple dropdown item"> <div class="ui simple dropdown item">
<i class="wrench icon"></i>Karbantartás <i class="dropdown icon"></i> <i class="wrench icon"></i>Karbantartás <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
<a class="item" [routerLink]="['/karbantartas/idoszeru-lista']"><i class="clock icon"></i>Időszerű lista</a> <a class="item" [routerLink]="['/karbantartas/idoszeru-lista']"><i class="list icon"></i>Időszerű lista</a>
<a class="item" [routerLink]="['/karbantartas/teljes-lista']"><i class="list icon"></i>Teljes lista</a> <a class="item" [routerLink]="['/karbantartas/teljes-lista']"><i class="list icon"></i>Teljes lista</a>
<a class="item" [routerLink]="['/karbantartas/naptar']"><i class="calendar icon"></i>Naptár</a>
</div> </div>
</div> </div>
<!-- <!--

View File

@ -1,28 +0,0 @@
.y-calendar {
display: grid;
grid-template-columns: auto auto auto auto auto auto auto;
}
.y-calendar .y-item {
display: block;
width: calc(100% - 4px);
height: calc(100% - 4px);
margin: 2px;
min-height: 80px;
}
.y-calendar .affix-day {
background-color: white;
}
.y-calendar .suffix-day {
background-color: white;
}
.y-calendar .day {
background-color: #ffcc80;
}
.y-calendar .weekend {
background-color: #d5d5d5;
}

View File

@ -1,11 +0,0 @@
<h1 class="ui dividing header">{{formattedMonthHeader}}</h1>
<div class="y-calendar">
<div *ngFor="let a of loopable(affixDayCount)" class="y-item affix-day" [attr.data-value]="a"></div>
<div *ngFor="let d of loopable(daysInMonth)" class="y-item day" [class.weekend]="isWeekend(d)" [attr.data-value]="d">
<div>{{d}}</div>
<div *ngFor="let task of dailyData(d)">
{{task.device.work}}
</div>
</div>
<div *ngFor="let s of loopable(suffixDayCount)" class="y-item suffix-day" [attr.data-value]="s"></div>
</div>

View File

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

View File

@ -1,68 +0,0 @@
import { Component, Input, OnInit } from '@angular/core';
import { format } from 'date-fns';
import { hu } from "date-fns/locale";
@Component({
selector: 'app-calendar',
templateUrl: './calendar.component.html',
styleUrls: ['./calendar.component.css']
})
export class CalendarComponent implements OnInit {
@Input('year')
private year: number;
@Input('month')
set month(month: number) {
this.monthIdx = month - 1;
}
private monthIdx: number;
@Input('data')
private data: any;
private firstDay: Date;
private lastDay: Date;
constructor() {}
ngOnInit() {
this.firstDay = new Date(this.year, this.monthIdx, 1);
this.lastDay = new Date(this.year, this.monthIdx + 1, 0);
}
public get affixDayCount(): number {
return this.firstDay.getDay() === 0
? 6
: this.firstDay.getDay() - 1;
}
public get suffixDayCount(): number {
return this.lastDay.getDay() === 0
? 0
: 7 - this.lastDay.getDay();
}
public get daysInMonth(): number {
return this.lastDay.getDate();
}
public loopable(number: number): Array<number> {
return Array(number)
.fill(null)
.map((v,i) => i + 1);
}
public get formattedMonthHeader(): string {
return format(this.firstDay, "yyyy MMMM", {locale: hu});
}
public isWeekend(day: number): boolean {
return [0,6].includes(new Date(this.year, this.monthIdx, day).getDay());
}
public dailyData(day: number) {
const actualDay = new Date(this.year, this.monthIdx, day);
return this.data.filter(item => item.start == format(actualDay, "yyyy-MM-dd"));
}
}

View File

@ -5,7 +5,6 @@ import { HTTP_INTERCEPTORS } from "@angular/common/http";
import { SemanticDropdownComponent } from "./semantic-dropdown/semantic-dropdown.component"; import { SemanticDropdownComponent } from "./semantic-dropdown/semantic-dropdown.component";
import { JsonRequestInterceptorService } from "./json-request-interceptor.service"; import { JsonRequestInterceptorService } from "./json-request-interceptor.service";
import { CurrencyFormatPipe } from './pipe/currency-format.pipe'; import { CurrencyFormatPipe } from './pipe/currency-format.pipe';
import { CalendarComponent } from './calendar/calendar.component';
@NgModule({ @NgModule({
imports: [ imports: [
@ -14,12 +13,10 @@ import { CalendarComponent } from './calendar/calendar.component';
declarations: [ declarations: [
SemanticDropdownComponent, SemanticDropdownComponent,
CurrencyFormatPipe, CurrencyFormatPipe,
CalendarComponent,
], ],
exports: [ exports: [
SemanticDropdownComponent, SemanticDropdownComponent,
CurrencyFormatPipe, CurrencyFormatPipe,
CalendarComponent,
], ],
providers: [{ providers: [{
provide: HTTP_INTERCEPTORS, provide: HTTP_INTERCEPTORS,

View File

@ -1,4 +1,4 @@
export const environment = { export const environment = {
production: true, production: true,
apiUrl: 'https://api.gulbaba.bggeneral.hu', apiUrl: 'https://api.gulbaba.lxuz.hu',
}; };