summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run')
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.module.ts6
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.css11
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.html37
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.ts290
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.html98
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.scss1398
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.ts444
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.ts14
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.css12
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.html6
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.ts79
11 files changed, 2372 insertions, 23 deletions
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.module.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.module.ts
index 775494d7..920379a8 100644
--- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.module.ts
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.module.ts
@@ -25,6 +25,7 @@ import {RunComponent} from './run/run.component';
import {ReportRunRouting} from './report-run-routing.module';
import {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';
import { RemoveSpaceDirective} from './run/run-report-form-fields/remove-space.directive';
+import { RunCrossTabReportComponent } from './run/run-report/run-cross-tab-report/run-cross-tab-report.component';
@NgModule({
declarations: [RunDashboardReportComponent,
@@ -33,7 +34,8 @@ import { RemoveSpaceDirective} from './run/run-report-form-fields/remove-space.d
ReportRunComponent,
RunReportResultSetComponent,
RunComponent,
- RemoveSpaceDirective],
+ RemoveSpaceDirective,
+ RunCrossTabReportComponent],
imports: [
MatTableModule,
CommonModule,
@@ -54,7 +56,7 @@ import { RemoveSpaceDirective} from './run/run-report-form-fields/remove-space.d
MatSortModule,
NgbTooltipModule
],
- exports: [RunReportComponent, RunComponent]
+ exports: [RunReportComponent, RunComponent, RunReportFormFieldsComponent]
})
export class ReportRun {
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.css b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.css
index 91456c6a..8bd91148 100644
--- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.css
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.css
@@ -9,6 +9,17 @@
padding: 0.4em;
}
+.wrapper2 {
+ display: grid;
+ grid-template-columns:auto auto auto;
+ overflow: auto;
+}
+
+.wrapper2 > div {
+ border-radius: 3px;
+ padding: 0.4em;
+}
+
mat-button-toggle-group {
width: 800px;
}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.html
index aea6c768..ea413efc 100644
--- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.html
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.html
@@ -46,7 +46,7 @@
</div>
<div *ngIf="item.validationType == 'DATE'" class="fieldWidth">
<label class="labelWidth" for="reportType">{{item.fieldDisplayName}} :</label>
- <mat-form-field><input [ngModel]="formFieldListValueMap.get(item.fieldId)" (ngModelChange)="formFieldListValueMap.set(item.fieldId, $event)"
+ <mat-form-field><input [ngModel]="formFieldListValueMap.get(item.fieldId)" [min]="formFieldListValueMap.get(item.fieldId+'_minDate')" [max]="formFieldListValueMap.get(item.fieldId+'_maxDate')" (ngModelChange)="formFieldListValueMap.set(item.fieldId, $event)"
[matDatepicker]="picker"
class="defaultFontSize" matInput>
<mat-datepicker-toggle [for]="picker" matSuffix></mat-datepicker-toggle>
@@ -324,10 +324,39 @@
<div *ngIf="navigateToRun">
<!-- <app-run-dashboard-report [reportId]="reportId" [reportMode]="reportMode" [queryString]="getQueryString()" [DashboardReportObj]="DashboardReportObj"></app-run-dashboard-report> -->
+ <div *ngIf="reportType !== 'Cross-Tab'">
+ <div *ngIf="reportHeader !== ''">
+ <div [innerHtml]="reportHeader" style="width: 60%; padding-left: 20%;">
+ </div>
+ <br/>
+ <br/>
+ </div>
<app-run-report [DashboardReportObj]="DashboardReportObj" [TriggerFFArr]="triggerFormFieldArr"
- [hitCnt]="hitCnt"
- [queryString]="getQueryString()"
- [reportId]="reportId" [reportMode]="reportMode" [runAgain]="runReportAgain" [groupSelectValue]="groupSelectValue" [chartType]="chartType" [isGoBack]="downloadPrevReport" ></app-run-report>
+ [chartType]="chartType"
+ [groupSelectValue]="groupSelectValue"
+ [hitCnt]="hitCnt" [isGoBack]="downloadPrevReport" [queryString]="getQueryString()"
+ [reportId]="reportId" [reportMode]="reportMode" [reportType]="reportType"
+ [runAgain]="runReportAgain"></app-run-report>
+ <div [innerHtml]="reportFooter" style="width: 60%; padding-left: 20%;"></div>
+
+ </div>
+ <div *ngIf="reportType === 'Cross-Tab'">
+ <div *ngIf="reportHeader !== ''">
+ <div [innerHtml]="reportHeader" style="width: 60%; padding-left: 20%;">
+ </div>
+ <br/>
+ <br/>
+ </div>
+ <app-run-cross-tab-report [groupSelectValue]="groupSelectValue" [hitCnt]="hitCnt"
+ [parentId]="reportId"
+ [queryString]="queryString"
+ [reportId]="reportId"
+ [reportMode]="reportMode"
+ [reportType]="reportType"
+ [isGoBack]="downloadPrevReport"></app-run-cross-tab-report>
+ <div [innerHtml]="reportFooter" style="width: 60%; padding-left: 20%;">
+ </div>
+ </div>
</div>
<div *ngIf="error == true">
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.ts
index ced812d2..a7b21de2 100644
--- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.ts
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.ts
@@ -11,7 +11,7 @@ import {HttpCacheService} from '../../../shared/services/cache.service';
styleUrls: ['./run-report-form-fields.component.css']
})
export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
- @Input('formFieldList') formFieldList: {}[];
+ @Input('formFieldList') formFieldList: any;
@Input('reportId') reportId: string;
staticFormFieldList: {}[] = [];
formFieldListValueArr: any[];
@@ -29,7 +29,7 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
triggerFormFieldArr = [];
initialObject = {};
formFieldGroupObjList: {}[] = [];
- toggleFormFieldRenderArr: {}[] = [];
+ toggleFormFieldRenderArr:any;
groupSelectValue = '';
oldGroupSelectValue = '';
unCommonCnt = 0;
@@ -65,6 +65,13 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
downloadPrevReport = '';
timeStampArray: any[];
hoursArray : any[];
+ private orderSeqArray: any;
+ minDate:any;
+ maxDate:any;
+ reportHeader: string;
+ reportFooter: string;
+ reportType: string;
+
constructor(private _runService: RunService,
private _route: ActivatedRoute,
private _router: Router,
@@ -93,6 +100,10 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
this.downloadPrevReport = '';
this.timeStampArray = [];
this.hoursArray = [];
+ this.orderSeqArray = [];
+ this.reportHeader = '';
+ this.reportFooter = '';
+ this.reportType = '';
}
@@ -148,6 +159,11 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
this.chartType = '';
this.showRunButton = false;
this.downloadPrevReport = '';
+ this.minDate = '';
+ this.maxDate = '';
+ this.reportType = '';
+ this.reportHeader='';
+ this.reportFooter='';
}
ngOnInit() {
@@ -158,7 +174,9 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
this.getHours();
this._route.params.subscribe(params => {
this.createNewObject();
+ if(params['reportId'] !== undefined){
this.reportId = params['reportId'];
+ }
const checkOfCache = this.httpCacheService.getPreviousId(this.reportId) || null;
if (!checkOfCache) {
this.httpCacheService.clearCache();
@@ -194,9 +212,13 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
for (const ff of this.actualformFieldValues) {
const formfiledArray = ff.split('=');
const formFieldId = formfiledArray[0];
- const formFieldObj = formfiledArray[1];
+ const formFieldObj = formfiledArray[1].replaceAll('||','/');
this.finalQueryParamsObj[formFieldId] = formFieldObj;
}
+ if(this.directCallQueryParams.includes('NULL')){
+ this.directCallQueryParams = this.directCallQueryParams.replaceAll('NULL','');
+ }
+ this.directCallQueryParams = this.directCallQueryParams.replaceAll('||','/')
this.queryString = this.directCallQueryParams;
}
@@ -206,6 +228,18 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
this.reportName = responseDefPage['reportName'];
this.reportSubTitle = responseDefPage['reportSubTitle'];
this.chartType = responseDefPage['chartType'];
+ this.reportType = responseDefPage['reportType'];
+
+ if (responseDefPage['reportType'] === 'Cross-Tab' || responseDefPage['reportType'] === 'Linear' ) {
+ if(responseDefPage['reportHeader'] !== undefined){
+ this.reportHeader = responseDefPage['reportHeader'];
+ }
+ if(responseDefPage['reportFooter'] !== undefined){
+ this.reportFooter = responseDefPage['reportFooter'];
+ }
+
+ }
+
if (responseDefPage['reportType'] !== 'Dashboard') {
if (this.calledWithFormFields == false) {
this._runService.getReportData(this.reportId)
@@ -249,7 +283,57 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
if (this.finalQueryParamsObj[ff.fieldId]) {
if (ff.validationType == 'DATE') {
const dateVal = this.finalQueryParamsObj[ff.fieldId];
+ dateVal.toString().replace(/%2F/g, '/')
this.formFieldListValueMap.set(ff.fieldId, new Date(dateVal.toString().replace(/%2F/g, '/')));
+ if (ff.rangeStartDate != null) {
+ if (ff.rangeStartDate != '')
+ this.minDate = this.getMinMaxDate(ff.rangeStartDate);
+ else {
+ this.minDate = '';
+ }
+ } else {
+ this.minDate = '';
+ }
+
+ if (ff.rangeEndDate != null) {
+ if (ff.rangeEndDate != '')
+ this.maxDate = this.getMinMaxDate(ff.rangeEndDate);
+ else {
+ this.maxDate = '';
+ }
+ } else {
+ this.maxDate = '';
+ }
+
+ if(this.minDate == '' && this.maxDate ==''){
+
+ if (ff.rangeStartDateSQL != null) {
+ if (ff.rangeStartDateSQL != '')
+ this.minDate = this.getMinMaxDate(ff.rangeStartDateSQL);
+ else {
+ this.minDate = '';
+ }
+ } else {
+ this.minDate = '';
+ }
+
+ if (ff.rangeEndDateSQL != null) {
+ if (ff.rangeEndDateSQL != '')
+ this.maxDate = this.getMinMaxDate(ff.rangeEndDateSQL);
+ else {
+ this.maxDate = '';
+ }
+ } else {
+ this.maxDate = '';
+ }
+
+
+ }
+ this.formFieldListValueMap.set(ff.fieldId+'_minDate', this.minDate);
+ this.formFieldListValueMap.set(ff.fieldId+'_maxDate', this.maxDate);
+
+
+
} else if (ff.fieldType == 'LIST_MULTI_SELECT') {
const multiSelectArray = [];
let multiVal = this.finalQueryParamsObj[ff.fieldId];
@@ -267,7 +351,34 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
multiSelectArray.push(multiVal);
}
this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
- } else {
+ } else if (ff.validationType == 'TIMESTAMP_SEC') {
+ const dateVal = this.finalQueryParamsObj[ff.fieldId];
+ const multiSelectArray = [];
+ multiSelectArray.push(new Date(dateVal.toString().replace(/%2F/g, '/')));
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Min']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Sec']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+
+ }
+ else if (ff.validationType == 'TIMESTAMP_MIN') {
+ const dateVal = this.finalQueryParamsObj[ff.fieldId];
+ const multiSelectArray = [];
+ multiSelectArray.push(new Date(dateVal.toString().replace(/%2F/g, '/')));
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Min']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+ }
+ else if (ff.validationType == 'TIMESTAMP_HOUR') {
+ const dateVal = this.finalQueryParamsObj[ff.fieldId];
+ const multiSelectArray = [];
+ multiSelectArray.push(new Date(dateVal.toString().replace(/%2F/g, '/')));
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+
+ }
+
+ else {
let multiVal = this.finalQueryParamsObj[ff.fieldId];
multiVal = multiVal.toString().replace(/%2F/g, '/');
multiVal = multiVal.toString().replace(/%20/g, ' ');
@@ -280,6 +391,29 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
if (ff.fieldType == 'LIST_MULTI_SELECT') {
const multiSelectArray = [];
this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+ } else if (ff.validationType == 'TIMESTAMP_SEC') {
+
+ const multiSelectArray = [];
+ multiSelectArray.push('');
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Min']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Sec']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+ }
+ else if (ff.validationType == 'TIMESTAMP_MIN') {
+
+ const multiSelectArray = [];
+ multiSelectArray.push('');
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Min']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+ }
+ else if (ff.validationType == 'TIMESTAMP_HOUR') {
+ const multiSelectArray = [];
+ multiSelectArray.push('');
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+
} else {
this.formFieldListValueMap.set(ff.fieldId, '');
}
@@ -399,7 +533,33 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
multiSelectArray.push(multiVal);
}
this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
- } else {
+ } else if (ff.validationType == 'TIMESTAMP_SEC') {
+ const dateVal = this.finalQueryParamsObj[ff.fieldId];
+ const multiSelectArray = [];
+ multiSelectArray.push(new Date(dateVal.toString().replace(/%2F/g, '/')));
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Min']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Sec']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+
+ }
+ else if (ff.validationType == 'TIMESTAMP_MIN') {
+ const dateVal = this.finalQueryParamsObj[ff.fieldId];
+ const multiSelectArray = [];
+ multiSelectArray.push(new Date(dateVal.toString().replace(/%2F/g, '/')));
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Min']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+ }
+ else if (ff.validationType == 'TIMESTAMP_HOUR') {
+ const dateVal = this.finalQueryParamsObj[ff.fieldId];
+ const multiSelectArray = [];
+ multiSelectArray.push(new Date(dateVal.toString().replace(/%2F/g, '/')));
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+
+ }
+ else {
let multiVal = this.finalQueryParamsObj[ff.fieldId];
multiVal = multiVal.toString().replace(/%2F/g, '/');
multiVal = multiVal.toString().replace(/%20/g, ' ');
@@ -416,6 +576,29 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
if (ff.fieldType == 'LIST_MULTI_SELECT') {
const multiSelectArray = [];
this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+ } else if (ff.validationType == 'TIMESTAMP_SEC') {
+
+ const multiSelectArray = [];
+ multiSelectArray.push('');
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Min']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Sec']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+ }
+ else if (ff.validationType == 'TIMESTAMP_MIN') {
+
+ const multiSelectArray = [];
+ multiSelectArray.push('');
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Min']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+ }
+ else if (ff.validationType == 'TIMESTAMP_HOUR') {
+ const multiSelectArray = [];
+ multiSelectArray.push('');
+ multiSelectArray.push(this.finalQueryParamsObj[ff.fieldId + '_Hr']);
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+
} else {
this.formFieldListValueMap.set(ff.fieldId, '');
}
@@ -652,6 +835,21 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
}
}
+ let orderSeqArray = [];
+ for (let ff = 0; ff < this.formFieldList.length; ff++) {
+ let val = this.formFieldList[ff]['setOrderBySeq'];
+ orderSeqArray.push(val);
+ }
+
+ if (!(orderSeqArray.includes(null) || orderSeqArray.length !== new Set(orderSeqArray).size)) {
+ this.toggleFormFieldRenderArr = this.toggleFormFieldRenderArr.sort(function (a, b) {
+ if ((a['setOrderBySeq']) === (b['setOrderBySeq'])) {
+ return a;
+ } else {
+ return (a['setOrderBySeq']) - (b['setOrderBySeq']);
+ }
+ });
+ }
}
if (this.firstRun) {
this.saveGroupSelectValue = this.groupSelectValue;
@@ -675,6 +873,13 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
}
}
+ getMinMaxDate(str: any){
+
+ let date = str;
+ let tempDate = new Date(date);
+ return date = new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate());
+ }
+
fetchAndPopulateFormFields(respObj: any, ffReportId: string) {
this._runService.getFormFieldGroupsData(ffReportId)
.subscribe((responseFormFieldGroups) => {
@@ -683,6 +888,22 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
this.formFieldGroupObjList = JSON.parse(responseFormFieldGroups['formFieldGroupsJSON']);
this.saveFormFieldGroups = JSON.parse(responseFormFieldGroups['formFieldGroupsJSON']);
this.formFieldList = respObj['formFieldList'];
+ let orderSeqArray = [];
+ for (let ff = 0; ff < this.formFieldList.length; ff++) {
+ let val = this.formFieldList[ff]['setOrderBySeq'];
+ orderSeqArray.push(val);
+ }
+
+ if (!(orderSeqArray.includes(null) || orderSeqArray.length !== new Set(orderSeqArray).size)) {
+ this.formFieldList = this.formFieldList.sort(function (a, b) {
+ if ((a['setOrderBySeq']) === (b['setOrderBySeq'])) {
+ return a;
+ } else {
+ return (a['setOrderBySeq']) - (b['setOrderBySeq']);
+ }
+ });
+ }
+
if (this.formFieldList.length === 1 && this.formFieldList[0]['visible'] === false) {
this.showRunButton = false;
} else if (this.formFieldList.length > 0) {
@@ -733,7 +954,7 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
for (let i = 0; i < this.formFieldList.length; i++) {
const formFieldObj = this.formFieldList[i];
if (formFieldObj['formFieldValues'] != null && this.calledWithFormFields != true) {
- if ((formFieldObj['validationType'] == 'DATE' && formFieldObj['formFieldValues'].length > 0) || formFieldObj['validationType'] == 'TIMESTAMP_SEC' || formFieldObj['validationType'] == 'TIMESTAMP_MIN' || formFieldObj['validationType'] == 'TIMESTAMP_HOUR') {
+ if (formFieldObj['validationType'] == 'DATE' || formFieldObj['validationType'] == 'TIMESTAMP_SEC' || formFieldObj['validationType'] == 'TIMESTAMP_MIN' || formFieldObj['validationType'] == 'TIMESTAMP_HOUR') {
if (formFieldObj['validationType'] == 'TIMESTAMP_SEC') {
const multiSelectArray = [];
@@ -785,8 +1006,58 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
}
}
else{
+ if(formFieldObj['formFieldValues'].length > 0){
const date = formFieldObj['formFieldValues'][0]['id'];
this.formFieldListValueMap.set(formFieldObj['fieldId'], new Date(date));
+ }else{
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], '');
+ }
+ if (formFieldObj['rangeStartDate'] != null) {
+ if (formFieldObj['rangeStartDate'] != '')
+ this.minDate = this.getMinMaxDate(formFieldObj['rangeStartDate']);
+ else {
+ this.minDate = '';
+ }
+ } else {
+ this.minDate = '';
+ }
+
+ if (formFieldObj['rangeEndDate'] != null) {
+ if (formFieldObj['rangeEndDate'] != '')
+ this.maxDate = this.getMinMaxDate(formFieldObj['rangeEndDate']);
+ else {
+ this.maxDate = '';
+ }
+ } else {
+ this.maxDate = '';
+ }
+
+ if(this.minDate == '' && this.maxDate ==''){
+
+ if (formFieldObj['rangeStartDateSQL'] != null) {
+ if (formFieldObj['rangeStartDateSQL'] != '')
+ this.minDate = this.getMinMaxDate(formFieldObj['rangeStartDateSQL']);
+ else {
+ this.minDate = '';
+ }
+ } else {
+ this.minDate = '';
+ }
+
+ if (formFieldObj['rangeEndDateSQL'] != null) {
+ if (formFieldObj['rangeEndDateSQL'] != '')
+ this.maxDate = this.getMinMaxDate(formFieldObj['rangeEndDateSQL']);
+ else {
+ this.maxDate = '';
+ }
+ } else {
+ this.maxDate = '';
+ }
+
+
+ }
+ this.formFieldListValueMap.set(formFieldObj['fieldId']+'_minDate', this.minDate);
+ this.formFieldListValueMap.set(formFieldObj['fieldId']+'_maxDate', this.maxDate);
}
} else if (formFieldObj['fieldType'] == 'LIST_BOX' && formFieldObj['formFieldValues'].length > 0) {
let isAdded = false;
@@ -943,6 +1214,7 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
}
editReport(reportId: string) {
+ this.httpCacheService.clearCache();
this._router.navigate(['v2/app/reports', 'Edit', reportId]);
}
@@ -1003,12 +1275,18 @@ export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
getTime(){
for(let i=0; i<=59; i++){
+ if(i<=9){
+ this.timeStampArray.push('0'+i)
+ }else
this.timeStampArray.push(i);
}
}
getHours(){
for(let i=0; i<=23; i++){
+ if(i<=9){
+ this.hoursArray.push('0'+i)
+ }else
this.hoursArray.push(i);
}
}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.html
new file mode 100644
index 00000000..c237166f
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.html
@@ -0,0 +1,98 @@
+<span *ngIf="showSpinner" class="ecomp-spinner"></span>
+<div *ngIf="!showChart">
+ <div class="field-group">
+
+ <div class="filter-div" >
+ <mat-form-field><input (keyup)="applyFilter($event.target.value)" matInput placeholder="Filter Report Data">
+ </mat-form-field>
+ </div>
+ <div class="download-div" >
+ <span *ngIf="download_in_progress" class="ecomp-small-spinner"></span>
+ <span class="download-title"> Download:</span>
+ <a [routerLink]=""><img class="downloadImg" (click)="downloadReport('application/vnd.ms-excel', 'xls')" placement="top" ngbTooltip="Download Upto 65,000"
+ src="assets/images/xlsx.png"></a>&nbsp;
+ </div>
+ <div class="pagination-div">
+ <mat-paginator [pageSizeOptions]="pageSize" showFirstLastButtons></mat-paginator>
+ </div>
+ </div>
+ <div class="app-data-table">
+ <div class="app-data-table-fixed-height">
+ <div class="example-container">
+ <table [dataSource]="dataSource" mat-table>
+ <div *ngFor="let keys of displayedColumns; let i = index">
+ <ng-container matColumnDef="{{keys}}">
+ <th *matHeaderCellDef mat-header-cell>{{displayedColumns[i]}}</th>
+ <td *matCellDef="let row" mat-cell [ngStyle]="setStyle(row[keys])">
+ <div *ngIf="row[keys].split('|')[0] == 'linkToReport'"
+ [ngStyle]="setStyle(row[keys].split('|')[4])">
+ <a (click)="linkToReport(row[keys].split('|')[1], row[keys].split('|')[2])"
+ [routerLink]="">{{row[keys].split('|')[3]}}</a>
+ </div>
+ <div *ngIf="row[keys].split('|')[0] == 'linkToFeedback'"
+ [ngStyle]="setStyle(row[keys].split('|')[4])">
+ <a (click)="linkToFeedback(row[keys].split('|')[1], row[keys].split('|')[2])"
+ [routerLink]="">{{row[keys].split('|')[3]}}</a>
+ </div>
+ <div *ngIf="row[keys].split('|')[0] == 'linkToMail'"
+ [ngStyle]="setStyle(row[keys].split('|')[3])">
+ <a (click)="linkToMail(row[keys].split('|')[1])"
+ [routerLink]="">{{row[keys].split('|')[2]}}</a>
+ </div>
+ <div *ngIf="row[keys].split('|')[0] == 'linkToMap'">
+ <a (click)="linkToMap(row[keys].split('|')[1])"
+ [routerLink]="">{{row[keys].split('|')[2]}}</a>
+ </div>
+ <div *ngIf="row[keys].split('|')[0] !== 'linkToReport' && row[keys].split('|')[0] !== 'linkToFeedback' && row[keys].split('|')[0] !== 'linkToMail'
+ && row[keys].split('|')[0] !== 'clickToDelete' && row[keys].split('|')[0] !== 'clickToResubmit'
+ && row[keys].split('|')[0] !== 'linkToMap'
+ && row[keys].split('|')[0] !== 'clickToDownload' && row[keys].split('|')[0]!== 'clickToCheckBox' && row[keys].split('|')[0]!== 'isComment'
+ && row[keys].split('|')[0]!== 'isImage' && row[keys].split('|')[0]!== 'isApproval' && row[keys].split('|')[0] != 'clickToRevert'">{{row[keys].split('|')[0]}}&nbsp;</div>
+ </td>
+ <td *matFooterCellDef align="center"
+ mat-footer-cell>{{getDisplayTotal(keys)}}</td>
+ </ng-container>
+ </div>
+
+ <tr *matHeaderRowDef="displayedColumns; sticky: true;"
+ mat-header-row></tr>
+ <tr *matRowDef="let row; columns: displayedColumns;" mat-row></tr>
+ <tr *matFooterRowDef="displayedColumns; sticky: true;" mat-footer-row></tr>
+ </table>
+ </div>
+ </div>
+ </div>
+</div>
+<div *ngIf="showChart" align="center">
+ <iframe #iframe height="550px" style="border: none" width="100%"></iframe>
+</div>
+
+<style scoped>
+ :host ::ng-deep .mat-paginator-outer-container .mat-paginator-container{
+ min-height: 30px;
+ height: 30px;
+ }
+
+ :host ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-label {
+ font-size: 14px;
+ }
+
+ :host ::ng-deep .mat-paginator, .mat-paginator-page-size .mat-select-trigger {
+ font-size: 14px;
+ }
+
+ :host ::ng-deep .mat-sort-header-arrow.ng-trigger.ng-trigger-arrowPosition {
+ color: black;
+ opacity: 0;
+ }
+
+ :host ::ng-deep .mat-sort-header-pointer-left.ng-trigger.ng-trigger-leftPointer {
+ transform: rotate(-45deg);
+ color: black;
+ }
+ :host ::ng-deep .mat-sort-header-pointer-right.ng-trigger.ng-trigger-rightPointer {
+ transform: rotate(45deg);
+ color: black;
+ }
+
+</style>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.scss b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.scss
new file mode 100644
index 00000000..525b57ee
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.scss
@@ -0,0 +1,1398 @@
+.approval-img{
+ height:25px;
+ width:25px
+}
+.submit-approval-btn{
+ display: flex;
+ margin-top: 5px;
+}
+.submit-approval-check-box{
+ margin-top: 10px;
+}
+
+.submit-rejection-btn{
+ display: flex;
+ margin-top: 5px;
+}
+.submit-rejection-check-box{
+ margin-top: 20px;
+}
+.checkbox-reject{
+ margin-left: 10px;
+ margin-right: 4px;
+ margin-top: 4px;
+}
+.gridster-item-content{
+ overflow-y: scroll;
+ overflow-x: scroll;
+ overflow: scroll;
+}
+
+.lds-ring {
+ display: inline-block;
+ position: relative;
+ width: 64px;
+ height: 64px;
+}
+.lds-ring div {
+ box-sizing: border-box;
+ display: block;
+ position: absolute;
+ width: 35px;
+ height: 35px;
+ margin: 6px;
+ margin-top: 40px;
+ border: 6px solid #006496;
+ border-radius: 80%;
+ animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
+ border-color: #006496 transparent transparent transparent;
+}
+.lds-ring div:nth-child(1) {
+ animation-delay: -0.45s;
+}
+.lds-ring div:nth-child(2) {
+ animation-delay: -0.3s;
+}
+.lds-ring div:nth-child(3) {
+ animation-delay: -0.15s;
+}
+@keyframes lds-ring {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+.btn-auto-upload{
+ font-size: 15px;
+ margin-bottom: 5px;
+ margin-left:250px;
+}
+
+.div-auto-upload{
+ display: contents;
+}
+mat-icon{
+ color: #006496;
+ cursor: pointer;
+}
+.mat-icon-delete{
+ color: #006496;
+ cursor: pointer;
+}
+
+
+button,
+input,
+select,
+textarea {
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle; }
+
+
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ appearance: button;
+ cursor: pointer; }
+
+
+.defaultFontSize1{
+ font-size: 16px;
+}
+
+.defaultFontSize{
+ font-size: 15px;
+}
+.boxMargin{
+
+ width: auto;
+}
+
+td.mat-cell{
+ padding-left: 3px;
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ border-right: 1px solid #999;
+ border-left: 1px solid #999;
+}
+
+mat-button-toggle{
+ display: block;
+ width: 400px;
+ border-radius: 5px;
+}
+
+
+.tab-content{
+ margin-right: 20px;
+ color: rgb(0, 0, 0);
+}
+
+.stdForm{
+ margin-left: 20px;
+}
+
+.field-group {
+ position: relative;
+ display: block;
+}
+
+
+input {
+ width: 400px;
+ height: 35px;
+}
+
+label + .field-group, label + .input-append, label + .row, label + .row-nowrap, label + .form-row {
+ margin-top: 5px;
+}
+
+
+.checkbox .skin {
+ background-color: #fff;
+ border: 1px solid #d2d2d2;
+ border-radius: 3px;
+ display: inline-block;
+ height: 24px;
+ width: 24px;
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+.pla-img{
+ cursor: pointer;
+}
+
+
+label,
+select,
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"],
+input[type="radio"],
+input[type="checkbox"] {
+ cursor: pointer; }
+
+label,
+select,
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"],
+input[type="radio"],
+input[type="checkbox"] {
+ cursor: pointer; }
+
+input[type=search] {
+ -webkit-appearance: textfield; }
+
+input[type=search]:-webkit-search-cancel-button,
+input[type=search]:-webkit-search-decoration {
+ -webkit-appearance: none; }
+
+
+
+[class*="icon-primary-"],
+.nav-links a:after,
+.bellyband-link a:after,
+.breadcrumb > li:after,
+.checkbox input:checked + .skin:after,
+.checkbox input.indeterminate + .skin:after,
+.checkbox input:indeterminate + .skin:after,
+.selectWrap.large:before,
+.form-row.error .error-msg:before,
+.close:before,
+.reset-field:before,
+.cssIcon-globe:before,
+.selectWrap:after {
+ color: #0568ae;
+ left: 6px;
+ top: -3px;
+ width: 2px;
+ height: 3px;
+ border: solid white;
+ border-width: 0 3px 3px 0;
+ -webkit-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ transform: rotate(45deg);}
+
+[class*="icoWeather-"], [class*="icoTrans-"], [class*="icoBubble-"], [class*="icoRetail-"], [class*="icoPeople-"], [class*="icoNumslets-"], [class*="icoLocation-"], [class*="icoHealthcare-"], [class*="icoDocuments-"], [class*="icoDevices-"], [class*="icoDatanetwork-"], [class*="icoControls-"], [class*="icoBuilding-"], [class*="icoArrows-"] {
+ color: #0568ae;
+ display: inline-block;
+ font-style: normal;
+ font-size: 20px;
+ font-weight: normal;
+ font-variant: normal;
+ font-style: normal;
+ width: 20px;
+ text-transform: none;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ speak: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ vertical-align: middle; }
+
+[class*="icon-primary-"]:before,
+[class*="icon-primary-"]:after {
+ box-sizing: border-box;
+ display: inline-block;
+ font-size: 1em;
+ height: 1em;
+ position: relative;
+ top: 0;
+ left: 0;
+ vertical-align: middle;
+ width: 1em; }
+
+
+.checkbox {
+ position: relative;
+ min-height: 24px;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ font-size: 1rem;
+}
+.checkbox input {
+ -webkit-tap-highlight-color: transparent;
+ height: 20px;
+ margin-left: 20px;
+ opacity: 0;
+ outline: none;
+ position: absolute;
+ left: 1px;
+ top: 1px;
+ width: 10px; }
+.checkbox input:focus + .skin {
+ border-color: #0568ae; }
+.checkbox input:focus + .skin:before {
+ content: "";
+ height: 34px;
+ left: -6px;
+ top: -6px;
+ outline: 1px dotted #000000;
+ position: absolute;
+ width: 34px; }
+.checkbox input:checked:not(:disabled) + .skin {
+ background-color: #0568ae;
+ border-color: #0568ae; }
+.checkbox input:checked:disabled + .skin:after {
+ color: #5A5A5A; }
+.checkbox input:checked + .skin:after {
+ height: 20px;
+ width: 10px;
+ background-color: transparent;
+ font-size: 23.4px;
+ color: #FFFFFF;
+ line-height: 21px; }
+.checkbox input:disabled + .skin {
+ cursor: not-allowed;
+ background-color: #d2d2d2;
+ border-color: #d2d2d2;
+ color: #666666; }
+.checkbox input:disabled + .skin + span {
+ cursor: not-allowed;
+ color: #666666; }
+.checkbox input:invalid + .skin {
+ border: solid 1px #cf2a2a; }
+.checkbox input:indeterminate + .skin:after {
+ background-color: transparent;
+ font-size: 25px;
+ color: #0574ac;
+ content: "\e920"; }
+.checkbox .skin {
+ background-color: #fff;
+ border: 1px solid #d2d2d2;
+ border-radius: 3px;
+ display: inline-block;
+ height: 24px;
+ width: 24px;
+ position: absolute;
+ left: 0;
+ top: 0; }
+.checkbox span {
+ display: inline-block;
+ margin-left: 34px;
+ margin-top: 0;
+ position: relative;
+ top: 3px; }
+.checkbox label {
+ font-size: 1.6rem;
+ font-family: "Omnes-ECOMP-W02", Arial; }
+.checkbox input {
+ z-index: 9999; }
+.checkbox input.indeterminate + .skin:after {
+ font-size: 22px;
+ color: #0568ae; }
+.b2b-tree-checkbox a > span.nodeIcon.end {
+ margin-top: 10px; }
+.b2b-tree-checkbox a:only-child {
+ color: #0574ac; }
+.b2b-tree-checkbox a:only-child > span.nodeIcon {
+ left: -11px;
+ border-radius: 50%;
+ line-height: 7px;
+ top: 0; }
+.b2b-tree-checkbox a:only-child > span.nodeIcon > i {
+ background-color: inherit;
+ background: #fff; }
+.b2b-tree-checkbox a > span.nodeIcon > i.icon-primary-circle {
+ background-color: inherit;
+ background: #fff;
+ font-size: 5px; }
+.b2b-tree-checkbox ul li:first-child > a:only-child > span {
+ left: -11px;
+ border-radius: 50%;
+ line-height: 12px;
+ top: 0px; }
+.b2b-tree-checkbox ul li:first-child > a:only-child > span.end {
+ margin-top: 0px; }
+.b2b-tree-checkbox ul li:first-child > a:only-child > span i.icon-primary-circle {
+ top: 8px; }
+.b2b-tree-checkbox ul li:last-child > a:only-child > span {
+ height: 34px;
+ background-color: #fff; }
+.b2b-tree-checkbox li a + ul {
+ height: 0;
+ overflow: hidden; }
+.b2b-tree-checkbox li a.active + ul {
+ height: auto; }
+.b2b-tree-checkbox li a.grp {
+ font-family: "Omnes-ECOMP-W02-Italic", Arial; }
+.b2b-tree-checkbox span.end {
+ left: -6px !important; }
+.b2b-tree-checkbox .checkbox {
+ margin-bottom: 0px;
+ margin-top: 2px;
+ font-size: 14px; }
+.b2b-tree-checkbox .checkbox input:indeterminate + .skin:after {
+ content: "\2014";
+ padding-left: 2px;
+ font-family: inherit !important;
+ line-height: inherit !important; }
+
+.b2b-pane-selector-wrapper .pane-container .panes div.pane-block .form-row .checkbox-selectall {
+ margin: 0px 0 0 24px !important; }
+
+.filter-container .checkbox .icon-primary-spinner {
+ height: 24px;
+ position: absolute;
+ width: 24px; }
+
+
+textarea {
+ display: block;
+ width: 400px;
+ max-width: 50%;
+ padding: 15px;
+}
+select {
+ margin-right: -1;
+ max-width: 400px;
+ height: 36px;
+ line-height: 25px;
+ width: 400px;
+ background-color: #95959521; }
+
+.selectWrap.disabled .icon-primary-down {
+ color: #d6d6d6; }
+
+.selectWrap.disabled input.awd-select {
+ z-index: 0;
+ padding: 10px 45px 10px 15px;
+ text-indent: 0; }
+
+.selectWrap.disabled button.awd-select {
+ z-index: 0;
+ text-indent: 15px; }
+
+.selectWrap.disabled:after {
+ color: #5A5A5A;
+ cursor: not-allowed; }
+
+input.awd-select {
+ background-color: transparent;
+ border: 1px solid #d2d2d2;
+ border-radius: 6px;
+ box-shadow: 1px 5px 2px -5px rgba(0, 0, 0, 0.15);
+ color: #333333;
+ display: block;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ height: 36px;
+ line-height: 0;
+ margin-bottom: 0;
+ position: relative;
+ text-align: left;
+ top: 0;
+ width: 100%;
+ z-index: 10;
+ padding: 12px 45px 8px 15px;
+ user-select: none; }
+input.awd-select:focus {
+ border-color: #0568ae !important;
+ text-overflow: ellipsis;
+ padding-right: 45px; }
+
+button.awd-select {
+ background-color: transparent;
+ border: 1px solid #d2d2d2;
+ border-radius: 6px;
+ box-shadow: 1px 5px 2px -5px rgba(0, 0, 0, 0.15);
+ color: #333333;
+ display: block;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ height: 36px;
+ line-height: 36px;
+ margin-bottom: 0;
+ position: relative;
+ text-align: left;
+ top: 0;
+ width: 100%;
+ z-index: 10; }
+button.awd-select:not(.large) {
+ text-indent: 15px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: clip;
+ text-overflow: ellipsis; }
+button.awd-select img {
+ height: 26px;
+ margin-right: 7px;
+ margin-top: -10px;
+ position: relative;
+ top: 2px;
+ vertical-align: text-bottom; }
+button.awd-select:focus {
+ border-color: #0568ae !important; }
+button.awd-select i {
+ font-size: 23px;
+ position: absolute;
+ right: 33px;
+ top: 5px;
+ z-index: 1000; }
+
+button.awd-select.large {
+ align-items: center;
+ display: flex;
+ height: 60px;
+ line-height: 20px;
+ overflow: hidden;
+ padding-left: 70px;
+ vertical-align: middle; }
+button.awd-select.large img {
+ height: 40px;
+ left: 20px;
+ position: absolute;
+ top: 20px;
+ width: 40px; }
+
+.selectWrap.large {
+ height: 60px; }
+.selectWrap.large .awd-select-list-item {
+ align-items: center;
+ display: flex;
+ height: 60px;
+ line-height: 20px;
+ overflow: hidden;
+ padding-left: 70px;
+ vertical-align: middle; }
+.selectWrap.large .awd-select-list-item img {
+ height: 40px;
+ left: 20px;
+ position: absolute;
+ top: 20px;
+ width: 40px;
+ top: 10px; }
+
+.inputWrap {
+ border-radius: 6px;
+ position: relative;
+ height: 36px;
+ line-height: 44px;
+ display: block;
+ margin: 0;
+}
+
+button.awd-select.active {
+ border-radius: 6px 6px 0 0; }
+button.awd-select.active:focus {
+ border-color: #d2d2d2 !important; }
+
+input.awd-select.active {
+ border-radius: 6px 6px 0 0; }
+input.awd-select.active:focus {
+ border-color: #d2d2d2 !important; }
+
+.selectWrapper {
+ position: relative; }
+
+span.selectWrap input[readonly]:focus {
+ color: transparent;
+ text-shadow: 0 0 0 #000; }
+
+.isIE.ds2-no-colors .awd-select:focus {
+ outline: 1px dashed transparent; }
+
+.awd-select-list {
+ box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.15);
+ border-radius: 0 0 6px 6px;
+ position: absolute;
+ border: 1px solid #d2d2d2;
+ border-top: 0;
+ padding: 0;
+ background-color: #f2f2f2;
+ z-index: 1000;
+ width: 100%;
+ max-height: 320px;
+ overflow-y: auto; }
+
+.awd-select-list-item {
+ cursor: pointer;
+ height: 100%;
+ min-height: 36px;
+ line-height: 20px;
+ overflow: hidden;
+ padding: 8px 15px;
+ position: relative;
+ z-index: 1000; }
+.awd-select-list-item:hover {
+ cursor: pointer;
+ background-color: #d2d2d2;
+ outline: 1px dashed transparent; }
+.awd-select-list-item:focus {
+ cursor: pointer;
+ background-color: #d2d2d2;
+ outline: 1px dashed transparent; }
+.awd-select-list-item img {
+ margin-top: 0;
+ margin-right: 7px;
+ height: 26px;
+ width: 26px; }
+
+.selectWrap {
+ border-radius: 6px;
+ position: relative;
+ height: 36px;
+ line-height: 28px;
+ display: block;
+ margin: 0;
+ background: linear-gradient(to bottom, #fcfcfc 0%, #f2f2f2 100%);
+ background: -webkit-linear-gradient(top, #fcfcfc 0%, #f2f2f2 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="@att-gray-highlight", endColorstr="@att-functional-bg-gray", GradientType=0); }
+.selectWrap:not(.large) .awd-select-list-item:first-child {
+ margin-top: 15px; }
+.selectWrap:not(.large) .awd-select-list-item:last-child {
+ margin-bottom: 15px; }
+.selectWrap .icon-primary-down {
+ font-size: 23px;
+ margin-top: -11px;
+ position: absolute;
+ right: 4px;
+ top: 50%; }
+.selectWrap + [aria-expanded="true"] {
+ padding-bottom: 9px;
+ padding-top: 20px; }
+
+.awd-select-list-item[data-hover="true"] {
+ background-color: #d2d2d2; }
+
+span input.awd-select {
+ width: 100%;
+ cursor: pointer;
+ text-overflow: ellipsis;
+ padding-right: 45px; }
+
+li.optgroup-wrapper {
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+ cursor: default !important;
+ padding: 0px 15px; }
+li.optgroup-wrapper:first-child {
+ padding-top: 10px; }
+li.optgroup-wrapper:hover {
+ background-color: #f2f2f2; }
+
+ul.optgroup {
+ font-family: "Omnes-ECOMP-W02", Arial;
+ cursor: pointer !important;
+ margin: 0 -15px; }
+ul.optgroup li {
+ padding: 0 0 0 33px; }
+
+label + .selectWrap {
+ margin-top: 4px; }
+
+.selectorModule {
+ border-radius: 6px;
+ position: relative;
+ height: 36px;
+ line-height: 28px;
+ display: block;
+ margin: 0;
+ background: linear-gradient(to bottom, #fcfcfc 0%, #f2f2f2 100%);
+ background: -webkit-linear-gradient(top, #fcfcfc 0%, #f2f2f2 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="@att-gray-highlight", endColorstr="@att-functional-bg-gray", GradientType=0); }
+
+.group .selectWrap {
+ margin: 0 0 10px 0; }
+
+select.awd-select {
+ position: relative;
+ top: 0;
+ left: 0;
+ font-size: 16px;
+ z-index: 1010;
+ height: 33px;
+ min-width: 100%;
+ opacity: 0.01; }
+select.awd-select > optgroup {
+ padding-left: 8px;
+ font-style: normal;
+ margin-top: 10px; }
+select.awd-select > optgroup:first-child {
+ margin-top: 0; }
+select.awd-select > optgroup > option {
+ padding-left: 8px; }
+select.awd-select > option {
+ padding-left: 8px; }
+select.awd-select + span {
+ background: linear-gradient(to bottom, #fcfcfc 0%, #f2f2f2 100%);
+ background: -webkit-linear-gradient(top, #fcfcfc 0%, #f2f2f2 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="@att-gray-highlight", endColorstr="@att-functional-bg-gray", GradientType=0);
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 0;
+ display: block;
+ border: 1px solid #d2d2d2;
+ border-radius: 6px;
+ height: 35px;
+ line-height: 0;
+ padding: 18px 45px 15px 15px;
+ width: 100%;
+ font-size: 1.6rem;
+ padding-right: 45px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+select.awd-select + span > i {
+ font-size: 23px;
+ position: absolute;
+ right: 33px;
+ top: 5px;
+ z-index: 1000; }
+select.awd-select + span > i:before {
+ left: 1px;
+ position: absolute;
+ top: -1px; }
+select.awd-select:focus + span {
+ border-color: #0568ae; }
+
+.isIE select.awd-select + span {
+ line-height: 1; }
+
+[data-default-option="true"] {
+ color: #767676 !important;
+ font-family: "Omnes-ECOMP-W02-Italic", Arial; }
+
+.placeholdercolor {
+ color: #767676 !important;
+ font-family: "Omnes-ECOMP-W02-Italic", Arial; }
+
+.filterTank button.awd-select {
+ border-color: #d2d2d2;
+ background-color: #333333;
+ color: #FFFFFF;
+ color: #333333; }
+.filterTank button.awd-select:after {
+ background-color: #FFFFFF !important;
+ border-color: #d2d2d2; }
+
+.utility-bg button.awd-select {
+ border-color: #d2d2d2;
+ background-color: #333333;
+ color: #FFFFFF;
+ color: #333333; }
+.utility-bg button.awd-select:after {
+ background-color: #FFFFFF !important;
+ border-color: #d2d2d2; }
+
+.utility-bg select.awd-select + span {
+ border-color: #d2d2d2;
+ border-color: #d2d2d2;
+ background-color: #333333;
+ background-color: #333333;
+ color: #FFFFFF;
+ color: #FFFFFF; }
+.utility-bg select.awd-select + span:after {
+ background-color: #FFFFFF !important;
+ background-color: #FFFFFF !important;
+ border-color: #d2d2d2;
+ border-color: #d2d2d2; }
+
+.utility-bg select.awd-select:focus + span {
+ border-color: #d2d2d2;
+ border-color: #d2d2d2;
+ background-color: #333333;
+ background-color: #333333;
+ color: #FFFFFF;
+ color: #FFFFFF; }
+.utility-bg select.awd-select:focus + span:after {
+ background-color: #FFFFFF !important;
+ background-color: #FFFFFF !important;
+ border-color: #d2d2d2;
+ border-color: #d2d2d2; }
+
+.utility-bg select.awd-select:hover + span {
+ border-color: #d2d2d2;
+ border-color: #d2d2d2;
+ background-color: #333333;
+ background-color: #333333;
+ color: #FFFFFF;
+ color: #FFFFFF; }
+.utility-bg select.awd-select:hover + span:after {
+ background-color: #FFFFFF !important;
+ background-color: #FFFFFF !important;
+ border-color: #d2d2d2;
+ border-color: #d2d2d2; }
+
+input.awd-select[disabled] {
+ cursor: not-allowed;
+ border-color: #d2d2d2;
+ background-color: #d2d2d2;
+ background-image: none;
+ color: #5A5A5A; }
+input.awd-select[disabled] + span {
+ cursor: not-allowed;
+ border-color: #d2d2d2;
+ background-color: #d2d2d2;
+ background-image: none;
+ color: #5A5A5A; }
+
+button.awd-select[disabled] {
+ cursor: not-allowed;
+ border-color: #d2d2d2;
+ background-color: #d2d2d2;
+ background-image: none;
+ color: #5A5A5A; }
+button.awd-select[disabled]:after {
+ background-color: #d2d2d2 !important;
+ border-color: #d2d2d2; }
+
+select.awd-select[disabled] + span {
+ cursor: not-allowed;
+ border-color: #d2d2d2;
+ background-color: #d2d2d2;
+ background-image: none;
+ color: #5A5A5A; }
+select.awd-select[disabled] + span:after {
+ background-color: #d2d2d2 !important;
+ border-color: #d2d2d2; }
+
+select.awd-select[disabled]:focus + span {
+ cursor: not-allowed;
+ border-color: #d2d2d2;
+ background-color: #d2d2d2;
+ background-image: none;
+ color: #5A5A5A; }
+
+select.awd-select[disabled]:hover + span {
+ cursor: not-allowed;
+ border-color: #d2d2d2;
+ background-color: #d2d2d2;
+ background-image: none;
+ color: #5A5A5A; }
+
+input.awd-select[disabled="disabled"] {
+ cursor: not-allowed;
+ border-color: #d2d2d2;
+ background-color: #d2d2d2;
+ background-image: none;
+ color: #5A5A5A; }
+input.awd-select[disabled="disabled"] + span {
+ cursor: not-allowed;
+ border-color: #d2d2d2;
+ background-color: #d2d2d2;
+ background-image: none;
+ color: #5A5A5A; }
+
+select.awd-select[disabled="disabled"] + span {
+ cursor: not-allowed;
+ border-color: #d2d2d2;
+ background-color: #d2d2d2;
+ background-image: none;
+ color: #5A5A5A; }
+select.awd-select[disabled="disabled"] + span:after {
+ background-color: #d2d2d2 !important;
+ border-color: #d2d2d2; }
+
+select.awd-select[disabled="disabled"]:focus + span {
+ cursor: not-allowed;
+ border-color: #d2d2d2;
+ background-color: #d2d2d2;
+ background-image: none;
+ color: #5A5A5A; }
+select.awd-select[disabled="disabled"]:focus + span:after {
+ background-color: #d2d2d2 !important;
+ border-color: #d2d2d2; }
+
+select.awd-select[disabled="disabled"]:hover + span {
+ cursor: not-allowed;
+ border-color: #d2d2d2;
+ background-color: #d2d2d2;
+ background-image: none;
+ color: #5A5A5A; }
+select.awd-select[disabled="disabled"]:hover + span:after {
+ background-color: #d2d2d2 !important;
+ border-color: #d2d2d2; }
+
+.ddexpand-wrapper > h2 {
+ margin-bottom: 11px; }
+.ddexpand-wrapper > h2 + p {
+ margin-bottom: 4px; }
+
+.ddexpand-wrapper .selectWrap + [aria-expanded="true"] .form-row {
+ margin-top: 11px; }
+
+.ddexpand-wrapper .selectWrap + [aria-expanded="true"] .row + .row .form-row {
+ margin-top: 14px; }
+
+.modal .awd-select-list {
+ z-index: 1060 !important; }
+
+.form-row.error button.awd-select.active:focus {
+ border-color: #cf2a2a !important; }
+
+.form-row.error input.awd-select.active:focus {
+ border-color: #cf2a2a !important; }
+
+.awd-module-list .module-list-item[aria-selected="true"] {
+ background-color: #f2f2f2; }
+
+li.module-list-item[aria-selected="true"]:before {
+ color: #0568ae;
+ display: inline-block;
+ font-family: "icoControls" !important;
+ font-style: normal;
+ font-size: 20px;
+ font-weight: normal;
+ font-variant: normal;
+ height: 1em;
+ margin-right: 7px;
+ text-transform: none;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ speak: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ vertical-align: middle;
+ width: 1em;
+ content: "\e907";
+ box-sizing: border-box;
+ display: inline-block;
+ font-size: 2em;
+ height: 1em;
+ position: absolute;
+ top: 20px;
+ right: 0px;
+ vertical-align: middle;
+ width: 1em;
+ color: #007a3e; }
+
+@media (min-width: 768px) {
+ span[class*="large"] {
+ max-width: 370px; }
+ .large {
+ max-width: 370px; } }
+
+@media (max-width: 767px) {
+ .selectWrap.large:after {
+ right: 5px; }
+ .selectWrap.large .awd-select-list-item {
+ padding-right: 41px; }
+ .selectWrap + div > h4 {
+ margin-bottom: 0;
+ font-size: 16px; } }
+input.awd-select {
+ -webkit-user-select: text;
+ -moz-user-select: text;
+ -ms-user-select: text;
+ user-select: text; }
+
+.checkbox .skin {
+ background-color: #fff;
+ border: 1px solid #d2d2d2;
+ border-radius: 3px;
+ display: inline-block;
+ height: 24px;
+ width: 24px;
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+
+i, em {
+ font-family: "Omnes-ECOMP-W02-Italic", Arial;
+ font-style: normal;
+}
+
+
+
+.card{
+ border-radius: 5px;
+}
+
+.card-header{
+ height: 50px;
+}
+
+.card-body{
+ height: 150px;
+}
+
+.card-footer{
+ height: 50px;
+}
+
+.dialog__close-btn {
+ border: 0;
+ background: #087ac2;
+ color: #ffffff;
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ font-size: 1.2em;
+ display: block;
+ border: #087ac2 2px solid;
+}
+
+.modalTitle{
+ font-size: 35px;
+}
+
+
+.full-width-table {
+ width: 100%;
+}
+
+
+.app-data-table {
+ margin-top: 35px;
+}
+
+.app-data-table-fixed-height {
+ overflow: scroll;
+ width: 100%;
+ max-height: 750px;
+}
+
+th{
+ background-color: #2125299c;
+ color: rgb(255, 255, 255);
+ font-size: 15px;
+ border-radius: 2px;
+ height: 35px;
+}
+
+tr:nth-child(even) {
+ background-color: #dddddd;
+ font-size: 2px;
+ height: 35px;
+ border-radius: 4px;
+
+}
+
+tr:nth-child(odd) {
+ font-size: 2px;
+ height: 35px;
+ border-radius: 4px;
+}
+
+
+.card{
+ border-radius: 10px;
+
+}
+
+.card-header{
+ height: 80px;
+}
+
+.card-body{
+ height: 150px;
+}
+
+.card-footer{
+ height: 55px;
+ margin-right: 10px;
+}
+
+.dialog__close-btn {
+ border: 0;
+ background: #087ac2;
+ color: #ffffff;
+ position: absolute;
+ top: 12px;
+ right: 12px;
+ font-size: 1em;
+ display: block;
+ border: #087ac2 2px solid;
+}
+
+.modalTitle{
+ font-size: 35px;
+}
+
+label {
+ float: left;
+ width: 24em;
+ margin-right: 2em;
+ text-align: right;
+}
+
+
+.btn-alt {
+ border-color: #087ac2 transparent #0568ae;
+ background-color: #0568ae;
+ background: linear-gradient(to bottom, #087ac2 0%, #0568ae 100%);
+ color: #ffffff; }
+.btn-alt:hover {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #0568ae 0%, #087ac2 100%); }
+.btn-alt:focus {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #0568ae 0%, #087ac2 100%); }
+.btn-alt:active {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #0568ae 0%, #087ac2 100%); }
+
+
+a.btn {
+ vertical-align: middle; }
+a.btn:hover {
+ text-decoration: none; }
+
+.field-group + .btn {
+ margin-left: 20px; }
+
+.btn-primary {
+ border-color: #ea7400 transparent #d16500;
+ background-color: #ea7400 transparent #d16500;
+ background: linear-gradient(to bottom, #ea7400 0%, #d16500 100%);
+ color: #ffffff;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ font-weight: bold; }
+.btn-primary:hover {
+ text-decoration: none;
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #d16500 0%, #ea7400 100%); }
+.btn-primary:focus {
+ text-decoration: none;
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #d16500 0%, #ea7400 100%); }
+.btn-primary:active {
+ text-decoration: none;
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #d16500 0%, #ea7400 100%); }
+
+.btn-arrow {
+ font-family: "Omnes-ECOMP-W02", Arial;
+ font-size: 1.6rem;
+ font-weight: normal;
+ background-color: transparent;
+ border: none;
+ padding: 5px 0 0;
+ top: -4px;
+ color: #333333;
+ position: relative; }
+.btn-arrow:hover {
+ text-decoration: underline; }
+.btn-arrow:hover .btn-primary {
+ text-decoration: none;
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #d16500 0%, #ea7400 100%); }
+.btn-arrow:hover .btn-secondary {
+ color: #0568ae;
+ outline-color: #000000 !important;
+ background: linear-gradient(to bottom, #f2f2f2 0%, #fcfcfc 100%); }
+.btn-arrow:hover .btn-alt {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #087ac2 0%, #0568ae 100%); }
+.btn-arrow:hover .btn-specialty {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #007a3e 0%, #008744 100%); }
+.btn-arrow:focus {
+ text-decoration: underline;
+ outline: 1px dotted #666; }
+.btn-arrow:focus .btn-primary {
+ text-decoration: none;
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #d16500 0%, #ea7400 100%); }
+.btn-arrow:focus .btn-secondary {
+ color: #0568ae;
+ outline-color: #000000 !important;
+ background: linear-gradient(to bottom, #f2f2f2 0%, #fcfcfc 100%); }
+.btn-arrow:focus .btn-alt {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #087ac2 0%, #0568ae 100%); }
+.btn-arrow:focus .btn-specialty {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #007a3e 0%, #008744 100%); }
+.btn-arrow:active .btn-primary {
+ text-decoration: none;
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #d16500 0%, #ea7400 100%); }
+.btn-arrow:active .btn-secondary {
+ color: #0568ae;
+ outline-color: #000000 !important;
+ background: linear-gradient(to bottom, #f2f2f2 0%, #fcfcfc 100%); }
+.btn-arrow:active .btn-alt {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #087ac2 0%, #0568ae 100%); }
+.btn-arrow:active .btn-specialty {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #007a3e 0%, #008744 100%); }
+.btn-arrow .btn-alt {
+ border-color: #087ac2 transparent #0568ae;
+ background-color: #0568ae;
+ background: linear-gradient(to bottom, #087ac2 0%, #0568ae 100%);
+ color: #ffffff; }
+.btn-arrow .btn-alt:hover {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #0568ae 0%, #087ac2 100%); }
+.btn-arrow .btn-alt:focus {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #0568ae 0%, #087ac2 100%); }
+.btn-arrow .btn-alt:active {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #0568ae 0%, #087ac2 100%); }
+.btn-arrow::-moz-focus-inner {
+ padding: 0;
+ border: 0; }
+.btn-arrow .btn {
+ border: 1px solid transparent;
+ border-radius: 100%;
+ height: 36px;
+ margin-bottom: 0;
+ margin-right: 7px;
+ max-width: 36px;
+ min-width: 20px;
+ padding: 0;
+ margin-top: -4px;
+ vertical-align: middle;
+ width: 36px; }
+.btn-arrow .btn .icon-primary-left {
+ bottom: 0;
+ display: block;
+ height: 100%;
+ left: 0;
+ line-height: 0;
+ position: absolute;
+ right: 0;
+ text-indent: 0;
+ top: 0; }
+.btn-arrow .btn .icon-primary-left:before {
+ position: absolute;
+ font-size: 1.6rem;
+ left: 1px;
+ top: 9px; }
+.btn-arrow .btn .icon-primary-right {
+ bottom: 0;
+ display: block;
+ height: 100%;
+ left: 0;
+ line-height: 0;
+ position: absolute;
+ right: 0;
+ text-indent: 0;
+ top: 0;
+ color: #ffffff; }
+.btn-arrow .btn .icon-primary-right:before {
+ position: absolute;
+ font-size: 1.6rem;
+ left: 17px;
+ top: 9px; }
+.btn-arrow .btn.btn-primary .icon-primary-left {
+ color: #fff; }
+.btn-arrow .btn.btn-primary .icon-primary-right {
+ color: #fff; }
+.btn-arrow .btn.btn-alt .icon-primary-left {
+ color: #fff; }
+.btn-arrow .btn.btn-alt .icon-primary-right {
+ color: #fff; }
+.btn-arrow .btn.btn-secondary {
+ border: 1px solid #d2d2d2; }
+.btn-arrow .btn.btn-secondary .icon-primary-left {
+ color: #0568ae; }
+.btn-arrow .btn.btn-secondary .icon-primary-right {
+ color: #0568ae; }
+.btn-arrow .btn.btn-small {
+ height: 20px;
+ max-width: 20px;
+ min-width: 20px;
+ width: 20px;
+ top: -1px; }
+.btn-arrow .btn.btn-small .icon-primary-left:before {
+ font-size: 5px;
+ top: 4px;
+ left: 0; }
+.btn-arrow .btn.btn-small .icon-primary-right:before {
+ font-size: 5px;
+ top: 4px;
+ left: 10px; }
+.btn-arrow .btn.btn-large .icon-primary-left:before {
+ font-size: 112%;
+ top: 12px;
+ left: 23px; }
+.btn-arrow .btn.btn-large .icon-primary-right:before {
+ font-size: 112%;
+ top: 12px;
+ left: 23px; }
+
+.btn-secondary {
+ border: 1px solid #d2d2d2;
+ background-color: #f2f2f2;
+ background: linear-gradient(to bottom, #fcfcfc 0%, #f2f2f2 100%);
+ color: #0568ae;
+ box-shadow: 0 5px 5px -5px rgba(0, 0, 0, 0.15);
+ padding: 14px 18px 11px 17px; }
+.btn-secondary:hover {
+ color: #0568ae;
+ outline-color: #000000 !important;
+ background: linear-gradient(to bottom, #f2f2f2 0%, #fcfcfc 100%); }
+.btn-secondary:focus {
+ color: #0568ae;
+ outline-color: #000000 !important;
+ background: linear-gradient(to bottom, #f2f2f2 0%, #fcfcfc 100%); }
+.btn-secondary:active {
+ color: #0568ae;
+ outline-color: #000000 !important;
+ background: linear-gradient(to bottom, #f2f2f2 0%, #fcfcfc 100%); }
+
+.btn-alt {
+ border-color: #087ac2 transparent #0568ae;
+ background-color: #0568ae;
+ background: linear-gradient(to bottom, #087ac2 0%, #0568ae 100%);
+ color: #ffffff; }
+.btn-alt:hover {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #0568ae 0%, #087ac2 100%); }
+.btn-alt:focus {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #0568ae 0%, #087ac2 100%); }
+.btn-alt:active {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #0568ae 0%, #087ac2 100%); }
+
+.btn-specialty {
+ border-color: #008744 transparent #007a3e;
+ background-color: #007a3e;
+ background: linear-gradient(to bottom, #008744 0%, #007a3e 100%);
+ color: #ffffff; }
+.btn-specialty:hover {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #007a3e 0%, #008744 100%); }
+.btn-specialty:focus {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #007a3e 0%, #008744 100%); }
+.btn-specialty:active {
+ color: #ffffff;
+ outline-color: #ffffff !important;
+ background: linear-gradient(to bottom, #007a3e 0%, #008744 100%); }
+
+.btn-clear {
+ background: transparent !important;
+ border-color: transparent !important;
+ font-weight: normal;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ box-shadow: none;
+ text-decoration: none;
+ color: #0568ae; }
+.btn-clear:focus {
+ text-decoration: underline; }
+.btn-clear:hover {
+ text-decoration: underline; }
+
+.downloadImg{
+ height: 25px ;
+ width: 25px;
+}
+
+#reportTableSize{
+ width: 99%;
+ max-height: 750px;
+}
+
+.gridster-color {
+ background: rgba(94, 94, 94, 0.7);
+}
+
+
+.download-div{
+ width: 20%;
+ float: left;
+ height: 30px;
+}
+
+.pagination-div{
+ width: 60%;
+ float: right;
+ height: 30px;
+}
+
+.download-title{
+ padding-right: 10px;
+ font-size: 14px;
+ font-family: Roboto, "Helvetica Neue", sans-serif;
+ color: rgba(0, 0, 0, 0.54);
+}
+
+.filter-div{
+ height: 30px;
+ width: 20%;
+ float: left;
+}
+.btn-back {
+ padding-bottom: 5px;
+ font-size: 15px;}
+
+a{
+ color: darkblue;
+ /*font-weight: normal;*/
+ text-decoration: underline;
+}
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.ts
new file mode 100644
index 00000000..dcbc4835
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-cross-tab-report/run-cross-tab-report.component.ts
@@ -0,0 +1,444 @@
+import {Component, OnInit, Input, AfterViewInit, ViewChild, ElementRef, ChangeDetectorRef} from '@angular/core';
+import {GridsterConfig, GridType, GridsterItem} from 'angular-gridster2';
+import {MatTableDataSource} from '@angular/material/table';
+import {MatPaginator} from '@angular/material/paginator';
+
+import {MatSort} from '@angular/material';
+import {Router} from '@angular/router';
+import {RunService} from '../../run.service';
+import {FormControl} from '@angular/forms';
+import {NgbModal} from '@ng-bootstrap/ng-bootstrap';
+import {environment} from '../../../../../environments/environment';
+import {DisplayHtml} from '../../../../pages/analytics/Report_List/Report/display-html';
+import {ErrorModalComponent} from '../../../../modals/error-modal/error-modal.component';
+import {DashboardReportService} from '../run-dashboard-report/dashboard-report.service';
+import {HttpCacheService} from '../../../../shared/services/cache.service';
+
+export interface PeriodicElement {
+
+}
+
+const ELEMENT_DATA: PeriodicElement[] = [{}];
+
+@Component({
+ selector: 'app-run-cross-tab-report',
+ templateUrl: './run-cross-tab-report.component.html',
+ styleUrls: ['./run-cross-tab-report.component.scss']
+})
+export class RunCrossTabReportComponent implements OnInit {
+
+ @Input('reportId') inputReportId: string;
+ @Input('queryString') queryString: string;
+ @Input('hitCnt') hitCnt: number;
+ @Input('reportType') reportType: string;
+ @Input('reportMode') reportMode: string;
+ @Input('parentId') parentId: string;
+ @Input('groupSelectValue') groupSelectValue: string;
+ @Input('isGoBack') isGoBack: string;
+ dataSource = new MatTableDataSource<PeriodicElement>(ELEMENT_DATA);
+ @ViewChild(MatPaginator, {static: false} as any) paginator: MatPaginator;
+ @ViewChild(MatSort, {static: false} as any) sort: MatSort;
+ @ViewChild('iframe') iframe: ElementRef;
+ options: GridsterConfig;
+ dashboard: Array<GridsterItem> = [];
+ displayedColumns: string[];
+ IncomingReportId: string;
+ displayedColumnsArr: string[];
+ displayedRowObj: {}[];
+ formFieldPresent: boolean;
+ showSpinner: boolean;
+ formFieldList: {}[];
+ isReady: boolean;
+ responseFormFieldListLength: number;
+ NEWdisplayedColumns: string[];
+ initCnt: number;
+ reportName: string;
+ showDashboardReport: boolean;
+ checkCnt: number;
+ initialQueryString: string;
+ initCounter: number;
+ runButtonHitCounter: number;
+ showChart = false;
+ displayColumValue: string;
+ displayTotal: any[];
+ nodeName: string;
+ uploadId: string;
+ ecgi: string;
+ lac: string;
+ cid: string;
+ commentCtrl = new FormControl();
+ replaceDisplayValue: String;
+ saveResponseObj: any;
+ customFieldsDataArray: any[];
+ private chartRunUrl: string;
+ pageSize = [];
+ download_in_progress = false;
+
+ constructor(private _dashboardReportService: DashboardReportService,
+ private _router: Router,
+ private _runService: RunService,
+ private ngModal: NgbModal,
+ private changeDetectorRefs: ChangeDetectorRef,
+ public ngbModal: NgbModal,
+ private httpCacheService: HttpCacheService) {
+ this.initCounter = 0;
+ this.runButtonHitCounter = 0;
+ this.pageSize = [];
+ }
+
+ ngOnInit() {
+ this.initialQueryString = this.queryString;
+ this.initCounter++;
+ this.runButtonHitCounter = this.hitCnt;
+ if (this.reportType === 'Chart') {
+ this.showChart = true;
+ }
+ this.initialProcesses();
+ }
+
+ initialProcesses() {
+ // this.dataSource.paginator = this.paginator;
+ }
+
+ ngOnChanges() {
+ if (this.initialQueryString !== this.queryString && this.initCounter > 0 && this.runButtonHitCounter !== this.hitCnt) {
+ this.initialQueryString = this.queryString;
+ this.runButtonHitCounter = this.hitCnt;
+ this.initialProcesses();
+ this.afterViewInitProcesses();
+ } else {
+ this.runButtonHitCounter = this.hitCnt;
+ this.initialQueryString = this.queryString;
+ }
+ }
+
+ ngAfterViewInit() {
+ this.afterViewInitProcesses();
+ }
+
+ afterViewInitProcesses() {
+ if (this.showChart) {
+ this.chartRunUrl = environment.baseUrl + 'raptor.htm?action=chart.run&c_master=' +
+ this.inputReportId + this.queryString + '&refresh=Y&display_content=Y&r_page=0';
+ this.iframe.nativeElement.setAttribute('src', this.chartRunUrl);
+ this.showSpinner = false;
+ } else {
+
+ this.displayedColumnsArr = [];
+ this.displayedRowObj = [];
+ this.displayedColumns = [];
+ this.formFieldList = [];
+ this.showSpinner = true;
+ this.isReady = false;
+ this.NEWdisplayedColumns = [];
+ this.displayTotal = [];
+ if (localStorage.getItem(this.inputReportId)) {
+ this.postFetchingReportDataFn(JSON.parse(localStorage.getItem(this.inputReportId)));
+ localStorage.removeItem(this.inputReportId);
+ } else {
+ this._runService.getReportDataWithFormFields(this.queryString, this.inputReportId, this.groupSelectValue)
+ .subscribe((response) => {
+ if (response['errormessage']){
+ this.openErrorModel(response['errormessage']);
+ this.showSpinner = false;
+ this.changeDetectorRefs.detectChanges();
+ } else {
+ this.postFetchingReportDataFn(response);
+ }
+ }, error => {
+ this.openErrorModel('Error occurred while running report: ' + this.inputReportId);
+ this.showSpinner = false;
+ this.changeDetectorRefs.detectChanges();
+ });
+ }
+ }
+ }
+
+ postFetchingReportDataFn(response: any) {
+ this.displayedColumnsArr = [];
+ this.displayedColumns = [];
+ this.customFieldsDataArray = [];
+ this.formFieldPresent = false;
+ this.responseFormFieldListLength = 0;
+ this.reportName = response['reportName'];
+ let rdc_cntr = 0;
+ while (response['reportDataColumns'][rdc_cntr]) {
+ const columnTitle = response['reportDataColumns'][rdc_cntr]['columnTitle'];
+ const columnId = response['reportDataColumns'][rdc_cntr]['colId'];
+ this.displayedColumnsArr.push(columnTitle + '||' + columnId);
+ this.displayedColumns.push(columnId);
+ rdc_cntr++;
+ }
+
+
+ /* let totalCnt = 0;
+ while (response['reportTotalDataRows'][totalCnt]) {
+ this.displayTotal.push(response['reportTotalDataRows'][totalCnt]);
+ totalCnt++;
+ }*/
+ this.customFieldsDataArray = response['reportDataRows'];
+ let rdr_cntr = 0;
+ while (response['reportDataRows'][rdr_cntr]) {
+ let dca_cntr = 0;
+ const obj = {};
+ const reportDataRows = response['reportDataRows'][rdr_cntr];
+ while (this.displayedColumnsArr[dca_cntr]) {
+ const rowColumnId = this.displayedColumnsArr[dca_cntr].split('||')[1];
+ if (reportDataRows[rowColumnId]) {
+ let drillDownHtml = '';
+ let displayValue = '';
+ drillDownHtml = reportDataRows[rowColumnId]['drillDownURL'];
+ displayValue = reportDataRows[rowColumnId]['displayValue'];
+ if (drillDownHtml !== null &&
+ drillDownHtml.length > 0 &&
+ !displayValue.includes('linkToReport')) {
+ const value = this.convertToLinkToReport(drillDownHtml);
+ if (value.length > 0) {
+ let valueCount = [];
+ let valueDisplay = '';
+ valueCount = reportDataRows[rowColumnId]['displayValue'].split('|');
+ if (valueCount.length > 1 && this.reportType === 'Cross-Tab') {
+ for (let count = 0; count < valueCount.length - 1; count++) {
+ valueDisplay = valueDisplay + valueCount[count];
+ }
+ this.replaceDisplayValue = value + ',' + valueDisplay;
+ } else {
+ this.replaceDisplayValue = value + ',' + reportDataRows[rowColumnId]['displayValue'];
+ }
+ } else {
+ this.replaceDisplayValue = reportDataRows[rowColumnId]['displayValue'];
+ }
+ } else {
+ this.replaceDisplayValue = reportDataRows[rowColumnId]['displayValue'];
+ }
+ let displayObj: DisplayHtml = new class implements DisplayHtml {
+ 'background-color': string;
+ 'font-family': string;
+ 'font-size': string;
+ 'font-style': string;
+ 'font-weight': string;
+ 'text-align': string;
+ 'text-decoration': string;
+ color: string;
+ };
+ if (this.reportType === ('Cross-Tab') && reportDataRows[rowColumnId]['displayValueHtml'].includes('|')) {
+ let crossTabDisplayValArr = [];
+ crossTabDisplayValArr = reportDataRows[rowColumnId]['displayValueHtml'].split('|');
+ if (crossTabDisplayValArr.length > 1) {
+ displayObj['background-color'] = crossTabDisplayValArr[1];
+ }
+ }
+ if (reportDataRows[rowColumnId]['displayValueHtml'].includes('setStyle')) {
+ displayObj = JSON.parse(reportDataRows[rowColumnId]['displayValueHtml']);
+ }
+ displayObj['text-align'] = reportDataRows[rowColumnId]['alignment'];
+ if (this.replaceDisplayValue.includes('linkToReport') || this.replaceDisplayValue.includes('linkToFeedback') || this.replaceDisplayValue.includes('linkToMail')
+ || this.replaceDisplayValue.includes('linkToMap')) {
+ let replaceValArr = [];
+ if (this.replaceDisplayValue.includes('linkToReport')) {
+ obj[reportDataRows[rowColumnId]['colId']] = this.replaceDisplayValue.split(',').join('|');
+ replaceValArr = obj[reportDataRows[rowColumnId]['colId']].split('|');
+ if (replaceValArr.length > 4) {
+ const dispValue = replaceValArr[3] + ',' + replaceValArr[4];
+ obj[reportDataRows[rowColumnId]['colId']] = obj[reportDataRows[rowColumnId]['colId']].replace(replaceValArr[3] + '|' + replaceValArr[4], replaceValArr[3] + ',' + replaceValArr[4]) + '|' + JSON.stringify(displayObj);
+ } else {
+ obj[reportDataRows[rowColumnId]['colId']] = this.replaceDisplayValue.split(',').join('|')
+ + '|' + JSON.stringify(displayObj);
+ }
+ } else {
+ obj[reportDataRows[rowColumnId]['colId']] = this.replaceDisplayValue.split(',').join('|')
+ + '|' + JSON.stringify(displayObj);
+ }
+ } else {
+ obj[reportDataRows[rowColumnId]['colId']] = this.replaceDisplayValue.split('comment-break-line').join('')
+ + '|' + JSON.stringify(displayObj);
+ }
+ }
+ dca_cntr++;
+ }
+ this.displayedRowObj.push(obj);
+ rdr_cntr++;
+ }
+ this.pageSize = response['pageSize'];
+/* for (let cntr = 0; cntr < this.displayedColumnsArr.length; cntr++) {
+ const columnArrId = this.displayedColumnsArr[cntr].split(',')[1];
+ this.displayedColumns.push(columnArrId);
+ }*/
+ this.pageSize = [response['pageSize']];
+ this.showSpinner = false;
+ this.dataSource = new MatTableDataSource<PeriodicElement>(this.displayedRowObj);
+ this.dataSource.paginator = this.paginator;
+ this.changeDetectorRefs.detectChanges();
+ }
+
+ linkToReport(reportID: string, queryParameters: string) {
+ if (!this.httpCacheService.getPreviousId(this.inputReportId)) {
+ this.httpCacheService.setPreviousId(this.inputReportId, 'parent');
+ }
+ this.httpCacheService.setPreviousId(reportID, this.inputReportId);
+ let queryParamsArr = [];
+ let columnDrilldownqueryParamsArr = [];
+ let groupSelectValue = '';
+ if (queryParameters.includes('groupSelectValue')) {
+ queryParamsArr = queryParameters.split('&');
+ for (let val = 0; val < queryParamsArr.length; val++) {
+ if (queryParamsArr[val].includes('groupSelectValue')) {
+ groupSelectValue = queryParamsArr[val].substring(queryParamsArr[val].indexOf('=') + 1, queryParamsArr[val].length);
+ }
+ }
+ this._router.navigate(['v2/run', reportID, queryParameters, groupSelectValue]);
+ } else if (queryParameters.includes('SELECTCRITERIA-')) {
+ columnDrilldownqueryParamsArr = queryParameters.split('&');
+ for (let val = 0; val < columnDrilldownqueryParamsArr.length; val++) {
+ if (columnDrilldownqueryParamsArr[val].includes('SELECTCRITERIA-')) {
+ groupSelectValue = columnDrilldownqueryParamsArr[val].substring(columnDrilldownqueryParamsArr[val].indexOf('-') + 1, columnDrilldownqueryParamsArr[val].length);
+ }
+ }
+ this._router.navigate(['v2/run', reportID, queryParameters, groupSelectValue, 'true', '']);
+ } else {
+ this._router.navigate(['v2/run', reportID, queryParameters, '', 'true', '']);
+ }
+ }
+
+ linkToMail(mailId: string) {
+ const email = 'mailto:' + mailId;
+ window.location.href = email;
+ }
+
+ applyFilter(filterValue: string) {
+ this.dataSource.filter = filterValue.trim().toLowerCase();
+ }
+
+ setStyle(rowData: string) {
+ let styles = '';
+ if (rowData.split('|')[0] === 'linkToReport' || rowData.split('|')[0] === 'linkToFeedback') {
+ styles = rowData.split('|')[4];
+ } else if (this.reportType = 'Cross-Tab') {
+ const rowDataArray = rowData.split('|');
+ let crossTabstyles = {};
+ if (rowDataArray.length > 1) {
+ if (rowDataArray[1].includes('{')) {
+ styles = rowDataArray[1];
+ return JSON.parse(styles);
+ } else {
+ crossTabstyles = {'background-color': rowData.split('|')[1]};
+ return crossTabstyles;
+ }
+ }
+ } else {
+ styles = rowData.split('|')[1];
+ }
+ if (styles.includes('{')) {
+ return JSON.parse(styles);
+ } else {
+ return {};
+ }
+ }
+
+ getDisplayTotal(keys: any) {
+ if (this.displayTotal.length > 0) {
+ return this.displayTotal[0][keys].displayValue;
+ } else {
+ return '';
+ }
+ }
+
+ clearComments() {
+ this.commentCtrl.setValue('');
+ }
+
+ convertToLinkToReport(value: string) {
+ value = value.replace(/;/g, '');
+ let outPut = '';
+ while (value.includes('c_master=')) {
+ const index = value.indexOf('c_master=');
+ if (index > 0) {
+ value = value.substring(index, value.length);
+ } else if (index === 0) {
+ value = value.replace('c_master=', '');
+ }
+ }
+ const split = value.split('&');
+ // const spltFirst = split[0].split('=');
+ if (split[1].length <= 0) {
+ return outPut;
+ }
+ outPut = 'linkToReport,' + split[0] + ',';
+ let splitCounter = 1;
+ for (splitCounter = 1; splitCounter < split.length; splitCounter++) {
+ if (!split[splitCounter].includes('LOGIN_ID=') &&
+ !split[splitCounter].includes('display_content=') &&
+ !split[splitCounter].includes('drilldown_index=') &&
+ !split[splitCounter].includes('show_back_btn=') &&
+ !split[splitCounter].includes('r_action')) {
+ outPut = outPut + '&' + split[splitCounter];
+ }
+ }
+ return outPut;
+ }
+
+ openErrorModel(_message: string) {
+ const modalInfoRef = this.ngbModal.open(ErrorModalComponent);
+ modalInfoRef.componentInstance.message = _message;
+ return modalInfoRef;
+ }
+
+ downloadReport(contentType: string, extension: string) {
+
+ this.changeDetectorRefs.detectChanges();
+ if (this.showDashboardReport === false) {
+ this.download_in_progress = true;
+ this._runService.downloadReport(this.inputReportId, extension, this.isGoBack)
+ .subscribe((responseExcel) => {
+
+ this.downLoadFile(responseExcel, contentType, extension, '');
+ this.download_in_progress = false;
+ this.changeDetectorRefs.detectChanges();
+ });
+ } else {
+ this.download_in_progress = true;
+ this._runService.getDashboardReportFormFields(this.inputReportId)
+ .subscribe((dashboardFormFields) => {
+ /* this._runService.runDashboardReport(this.inputReportId, this.queryString)
+ .subscribe((runDashboardReportResp) => {*/
+ this._runService.downloadDashboardReportExcel(this.inputReportId)
+ .subscribe((responseDownloadDashboardReport) => {
+ this.downLoadFile(responseDownloadDashboardReport, contentType, extension, 'Dashboard');
+ this.download_in_progress = false;
+ this.changeDetectorRefs.detectChanges();
+ });
+ // });
+
+ });
+ }
+ }
+
+ downLoadFile(data: any, type: string, extension: string, reportType: string) {
+ const blob = new Blob([data], {type: type});
+ const date = new Date();
+ const dateStr =
+ ('00' + (date.getMonth() + 1)).slice(-2) +
+ ('00' + date.getDate()).slice(-2) +
+ date.getFullYear() +
+ ('00' + date.getHours()).slice(-2) +
+ ('00' + date.getMinutes()).slice(-2) +
+ ('00' + date.getMilliseconds());
+ let fileName = this.reportName + dateStr + '.' + extension;
+ if (reportType === 'Dashboard') {
+ fileName = '';
+ fileName = reportType + '_' + this.inputReportId + '_' + dateStr + '.' + extension;
+ }
+ if (window.navigator.msSaveOrOpenBlob) {
+ window.navigator.msSaveBlob(blob, fileName);
+ } else {
+ const anchor = window.document.createElement('a');
+ anchor.href = window.URL.createObjectURL(blob);
+ anchor.download = fileName;
+ document.body.appendChild(anchor);
+ anchor.click();
+ document.body.removeChild(anchor);
+ window.URL.revokeObjectURL(anchor.href);
+ }
+ }
+}
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.ts
index e37154a1..10ee4f87 100644
--- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.ts
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.ts
@@ -192,7 +192,7 @@ saveResponseObj:any;
'text-decoration': string;
color: string;
};
- if (reportDataRows[rowColumnId]['displayValueHtml'].includes('{')) {
+ if (reportDataRows[rowColumnId]['displayValueHtml'].includes('setStyle')) {
displayObj = JSON.parse(reportDataRows[rowColumnId]['displayValueHtml']);
}
displayObj['text-align'] = reportDataRows[rowColumnId]['alignment'];
@@ -246,6 +246,18 @@ saveResponseObj:any;
styles = rowData.split('|')[4];
} else if (rowData.split('|')[0] === 'linkToMail') {
styles = rowData.split('|')[3];
+ } else if (this.reportType === 'Cross-Tab') {
+ const rowDataArray = rowData.split('|');
+ let crossTabstyles = {};
+ if (rowDataArray.length > 0) {
+ if (rowDataArray[1].includes('{')) {
+ styles = rowDataArray[1];
+ return JSON.parse(styles);
+ } else {
+ crossTabstyles = {'background-color': rowData.split('|')[1]};
+ return crossTabstyles;
+ }
+ }
} else {
styles = rowData.split('|')[1];
}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.css b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.css
index 5f0f289d..621827f6 100644
--- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.css
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.css
@@ -1360,3 +1360,15 @@ color: rgba(0, 0, 0, 0.54);
.btn-back {
padding-bottom: 5px;
font-size: 15px;}
+
+a{
+ color: darkblue;
+ /*font-weight: normal;*/
+ text-decoration: underline;
+}
+
+.hyperlink-color{
+ text-decoration: underline;
+ cursor: pointer;
+ color: darkblue;
+} \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.html
index 6b3836e9..f87fad60 100644
--- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.html
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.html
@@ -74,12 +74,16 @@
<a (click)="linkToReport(row[keys].split('|')[1], row[keys].split('|')[2])"
[routerLink]="">{{row[keys].split('|')[3]}}</a>
</div>
+ <div *ngIf="row[keys].split('|')[0] == 'linkToHref'">
+ <a (click)="linkToOpenNewTab(row[keys].split('|')[1], row[keys].split('|')[2])"
+ [routerLink]="">{{row[keys].split('|')[3]}}</a>
+ </div>
<div *ngIf="row[keys].split('|')[0] == 'linkToMail'"
>
<a (click)="linkToMail(row[keys].split('|')[1])"
[routerLink]="">{{row[keys].split('|')[2]}}</a>
</div>
- <div *ngIf="row[keys].split('|')[0] !== 'linkToReport' && row[keys].split('|')[0] !== 'linkToMail'">
+ <div *ngIf="row[keys].split('|')[0] !== 'linkToReport' && row[keys].split('|')[0] !== 'linkToMail' && row[keys].split('|')[0] !== 'linkToHref'">
{{row[keys].split('|')[0]}}&nbsp;</div>
</td>
<td *matFooterCellDef align="center" mat-footer-cell>{{getDisplayTotal(keys)}}</td>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.ts
index 54a45226..aa36178f 100644
--- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.ts
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.ts
@@ -24,7 +24,7 @@ import {DisplayHtml} from '../../../pages/analytics/Report_List/Report/display-h
import {ErrorModalComponent} from '../../../modals/error-modal/error-modal.component';
import {InformationModalComponent } from 'src/app/modals/information-modal/information-modal.component';
import { FormControl } from '@angular/forms';
-import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
+import { NgbModal, NgbModalOptions} from '@ng-bootstrap/ng-bootstrap';
import { ConfirmationModalComponent } from 'src/app/modals/confirmation-modal/confirmation-modal.component';
import {MatDialog} from '@angular/material';
import {HttpCacheService} from '../../../shared/services/cache.service';
@@ -44,6 +44,7 @@ const ELEMENT_DATA: PeriodicElement[] = [{}];
export class RunReportComponent implements OnInit, AfterViewInit, OnChanges {
@Input('reportId') inputReportId: string;
@Input('reportMode') reportMode: string;
+ @Input('reportType') reportType: string;
@Input('queryString') queryString: string;
@Input('isGoBack') isGoBack: string;
@Input('DashboardReportObj') DashboardReportObj: Array<GridsterItem>;
@@ -98,8 +99,10 @@ export class RunReportComponent implements OnInit, AfterViewInit, OnChanges {
timeTaken = '...';
saveResponseObj: any;
showBackButton = false;
+ customFieldsDataArray: any[];
isDashboardExcelReadyToDownload = false;
+ modalOptions: NgbModalOptions;
constructor(private _http: HttpClient,
private _route: ActivatedRoute,
@@ -131,6 +134,11 @@ export class RunReportComponent implements OnInit, AfterViewInit, OnChanges {
this.download_in_progress = false;
this.isGoBack = '';
this.isDashboardExcelReadyToDownload = false;
+ this.modalOptions = {
+ backdrop: 'static',
+ keyboard: false,
+ size: 'lg'
+ };
}
@HostListener('click') onClick() {
@@ -381,6 +389,7 @@ export class RunReportComponent implements OnInit, AfterViewInit, OnChanges {
this.totalRecords = 0;
this.displayedColumnsArr = [];
this.displayedColumns = [];
+ this.customFieldsDataArray = [];
this.formFieldPresent = false;
this.responseFormFieldListLength = 0;
this.reportName = response['reportName'];
@@ -404,7 +413,7 @@ export class RunReportComponent implements OnInit, AfterViewInit, OnChanges {
this.displayTotal.push(response['reportTotalDataRows'][totalCnt]);
totalCnt++;
}
-
+ this.customFieldsDataArray = response['reportDataRows'];
let rdr_cntr = 0;
while (response['reportDataRows'][rdr_cntr]) {
let dca_cntr = 0;
@@ -422,8 +431,17 @@ export class RunReportComponent implements OnInit, AfterViewInit, OnChanges {
!displayValue.includes('linkToReport')) {
const value = this.convertToLinkToReport(drillDownHtml);
if (value.length > 0) {
- this.replaceDisplayValue = value + ',' +
- reportDataRows[rowColumnId]['displayValue'];
+ let valueCount = [];
+ let valueDisplay = '';
+ valueCount = reportDataRows[rowColumnId]['displayValue'].split('|');
+ if (valueCount.length > 1 && this.reportType === 'Cross-Tab') {
+ for (let count = 0; count < valueCount.length - 1; count++) {
+ valueDisplay = valueDisplay + valueCount[count];
+ }
+ this.replaceDisplayValue = value + ',' + valueDisplay;
+ } else {
+ this.replaceDisplayValue = value + ',' + reportDataRows[rowColumnId]['displayValue'];
+ }
} else {
this.replaceDisplayValue = reportDataRows[rowColumnId]['displayValue'];
}
@@ -440,13 +458,20 @@ export class RunReportComponent implements OnInit, AfterViewInit, OnChanges {
'text-decoration': string;
color: string;
};
+ if (this.reportType === ('Cross-Tab') && reportDataRows[rowColumnId]['displayValueHtml'].includes('|')) {
+ let crossTabDisplayValArr = [];
+ crossTabDisplayValArr = reportDataRows[rowColumnId]['displayValueHtml'].split('|');
+ if (crossTabDisplayValArr.length > 1) {
+ displayObj['background-color'] = crossTabDisplayValArr[1];
+ }
+ }
if (reportDataRows[rowColumnId]['displayValueHtml'].includes('setStyle')) {
displayObj = JSON.parse(reportDataRows[rowColumnId]['displayValueHtml']);
}
displayObj['text-align'] = reportDataRows[rowColumnId]['alignment'];
obj['RowNum'] = (pagenum * response['pageSize'] + rdr_cntr + 1) + '|{"text-align":"center"}';
if (this.replaceDisplayValue.includes('linkToReport') || this.replaceDisplayValue.includes('linkToFeedback') || this.replaceDisplayValue.includes('linkToMail')
- || this.replaceDisplayValue.includes('linkToMap')) {
+ || this.replaceDisplayValue.includes('linkToMap') || this.replaceDisplayValue.includes('linkToHref')) {
let replaceValArr = new Array();
if (this.replaceDisplayValue.includes('linkToReport')) {
obj[reportDataRows[rowColumnId]['colId']] = this.replaceDisplayValue.split(',').join('|');
@@ -503,8 +528,8 @@ linkToReport(reportID: string, queryParameters: string) {
length++;
sessionStorage.setItem(length.toString(), this.inputReportId + '|' + this.queryString);
}*/
- let queryParamsArr = new Array();
- let columnDrilldownqueryParamsArr = new Array();
+ let queryParamsArr = [];
+ let columnDrilldownqueryParamsArr = [];
let groupSelectValue = '';
if (queryParameters.includes('groupSelectValue')) {
queryParamsArr = queryParameters.split('&');
@@ -626,10 +651,22 @@ linkToReport(reportID: string, queryParameters: string) {
styles = rowData.split('|')[4];
} else if (rowData.split('|')[0] === 'linkToMail') {
styles = rowData.split('|')[3];
+ } else if (this.reportType === 'Cross-Tab') {
+ const rowDataArray = rowData.split('|');
+ let crossTabstyles = {};
+ if (rowDataArray.length > 0) {
+ if (rowDataArray[1].includes('{')) {
+ styles = rowDataArray[1];
+ return JSON.parse(styles);
+ } else {
+ crossTabstyles = {'background-color': rowData.split('|')[1]};
+ return crossTabstyles;
+ }
+ }
} else {
styles = rowData.split('|')[1];
}
- if (styles.includes('{')) {
+ if (styles !== undefined && styles.includes('{')) {
return JSON.parse(styles);
} else {
return {};
@@ -778,9 +815,33 @@ linkToReport(reportID: string, queryParameters: string) {
openErrorModel(_message: string) {
this.changeDetectorRefs.detectChanges();
- const modalInfoRef = this.ngbModal.open(ErrorModalComponent);
+ const modalInfoRef = this.ngbModal.open(ErrorModalComponent, this.modalOptions);
modalInfoRef.componentInstance.message = _message;
return modalInfoRef;
}
+ openErrorModelPopup(_message: string) {
+ this.changeDetectorRefs.detectChanges();
+ const modalInfoRef = this.ngbModal.open(ErrorModalComponent, this.modalOptions);
+ modalInfoRef.componentInstance.message = _message;
+ modalInfoRef.result.then((data) => {
+ this.resetFormFieldValues(this.inputReportId);
+ });
+ return modalInfoRef;
+ }
+
+ resetFormFieldValues(reportId) {
+ this.httpCacheService.clearCache();
+ this._router.navigateByUrl('v2/app/refresh', {skipLocationChange: true}).then(() =>
+ this._router.navigate(['v2/run', reportId]));
+ }
+
+ linkToOpenNewTab(repId, formfiledValues) {
+ let str = [];
+ formfiledValues = formfiledValues.replaceAll('%2F','||');
+ str = window.location.pathname.split('/');
+ let approot = str[1];
+ let reportLink2 = this._router.serializeUrl(this._router.createUrlTree([approot + '/v2/run', repId, formfiledValues]));
+ window.open(reportLink2, '_blank');
+ }
}