Commit d87245d9 authored by hasan khaddour's avatar hasan khaddour

Complete Reports Module

parent 106c7bf2
......@@ -26,8 +26,8 @@
</div>
</div>
<div class="col-auto">
<button type="button" [routerLink]="['/tracks/detail/',employeeParticipate.projectId,'employee',employeeParticipate.employeeId]" class="btn m-4 btn-sm btn-primary">استعراض متابعاتي به</button>
<button type="button" class="btn m-4 btn-sm btn-secondary">تقرير بمشاركتي</button>
<button type="button" [routerLink]="['/tracks/project/',employeeParticipate.projectId,'employee',employeeParticipate.employeeId]" class="btn m-4 btn-sm btn-primary">استعراض متابعاتي به</button>
<button type="button" [routerLink]="['/reports/contributions',employeeParticipate.projectId,'employee',employeeParticipate.employeeId]" class="btn m-4 btn-sm btn-secondary">تقرير بمشاركتي</button>
</div>
</div>
</div> <!-- / .card-body -->
......
......@@ -24,6 +24,12 @@
<button [routerLink]="['/projects',participant.projectId,'history','participationChange',participant.employeeId]" class="btn btn-secondary">التبدلات</button>
</small>
</div>
<div class="col text-center">
<small>
<button [routerLink]="['/reports/contributions',participant.projectId,'employee',participant.employeeId]" class="btn btn-secondary">المساهمات</button>
</small>
</div>
</div>
</div> <!-- /.card-footer -->
......
<div class="row align-items-center mb-4">
<div class="col">
<h2 class="h5 page-title"><small class="text-muted text-uppercase"></small></h2>
</div>
<div class="col-auto">
</div>
</div>
<div class="row justify-content-center">
<div class="col-12">
<div class="row mt-5 align-items-center">
<div class="col-md-3 text-center mb-5">
<div class="avatar avatar-xl">
<img src="./assets/images/users/4.jpg" alt="..." class="avatar-img ">
</div>
</div>
<div class="col">
<div class="row align-items-center">
<div class="col-md-7">
<h4 class="mb-1">{{project.projectInfo.name}}</h4>
<p class="small mb-3"><span class="badge badge-dark">{{project.currentState | stateTranslate}}</span></p>
</div>
</div>
<div class="row mb-4">
<div class="col-md-7">
<p class="text-muted"> {{project.projectInfo.description}}</p>
</div>
<div class="col">
<p class="small mb-0 text-muted">تاريخ البدء {{project.projectInfo.startDate | date}}</p>
<p class="small mb-0 text-muted">تاريخ الانتهاء المتوقع {{project.projectInfo.expectedEndDate | date}}</p>
<p class="small mb-0 text-muted">الرمز {{project.projectInfo.code}}</p>
</div>
</div>
</div>
</div>
<div class="row mt-5 align-items-center">
<div class="col">
<div class="row mb-4">
<div class="col">
<p class="small mb-0 text-muted">التمويل {{project.financialFund.financialStatus}} / {{project.financialFund.source}}</p>
<p class="small mb-0 text-muted">كتاب الطرح {{project.proposalInfo.proposingBookDate| date}} / {{project.proposalInfo.proposingBookNumber}}</p>
<p class="small mb-0 text-muted">كتاب الموافقة {{project.projectAggreement.aggreementDate | date}} / {{project.projectAggreement.aggreementNumber}}</p>
</div>
<div class="col">
<p class="small mb-0 text-muted">الجهة الطارحة {{project.proposer.customerName}}</p>
<p class="small mb-0 text-muted">مدير المشروع {{project.projectManager.personalInfo |fullname}}</p>
<p class="small mb-0 text-muted">رئيس فريق العمل {{project.teamLeader.personalInfo | fullname}}</p>
</div>
<div class="col">
<p class="small mb-0 text-muted">الجهة المنفذة {{project.executer.name}}</p>
<p class="small mb-0 text-muted">طبيعة النشاط {{project.projectClassification.projectNature}}</p>
<p class="small mb-0 text-muted">النوع {{project.projectType.typeName}}</p>
</div>
</div>
</div>
</div>
</div>
import { Component, Input } from '@angular/core';
import { Project } from '../../../../projects/models/responses/project';
@Component({
selector: 'project-subjectiv-unformal',
templateUrl: './project-subjectiv-unformal.component.html',
styleUrl: './project-subjectiv-unformal.component.css'
})
export class ProjectSubjectivUnformalComponent {
@Input() project : Project
}
......@@ -3,6 +3,7 @@
<tr>
<th scope="col" class="text-left">الرقم الذاتي</th>
<th scope="col" class="text-left">الاسم والشهرة</th>
<th scope="col" class="text-left">ساعات العمل<br> المسندة</th>
<th scope="col" class="text-left">ساعات العمل <br>المنفذة</th>
<th scope="col" class="text-left">نسبة المساهمة</th>
......@@ -18,7 +19,6 @@
<th scope="row">{{empTrack.employee.hiastId}}</th>
<td> {{empTrack.employee.personalInfo | fullname }}
</td>
<td class="text-left">{{empTrack.employee.workInfo.workType}}</td>
<td class="text-left">{{empTrack.employeeWork.assignedWorkingHours}}</td>
<td class="text-left">{{empTrack.employeeWork.workedHours}}</td>
<td class="text-left">{{empTrack.employeeWork.contributingRatio}}</td>
......@@ -37,7 +37,6 @@
<td class="text-center"></td>
<td class="text-center"></td>
<td class="text-center"></td>
<td class="text-center"></td>
</tr>
</tbody>
</table>
\ No newline at end of file
<p>step-trak-table works!</p>
<table class="table table-borderless table-striped">
<thead>
<tr>
<th scope="col" class="text-left">#</th>
<th scope="col" class="text-left">اسم المرحلة</th>
<th scope="col" class="text-left">النسبة التثقيلية</th>
<th scope="col" class="text-left">نسبة التنفيذ السابقة</th>
<th scope="col" class="text-left">نسبة تنفيذ المتابعة</th>
<th scope="col" class="text-left">نسبة التنفيذ الكلية</th>
<th scope="col" class="text-left">طبيعة االتنفيذ</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let empTrack of stepsTrack ; index as i " >
<th scope="row">{{i +1 }}</th>
<td> {{empTrack.stepInfo.stepName}}
</td>
<td class="text-left">{{empTrack.stepWeight}}</td>
<td class="text-left">{{empTrack.oldExecutionRatio}}</td>
<td class="text-left">{{empTrack.trackExecutionRatio}}</td>
<td class="text-left">{{empTrack.oldExecutionRatio + empTrack.trackExecutionRatio}}</td>
<td class="text-left">{{empTrack.executionState}}</td>
</tr>
<tr *ngIf="stepsTrack.length==0" >
<th scope="row" class="text-center"></th>
<td class="text-center"> </td>
<td class="text-center"></td>
<td class="text-center"></td>
<td class="text-center"></td>
<td class="text-center"></td>
<td class="text-center"></td>
</tr>
</tbody>
</table>
\ No newline at end of file
import { Component } from '@angular/core';
import { Component, Input } from '@angular/core';
import { StepTrack } from '../../../../tracks/models/responses/steptrack';
@Component({
selector: 'step-trak-table',
......@@ -7,4 +8,5 @@ import { Component } from '@angular/core';
})
export class StepTrakTableComponent {
@Input() stepsTrack :StepTrack[]
}
<table class="table table-borderless table-striped">
<thead>
<tr>
<th scope="col" class="text-left">م</th>
<th scope="col" class="text-left">الوضع الراهن</th>
<th scope="col" class="text-left">تاريخ المتابعة</th>
<th scope="col" class="text-left">الملاحظات</th>
<th scope="col" class="text-left">حالة المتابعة</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let track of tracks ; index as i " >
<th scope="row">{{i +1 }}</th>
<td class="text-left"> {{track.trackInfo.statusDescription}}</td>
<td class="text-left">{{track.trackInfo.trackDate |date}}</td>
<td class="text-left">{{track.notes}}</td>
<td class="text-left">{{track.trackInfo.isCompleted ? "مكتملة":"غير مكتملة"}}</td>
</tr>
<tr *ngIf="tracks.length==0" >
<th scope="row" class="text-center"></th>
<td class="text-center"></td>
<td class="text-center"></td>
<td class="text-center"> </td>
<td class="text-center"></td>
<td class="text-center"></td>
<td class="text-center"></td>
<td class="text-center"></td>
</tr>
</tbody>
</table>
\ No newline at end of file
import { Component, Input } from '@angular/core';
import { Track } from '../../../../tracks/models/responses/track';
@Component({
selector: 'tracks-table',
templateUrl: './track-row-item.component.html',
styleUrl: './track-row-item.component.css'
})
export class TrackRowItemComponent {
@Input() tracks : Track[]
}
<div class="container-fluid" *ngIf="project && employeesTrack && employeee ">
<div class="row justify-content-center">
<div class="col-12">
<div class="row align-items-center mb-4">
<div class="col">
<h2 class="h5 page-title">
<small class="text-muted text-uppercase">بطاقة متابعات مشارك </small>
</h2>
</div>
<div class="col-auto">
<button
type="button"
class="btn mr-1 btn-secondary m-1"
>
طباعة
</button>
</div>
</div>
<div class="card shadow" id="pdfContent">
<div class="card-body p-5">
<project-subjectiv-unformal
[project]="project"
>
</project-subjectiv-unformal>
<hr />
<p>
إن السيد <b>{{employeee.personalInfo | fullname}} </b> ذو الرقم الذاتي <b>{{employeee.hiastId}}</b> يعمل في المشروع والجدول المبين أدناه يبين متابعاته في المشروع
</p>
<div class="row text-secondary" *ngI="employeesTrack.length ==0">
لم تتم متابعته من قبل
</div>
<employee-trak-table
*ngIf="employeesTrack.length>0"
[employeeTrack]="employeesTrack" >
</employee-trak-table>
<hr>
<project-footer
[proposer]="project.proposer"
[executer]="project.executer"
[projectManager]="project.projectManager"
[teamLeader]="project.teamLeader"
>
</project-footer>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col-12 -->
</div>
</div>
\ No newline at end of file
//#region imports
import { Component } from '@angular/core';
import { Project } from '../../../projects/models/responses/project';
import { EmployeeTrack } from '../../../tracks/models/responses/employeeTrack';
import { ActivatedRoute, Router } from '@angular/router';
import { ToastrService } from 'ngx-toastr';
import { ProjectService } from '../../../projects/services/project.service';
import { EmployeesService } from '../../../employees/services/employees.service';
import { GetEmployeeTrackHistoryRequest } from '../../../employees/models/requests/getEmployeeTrackHistoryRequest';
import { Employee } from '../../../employees/models/responses/employee';
//#endregion imports
@Component({
selector: 'employee-work-track',
templateUrl: './employee-work-track.component.html',
styleUrl: './employee-work-track.component.css'
})
export class EmployeeWorkTrackComponent {
//#region propoerties
employeeId :number
projectId :number
project :Project
employeee : Employee
employeesTrack : EmployeeTrack[]
//#endregion propoerties
//#region Constructors
constructor(
private tostrService :ToastrService ,
private projectService : ProjectService,
private employeeService : EmployeesService,
private route : ActivatedRoute,
private router : Router
){}
//#endregion Constructors
//#region Oninit
ngOnInit(): void {
this.employeeId= Number(this.route.snapshot.paramMap.get('employeeId'))
this.projectId= Number(this.route.snapshot.paramMap.get('projectId'))
this.loadEmployeeTrack();
this.loadProject()
this.loadEmployee();
}
//#endregion Oninit
//#region Loaders
loadProject() {
this
.projectService
.getProjectById(this.projectId)
.subscribe({
next : (data)=>{
this.project=data;
}
});
}
loadEmployeeTrack() {
let request : GetEmployeeTrackHistoryRequest ={
employeeId: this.employeeId,
projectId:this.projectId,
pageNumber :null,
pageSize:null
}
this
.employeeService
.getEmployeeTrackHistory(request)
.subscribe({
next: (data)=>{
this.tostrService.success('تم تحميل التقرير بنجاح')
this.employeesTrack=data
}
});
}
loadEmployee(){
this
.employeeService
.getEmployeeById(this.employeeId)
.subscribe({
next:(data)=>{
this.employeee=data
},
error:(err)=>{
this.tostrService.error('لقد حدث خطاء ما')
}
});
}
//#endregion Loaders
}
......@@ -14,8 +14,15 @@
>
طباعة
</button>
<button
[routerLink]="['/reports',projectId,'steptracks',trackId]"
[routerLink]="['/reports/definition',projectId]"
type="button" class="btn mr-1 btn-secondary m-1">
بطاقة التعريف
</button>
<button
[routerLink]="['/reports/step-tracks',projectId,'track',trackId]"
type="button" class="btn mr-1 btn-secondary m-1">
تقرير متابعة المراحل
</button>
......@@ -40,9 +47,19 @@
<p>
<strong>
قائمة متابعة العاملين لعملية المتابعة التي حدثت بتاريخ {{track.trackInfo.trackDate}}
قائمة متابعة العاملين لعملية المتابعة التي حدثت بتاريخ {{track.trackInfo.trackDate | date}}
</strong>
</p>
<p>
<strong>الوضع الراهن : </strong>{{track.trackInfo.statusDescription}}
<br>
<strong>وضع عملية المتابعة : </strong>{{track.trackInfo.isCompleted ? "مكتملة" : "غير مكتملة"}}
<br>
<strong>الملاحظات : </strong>{{track.notes}}
<br>
</p>
<employee-trak-table
[employeeTrack]="employeesTrack" >
......
//#region Imports
import { Component, OnInit } from '@angular/core';
import { ToastrService } from 'ngx-toastr';
import { ProjectService } from '../../../projects/services/project.service';
......@@ -7,6 +8,7 @@ import { EmployeeTrack } from '../../../tracks/models/responses/employeeTrack';
import { ActivatedRoute, Router } from '@angular/router';
import { Project } from '../../../projects/models/responses/project';
import { data } from 'jquery';
//#endregion Imports
@Component({
selector: 'employees-track-report',
......@@ -15,13 +17,18 @@ import { data } from 'jquery';
})
export class EmployeesTrackReportComponent implements OnInit{
//#region Propoerties
trackId :number
projectId :number
project :Project
track : Track
employeesTrack : EmployeeTrack[]
//#endregion Propoerties
//#region Constructors
constructor(
private tostrService :ToastrService ,
......@@ -32,6 +39,12 @@ export class EmployeesTrackReportComponent implements OnInit{
){}
//#endregion Constructors
//#region Oninit
ngOnInit(): void {
this.trackId= Number(this.route.snapshot.paramMap.get('id'))
......@@ -42,7 +55,10 @@ export class EmployeesTrackReportComponent implements OnInit{
this.loadProject()
}
//#endregion Oninit
//#region Loaders
loadProject() {
this
.projectService
......@@ -67,6 +83,7 @@ export class EmployeesTrackReportComponent implements OnInit{
}
});
}
loadTracks() {
this
.trackService
......@@ -78,6 +95,6 @@ export class EmployeesTrackReportComponent implements OnInit{
});
}
//#endregion Loaders
}
......@@ -10,16 +10,12 @@
<div class="col-auto">
<button
type="button"
(click)="downloadAsPdf()"
class="btn mr-1 btn-secondary m-1"
>
طباعة
</button>
<button type="button" class="btn mr-1 btn-secondary m-1">
تقرير متابعة المراحل
</button>
<button type="button" class="btn mr-1 btn-secondary m-1">
تقرير انشغالية
</button>
<button
type="button"
[routerLink]="['/reports/timeline/', project.id]"
......
//#region Imports
import { Component, OnInit } from '@angular/core';
import { Project } from '../../../projects/models/responses/project';
import { ActivatedRoute, Router } from '@angular/router';
......@@ -6,6 +7,9 @@ import { ProjectService } from '../../../projects/services/project.service';
import { ProjectCompletion } from '../../../projects/models/responses/ProjectCompletion';
import { EmployeeContribution } from '../../../projects/models/responses/employeeContribution';
import { Track } from '../../../tracks/models/responses/track';
import { PdfDownloaderService } from '../../../core/services/pdfDownloader/pdf-downloader.service';
//#endregion Imports
@Component({
selector: 'project-completion',
......@@ -13,22 +17,33 @@ import { Track } from '../../../tracks/models/responses/track';
styleUrl: './project-completion.component.css'
})
export class ProjectCompletionComponent implements OnInit{
//#region Propoerrties
projectId : number
project :Project
completion : ProjectCompletion
contributers : EmployeeContribution[]
tracks : Track[]
iscalculated :boolean =false
//#endregion Propoerrties
//#region Constructors
constructor (
private route :ActivatedRoute ,
private projectService : ProjectService,
private router :Router,
private pdfDownloader : PdfDownloaderService,
private toastr :ToastrService
){}
//#endregion Constructors
//#region Oninit
ngOnInit(): void {
this.projectId= Number(this.route.snapshot.paramMap.get('id'))
......@@ -49,7 +64,10 @@ export class ProjectCompletionComponent implements OnInit{
}
});
}
//#endregion Oninit
//#region Loaders
loadContributions() {
this
.projectService
......@@ -77,5 +95,9 @@ export class ProjectCompletionComponent implements OnInit{
});
}
public downloadAsPdf(): void {
this.pdfDownloader.downloadAsPdf('pdfContent');
}
//#endregion Loaders
}
......@@ -17,13 +17,7 @@
</button>
<button *ngIf="project.currentState.toLocaleLowerCase()=='completed'" [routerLink]="['/reports/completion',project.id]" type="button" class="btn mr-1 btn-secondary m-1">
تقرير انجاز </button>
<button type="button" class="btn mr-1 btn-secondary m-1">
تقرير متابعة المراحل
</button>
<button type="button" class="btn mr-1 btn-secondary m-1">
تقرير انشغالية
</button>
تقرير انجاز </button>
<button
type="button"
[routerLink]="['/reports/timeline/', project.id]"
......
//#region Imports
import { Component, OnInit } from '@angular/core';
import { ReportsService } from '../../services/reports.service';
import { ActivatedRoute } from '@angular/router';
import { Project } from '../../../projects/models/responses/project';
import { PdfDownloaderService } from '../../../core/services/pdfDownloader/pdf-downloader.service';
//#endregion Imports
@Component({
selector: 'project-definition',
......@@ -10,6 +14,7 @@ import { PdfDownloaderService } from '../../../core/services/pdfDownloader/pdf-d
styleUrl: './project-definition.component.css'
})
export class ProjectDefinitionComponent implements OnInit{
project : Project
constructor(
......@@ -21,15 +26,18 @@ export class ProjectDefinitionComponent implements OnInit{
ngOnInit(): void {
const id = Number(this.route.snapshot.paramMap.get('id'));
this.reportsService.getProjectById(id).subscribe({
this
.reportsService
.getProjectById(id)
.subscribe({
next :(data) => {
this.project = data;
},
error : (err)=>{ console.log(err)}
this.project = data;
},
});
error : (err)=>{ console.log(err)}
});
}
......
<p>project-track-history works!</p>
<div class="container-fluid" *ngIf="project && tracks ">
<div class="row justify-content-center">
<div class="col-12">
<div class="row align-items-center mb-4">
<div class="col">
<h2 class="h5 page-title">
<small class="text-muted text-uppercase">بطاقة متابعات مشروع</small>
</h2>
</div>
<div class="col-auto">
<button
type="button"
class="btn mr-1 btn-secondary m-1"
>
طباعة
</button>
<button *ngIf="project.currentState.toLowerCase()=='completed'" type="button" class="btn mr-1 btn-secondary m-1">
تقرير انجاز
</button>
<button
type="button"
[routerLink]="['/reports/timeline/', project.id]"
class="btn mr-1 btn-secondary m-1"
>
تقرير خطة زمنية
</button>
</div>
</div>
<div class="card shadow" id="pdfContent">
<div class="card-body p-5">
<project-header [projectInfo]="project.projectInfo"></project-header>
<project-subjective [project]="project"> </project-subjective>
<hr />
<p>
<strong>
قائمة عمليات متابعة المشروع
</strong>
</p>
<tracks-table
[tracks]="tracks"
>
</tracks-table>
<hr>
<project-footer
[proposer]="project.proposer"
[executer]="project.executer"
[projectManager]="project.projectManager"
[teamLeader]="project.teamLeader"
>
</project-footer>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col-12 -->
</div>
</div>
\ No newline at end of file
import { Component } from '@angular/core';
import { Track } from '../../../tracks/models/responses/track';
import { Project } from '../../../projects/models/responses/project';
import { ProjectService } from '../../../projects/services/project.service';
import { ActivatedRoute, Router } from '@angular/router';
import { ToastrService } from 'ngx-toastr';
import { TrackService } from '../../../tracks/services/track.service';
import { GetTracksByProjectRequest } from '../../../tracks/models/requests/GetTracksByProjectRequest';
@Component({
selector: 'project-track-history',
......@@ -6,5 +13,62 @@ import { Component } from '@angular/core';
styleUrl: './project-track-history.component.css'
})
export class ProjectTrackHistoryComponent {
tracks :Track []
project : Project
projectId : number
constructor(
private tostrService :ToastrService ,
private projectService : ProjectService,
private trackService : TrackService,
private route : ActivatedRoute,
private router : Router
){}
ngOnInit(): void {
this.projectId= Number(this.route.snapshot.paramMap.get('projectId'))
this.loadTracks();
this.loadProject()
}
loadProject() {
this
.projectService
.getProjectById(this.projectId)
.subscribe({
next : (data)=>{
this.project=data;
}
});
}
loadTracks() {
let request : GetTracksByProjectRequest ={
projectId : this.projectId ,
pageNumber : null ,
pageSize :null
}
this
.trackService
.getTrackByProjectId(request)
.subscribe({
next: (data)=>{
this.tostrService.success('تم تحميل التقرير بنجاح')
this.tracks=data
}
});
}
}
<p>steps-track-report works!</p>
<div class="container-fluid" *ngIf="project && track && stepsTrack ">
<div class="row justify-content-center">
<div class="col-12">
<div class="row align-items-center mb-4">
<div class="col">
<h2 class="h5 page-title">
<small class="text-muted text-uppercase">بطاقة متابعة مراحل</small>
</h2>
</div>
<div class="col-auto">
<button
type="button"
class="btn mr-1 btn-secondary m-1"
>
طباعة
</button>
<button
[routerLink]="['/reports',projectId,'steptracks',trackId]"
type="button" class="btn mr-1 btn-secondary m-1">
تقرير متابعة العمالين
</button>
<button *ngIf="project.currentState.toLowerCase()=='completed'" type="button" class="btn mr-1 btn-secondary m-1">
تقرير انجاز
</button>
<button
type="button"
[routerLink]="['/reports/timeline/', project.id]"
class="btn mr-1 btn-secondary m-1"
>
تقرير خطة زمنية
</button>
</div>
</div>
<div class="card shadow" id="pdfContent">
<div class="card-body p-5">
<project-header [projectInfo]="project.projectInfo"></project-header>
<project-subjective [project]="project"> </project-subjective>
<hr />
<p>
<strong>
قائمة متابعة المراحل لعملية المتابعة التي حدثت بتاريخ {{track.trackInfo.trackDate | date}}
</strong>
</p>
<p>
<strong>الوضع الراهن : </strong>{{track.trackInfo.statusDescription}}
<br>
<strong>وضع عملية المتابعة : </strong>{{track.trackInfo.isCompleted ? "مكتملة" : "غير مكتملة"}}
<br>
<strong>الملاحظات : </strong>{{track.notes}}
<br>
</p>
<step-trak-table
[stepsTrack]="stepsTrack">
</step-trak-table>
<hr>
<project-footer
[proposer]="project.proposer"
[executer]="project.executer"
[projectManager]="project.projectManager"
[teamLeader]="project.teamLeader"
>
</project-footer>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col-12 -->
</div>
</div>
\ No newline at end of file
import { Component } from '@angular/core';
import { Project } from '../../../projects/models/responses/project';
import { ActivatedRoute, Router } from '@angular/router';
import { ToastrService } from 'ngx-toastr';
import { ProjectService } from '../../../projects/services/project.service';
import { StepTrack } from '../../../tracks/models/responses/steptrack';
import { Track } from '../../../tracks/models/responses/track';
import { TrackService } from '../../../tracks/services/track.service';
@Component({
selector: 'steps-track-report',
......@@ -7,4 +14,70 @@ import { Component } from '@angular/core';
})
export class StepsTrackReportComponent {
trackId :number
projectId :number
project :Project
track : Track
stepsTrack : StepTrack[]
constructor(
private tostrService :ToastrService ,
private projectService : ProjectService,
private trackService : TrackService,
private route : ActivatedRoute,
private router : Router
){}
ngOnInit(): void {
this.trackId= Number(this.route.snapshot.paramMap.get('id'))
this.projectId= Number(this.route.snapshot.paramMap.get('projectId'))
this.loadTracks();
this.loadStepTrack();
this.loadProject()
}
loadProject() {
this
.projectService
.getProjectById(this.projectId)
.subscribe({
next : (data)=>{
this.project=data;
}
});
}
loadStepTrack() {
this
.trackService
.getStepsTrackById(this.trackId)
.subscribe({
next: (data)=>{
this.tostrService.success('تم تحميل التقرير بنجاح')
this.stepsTrack=data
}
});
}
loadTracks() {
this
.trackService
.getByTrackById(this.trackId)
.subscribe({
next : (data)=>{
this.track = data;
}
});
}
}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ReportsRoutingModule } from './reports-routing.module';
import { ReportsRoutingModule } from './routing/reports-routing.module';
import { ProjectDefinitionComponent } from './pages/project-definition/project-definition.component';
import { ProjectCompletionComponent } from './pages/project-completion/project-completion.component';
import { EmployeesTrackReportComponent } from './pages/employees-track-report/employees-track-report.component';
......@@ -19,6 +19,9 @@ import { ProjectSubjectiveComponent } from './componenets/project-report-layout/
import { EmployeeTrakTableComponent } from './componenets/tracks-components/employee-trak-table/employee-trak-table.component';
import { StepTrakTableComponent } from './componenets/tracks-components/step-trak-table/step-trak-table.component';
import { EmployeeContributionTableComponent } from './componenets/employee-contribution-table/employee-contribution-table.component';
import { TrackRowItemComponent } from './componenets/tracks-components/track-row-item/track-row-item.component';
import { EmployeeWorkTrackComponent } from './pages/employee-work-track/employee-work-track.component';
import { ProjectSubjectivUnformalComponent } from './componenets/project-report-layout/project-subjectiv-unformal/project-subjectiv-unformal.component';
@NgModule({
......@@ -38,7 +41,10 @@ import { EmployeeContributionTableComponent } from './componenets/employee-contr
ProjectSubjectiveComponent,
EmployeeTrakTableComponent,
StepTrakTableComponent,
EmployeeContributionTableComponent
EmployeeContributionTableComponent,
TrackRowItemComponent,
EmployeeWorkTrackComponent,
ProjectSubjectivUnformalComponent
],
imports: [
CommonModule,
......
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { ProjectDefinitionComponent } from './pages/project-definition/project-definition.component';
import { ProjectTimeLineComponent } from './pages/project-time-line/project-time-line.component';
import { ProjectCompletionComponent } from './pages/project-completion/project-completion.component';
import { EmployeesTrackReportComponent } from './pages/employees-track-report/employees-track-report.component';
import { StepsTrackReportComponent } from './pages/steps-track-report/steps-track-report.component';
import { EmployeeTrackHistoryComponent } from '../../tracks/pages/employee-track-history/employee-track-history.component';
import { EmployeesTrackReportComponent } from '../pages/employees-track-report/employees-track-report.component';
import { ProjectCompletionComponent } from '../pages/project-completion/project-completion.component';
import { ProjectDefinitionComponent } from '../pages/project-definition/project-definition.component';
import { ProjectTimeLineComponent } from '../pages/project-time-line/project-time-line.component';
import { ProjectTrackHistoryComponent } from '../pages/project-track-history/project-track-history.component';
import { StepsTrackReportComponent } from '../pages/steps-track-report/steps-track-report.component';
import { EmployeeWorkTrackComponent } from '../pages/employee-work-track/employee-work-track.component';
const routes: Routes = [
{path: 'definition/:id',component:ProjectDefinitionComponent},
{path: 'timeline/:id',component:ProjectTimeLineComponent},
{path: 'completion/:id',component:ProjectCompletionComponent},
{path: 'employees-tracks/:projectId/track/:id',component:EmployeesTrackReportComponent} ,
{path: 'steps-tracks/:projectId/track/:id',component:StepsTrackReportComponent}
{path: 'steps-tracks/:projectId/track/:id',component:StepsTrackReportComponent},
{path: 'history/:projectId',component:ProjectTrackHistoryComponent} ,
{path: 'contributions/:projectId/employee/:employeeId',component:EmployeeWorkTrackComponent}
];
......
......@@ -10,5 +10,5 @@ export class StepTrack {
executionState :string
trackExecutionRatio :number
oldExecutionRatio : number
stepWeight : number
}
\ No newline at end of file
......@@ -6,7 +6,8 @@
<h4 class="h4 mb-0 page-title"> قائمة عمليات المتابعة للسيد : {{employee.personalInfo | fullname}} <br>{{projectInfo.name}} </h4>
</div>
<div class="col-auto">
<button type="button" class="btn btn-secondary"><span class="fe fe-file-plus fe-12 mr-2"></span>تقرير تاريخ متابعة </button>
<button type="button"
[routerLink]="['/reports/contributions',projectId,'employee',employeeId]" class="btn btn-secondary"><span class="fe fe-file-plus fe-12 mr-2"></span>تقرير تاريخ متابعة </button>
</div>
</div>
<hr>
......
......@@ -191,10 +191,11 @@ export class TrackDetailsComponent implements OnInit {
stepName :'',
NumberOfWorker:0,
description:'',
duration:0
},
stepId: s?.id??0
duration:0,
},
stepId: s?.id??0,
stepWeight:s?.weight ??0
}
......
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { TracksListComponent } from './pages/tracks-list/tracks-list.component';
import { TrackDetailsComponent } from './pages/track-details/track-details.component';
import { StepTrackHistoryComponent } from './pages/step-track-history/step-track-history.component';
import { EmployeeTrackHistoryComponent } from './pages/employee-track-history/employee-track-history.component';
import { TracksUncompleteComponent } from './pages/tracks-uncomplete/tracks-uncomplete.component';
import { ProjectTrackHistoryComponent } from './pages/project-track-history/project-track-history.component';
import { EmployeeTrackHistoryComponent } from '../pages/employee-track-history/employee-track-history.component';
import { ProjectTrackHistoryComponent } from '../pages/project-track-history/project-track-history.component';
import { StepTrackHistoryComponent } from '../pages/step-track-history/step-track-history.component';
import { TrackDetailsComponent } from '../pages/track-details/track-details.component';
import { TracksListComponent } from '../pages/tracks-list/tracks-list.component';
import { TracksUncompleteComponent } from '../pages/tracks-uncomplete/tracks-uncomplete.component';
const routes: Routes = [
{path:'project/:id',component:ProjectTrackHistoryComponent},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment