Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
PSManagementUI
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hasan.bahjat
PSManagementUI
Commits
20bbe93f
Commit
20bbe93f
authored
Aug 22, 2024
by
hasan khaddour
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adding pages for projects
parent
1eea8f3a
Changes
34
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
478 additions
and
145 deletions
+478
-145
participate-item.component.html
...mponents/participate-item/participate-item.component.html
+1
-1
home.component.css
src/app/pages/home/home.component.css
+44
-1
home.component.html
src/app/pages/home/home.component.html
+7
-11
financial-spend-table.component.css
...financial-spend-table/financial-spend-table.component.css
+0
-0
financial-spend-table.component.html
...inancial-spend-table/financial-spend-table.component.html
+28
-0
financial-spend-table.component.ts
.../financial-spend-table/financial-spend-table.component.ts
+12
-0
participant-item.component.css
...omponents/participant-item/participant-item.component.css
+0
-0
participant-item.component.html
...mponents/participant-item/participant-item.component.html
+22
-0
participant-item.component.ts
...components/participant-item/participant-item.component.ts
+12
-0
participants-table.component.css
...nents/participants-table/participants-table.component.css
+0
-0
participants-table.component.html
...ents/participants-table/participants-table.component.html
+27
-0
participants-table.component.ts
...onents/participants-table/participants-table.component.ts
+12
-0
project-footer.component.css
...ts/components/project-footer/project-footer.component.css
+0
-0
project-footer.component.html
...s/components/project-footer/project-footer.component.html
+44
-0
project-footer.component.ts
...cts/components/project-footer/project-footer.component.ts
+16
-0
step-row-item.component.html
...cts/components/step-row-item/step-row-item.component.html
+44
-11
participants-list.component.css
...s/pages/participants-list/participants-list.component.css
+0
-0
participants-list.component.html
.../pages/participants-list/participants-list.component.html
+21
-0
participants-list.component.ts
...ts/pages/participants-list/participants-list.component.ts
+44
-0
project-details.component.html
...ects/pages/project-details/project-details.component.html
+12
-103
project-details.component.ts
...ojects/pages/project-details/project-details.component.ts
+1
-1
project-list.component.html
...p/projects/pages/project-list/project-list.component.html
+1
-0
step-list.component.css
src/app/projects/pages/step-list/step-list.component.css
+0
-0
step-list.component.html
src/app/projects/pages/step-list/step-list.component.html
+20
-0
step-list.component.ts
src/app/projects/pages/step-list/step-list.component.ts
+45
-0
project-routing.module.ts
src/app/projects/project-routing.module.ts
+7
-1
projects.module.ts
src/app/projects/projects.module.ts
+13
-1
financial-spending.service.spec.ts
src/app/projects/services/financial-spending.service.spec.ts
+16
-0
financial-spending.service.ts
src/app/projects/services/financial-spending.service.ts
+9
-0
step.service.ts
src/app/projects/services/step.service.ts
+1
-1
header.component.html
src/app/shared/sharedLayout/header/header.component.html
+3
-3
header.component.ts
src/app/shared/sharedLayout/header/header.component.ts
+2
-2
sidebar.component.html
src/app/shared/sharedLayout/sidebar/sidebar.component.html
+14
-9
features-1.png
src/assets/images/home/features-1.png
+0
-0
No files found.
src/app/employees/components/participate-item/participate-item.component.html
View file @
20bbe93f
...
...
@@ -22,7 +22,7 @@
<span
class=
"text-muted"
>
صفة المساهمة {{employeeParticipate.role}}
</span>
</div>
<div
class=
"progress"
style=
"height: 2px;"
>
<div
class=
"progress-bar"
role=
"progressbar"
style=
"width: 25%"
aria-valuenow=
[employeeParticipate.partialTimeRatio]
aria-valuemin=
"0"
aria-valuemax=
"60"
></div>
<div
class=
"progress-bar"
role=
"progressbar"
style=
"width: 25%"
[
ariaValueNow
]="
employeeParticipate
.
partialTimeRatio
"
aria-valuemin=
"0"
aria-valuemax=
"60"
></div>
</div>
</div>
<div
class=
"col-auto"
>
...
...
src/app/pages/home/home.component.css
View file @
20bbe93f
...
...
@@ -2,7 +2,50 @@
color
:
darkgrey
;
text-decoration
:
underline
;
}
.features
.features-item
{
color
:
color-mix
(
in
srgb
,
var
(
--default-color
),
transparent
20%
);
}
.features
.features-item
+
.features-item
{
margin-top
:
100px
;
}
@media
(
max-width
:
640px
)
{
.features
.features-item
+
.features-item
{
margin-top
:
40px
;
}
}
.features
.features-item
h3
{
font-weight
:
700
;
font-size
:
26px
;
}
.features
.features-item
ul
{
list-style
:
none
;
padding
:
0
;
}
.features
.features-item
ul
li
{
padding-bottom
:
10px
;
display
:
flex
;
align-items
:
center
;
}
.features
.features-item
ul
li
:last-child
{
padding-bottom
:
0
;
}
.features
.features-item
ul
i
{
font-size
:
20px
;
padding-right
:
4px
;
color
:
var
(
--accent-color
);
}
.features
.features-item
p
:last-child
{
margin-bottom
:
0
;
}
.search-Border
{
height
:
40px
;
}
...
...
src/app/pages/home/home.component.html
View file @
20bbe93f
<div
class=
"row gy-4 align-items-center py-5 features-item"
>
<div
class=
"col-md-5 d-flex align-items-center aos-init aos-animate"
data-aos=
"zoom-out"
data-aos-delay=
"100"
>
<img
src=
"assets/images/home/features-2.png"
class=
"img-fluid"
alt=
""
>
</div>
<div
class=
"col-md-7 aos-init aos-animate"
data-aos=
"fade-up"
data-aos-delay=
"100"
>
<div
style=
"margin-bottom: 60px;"
class=
"row gy-4 text-center align-items-center py-5 features-item"
>
<div
class=
"col-md-7 fst-italic"
>
<h3>
مرحبا بك في موقع إدارة حالة المشاريع
</h3>
...
...
@@ -11,12 +8,11 @@
</p>
<p
class=
"fst-italic"
>
تابع المشاريع بكل أريحية
</p>
<ul>
<li><i
class=
"bi bi-check"
></i><span>
تستطيع من خلال هذا الموقع الاطلاع على المشاريع التي تديرها ومتابعتها
</span></li>
<li><i
class=
"bi bi-check"
></i>
<span>
كما يمكنك الاطلاع على ساعات عملك ضمن المشاريع التي تساهم بها
</span></li>
<li><i
class=
"bi bi-check"
></i>
<span>
أصدر التقارير التي تحتاجها
</span></li>
</ul>
</div>
<div
class=
"col-md-5 d-flex align-items-center "
>
<img
src=
"assets/images/home/features-1.png"
class=
"img-fluid"
alt=
""
>
</div>
</div>
\ No newline at end of file
src/app/projects/components/financial-spend-table/financial-spend-table.component.css
0 → 100644
View file @
20bbe93f
src/app/projects/components/financial-spend-table/financial-spend-table.component.html
0 → 100644
View file @
20bbe93f
<table
class=
"table table-borderless table-striped"
>
<thead>
<tr>
<th
scope=
"col"
>
#
</th>
<th
scope=
"col"
clsss=
"text-center"
>
نوع الكلفة
</th>
<th
scope=
"col"
class=
"text-center"
>
البيان
</th>
<th
scope=
"col"
class=
"text-center"
>
الشراء المحلي
</th>
<th
scope=
"col"
class=
"text-center"
>
الشراء الخارجي
</th>
<th
scope=
"col"
class=
"text-center"
>
نوع القطع
</th>
<th
scope=
"col"
class=
"text-center"
>
تاريخ الانفاق المتوقع
</th>
</tr>
</thead>
<tbody>
<tr
*
ngFor=
"let spend of financialSpending"
>
<th
scope=
"row"
></th>
<td
class=
"text-center"
>
{{spend.costType}}
</td>
<td
class=
"text-center"
>
{{spend.description }}
</td>
<td
class=
"text-center"
>
{{spend.localPurchase}}
</td>
<td
class=
"text-center"
>
{{spend.externalPurchase.ammount}}
</td>
<td
class=
"text-center"
>
{{spend.externalPurchase.currency}}
</td>
<td
class=
"text-center"
>
{{spend.expectedSpendingDate | date}}
</td>
</tr>
</tbody>
</table>
src/app/projects/components/financial-spend-table/financial-spend-table.component.ts
0 → 100644
View file @
20bbe93f
import
{
Component
,
Input
}
from
'@angular/core'
;
import
{
FinancialSpending
}
from
'../../models/responses/FinancialSpending'
;
@
Component
({
selector
:
'financial-spend-table'
,
templateUrl
:
'./financial-spend-table.component.html'
,
styleUrl
:
'./financial-spend-table.component.css'
})
export
class
FinancialSpendTableComponent
{
@
Input
()
financialSpending
:
FinancialSpending
[]
}
src/app/projects/components/participant-item/participant-item.component.css
0 → 100644
View file @
20bbe93f
src/app/projects/components/participant-item/participant-item.component.html
0 → 100644
View file @
20bbe93f
<div
class=
"card shadow mb-4"
>
<div
class=
"card-body text-center"
>
<div
class=
"avatar avatar-lg mt-4"
>
<a
href=
""
>
<img
src=
"./assets/images/users/4.jpg"
alt=
"..."
class=
"avatar-img rounded-circle"
>
</a>
</div>
<div
class=
"card-text my-2"
>
<strong
class=
"card-title my-0"
>
{{participant.employee.personalInfo | fullname}}
</strong>
<p
class=
"small text-muted mb-0"
>
Tristique Ltd
</p>
<p
class=
"small"
><span
class=
"badge badge-light text-muted"
>
{{participant.employee.workInfo.workType}} {{participant.employee.workInfo.workJob}}
</span></p>
</div>
</div>
<!-- ./card-text -->
<div
class=
"card-footer"
>
<div
class=
"row align-items-center justify-content-between"
>
<div
class=
"col-auto text-center"
>
<small>
<span
class=
"dot dot-lg bg-secondary mr-1"
></span>
{{participant.role}}
</small>
</div>
</div>
</div>
<!-- /.card-footer -->
</div>
\ No newline at end of file
src/app/projects/components/participant-item/participant-item.component.ts
0 → 100644
View file @
20bbe93f
import
{
Component
,
Input
}
from
'@angular/core'
;
import
{
EmployeeParticipate
}
from
'../../../employees/models/responses/employeeParticipate'
;
@
Component
({
selector
:
'participant-item'
,
templateUrl
:
'./participant-item.component.html'
,
styleUrl
:
'./participant-item.component.css'
})
export
class
ParticipantItemComponent
{
@
Input
()
participant
:
EmployeeParticipate
}
src/app/projects/components/participants-table/participants-table.component.css
0 → 100644
View file @
20bbe93f
src/app/projects/components/participants-table/participants-table.component.html
0 → 100644
View file @
20bbe93f
<p><strong>
المشاركين في المشروع
</strong></p>
<table
class=
"table table-borderless table-striped"
>
<thead>
<tr>
<th
scope=
"col"
>
#
</th>
<th
scope=
"col"
clsss=
"text-center"
>
الرقم الذاتي
</th>
<th
scope=
"col"
class=
"text-center"
>
اسم المشارك
</th>
<th
scope=
"col"
class=
"text-center"
>
صفة العمل
</th>
<th
scope=
"col"
class=
"text-center"
>
الهيئة
</th>
<th
scope=
"col"
class=
"text-center"
>
نسبة التفرغ
</th>
<th
scope=
"col"
class=
"text-center"
>
المساهمة
</th>
</tr>
</thead>
<tbody>
<tr
*
ngFor=
"let participant of employeeParticipates"
>
<th
scope=
"row"
></th>
<td
class=
"text-center"
>
{{participant.employee.hiastId}}
</td>
<td
class=
"text-center"
>
{{participant.employee.personalInfo | fullname }}
</td>
<td
class=
"text-center"
>
{{participant.employee.workInfo.workJob}}
</td>
<td
class=
"text-center"
>
{{participant.employee.workInfo.workType}}
</td>
<td
class=
"text-center"
>
{{participant.partialTimeRatio}}
</td>
<td
class=
"text-center"
>
{{participant.role}}
</td>
</tr>
</tbody>
</table>
src/app/projects/components/participants-table/participants-table.component.ts
0 → 100644
View file @
20bbe93f
import
{
Component
,
Input
}
from
'@angular/core'
;
import
{
EmployeeParticipate
}
from
'../../../employees/models/responses/employeeParticipate'
;
@
Component
({
selector
:
'participants-table'
,
templateUrl
:
'./participants-table.component.html'
,
styleUrl
:
'./participants-table.component.css'
})
export
class
ParticipantsTableComponent
{
@
Input
()
employeeParticipates
:
EmployeeParticipate
[]
}
src/app/projects/components/project-footer/project-footer.component.css
0 → 100644
View file @
20bbe93f
src/app/projects/components/project-footer/project-footer.component.html
0 → 100644
View file @
20bbe93f
<div
class=
"row mt-5"
>
<div
class=
"col-2 text-center"
>
<img
src=
"/assets/images/users/4.jpg"
class=
"navbar-brand-img brand-sm mx-auto my-4"
alt=
"..."
>
</div>
<div
class=
"col-2"
>
<p
class=
"mb-4 text-center"
>
<strong>
مدير المشروع
</strong>
<br/><small>
{{projectManager.personalInfo | fullname}}
</small>
</p>
</div>
<div
class=
"col-2"
>
<p
class=
"mb-4 text-center"
>
<strong>
رئيس فريق العمل
</strong>
<br/><small>
{{teamLeader.personalInfo| fullname }}
</small>
</p>
</div>
<div
class=
"col-2"
>
<p
class=
"mb-4 text-center"
>
<strong>
الجهة الطارحة
</strong>
<br/><small>
{{proposer.customerName}}
</small>
</p>
</div>
<div
class=
"col-2"
>
<p
class=
"mb-4 text-center"
>
<strong>
الجهة المنفذة
</strong>
<br/><small>
{{executer.name}}
</small>
</p>
</div>
<div
class=
"col-2 text-center"
>
<img
src=
"/assets/images/users/4.jpg"
class=
"navbar-brand-img brand-sm mx-auto my-4"
alt=
"..."
>
</div>
</div>
<!-- /.row -->
src/app/projects/components/project-footer/project-footer.component.ts
0 → 100644
View file @
20bbe93f
import
{
Component
,
Input
}
from
'@angular/core'
;
import
{
Customer
}
from
'../../../customers/models/customer'
;
import
{
Employee
}
from
'../../../employees/models/responses/employee'
;
import
{
Department
}
from
'../../models/responses/Department'
;
@
Component
({
selector
:
'project-footer'
,
templateUrl
:
'./project-footer.component.html'
,
styleUrl
:
'./project-footer.component.css'
})
export
class
ProjectFooterComponent
{
@
Input
()
proposer
:
Customer
;
@
Input
()
projectManager
:
Employee
@
Input
()
teamLeader
:
Employee
@
Input
()
executer
:
Department
}
src/app/projects/components/step-row-item/step-row-item.component.html
View file @
20bbe93f
<tr>
<th
scope=
"row"
></th>
<td>
{{step.stepInfo.stepName}}
</td>
<td
class=
"text-left"
>
{{step.stepInfo.description}}
</td>
<td
class=
"text-left"
>
{{step.currentCompletionRatio}}
</td>
<td
class=
"text-left"
>
{{step.weight}}
</td>
<td
class=
"text-left"
>
{{step.stepInfo.startDate | date}}
</td>
<td
class=
"text-left"
>
{{step.stepInfo.duration}}
</td>
</tr>
<div
class=
"card shadow mb-4 col-8 offset-2"
>
<div
class=
"card-header py-3"
>
<div
class=
"row align-items-center"
>
<div
class=
"col-auto"
>
<a
href=
"profile-posts.html"
class=
"avatar avatar-md"
>
<img
src=
"./assets/images/users/4.jpg"
alt=
"..."
class=
"avatar-img rounded-circle"
>
</a>
</div>
<div
class=
"col ml-n2"
>
<strong
class=
"mb-1"
>
{{step.stepInfo.stepName}}
</strong><span
class=
" ml-1"
></span>
<p
class=
"small text-muted mb-1"
>
{{step.stepInfo.description}}
</p>
</div>
<div
class=
"col-auto"
>
</div>
</div>
</div>
<div
class=
"card-body "
>
<div
class=
"row align-items-center"
>
<div
class=
"col-8 "
>
<div
class=
"small mb-2 d-flex"
>
<span
class=
"text-muted flex-fill"
>
نسبة الانجاز {{step.currentCompletionRatio}}
</span>
<span
class=
"text-muted"
>
الثقل {{step.weight}}
</span>
</div>
</div>
<div
class=
"col-8 "
>
<div
class=
"small mb-2 d-flex"
>
<span
class=
"text-muted flex-fill"
>
تاريخ البدء {{step.stepInfo.startDate | date}}
</span>
<span
class=
"text-muted"
>
المدة {{step.stepInfo.duration}}
</span>
</div>
<div
class=
"col-auto"
>
<button
type=
"button"
class=
"btn m-2 btn-sm btn-primary"
>
استعراض تارخ متابعتها
</button>
<button
type=
"button"
class=
"btn m-2 btn-sm btn-secondary"
>
تعديل المعلومات
</button>
<button
type=
"button"
class=
"btn m-2 btn-sm btn-danger"
>
إزالة
</button>
</div>
</div>
</div>
</div>
<!-- / .card-body -->
</div>
\ No newline at end of file
src/app/projects/pages/participants-list/participants-list.component.css
0 → 100644
View file @
20bbe93f
src/app/projects/pages/participants-list/participants-list.component.html
0 → 100644
View file @
20bbe93f
<section
*
ngIf=
"participants"
class=
"row"
>
<div
class=
"row justify-content-center"
>
<div
class=
"col-12"
>
<div
class=
"row align-items-center my-4"
>
<div
class=
"col"
>
<h2
class=
"h4 mb-0 page-title"
>
قائمة المشاركين بالمشروع
</h2>
</div>
<div
class=
"col-auto"
>
<button
type=
"button"
class=
"btn btn-primary"
><span
class=
"fe fe-file-plus fe-12 mr-2"
></span>
إضافة مشارك
</button>
</div>
</div>
<hr>
<div
class=
"row"
>
<participant-item
class=
"col-3"
*
ngFor=
"let participant of participants"
[
participant
]="
participant
"
></participant-item>
</div>
<div
*
ngIf=
"participants.length==0"
>
للأسف هذا المشروع لايحوي على أية مشاركين
</div>
</div>
</div>
</section>
\ No newline at end of file
src/app/projects/pages/participants-list/participants-list.component.ts
0 → 100644
View file @
20bbe93f
import
{
Component
}
from
'@angular/core'
;
import
{
EmployeeParticipate
}
from
'../../../employees/models/responses/employeeParticipate'
;
import
{
ProjectService
}
from
'../../services/project.service'
;
import
{
ActivatedRoute
,
Router
}
from
'@angular/router'
;
import
{
ToastrService
}
from
'ngx-toastr'
;
@
Component
({
selector
:
'participants-list'
,
templateUrl
:
'./participants-list.component.html'
,
styleUrl
:
'./participants-list.component.css'
})
export
class
ParticipantsListComponent
{
participants
:
EmployeeParticipate
[]
projectId
=
Number
(
this
.
route
.
snapshot
.
paramMap
.
get
(
'id'
));
constructor
(
private
projectService
:
ProjectService
,
private
toastr
:
ToastrService
,
private
route
:
ActivatedRoute
,
public
router
:
Router
)
{
}
ngOnInit
():
void
{
this
.
loadParticipations
();
}
loadParticipations
():
void
{
this
.
projectService
.
getParticipants
(
this
.
projectId
).
subscribe
({
next
:
(
data
)
=>
{
this
.
participants
=
data
this
.
toastr
.
success
(
"تم تحميل المراحل بنجاح"
);
}
,
error
:(
err
)
=>
{
console
.
log
(
err
)
this
.
toastr
.
error
(
"لقد حدث خطاء ما"
)
}
})
}
}
src/app/projects/pages/project-details/project-details.component.html
View file @
20bbe93f
...
...
@@ -49,108 +49,17 @@
<p><strong>
مراحل المشروع
</strong></p>
<step-table
[
steps
]="
project
.
steps
"
></step-table>
<hr>
<p><strong>
المشاركين في المشروع
</strong></p>
<table
class=
"table table-borderless table-striped"
>
<thead>
<tr>
<th
scope=
"col"
>
#
</th>
<th
scope=
"col"
clsss=
"text-center"
>
الرقم الذاتي
</th>
<th
scope=
"col"
class=
"text-center"
>
اسم المشارك
</th>
<th
scope=
"col"
class=
"text-center"
>
صفة العمل
</th>
<th
scope=
"col"
class=
"text-center"
>
الهيئة
</th>
<th
scope=
"col"
class=
"text-center"
>
نسبة التفرغ
</th>
<th
scope=
"col"
class=
"text-center"
>
المساهمة
</th>
</tr>
</thead>
<tbody>
<tr
*
ngFor=
"let participant of project.employeeParticipates"
>
<th
scope=
"row"
></th>
<td
class=
"text-center"
>
{{participant.employee.hiastId}}
</td>
<td
class=
"text-center"
>
{{participant.employee.personalInfo | fullname }}
</td>
<td
class=
"text-center"
>
{{participant.employee.workInfo.workJob}}
</td>
<td
class=
"text-center"
>
{{participant.employee.workInfo.workType}}
</td>
<td
class=
"text-center"
>
{{participant.partialTimeRatio}}
</td>
<td
class=
"text-center"
>
{{participant.role}}
</td>
</tr>
</tbody>
</table>
<participants-table
[
employeeParticipates
]="
project
.
employeeParticipates
"
></participants-table>
<p><strong>
خطة الانفاق
</strong></p>
<table
class=
"table table-borderless table-striped"
>
<thead>
<tr>
<th
scope=
"col"
>
#
</th>
<th
scope=
"col"
clsss=
"text-center"
>
نوع الكلفة
</th>
<th
scope=
"col"
class=
"text-center"
>
البيان
</th>
<th
scope=
"col"
class=
"text-center"
>
الشراء المحلي
</th>
<th
scope=
"col"
class=
"text-center"
>
الشراء الخارجي
</th>
<th
scope=
"col"
class=
"text-center"
>
نوع القطع
</th>
<th
scope=
"col"
class=
"text-center"
>
تاريخ الانفاق المتوقع
</th>
</tr>
</thead>
<tbody>
<tr
*
ngFor=
"let spend of project.financialSpending"
>
<th
scope=
"row"
></th>
<td
class=
"text-center"
>
{{spend.costType}}
</td>
<td
class=
"text-center"
>
{{spend.description }}
</td>
<td
class=
"text-center"
>
{{spend.localPurchase}}
</td>
<td
class=
"text-center"
>
{{spend.externalPurchase.ammount}}
</td>
<td
class=
"text-center"
>
{{spend.externalPurchase.currency}}
</td>
<td
class=
"text-center"
>
{{spend.expectedSpendingDate | date}}
</td>
</tr>
</tbody>
</table>
<div
class=
"row mt-5"
>
<div
class=
"col-2 text-center"
>
<img
src=
"/assets/images/users/4.jpg"
class=
"navbar-brand-img brand-sm mx-auto my-4"
alt=
"..."
>
</div>
<div
class=
"col-2"
>
<p
class=
"mb-4"
>
<strong>
مدير المشروع
</strong>
<br/><small>
{{project.projectManager.personalInfo | fullname}}
</small>
</p>
</div>
<div
class=
"col-2"
>
<p
class=
"mb-4"
>
<strong>
رئيس فريق العمل
</strong>
<br/><small>
{{project.projectManager.personalInfo | fullname }}
</small>
</p>
</div>
<div
class=
"col-2"
>
<p
class=
"mb-4"
>
<strong>
الجهة الطارحة
</strong>
<br/><small>
{{project.proposer.customerName}}
</small>
</p>
</div>
<div
class=
"col-2"
>
<p
class=
"mb-4"
>
<strong>
الجهة المنفذة
</strong>
<br/><small>
{{project.executer.name}}
</small>
</p>
</div>
<div
class=
"col-2 text-center"
>
<img
src=
"/assets/images/users/4.jpg"
class=
"navbar-brand-img brand-sm mx-auto my-4"
alt=
"..."
>
</div>
</div>
<!-- /.row -->
<financial-spend-table
[
financialSpending
]="
project
.
financialSpending
"
></financial-spend-table>
<project-footer
[
proposer
]="
project
.
proposer
"
[
executer
]="
project
.
executer
"
[
projectManager
]="
project
.
projectManager
"
[
teamLeader
]="
project
.
teamLeader
"
>
</project-footer>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col-12 -->
...
...
@@ -241,7 +150,7 @@
<strong>
معلومات المشروع
</strong>
</div>
<div
class=
"row"
>
<div
class=
"col-md-6 col-lg-4"
>
<div
class=
"col-md-6 col-lg-4"
(
click
)="
this
.
router
.
navigate
(['/
projects
/
steps
/',
project
.
id
])"
>
<div
class=
"card shadow mb-4"
>
<div
class=
"card-body file-list"
>
<div
class=
"d-flex align-items-center"
>
...
...
@@ -272,7 +181,7 @@
</div>
<!-- .card-body -->
</div>
<!-- .card -->
</div>
<!-- .col -->
<div
class=
"col-md-6 col-lg-4"
>
<div
class=
"col-md-6 col-lg-4"
(
click
)="
this
.
router
.
navigate
(['/
projects
/
participants
/',
project
.
id
])"
>
<div
class=
"card shadow mb-4"
>
<div
class=
"card-body file-list"
>
<div
class=
"d-flex align-items-center"
>
...
...
src/app/projects/pages/project-details/project-details.component.ts
View file @
20bbe93f
...
...
@@ -14,7 +14,7 @@ export class ProjectDetailsComponent implements OnInit {
project
:
Project
@
ViewChild
(
'dataToExport'
,
{
static
:
false
})
public
dataToExport
:
ElementRef
;
constructor
(
p
rivate
router
:
Router
,
p
ublic
router
:
Router
,
private
route
:
ActivatedRoute
,
private
projectService
:
ProjectService
,
private
toastr
:
ToastrService
,
...
...
src/app/projects/pages/project-list/project-list.component.html
View file @
20bbe93f
...
...
@@ -9,6 +9,7 @@
<button
type=
"button"
(
click
)="
this
.
router
.
navigate
(['
projects
/
create
'])"
class=
"btn btn-primary"
><span
class=
"fe fe-file-plus fe-12 mr-2"
></span>
طرح مشروع
</button>
</div>
</div>
<hr>
<div
class=
"row"
>
<project-item
class=
"col-md-4"
(
click
)="
this
.
router
.
navigate
(['
projects
/
detail
',
project
.
id
])"
*
ngFor=
"let project of projects"
[
project
]="
project
"
></project-item>
</div>
...
...
src/app/projects/pages/step-list/step-list.component.css
0 → 100644
View file @
20bbe93f
src/app/projects/pages/step-list/step-list.component.html
0 → 100644
View file @
20bbe93f
<section
*
ngIf=
"steps"
class=
"row"
>
<div
class=
"row justify-content-center"
>
<div
class=
"col-12"
>
<div
class=
"row align-items-center my-4"
>
<div
class=
"col"
>
<h2
class=
"h3 mb-0 page-title"
>
قائمة مراحل المشروع
</h2>
</div>
<div
class=
"col-auto"
>
<button
type=
"button"
(
click
)="
this
.
router
.
navigate
(['
projects
/
create
'])"
class=
"btn btn-primary"
><span
class=
"fe fe-file-plus fe-12 mr-2"
></span>
إضافة مرحلة
</button>
</div>
</div>
<hr>
<step-row-item
class=
" offset-2"
*
ngFor=
"let step of steps"
[
step
]="
step
"
></step-row-item>
<div
*
ngIf=
"steps.length==0"
>
للأسف هذا المروع لايحوي على أية مراحل
</div>
</div>
</div>
</section>
\ No newline at end of file
src/app/projects/pages/step-list/step-list.component.ts
0 → 100644
View file @
20bbe93f
import
{
Component
}
from
'@angular/core'
;
import
{
Step
}
from
'../../models/responses/Step'
;
import
{
ProjectService
}
from
'../../services/project.service'
;
import
{
ToastrService
}
from
'ngx-toastr'
;
import
{
ActivatedRoute
,
Route
,
Router
}
from
'@angular/router'
;
import
{
StepService
}
from
'../../services/step.service'
;
@
Component
({
selector
:
'step-list'
,
templateUrl
:
'./step-list.component.html'
,
styleUrl
:
'./step-list.component.css'
})
export
class
StepListComponent
{
steps
:
Step
[]
projectId
=
Number
(
this
.
route
.
snapshot
.
paramMap
.
get
(
'id'
));
constructor
(
private
stepService
:
StepService
,
private
toastr
:
ToastrService
,
private
route
:
ActivatedRoute
,
public
router
:
Router
)
{
}
ngOnInit
():
void
{
this
.
loadParticipations
();
}
loadParticipations
():
void
{
this
.
stepService
.
getStepsByProject
(
this
.
projectId
).
subscribe
({
next
:
(
data
)
=>
{
this
.
steps
=
data
this
.
toastr
.
success
(
"تم تحميل المراحل بنجاح"
);
}
,
error
:(
err
)
=>
{
console
.
log
(
err
)
this
.
toastr
.
error
(
"لقد حدث خطاء ما"
)
}
})
}
}
src/app/projects/project-routing.module.ts
View file @
20bbe93f
...
...
@@ -3,12 +3,18 @@ import { RouterModule, Routes } from '@angular/router';
import
{
ProjectListComponent
}
from
'./pages/project-list/project-list.component'
;
import
{
ProjectDetailsComponent
}
from
'./pages/project-details/project-details.component'
;
import
{
ProjectCreateComponent
}
from
'./pages/project-create/project-create.component'
;
import
{
StepListComponent
}
from
'./pages/step-list/step-list.component'
;
import
{
ParticipantsListComponent
}
from
'./pages/participants-list/participants-list.component'
;
const
routes
:
Routes
=
[
{
path
:
''
,
component
:
ProjectListComponent
},
{
path
:
'detail/:id'
,
component
:
ProjectDetailsComponent
},
{
path
:
'create'
,
component
:
ProjectCreateComponent
}
{
path
:
'create'
,
component
:
ProjectCreateComponent
},
{
path
:
'steps/:id'
,
component
:
StepListComponent
},
{
path
:
'participants/:id'
,
component
:
ParticipantsListComponent
}
];
...
...
src/app/projects/projects.module.ts
View file @
20bbe93f
...
...
@@ -21,6 +21,12 @@ import {MatDatepickerModule} from '@angular/material/datepicker';
import
{
provideNativeDateAdapter
}
from
'@angular/material/core'
;
import
{
ProjectAttachmentsComponent
}
from
'./pages/project-attachments/project-attachments.component'
;
import
{
StepTableComponent
}
from
'./components/step-table/step-table.component'
;
import
{
ParticipantsTableComponent
}
from
'./components/participants-table/participants-table.component'
;
import
{
FinancialSpendTableComponent
}
from
'./components/financial-spend-table/financial-spend-table.component'
;
import
{
ProjectFooterComponent
}
from
'./components/project-footer/project-footer.component'
;
import
{
StepListComponent
}
from
'./pages/step-list/step-list.component'
;
import
{
ParticipantsListComponent
}
from
'./pages/participants-list/participants-list.component'
;
import
{
ParticipantItemComponent
}
from
'./components/participant-item/participant-item.component'
;
@
NgModule
({
declarations
:
[
...
...
@@ -32,7 +38,13 @@ import { StepTableComponent } from './components/step-table/step-table.component
ProjectHeaderComponent
,
ProjectCreateComponent
,
ProjectAttachmentsComponent
,
StepTableComponent
StepTableComponent
,
ParticipantsTableComponent
,
FinancialSpendTableComponent
,
ProjectFooterComponent
,
StepListComponent
,
ParticipantsListComponent
,
ParticipantItemComponent
],
providers
:
[
ProjectService
,
...
...
src/app/projects/services/financial-spending.service.spec.ts
0 → 100644
View file @
20bbe93f
import
{
TestBed
}
from
'@angular/core/testing'
;
import
{
FinancialSpendingService
}
from
'./financial-spending.service'
;
describe
(
'FinancialSpendingService'
,
()
=>
{
let
service
:
FinancialSpendingService
;
beforeEach
(()
=>
{
TestBed
.
configureTestingModule
({});
service
=
TestBed
.
inject
(
FinancialSpendingService
);
});
it
(
'should be created'
,
()
=>
{
expect
(
service
).
toBeTruthy
();
});
});
src/app/projects/services/financial-spending.service.ts
0 → 100644
View file @
20bbe93f
import
{
Injectable
}
from
'@angular/core'
;
@
Injectable
({
providedIn
:
'root'
})
export
class
FinancialSpendingService
{
constructor
()
{
}
}
src/app/projects/services/step.service.ts
View file @
20bbe93f
...
...
@@ -26,7 +26,7 @@ export class StepService {
//
public
getStepsByProject
(
projectId
:
number
):
Observable
<
Step
[]
>
{
return
this
.
http
.
get
<
Step
[]
>
(
this
.
config
.
getServerUrl
()
+
"/Steps/ByProject/"
+
projectId
);
return
this
.
http
.
get
<
Step
[]
>
(
this
.
config
.
getServerUrl
()
+
"/Steps/ByProject/
?projectId=
"
+
projectId
);
}
// this method responsible for change the step weight of a step
...
...
src/app/shared/sharedLayout/header/header.component.html
View file @
20bbe93f
...
...
@@ -19,7 +19,7 @@
<ul
class=
"dropdown-menu dropdown-menu-end dropdown-menu-arrow profile"
>
<li
class=
"dropdown-header"
>
<h6>
{{fullName}}
</h6>
<span>
موظف
</span>
<span>
{{email}}
</span>
</li>
<li>
<hr
class=
"dropdown-divider"
>
...
...
@@ -28,7 +28,7 @@
<li>
<a
class=
"dropdown-item d-flex align-items-center"
[
routerLink
]="['/
employees
/
profile
']"
>
<i
class=
"fe fe-user"
></i>
<span>
My Profile
</span>
<span>
ملفي الشخصي
</span>
</a>
</li>
<li>
...
...
@@ -38,7 +38,7 @@
<li>
<button
class=
"dropdown-item d-flex align-items-center"
(
click
)="
logout
()"
>
<i
class=
"fe fe-log-out"
></i>
<span>
Sign Out
</span>
<span>
تسجيل الخروج
</span>
</button>
</li>
...
...
src/app/shared/sharedLayout/header/header.component.ts
View file @
20bbe93f
...
...
@@ -17,7 +17,7 @@ export class HeaderComponent implements OnInit {
@
Input
()
isToggled
:
Boolean
;
fullName
:
string
email
:
string
constructor
(
private
router
:
Router
,
private
userService
:
UserService
,
...
...
@@ -26,7 +26,7 @@ export class HeaderComponent implements OnInit {
)
{
}
ngOnInit
():
void
{
this
.
email
=
this
.
userService
.
getCurrentUser
().
email
this
.
fullName
=
this
.
userService
.
getUserFirstName
()
+
" "
+
this
.
userService
.
getUserLastName
();
}
...
...
src/app/shared/sharedLayout/sidebar/sidebar.component.html
View file @
20bbe93f
...
...
@@ -3,7 +3,7 @@
<ul
class=
"sidebar-nav"
id=
"sidebar-nav"
>
<li
class=
"nav-item"
>
<a
class=
"nav-link
"
href=
"index.html
"
>
<a
class=
"nav-link
"
[
routerLink
]="['/']
"
>
<i
class=
"fe fe-grid"
></i>
<span>
الصفحة الرئيسية
</span>
</a>
...
...
@@ -83,21 +83,26 @@
</li>
<li
class=
"nav-item"
>
<a
class=
"nav-link collapsed"
href=
"forms-editors.html"
>
<i
class=
"bi bi-circle"
></i><span>
إلغاء مشروع
</span>
<i
class=
"bi bi-circle"
></i><span>
المشاريع التي أديرها
</span>
</a>
</li>
<li
class=
"nav-item"
>
<a
class=
"nav-link collapsed"
href=
"forms-validation.html"
>
<i
class=
"bi bi-circle"
></i><span>
إضافة بيانات المشروع
</span>
<a
class=
"nav-link collapsed"
>
<i
class=
"bi bi-circle"
></i><span>
المشاريع التي أرأسها
</span>
</a>
</li>
<li
class=
"nav-heading"
>
العمل
</li>
<li
[
routerLink
]="['/
employees
/
participates
',
id
]"
class=
"nav-item"
>
<a
class=
"nav-link collapsed"
>
<i
class=
"bi bi-layout-text-window-reverse"
></i><span>
استعراض مساهماتي
</span><i
class=
"bi bi-chevron-down ms-auto"
></i>
</a>
<li
[
routerLink
]="['/
employees
/
participates
',
id
]"
class=
"nav-item"
>
<a
class=
"nav-link collapsed"
>
<i
class=
"bi bi-layout-text-window-reverse"
></i><span>
استعراض مساهماتي
</span><i
class=
"bi bi-chevron-down ms-auto"
></i>
</a>
</li>
</li>
<li
class=
"nav-item"
>
<a
class=
"nav-link collapsed"
[
routerLink
]="['/
employees
/
profile
']"
>
<i
class=
"bi bi-layout-text-window-reverse"
></i><span>
ملفي الشخصي
</span><i
class=
"bi bi-chevron-down ms-auto"
></i>
...
...
src/assets/images/home/features-1.png
0 → 100644
View file @
20bbe93f
30.8 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment