create and design ITG form
commit
a3109bc0a8
@ -0,0 +1,12 @@
|
||||
import { Request } from 'src/app/hmg-common/services/models/request';
|
||||
|
||||
export class itgRequest extends Request {
|
||||
public RequestType: string;
|
||||
public ItemID: number;
|
||||
public TaskID: number;
|
||||
public EmployeeNumber: string;
|
||||
public Comments: string;
|
||||
public IsSubTask: boolean;
|
||||
public NewUserEMPId: string;
|
||||
public AdditionalFields?: [{}];
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
<ion-content padding>
|
||||
|
||||
<!--
|
||||
<ion-col col-1
|
||||
style="margin-right: -22px;margin-top: -10px;">
|
||||
<ion-button class="closeIcon" (click)="closeModal()">
|
||||
<img src="../assets/imgs/close.png">
|
||||
|
||||
</ion-button>
|
||||
</ion-col> -->
|
||||
|
||||
|
||||
<ion-list>
|
||||
<ion-radio-group>
|
||||
<ion-list-header style="margin-bottom: 22px !important;">
|
||||
<p class="Header">More Action</p>
|
||||
</ion-list-header>
|
||||
<div *ngFor="let button of actionBtns ">
|
||||
|
||||
<ion-item *ngIf="button.BUTTON_ACTION !='APPROVED' && button.BUTTON_ACTION !='REJECTED' && button.BUTTON_ACTION !='REQUEST_INFO' " >
|
||||
<ion-label class="labelRadio"> {{button.BUTTON_LABEL}}</ion-label>
|
||||
<ion-radio color="secondary" mode="md" value="{{button.BUTTON_ACTION}}" (ionSelect)="radioSelect(button)"></ion-radio>
|
||||
|
||||
<!-- </div> -->
|
||||
</ion-item>
|
||||
</div>
|
||||
</ion-radio-group>
|
||||
|
||||
</ion-list>
|
||||
|
||||
|
||||
<ion-footer>
|
||||
<ion-row class="rowBtn">
|
||||
<ion-button style="width:200px !important" class="confirmBtn" (click)="OkBtnModal()"> {{ts.trPK('general','ok')}}
|
||||
</ion-button>
|
||||
</ion-row>
|
||||
|
||||
<ion-row class="rowBtn">
|
||||
<ion-button style="width:200px !important" class="cancelBtn" (click)="closeModal()"> {{ts.trPK('general','cancel')}}
|
||||
</ion-button>
|
||||
|
||||
</ion-row>
|
||||
</ion-footer>
|
||||
</ion-content>
|
||||
@ -0,0 +1,22 @@
|
||||
.rowBtn{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.Header{
|
||||
color: black !important;
|
||||
font-size: 16px !important;
|
||||
font-weight: bold !important;;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-58px, 2px);
|
||||
}
|
||||
|
||||
.labelRadio{
|
||||
color: black !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { MoreActionModalComponent } from './more-action-modal.component';
|
||||
|
||||
describe('MoreActionModalComponent', () => {
|
||||
let component: MoreActionModalComponent;
|
||||
let fixture: ComponentFixture<MoreActionModalComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ MoreActionModalComponent ],
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(MoreActionModalComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,44 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
|
||||
import { ModalController } from '@ionic/angular';
|
||||
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-more-action-modal',
|
||||
templateUrl: './more-action-modal.component.html',
|
||||
styleUrls: ['./more-action-modal.component.scss'],
|
||||
})
|
||||
export class MoreActionModalComponent implements OnInit {
|
||||
actionBtns :any =[];
|
||||
radioButtonValue: any;
|
||||
constructor( private ts: TranslatorService,private modalCtrl: ModalController, private cs: CommonService){}
|
||||
|
||||
ngOnInit() {
|
||||
console.log("modal");
|
||||
this.actionBtns = this.cs.sharedService.getSharedData("passActionMore" , false);
|
||||
console.log("modal");
|
||||
|
||||
}
|
||||
closeModal() {
|
||||
this.modalCtrl.dismiss();
|
||||
}
|
||||
|
||||
radioSelect(v) {
|
||||
this.radioButtonValue = v;
|
||||
console.log("radio selected"+v);
|
||||
}
|
||||
|
||||
OkBtnModal() {
|
||||
if (!this.radioButtonValue) {
|
||||
let msg: string = this.ts.trPK("replacementRoll", "msg");
|
||||
this.cs.presentAlert(msg);
|
||||
return;
|
||||
} else {
|
||||
let data = this.radioButtonValue;
|
||||
this.modalCtrl.dismiss(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,3 +1,151 @@
|
||||
<p>
|
||||
work-list-main-itg works!
|
||||
</p>
|
||||
<ion-header>
|
||||
<ion-toolbar class="header-toolbar">
|
||||
<ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title>
|
||||
<ion-buttons slot="start">
|
||||
<nav-buttons backLink="/notification/homepage"></nav-buttons>
|
||||
</ion-buttons>
|
||||
</ion-toolbar>
|
||||
</ion-header>
|
||||
|
||||
<ion-content class="colorBG">
|
||||
<ion-segment [dir]="directionLTR" mode="md" color="secondary" (ionChange)="segmentChangedClick($event)"
|
||||
[value]="defaultSegment" class="ion-segment-all">
|
||||
|
||||
<ion-segment-button value="{{segmentVal.name}}"
|
||||
[ngClass]="activeSegment == segmentVal.name ? 'active-Segment' : 'normal-Segment'"
|
||||
*ngFor="let segmentVal of segmentsArray">
|
||||
{{segmentVal.name}}
|
||||
</ion-segment-button>
|
||||
</ion-segment>
|
||||
|
||||
<ion-card class="cardContent" *ngFor='let segmentContant of segmentData'>
|
||||
<ion-card-content *ngIf='activeSegment === segmentContant.name'>
|
||||
<ion-grid style="text-align: left" *ngFor='let dataContant of segmentContant.data'>
|
||||
<ion-row>
|
||||
<ion-col>
|
||||
<label class="colItemReq"> {{dataContant.Title}}</label>
|
||||
<br />
|
||||
<label>{{dataContant.Value}}</label>
|
||||
</ion-col>
|
||||
</ion-row>
|
||||
<ion-row *ngIf='dataContant.TableValue'>
|
||||
<ion-col style="border: 1px solid gainsboro; border-radius: 15px; padding-left: 20px;">
|
||||
<label class="colItemReq" *ngFor="let header of dataContant.TableValue.Header"><br /> {{header}}</label>
|
||||
<br />
|
||||
<label *ngFor="let rows of dataContant.TableValue.Rows"><br />{{rows}}</label>
|
||||
<label *ngIf="dataContant.TableValue.Rows"><br />none</label>
|
||||
</ion-col>
|
||||
</ion-row>
|
||||
</ion-grid>
|
||||
</ion-card-content>
|
||||
</ion-card>
|
||||
|
||||
<!-- if there is additional screen like in VIDA -->
|
||||
<!-- <ng-container>
|
||||
<ion-card class="cardContent" *ngFor='let segmentContant of segmentDataTable'>
|
||||
<ion-card-content *ngIf='activeSegment === segmentContant.name'>
|
||||
<ion-grid style="text-align: left" *ngFor='let dataContant of segmentContant.data'>
|
||||
<ion-row *ngFor="let headerData of dataContant.Header">
|
||||
<ion-col>
|
||||
<label class="colItemReq"> {{headerData}}</label>
|
||||
<br />
|
||||
<label>{{headerData}}</label>
|
||||
</ion-col>
|
||||
</ion-row>
|
||||
</ion-grid>
|
||||
</ion-card-content>
|
||||
</ion-card>
|
||||
</ng-container> -->
|
||||
|
||||
<!-- END -->
|
||||
|
||||
<ion-card class="cardContent" *ngIf='activeSegment === "Approval Level"'>
|
||||
<ion-card-content>
|
||||
<ion-grid>
|
||||
<ion-row>
|
||||
<ion-col>
|
||||
<ion-list class="notification-list" style="margin-left: -30px;" *ngFor="let approvalInfo of workList">
|
||||
<div class="timeline">
|
||||
<ion-item>
|
||||
<div class="timeline-item" slot="start">
|
||||
<div>
|
||||
|
||||
<button ion-button style=" background: none;width: 60%;">
|
||||
<img src="../assets/imgs/noteSmall.png">
|
||||
</button>
|
||||
<div
|
||||
[ngClass]="{'bg-blue-dot' : approvalInfo.Action === 'Submit', 'bg-green-dot':approvalInfo.Action === 'Approved', 'bg-red-dot':approvalInfo.Action === 'Rejected', 'bg-gray-dot':approvalInfo.Action === 'Pending', 'bg-gray-dot':approvalInfo.Action === ''}"
|
||||
class="timeline-thumb timeline-icon">
|
||||
</div>
|
||||
<p style="margin-left: -20%; font-size: 12px !important;">{{approvalInfo.Action}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="margin-left: 10%;">{{approvalInfo.Name}}</p>
|
||||
|
||||
</ion-item>
|
||||
</div>
|
||||
</ion-list>
|
||||
</ion-col>
|
||||
</ion-row>
|
||||
</ion-grid>
|
||||
</ion-card-content>
|
||||
</ion-card>
|
||||
|
||||
<ion-card class="cardContent">
|
||||
<ion-card-content>
|
||||
<ion-grid>
|
||||
<ion-row>
|
||||
<ion-col>
|
||||
<ion-label>
|
||||
<h2 class="boldTxtNav">Comment</h2>
|
||||
</ion-label>
|
||||
<ion-input type='text' [(ngModel)]='commentText'></ion-input>
|
||||
|
||||
<ion-item *ngFor="let object of grantInfo">
|
||||
<ion-label>{{object.Label}}</ion-label>
|
||||
<ion-select *ngIf="!object.ConditionalFieldName" [(ngModel)]='ExchangeServerSelected'
|
||||
(ionChange)="filterGrantDB(ExchangeServerSelected,object, object.FieldName)" id='{{object.FieldName}}'>
|
||||
<ion-select-option value="{{value}}" *ngFor="let value of object.Value">
|
||||
{{value}}</ion-select-option>
|
||||
</ion-select>
|
||||
<ion-select *ngIf="object.ConditionalFieldName" [(ngModel)]='ExchangeServerDBSelected'
|
||||
(ionChange)="filterGrantDB(ExchangeServerDBSelected,object)" id='{{object.FieldName}}'>
|
||||
<ion-select-option value="{{value}}" *ngFor="let value of filteredGrantFieldsConditionalValue">
|
||||
{{value}}</ion-select-option>
|
||||
</ion-select>
|
||||
</ion-item>
|
||||
</ion-col>
|
||||
</ion-row>
|
||||
</ion-grid>
|
||||
</ion-card-content>
|
||||
</ion-card>
|
||||
</ion-content>
|
||||
|
||||
|
||||
<ion-footer class="footerSearchBtn">
|
||||
|
||||
|
||||
<ion-tabs>
|
||||
<ion-tab-bar class="tabBar" slot="bottom">
|
||||
|
||||
<!-- <ion-tab-button *ngFor='let action of actionBTN' [hidden]="action.isAvailable" > -->
|
||||
<ion-tab-button *ngFor='let action of actionBTN' [hidden]='!action.isAvailable'
|
||||
(click)="selectAtion(action.name)">
|
||||
|
||||
<img [src]="action.image">
|
||||
<ion-label style="font-size: 12px;">{{action.name}}</ion-label>
|
||||
|
||||
</ion-tab-button>
|
||||
|
||||
<ion-tab-button (click)="skip()">
|
||||
<img src="../assets/imgs/action-skip.png">
|
||||
<ion-label style="font-size: 12px;">Skip</ion-label>
|
||||
</ion-tab-button>
|
||||
|
||||
</ion-tab-bar>
|
||||
|
||||
</ion-tabs>
|
||||
|
||||
|
||||
|
||||
</ion-footer>
|
||||
@ -0,0 +1,13 @@
|
||||
|
||||
|
||||
.timeline-thumb {
|
||||
height: 30px !important;
|
||||
left: 54px !important;
|
||||
}
|
||||
|
||||
.timeline-icon{
|
||||
width: 30px !important;
|
||||
}
|
||||
.timeline:before{
|
||||
position: fixed !important;
|
||||
}
|
||||
@ -0,0 +1,60 @@
|
||||
<ion-header>
|
||||
<ion-toolbar class="header-toolbar">
|
||||
<!-- <nav-buttons></nav-buttons> -->
|
||||
<ion-title color="light">{{ 'vacation-rule, search-employee' | translate}}</ion-title>
|
||||
<ion-buttons slot="primary">
|
||||
<ion-button style="background: none !important;" (click)="closePage()">
|
||||
<ion-icon slot="icon-only" name="close"></ion-icon>
|
||||
</ion-button>
|
||||
</ion-buttons>
|
||||
</ion-toolbar>
|
||||
</ion-header>
|
||||
|
||||
<ion-content padding>
|
||||
<div style="padding: 0 10px;" [innerHTML]='"vacation-rule, replacement-employee-tip" | translate'></div>
|
||||
|
||||
<ion-item lines="none">
|
||||
<ion-label class="boldTxtNav">{{'vacation-rule, search-by' | translate}}</ion-label>
|
||||
<ion-select okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'
|
||||
[(ngModel)]="searchKeySelect">
|
||||
<ion-select-option value="1" selected="true">{{'vacation-rule, search-by-name' | translate}}</ion-select-option>
|
||||
<ion-select-option value="2">{{'vacation-rule, search-by-username' | translate}}</ion-select-option>
|
||||
<ion-select-option value="3">{{'vacation-rule, search-by-email' | translate}}</ion-select-option>
|
||||
</ion-select>
|
||||
</ion-item>
|
||||
|
||||
<ion-item lines='none'>
|
||||
<ion-input [(ngModel)]="searchKey" placeholder="{{'vacation-rule, search-employee' | translate}}"></ion-input>
|
||||
<ion-button style="width: 19%;" button-type="clear" (click)="SearchReplacementList()">
|
||||
<ion-icon slot="icon-only" name="search"></ion-icon>
|
||||
</ion-button>
|
||||
</ion-item>
|
||||
|
||||
<!-- <ion-item>
|
||||
<ion-list [(ngModel)]="selEmp" *ngIf="ReplacementList">
|
||||
<ion-item *ngFor="let employee of ReplacementList;let i=index;">
|
||||
<ion-label><span class="boldTxt">{{employee.EMPLOYEE_DISPLAY_NAME}}</span> <br>{{employee.USER_NAME}}<br>
|
||||
{{employee.EMAIL_ADDRESS}}</ion-label>
|
||||
<ion-radio value="{{i}}"></ion-radio>
|
||||
</ion-item>
|
||||
</ion-list>
|
||||
</ion-item> -->
|
||||
|
||||
<ion-list>
|
||||
<ion-radio-group mode="md" [(ngModel)]="selEmp" *ngIf="ReplacementList">
|
||||
<ion-item *ngFor="let employee of ReplacementList;let i=index;">
|
||||
<ion-label><span class="boldTxt">{{employee.EMPLOYEE_DISPLAY_NAME}}</span> <br>{{employee.USER_NAME}}<br>
|
||||
{{employee.EMAIL_ADDRESS}}</ion-label>
|
||||
<ion-radio value="{{i}}"></ion-radio>
|
||||
</ion-item>
|
||||
</ion-radio-group>
|
||||
</ion-list>
|
||||
|
||||
</ion-content>
|
||||
|
||||
<ion-footer>
|
||||
<div class="centerDiv">
|
||||
<ion-button (click)="closePage()" class="footer-button" color="customnavy">{{'general, save' | translate}}
|
||||
</ion-button>
|
||||
</div>
|
||||
</ion-footer>
|
||||
@ -0,0 +1,27 @@
|
||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { WorkListReplacementItgComponent } from './work-list-replacement-itg.component';
|
||||
|
||||
describe('WorkListReplacementItgComponent', () => {
|
||||
let component: WorkListReplacementItgComponent;
|
||||
let fixture: ComponentFixture<WorkListReplacementItgComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ WorkListReplacementItgComponent ],
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(WorkListReplacementItgComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,131 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { ModalController } from '@ionic/angular';
|
||||
import { ReplacementServiceRequest } from 'src/app/vacation-rule/model/replacement-Service.request';
|
||||
import { VacationRuleServiceService } from 'src/app/vacation-rule/service/vacation-rule-service.service';
|
||||
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
|
||||
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'app-work-list-replacement-itg',
|
||||
templateUrl: './work-list-replacement-itg.component.html',
|
||||
styleUrls: ['./work-list-replacement-itg.component.scss'],
|
||||
})
|
||||
export class WorkListReplacementItgComponent implements OnInit {
|
||||
P_SEARCH_USER_NAME: string = "";
|
||||
P_SEARCH_EMPLOYEE_DISPLAY_NAME: string = "";
|
||||
P_SEARCH_EMAIL_ADDRESS: string = "";
|
||||
P_PAGE_NUM: number = 1;
|
||||
P_PAGE_LIMIT: number = 50;
|
||||
ReplacementList: any = [];
|
||||
IsReachEnd: boolean = false;
|
||||
selEmp: string = null;
|
||||
callback: any;
|
||||
searchKey: any = "";
|
||||
searchKeySelect: string = "";
|
||||
replacmentRequest: any = "";
|
||||
isAbs: boolean = false;
|
||||
isSave: boolean = false;
|
||||
|
||||
constructor(public vacationRuleService: VacationRuleServiceService,
|
||||
public ts: TranslatorService,
|
||||
public cs: CommonService,
|
||||
public modalController: ModalController) { }
|
||||
|
||||
ngOnInit() {}
|
||||
|
||||
SearchReplacementList() {
|
||||
this.ReplacementList = [];
|
||||
this.IsReachEnd = false;
|
||||
this.P_PAGE_NUM = 1;
|
||||
if (this.searchKey) {
|
||||
switch (this.searchKeySelect) {
|
||||
case '1': {
|
||||
|
||||
this.P_SEARCH_EMPLOYEE_DISPLAY_NAME = this.searchKey;
|
||||
this.P_SEARCH_USER_NAME = "";
|
||||
this.P_SEARCH_EMAIL_ADDRESS = "";
|
||||
|
||||
break;
|
||||
}
|
||||
case '2': {
|
||||
this.P_SEARCH_USER_NAME = this.searchKey;
|
||||
this.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
|
||||
this.P_SEARCH_EMAIL_ADDRESS = "";
|
||||
break;
|
||||
}
|
||||
case '3': {
|
||||
this.P_SEARCH_EMAIL_ADDRESS = this.searchKey;
|
||||
this.P_SEARCH_USER_NAME = "";
|
||||
this.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
this.P_SEARCH_USER_NAME = "";
|
||||
this.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
|
||||
this.P_SEARCH_EMAIL_ADDRESS = "";
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.P_SEARCH_USER_NAME = "";
|
||||
this.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
|
||||
this.P_SEARCH_EMAIL_ADDRESS = "";
|
||||
}
|
||||
|
||||
const request = new ReplacementServiceRequest();
|
||||
request.P_SEARCH_USER_NAME = this.P_SEARCH_USER_NAME;
|
||||
request.P_SEARCH_EMPLOYEE_DISPLAY_NAME = this.P_SEARCH_EMPLOYEE_DISPLAY_NAME;
|
||||
request.P_SEARCH_EMAIL_ADDRESS = this.P_SEARCH_EMAIL_ADDRESS;
|
||||
request.P_PAGE_NUM = this.P_PAGE_NUM;
|
||||
request.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
|
||||
request.P_SELECTED_EMPLOYEE_NUMBER = this.selEmp;
|
||||
|
||||
this.vacationRuleService.getReplacementList(request).
|
||||
subscribe((result: any) => {
|
||||
this.handleReplacment(result);
|
||||
});
|
||||
}
|
||||
|
||||
handleReplacment(result) {
|
||||
if (this.cs.validResponse(result)) {
|
||||
if (this.cs.hasData(result.ReplacementList)) {
|
||||
this.ReplacementList = result.ReplacementList;
|
||||
this.P_PAGE_NUM++;
|
||||
let lastItemIndex = this.ReplacementList.length - 1;
|
||||
if (result.ReplacementList[lastItemIndex]) {
|
||||
let lastitem = result.ReplacementList[lastItemIndex];
|
||||
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
|
||||
this.IsReachEnd = true;
|
||||
} else {
|
||||
this.IsReachEnd = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
doInfinite(infiniteScroll) {
|
||||
|
||||
}
|
||||
|
||||
closePage() {
|
||||
this.isSave = true;
|
||||
let data: any = null;
|
||||
if (this.isSave == true) {
|
||||
if (this.selEmp) {
|
||||
data = this.ReplacementList[this.selEmp];
|
||||
} else {
|
||||
data = null;
|
||||
}
|
||||
if (typeof this.callback == 'function') {
|
||||
this.callback(data);
|
||||
}
|
||||
|
||||
this.modalController.dismiss({
|
||||
'dismissed': true,
|
||||
empData: data
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,8 +1,107 @@
|
||||
.itemHISBtn{
|
||||
padding: 5px;
|
||||
color: var(--light);
|
||||
background: var(--darkgray);
|
||||
border-radius: 3px;
|
||||
width: 85%;
|
||||
height: 40px;
|
||||
}
|
||||
// .itemHISBtn{
|
||||
// padding: 5px;
|
||||
// color: var(--light);
|
||||
// background: var(--darkgray);
|
||||
// border-radius: 3px;
|
||||
// width: 85%;
|
||||
// height: 40px;
|
||||
// }
|
||||
|
||||
|
||||
// .rowBtn{
|
||||
// display: flex;
|
||||
// flex-direction: row;
|
||||
// justify-content: center;
|
||||
// align-items: center;
|
||||
// background: white;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// .rowBorder{
|
||||
// border-bottom: solid 0.03cm var(--grayBG);
|
||||
|
||||
// }
|
||||
// .colBorder{
|
||||
// border-right: solid 0.03cm var(--grayBG);
|
||||
|
||||
// }
|
||||
|
||||
// .dateActionHistory{
|
||||
// text-align: end;
|
||||
// // margin-top: -25px;
|
||||
// }
|
||||
|
||||
|
||||
// .actionBtn{
|
||||
// --border-radius: 50% !important;
|
||||
// height: 55px;
|
||||
// width: 55px;
|
||||
// --background: var(--newgreen); // will be dynamic
|
||||
// background: transparent;
|
||||
// margin:10px;
|
||||
// }
|
||||
|
||||
// .itemAttch{
|
||||
// border-radius: 11px;
|
||||
// margin: 8px;
|
||||
// --min-height: 60px;
|
||||
// --max-height: 60px;
|
||||
// }
|
||||
|
||||
// .less {
|
||||
// max-height: 54px;
|
||||
// }
|
||||
|
||||
// .noDataDiv{
|
||||
// background: #ffffff;
|
||||
// height: 11%;
|
||||
// text-align: center;
|
||||
// padding-top: 1px;
|
||||
// border-radius: 10px;
|
||||
// margin: 10px;
|
||||
// }
|
||||
|
||||
// .container {
|
||||
// font-size: 14px;
|
||||
// line-height: 14px;
|
||||
// height: 15px;
|
||||
// overflow: hidden;
|
||||
// text-align: justify;
|
||||
// }
|
||||
|
||||
// .show {
|
||||
// overflow: visible;
|
||||
// height: auto;
|
||||
// }
|
||||
|
||||
// .showMore{
|
||||
// padding: 0px;
|
||||
// background: transparent;
|
||||
// color: blue;
|
||||
// text-decoration: underline;
|
||||
// font-size: 14px;
|
||||
// }
|
||||
// .succssfullMSG{
|
||||
// height: 100%;
|
||||
// width: 100%;
|
||||
// background: var(--newgreen);
|
||||
// color: white;
|
||||
// font-weight: bold;
|
||||
// font-size: 20px;
|
||||
// text-align: center;
|
||||
// vertical-align: middle;
|
||||
// padding-top: 30px;
|
||||
// }
|
||||
|
||||
// .succssfullIcon{
|
||||
// width: 60%;
|
||||
// text-align: center;
|
||||
// height: 60%;
|
||||
// }
|
||||
// .subjectNotification{
|
||||
// text-align: center;
|
||||
// padding-top: 10px;
|
||||
// font-weight: bold;
|
||||
// }
|
||||
|
||||
@ -1,8 +1,110 @@
|
||||
.itemHISBtn{
|
||||
padding: 5px;
|
||||
color: var(--light);
|
||||
background: var(--darkgray);
|
||||
border-radius: 3px;
|
||||
width: 85%;
|
||||
height: 40px;
|
||||
}
|
||||
// .itemHISBtn{
|
||||
// padding: 5px;
|
||||
// color: var(--light);
|
||||
// background: var(--darkgray);
|
||||
// border-radius: 3px;
|
||||
// width: 85%;
|
||||
// height: 40px;
|
||||
// }
|
||||
|
||||
|
||||
// .rowBtn{
|
||||
// display: flex;
|
||||
// flex-direction: row;
|
||||
// justify-content: center;
|
||||
// align-items: center;
|
||||
// background: white;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// .rowBorder{
|
||||
// border-bottom: solid 0.03cm var(--grayBG);
|
||||
|
||||
// }
|
||||
// .colBorder{
|
||||
// border-right: solid 0.03cm var(--grayBG);
|
||||
|
||||
// }
|
||||
|
||||
// .dateActionHistory{
|
||||
// text-align: end;
|
||||
// // margin-top: -25px;
|
||||
// }
|
||||
|
||||
|
||||
// .actionBtn{
|
||||
// --border-radius: 50% !important;
|
||||
// height: 55px;
|
||||
// width: 55px;
|
||||
// --background: var(--newgreen); // will be dynamic
|
||||
// background: transparent;
|
||||
// margin:10px;
|
||||
// }
|
||||
|
||||
// .itemAttch{
|
||||
// border-radius: 11px;
|
||||
// margin: 8px;
|
||||
// --min-height: 60px;
|
||||
// --max-height: 60px;
|
||||
// }
|
||||
|
||||
// .less {
|
||||
// max-height: 54px;
|
||||
// }
|
||||
|
||||
// .noDataDiv{
|
||||
// background: #ffffff;
|
||||
// height: 11%;
|
||||
// text-align: center;
|
||||
// padding-top: 1px;
|
||||
// border-radius: 10px;
|
||||
// margin: 10px;
|
||||
// }
|
||||
|
||||
|
||||
// .container {
|
||||
// font-size: 14px;
|
||||
// line-height: 14px;
|
||||
// height: 16px;
|
||||
// overflow: hidden;
|
||||
// text-align: justify;
|
||||
// }
|
||||
|
||||
// .show {
|
||||
// overflow: visible;
|
||||
// height: auto;
|
||||
// }
|
||||
|
||||
// .showMore{
|
||||
// padding: 0px;
|
||||
// background: transparent;
|
||||
// color: blue;
|
||||
// text-decoration: underline;
|
||||
// font-size: 14px;
|
||||
// }
|
||||
|
||||
// .succssfullMSG{
|
||||
// height: 100%;
|
||||
// width: 100%;
|
||||
// background: var(--newgreen);
|
||||
// color: white;
|
||||
// font-weight: bold;
|
||||
// font-size: 20px;
|
||||
// text-align: center;
|
||||
// vertical-align: middle;
|
||||
// padding-top: 30px;
|
||||
// }
|
||||
|
||||
// .succssfullIcon{
|
||||
// width: 60%;
|
||||
// text-align: center;
|
||||
// height: 60%;
|
||||
// }
|
||||
|
||||
// .subjectNotification{
|
||||
// text-align: center;
|
||||
// padding-top: 10px;
|
||||
// font-weight: bold;
|
||||
// }
|
||||
|
||||
@ -1,8 +1,106 @@
|
||||
.itemHISBtn{
|
||||
padding: 5px;
|
||||
color: var(--light);
|
||||
background: var(--darkgray);
|
||||
border-radius: 3px;
|
||||
width: 85%;
|
||||
height: 40px;
|
||||
}
|
||||
// .itemHISBtn{
|
||||
// padding: 5px;
|
||||
// color: var(--light);
|
||||
// background: var(--darkgray);
|
||||
// border-radius: 3px;
|
||||
// width: 85%;
|
||||
// height: 40px;
|
||||
// }
|
||||
|
||||
|
||||
// .rowBtn{
|
||||
// display: flex;
|
||||
// flex-direction: row;
|
||||
// justify-content: center;
|
||||
// align-items: center;
|
||||
// background: white;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// .rowBorder{
|
||||
// border-bottom: solid 0.03cm var(--grayBG);
|
||||
|
||||
// }
|
||||
// .colBorder{
|
||||
// border-right: solid 0.03cm var(--grayBG);
|
||||
|
||||
// }
|
||||
|
||||
// .dateActionHistory{
|
||||
// text-align: end;
|
||||
// // margin-top: -25px;
|
||||
// }
|
||||
|
||||
|
||||
// .actionBtn{
|
||||
// --border-radius: 50% !important;
|
||||
// height: 55px;
|
||||
// width: 55px;
|
||||
// --background: var(--newgreen); // will be dynamic
|
||||
// background: transparent;
|
||||
// margin:10px;
|
||||
// }
|
||||
|
||||
// .itemAttch{
|
||||
// border-radius: 11px;
|
||||
// margin: 8px;
|
||||
// --min-height: 60px;
|
||||
// --max-height: 60px;
|
||||
// }
|
||||
|
||||
// .less {
|
||||
// max-height: 54px;
|
||||
// }
|
||||
|
||||
// .noDataDiv{
|
||||
// background: #ffffff;
|
||||
// height: 11%;
|
||||
// text-align: center;
|
||||
// padding-top: 1px;
|
||||
// border-radius: 10px;
|
||||
// margin: 10px;
|
||||
// }
|
||||
|
||||
// .container {
|
||||
// font-size: 14px;
|
||||
// line-height: 14px;
|
||||
// height: 16px;
|
||||
// overflow: hidden;
|
||||
// text-align: justify;
|
||||
// }
|
||||
|
||||
// .show {
|
||||
// overflow: visible;
|
||||
// height: auto;
|
||||
// }
|
||||
|
||||
// .showMore{
|
||||
// padding: 0px;
|
||||
// background: transparent;
|
||||
// color: blue;
|
||||
// text-decoration: underline;
|
||||
// font-size: 14px;
|
||||
// }
|
||||
// .succssfullMSG{
|
||||
// height: 100%;
|
||||
// width: 100%;
|
||||
// background: var(--newgreen);
|
||||
// color: white;
|
||||
// font-weight: bold;
|
||||
// font-size: 20px;
|
||||
// text-align: center;
|
||||
// vertical-align: middle;
|
||||
// padding-top: 30px;
|
||||
// }
|
||||
|
||||
// .succssfullIcon{
|
||||
// width: 60%;
|
||||
// text-align: center;
|
||||
// height: 60%;
|
||||
// }
|
||||
// .subjectNotification{
|
||||
// text-align: center;
|
||||
// padding-top: 10px;
|
||||
// font-weight: bold;
|
||||
// }
|
||||
@ -0,0 +1,21 @@
|
||||
import { Pipe, PipeTransform } from '@angular/core';
|
||||
|
||||
/**
|
||||
* Generated class for the JsonDatePipe pipe.
|
||||
*
|
||||
* See https://angular.io/api/core/Pipe for more info on Angular Pipes.
|
||||
*/
|
||||
@Pipe({
|
||||
name: 'jsonDate',
|
||||
})
|
||||
export class JsonDatePipe implements PipeTransform {
|
||||
/**
|
||||
* Takes a value and makes it lowercase.
|
||||
*/
|
||||
transform(value: string): any {
|
||||
if(value)
|
||||
return new Date(parseInt(value.substr(6)));
|
||||
else
|
||||
return value;
|
||||
}
|
||||
}
|
||||
@ -1,11 +1,13 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { DateStringPipe } from './date-string/date-string';
|
||||
import { FilterLangPipe } from './filter-lang/filter-lang';
|
||||
import { TurncatePipe } from './turncate/turncate.pipe';
|
||||
@NgModule({
|
||||
declarations: [DateStringPipe,
|
||||
FilterLangPipe],
|
||||
FilterLangPipe,
|
||||
TurncatePipe],
|
||||
imports: [],
|
||||
exports: [DateStringPipe,
|
||||
FilterLangPipe]
|
||||
FilterLangPipe,TurncatePipe]
|
||||
})
|
||||
export class PipesModule {}
|
||||
|
||||
@ -0,0 +1,8 @@
|
||||
import { TurncatePipe } from './turncate.pipe';
|
||||
|
||||
describe('TurncatePipe', () => {
|
||||
it('create an instance', () => {
|
||||
const pipe = new TurncatePipe();
|
||||
expect(pipe).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,27 @@
|
||||
import { Pipe, PipeTransform } from '@angular/core';
|
||||
|
||||
@Pipe({
|
||||
name: 'turncate'
|
||||
})
|
||||
export class TurncatePipe implements PipeTransform {
|
||||
|
||||
transform(value: any, args?: any): any {
|
||||
console.log("args" + args);
|
||||
|
||||
let limit = args.length > 0 ? parseInt(args[0], 10) : 10;
|
||||
let trail = args.length > 1 ? args[1] : '...';
|
||||
|
||||
console.log("limit" + limit);
|
||||
|
||||
console.log("parseInt(args[0], 10)" + parseInt(args[0], 10));
|
||||
console.log("trail" + trail);
|
||||
console.log("limit" + limit);
|
||||
console.log("parseInt(args[0], 10)" + parseInt(args[0], 10));
|
||||
|
||||
return value.length > limit ? value.substring(0, limit) + trail : value; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 977 B |
Binary file not shown.
|
After Width: | Height: | Size: 971 B |
Binary file not shown.
|
After Width: | Height: | Size: 801 B |
Binary file not shown.
|
After Width: | Height: | Size: 970 B |
Binary file not shown.
|
After Width: | Height: | Size: 958 B |
Binary file not shown.
|
After Width: | Height: | Size: 8.1 KiB |
Loading…
Reference in New Issue