Compare commits
No commits in common. 'monthly-attendance' and 'master' have entirely different histories.
monthly-at
...
master
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 175 KiB |
|
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 210 KiB |
@ -1,113 +0,0 @@
|
|||||||
<ion-header>
|
|
||||||
<ion-toolbar class="header-toolbar">
|
|
||||||
<ion-buttons slot="start">
|
|
||||||
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
|
|
||||||
</ion-buttons>
|
|
||||||
<ion-title color="light">{{ts.trPK('attendance','attendance')}}</ion-title>
|
|
||||||
</ion-toolbar>
|
|
||||||
</ion-header>
|
|
||||||
|
|
||||||
|
|
||||||
<ion-content class="colorBG">
|
|
||||||
<div class="header-div">
|
|
||||||
<div class="header-div">
|
|
||||||
<p style="position: absolute; left: 40%; bottom: 65%;">{{currentMonth}}</p>
|
|
||||||
<ion-slides>
|
|
||||||
<ion-slide>
|
|
||||||
<ion-grid class="headerGrid">
|
|
||||||
<div style="color: black;">
|
|
||||||
<!-- <ngx-gauge
|
|
||||||
[type]="gaugeType"
|
|
||||||
[value]="gaugeValue"
|
|
||||||
[label]="gaugeLabel">
|
|
||||||
</ngx-gauge> -->
|
|
||||||
<div class="result-graph">
|
|
||||||
|
|
||||||
<div class="request-heading">
|
|
||||||
|
|
||||||
<span>Open Request Analysis</span>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="result-text-container">
|
|
||||||
|
|
||||||
<h2>287</h2>
|
|
||||||
|
|
||||||
<span>TOTAL <br> OPEN REQUEST</span>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p-chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div style="position: relative;
|
|
||||||
left: 79%;
|
|
||||||
bottom: 35px;
|
|
||||||
color: black;
|
|
||||||
background-color: #22c6b3;
|
|
||||||
width: 20%; height: 6px;">
|
|
||||||
</div>
|
|
||||||
<div style="position: relative;
|
|
||||||
left: 79%;
|
|
||||||
bottom: 20px;
|
|
||||||
color: black;
|
|
||||||
background-color: #094875;
|
|
||||||
width: 20%; height: 6px;">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</ion-grid>
|
|
||||||
|
|
||||||
</ion-slide>
|
|
||||||
</ion-slides>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style="margin-top: 45%;">
|
|
||||||
<ion-grid>
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<ion-grid class="labelGrid">
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<label style="font-size: 13px;">SCHEDULE</label>
|
|
||||||
|
|
||||||
</ion-col>
|
|
||||||
<ion-col>
|
|
||||||
<h2 style="margin-left: 45%; font-size: 25px;">23</h2>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</ion-grid>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col>
|
|
||||||
<ion-grid class="labelGrid">
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<label style="font-size: 12px;">OFF DAYS</label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col>
|
|
||||||
<h2 style="margin-left: 45%; font-size: 25px;">08</h2>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</ion-grid>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col>
|
|
||||||
<ion-grid class="labelGrid">
|
|
||||||
<label style="font-size: 13px;">NON ANALYZED</label>
|
|
||||||
<h2 style="margin-left: 45%; font-size: 25px;">01</h2>
|
|
||||||
</ion-grid>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col>
|
|
||||||
<ion-grid class="labelGrid">
|
|
||||||
<label style="font-size: 13px;">SHORTAGE HOURS</label>
|
|
||||||
<h2 style="margin-left: 45%; font-size: 25px;">03</h2>
|
|
||||||
</ion-grid>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</ion-grid>
|
|
||||||
</div>
|
|
||||||
<div >
|
|
||||||
<ion-grid class="bodyGrid">
|
|
||||||
<app-circle-calendar></app-circle-calendar>
|
|
||||||
</ion-grid>
|
|
||||||
</div>
|
|
||||||
</ion-content>
|
|
||||||
@ -1,242 +0,0 @@
|
|||||||
.colorBG {
|
|
||||||
--background: #f0efef;
|
|
||||||
}
|
|
||||||
.header-div {
|
|
||||||
background: #22c6b3;
|
|
||||||
color: var(--light);
|
|
||||||
text-transform: capitalize;
|
|
||||||
display: block;
|
|
||||||
position: relative;
|
|
||||||
height: 210px;
|
|
||||||
margin-bottom: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.chart-modal .modal-Wrapper {
|
|
||||||
--background: rgb(116, 108, 108) !important;
|
|
||||||
--border-color:white!important ;
|
|
||||||
width: 85%!important ;
|
|
||||||
height: 40px !important ;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar{
|
|
||||||
font-size: 10px !important;
|
|
||||||
--background: #22C6B3 !important;
|
|
||||||
color: aliceblue !important;
|
|
||||||
// margin-top: 10px !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu{
|
|
||||||
// margin-left:330px !important;
|
|
||||||
margin-top: 0px !important;
|
|
||||||
font-size: 35px !important;
|
|
||||||
background: #22C6B3;
|
|
||||||
color: aliceblue;
|
|
||||||
margin-left: 0px !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.person{
|
|
||||||
|
|
||||||
margin-left:100px !important;
|
|
||||||
margin-top: 0px !important;
|
|
||||||
font-size: 23px !important;
|
|
||||||
background: #22C6B3 !important;
|
|
||||||
color: aliceblue !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.grid{
|
|
||||||
margin-bottom: 550px !important;
|
|
||||||
margin-top: 20px !important;
|
|
||||||
margin-left: 15px !important;
|
|
||||||
margin-right: 15px !important;
|
|
||||||
background-color:white !important;
|
|
||||||
border-radius: 20px !important;
|
|
||||||
height: 250px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerGrid{
|
|
||||||
margin-bottom: 550px !important;
|
|
||||||
margin-top: 80px !important;
|
|
||||||
margin-left: 15px !important;
|
|
||||||
margin-right: 15px !important;
|
|
||||||
background-color:white !important;
|
|
||||||
border-radius: 20px !important;
|
|
||||||
height: 250px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bodyGrid{
|
|
||||||
margin-bottom: 550px !important;
|
|
||||||
margin-top: 20px !important;
|
|
||||||
margin-left: 15px !important;
|
|
||||||
margin-right: 15px !important;
|
|
||||||
background-color:white !important;
|
|
||||||
border-radius: 20px !important;
|
|
||||||
height: 270px !important;
|
|
||||||
}
|
|
||||||
.labelGrid{
|
|
||||||
margin-top: -30px !important;
|
|
||||||
background-color:white !important;
|
|
||||||
border-radius: 20px !important;
|
|
||||||
height: 100px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ionSliders{
|
|
||||||
margin: 0px !important;
|
|
||||||
padding: 0px !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.ionSlide{
|
|
||||||
margin-top: 5px !important;
|
|
||||||
margin-left: 190px !important;
|
|
||||||
color: black !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
.dateLable{
|
|
||||||
|
|
||||||
margin-left: 90px !important;
|
|
||||||
color: black !important;
|
|
||||||
font-size: small !important;
|
|
||||||
margin-top: 15px !important;
|
|
||||||
}
|
|
||||||
// h1{
|
|
||||||
// font-size: 15px !important;
|
|
||||||
// text-align: center !important;
|
|
||||||
// }
|
|
||||||
.arrowDropright{
|
|
||||||
margin-left:100px !important;
|
|
||||||
font-size: 20px !important;
|
|
||||||
color: rgb(168, 165, 165) !important;
|
|
||||||
margin-top: 15px !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
.arrowDropleft{
|
|
||||||
font-size: 20px !important;
|
|
||||||
margin-left: 10px !important;
|
|
||||||
margin-top: 15px !important;
|
|
||||||
color: rgb(116, 108, 108) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ionLable{
|
|
||||||
font-size: 10px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.number{
|
|
||||||
|
|
||||||
font-size: 18px !important;
|
|
||||||
font-weight: bolder !important;
|
|
||||||
color: black !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-div{
|
|
||||||
background:var(--primary);
|
|
||||||
background: -moz-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
|
||||||
background: -webkit-linear-gradient(45deg, (--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
|
||||||
background: #22C6B3;
|
|
||||||
// background: linear-gradient(90deg, #85C48D 0%, #85C48D 13%, #2BB5C6 98%, #2BB5C6 100%);
|
|
||||||
color:var(--light);
|
|
||||||
text-transform: capitalize;
|
|
||||||
|
|
||||||
display: block;
|
|
||||||
position: relative;
|
|
||||||
height: 210px;
|
|
||||||
margin-bottom:60px;
|
|
||||||
// border-radius: 0px 0px 70px 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.request-heading {
|
|
||||||
|
|
||||||
span {
|
|
||||||
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
display: block;
|
|
||||||
|
|
||||||
padding-top: 8px;
|
|
||||||
|
|
||||||
font-family: workSans-Regular;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.result-graph {
|
|
||||||
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
background: white;
|
|
||||||
|
|
||||||
margin-right: 20px;
|
|
||||||
|
|
||||||
margin-left: 20px;
|
|
||||||
|
|
||||||
margin-top: 20px;
|
|
||||||
|
|
||||||
padding-bottom: 20px;
|
|
||||||
|
|
||||||
border-radius: 20px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.result-text-container {
|
|
||||||
|
|
||||||
padding: 0;
|
|
||||||
|
|
||||||
margin: 0;
|
|
||||||
|
|
||||||
position: absolute;
|
|
||||||
|
|
||||||
left: 50%;
|
|
||||||
|
|
||||||
top: 50%;
|
|
||||||
|
|
||||||
display: block;
|
|
||||||
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
|
|
||||||
font-size: 38px;
|
|
||||||
|
|
||||||
font-family: WorkSans-Bold;
|
|
||||||
|
|
||||||
margin: 0 auto;
|
|
||||||
|
|
||||||
line-height: 36px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
|
|
||||||
width: 125px;
|
|
||||||
|
|
||||||
display: block;
|
|
||||||
|
|
||||||
margin: 0 auto;
|
|
||||||
|
|
||||||
font-size: 12px;
|
|
||||||
|
|
||||||
font-family: workSans-Regular;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { MonthlyAttendanceComponent } from './monthly-attendance.component';
|
|
||||||
|
|
||||||
describe('MonthlyAttendanceComponent', () => {
|
|
||||||
let component: MonthlyAttendanceComponent;
|
|
||||||
let fixture: ComponentFixture<MonthlyAttendanceComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ MonthlyAttendanceComponent ],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(MonthlyAttendanceComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,101 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
import { CommonService } from '../../hmg-common/services/common/common.service';
|
|
||||||
import { TranslatorService } from '../../hmg-common/services/translator/translator.service';
|
|
||||||
import { SharedDataService } from '../../hmg-common/services/shared-data-service/shared-data.service';
|
|
||||||
import { GetSubordinatesAttdStatusRequest } from 'src/app/hmg-common/services/dashbored/models/GetSubordinatesAttdStatusRequest';
|
|
||||||
import { DashboredService } from 'src/app/hmg-common/services/dashbored/dashbored.service';
|
|
||||||
import { GetSubordinatesAttdStatusResponse } from 'src/app/hmg-common/services/dashbored/models/GetSubordinatesAttdStatusResponse';
|
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-monthly-attendance',
|
|
||||||
templateUrl: './monthly-attendance.component.html',
|
|
||||||
styleUrls: ['./monthly-attendance.component.scss'],
|
|
||||||
})
|
|
||||||
export class MonthlyAttendanceComponent implements OnInit {
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
private cs: CommonService,
|
|
||||||
public ts: TranslatorService,
|
|
||||||
public sharedData: SharedDataService,
|
|
||||||
public DS: DashboredService) { }
|
|
||||||
gaugeType = 'full';
|
|
||||||
gaugeValue = 28.3;
|
|
||||||
gaugeLabel = 'Days';
|
|
||||||
// gaugeAppendText = "km/hr";
|
|
||||||
|
|
||||||
|
|
||||||
currentMonth: any;
|
|
||||||
todayYear: any;
|
|
||||||
todayMonth: any;
|
|
||||||
public options = {
|
|
||||||
|
|
||||||
cutoutPercentage: 80,
|
|
||||||
|
|
||||||
tooltips: { enabled: false },
|
|
||||||
|
|
||||||
legend: { display: false }
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public data = {
|
|
||||||
|
|
||||||
datasets: [
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
data: [120, 50],
|
|
||||||
|
|
||||||
backgroundColor: [
|
|
||||||
|
|
||||||
'#22c6b3',
|
|
||||||
|
|
||||||
'#094875',
|
|
||||||
],
|
|
||||||
|
|
||||||
borderWidth: 2
|
|
||||||
|
|
||||||
}]
|
|
||||||
|
|
||||||
};
|
|
||||||
ngOnInit() { }
|
|
||||||
|
|
||||||
ionViewWillEnter() {
|
|
||||||
this.currentMonth = this.sharedData.getSharedData("currentMonth");
|
|
||||||
console.log(this.currentMonth);
|
|
||||||
let day = this.currentMonth.split(" ");
|
|
||||||
this.todayMonth =day[0];
|
|
||||||
this.todayYear = day[1];
|
|
||||||
this.todayYear = parseInt(this.todayYear);
|
|
||||||
console.log("MONTH: " +this.todayMonth);
|
|
||||||
console.log("YEAR: " +this.todayYear);
|
|
||||||
this.getSubordinatesAttStatus()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
getSubordinatesAttStatus() {
|
|
||||||
let request: GetSubordinatesAttdStatusRequest = new GetSubordinatesAttdStatusRequest();
|
|
||||||
// request.P_SCHEDULE_DATE_FROM = "/Date(1578603600000+0300)/"; //test
|
|
||||||
// request.P_SCHEDULE_DATE_TO = "/Date(1576011600000+0300)/";//test
|
|
||||||
console.log(this.currentMonth);
|
|
||||||
request.SearchMonth = this.todayMonth;
|
|
||||||
request.SearchYear = 2019//this.todayYear;
|
|
||||||
|
|
||||||
this.DS.getSubordinatesAttStatus(request, () => { console.log("Error "); }).subscribe((result: GetSubordinatesAttdStatusResponse) => {
|
|
||||||
if (this.cs.validResponse(result)) {
|
|
||||||
console.log("response");
|
|
||||||
console.log(result);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
x(){
|
|
||||||
console.log("ENAD CHANge")
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
.login-input {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
.item-input{
|
|
||||||
--min-height: 1.0cm !important;
|
|
||||||
--border-radius: 12px;
|
|
||||||
--ion-color-base: white !important;
|
|
||||||
// --background: color: var(--darkgray) !important;
|
|
||||||
// background: #7f8c8d !important;
|
|
||||||
border-radius: 33px;
|
|
||||||
--border: solid #9999992b !important;
|
|
||||||
border: solid #9999992b !important;
|
|
||||||
margin-bottom :12px;
|
|
||||||
margin-left: 12px;
|
|
||||||
margin-right: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-login{
|
|
||||||
|
|
||||||
--background: var(--newgreen) !important;
|
|
||||||
background: var(--newgreen) !important;
|
|
||||||
white-space: normal;
|
|
||||||
color: var(--light);
|
|
||||||
text-transform: capitalize;
|
|
||||||
min-height: 1.0cm;
|
|
||||||
--border-radius: 33px !important;
|
|
||||||
border-radius: 33px !important;
|
|
||||||
--min-height: 1.6cm !important;
|
|
||||||
width: 315px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
.content-class {
|
|
||||||
height: 25vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rowOutside{
|
|
||||||
// margin-top: -37px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
<p>
|
|
||||||
welcome works!
|
|
||||||
</p>
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { WelcomeComponent } from './welcome.component';
|
|
||||||
|
|
||||||
describe('WelcomeComponent', () => {
|
|
||||||
let component: WelcomeComponent;
|
|
||||||
let fixture: ComponentFixture<WelcomeComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ WelcomeComponent ],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(WelcomeComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-welcome',
|
|
||||||
templateUrl: './welcome.component.html',
|
|
||||||
styleUrls: ['./welcome.component.scss'],
|
|
||||||
})
|
|
||||||
export class WelcomeComponent implements OnInit {
|
|
||||||
|
|
||||||
constructor() { }
|
|
||||||
|
|
||||||
ngOnInit() {}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
export class AttendanceTrackingList{
|
|
||||||
public SCHEDULED_HOURS :string;
|
|
||||||
public SPENT_HOURS : string;
|
|
||||||
public REMAINING_HOURS : string;
|
|
||||||
public RETURN_STATUS : string;
|
|
||||||
public RETURN_MSG : string;
|
|
||||||
}
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
export class OpenMissingSwipesList{
|
|
||||||
public OPEN_MISSING_SWIPES :number;
|
|
||||||
public RETURN_STATUS : string;
|
|
||||||
public RETURN_MSG : string;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
export class OrganizationsSalariesList{
|
|
||||||
public ORGANIZATION_NAME :string;
|
|
||||||
public ORGANIZATIONS_SALARIES : number;
|
|
||||||
}
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
|
|
||||||
export class PerformanceAppraisalList{
|
|
||||||
public APPRAISAL_SCORE :string;
|
|
||||||
public APPRAISAL_YEAR : number;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
import { Response } from "src/app/hmg-common/services/models/response";
|
|
||||||
import { AttendanceTrackingList } from './AttensanceTrackingList';
|
|
||||||
|
|
||||||
export class AttendanceTrackingResponse extends Response{
|
|
||||||
public GetGetAttendanceTrackingList : AttendanceTrackingList[];
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
import { TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { DashboredService } from './dashbored.service';
|
|
||||||
|
|
||||||
describe('DashboredService', () => {
|
|
||||||
beforeEach(() => TestBed.configureTestingModule({}));
|
|
||||||
|
|
||||||
it('should be created', () => {
|
|
||||||
const service: DashboredService = TestBed.get(DashboredService);
|
|
||||||
expect(service).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,99 +0,0 @@
|
|||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { AuthenticationService } from "src/app/hmg-common/services/authentication/authentication.service";
|
|
||||||
import { ConnectorService } from "src/app/hmg-common/services/connector/connector.service";
|
|
||||||
import { Observable } from 'rxjs';
|
|
||||||
import { Request } from "src/app/hmg-common/services/models/request";
|
|
||||||
import { OrganizationSalariesResponse } from './organization-salaries.response';
|
|
||||||
import { OpenMissingSwipesResponse } from './open-missing-swipes.response';
|
|
||||||
import { PerformanceAppraisalResponse } from './performance-appraisal.response';
|
|
||||||
import {AttendanceTrackingResponse} from './attendance-tracking.response'
|
|
||||||
|
|
||||||
import {OpenPeriodDatesResponse} from '../../services/dashbored/models/openPeriodDatesResponse'
|
|
||||||
import {GetSubordinatesLeavesRequest} from './models/GetSubordinatesLeavesRequest';
|
|
||||||
import {GetSubordinatesLeavesResponse} from './models/GetSubordinatesLeavesResponse';
|
|
||||||
import {GetSubordinatesAttdStatusRequest} from './models/GetSubordinatesAttdStatusRequest';
|
|
||||||
import {GetSubordinatesAttdStatusResponse} from './models/GetSubordinatesAttdStatusResponse';
|
|
||||||
import {GetOpenNotificationsResponse} from './models/GetOpenNotificationsResponse'
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root'
|
|
||||||
})
|
|
||||||
export class DashboredService {
|
|
||||||
public static organizationSalariesUrl="Services/ERP.svc/REST/GET_ORGANIZATIONS_SALARIES"
|
|
||||||
public static openmissingswipesUrl="Services/ERP.svc/REST/GET_OPEN_MISSING_SWIPES"
|
|
||||||
public static performanceappraisalUrl="Services/ERP.svc/REST/GET_Performance_Appraisal"
|
|
||||||
public static attendancetrackingUrl="Services/ERP.svc/REST/GET_Attendance_Tracking"
|
|
||||||
|
|
||||||
public static getOpenPeriodDates = 'Services/ERP.svc/REST/GET_OPEN_PERIOD_DATES';
|
|
||||||
public static getOpenNotifications = 'Services/ERP.svc/REST/GET_OPEN_NOTIFICATIONS';
|
|
||||||
public static getSubordinatesLeaves = 'Services/ERP.svc/REST/GET_SUBORDINATES_LEAVES';
|
|
||||||
public static getSubordinatesAttStatus = 'Services/ERP.svc/REST/GET_SUBORDINATES_ATTD_STATUS';
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
public con: ConnectorService,
|
|
||||||
public authService: AuthenticationService,
|
|
||||||
) { }
|
|
||||||
|
|
||||||
public getOrganizationSalaries(onError ?:any ,oerrorLable ?:any):Observable<OrganizationSalariesResponse>{
|
|
||||||
const request = new Request();
|
|
||||||
this.authService.authenticateRequest(request);
|
|
||||||
return this.con.post(
|
|
||||||
DashboredService.organizationSalariesUrl,
|
|
||||||
request,
|
|
||||||
onError,
|
|
||||||
oerrorLable
|
|
||||||
);}
|
|
||||||
|
|
||||||
public getOpenMissingSwipes(onError ?:any ,oerrorLable ?:any):Observable<OpenMissingSwipesResponse>{
|
|
||||||
const request = new Request();
|
|
||||||
this.authService.authenticateRequest(request);
|
|
||||||
return this.con.post(
|
|
||||||
DashboredService.openmissingswipesUrl,
|
|
||||||
request,
|
|
||||||
onError,
|
|
||||||
oerrorLable
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public getPerformanceAppraisal(onError ?:any ,oerrorLable ?:any):Observable<PerformanceAppraisalResponse>{
|
|
||||||
const request = new Request();
|
|
||||||
this.authService.authenticateRequest(request);
|
|
||||||
return this.con.post(
|
|
||||||
DashboredService.performanceappraisalUrl,
|
|
||||||
request,
|
|
||||||
onError,
|
|
||||||
oerrorLable
|
|
||||||
);
|
|
||||||
}
|
|
||||||
public getAttendanceTracking(onError ?:any ,oerrorLable ?:any):Observable<AttendanceTrackingResponse>{
|
|
||||||
const request = new Request();
|
|
||||||
this.authService.authenticateRequest(request);
|
|
||||||
return this.con.post(
|
|
||||||
DashboredService.attendancetrackingUrl,
|
|
||||||
request,
|
|
||||||
onError,
|
|
||||||
oerrorLable
|
|
||||||
);
|
|
||||||
}
|
|
||||||
public getOpenPeriodDates( onError?: any, errorLabel?: string): Observable<OpenPeriodDatesResponse> {
|
|
||||||
const request = new Request();
|
|
||||||
this.authService.authenticateRequest(request);
|
|
||||||
return this.con.post(DashboredService.getOpenPeriodDates, request, onError, errorLabel);
|
|
||||||
}
|
|
||||||
public getOpenNotifications( onError?: any, errorLabel?: string): Observable<GetOpenNotificationsResponse> {
|
|
||||||
const request = new Request();
|
|
||||||
this.authService.authenticateRequest(request);
|
|
||||||
return this.con.post(DashboredService.getOpenNotifications, request, onError, errorLabel);
|
|
||||||
}
|
|
||||||
public getSubordinatesLeaves( req:GetSubordinatesLeavesRequest,onError?: any, errorLabel?: string): Observable<GetSubordinatesLeavesResponse> {
|
|
||||||
this.authService.authenticateRequest(req);
|
|
||||||
return this.con.post(DashboredService.getSubordinatesLeaves, req, onError, errorLabel);
|
|
||||||
}
|
|
||||||
public getSubordinatesAttStatus( req:GetSubordinatesAttdStatusRequest, onError?: any, errorLabel?: string): Observable<GetSubordinatesAttdStatusResponse> {
|
|
||||||
this.authService.authenticateRequest(req);
|
|
||||||
return this.con.post(DashboredService.getSubordinatesAttStatus, req, onError, errorLabel);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
export class GetOpenNotificationsList
|
|
||||||
|
|
||||||
{
|
|
||||||
public ITEM_TYPE: number;
|
|
||||||
|
|
||||||
public ITEM_TYPE_DISPLAY_NAME:number;
|
|
||||||
|
|
||||||
public OPEN_NTF_NUMBER:number;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
import { GetOpenNotificationsList } from './GetOpenNotificationsList';
|
|
||||||
import { Response } from '../../../services/models/response'
|
|
||||||
|
|
||||||
|
|
||||||
export class GetOpenNotificationsResponse extends Response {
|
|
||||||
public GetOpenNotificationsList: GetOpenNotificationsList [];
|
|
||||||
}
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
export class GetSubordinatesAttdStatusList
|
|
||||||
|
|
||||||
{
|
|
||||||
public NUMBER_OF_EMPLOYEES: number;
|
|
||||||
|
|
||||||
public LATE_IN:number;
|
|
||||||
|
|
||||||
public EARLY_OUT:number;
|
|
||||||
|
|
||||||
public ON_TIME:number;
|
|
||||||
|
|
||||||
public ABSENCE:number;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
import { Request } from '../../../services/models/request'
|
|
||||||
|
|
||||||
export class GetSubordinatesAttdStatusRequest extends Request{
|
|
||||||
//public static SHARED_DATA = '';
|
|
||||||
public P_SCHEDULE_DATE_FROM: any;
|
|
||||||
public P_SCHEDULE_DATE_TO: any;
|
|
||||||
public SearchMonth: string;
|
|
||||||
public SearchYear: number;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
import { GetSubordinatesAttdStatusList } from './GetSubordinatesAttdStatusList';
|
|
||||||
import { Response } from '../../../services/models/response'
|
|
||||||
|
|
||||||
|
|
||||||
export class GetSubordinatesAttdStatusResponse extends Response {
|
|
||||||
public GetSubordinatesAttdStatusList: GetSubordinatesAttdStatusList [];
|
|
||||||
}
|
|
||||||
@ -1,35 +0,0 @@
|
|||||||
export class GetSubordinatesLeavesList
|
|
||||||
|
|
||||||
{
|
|
||||||
public LVL: number;
|
|
||||||
|
|
||||||
public EMPLOYEE_NUMBER:String;
|
|
||||||
|
|
||||||
public EMPLOYEE_NAME:String;
|
|
||||||
|
|
||||||
public ORGANIZATION_ID:number;
|
|
||||||
|
|
||||||
public ORGANIZATION_NAME:String
|
|
||||||
|
|
||||||
public SUPERVISOR_NUMBER:String;
|
|
||||||
|
|
||||||
public SUPERVISOR_NAME:String;
|
|
||||||
|
|
||||||
public SUPERVISOR_ORGANIZATION_ID:number;
|
|
||||||
|
|
||||||
public SUPERVISOR_ORGANIZATION_NAME:String;
|
|
||||||
|
|
||||||
public EVENT_DATE:any;//DATE;
|
|
||||||
|
|
||||||
public LEAVE_TYPE:String;
|
|
||||||
|
|
||||||
public DATE_START:any;//DATE;
|
|
||||||
|
|
||||||
public DATE_END:any;//DATE;
|
|
||||||
|
|
||||||
public ABSENCE_ATTENDANCE_TYPE_NAME:String;
|
|
||||||
|
|
||||||
public CALENDAR_ENTRY_DESC:String;
|
|
||||||
|
|
||||||
public STATUS:String;
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
import { Request } from '../../../services/models/request'
|
|
||||||
|
|
||||||
export class GetSubordinatesLeavesRequest extends Request{
|
|
||||||
//public static SHARED_DATA = '';
|
|
||||||
public P_DATE_FROM :any;
|
|
||||||
public P_DATE_TO :any;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
import { GetSubordinatesLeavesList } from './GetSubordinatesLeavesList';
|
|
||||||
import { Response } from '../../../services/models/response'
|
|
||||||
|
|
||||||
|
|
||||||
export class GetSubordinatesLeavesResponse extends Response {
|
|
||||||
public GetSubordinatesLeavesList: GetSubordinatesLeavesList [];
|
|
||||||
}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
export class OpenPeriodDatesList {
|
|
||||||
public P_CLOSING_PERIOD_DATE: any;
|
|
||||||
public P_PERIOD_END_DATE: any;
|
|
||||||
public P_PERIOD_START_DATE: any;
|
|
||||||
public P_RETURN_MSG: string;
|
|
||||||
public P_RETURN_STATUS: string;
|
|
||||||
}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
import { OpenPeriodDatesList } from './openPeriodDatesList';
|
|
||||||
import { Response } from '../../../services/models/response'
|
|
||||||
|
|
||||||
|
|
||||||
export class OpenPeriodDatesResponse extends Response {
|
|
||||||
public openPeriodDatesList: OpenPeriodDatesList [];
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
import { Response } from "src/app/hmg-common/services/models/response";
|
|
||||||
import { OpenMissingSwipesList } from './OpenMissingSwipesList';
|
|
||||||
|
|
||||||
export class OpenMissingSwipesResponse extends Response{
|
|
||||||
public GetGetOpenMissingSwipesList : OpenMissingSwipesList[];
|
|
||||||
}
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
import { Response } from "src/app/hmg-common/services/models/response";
|
|
||||||
import { OrganizationsSalariesList } from './OrganizationsSalariesList';
|
|
||||||
|
|
||||||
export class OrganizationSalariesResponse extends Response{
|
|
||||||
public GetGetOrganizationsSalariesList : OrganizationsSalariesList[];
|
|
||||||
}
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
import { Response } from "src/app/hmg-common/services/models/response";
|
|
||||||
import { PerformanceAppraisalList } from './PerformanceAppraisalList';
|
|
||||||
|
|
||||||
export class PerformanceAppraisalResponse extends Response{
|
|
||||||
public GetGetPerformanceAppraisalList :PerformanceAppraisalList[];
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
|
|
||||||
<calendar #slider [dateFormatter]="calendar.dateFormatter" [lockSwipeToPrev]="lockSwipeToPrev"
|
|
||||||
[monthviewEventDetailTemplate]="template" [eventSource]="eventsdata" [calendarMode]="calendar.mode"
|
|
||||||
[currentDate]="currentAvailableAppoDate"
|
|
||||||
(onCurrentDateChanged)="onCurrentDateChanged($event)">
|
|
||||||
</calendar>
|
|
||||||
|
|
||||||
|
|
||||||
<ng-template #template let-showEventDetail="showEventDetail" let-selectedDate="selectedDate" let-noEventsLabel="noEventsLabel">
|
|
||||||
|
|
||||||
</ng-template>
|
|
||||||
|
|
||||||
@ -1,124 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// .modalCss .modal-Wrapper {
|
|
||||||
// width: 600px;
|
|
||||||
// height: 300px;
|
|
||||||
// }
|
|
||||||
|
|
||||||
.chart-modal .modal-Wrapper {
|
|
||||||
--background: rgb(116, 108, 108) !important;
|
|
||||||
--border-color:white!important ;
|
|
||||||
width: 85%!important ;
|
|
||||||
height: 40px !important ;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar{
|
|
||||||
font-size: 10px !important;
|
|
||||||
--background: #22C6B3 !important;
|
|
||||||
color: aliceblue !important;
|
|
||||||
// margin-top: 10px !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu{
|
|
||||||
// margin-left:330px !important;
|
|
||||||
margin-top: 0px !important;
|
|
||||||
font-size: 35px !important;
|
|
||||||
background: #22C6B3;
|
|
||||||
color: aliceblue;
|
|
||||||
margin-left: 0px !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.person{
|
|
||||||
|
|
||||||
margin-left:100px !important;
|
|
||||||
margin-top: 0px !important;
|
|
||||||
font-size: 23px !important;
|
|
||||||
background: #22C6B3 !important;
|
|
||||||
color: aliceblue !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.grid{
|
|
||||||
margin-bottom: 550px !important;
|
|
||||||
margin-top: 20px !important;
|
|
||||||
margin-left: 15px !important;
|
|
||||||
margin-right: 15px !important;
|
|
||||||
background-color:white !important;
|
|
||||||
border-radius: 20px !important;
|
|
||||||
height: 250px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ionSliders{
|
|
||||||
margin: 0px !important;
|
|
||||||
padding: 0px !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.ionSlide{
|
|
||||||
margin-top: 5px !important;
|
|
||||||
margin-left: 190px !important;
|
|
||||||
color: black !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
.dateLable{
|
|
||||||
|
|
||||||
margin-left: 90px !important;
|
|
||||||
color: black !important;
|
|
||||||
font-size: small !important;
|
|
||||||
margin-top: 15px !important;
|
|
||||||
}
|
|
||||||
// h1{
|
|
||||||
// font-size: 15px !important;
|
|
||||||
// text-align: center !important;
|
|
||||||
// }
|
|
||||||
.arrowDropright{
|
|
||||||
margin-left:100px !important;
|
|
||||||
font-size: 20px !important;
|
|
||||||
color: rgb(168, 165, 165) !important;
|
|
||||||
margin-top: 15px !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
.arrowDropleft{
|
|
||||||
font-size: 20px !important;
|
|
||||||
margin-left: 10px !important;
|
|
||||||
margin-top: 15px !important;
|
|
||||||
color: rgb(116, 108, 108) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ionLable{
|
|
||||||
font-size: 10px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.number{
|
|
||||||
|
|
||||||
font-size: 18px !important;
|
|
||||||
font-weight: bolder !important;
|
|
||||||
color: black !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-div{
|
|
||||||
background:var(--primary);
|
|
||||||
background: -moz-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
|
||||||
background: -webkit-linear-gradient(45deg, (--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
|
||||||
background: #22C6B3;
|
|
||||||
// background: linear-gradient(90deg, #85C48D 0%, #85C48D 13%, #2BB5C6 98%, #2BB5C6 100%);
|
|
||||||
color:var(--light);
|
|
||||||
text-transform: capitalize;
|
|
||||||
|
|
||||||
display: block;
|
|
||||||
position: relative;
|
|
||||||
height: 210px;
|
|
||||||
margin-bottom:60px;
|
|
||||||
// border-radius: 0px 0px 70px 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.advanced-search-modal {
|
|
||||||
--height: 12cm !important;
|
|
||||||
--width: 80% !important;
|
|
||||||
--border-radius: 0.4cm;
|
|
||||||
}
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { CircleCalendarComponent } from './circle-calendar.component';
|
|
||||||
|
|
||||||
describe('CircleCalendarComponent', () => {
|
|
||||||
let component: CircleCalendarComponent;
|
|
||||||
let fixture: ComponentFixture<CircleCalendarComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ CircleCalendarComponent ],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(CircleCalendarComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,208 +0,0 @@
|
|||||||
import { Component, OnInit, Output } from '@angular/core';
|
|
||||||
import { TimeSlot } from './time.slot';
|
|
||||||
import { SharedDataService } from '../../services/shared-data-service/shared-data.service';
|
|
||||||
import { ModalController } from '@ionic/angular';
|
|
||||||
import { DateInfoModalComponent } from './date-info-modal/date-info-modal.component';
|
|
||||||
@Component({
|
|
||||||
selector: 'app-circle-calendar',
|
|
||||||
templateUrl: './circle-calendar.component.html',
|
|
||||||
styleUrls: ['./circle-calendar.component.scss'],
|
|
||||||
})
|
|
||||||
export class CircleCalendarComponent implements OnInit {
|
|
||||||
eventsdata: any = [{
|
|
||||||
startTime:new Date(new Date().getTime() +( 60000*60 * 24)),
|
|
||||||
endTime: new Date(new Date().getTime() +( 60000*60 * 24)),
|
|
||||||
isoTime:"09:00:00",
|
|
||||||
allDay: false
|
|
||||||
}];
|
|
||||||
calendarModes = [
|
|
||||||
{ key: 'month', value: 'Month' },
|
|
||||||
{ key: 'week', value: 'Week' },
|
|
||||||
{ key: 'day', value: 'Day' },
|
|
||||||
];
|
|
||||||
|
|
||||||
public calendar = {
|
|
||||||
mode: this.calendarModes[0].key,
|
|
||||||
currentDate: new Date(),
|
|
||||||
currentAvailableAppoDate: new Date(),
|
|
||||||
dateFormatter: {
|
|
||||||
formatMonthViewDayHeader: (date: Date) => {
|
|
||||||
return this.getHeaderDay(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public currentAvailableAppoDate: any;
|
|
||||||
public eventsInput: any = [];
|
|
||||||
public events: TimeSlot[] = [];
|
|
||||||
public selectedTime: string;
|
|
||||||
public selectedDate: string;
|
|
||||||
public weekDaysEn = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
|
||||||
public weekDaysEnSort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
||||||
public lockSwipeToPrev: any = true;
|
|
||||||
public currentDate: any;
|
|
||||||
public selectedDateObject: any;
|
|
||||||
public currentDateToSwipe: any;
|
|
||||||
public activeMonth: any;
|
|
||||||
isFirst: boolean;
|
|
||||||
constructor(public sharedData: SharedDataService, public mod: ModalController) {}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this.isFirst = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
getHeaderDay(date: any) {
|
|
||||||
return this.weekDaysEnSort[date.getDay()];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
dayClicked(data: any): void {
|
|
||||||
if (data.isPast) {
|
|
||||||
this.eventsInput = [];
|
|
||||||
this.selectedTime = null;
|
|
||||||
} else {
|
|
||||||
// At least one slot
|
|
||||||
if (data.events.length > 0) {
|
|
||||||
this.selectedDate = this.getDateISO(data.selectedTime);
|
|
||||||
//TODO replace later later
|
|
||||||
for (let i = 0; i < data.events.length; i++) {
|
|
||||||
|
|
||||||
}
|
|
||||||
this.presentTimeSlots(data.events, data.selectedTime);
|
|
||||||
this.currentDate = this.getHeaderDate(data.selectedTime);
|
|
||||||
} else {
|
|
||||||
this.eventsInput = [];
|
|
||||||
this.selectedTime = null;
|
|
||||||
}
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async presentTimeSlots(events: TimeSlot[], date: Date) {
|
|
||||||
this.eventsInput = [];
|
|
||||||
let index = 1;
|
|
||||||
for (let event of events) {
|
|
||||||
// event.end = this.cs.getKSATimeZone(event.end);
|
|
||||||
this.eventsInput.push({
|
|
||||||
name: 'radio' + index,
|
|
||||||
type: 'radio',
|
|
||||||
label: event.isoTime.substring(0, event.isoTime.length - 3),
|
|
||||||
value: event,
|
|
||||||
checked: index === 1
|
|
||||||
});
|
|
||||||
if (index == 1) {
|
|
||||||
this.selectedTime = event.isoTime;
|
|
||||||
this.selectedDateObject = new Date(event.end);
|
|
||||||
|
|
||||||
}
|
|
||||||
++index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public getDateISO(date: Date): string {
|
|
||||||
return (
|
|
||||||
date.getFullYear().toString() +
|
|
||||||
"-" +
|
|
||||||
this.trailerZero(date.getMonth() + 1) +
|
|
||||||
"-" +
|
|
||||||
this.trailerZero(date.getDate())
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
onCurrentDateChanged(event) {
|
|
||||||
if(this.isFirst){
|
|
||||||
const today = new Date();
|
|
||||||
this.currentDateToSwipe = event;
|
|
||||||
if (this.calendar.mode === 'month') {
|
|
||||||
if ((event.getFullYear() === today.getFullYear() && event.getMonth() <= today.getMonth())) {
|
|
||||||
this.lockSwipeToPrev = true;
|
|
||||||
} else {
|
|
||||||
this.lockSwipeToPrev = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.activeMonth = this.getHeaderMonth(event);
|
|
||||||
this.currentDate = this.getHeaderDate(event);
|
|
||||||
this.sharedData.setSharedData(this.activeMonth,"currentMonth");
|
|
||||||
this.dateModal(this.currentDate);
|
|
||||||
}else{
|
|
||||||
const today = new Date();
|
|
||||||
this.currentDateToSwipe = event;
|
|
||||||
if (this.calendar.mode === 'month') {
|
|
||||||
if ((event.getFullYear() === today.getFullYear() && event.getMonth() <= today.getMonth())) {
|
|
||||||
this.lockSwipeToPrev = true;
|
|
||||||
} else {
|
|
||||||
this.lockSwipeToPrev = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.activeMonth = this.getHeaderMonth(event);
|
|
||||||
this.currentDate = this.getHeaderDate(event);
|
|
||||||
this.sharedData.setSharedData(this.activeMonth,"currentMonth");
|
|
||||||
this.isFirst = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getHeaderDate(date: any) {
|
|
||||||
|
|
||||||
return this.weekDaysEn[date.getDay()] + ", " + date.getDate() + " " + this.getMonthName(date.getMonth() + 1) + " " + date.getFullYear();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private trailerZero(value: number): string {
|
|
||||||
const str = value.toString();
|
|
||||||
return str.length > 1 ? str : "" + str;
|
|
||||||
}
|
|
||||||
getHeaderMonth(date: any) {
|
|
||||||
|
|
||||||
return this.getMonthName(date.getMonth() + 1) + " " + date.getFullYear();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public getMonthName(value: number): string {
|
|
||||||
switch (value) {
|
|
||||||
case 1:
|
|
||||||
return "January";
|
|
||||||
case 2:
|
|
||||||
return "February";
|
|
||||||
case 3:
|
|
||||||
return "March";
|
|
||||||
case 4:
|
|
||||||
return "April";
|
|
||||||
case 5:
|
|
||||||
return "May";
|
|
||||||
case 6:
|
|
||||||
return "June";
|
|
||||||
case 7:
|
|
||||||
return "July";
|
|
||||||
case 8:
|
|
||||||
return "August";
|
|
||||||
case 9:
|
|
||||||
return "September";
|
|
||||||
case 10:
|
|
||||||
return "October";
|
|
||||||
case 11:
|
|
||||||
return "November";
|
|
||||||
case 12:
|
|
||||||
return "December";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async dateModal(todayDate) {
|
|
||||||
const modal = await this.mod.create({
|
|
||||||
component: DateInfoModalComponent,
|
|
||||||
showBackdrop: true,
|
|
||||||
backdropDismiss: true,
|
|
||||||
componentProps: {
|
|
||||||
TODAYDATE: todayDate
|
|
||||||
}
|
|
||||||
});
|
|
||||||
modal.cssClass = "advanced-search-modal";
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,98 +0,0 @@
|
|||||||
<ion-grid class="headerGrid">
|
|
||||||
<ion-row style="margin-left: -95px; margin-bottom: 1px;">
|
|
||||||
<ion-col size="10">
|
|
||||||
<div style="width: 100%;">
|
|
||||||
<div class="result-graph">
|
|
||||||
|
|
||||||
<div class="request-heading">
|
|
||||||
|
|
||||||
<span></span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="result-text-container">
|
|
||||||
|
|
||||||
<h2>74%</h2>
|
|
||||||
|
|
||||||
<span>Completed <br><br><br><br></span>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p-chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="2">
|
|
||||||
<div style="border: 1px gray solid; margin-left: -45px; text-align:center; width: 245%; border-radius: 5%; height: 100%;">
|
|
||||||
<p style=" margin-bottom: -25px;">{{today}}</p>
|
|
||||||
<p style="font-weight:bold ;font-size: 28px; margin-bottom: -16px;">{{todayDate}}</p>
|
|
||||||
<p style=" margin-bottom: -15px;">{{monthDate}}</p>
|
|
||||||
<p style=" margin-bottom: 2px;">{{month}}</p>
|
|
||||||
<div style="background-color: gray;height: 26px;">
|
|
||||||
<p>Permenent</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</ion-grid>
|
|
||||||
|
|
||||||
<div style="background-color: gray; height: 0.3px; margin-bottom: 60px;">
|
|
||||||
<ion-grid>
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<p style="position: relative; left: 20px;">19:00 - 07:00</p>
|
|
||||||
<p style="position: relative; left: 25px; color: gray;">SHIFT TIME</p>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
<div style="background-color: gray; height: 1px;"></div>
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<p style="position: relative; left: 40px;">11:30</p>
|
|
||||||
<p style="position: relative; left: 20px; color: gray;">REGULAR</p>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
<div style="background-color: gray; height: 0.3px;"></div>
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<p style="position: relative; left: 40px;">19:20</p>
|
|
||||||
<p style="position: relative; left: 20px; color: gray;">CHECK-IN</p>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
<div style="background-color: gray; height: 1px;"></div>
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<p style="position: relative; left: 40px;">7:50</p>
|
|
||||||
<p style="position: relative; left: 40px; color: gray;">CHECK-OUT</p>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
<!-- <div style="background-color: gray; height: 0.3px;"></div> -->
|
|
||||||
</ion-grid>
|
|
||||||
</div>
|
|
||||||
<div style="background-color: gray;height: 100%;margin-left: 150px;margin-top: -60px;margin-right: 150px;">
|
|
||||||
<ion-grid style="width: 140px;">
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<p style="position: relative; left: 40px;">00:20</p>
|
|
||||||
<p style="position: relative; left: 30px; color: gray;">LATE-IN</p>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<p style="position: relative; left: 40px;">00:30</p>
|
|
||||||
<p style="position: relative; left: 30px; color: gray;">EXCESS</p>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<p style="position: relative; left: 40px;">00:00</p>
|
|
||||||
<p style="position: relative; left: 20px; color: gray;">SHORTAGE</p>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<p style="position: relative; left: 40px;">00:00</p>
|
|
||||||
<p style="position: relative; left: 40px; color: gray;">EARLY-OUT</p>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</ion-grid>
|
|
||||||
</div>
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
.result-text-container {
|
|
||||||
|
|
||||||
padding: 0;
|
|
||||||
|
|
||||||
margin: 0;
|
|
||||||
|
|
||||||
position: absolute;
|
|
||||||
|
|
||||||
left: 50%;
|
|
||||||
|
|
||||||
top: 50%;
|
|
||||||
|
|
||||||
display: block;
|
|
||||||
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
|
|
||||||
font-size: 38px;
|
|
||||||
|
|
||||||
font-family: WorkSans-Bold;
|
|
||||||
|
|
||||||
margin: 0 auto;
|
|
||||||
|
|
||||||
line-height: 36px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
|
|
||||||
width: 125px;
|
|
||||||
|
|
||||||
display: block;
|
|
||||||
|
|
||||||
margin: 0 auto;
|
|
||||||
|
|
||||||
font-size: 12px;
|
|
||||||
|
|
||||||
font-family: workSans-Regular;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { DateInfoModalComponent } from './date-info-modal.component';
|
|
||||||
|
|
||||||
describe('DateInfoModalComponent', () => {
|
|
||||||
let component: DateInfoModalComponent;
|
|
||||||
let fixture: ComponentFixture<DateInfoModalComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ DateInfoModalComponent ],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(DateInfoModalComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,70 +0,0 @@
|
|||||||
import { Component, OnInit, Input } from '@angular/core';
|
|
||||||
import { ModalController, NavParams } from '@ionic/angular';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-date-info-modal',
|
|
||||||
templateUrl: './date-info-modal.component.html',
|
|
||||||
styleUrls: ['./date-info-modal.component.scss'],
|
|
||||||
})
|
|
||||||
export class DateInfoModalComponent implements OnInit {
|
|
||||||
gaugeType = "full";
|
|
||||||
gaugeValue = 28.3;
|
|
||||||
gaugeLabel = "Days";
|
|
||||||
@Input() TODAYDATE: any;
|
|
||||||
today:any;
|
|
||||||
todayDate: any;
|
|
||||||
month: any;
|
|
||||||
monthDate: any;
|
|
||||||
|
|
||||||
constructor(public modalController: ModalController, public navParams: NavParams) { }
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
let x = this.TODAYDATE.split(" ")
|
|
||||||
console.log(x)
|
|
||||||
this.today = x[0];
|
|
||||||
this.todayDate = x[1];
|
|
||||||
this.monthDate = x[2];
|
|
||||||
this.month = x[3];
|
|
||||||
console.log(this.todayDate)
|
|
||||||
console.log(this.today)
|
|
||||||
console.log(this.monthDate)
|
|
||||||
console.log(this.month)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public options = {
|
|
||||||
|
|
||||||
cutoutPercentage: 80,
|
|
||||||
|
|
||||||
tooltips: { enabled: false },
|
|
||||||
|
|
||||||
legend: { display: false }
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public data = {
|
|
||||||
|
|
||||||
datasets: [
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
data: [120,50],
|
|
||||||
|
|
||||||
backgroundColor: [
|
|
||||||
|
|
||||||
'#094875'
|
|
||||||
],
|
|
||||||
|
|
||||||
borderWidth: 2
|
|
||||||
|
|
||||||
}]
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
export class TimeSlot {
|
|
||||||
constructor(isoTime: string, startDate: string, end: string) {
|
|
||||||
this.isoTime = isoTime;
|
|
||||||
this.start = startDate;
|
|
||||||
this.end = end;
|
|
||||||
this.allDay = true;
|
|
||||||
this.draggable = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public eventTimeLabel() {
|
|
||||||
return new Date(this.end).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });
|
|
||||||
}
|
|
||||||
// event time in iso format
|
|
||||||
isoTime: string;
|
|
||||||
// start of event day
|
|
||||||
start: string;
|
|
||||||
// event date time
|
|
||||||
end: string;
|
|
||||||
allDay: boolean;
|
|
||||||
draggable: boolean;
|
|
||||||
}
|
|
||||||
@ -1,69 +0,0 @@
|
|||||||
<ion-content has-bouncing="false" forceOverscroll="false" class="ion-no-padding">
|
|
||||||
<ion-grid padding>
|
|
||||||
<ion-row>
|
|
||||||
<ion-col [size]="12">
|
|
||||||
<!-- <img [src]="logo" class="loginLogo" />
|
|
||||||
<h1 class="heading1">{{welcome}} </h1> -->
|
|
||||||
<p class="text1" style="margin-bottom: -8px;font-weight: bold;font-size: 28px;">{{'home,welcome-back' | translate}} </p>
|
|
||||||
<p class="text1" style="font-size: 28px;margin-top: 0px;" >{{empname}}</p>
|
|
||||||
<p *ngIf="!empname" class="text1">{{welcome_txt}} </p>
|
|
||||||
<p class="text1">{{txt_account}} </p>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
|
|
||||||
<ion-row class="row-border" *ngIf="empname && isLastLogin">
|
|
||||||
<ion-col size="6" style="padding: 5px 10px; border-right:1px solid #bbbbbb">
|
|
||||||
<p class="last-login" style="font-weight: bold">{{'login,last-login' | translate}} </p>
|
|
||||||
<!-- <p class="last-login small-font-size">{{user.EditedOn | date}}
|
|
||||||
{{lastLoginTime}}</p>-->
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="6" style="padding: 5px 10px;">
|
|
||||||
<p class="last-login" style="font-weight: bold" [ngClass]="{'fadein':empname && isLastLogin }">
|
|
||||||
{{'login,last-login-with' | translate}}
|
|
||||||
</p>
|
|
||||||
<p class="last-login">{{getLoginType(logintype)}}</p>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
|
|
||||||
<ion-row class="ion-no-padding description" *ngIf="empname && isLastLogin">
|
|
||||||
<ion-col style="margin-top:-5px" class="ion-no-padding " [size]=6>
|
|
||||||
<app-confirm-login [accessFromOutSide]="true" *ngIf="empname"></app-confirm-login>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col [size]=6>
|
|
||||||
<app-button (click)="loginwithuser()" [title]="button.title | translate " [icon]="button.icon"
|
|
||||||
[settings]="button.settings" [strong]="button.txt" [disabled]="button.disabled"
|
|
||||||
[buttonClass]="button.buttonClass" [pClass]="button.pClass" [class]="button.class">
|
|
||||||
</app-button>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</ion-grid>
|
|
||||||
|
|
||||||
</ion-content>
|
|
||||||
<ion-footer class="welcome-footer">
|
|
||||||
<ion-row class="ion-justify-content-center " *ngIf="empname">
|
|
||||||
<ion-col [size]="12">
|
|
||||||
|
|
||||||
<ion-button class="centerDiv button-login" expand="block" (click)="login()">
|
|
||||||
{{'login, another-acc' | translate}}
|
|
||||||
</ion-button>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
|
|
||||||
<ng-template #userinfo_login>
|
|
||||||
<ion-row class="ion-justify-content-center bottom-buttons">
|
|
||||||
<ion-col [size]="12">
|
|
||||||
<ion-button class="gray-button" expand="block" (click)="login()">
|
|
||||||
{{'rate,yes' | translate}}
|
|
||||||
</ion-button>
|
|
||||||
|
|
||||||
<!-- <ion-button class="red-button" expand="block" (click)="register()">
|
|
||||||
{{'general,no' | translate}}
|
|
||||||
</ion-button> -->
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</ng-template>
|
|
||||||
</ion-footer>
|
|
||||||