summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run
diff options
context:
space:
mode:
authormravula <mr257h@att.com>2020-08-31 12:29:32 -0400
committermravula <mr257h@att.com>2020-12-04 12:06:54 -0500
commit220a25a2566c90bc540e7190342f73824d2ff54a (patch)
treeef28fb72e267b842c197b807f5d06fcd990f7f4e /ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run
parentad2d7d08693ccb514d51e15505541bc55051a871 (diff)
Raptor UI Changes, user profile, folder restructure
Issue-ID: PORTAL-902 Change-Id: Ib76bb3fce7efe55504b75d2fc4764bafb9f8e908 Signed-off-by: mravula <mr257h@att.com>
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-routing.module.ts28
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.html1
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.scss0
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.spec.ts26
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.ts15
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.module.ts62
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/remove-space.directive.ts18
-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.css4146
-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.html340
-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.spec.ts124
-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.ts1015
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set-datasource.ts86
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.css201
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.html23
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.spec.ts38
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.ts139
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/dashboard-report.service.spec.ts37
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/dashboard-report.service.ts22
-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.css90
-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.html44
-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.scss0
-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.spec.ts126
-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.ts303
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report-datasource.ts89
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.css1362
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.html127
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.spec.ts188
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.ts786
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.css497
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.html12
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.spec.ts39
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.ts52
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.service.spec.ts61
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.service.ts101
34 files changed, 10198 insertions, 0 deletions
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run-routing.module.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run-routing.module.ts
new file mode 100644
index 00000000..38f4d5b3
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run-routing.module.ts
@@ -0,0 +1,28 @@
+import {RouterModule, Routes} from '@angular/router';
+
+import {NgModule} from '@angular/core';
+import {ReportRunComponent} from './report-run.component';
+import {RunReportFormFieldsComponent} from './run/run-report-form-fields/run-report-form-fields.component';
+
+
+const routes: Routes = [
+ {
+ path: '',
+ component: ReportRunComponent,
+ children: [
+ {path: ':reportId', component: RunReportFormFieldsComponent},
+ {path: ':reportId/:queryParameters', component: RunReportFormFieldsComponent},
+ {path: ':reportId/:queryParameters/:groupSelectValue', component: RunReportFormFieldsComponent},
+ {path: ':reportId/:queryParameters/:groupSelectValue/:showBackButton/:downloadPrevReport', component: RunReportFormFieldsComponent},
+ {path: '', component: RunReportFormFieldsComponent},
+ ]
+ }
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule]
+})
+export class ReportRunRouting{
+
+}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.html
new file mode 100644
index 00000000..0680b43f
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.html
@@ -0,0 +1 @@
+<router-outlet></router-outlet>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.scss b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.scss
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.scss
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.spec.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.spec.ts
new file mode 100644
index 00000000..af615a92
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.spec.ts
@@ -0,0 +1,26 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { RouterTestingModule } from '@angular/router/testing';
+import { ReportRunComponent } from './report-run.component';
+
+describe('ReportRunComponent', () => {
+ let component: ReportRunComponent;
+ let fixture: ComponentFixture<ReportRunComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ReportRunComponent ],
+ imports: [ RouterTestingModule]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ReportRunComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.ts
new file mode 100644
index 00000000..e74449cb
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-report-run',
+ templateUrl: './report-run.component.html',
+ styleUrls: ['./report-run.component.scss']
+})
+export class ReportRunComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit() {
+ }
+
+}
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
new file mode 100644
index 00000000..775494d7
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/report-run.module.ts
@@ -0,0 +1,62 @@
+import {NgModule} from '@angular/core';
+import {RunDashboardReportComponent} from './run/run-report/run-dashboard-report/run-dashboard-report.component';
+import {RunReportFormFieldsComponent} from './run/run-report-form-fields/run-report-form-fields.component';
+import {RunReportComponent} from './run/run-report/run-report.component';
+import {ReportRunComponent} from './report-run.component';
+import {RunReportResultSetComponent} from './run/run-report-result-set/run-report-result-set.component';
+import {
+ MatAutocompleteModule,
+ MatCheckboxModule,
+ MatDatepickerModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatPaginatorModule,
+ MatRadioModule,
+ MatSelectModule,
+ MatSortModule,
+ MatTableModule
+} from '@angular/material';
+import {CommonModule} from '@angular/common';
+import {RouterModule} from '@angular/router';
+import {FormsModule, ReactiveFormsModule} from '@angular/forms';
+import {GridsterModule} from 'angular-gridster2';
+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';
+
+@NgModule({
+ declarations: [RunDashboardReportComponent,
+ RunReportFormFieldsComponent,
+ RunReportComponent,
+ ReportRunComponent,
+ RunReportResultSetComponent,
+ RunComponent,
+ RemoveSpaceDirective],
+ imports: [
+ MatTableModule,
+ CommonModule,
+ RouterModule,
+ MatIconModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ ReactiveFormsModule,
+ MatAutocompleteModule,
+ MatPaginatorModule,
+ FormsModule,
+ GridsterModule,
+ MatSelectModule,
+ MatDatepickerModule,
+ MatRadioModule,
+ MatInputModule,
+ ReportRunRouting,
+ MatSortModule,
+ NgbTooltipModule
+ ],
+ exports: [RunReportComponent, RunComponent]
+})
+
+export class ReportRun {
+
+}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/remove-space.directive.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/remove-space.directive.ts
new file mode 100644
index 00000000..5bc8058d
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/remove-space.directive.ts
@@ -0,0 +1,18 @@
+import {Directive, ElementRef, HostListener} from '@angular/core';
+
+@Directive({
+ selector: '[appRemoveSpace]'
+})
+export class RemoveSpaceDirective {
+
+ constructor(private _el: ElementRef) { }
+
+ @HostListener('textarea', ['$event']) onInputChange(event) {
+ const initialValue = this._el.nativeElement.value;
+ this._el.nativeElement.value = initialValue.toString().trim();
+ if ( initialValue !== this._el.nativeElement.value) {
+ event.stopPropagation();
+ }
+ }
+
+}
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
new file mode 100644
index 00000000..91456c6a
--- /dev/null
+++ 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
@@ -0,0 +1,4146 @@
+.wrapper {
+ display: flex;
+ flex-wrap: wrap;
+ flex-direction: row;
+}
+
+.wrapper > div {
+ border-radius: 3px;
+ padding: 0.4em;
+}
+
+mat-button-toggle-group {
+ width: 800px;
+}
+
+.stdForm {
+ margin-left: 20px;
+ line-height: 0.5;
+}
+
+.fieldWidth {
+ width: 200px;
+}
+
+.labelWidth {
+ font-weight: normal;
+ width: 300px;
+}
+
+mat-select {
+ border: 1px solid #d2d2d2;
+ border-radius: 6px;
+ height: 36px;
+}
+
+:host ::ng-deep .mat-select-value {
+ padding: 8px;
+ font-size: 12px;
+ padding-left: 15px;
+}
+
+:host ::ng-deep .mat-form-field-underline {
+ display: none;
+}
+
+:host ::ng-deep .mat-form-field-infix {
+ padding: 0;
+ border-top: 0;
+}
+
+:host ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
+ padding-bottom: 0;
+}
+
+:host ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-infix {
+ padding: 0;
+}
+
+.mat-form-field {
+ width: 200px;
+}
+
+label {
+ size: 70px;
+ padding-right: 15px;
+}
+
+input {
+ width: 200px;
+ height: 20px;
+}
+
+.Heading {
+ font-size: 45px;
+}
+
+.field-group {
+ position: relative;
+ display: block;
+}
+
+label + .field-group, label + .input-append, label + .row, label + .row-nowrap, label + .form-row {
+ margin-top: 5px;
+}
+
+
+select {
+ display: block;
+ width: 200px;
+ padding: 15px;
+ background-color: #e6e6e61a
+}
+
+.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;
+}
+
+html {
+ overflow-y: scroll;
+ -webkit-overflow-scrolling: touch;
+ height: 100%;
+ position: relative;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+p,
+blockquote,
+figure,
+ol,
+ul {
+ margin: 0;
+ padding: 0;
+}
+
+sub,
+.img-no-rwd {
+ max-width: inherit !important;
+}
+
+svg {
+ display: inline-block;
+}
+
+button,
+input,
+select,
+textarea {
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle;
+}
+
+::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ appearance: button;
+ 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;
+}
+
+
+select {
+ -moz-appearance: none;
+ -webkit-appearance: none;
+}
+
+small {
+ font-size: 1.6rem;
+}
+
+.container {
+ margin: 0 auto;
+ padding: 0;
+}
+
+input {
+ padding: 8px 15px 8px 15px;
+}
+
+.field-group input.input-emphasized[type="search"] + .reset-field:after {
+ top: 14px;
+}
+
+.field-group input.input-emphasized[type="search"] + .reset-field {
+ height: 46px;
+ top: 1px;
+}
+
+p,
+h2,
+h3 {
+ orphans: 3;
+ widows: 3;
+}
+
+h2,
+h3 {
+ page-break-after: avoid;
+}
+
+.mar-top-0 {
+ margin-top: 0px;
+}
+
+.mar-top-30 {
+ margin-top: 30px;
+}
+
+a:focus {
+ outline: thin dotted #191919;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-weight: normal;
+ text-rendering: optimizeLegibility;
+ margin: 0;
+ line-height: 1;
+}
+
+@media (max-width: 767px) {
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ .heading-page {
+ font-size: 2rem;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ margin-bottom: 30px;
+ }
+
+ .heading-major-section {
+ font-size: 2rem;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ margin-bottom: 30px;
+ }
+
+ .heading-sub-section {
+ font-size: 2rem;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ margin-bottom: 20px;
+ }
+
+ .heading-medium {
+ font-size: 2rem;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ margin-bottom: 20px;
+ }
+
+ .heading-medium-emphasis {
+ font-size: 2rem;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ margin-bottom: 20px;
+ }
+
+ .heading-small {
+ font-size: 1.6rem;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ margin-bottom: 10px;
+ }
+
+ .heading-small-emphasis {
+ font-size: 1.6rem;
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+ margin-bottom: 5px;
+ }
+
+ * + .heading-major-section {
+ margin-top: 30px;
+ }
+
+ * + .heading-sub-section {
+ margin-top: 30px;
+ }
+
+ * + .heading-group {
+ margin-top: 20px;
+ }
+
+ * + .heading-medium {
+ margin-top: 20px;
+ }
+
+ * + .heading-medium-emphasis {
+ margin-top: 20px;
+ }
+
+ * + .heading-small {
+ margin-top: 20px;
+ }
+
+ * + .heading-small-emphasis {
+ margin-top: 20px;
+ }
+
+ * + .heading-micro {
+ margin-top: 10px;
+ }
+}
+
+/* Standard Type styles */
+.zeromargin {
+ margin: 0 !important;
+}
+
+a {
+ color: #0568ae;
+ text-decoration: none;
+}
+
+a:hover,
+a:focus {
+ text-decoration: underline;
+}
+
+a:active {
+ color: #0568ae;
+}
+
+.a-min {
+ font-size: 12px;
+}
+
+.a-small {
+ font-size: 14px;
+}
+
+.a-max {
+ font-size: 18px;
+}
+
+a.show-qualifier {
+ margin-right: 25px;
+ position: relative;
+}
+
+a.show-qualifier:after {
+ color: #333333;
+ display: inline-block;
+ white-space: pre !important;
+}
+
+a[href$="pdf"].show-qualifier:after,
+a.show-qualifier.pdf:after {
+ content: " (PDF)";
+}
+
+a[href$="psd"].show-qualifier:after,
+a.show-qualifier.psd:after {
+ content: " (PSD)";
+}
+
+.standalone-link {
+ display: flex;
+}
+
+/* 20px for the icon, 10px left of icon */
+.standalone-link.small {
+ font-size: 1.4rem;
+}
+
+.standalone-link.small i[class*="icon-primary-"] {
+ font-size: 16px;
+ top: 2px;
+}
+
+.standalone-link.large {
+ font-size: 1.8rem;
+}
+
+.standalone-link.large i[class*="icon-primary-"] {
+ font-size: 24px;
+ top: -1px;
+}
+
+p {
+ margin: 0 0 12px 0;
+ line-height: 2rem;
+}
+
+.p-small {
+ font-size: 1.4rem;
+ line-height: 1.8rem;
+}
+
+p + .p-small {
+ margin: 10px 0 0;
+}
+
+.p-micro {
+ font-size: 1.2rem;
+ line-height: 1.5rem;
+}
+
+p + .p-micro {
+ margin: 10px 0 0;
+}
+
+.p-max {
+ font-size: 1.8rem;
+}
+
+p + .p-max {
+ margin: 10px 0 0;
+}
+
+b,
+strong {
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+ font-weight: normal;
+}
+
+i,
+em {
+ font-family: "Omnes-ECOMP-W02-Italic", Arial;
+ font-style: normal;
+}
+
+.strike {
+ text-decoration: line-through;
+}
+
+sup {
+ display: inline-block;
+ font-style: normal;
+ height: 1em;
+ position: relative;
+ vertical-align: text-top;
+ width: auto;
+}
+
+.text-legal {
+ color: #5a5a5a;
+ font-size: 1.1rem;
+ line-height: 1.5rem;
+ margin: 0 0 10px;
+}
+
+.text-legal.legal-module {
+ line-height: 1.3rem;
+ margin: 0 0 12px;
+}
+
+.text-legal b,
+.text-legal strong {
+ font-weight: bold;
+}
+
+.text-legal a {
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+}
+
+.text-left {
+ text-align: left !important;
+}
+
+.text-right {
+ text-align: right !important;
+}
+
+.text-center {
+ text-align: center !important;
+}
+
+.text-justified {
+ text-align: justify !important;
+}
+
+ul {
+ padding: 0;
+ margin: 0;
+ list-style: none;
+}
+
+ul.bullet,
+ul.no-bullet,
+ul.lower-alpha,
+ul.lower-roman,
+ol {
+ padding: 0;
+ margin: 12px 0 0 20px;
+}
+
+ul.bullet li,
+ul.no-bullet li,
+ul.lower-alpha li,
+ul.lower-roman li,
+ol li {
+ padding-left: 15px;
+ line-height: 20px;
+ position: relative;
+}
+
+ul.bullet li + li,
+ul.no-bullet li + li,
+ul.lower-alpha li + li,
+ul.lower-roman li + li,
+ol li + li {
+ margin-top: 12px;
+}
+
+ul.bullet > li:before,
+ul.no-bullet > li:before,
+ul.lower-alpha > li:before,
+ul.lower-roman > li:before,
+ol > li:before {
+ background-color: #333333;
+ border: 2px solid #333333;
+ border-radius: 100%;
+ content: " ";
+ display: block;
+ height: 1px;
+ left: 0;
+ position: absolute;
+ top: 8px;
+ width: 1px;
+}
+
+ul.bullet ul,
+ul.no-bullet ul,
+ul.lower-alpha ul,
+ul.lower-roman ul,
+ol ul,
+ul.bullet ol,
+ul.no-bullet ol,
+ul.lower-alpha ol,
+ul.lower-roman ol,
+ol ol {
+ margin-top: 12px;
+}
+
+ul + *,
+ol + * {
+ margin-top: 20px;
+}
+
+ul.no-bullet,
+ul.lower-alpha,
+ul.lower-roman {
+ margin: 0;
+}
+
+ul.no-bullet > li,
+ul.lower-alpha > li,
+ul.lower-roman > li {
+ padding-left: 0;
+}
+
+ul.no-bullet > li:before,
+ul.lower-alpha > li:before,
+ul.lower-roman > li:before {
+ display: none !important;
+}
+
+ol {
+ margin: 20px 0 0 32px;
+}
+
+ol li {
+ padding-left: 3px;
+}
+
+ol li:before {
+ display: none;
+}
+
+ol ol {
+ margin-left: 25px;
+}
+
+ol ul {
+ margin-left: -5px;
+}
+
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+ margin-top: 0;
+}
+
+ul.lower-roman {
+ list-style-type: lower-roman;
+ margin-top: 12px;
+ margin-left: 35px;
+ margin-bottom: 0;
+}
+
+ul.lower-alpha {
+ list-style-type: lower-alpha;
+ margin-top: 12px;
+ margin-left: 35px;
+ margin-bottom: 0;
+}
+
+dl {
+ display: table;
+ margin: 0 0 20px;
+ width: 100%;
+}
+
+dt,
+dd {
+ display: table-cell;
+}
+
+.btn {
+ background-color: transparent;
+ background-clip: padding-box;
+ border: 1px solid transparent;
+ border-radius: 8px;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15);
+ cursor: pointer;
+ display: inline-block;
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+ font-size: 0.5rem;
+ font-weight: normal;
+ line-height: 1;
+ margin: 0 7px 10px 0;
+
+
+ padding: 14px 19px 11px 18px;
+ position: relative;
+ text-align: center;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+.btn:focus {
+ outline: 1px dotted #000;
+ outline-offset: -5px;
+}
+
+.btn:last-child {
+ margin-right: 0;
+}
+
+.btn::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+.btn i[class*="icon-primary-"].icon-primary-small {
+ font-size: 24px;
+ top: -2px;
+}
+
+.btn i[class*="icon-primary-"].icon-primary-medium {
+ font-size: 10px;
+ top: -2px;
+}
+
+.btn i[class*="icon-primary-"].icon-primary-large {
+ font-size: 10px;
+ top: -2px;
+}
+
+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: 20px;
+ margin-bottom: 0;
+ margin-right: 7px;
+ max-width: 20px;
+ 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: 10px;
+
+
+ width: 10px;
+ 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.disabled {
+ background-image: none;
+ background-color: #767676;
+ box-shadow: none;
+ cursor: not-allowed;
+ color: #ffffff;
+ border-color: transparent;
+ outline: 0 !important;
+}
+
+.btn.disabled:hover {
+ color: #f2f2f2;
+ outline: none !important;
+}
+
+.btn.disabled:focus {
+ color: #f2f2f2;
+ outline: none !important;
+}
+
+.btn-medium {
+ padding: 12px 19px 11px 18px;
+ font-size: 1.7rem;
+}
+
+.btn-run {
+ padding: 12px 19px 11px 18px;
+ font-size: 15px;
+}
+
+.btn-small {
+ font-size: 1.5rem;
+ border-radius: 8px;
+ margin-left: 600px;
+ font-size: 15px;
+}
+
+.btn-auto-upload {
+ font-size: 15px;
+}
+
+.div-auto-upload {
+ display: contents;
+}
+
+.btn-fullwidth {
+ width: 100%;
+}
+
+button .btn-fill {
+ background-clip: padding-box;
+ border: 0;
+ border-radius: 4px;
+ bottom: 0;
+ display: block;
+ height: auto;
+ left: 0;
+ margin: 5px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: auto;
+}
+
+button .btn-fill[style*="#fff"] {
+ border: 1px solid #d2d2d2;
+}
+
+
+.btn-group[data-select-color="orange"] > .btn.active {
+ border-color: #ea7400;
+}
+
+.btn-group[data-select-color="blue"] > .btn.active {
+ border-color: #0568ae;
+}
+
+.btn-group[data-select-color="green"] > .btn.active {
+ border-color: #007a3e;
+}
+
+.btn-spinbutton-toggle.btn-group {
+ display: block !important;
+ height: 40px !important;
+ margin-top: 5px;
+ max-width: 138px;
+ min-width: 138px;
+ white-space: nowrap;
+}
+
+.btn-spinbutton-toggle .btn {
+ border-radius: 6px;
+ font-weight: normal;
+ -ms-flex: unset;
+ flex: unset;
+ height: 40px;
+ letter-spacing: normal;
+ min-width: auto;
+ padding: 3px 0 0;
+ text-align: center;
+ min-width: 46px;
+ width: 46px;
+}
+
+.btn-spinbutton-toggle .btn[data-max-value] {
+ border-bottom: 1px solid #d2d2d2;
+ border-top: 1px solid #d2d2d2;
+ box-shadow: 0 3px 2px -2px rgba(0, 0, 0, 0.08) inset;
+ background-color: #fff;
+ cursor: text;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ font-size: 2rem;
+ font-weight: normal;
+ padding: 4px 0 0;
+ text-align: center;
+ min-width: 46px !important;
+ width: 46px;
+}
+
+.btn-spinbutton-toggle .btn[data-max-value]:focus {
+ border-color: #0568ae;
+ outline: none;
+}
+
+.btn-spinbutton-toggle .btn[data-max-value]:focus + .btn {
+ border-left: 1px solid #0568ae;
+ transition: border 0.3s linear 0s;
+}
+
+.btn-spinbutton-toggle .icon-primary-subtractminimize {
+ font-size: 30px !important;
+ color: #0568ae !important;
+}
+
+.btn-spinbutton-toggle .icon-primary-add-maximize {
+ font-size: 30px !important;
+ color: #0568ae !important;
+}
+
+.btn-spinbutton-toggle .btn[disabled].icon-primary-subtractminimize {
+ background-color: #d2d2d2;
+ color: #767676 !important;
+}
+
+.btn-spinbutton-toggle .btn[disabled].icon-primary-add-maximize {
+ background-color: #d2d2d2;
+ color: #767676 !important;
+}
+
+.btn-spinbutton-toggle input.btn[disabled] {
+ background-color: #d2d2d2;
+ color: #5a5a5a;
+ cursor: not-allowed;
+}
+
+.btn-group.btn-spinbutton-toggle .btn[disabled] + .btn[disabled] {
+ border-left: 1px solid #f0f0f0 !important;
+}
+
+.btn-group.btn-spinbutton-toggle .btn[data-max-value]:focus + .btn:not(:first-child) {
+ border-left: 1px solid #0568ae !important;
+}
+
+@media (max-width: 480px) {
+ .btn-group:not([data-select-color]) > .btn {
+ font-size: 1.3rem;
+ min-width: auto;
+ }
+}
+
+button.close {
+ border: 0;
+ appearance: none;
+}
+
+.corner-button {
+ box-shadow: 0 -50px 0 0 #f2f2f2 inset;
+ height: 69px;
+ /*overflow: hidden;*/
+ position: absolute;
+ right: -35px;
+ top: -35px;
+ transform: rotate(45deg);
+ width: 69px;
+}
+
+
+.field-group input + .reset-field {
+ background: none;
+ height: 36px;
+ width: 45px;
+ display: none;
+ padding: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ box-shadow: none;
+ border: none;
+ content: " ";
+}
+
+.field-group input[type="search"] + .reset-field,
+.field-group input[type="search"] + .btn-search + .reset-field,
+.tooltip-onclick input + .reset-field,
+.tooltip-onclick input + .icon-primary-tooltip + .reset-field,
+.tooltip-onclick textarea + .reset-field,
+.tooltip-onclick textarea + .icon-primary-tooltip + .reset-field {
+ right: 45px;
+}
+
+.field-group input[type="search"] + .reset-field:after,
+.field-group input[type="search"] + .btn-search + .reset-field:after,
+input:-ms-clear {
+ display: none;
+}
+
+input[type]::-webkit-inner-spin-button,
+input[type]::-webkit-outer-spin-button {
+ -webkit-appearance: none;
+}
+
+input[type] {
+ -moz-appearance: textfield;
+}
+
+form {
+ margin: 0;
+}
+
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+
+label,
+legend {
+ display: inline-block;
+ /* font-size: 1.4rem; */
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+}
+
+legend {
+ display: block;
+}
+
+.error-msg {
+ display: none;
+}
+
+select,
+textarea,
+input {
+ border-radius: 6px;
+ color: #5a5a5a;
+ display: inline-block;
+ font-size: 1.6rem;
+ margin: 0px;
+ padding: 0 15px 0 15px;
+ vertical-align: middle;
+ line-height: normal;
+}
+
+select::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder,
+input::-webkit-input-placeholder {
+ color: #5a5a5a;
+ font-family: "Omnes-ECOMP-W02-Italic", Arial;
+ font-style: normal;
+ opacity: 1;
+}
+
+select:-moz-placeholder,
+textarea:-moz-placeholder,
+input:-moz-placeholder {
+ color: #5a5a5a;
+ font-family: "Omnes-ECOMP-W02-Italic", Arial;
+ font-style: normal;
+ opacity: 1;
+}
+
+select::-moz-placeholder,
+textarea::-moz-placeholder,
+input::-moz-placeholder {
+ color: #5a5a5a;
+ font-family: "Omnes-ECOMP-W02-Italic", Arial;
+ font-style: normal;
+ opacity: 1;
+}
+
+select:-ms-input-placeholder,
+textarea:-ms-input-placeholder,
+input:-ms-input-placeholder {
+ color: #5a5a5a;
+ font-family: "Omnes-ECOMP-W02-Italic", Arial;
+ transition: none;
+ opacity: 1;
+}
+
+select:placeholder,
+textarea:placeholder,
+input:placeholder {
+ color: #5a5a5a;
+ font-family: "Omnes-ECOMP-W02-Italic", Arial;
+ font-style: normal;
+ opacity: 1;
+}
+
+select:last-child,
+textarea:last-child,
+input:last-child {
+ margin-right: 0;
+}
+
+input:not([type="button"]) {
+ height: 36px;
+}
+
+input.input-emphasized {
+ font-size: 1.8rem;
+ height: 48px;
+ padding: 13px 20px 13px;
+}
+
+input[type="search"]:focus {
+ padding-right: 88px;
+}
+
+input[type="search"] {
+ padding-right: 40px;
+ -webkit-appearance: none !important;
+}
+
+input[type="search"].input-emphasized {
+ padding-right: 45px;
+}
+
+.btn-search[class*="btn"] {
+ background-color: transparent;
+ background-position: 50% 50%;
+ background-size: 20px;
+ background-repeat: no-repeat;
+ border: none;
+ height: 100%;
+ margin-left: 0;
+ margin-top: 0;
+ min-width: 45px !important;
+ outline-offset: 0;
+ padding: 0 !important;
+ position: absolute;
+ right: 0;
+ top: 0;
+ border-radius: 0 5px 5px 0;
+ min-width: 44px;
+ width: 44px;
+}
+
+.input-emphasized + .btn-search[class*="btn"],
+.input-emphasized + .reset-field + .btn-search[class*="btn"] {
+ background-size: 26px;
+ height: 46px;
+ top: 1px;
+ outline-offset: -3px;
+ margin-bottom: 0;
+ border-radius: 0 5px 5px 0;
+}
+
+input[type="search"].input-emphasized + .reset-field {
+ right: 45px !important;
+}
+
+
+input[data-provide="datepicker"],
+[data-provide="datepicker"]:-moz-placeholder,
+[data-provide="datepicker"]:-ms-input-placeholder,
+[data-provide="datepicker"]:-webkit-input-placeholder {
+ color: #0568ae !important;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+
+input[disabled],
+input[readonly],
+select[disabled],
+select[readonly],
+textarea[disabled],
+textarea[readonly],
+i.icon-primary-calendar.disabled,
+span.icon-primary-calendar.readonly {
+ cursor: not-allowed;
+ background-color: #f2f2f2;
+ box-shadow: none;
+}
+
+i.icon-primary-calendar.disabled input,
+span.icon-primary-calendar.readonly input {
+ color: #959595 !important;
+}
+
+textarea {
+ display: block;
+ width: 800px;
+
+ padding: 15px;
+}
+
+textarea.small {
+ line-height: 20px;
+}
+
+textarea + .reset-field {
+ display: none;
+}
+
+textarea::-webkit-input-placeholder {
+ line-height: .99;
+}
+
+textarea:-moz-placeholder {
+ line-height: .99;
+}
+
+textarea::-moz-placeholder {
+ line-height: .99;
+}
+
+textarea:-ms-input-placeholder {
+ line-height: .99;
+}
+
+textarea:placeholder {
+ line-height: .99;
+}
+
+textarea,
+input {
+ background-color: #ffffff;
+ border: 1px solid #d2d2d2;
+ -webkit-appearance: none;
+ box-shadow: 2px 3px 2px -2px rgba(0, 0, 0, 0.08) inset;
+ transition: border .3s linear 0s;
+ font-family: "Omnes-ECOMP-W02", Arial;
+}
+
+textarea:focus,
+input:focus {
+ outline: 0;
+ border-color: #0568ae;
+}
+
+.input-append {
+ display: table;
+}
+
+.input-append > div {
+ display: table-cell;
+ width: 1%;
+}
+
+.input-append > .field-group {
+ width: 100%;
+}
+
+.row .field-group input[class*="span"] {
+ float: none;
+}
+
+.field-group {
+ position: relative;
+ display: inline-block;
+}
+
+label + .field-group,
+label + .input-append,
+label + .row,
+label + .row-nowrap,
+label + .form-row {
+ margin-top: 5px;
+}
+
+.field-group {
+ position: relative;
+ display: block;
+}
+
+.field-group input:not([type="button"])[disabled] {
+ padding-right: 15px;
+}
+
+input:invalid,
+textarea:invalid,
+select:invalid {
+ outline: none !important;
+}
+
+.form-row {
+ margin-top: 20px;
+}
+
+.form-row.nomar {
+ margin: 0;
+}
+
+.row-nowrap.no-flex.form-row > label + br {
+ margin-bottom: 5px;
+}
+
+span.form-row {
+ display: inline-block;
+}
+
+legend + .form-row {
+ margin-top: 20px;
+}
+
+.tooltip-onclick input {
+ padding-right: 45px;
+}
+
+.ds2_touchevents .tooltip-onclick input:focus {
+ padding-right: 95px;
+}
+
+.radio {
+ position: relative;
+ min-height: 24px;
+ font-family: "Omnes-ECOMP-W02", Arial;
+ font-size: 1.6rem;
+ margin-bottom: 5px;
+}
+
+.radio input {
+ -webkit-tap-highlight-color: transparent;
+ height: 10px;
+ margin: 6px;
+ opacity: 0;
+ outline: none;
+ position: absolute;
+ left: 1px;
+ top: 1px;
+ width: 10px;
+}
+
+.radio input:focus + .skin {
+ border-color: #0568ae;
+}
+
+.radio input:focus + .skin:before {
+ content: "";
+ height: 34px;
+ left: -6px;
+ top: -6px;
+ outline: 1px dotted #000000;
+ position: absolute;
+ width: 34px;
+}
+
+.radio input + .skin {
+ border-radius: 100%;
+}
+
+.radio input:checked + .skin:after {
+ background-color: #0568ae;
+ border-radius: 100%;
+ border: 3px solid #FFFFFF;
+ content: "";
+ display: block;
+ height: 16px;
+ position: absolute;
+ width: 16px;
+}
+
+.radio input:disabled + .skin {
+ cursor: not-allowed;
+ background-color: #d2d2d2;
+ border-color: #d2d2d2;
+ color: #666666;
+}
+
+.radio input:disabled + .skin + span {
+ cursor: not-allowed;
+ color: #666666;
+}
+
+.radio input:disabled:checked + .skin:after {
+ background-color: #666666;
+}
+
+.radio input:invalid + .skin {
+ border: solid 1px #cf2a2a;
+}
+
+.radio .skin {
+ background-color: #FFFFFF;
+ border: 1px solid #d2d2d2;
+ border-radius: 3px;
+ display: inline-block;
+ height: 24px;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 24px;
+}
+
+.radio span {
+ display: inline-block;
+ margin-left: 34px;
+ margin-top: 0;
+ position: relative;
+ top: 3px;
+}
+
+.radio label {
+ font-size: 1.6rem;
+ font-family: "Omnes-ECOMP-W02", Arial;
+}
+
+.radio.inline {
+ display: inline-block;
+ margin-bottom: 10px;
+ vertical-align: middle;
+ margin-right: 10px;
+}
+
+.radio.inline:last-child {
+ margin-right: 0;
+}
+
+.radio-box {
+ border: 1px solid #d2d2d2;
+ border-radius: 8px;
+}
+
+.radio-box > [role="radio"] label {
+ padding: 15px 15px 20px 15px;
+ display: block;
+ width: 100%;
+}
+
+.radio-box > [role="radio"] label .skin + span {
+ top: 2px;
+}
+
+.radio-box > [role="radio"] + div {
+ padding: 0 15px 15px 47px;
+}
+
+.radio-box > [aria-checked="false"] label > input {
+ top: 15px;
+ left: 15px;
+}
+
+.radio-box > [aria-checked="false"] label .skin {
+ top: 15px;
+ left: 15px;
+}
+
+.radio-box > [aria-checked="true"] label > input {
+ top: 13px;
+ left: 13px;
+}
+
+.radio-box > [aria-checked="true"] label .skin {
+ top: 13px;
+ left: 13px;
+}
+
+.radio-box.active {
+ border: 3px solid #0568ae;
+}
+
+.radio-box.active > [role="radio"] label {
+ padding: 13px 14px 19px 13px;
+}
+
+.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;
+}
+
+.breadcrumb {
+ padding: 10px 15px;
+ height: 40px;
+ list-style: none;
+ border-bottom: 1px solid #d2d2d2;
+ font-size: 1.2rem;
+ width: 100%;
+ z-index: 1000;
+}
+
+.breadcrumb > li {
+ position: relative;
+ display: inline-block;
+ margin-right: 15px;
+}
+
+.breadcrumb > li:after {
+ font-size: 8px;
+ margin-right: 0;
+ right: -8px;
+ color: #333333;
+}
+
+.breadcrumb > li:last-child {
+ color: #333333;
+}
+
+.breadcrumb > li:last-child:after {
+ content: "";
+}
+
+.breadcrumb li > * {
+ float: none !important;
+ margin: 0;
+}
+
+.breadcrumb {
+ padding: 10px 15px !important;
+}
+
+/* ARROW */
+/* spanish */
+.datepicker {
+ background-color: #FFFFFF;
+ padding: 0;
+ border-radius: 5px;
+ direction: ltr;
+}
+
+.datepicker > div {
+ display: none;
+}
+
+.datepicker table {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ margin: 0 0 0 0;
+}
+
+.datepicker td {
+ text-align: center;
+ display: block;
+ width: 30px;
+ height: 30px;
+ border: none;
+}
+
+.datepicker td span {
+ display: block;
+ width: 23%;
+ height: 54px;
+ line-height: 54px;
+ float: left;
+ margin: 1%;
+ cursor: pointer;
+ border-radius: 4px;
+}
+
+.datepicker td span:hover {
+ background: #eeeeee;
+}
+
+.datepicker td span.disabled {
+ background: none;
+ color: #5A5A5A;
+ cursor: default;
+}
+
+.datepicker td span.disabled:hover {
+ background: none;
+ color: #5A5A5A;
+ cursor: default;
+}
+
+.datepicker td span.active {
+ color: #FFFFFF;
+ background-color: #0568ae;
+ border-color: #357ebd;
+}
+
+.datepicker td span.active:hover {
+ color: #FFFFFF;
+ background-color: #0568ae;
+ border-color: #357ebd;
+}
+
+.datepicker td span.active.disabled {
+ color: #FFFFFF;
+ background-color: #0568ae;
+ border-color: #357ebd;
+}
+
+.datepicker th {
+ text-align: center;
+ display: block;
+ width: 30px;
+ height: 30px;
+ border: none;
+}
+
+.datepicker tbody:focus {
+ outline: none;
+}
+
+.datepicker td.day {
+ background-color: transparent;
+ color: #0568ae;
+ cursor: pointer;
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+ font-size: 16px;
+ height: 34px;
+ line-height: 30rem;
+ margin: -2px -1px 0 0;
+ overflow: hidden;
+ text-align: center;
+ width: 42px;
+}
+
+.datepicker:focus {
+ outline: 1px dotted #191919;
+ outline-offset: -2px;
+}
+
+.datepicker th[tabindex]:focus {
+ outline-offset: -15px;
+}
+
+.datepicker td.day.focused {
+ background: #ededed;
+ cursor: pointer;
+}
+
+.datepicker td.day.focused.active {
+ background-color: #ededed;
+ color: #0568ae;
+}
+
+.datepicker td.disabled {
+ font-family: "Omnes-ECOMP-W02", Arial;
+ color: #5A5A5A;
+ cursor: default;
+}
+
+.datepicker td.disabled:hover {
+ font-family: "Omnes-ECOMP-W02", Arial;
+ color: #5A5A5A;
+ cursor: default;
+}
+
+.datepicker td.disabled:hover .show-date {
+ font-family: "Omnes-ECOMP-W02", Arial;
+ color: #5A5A5A;
+}
+
+.datepicker td.disabled .show-date {
+ font-family: "Omnes-ECOMP-W02", Arial;
+ color: #5A5A5A;
+}
+
+.datepicker td.today {
+ color: #FFFFFF;
+ background-color: #0568ae;
+}
+
+.datepicker td.today:hover {
+ color: #FFFFFF;
+ background-color: #0568ae;
+ color: #FFFFFF;
+ background-color: #0568ae;
+}
+
+.datepicker td.today:active {
+ color: #FFFFFF;
+ background-color: #0568ae;
+}
+
+.datepicker td.today:focus {
+ color: #FFFFFF;
+ background-color: #0568ae;
+}
+
+.datepicker td.today.disabled {
+ color: #FFFFFF;
+ background-color: #0568ae;
+}
+
+.datepicker td.today.active {
+ color: #FFFFFF;
+ background-color: #0568ae;
+}
+
+.datepicker td.today.active:hover {
+ color: #FFFFFF;
+}
+
+.datepicker td.selected {
+ color: #FFFFFF;
+ background-color: #95959500;
+}
+
+.datepicker td.selected:hover {
+ color: #FFFFFF;
+ background-color: #95959500;
+}
+
+.datepicker td.selected.disabled {
+ color: #FFFFFF;
+ background-color: #95959500;
+}
+
+.datepicker td.active:not(.new) {
+ color: #FFFFFF;
+ border-color: #357ebd;
+}
+
+.datepicker td.active:not(.new) .show-date {
+ color: #0568ae;
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+}
+
+.datepicker td.active:hover:not(.new) {
+ color: #FFFFFF;
+ border-color: #357ebd;
+}
+
+.datepicker td.active:hover:not(.new) .show-date {
+ color: #0568ae;
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+}
+
+.datepicker .start-date .show-date {
+ background-color: #0568ae;
+ color: #FFFFFF !important;
+ border-radius: 5px 0 0 5px;
+ z-index: 1;
+}
+
+.datepicker .start-date .show-date:before {
+ background-color: #0568ae;
+ content: "";
+ display: block;
+ height: 26px;
+ left: 20px;
+ position: absolute;
+ width: 100%;
+ z-index: -1;
+}
+
+.datepicker .between-date .show-date {
+ background-color: #0568ae;
+ color: #FFFFFF !important;
+}
+
+.datepicker .between-date .show-date:before {
+ background-color: #0568ae;
+ content: "";
+ display: block;
+ height: 26px;
+ left: 0;
+ position: absolute;
+ width: 100%;
+ z-index: -1;
+}
+
+.datepicker .between-date:first-child .show-date:before {
+ background-color: #FFFFFF;
+ content: "";
+ height: 26px;
+ position: absolute;
+ left: 0;
+ width: 8px;
+}
+
+.datepicker .end-date .show-date {
+ background-color: #0568ae;
+ color: #FFFFFF !important;
+ border-radius: 0 5px 5px 0;
+}
+
+.datepicker .end-date .show-date:before {
+ background-color: #0568ae;
+ content: "";
+ display: block;
+ height: 26px;
+ left: -20px;
+ position: absolute;
+ width: 100%;
+ z-index: -1;
+}
+
+.datepicker .end-date:first-child .show-date:after {
+ background-color: #FFFFFF;
+ content: "";
+ height: 26px;
+ position: absolute;
+ left: 0;
+ width: 8px;
+}
+
+.datepicker .end-date:first-child .show-date::before {
+ background-color: #FFFFFF;
+}
+
+.datepicker tr td.start-date:last-child .show-date:after {
+ background-color: #FFFFFF;
+ content: "";
+ height: 26px;
+ position: absolute;
+ right: 0;
+ width: 8px;
+}
+
+.datepicker tr td.start-date:last-child:focus .show-date:after {
+ height: 30px;
+ width: 30px;
+ background-color: transparent;
+}
+
+.datepicker tr td.start-date:first-child:focus .show-date:after {
+ height: 30px;
+ width: 30px;
+ background-color: transparent;
+}
+
+.datepicker tr td.between-date:last-child .show-date:after {
+ background-color: #FFFFFF;
+ content: "";
+ height: 26px;
+ position: absolute;
+ right: 0;
+ width: 8px;
+}
+
+.datepicker tr td.between-date:last-child:focus .show-date:after {
+ height: 30px;
+ width: 30px;
+ background-color: transparent;
+}
+
+.datepicker tr td.between-date:first-child:focus .show-date:after {
+ height: 30px;
+ width: 30px;
+ background-color: transparent;
+}
+
+.datepicker tr td.end-date:last-child:focus .show-date:after {
+ height: 30px;
+ width: 30px;
+ background-color: transparent;
+}
+
+.datepicker tr td.end-date:first-child:focus .show-date:after {
+ height: 30px;
+ width: 30px;
+ background-color: transparent;
+}
+
+.datepicker th.datepicker-switch {
+ width: 198px;
+ font-size: 20px;
+ font-weight: normal;
+ cursor: default !important;
+}
+
+.datepicker thead tr:first-child th {
+ cursor: pointer;
+ height: 60px;
+ line-height: 60px;
+}
+
+.datepicker thead tr:first-child th.cw {
+ cursor: default;
+ background-color: transparent;
+}
+
+.datepicker tfoot tr th {
+ cursor: pointer;
+ height: 60px;
+ line-height: 60px;
+ height: auto;
+ line-height: normal;
+}
+
+.datepicker tfoot tr th li {
+ margin-bottom: 5px;
+}
+
+.datepicker .prev {
+ color: transparent;
+ font-size: 0;
+ margin: 0 -1px -1px 0;
+ width: 46px;
+}
+
+.datepicker .prev i {
+ color: #0568ae;
+ position: absolute;
+ font-size: 27px;
+ margin: 0;
+ top: 15px;
+ left: 8px;
+}
+
+.datepicker .next {
+ color: transparent;
+ font-size: 0;
+ margin: 0 -1px -1px 0;
+ width: 46px;
+}
+
+.datepicker .next i {
+ color: #0568ae;
+ position: absolute;
+ font-size: 27px;
+ margin: 0;
+ top: 15px;
+ right: 8px;
+}
+
+.datepicker .cw {
+ font-size: 5px;
+ width: 12px;
+ padding: 0 2px 0 5px;
+ vertical-align: middle;
+}
+
+.datepicker .due-date .show-date {
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+ background-color: #cf2a2a;
+ border-radius: 5px;
+ color: #FFFFFF !important;
+}
+
+.datepicker .day.active .show-date:after {
+ border: 2px solid #0568ae;
+ border-radius: 7px;
+ content: "";
+ display: block;
+ height: 30px;
+ left: 4px;
+ position: absolute;
+ top: 0;
+ width: 30px;
+}
+
+.datepicker .day:focus .show-date:after {
+ border: 2px solid #0568ae;
+ border-radius: 7px;
+ content: "";
+ display: block;
+ height: 30px;
+ left: 4px;
+ position: absolute;
+ top: 0;
+ width: 30px;
+ height: 30px;
+ left: 4px;
+ top: 0;
+ width: 30px;
+}
+
+.datepicker .due-date.disabled .show-date:after {
+ border: 2px solid #0568ae;
+ border-radius: 7px;
+ content: "";
+ display: block;
+ height: 30px;
+ left: 4px;
+ position: absolute;
+ top: 0;
+ width: 30px;
+}
+
+.datepicker .day.due-date:focus .show-date:after {
+ height: 30px;
+ left: 4px;
+ top: 0;
+ width: 30px;
+}
+
+.datepicker .due-date.old:after {
+ visibility: hidden;
+}
+
+.datepicker .due-date.new:after {
+ visibility: hidden;
+}
+
+.datepicker .due-date.active:after {
+ border-color: #FFFFFF;
+}
+
+.datepicker .due-date.active.focused {
+ color: #0568ae !important;
+}
+
+.datepicker .due-date.active.focused:after {
+ border-color: #cf2a2a !important;
+}
+
+.datepicker .dow {
+ height: 24px;
+ width: 42px;
+ font-weight: normal;
+ position: relative;
+ overflow: hidden;
+ color: transparent;
+ letter-spacing: -6px;
+ margin: 0 -1px -1px 0;
+}
+
+.datepicker .dow span[aria-hidden="true"] {
+ bottom: 0;
+ color: #5A5A5A;
+ display: block;
+ left: 1px;
+ letter-spacing: 0;
+ line-height: .9;
+ margin: 0 auto;
+ padding: 0;
+ position: relative;
+ width: 22px;
+}
+
+.datepicker .calendar-legend {
+ margin-top: 3px;
+ margin-bottom: 20px;
+}
+
+.datepicker .calendar-legend li {
+ font-size: 1.4rem;
+ font-weight: normal;
+ margin-bottom: 5px;
+ padding-left: 10px;
+ padding-top: 5px;
+ position: relative;
+}
+
+.datepicker i.legend-due-date {
+ background-color: #cf2a2a;
+ border-radius: 5px;
+ height: 18px;
+ width: 18px;
+ margin-right: 8px;
+ vertical-align: middle;
+ display: inline-block;
+}
+
+.datepicker i.legend-selected-date {
+ background-color: #FFFFFF;
+ border: 2px solid #0568ae;
+ border-radius: 5px;
+ height: 18px;
+ width: 18px;
+ margin-right: 8px;
+ vertical-align: middle;
+ display: inline-block;
+}
+
+.datepicker i.legend-selectedisdue {
+ background-color: #FFFFFF;
+ border: 2px solid #0568ae;
+ border-radius: 5px;
+ display: inline-block;
+ height: 18px;
+ margin-right: 8px;
+ position: relative;
+ vertical-align: middle;
+ width: 18px;
+}
+
+.datepicker i.legend-selectedisdue:after {
+ background-color: #cf2a2a;
+ border-radius: 3px;
+ content: "";
+ display: block;
+ height: 10px;
+ left: 2px;
+ position: absolute;
+ top: 2px;
+ width: 10px;
+}
+
+.datepicker .text-left {
+ width: 100%;
+}
+
+.datepicker .active.old {
+ background-color: #ededed !important;
+ color: #ededed !important;
+}
+
+.datepicker-inline {
+ width: 220px;
+}
+
+.datepicker.datepicker-rtl {
+ direction: rtl;
+}
+
+.datepicker.datepicker-rtl td span {
+ float: right;
+}
+
+.datepicker-dropdown {
+ top: 0;
+ left: 0;
+}
+
+.datepicker-dropdown:before {
+ content: " ";
+ display: inline-block;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-bottom: 10px solid #d2d2d2;
+ border-top: 0;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+}
+
+.datepicker-dropdown:after {
+ content: " ";
+ display: inline-block;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-bottom: 10px solid #fff;
+ border-top: 0;
+ position: absolute;
+}
+
+.datepicker-dropdown.datepicker-orient-left:before {
+ left: 16px;
+}
+
+.datepicker-dropdown.datepicker-orient-left:after {
+ left: 16px;
+}
+
+.datepicker-dropdown.datepicker-orient-right:before {
+ right: 16px;
+}
+
+.datepicker-dropdown.datepicker-orient-right:after {
+ right: 16px;
+}
+
+.datepicker-dropdown.datepicker-orient-top:before {
+ top: -10px;
+}
+
+.datepicker-dropdown.datepicker-orient-top:after {
+ top: -9px;
+}
+
+.datepicker-dropdown.datepicker-orient-bottom:before {
+ bottom: -7px;
+ border-bottom: 0;
+ border-top: 7px solid #959595;
+}
+
+.datepicker-dropdown.datepicker-orient-bottom:after {
+ bottom: -6px;
+ border-bottom: 0;
+ border-top: 6px solid #fff;
+}
+
+.datepicker.days div.datepicker-days {
+ display: block;
+}
+
+.datepicker.months div.datepicker-months {
+ display: block;
+}
+
+.datepicker.years div.datepicker-years {
+ display: block;
+}
+
+.show-date {
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+ color: #0568ae;
+ height: 26px;
+ line-height: 26px;
+ margin: 4px auto 0;
+ width: 26px;
+}
+
+.input-group.date .input-group-addon i {
+ cursor: pointer;
+ width: 16px;
+ height: 16px;
+}
+
+.datepicker.dropdown-menu {
+ box-shadow: 0 10px 15px -10px rgba(0, 0, 0, 0.7);
+ position: absolute;
+ top: 100%;
+ left: 0;
+ float: left;
+ display: none;
+ margin-top: 13px;
+ width: 290px;
+ list-style: none;
+ background-color: #FFFFFF;
+ border: 1px solid #d2d2d2;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 5px;
+ color: #333333;
+ font-size: 13px;
+ line-height: 1.428571429;
+ z-index: 1050;
+}
+
+.datepicker.dropdown-menu th {
+ display: block;
+ float: left;
+ padding: 0;
+ position: relative;
+}
+
+.datepicker.dropdown-menu td {
+ display: block;
+ float: left;
+ padding: 0;
+ position: relative;
+}
+
+.s {
+ display: block;
+ height: 20px;
+ width: 12px;
+ margin: 0 auto;
+ background-color: #FFFFFF;
+ background-repeat: no-repeat;
+ background-position: -62px 0;
+}
+
+.m {
+ display: block;
+ height: 20px;
+ width: 12px;
+ margin: 0 auto;
+ background-color: #FFFFFF;
+ background-repeat: no-repeat;
+ background-position: -5px 0;
+}
+
+.t {
+ display: block;
+ height: 20px;
+ width: 12px;
+ margin: 0 auto;
+ background-color: #FFFFFF;
+ background-repeat: no-repeat;
+ background-position: -19px 0;
+}
+
+.w {
+ display: block;
+ height: 20px;
+ width: 12px;
+ margin: 0 auto;
+ background-color: #FFFFFF;
+ background-repeat: no-repeat;
+ background-position: -34px 0;
+}
+
+.f {
+ display: block;
+ height: 20px;
+ width: 12px;
+ margin: 0 auto;
+ background-color: #FFFFFF;
+ background-repeat: no-repeat;
+ background-position: -49px 0;
+}
+
+.d {
+ display: block;
+ height: 20px;
+ width: 12px;
+ margin: 0 auto;
+ background-color: #FFFFFF;
+ background-repeat: no-repeat;
+ background-position: 0 0;
+}
+
+.l {
+ display: block;
+ height: 20px;
+ width: 12px;
+ margin: 0 auto;
+ background-color: #FFFFFF;
+ background-repeat: no-repeat;
+ background-position: 0 0;
+}
+
+.v {
+ display: block;
+ height: 20px;
+ width: 12px;
+ margin: 0 auto;
+ background-color: #FFFFFF;
+ background-repeat: no-repeat;
+ background-position: 0 0;
+}
+
+.j {
+ display: block;
+ height: 20px;
+ width: 12px;
+ margin: 0 auto;
+ background-color: #FFFFFF;
+ background-repeat: no-repeat;
+ background-position: 0 0;
+}
+
+.datepicker {
+ background-color: #fff;
+ padding: 0;
+ border-radius: 5px;
+ direction: ltr;
+}
+
+.datepicker-inline {
+ width: 220px;
+}
+
+.datepicker.datepicker-rtl {
+ direction: rtl;
+}
+
+.datepicker.datepicker-rtl td span {
+ float: right;
+}
+
+.datepicker-dropdown {
+ top: 0;
+ left: 0;
+}
+
+/* ARROW */
+.datepicker-dropdown:before {
+ content: " ";
+ display: inline-block;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-bottom: 10px solid #d2d2d2;
+ border-top: 0;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+}
+
+.datepicker-dropdown:after {
+ content: " ";
+ display: inline-block;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-bottom: 10px solid #fff;
+ border-top: 0;
+ position: absolute;
+}
+
+.datepicker-dropdown.datepicker-orient-left:before,
+.datepicker-dropdown.datepicker-orient-left:after {
+ left: 255px;
+}
+
+.datepicker-dropdown.datepicker-orient-right:before,
+.datepicker-dropdown.datepicker-orient-right:after {
+ right: 16px;
+}
+
+.datepicker-dropdown.datepicker-orient-top:before {
+ top: -10px;
+}
+
+.datepicker-dropdown.datepicker-orient-top:after {
+ top: -9px;
+}
+
+.datepicker-dropdown.datepicker-orient-bottom:before {
+ bottom: -7px;
+ border-bottom: 0;
+ border-top: 7px solid #959595;
+}
+
+.datepicker-dropdown.datepicker-orient-bottom:after {
+ bottom: -6px;
+ border-bottom: 0;
+ border-top: 6px solid #fff;
+}
+
+.datepicker > div {
+ display: none;
+}
+
+.datepicker.days div.datepicker-days {
+ display: block;
+}
+
+.datepicker.months div.datepicker-months {
+ display: block;
+}
+
+.datepicker.years div.datepicker-years {
+ display: block;
+}
+
+.datepicker table {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ margin: 0 0 0 0;
+}
+
+.datepicker td,
+.datepicker th {
+ text-align: center;
+ display: block;
+ width: 30px;
+ height: 30px;
+ border: none;
+}
+
+.datepicker tbody :focus {
+ outline: none;
+}
+
+.datepicker td.day {
+ background-color: transparent;
+ color: #0568ae;
+ cursor: pointer;
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+ font-size: 16px;
+ height: 34px;
+ line-height: 30rem;
+ margin: -2px -1px 0 0;
+ overflow: hidden;
+ text-align: center;
+ width: 42px;
+}
+
+.datepicker :focus {
+ outline: 1px dotted #000;
+ outline-offset: -2px;
+}
+
+.datepicker td.day.focused {
+ background: #ededed;
+ cursor: pointer;
+}
+
+.datepicker td.day.focused.active {
+ background-color: #ededed;
+ color: #0568ae;
+}
+
+.datepicker td.disabled,
+.datepicker td.disabled:hover {
+ font-family: "Omnes-ECOMP-W02", Arial;
+ color: #5a5a5a;
+ cursor: default;
+}
+
+.datepicker td.today,
+.datepicker td.today:hover,
+.datepicker td.today.disabled {
+ color: #fff;
+ background-color: #0568ae;
+}
+
+.datepicker td.today.active,
+.datepicker td.today:active,
+.datepicker td.today:hover,
+.datepicker td.today:focus {
+ color: #fff;
+ background-color: #0568ae;
+}
+
+.datepicker td.today.active:hover {
+ color: #fff;
+}
+
+.datepicker td.selected,
+.datepicker td.selected:hover,
+.datepicker td.selected.disabled {
+ color: #ffffff;
+ background-color: #959595;
+}
+
+.datepicker td.active:not(.new),
+.datepicker td.active:hover:not(.new) {
+ color: #ffffff;
+ border-color: #357ebd;
+}
+
+.show-date {
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+ color: #0568ae;
+ height: 26px;
+ line-height: 26px;
+ margin: 4px auto 0;
+ width: 26px;
+}
+
+.datepicker .start-date .show-date,
+.datepicker .between-date .show-date,
+.datepicker .end-date .show-date {
+ background-color: #0568ae;
+ color: #fff !important;
+}
+
+.datepicker .start-date .show-date {
+ border-radius: 5px 0 0 5px;
+ z-index: 1;
+}
+
+.datepicker .start-date .show-date:before {
+ background-color: #0568ae;
+ content: "";
+ display: block;
+ height: 26px;
+ left: 20px;
+ position: absolute;
+ width: 100%;
+ z-index: -1;
+}
+
+.datepicker .between-date .show-date:before {
+ background-color: #0568ae;
+ content: "";
+ display: block;
+ height: 26px;
+ left: 0;
+ position: absolute;
+ width: 100%;
+ z-index: -1;
+}
+
+.datepicker .end-date .show-date {
+ border-radius: 0 5px 5px 0;
+}
+
+.datepicker .end-date .show-date:before {
+ background-color: #0568ae;
+ content: "";
+ display: block;
+ height: 26px;
+ left: -20px;
+ position: absolute;
+ width: 100%;
+ z-index: -1;
+}
+
+.datepicker .between-date:first-child .show-date:before {
+ background-color: #fff;
+ content: "";
+ height: 26px;
+ position: absolute;
+ left: 0;
+ width: 8px;
+}
+
+.datepicker .end-date:first-child .show-date:after {
+ background-color: #fff;
+ content: "";
+ height: 26px;
+ position: absolute;
+ left: 0;
+ width: 8px;
+}
+
+.datepicker .end-date:first-child .show-date::before {
+ background-color: #fff;
+}
+
+.datepicker tr td.start-date:last-child .show-date:after,
+.datepicker tr td.between-date:last-child .show-date:after {
+ background-color: #fff;
+ content: "";
+ height: 26px;
+ position: absolute;
+ right: 0;
+ width: 8px;
+}
+
+.datepicker tr td.start-date:last-child:focus .show-date:after,
+.datepicker tr td.end-date:last-child:focus .show-date:after,
+.datepicker tr td.between-date:last-child:focus .show-date:after,
+.datepicker tr td.start-date:first-child:focus .show-date:after,
+.datepicker tr td.end-date:first-child:focus .show-date:after,
+.datepicker tr td.between-date:first-child:focus .show-date:after {
+ height: 30px;
+ width: 30px;
+ background-color: transparent;
+}
+
+.datepicker td.active:not(.new) .show-date,
+.datepicker td.active:hover:not(.new) .show-date {
+ color: #0568ae;
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+}
+
+.datepicker td.disabled .show-date,
+.datepicker td.disabled:hover .show-date {
+ font-family: "Omnes-ECOMP-W02", Arial;
+ color: #5a5a5a;
+}
+
+.datepicker td span {
+ display: block;
+ width: 23%;
+ height: 54px;
+ line-height: 54px;
+ float: left;
+ margin: 1%;
+ cursor: pointer;
+ border-radius: 4px;
+}
+
+.datepicker td span:hover {
+ background: #eeeeee;
+}
+
+.datepicker td span.disabled,
+.datepicker td span.disabled:hover {
+ background: none;
+ color: #5a5a5a;
+ cursor: default;
+}
+
+.datepicker td span.active,
+.datepicker td span.active:hover,
+.datepicker td span.active.disabled {
+ color: #ffffff;
+ background-color: #0568ae;
+ border-color: #357ebd;
+}
+
+.datepicker th.datepicker-switch {
+ width: 198px;
+ font-size: 20px;
+ font-weight: normal;
+ cursor: default !important;
+}
+
+.datepicker thead tr:first-child th,
+.datepicker tfoot tr th {
+ cursor: pointer;
+ height: 60px;
+ line-height: 60px;
+}
+
+.datepicker tfoot tr th {
+ height: auto;
+ line-height: normal;
+}
+
+.datepicker tfoot tr th li {
+ margin-bottom: 5px;
+}
+
+.datepicker .prev,
+.datepicker .next {
+ color: transparent;
+ font-size: 0;
+ margin: 0 -1px -1px 0;
+ width: 46px;
+}
+
+.datepicker .prev i,
+.datepicker .next i {
+ color: #0568ae;
+ position: absolute;
+ font-size: 27px;
+ margin: 0;
+ top: 15px;
+}
+
+.datepicker .prev i {
+ left: 8px;
+}
+
+.datepicker .next i {
+ right: 8px;
+}
+
+.datepicker .cw {
+ font-size: 5px;
+ width: 12px;
+ padding: 0 2px 0 5px;
+ vertical-align: middle;
+}
+
+.datepicker thead tr:first-child th.cw {
+ cursor: default;
+ background-color: transparent;
+}
+
+.input-group.date .input-group-addon i {
+ cursor: pointer;
+ width: 16px;
+ height: 16px;
+}
+
+.datepicker.dropdown-menu {
+ box-shadow: 0 10px 15px -10px rgba(0, 0, 0, 0.7);
+ position: absolute;
+ top: 100%;
+ left: 0;
+ float: left;
+ display: none;
+ margin-top: 13px;
+ width: 290px;
+ list-style: none;
+ background-color: #ffffff;
+ border: 1px solid #d2d2d2;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 5px;
+ color: #333333;
+ font-size: 13px;
+ line-height: 1.428571429;
+ z-index: 1050;
+}
+
+.datepicker.dropdown-menu th,
+.datepicker.dropdown-menu td {
+ display: block;
+ float: left;
+ padding: 0;
+ position: relative;
+}
+
+.datepicker .due-date .show-date {
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+ background-color: #cf2a2a;
+ border-radius: 5px;
+ color: #fff !important;
+}
+
+.datepicker .day.active .show-date:after,
+.datepicker .day:focus .show-date:after,
+.datepicker .due-date.disabled .show-date:after {
+ border: 2px solid #0568ae;
+ border-radius: 7px;
+ content: "";
+ display: block;
+ height: 30px;
+ left: 4px;
+ position: absolute;
+ top: 0;
+ width: 30px;
+}
+
+.datepicker .day:focus .show-date:after {
+ height: 30px;
+ left: 4px;
+ top: 0;
+ width: 30px;
+}
+
+.datepicker .day.due-date:focus .show-date:after {
+ height: 30px;
+ left: 4px;
+ top: 0;
+ width: 30px;
+}
+
+.datepicker .due-date.old:after,
+.datepicker .due-date.new:after {
+ visibility: hidden;
+}
+
+.datepicker .due-date.active:after {
+ border-color: #fff;
+}
+
+.datepicker .due-date.active.focused {
+ color: #0568ae !important;
+}
+
+.datepicker .due-date.active.focused:after {
+ border-color: #cf2a2a !important;
+}
+
+.datepicker .dow {
+ height: 24px;
+ width: 42px;
+ font-weight: normal;
+ position: relative;
+ overflow: hidden;
+ color: transparent;
+ letter-spacing: -6px;
+ margin: 0 -1px -1px 0;
+}
+
+.datepicker .dow span[aria-hidden="true"] {
+ bottom: 0;
+ color: #5a5a5a;
+ display: block;
+ left: 1px;
+ letter-spacing: 0;
+ line-height: .9;
+ margin: 0 auto;
+ padding: 0;
+ position: relative;
+ width: 22px;
+}
+
+.datepicker .calendar-legend {
+ margin-top: 3px;
+ margin-bottom: 20px;
+}
+
+.datepicker .calendar-legend li {
+ font-size: 1.4rem;
+ font-weight: normal;
+ margin-bottom: 5px;
+ padding-left: 10px;
+ padding-top: 5px;
+ position: relative;
+}
+
+.datepicker i.legend-due-date {
+ background-color: #cf2a2a;
+ border-radius: 5px;
+ height: 18px;
+ width: 18px;
+ margin-right: 8px;
+ vertical-align: middle;
+ display: inline-block;
+}
+
+.datepicker i.legend-selected-date {
+ background-color: #fff;
+ border: 2px solid #0568ae;
+ border-radius: 5px;
+ height: 18px;
+ width: 18px;
+ margin-right: 8px;
+ vertical-align: middle;
+ display: inline-block;
+}
+
+.datepicker i.legend-selectedisdue {
+ background-color: #fff;
+ border: 2px solid #0568ae;
+ border-radius: 5px;
+ display: inline-block;
+ height: 18px;
+ margin-right: 8px;
+ position: relative;
+ vertical-align: middle;
+ width: 18px;
+}
+
+.datepicker i.legend-selectedisdue:after {
+ background-color: #cf2a2a;
+ border-radius: 3px;
+ content: "";
+ display: block;
+ height: 10px;
+ left: 2px;
+ position: absolute;
+ top: 2px;
+ width: 10px;
+}
+
+.datepicker .text-left {
+ width: 100%;
+}
+
+.datepicker .active.old {
+ background-color: #ededed !important;
+ color: #ededed !important;
+}
+
+.s,
+.m,
+.t,
+.w,
+.f,
+.d,
+.l,
+.v,
+.j {
+ display: block;
+ height: 20px;
+ width: 12px;
+ margin: 0 auto;
+ background-color: white;
+ background-repeat: no-repeat;
+}
+
+.s {
+ background-position: -62px 0;
+}
+
+.m {
+ background-position: -5px 0;
+}
+
+.t {
+ background-position: -19px 0;
+}
+
+.w {
+ background-position: -34px 0;
+}
+
+.f {
+ background-position: -49px 0;
+}
+
+/* spanish */
+.d {
+ background-position: 0 0;
+}
+
+.l {
+ background-position: 0 0;
+}
+
+.v {
+ background-position: 0 0;
+}
+
+.j {
+ background-position: 0 0;
+}
+
+.datepicker-container {
+ position: relative;
+}
+
+.btn-calendar-icon:focus .icon-primary-calendar {
+ outline: 1px dotted #191919;
+}
+
+.btn-calendar-icon:focus {
+ outline: none;
+}
+
+/* remove focus outline when dropdown is opened */
+/*resolve blue focus outline over dropdown with error*/
+select {
+ margin-right: -1;
+
+ height: 36px;
+ line-height: 25px;
+
+ 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;
+ /*font-size: 1.6rem;*/
+ 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;
+ /*font-size: 1.6rem;*/
+ 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;
+}
+
+.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;
+}
+
+
+.btn.disabled[ddh-load-button] {
+ line-height: 46px;
+ padding: 0 19px 0 18px;
+}
+
+.btn.disabled[ddh-load-button] {
+ color: #666666;
+}
+
+.icon-primary-spinner-ddh.large {
+ height: 50px;
+ width: 50px;
+}
+
+.icon-primary-spinner-ddh.small {
+ height: 30px;
+ width: 30px;
+}
+
+.icon-primary-spinner-ddh {
+ -webkit-animation: 1s linear infinite spinner;
+ animation: 1s linear infinite spinner;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiIgaWQ9InN2Zy1zcGlubmVyIiB4PSIwcHgiIHk9IjBweCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgIDxwYXRoIGZpbGw9IiNGNUY1RjUiIGQ9Ik0xOCAzNkM4LjEgMzYgMCAyNy45IDAgMThTOC4xIDAgMTggMHMxOCA4LjEgMTggMTgtOC4xIDE4LTE4IDE4em0wLTMxLjVjLTcuNSAwLTEzLjUgNi0xMy41IDEzLjVTMTAuNiAzMS41IDE4IDMxLjVjNy41IDAgMTMuNS02LjEgMTMuNS0xMy41IDAtNy41LTYtMTMuNS0xMy41LTEzLjV6Ii8+CiAgIDxwYXRoIGZpbGw9IiMwNTY4QUUiIGlkPSJzcGlubmVyIiBkPSJNMzAuNyA1LjNsLTMuMSAzLjJjMi40IDIuNCAzLjkgNS44IDMuOSA5LjUgMCA3LjQtNi4xIDEzLjUtMTMuNSAxMy41UzQuNSAyNS40IDQuNSAxOCAxMC42IDQuNSAxOCA0LjVWMEM4LjEgMCAwIDguMSAwIDE4czguMSAxOCAxOCAxOCAxOC04LjEgMTgtMThjMC01LTItOS41LTUuMy0xMi43eiIgdHJhbnNmb3JtPSIiPiAgICAgIAogICA8L3BhdGg+Cjwvc3ZnPg==);
+}
+
+.btn-small .icon-primary-spinner-ddh {
+ height: 30px !important;
+ width: 30px !important;
+}
+
+.btn-small .icon-primary-spinner {
+ height: 30px;
+ width: 30px;
+}
+
+i:focus {
+ outline: thin dotted #666;
+}
+
+.p-col-md-12 {
+ width: 50%;
+}
+
+.fieldLabel {
+ color: #666666;
+}
+
+.fieldLabel input {
+ color: #666666;
+}
+
+
+.fade1, .fadel {
+ opacity: 0.4;
+}
+
+.fade2, .fadesl {
+ opacity: 0.6;
+}
+
+h4#pagination-truncated {
+ margin-top: 50px;
+}
+
+h4#pagination-large-count {
+ margin-top: 50px;
+}
+
+input[type="text"]::-moz-placeholder {
+ color: #767676;
+ font-family: "Omnes-ECOMP-W02-Italic", Arial;
+}
+
+input[type="text"]:focus {
+ z-index: 1000;
+}
+
+input[type="text"] + .reset-field {
+ background-color: #FFFFFF;
+ height: 90%;
+ top: 5%;
+}
+
+.btn-search:focus {
+ outline: 1px dotted #0574ac;
+}
+
+.field-group input:not([type="button"])[disabled] ~ .btn-search {
+ background-color: #eee;
+}
+
+.btn-search[class*="btn"] {
+ background-color: #FFFFFF;
+ background-size: 20px 20px;
+ border-radius: 0 1.5rem 1.5rem 0;
+ height: 3rem;
+ min-width: 4.4rem !important;
+ right: 0.15rem;
+ top: 0.15rem;
+ width: 4.4rem;
+}
+
+.search-suggestion-wrapper {
+ margin-bottom: 15px;
+ position: relative;
+}
+
+.search-suggestion-wrapper .no-result {
+ padding: 0px 15px;
+}
+
+.search-suggestion-item {
+ color: #333333;
+ line-height: 4rem;
+ padding: 0 15px;
+ position: relative;
+ z-index: 1000;
+}
+
+.search-suggestion-item:hover {
+ background-color: #e4e4e4;
+ cursor: pointer;
+}
+
+.search-suggestion-item:focus {
+ background-color: #e4e4e4;
+ cursor: pointer;
+}
+
+.search-suggestion-item a {
+ color: #333333;
+ text-decoration: none;
+}
+
+.btn-search i {
+ color: #767676;
+}
+
+input.b2b-search-input-field:focus ~ .btn-search > i, .btn-search:focus > i {
+ color: #0568ae;
+}
+
+button.btn-search[disabled] {
+ cursor: not-allowed;
+}
+
+button.btn-search[disabled] i {
+ color: #767676;
+}
+
+.innershadow {
+ -webkit-background-blend-mode: mutilply;
+ box-shadow: 0 3px 0 2px rgba(0, 0, 0, 0.08);
+}
+
+li.module-groups {
+ cursor: default !important;
+ padding: 18px 15px 0px 15px;
+}
+
+li.module-list-item[selected]:before {
+ 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;
+}
+
+ul.module-optinalcta {
+ position: relative;
+ height: 44px;
+ margin-top: 0px;
+ border-bottom: 1px solid #d2d2d2;
+ border-left: 1px solid #d2d2d2;
+ border-right: 1px solid #d2d2d2;
+ border-radius: 0px 0px 6px 6px;
+}
+
+ul.module-optinalcta li {
+ position: absolute;
+ bottom: 10px;
+}
+
+ul.module-optinalcta a {
+ text-indent: 15px;
+ padding: 15px;
+}
+
+@keyframes spinner {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(359deg);
+ }
+}
+
+table {
+ max-width: 100%;
+ background-color: transparent;
+ border-collapse: collapse;
+ border-spacing: 0;
+ width: 100%;
+}
+
+table caption {
+ text-align: left;
+}
+
+table thead th {
+ vertical-align: bottom;
+}
+
+table th,
+table td {
+ padding: 19px 20px;
+ line-height: 1;
+ font-size: 1.4rem;
+ text-align: left;
+ vertical-align: top;
+ word-wrap: break-word;
+}
+
+table th {
+ font-family: "Omnes-ECOMP-W02-Medium", Arial;
+ font-size: 1.6rem;
+ font-weight: normal;
+ color: #333333;
+ padding: 13px 20px;
+}
+
+
+table tbody td:first-child {
+ border-left: none;
+}
+
+@media (max-width: 767px) {
+ table th,
+ table td {
+ padding: 19px 10px;
+ }
+
+ table th:first-child,
+ table td:first-child {
+ padding: 19px 15px;
+ }
+}
+
+.data-row-list ul > li {
+ background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewport%3D%220%200%201%201%22%20style%3D%22width%3A100%25%3B%20height%3A1px%3B%22%3E%3Cstyle%3Eline%7Bstroke%3Argba(153%2C153%2C153%2C1)%3Bstroke-width%3A2%3B%7D%3C%2Fstyle%3E%3Cline%20y2%3D%221%22%20y1%3D%221%22%20x1%3D%221%22%20x2%3D%22100%25%22%20stroke-dasharray%3D%221%2C%203%22%2F%3E%3C%2Fsvg%3E") !important;
+}
+
+table {
+ border-bottom: 1px solid #d2d2d2;
+}
+
+table th,
+table td {
+ padding: 15px 15px 10px;
+}
+
+button .colors-off-msg {
+ position: relative;
+}
+
+
+textarea, input {
+ color: #333;
+}
+
+.selectWrap::after {
+ align-items: center;
+ background-position: 7px 7px;
+ background-repeat: no-repeat;
+ background-size: auto 23px;
+ border-left: 1px solid transparent;
+ color: #0568ae;
+ display: flex;
+ font-size: 23px;
+ height: 36px;
+ margin-right: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ text-indent: 7px;
+ top: 0;
+ user-select: none;
+ width: 41px;
+ z-index: 0;
+ position: absolute !important;
+ display: flex !important;
+}
+
+.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;
+}
+
+.dialog {
+ margin-top: 50px;
+}
+
+.modalTitle {
+ font-size: 35px;
+}
+
+.defaultFontSize {
+ font-size: 12px;
+}
+
+.defaultFontSizeTextArea {
+ font-size: 12px;
+ width: 200px;
+ height: 42px
+}
+
+
+.tab-content {
+ margin-right: 20px;
+ /* background-color: #006496; */
+ color: rgb(0, 0, 0);
+ font-size: 12px;
+}
+
+.btn-sm {
+ width: 30px;
+ height: 15px;
+ font-size: 10px;
+}
+
+
+table, tr, td, th {
+ border: 0;
+ width: fit-content
+}
+
+
+mat-icon {
+ color: #006496;
+ cursor: pointer;
+}
+
+.matFormField {
+ width: 300px;
+}
+
+.proceedWitLoadButton {
+ font-size: 15px;
+ background: green;
+ color: white;
+
+}
+
+.abortButton {
+ font-size: 15px;
+ background: red;
+ color: white;
+}
+
+.reportTitle {
+ font-size: 16px;
+ font-weight: bold;
+}
+
+textarea {
+ display: block;
+ width: 800px;
+ padding: 8px;
+ padding-left: 15px;
+ height: 36px;
+}
+
+.subtitle {
+ font-weight: bold;
+ color: #f44336;
+ padding-top: 5px;
+ font-size: 12px;
+}
+
+.finalWidth{
+ width: 100%;
+}
+
+.finalTimeDivWidth{
+ width: 70%;
+}
+.timeStamp-HMS-sec-span{
+ width: 35%; font-size: 12px; float: left; padding-top: 12px; padding-left: 5px;
+}
+
+.timeStamp-HMS-sec-div{
+ width:65%; float: right; padding-left: 2px;
+}
+
+.timeStamp-HMS-Min-span{
+ width: 35%; font-size: 12px; float: left; padding-top: 12px; padding-left: 5px;
+}
+
+.timeStamp-HMS-Min-div{
+ width:60%; float: right; padding-left: 2px;
+}
+
+.timeStamp-HMS-Hrs-span{
+ width: 35%; font-size: 12px; float: left; padding-top: 12px; padding-left: 2px;
+}
+
+.timeStamp-HMS-Hrs-div{
+ width:65%; float: right;
+}
+
+.timeStamp-HMS-matFormField{
+ width: 40%;
+}
+
+.timeStamp-HMS-input{
+ font-size: 12px; padding: 3px;
+}
+.timeStamp-HMS-inner-div{
+ width: 20%; float: right;
+}
+.timeStamp-sec-select{
+ width: 42px; height: 30px; font-size: 12px; padding-left: 3px;
+}
+
+.timeStamp-HM-matFormField{
+ width: 50%;
+}
+
+
+.timeStamp-HM-Min-div{
+ width: 25%; float: right; padding-left: 13px;
+}
+.timeStamp-HM-Min-span{
+ width: 35%; font-size: 12px; float: left; padding-top: 12px;
+}
+.timeStamp-HM-Min-inner-div{
+ width:65%; float: right; padding-left: 10px;
+}
+
+.timeStamp-min-select{
+ width: 45px; height: 30px; font-size: 12px; padding-left: 3px;
+}
+
+.timeStamp-HM-Hrs-inner-div{
+ width:60%; float: right; padding-right: 3px;
+}
+
+.timeStamp-HM-Hrs-inner-span{
+ width: 40%; font-size: 12px; float: left; padding-top: 12px;
+}
+
+.timeStamp-HM-Hrs-div{
+ width: 25%; float: right;
+}
+
+
+.timeStamp-H-Hrs-div{
+ width: 30%; float: right;
+}
+
+.timeStamp-H-Hrs-inner-span{
+ width: 40%; font-size: 12px; float: left; padding-top: 12px;
+}
+
+.timeStamp-H-Hrs-inner-div{
+ width:60%; float: right;
+}
+
+.timeStamp-H-Hrs-inner-div-select{
+ width: 45px; height: 30px; font-size: 12px ; padding-left: 3px;
+}
+
+
+:host ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-suffix .mat-datepicker-toggle-default-icon {
+ width: 1.5em;
+} \ 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-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
new file mode 100644
index 00000000..aea6c768
--- /dev/null
+++ 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
@@ -0,0 +1,340 @@
+<span *ngIf="showSpinner" class="ecomp-spinner"></span>
+
+<div *ngIf="!showSpinner" class="stdForm">
+
+ <div class="tab-content">
+ <table>
+ <tr>
+ <td>
+ <h6 class="reportTitle">{{reportName}}</h6>
+ <h6 class="subtitle">{{reportSubTitle}}</h6>
+ </td>
+ <td>
+ <mat-icon (click)="editReport(reportId)" *ngIf="allowEdit"
+ aria-hidden="false" aria-label="edit">edit
+ </mat-icon>
+ </td>
+ </tr>
+ </table>
+ <span *ngIf="showformFiledSpinner" class="ecomp-spinner"></span>
+ <br>
+ <div *ngIf="!showformFiledSpinner" class="stdForm">
+ <div *ngIf="formFieldList" class="wrapper">
+ <div *ngFor="let item of formFieldList; let i = index;">
+ <div *ngIf="item.fieldType == 'TEXT' && item.validationType !== 'DATE'"
+ class="fieldWidth">
+ <label class="labelWidth">{{item.fieldDisplayName}} :</label> <textarea matInput placement="right" ngbTooltip="comma seperated"
+ [ngModel]="formFieldListValueMap.get(item.fieldId)" (ngModelChange)="formFieldListValueMap.set(item.fieldId, $event.toString().trim())" class="defaultFontSizeTextArea" id="item.fieldId"></textarea>
+ </div>
+ <div *ngIf="item.fieldType == 'LIST_BOX'" class="fieldWidth">
+ <label class="labelWidth" for="reportType">{{item.fieldDisplayName}} :</label>
+ <select [ngModel]="formFieldListValueMap.get(item.fieldId)" (ngModelChange)="formFieldListValueMap.set(item.fieldId, $event)"
+ class="browser-default custom-select defaultFontSize" required="required"
+ >
+ <option *ngFor="let listItem of item.formFieldValues"
+ class="defaultFontSize" value="{{listItem.id}}">{{listItem.name}}</option>
+ </select>
+ </div>
+ <div *ngIf="item.fieldType == 'LIST_MULTI_SELECT'" class="fieldWidth">
+ <label class="labelWidth" for="reportType">{{item.fieldDisplayName}} :</label>
+ <mat-form-field>
+ <mat-select [ngModel]="formFieldListValueMap.get(item.fieldId)" (ngModelChange)="formFieldListValueMap.set(item.fieldId, $event)" multiple>
+ <mat-option *ngFor="let listItem of item.formFieldValues"
+ value="{{listItem.id}}">{{listItem.name}}</mat-option>
+ </mat-select>
+ </mat-form-field>
+ </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)"
+ [matDatepicker]="picker"
+ class="defaultFontSize" matInput>
+ <mat-datepicker-toggle [for]="picker" matSuffix></mat-datepicker-toggle>
+ <mat-datepicker #picker></mat-datepicker>
+ </mat-form-field>
+ </div>
+
+ <div *ngIf="item.validationType == 'TIMESTAMP_SEC'" class="finalWidth">
+ <label class="labelWidth" class="defaultFontSize" for="reportType">{{item.fieldDisplayName}} :</label>
+ <div class="finalWidth">
+ <mat-form-field class="timeStamp-HMS-matFormField"><input class="timeStamp-HMS-input"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[0]" [matDatepicker]="picker" matInput>
+ <mat-datepicker-toggle [for]="picker" matSuffix></mat-datepicker-toggle>
+ <mat-datepicker #picker></mat-datepicker>
+ </mat-form-field>
+ <div class="timeStamp-HMS-inner-div">
+ <span class="timeStamp-HMS-sec-span">Sec:</span>
+ <div class="timeStamp-HMS-sec-div">
+ <select name="Seconds" id="Seconds" class="browser-default custom-select timeStamp-sec-select "
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[3]">
+ <option *ngFor="let listItem of timeStampArray" class="defaultFontSize" value="{{listItem}}">
+ {{listItem}}</option>
+ </select>
+ </div>
+ </div>
+ <div class="timeStamp-HMS-inner-div">
+ <span class="timeStamp-HMS-Min-span">Min:</span>
+ <div class="timeStamp-HMS-Min-div">
+ <select name="Minutes" id="Minutes" class="browser-default custom-select timeStamp-sec-select"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[2]">
+ <option *ngFor="let listItem of timeStampArray" class="defaultFontSize" value="{{listItem}}">
+ {{listItem}}</option>
+ </select>
+ </div>
+ </div>
+ <div class="timeStamp-HMS-inner-div">
+ <span class="timeStamp-HMS-Hrs-span">Hrs:</span>
+ <div class="timeStamp-HMS-Hrs-div">
+ <select name="Hours" id="Hours" class="browser-default custom-select timeStamp-sec-select"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[1]">
+ <option *ngFor="let listItem of hoursArray" class="defaultFontSize" value="{{listItem}}">{{listItem}}
+ </option>
+
+ </select>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div *ngIf="item.validationType == 'TIMESTAMP_MIN'" class="finalWidth">
+ <label class="labelWidth" class="defaultFontSize" for="reportType">{{item.fieldDisplayName}} :</label>
+ <div class="finalTimeDivWidth">
+ <mat-form-field class="timeStamp-HM-matFormField"><input class="timeStamp-HMS-input"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[0]" [matDatepicker]="picker" matInput>
+ <mat-datepicker-toggle [for]="picker" matSuffix></mat-datepicker-toggle>
+ <mat-datepicker #picker></mat-datepicker>
+ </mat-form-field>
+
+ <div class="timeStamp-HM-Min-div">
+ <span class="timeStamp-HM-Min-span">Min:</span>
+ <div class="timeStamp-HM-Min-inner-div">
+ <select name="Minutes" id="Minutes" class="browser-default custom-select timeStamp-min-select "
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[2]">
+ <option *ngFor="let listItem of timeStampArray" class="defaultFontSize" value="{{listItem}}">
+ {{listItem}}</option>
+ </select>
+ </div>
+ </div>
+ <div class="timeStamp-HM-Hrs-div">
+ <span class="timeStamp-HM-Hrs-inner-span">Hrs:</span>
+ <div class="timeStamp-HM-Hrs-inner-div">
+ <select name="Hours" id="Hours" class="browser-default custom-select timeStamp-min-select "
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[1]">
+ <option *ngFor="let listItem of hoursArray" class="defaultFontSize" value="{{listItem}}">{{listItem}}
+ </option>
+
+ </select>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div *ngIf="item.validationType == 'TIMESTAMP_HOUR'" class="finalWidth">
+ <label class="labelWidth defaultFontSize" for="reportType">{{item.fieldDisplayName}} :</label>
+ <div class="finalTimeDivWidth">
+ <mat-form-field class="finalTimeDivWidth"><input class="timeStamp-HMS-input"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[0]" [matDatepicker]="picker" matInput>
+ <mat-datepicker-toggle [for]="picker" matSuffix></mat-datepicker-toggle>
+ <mat-datepicker #picker></mat-datepicker>
+ </mat-form-field>
+
+ <div class="timeStamp-H-Hrs-div">
+ <span class="timeStamp-H-Hrs-inner-span">Hrs:</span>
+ <div class="timeStamp-H-Hrs-inner-div">
+ <select name="Hours" id="Hours" class="browser-default custom-select timeStamp-H-Hrs-inner-div-select"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[1]">
+ <option *ngFor="let listItem of hoursArray" class="defaultFontSize" value="{{listItem}}">{{listItem}}
+ </option>
+ </select>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+
+ </div>
+ </div>
+ <div *ngIf="formFieldList" style="padding: 0.3em" >
+ <div *ngIf="unCommonGropusList.length > 0">
+ <label style="padding-top: 3px;">Select :</label><br/>
+ <br/>
+ <mat-radio-group ngmodel [(ngModel)]="groupSelectValue"
+ aria-label="Select an option" (ngModelChange) ="toggleChangeWhenCalledWithFromFields()">
+ <div *ngFor="let group of formFieldGroupObjList; let i=index;" style="display: table-cell">
+ <mat-radio-button value="{{group.name}}">{{group.name}}</mat-radio-button>&nbsp;&nbsp;&nbsp;
+ </div>
+ </mat-radio-group>
+
+ </div>
+ </div>
+
+ <div *ngIf="formFieldList" class="wrapper">
+ <div *ngFor="let item of toggleFormFieldRenderArr; let i = index;">
+ <div *ngIf="item.fieldType == 'TEXT' && item.validationType !== 'DATE'" class="fieldWidth">
+ <label class="labelWidth">{{item.fieldDisplayName}} :</label><textarea matInput placement="right" ngbTooltip="comma seperated" appRemoveSpace
+ [ngModel]="formFieldListValueMap.get(item.fieldId)" (ngModelChange)="formFieldListValueMap.set(item.fieldId, $event.toString().trim())" class="defaultFontSizeTextArea" id="item.fieldId"></textarea>
+ </div>
+ <div *ngIf="item.fieldType == 'LIST_BOX'" class="fieldWidth">
+ <label class="labelWidth" for="reportType">{{item.fieldDisplayName}} :</label>
+ <select [ngModel]="formFieldListValueMap.get(item.fieldId)" (ngModelChange)="formFieldListValueMap.set(item.fieldId, $event)"
+ class="browser-default custom-select defaultFontSize" required="required"
+ >
+ <option *ngFor="let listItem of item.formFieldValues"
+ class="defaultFontSize" value="{{listItem.id}}">{{listItem.name}}</option>
+ </select>
+
+ </div>
+ <div *ngIf="item.fieldType == 'LIST_MULTI_SELECT'" class="fieldWidth">
+ <label class="labelWidth" for="reportType">{{item.fieldDisplayName}} :</label>
+ <mat-form-field>
+ <mat-select [ngModel]="formFieldListValueMap.get(item.fieldId)" (ngModelChange)="formFieldListValueMap.set(item.fieldId, $event)"
+ multiple>
+ <mat-option *ngFor="let listItem of item.formFieldValues"
+ value="{{listItem.id}}">{{listItem.name}}</mat-option>
+ </mat-select>
+ </mat-form-field>
+
+ <br/>
+ </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)" [matDatepicker]="picker"
+ class="defaultFontSize"
+ matInput
+ value="{{item.formFieldValues[0][name]}}">
+ <mat-datepicker-toggle
+ [for]="picker" matSuffix></mat-datepicker-toggle>
+ <mat-datepicker
+ #picker></mat-datepicker>
+ </mat-form-field>
+ </div>
+
+ <div *ngIf="item.validationType == 'TIMESTAMP_SEC'" class="finalWidth">
+ <label class="labelWidth" class="defaultFontSize" for="reportType">{{item.fieldDisplayName}} :</label>
+ <div class="finalWidth">
+ <mat-form-field class="timeStamp-HMS-matFormField"><input class="timeStamp-HMS-input"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[0]" [matDatepicker]="picker" matInput>
+ <mat-datepicker-toggle [for]="picker" matSuffix></mat-datepicker-toggle>
+ <mat-datepicker #picker></mat-datepicker>
+ </mat-form-field>
+ <div class="timeStamp-HMS-inner-div">
+ <span class="timeStamp-HMS-sec-span">Sec:</span>
+ <div class="timeStamp-HMS-sec-div">
+ <select name="Seconds" id="Seconds" class="browser-default custom-select timeStamp-sec-select "
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[3]">
+ <option *ngFor="let listItem of timeStampArray" class="defaultFontSize" value="{{listItem}}">
+ {{listItem}}</option>
+ </select>
+ </div>
+ </div>
+ <div class="timeStamp-HMS-inner-div">
+ <span class="timeStamp-HMS-Min-span">Min:</span>
+ <div class="timeStamp-HMS-Min-div">
+ <select name="Minutes" id="Minutes" class="browser-default custom-select timeStamp-sec-select"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[2]">
+ <option *ngFor="let listItem of timeStampArray" class="defaultFontSize" value="{{listItem}}">
+ {{listItem}}</option>
+ </select>
+ </div>
+ </div>
+ <div class="timeStamp-HMS-inner-div">
+ <span class="timeStamp-HMS-Hrs-span">Hrs:</span>
+ <div class="timeStamp-HMS-Hrs-div">
+ <select name="Hours" id="Hours" class="browser-default custom-select timeStamp-sec-select"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[1]">
+ <option *ngFor="let listItem of hoursArray" class="defaultFontSize" value="{{listItem}}">{{listItem}}
+ </option>
+
+ </select>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div *ngIf="item.validationType == 'TIMESTAMP_MIN'" class="finalWidth">
+ <label class="labelWidth" class="defaultFontSize" for="reportType">{{item.fieldDisplayName}} :</label>
+ <div class="finalTimeDivWidth">
+ <mat-form-field class="timeStamp-HM-matFormField"><input class="timeStamp-HMS-input"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[0]" [matDatepicker]="picker" matInput>
+ <mat-datepicker-toggle [for]="picker" matSuffix></mat-datepicker-toggle>
+ <mat-datepicker #picker></mat-datepicker>
+ </mat-form-field>
+
+ <div class="timeStamp-HM-Min-div">
+ <span class="timeStamp-HM-Min-span">Min:</span>
+ <div class="timeStamp-HM-Min-inner-div">
+ <select name="Minutes" id="Minutes" class="browser-default custom-select timeStamp-min-select "
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[2]">
+ <option *ngFor="let listItem of timeStampArray" class="defaultFontSize" value="{{listItem}}">
+ {{listItem}}</option>
+ </select>
+ </div>
+ </div>
+ <div class="timeStamp-HM-Hrs-div">
+ <span class="timeStamp-HM-Hrs-inner-span">Hrs:</span>
+ <div class="timeStamp-HM-Hrs-inner-div">
+ <select name="Hours" id="Hours" class="browser-default custom-select timeStamp-min-select "
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[1]">
+ <option *ngFor="let listItem of hoursArray" class="defaultFontSize" value="{{listItem}}">{{listItem}}
+ </option>
+
+ </select>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div *ngIf="item.validationType == 'TIMESTAMP_HOUR'" class="finalWidth">
+ <label class="labelWidth defaultFontSize" for="reportType">{{item.fieldDisplayName}} :</label>
+ <div class="finalTimeDivWidth">
+ <mat-form-field class="finalTimeDivWidth"><input class="timeStamp-HMS-input"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[0]" [matDatepicker]="picker" matInput>
+ <mat-datepicker-toggle [for]="picker" matSuffix></mat-datepicker-toggle>
+ <mat-datepicker #picker></mat-datepicker>
+ </mat-form-field>
+
+ <div class="timeStamp-H-Hrs-div">
+ <span class="timeStamp-H-Hrs-inner-span">Hrs:</span>
+ <div class="timeStamp-H-Hrs-inner-div">
+ <select name="Hours" id="Hours" class="browser-default custom-select timeStamp-H-Hrs-inner-div-select"
+ [(ngModel)]="formFieldListValueMap.get(item.fieldId)[1]">
+ <option *ngFor="let listItem of hoursArray" class="defaultFontSize" value="{{listItem}}">{{listItem}}
+ </option>
+ </select>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <br/>
+ </div>
+ </div>
+ <div *ngIf="showRunButton" style="float: left;">
+ <button (click)="runReport()" class="btn btn-alt btn-run" >Run Report</button>
+ <button (click)="resetFormFieldValues()" class="btn btn-alt btn-run" >Reset</button>
+ </div>&nbsp;
+ <button *ngIf="showBackButton" (click)="goBack()" class="btn btn-alt btn-run" >Back</button>
+ </div>
+ </div>
+</div>
+<div></div>
+
+<br><br><br>
+
+<div *ngIf="navigateToRun">
+ <!-- <app-run-dashboard-report [reportId]="reportId" [reportMode]="reportMode" [queryString]="getQueryString()" [DashboardReportObj]="DashboardReportObj"></app-run-dashboard-report> -->
+ <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>
+</div>
+
+<div *ngIf="error == true">
+ <h1>Error Message:</h1>
+ <p>{{errorMessage}}</p>
+ <br/>
+ <h1>Stack Trace:</h1>
+ <p>{{stackTrace}}</p>
+
+</div>
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.spec.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.spec.ts
new file mode 100644
index 00000000..9678345a
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-form-fields/run-report-form-fields.component.spec.ts
@@ -0,0 +1,124 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {FormsModule} from '@angular/forms';
+import { RunReportFormFieldsComponent } from './run-report-form-fields.component';
+import { CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core';
+import {MatDatepickerModule} from '@angular/material/datepicker';
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { RouterTestingModule } from '@angular/router/testing';
+import { RunService } from '../run.service';
+import { Observable } from 'rxjs/Observable';
+import 'rxjs/add/observable/of';
+import { HttpCacheService } from 'src/app/shared/services/cache.service';
+
+describe('RunReportFormFieldsComponent', () => {
+ let component: RunReportFormFieldsComponent;
+ let fixture: ComponentFixture<RunReportFormFieldsComponent>;
+ let formfield =[{"validationType":1},{},{}] ;
+ let runService: RunService;
+ let formFieldGroupObjList: {}[] = [];
+ let environment = [
+ {
+ baseUrl: 'just for testing'
+ }
+ ]
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+ imports: [FormsModule, MatDatepickerModule, HttpClientTestingModule, RouterTestingModule],
+ declarations: [ RunReportFormFieldsComponent ],
+ providers: [RunService,HttpCacheService]
+ })
+ .compileComponents();
+ runService = TestBed.get(RunService);
+ spyOn(runService, 'getDefinitionPageDetails').and.returnValue(Observable.of(environment));
+ spyOn(runService, 'refreshFormFields').and.returnValue(Observable.of(environment));
+ spyOn(runService, 'getFormFieldGroupsData').and.returnValue(Observable.of(environment));
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(RunReportFormFieldsComponent);
+ component = fixture.componentInstance;
+ component.formFieldList = formfield;
+ component.formFieldGroupObjList = formFieldGroupObjList;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+
+ it('should test convertDate method', () => {
+ component.convertDate("test");
+ });
+
+ it('should test getQueryString methods', () => {
+ component.directCallQueryParams = 'abc';
+ component.getQueryString();
+ expect(component.getQueryString()).toEqual(component.directCallQueryParams);
+
+ component.directCallQueryParams = "";
+ component.getQueryString();
+ expect(component.getQueryString()).toEqual(component.queryString);
+ });
+
+ it('should test showError method', () => {
+ component.showError('test');
+ expect(component.errorMessage).toEqual('test'['errormessage']);
+ expect(component.stackTrace).toEqual('test'['stacktrace']);
+ expect(component.error).toEqual(true);
+ expect(component.showSpinner).toEqual(false);
+ });
+
+ it('should test showLabelFn method', () => {
+ component.showLabelFn();
+ expect(component.showLabel).toEqual(component.showLabel);
+ });
+
+ it('should test runReport method', () => {
+ component.iSDashboardReport = "Dashboard";
+ component.formFieldList.length = 1;
+ component.runReport();
+
+ expect(component.hitCnt).toBe(component.hitCnt++);
+ expect(component.reportMode).toBe('')
+ let spy = spyOn(component, 'generateQueryString');
+ component.generateQueryString();
+ expect(component.generateQueryString).toHaveBeenCalled();
+ expect(component.showSpinner).toBe(false);
+
+ component.iSDashboardReport = "Dashboard";
+ component.formFieldList.length = 0;
+ component.runReport();
+
+ expect(component.reportMode).toBe('');
+
+ component.iSDashboardReport = "Dashboard";
+ component.runReport();
+ expect(component.showSpinner).toBe(false);
+ expect(component.navigateToRun).toBe(true);
+
+
+ });
+
+ it('should test ngDoCheck method', () =>{
+ component.formFieldList != undefined;
+ component.oldGroupSelectValue = "test";
+ component.groupSelectValue = "testing";
+ spyOn(component, 'ngDoCheck').and.callThrough();
+ component.ngDoCheck();
+ expect(component.ngDoCheck).toHaveBeenCalled();
+ expect(component.oldGroupSelectValue).toBe(component.groupSelectValue);
+ });
+
+ it('should test generateQueryString method',() => {
+ component.generateQueryString();
+ })
+
+ it('should test ngOnInit method', () => {
+ spyOn(component, 'ngOnInit').and.callThrough();
+ component.ngOnInit();
+ expect(component.ngOnInit).toHaveBeenCalled();
+ });
+
+}); \ 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-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
new file mode 100644
index 00000000..ced812d2
--- /dev/null
+++ 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
@@ -0,0 +1,1015 @@
+import {ChangeDetectorRef, Component, HostListener, OnInit, Input, SimpleChange, SystemJsNgModuleLoader, OnDestroy} from '@angular/core';
+import {RunService} from '../run.service';
+import {ActivatedRoute, Router} from '@angular/router';
+import * as cloneDeep from 'lodash/cloneDeep';
+import {environment} from 'src/environments/environment';
+import {HttpCacheService} from '../../../shared/services/cache.service';
+
+@Component({
+ selector: 'app-run-report-form-fields',
+ templateUrl: './run-report-form-fields.component.html',
+ styleUrls: ['./run-report-form-fields.component.css']
+})
+export class RunReportFormFieldsComponent implements OnInit, OnDestroy {
+ @Input('formFieldList') formFieldList: {}[];
+ @Input('reportId') reportId: string;
+ staticFormFieldList: {}[] = [];
+ formFieldListValueArr: any[];
+ saveFormFieldGroups: any[];
+ finalQueryParamsObj: {};
+ navigateToRun: boolean;
+ reportMode: string;
+ queryString: string;
+ reportName: string;
+ reportSubTitle: string;
+ showSpinner: boolean;
+ showLabel: boolean;
+ runDashboardReport: boolean;
+ DashboardReportObj: {}[] = [];
+ triggerFormFieldArr = [];
+ initialObject = {};
+ formFieldGroupObjList: {}[] = [];
+ toggleFormFieldRenderArr: {}[] = [];
+ groupSelectValue = '';
+ oldGroupSelectValue = '';
+ unCommonCnt = 0;
+ commonCount = 0;
+ totalCommonCount = 0;
+ totalCount = 0;
+ errorMessage = '';
+ stackTrace = '';
+ error = false;
+ iSDashboardReport = '';
+ hitCnt = 0;
+ directCallQueryParams: any = '';
+ calledWithFormFields = false;
+ showformFiledSpinner = false;
+ actualformFieldValues: any[];
+ allowEdit: boolean;
+ runReportAgain: boolean;
+ tempFieldValues = [];
+ firstRun = false;
+ saveFormFieldListValueArr: any[];
+ saveGroupSelectValue = '';
+ avoidDoCheck = false;
+ toolTipPosition = 'right';
+ isResetAllowed: boolean;
+ save: {}[];
+ unCommonGropusList: any[];
+ commonFormFields: any[];
+ formFieldListValueMap: any;
+ saveFormFieldListValueMap: any;
+ chartType = '';
+ showRunButton = false;
+ showBackButton = false;
+ downloadPrevReport = '';
+ timeStampArray: any[];
+ hoursArray : any[];
+ constructor(private _runService: RunService,
+ private _route: ActivatedRoute,
+ private _router: Router,
+ private changeDetectorRefs: ChangeDetectorRef,
+ private httpCacheService: HttpCacheService) {
+ this.formFieldListValueArr = [];
+ this.saveFormFieldListValueArr = [];
+ this.saveFormFieldGroups = [];
+ this.finalQueryParamsObj = {};
+ this.navigateToRun = false;
+ this.queryString = '';
+ this.showSpinner = false;
+ this.showLabel = false;
+ this.runDashboardReport = false;
+ this.showformFiledSpinner = false;
+ this.runReportAgain = false;
+ this.tempFieldValues = [];
+ this.isResetAllowed = false;
+ this.unCommonGropusList = [];
+ this.commonFormFields = [];
+ this.formFieldListValueMap = new Map<any, any>();
+ this.saveFormFieldListValueMap = new Map<any, any>();
+ this.chartType = '';
+ this.showRunButton = false;
+ this.showBackButton = false;
+ this.downloadPrevReport = '';
+ this.timeStampArray = [];
+ this.hoursArray = [];
+
+ }
+
+ @HostListener('click') onClick() {
+ this.changeDetectorRefs.detectChanges();
+ }
+
+ ngOnDestroy(): void {
+ this.createNewObject();
+ this.showSpinner = false;
+ }
+
+ createNewObject() {
+ this.staticFormFieldList = [];
+ this.formFieldListValueArr = [];
+ this.saveFormFieldGroups = [];
+ this.saveFormFieldListValueArr = [];
+ this.finalQueryParamsObj = {};
+ this.navigateToRun = false;
+ this.reportMode = '';
+ this.queryString = '';
+ this.reportName = '';
+ this.reportSubTitle = '';
+ this.showSpinner = true;
+ this.showLabel = false;
+ this.runDashboardReport = false;
+ this.DashboardReportObj = [];
+ this.triggerFormFieldArr = [];
+ this.initialObject = {};
+ this.formFieldGroupObjList = [];
+ this.toggleFormFieldRenderArr = [];
+ this.groupSelectValue = '';
+ this.oldGroupSelectValue = '';
+ this.unCommonCnt = 0;
+ this.totalCommonCount = 0;
+ this.commonCount = 0;
+ this.totalCount = 0;
+ this.errorMessage = '';
+ this.stackTrace = '';
+ this.error = false;
+ this.iSDashboardReport = '';
+ this.hitCnt = 0;
+ this.directCallQueryParams = '';
+ this.calledWithFormFields = false;
+ this.showformFiledSpinner = false;
+ this.allowEdit = false;
+ this.runReportAgain = false;
+ this.isResetAllowed = false;
+ this.unCommonGropusList = [];
+ this.commonFormFields = [];
+ this.formFieldListValueMap = new Map<any, any>();
+ this.saveFormFieldListValueMap = new Map<any, any>();
+ this.chartType = '';
+ this.showRunButton = false;
+ this.downloadPrevReport = '';
+ }
+
+ ngOnInit() {
+
+ this.showSpinner = true;
+ this.navigateToRun = false;
+ this.getTime();
+ this.getHours();
+ this._route.params.subscribe(params => {
+ this.createNewObject();
+ this.reportId = params['reportId'];
+ const checkOfCache = this.httpCacheService.getPreviousId(this.reportId) || null;
+ if (!checkOfCache) {
+ this.httpCacheService.clearCache();
+ }
+ const backButton = params['showBackButton'];
+ const downloadPrevReport = params['downloadPrevReport'];
+ if (downloadPrevReport && downloadPrevReport === 'true') {
+ this.downloadPrevReport = 'true';
+ }
+ if (backButton && backButton === 'true') {
+ this.showBackButton = true;
+ } else if (backButton && backButton === 'false') {
+ this.showBackButton = false;
+ } else {
+ this.showBackButton = false;
+ }
+ this.groupSelectValue = params['groupSelectValue'];
+ if (this.groupSelectValue === undefined) {
+ this.groupSelectValue = '';
+ }
+ if (params['queryParameters']) {
+ this.directCallQueryParams = params['queryParameters'];
+ this.calledWithFormFields = true;
+ this.populateQueryParams(params['queryParameters']);
+ }
+ this.loadPage();
+ });
+
+ }
+
+ populateQueryParams(queryParams: any) {
+ this.actualformFieldValues = this.directCallQueryParams.substring(1, this.directCallQueryParams.length).split('&');
+ for (const ff of this.actualformFieldValues) {
+ const formfiledArray = ff.split('=');
+ const formFieldId = formfiledArray[0];
+ const formFieldObj = formfiledArray[1];
+ this.finalQueryParamsObj[formFieldId] = formFieldObj;
+ }
+ this.queryString = this.directCallQueryParams;
+ }
+
+ loadPage() {
+ this._runService.getDefinitionPageDetails(+this.reportId)
+ .subscribe((responseDefPage) => {
+ this.reportName = responseDefPage['reportName'];
+ this.reportSubTitle = responseDefPage['reportSubTitle'];
+ this.chartType = responseDefPage['chartType'];
+ if (responseDefPage['reportType'] !== 'Dashboard') {
+ if (this.calledWithFormFields == false) {
+ this._runService.getReportData(this.reportId)
+ .subscribe((response) => {
+ if (response['errormessage']) {
+ this.allowEdit = response['allowEdit'];
+ this.showError(response);
+ } else {
+ this.allowEdit = response['allowEdit'];
+ this.reportName = response['reportName'];
+ if (response['formFieldList'].length > 0) {
+ this.fetchAndPopulateFormFields(response, this.reportId);
+ this.showformFiledSpinner = true;
+ } else {
+ this.formFieldList = response['formFieldList'];
+ this.reportMode = 'Regular';
+ this.httpCacheService.setRouteCache(this.reportId, this.getQueryString());
+ this.httpCacheService.setRouteGroupCache(this.reportId, this.groupSelectValue);
+ this.navigateToRun = true;
+ this.showformFiledSpinner = false;
+
+ }
+ this.showSpinner = false;
+ }
+ });
+ } else if (this.calledWithFormFields == true) {
+ this._runService.getReportData(this.reportId)
+ .subscribe((response) => {
+ if (response['errormessage']) {
+ this.showError(response);
+ } else {
+ this.error = false;
+ this.reportName = response['reportName'];
+ this.allowEdit = response['allowEdit'];
+ if (response['formFieldList'].length > 0) {
+ this.setDefaultFieldGroupValueForNonSelected(response['formFieldList']);
+ this.generateQueryString();
+ this.fetchAndPopulateFormFields(response, this.reportId);
+ this.formFieldListValueMap = new Map<any, any>();
+ for (const ff of response['formFieldList']) {
+ if (this.finalQueryParamsObj[ff.fieldId]) {
+ if (ff.validationType == 'DATE') {
+ const dateVal = this.finalQueryParamsObj[ff.fieldId];
+ this.formFieldListValueMap.set(ff.fieldId, new Date(dateVal.toString().replace(/%2F/g, '/')));
+ } else if (ff.fieldType == 'LIST_MULTI_SELECT') {
+ const multiSelectArray = [];
+ let multiVal = this.finalQueryParamsObj[ff.fieldId];
+ multiVal = multiVal.toString().replace(/%2F/g, '/');
+ multiVal = multiVal.toString().replace(/%20/g, ' ');
+ multiVal = multiVal.toString().replace(/%28/g, '(');
+ multiVal = multiVal.toString().replace(/%29/g, ')');
+ multiVal = multiVal.toString().replace('+', ' ');
+ if (multiVal.split('|').length > 1) {
+ let tempArray = multiVal.split('|');
+ for (let arr = 0; arr < tempArray.length; arr++) {
+ multiSelectArray.push(tempArray[arr]);
+ }
+ } else {
+ multiSelectArray.push(multiVal);
+ }
+ 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, ' ');
+ multiVal = multiVal.toString().replace(/%28/g, '(');
+ multiVal = multiVal.toString().replace(/%29/g, ')');
+ multiVal = multiVal.toString().split('+').join(' ');
+ this.formFieldListValueMap.set(ff.fieldId, multiVal);
+ }
+ } else {
+ if (ff.fieldType == 'LIST_MULTI_SELECT') {
+ const multiSelectArray = [];
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+ } else {
+ this.formFieldListValueMap.set(ff.fieldId, '');
+ }
+ }
+ }
+ this.error = false;
+ this.httpCacheService.setRouteCache(this.reportId, this.getQueryString());
+ this.httpCacheService.setRouteGroupCache(this.reportId, this.groupSelectValue);
+ this.navigateToRun = true;
+ this.showformFiledSpinner = true;
+ this.directCallQueryParams = '';
+ } else {
+ this.reportMode = 'Regular';
+ this.navigateToRun = true;
+ this.showformFiledSpinner = false;
+
+ }
+ this.showSpinner = false;
+
+ }
+ });
+ } else {
+ this.reportMode = 'FormField';
+ this.navigateToRun = true;
+ this.showSpinner = false;
+ this.showformFiledSpinner = true;
+ }
+ } else {
+ if (this.calledWithFormFields == false) {
+ this.iSDashboardReport = 'Dashboard';
+ this.reportName = responseDefPage['reportName'];
+ this.DashboardReportObj = JSON.parse(responseDefPage['dashboardLayoutJSON']);
+ let i = 0;
+ let subReportId = '';
+ const tempDashboardArray = [];
+ for (let dash = 0; dash < this.DashboardReportObj.length; dash++) {
+ if (this.DashboardReportObj[dash]['hasContent']['hideDisplay'] !== true) {
+ tempDashboardArray.push(this.DashboardReportObj[dash]);
+ }
+ }
+ this.DashboardReportObj = [];
+ this.DashboardReportObj = tempDashboardArray;
+ while (this.DashboardReportObj[i]) {
+ subReportId = this.DashboardReportObj[i]['hasContent']['id'].split('#')[1];
+ i++;
+ break;
+ }
+ this._runService.getReportData(subReportId)
+ .subscribe((response) => {
+ if (response['errormessage']) {
+ this.showError(response);
+ this.allowEdit = response['allowEdit'];
+ } else {
+ this.allowEdit = response['allowEdit'];
+ if (response['formFieldList'].length > 0) {
+ this.fetchAndPopulateFormFields(response, subReportId);
+ } else {
+ this.navigateToRun = true;
+ }
+ this.runDashboardReport = true;
+ this.showSpinner = false;
+ this.showformFiledSpinner = true;
+ }
+ });
+ this.showSpinner = false;
+ this.showformFiledSpinner = true;
+ } else if (this.calledWithFormFields == true) {
+ this.httpCacheService.setRouteCache(this.reportId, this.getQueryString());
+ this.httpCacheService.setRouteGroupCache(this.reportId, this.groupSelectValue);
+ this.iSDashboardReport = 'Dashboard';
+ this.reportName = responseDefPage['reportName'];
+ this.DashboardReportObj = JSON.parse(responseDefPage['dashboardLayoutJSON']);
+ const tempDashboardArray = [];
+ for (let dash = 0; dash < this.DashboardReportObj.length; dash++) {
+ if (this.DashboardReportObj[dash]['hasContent']['hideDisplay'] !== true) {
+ tempDashboardArray.push(this.DashboardReportObj[dash]);
+ }
+ }
+ this.DashboardReportObj = [];
+ this.DashboardReportObj = tempDashboardArray;
+ let subReportId1 = '';
+ let i = 0;
+ while (this.DashboardReportObj[i]) {
+ subReportId1 = this.DashboardReportObj[i]['hasContent']['id'].split('#')[1];
+ i++;
+ break;
+ }
+ this._runService.getReportData(subReportId1)
+ .subscribe((response) => {
+ if (response['errormessage']) {
+ this.showError(response);
+ this.allowEdit = response['allowEdit'];
+ } else {
+ this.allowEdit = response['allowEdit'];
+ if (response['formFieldList'].length > 0) {
+ this.fetchAndPopulateFormFields(response, subReportId1);
+ this.formFieldListValueMap = new Map<any, any>();
+ for (const ff of response['formFieldList']) {
+ if (this.finalQueryParamsObj[ff.fieldId]) {
+ if (ff.validationType == 'DATE') {
+ const dateVal = this.finalQueryParamsObj[ff.fieldId];
+ this.formFieldListValueMap.set(ff.fieldId, new Date(dateVal.toString().replace(/%2F/g, '/')));
+ } else if (ff.fieldType == 'LIST_MULTI_SELECT') {
+ const multiSelectArray = [];
+ let multiVal = this.finalQueryParamsObj[ff.fieldId];
+ multiVal = multiVal.toString().replace(/%2F/g, '/');
+ multiVal = multiVal.toString().replace(/%20/g, ' ');
+ multiVal = multiVal.toString().replace(/%28/g, '(');
+ multiVal = multiVal.toString().replace(/%29/g, ')');
+ multiVal = multiVal.toString().replace('+', ' ');
+ if (multiVal.split('|').length > 1) {
+ let tempArray = multiVal.split('|');
+ for (let arr = 0; arr < tempArray.length; arr++) {
+ multiSelectArray.push(tempArray[arr]);
+ }
+ } else {
+ multiSelectArray.push(multiVal);
+ }
+ 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, ' ');
+ multiVal = multiVal.toString().replace(/%28/g, '(');
+ multiVal = multiVal.toString().replace(/%29/g, ')');
+ multiVal = multiVal.toString().split('+').join(' ');
+ if (multiVal == 'NULL') {
+ this.formFieldListValueMap.set(ff.fieldId, '');
+ } else {
+ this.formFieldListValueMap.set(ff.fieldId, multiVal);
+ }
+ }
+ } else {
+ if (ff.fieldType == 'LIST_MULTI_SELECT') {
+ const multiSelectArray = [];
+ this.formFieldListValueMap.set(ff.fieldId, multiSelectArray);
+ } else {
+ this.formFieldListValueMap.set(ff.fieldId, '');
+ }
+ }
+ }
+ } else {
+ this.navigateToRun = true;
+ }
+ let subReportId = '';
+ for (const dashboard of this.DashboardReportObj) {
+ let temp = '';
+ temp = dashboard['hasContent']['id'].split('#')[1];
+ subReportId = temp;
+ this.directCallQueryParams = '';
+ this.runDashboardReport = true;
+ this.navigateToRun = true;
+ this.showSpinner = false;
+ }
+ }
+ });
+
+ }
+
+ }
+ });
+ }
+
+ toggleChangeWhenCalledWithFromFields() {
+ this.calledWithFormFields = false;
+ }
+
+ async ngDoCheck() {
+
+ if (this.formFieldList !== undefined) {
+
+ if (this.groupSelectValue !== this.oldGroupSelectValue) {
+ // this.formFieldListValueArr.splice(this.commonCount-1, this.formFieldListValueArr.length)
+ this.removePrevioustoggleGroupData();
+ this.oldGroupSelectValue = this.groupSelectValue;
+ this.formFieldGroupObjList = [];
+ this.saveFormFieldGroups = [];
+ this.formFieldGroupObjList = cloneDeep(this.save);
+ this.saveFormFieldGroups = cloneDeep(this.save);
+ for (const formFieldGroupObjItem of this.formFieldGroupObjList) {
+ if (formFieldGroupObjItem['name'] == this.groupSelectValue) {
+ this.toggleFormFieldRenderArr = formFieldGroupObjItem['formFieldList'];
+ }
+
+ }
+ if (this.toggleFormFieldRenderArr.length > 0) {
+ for (let i = 0; i < this.toggleFormFieldRenderArr.length; i++) {
+ const formFieldObj = this.toggleFormFieldRenderArr[i];
+ if (formFieldObj['triggerOtherFormFields'] === true) {
+ const formFieldId = formFieldObj['fieldId'];
+ this.triggerFormFieldArr.push(formFieldId);
+ this.initialObject[formFieldId] = '1';
+ this.finalQueryParamsObj[formFieldId] = '1';
+ }
+ }
+ }
+
+ if (this.calledWithFormFields != true) {
+ for (const formFieldGroupObjItem of this.saveFormFieldGroups) {
+ if (formFieldGroupObjItem['name'] == this.groupSelectValue) {
+ this.toggleFormFieldRenderArr = formFieldGroupObjItem['formFieldList'];
+ for (let ffGrpValue = 0; ffGrpValue < formFieldGroupObjItem['formFieldList'].length; ffGrpValue++) {
+ if (formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'].length > 0) {
+ for (let ffValue = 0; ffValue < formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'].length; ffValue++) {
+ if (formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldType'] == 'LIST_BOX' && formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'].length > 0) {
+ let isAdded = false;
+ for (let ffValue = 0; ffValue < formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'].length; ffValue++) {
+ if (formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'][ffValue]['defaultValue'] == true) {
+ this.formFieldListValueMap.set(formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId'], formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'][ffValue]['id']);
+ isAdded = true;
+ }
+ }
+ if (!isAdded) {
+ this.formFieldListValueMap.set(formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId'], '');
+ }
+ } else if ((formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldType'] == 'LIST_MULTI_SELECT' || formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldType'] == 'TEXT') && formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'].length > 0) {
+ let isAdded = false;
+ for (let ffValue = 0; ffValue < formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'].length; ffValue++) {
+
+ if (formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'][ffValue]['defaultValue'] == true) {
+ const multiSelectArray = [];
+ multiSelectArray.push(formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'][ffValue]['id']);
+ this.formFieldListValueMap.set(formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId'], multiSelectArray);
+ isAdded = true;
+ }
+ }
+ if (!isAdded) {
+ this.formFieldListValueMap.set(formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId'], '');
+ }
+ } else if (formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldType'] == 'Select Field Type' && formFieldGroupObjItem['formFieldList'][ffGrpValue]['validationType'] == 'NONE') {
+ let isAdded = false;
+ for (let ffValue = 0; ffValue < formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'].length; ffValue++) {
+
+ if (formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'][ffValue]['defaultValue'] == true) {
+ this.formFieldListValueMap.set(formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId'], formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'][ffValue]['id']);
+ isAdded = true;
+ }
+ }
+ if (!isAdded) {
+ this.formFieldListValueArr[this.totalCommonCount + ffGrpValue] = '';
+ }
+ } else {
+ this.formFieldListValueMap.set(formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId'], '');
+ }
+ }
+ } else {
+ this.formFieldListValueMap.set(formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId'], '');
+ }
+ }
+ }
+ }
+ }
+ if (this.formFieldGroupObjList.length > 0) {
+ for (let ffl = 0; ffl < this.formFieldList.length; ffl++) {
+ for (let ffgl = 0; ffgl < this.formFieldGroupObjList.length; ffgl++) {
+ const inList = this.formFieldGroupObjList[ffgl]['formFieldList'];
+
+ for (let inl = 0; inl < inList.length; inl++) {
+ let cntr = 0;
+ if (inList[inl]['fieldId'] == this.formFieldList[ffl]['fieldId']) {
+ cntr++;
+ }
+ if (cntr == 0) {
+ this.finalQueryParamsObj[inList[inl]['fieldId']] = '-1';
+ }
+ }
+
+ }
+ }
+ }
+ }
+ for (const tffr of this.toggleFormFieldRenderArr) {
+ if (this.formFieldListValueMap.get(tffr['fieldId']) || this.formFieldListValueMap.get(tffr['fieldId']) == '') {
+ if (tffr['validationType'] == 'DATE') {
+ this.finalQueryParamsObj[tffr['fieldId']] = this.convertDate(this.formFieldListValueMap.get(tffr['fieldId']));
+ } else if (this.formFieldListValueMap.get(tffr['fieldId']) == '') {
+
+ if (tffr['fieldType'] == 'LIST_MULTI_SELECT') {
+ let multiSelectValue = '';
+ if (multiSelectValue != '') {
+ multiSelectValue = multiSelectValue.substring(0, multiSelectValue.length - 1);
+ }
+ this.finalQueryParamsObj[tffr['fieldId']] = multiSelectValue;
+
+ } else {
+ this.finalQueryParamsObj[tffr['fieldId']] = '';
+ }
+ } else {
+ this.finalQueryParamsObj[tffr['fieldId']] = this.formFieldListValueMap.get(tffr['fieldId']);
+ if (this.initialObject[tffr['fieldId']] !== this.finalQueryParamsObj[tffr['fieldId']]) {
+ this.initialObject[tffr['fieldId']] = this.finalQueryParamsObj[tffr['fieldId']];
+ this.generateQueryString();
+ await this.delay(1000);
+ console.log('Afterp: ' + new Date().toString());
+ if ( tffr['triggerOtherFormFields'] == true) {
+ this._runService.refreshFormFields(this.reportId, this.queryString)
+ .subscribe((responseRefreshFF) => {
+ for (let rrff = 0; rrff < responseRefreshFF['formFieldList'].length; rrff++) {
+ for (let innerTFRR = 0; innerTFRR < this.toggleFormFieldRenderArr.length; innerTFRR++) {
+ if (responseRefreshFF['formFieldList'][rrff]['fieldId'] == this.toggleFormFieldRenderArr[innerTFRR]['fieldId']) {
+ this.toggleFormFieldRenderArr[innerTFRR] = responseRefreshFF['formFieldList'][rrff];
+ }
+ }
+ }
+ });
+
+ }
+ this.initialObject[tffr['fieldId']] = this.finalQueryParamsObj[tffr['fieldId']];
+ }
+ }
+ }
+ }
+
+ if (this.reportMode !== 'Regular' && this.reportMode !== 'Dashboard') {
+ for (const ffvalue of this.formFieldList) {
+ if (this.formFieldListValueMap.get(ffvalue['fieldId']) === '' || this.formFieldListValueMap.get(ffvalue['fieldId']) ) {
+ if (ffvalue['validationType'] == 'DATE' && this.formFieldListValueMap.get(ffvalue['fieldId']) !== '' ) {
+ this.finalQueryParamsObj[ffvalue['fieldId']] = this.convertDate(this.formFieldListValueMap.get(ffvalue['fieldId']));
+ }else if (ffvalue['validationType'] == 'TIMESTAMP_SEC' && this.formFieldListValueMap.get(ffvalue['fieldId']) !== ''){
+ if(this.formFieldListValueMap.get(ffvalue['fieldId'])[0] != ''){
+ this.finalQueryParamsObj[ffvalue['fieldId']] = this.convertDate(this.formFieldListValueMap.get(ffvalue['fieldId'])[0]);
+ } else {
+ this.finalQueryParamsObj[ffvalue['fieldId']] = this.formFieldListValueMap.get(ffvalue['fieldId'])[0];
+ }
+ this.finalQueryParamsObj[ffvalue['fieldId']+'_Hr'] = this.formFieldListValueMap.get(ffvalue['fieldId'])[1];
+ this.finalQueryParamsObj[ffvalue['fieldId']+'_Min'] = this.formFieldListValueMap.get(ffvalue['fieldId'])[2];
+ this.finalQueryParamsObj[ffvalue['fieldId']+'_Sec'] = this.formFieldListValueMap.get(ffvalue['fieldId'])[3];
+ }else if (ffvalue['validationType'] == 'TIMESTAMP_MIN' && this.formFieldListValueMap.get(ffvalue['fieldId']) !== ''){
+ if(this.formFieldListValueMap.get(ffvalue['fieldId'])[0] != ''){
+ this.finalQueryParamsObj[ffvalue['fieldId']] = this.convertDate(this.formFieldListValueMap.get(ffvalue['fieldId'])[0]);
+ }else{
+ this.finalQueryParamsObj[ffvalue['fieldId']] = this.formFieldListValueMap.get(ffvalue['fieldId'])[0];
+ }
+ this.finalQueryParamsObj[ffvalue['fieldId']+'_Hr'] = this.formFieldListValueMap.get(ffvalue['fieldId'])[1];
+ this.finalQueryParamsObj[ffvalue['fieldId']+'_Min'] = this.formFieldListValueMap.get(ffvalue['fieldId'])[2];
+ }else if (ffvalue['validationType'] == 'TIMESTAMP_HOUR' && this.formFieldListValueMap.get(ffvalue['fieldId']) !== ''){
+ if(this.formFieldListValueMap.get(ffvalue['fieldId'])[0] != ''){
+ this.finalQueryParamsObj[ffvalue['fieldId']] = this.convertDate(this.formFieldListValueMap.get(ffvalue['fieldId'])[0]);
+ }else{
+ this.finalQueryParamsObj[ffvalue['fieldId']] = this.formFieldListValueMap.get(ffvalue['fieldId'])[0];
+ }
+ this.finalQueryParamsObj[ffvalue['fieldId']+'_Hr'] = this.formFieldListValueMap.get(ffvalue['fieldId'])[1];
+ }
+ else {
+ this.finalQueryParamsObj[ffvalue['fieldId']] = this.formFieldListValueMap.get(ffvalue['fieldId']);
+ }
+ for (const trigElement of this.triggerFormFieldArr) {
+ if (this.initialObject[trigElement] !== this.finalQueryParamsObj[trigElement]) {
+ this.initialObject[trigElement] = this.finalQueryParamsObj[trigElement];
+ this.generateQueryString();
+ await this.delay(1000);
+ console.log('Afterp: ' + new Date().toString());
+ if (ffvalue['triggerOtherFormFields'] == true) {
+ this._runService.refreshFormFields(this.reportId, this.queryString)
+ .subscribe((responseRefreshFF) => {
+ for (let rrff = 0; rrff < responseRefreshFF['formFieldList'].length; rrff++) {
+ for (let innerFFL = 0; innerFFL < this.formFieldList.length; innerFFL++) {
+ if (responseRefreshFF['formFieldList'][rrff]['fieldId'] == this.formFieldList[innerFFL]['fieldId']) {
+ this.formFieldList[innerFFL] = responseRefreshFF['formFieldList'][rrff];
+ }
+ }
+ }
+ });
+ }
+
+ }
+
+ }
+ }
+ }
+
+ }
+ }
+ if (this.firstRun) {
+ this.saveGroupSelectValue = this.groupSelectValue;
+ this.saveFormFieldListValueMap = cloneDeep(this.formFieldListValueMap);
+ }
+ this.firstRun = false;
+ }
+
+ convertDate(str) {
+ const date = new Date(str),
+ mnth = ('0' + (date.getMonth() + 1)).slice(-2),
+ day = ('0' + date.getDate()).slice(-2);
+ return [mnth, day, date.getFullYear()].join('/');
+ }
+
+ getQueryString() {
+ if (this.directCallQueryParams !== '') {
+ return this.directCallQueryParams;
+ } else {
+ return this.queryString;
+ }
+ }
+
+ fetchAndPopulateFormFields(respObj: any, ffReportId: string) {
+ this._runService.getFormFieldGroupsData(ffReportId)
+ .subscribe((responseFormFieldGroups) => {
+ this.firstRun = true;
+ this.showformFiledSpinner = false;
+ this.formFieldGroupObjList = JSON.parse(responseFormFieldGroups['formFieldGroupsJSON']);
+ this.saveFormFieldGroups = JSON.parse(responseFormFieldGroups['formFieldGroupsJSON']);
+ this.formFieldList = respObj['formFieldList'];
+ if (this.formFieldList.length === 1 && this.formFieldList[0]['visible'] === false) {
+ this.showRunButton = false;
+ } else if (this.formFieldList.length > 0) {
+ this.showRunButton = true;
+ }
+ this.staticFormFieldList = respObj['formFieldList'];
+ this.reportMode = 'FormField';
+ this.totalCount = this.formFieldList.length;
+ if (this.formFieldGroupObjList !== null) {
+ for (let ffgl = 0; ffgl < this.formFieldGroupObjList.length; ffgl++) {
+ for (let itemFFGL = 0; itemFFGL < this.formFieldGroupObjList[ffgl]['formFieldList'].length; itemFFGL++) {
+ const formFieldGroupItem = this.formFieldGroupObjList[ffgl]['formFieldList'][itemFFGL];
+ for (let fflg = 0; fflg < this.formFieldList.length; fflg++) {
+ if (formFieldGroupItem['id'] == this.formFieldList[fflg]['fieldId']) {
+ this.formFieldGroupObjList[ffgl]['formFieldList'][itemFFGL] = this.formFieldList[fflg];
+ this.saveFormFieldGroups[ffgl]['formFieldList'][itemFFGL] = this.formFieldList[fflg];
+
+ if (this.formFieldList[fflg]['triggerOtherFormFields'] === true) {
+ const formFieldId = this.formFieldList[fflg]['fieldId'];
+ this.triggerFormFieldArr.push(formFieldId);
+ this.initialObject[formFieldId] = [];
+ this.finalQueryParamsObj[formFieldId] = [];
+ }
+ this.formFieldList.splice(fflg, 1);
+ this.unCommonGropusList.push(formFieldGroupItem);
+ this.unCommonCnt++;
+ }
+ }
+ }
+ }
+ }
+ if (this.calledWithFormFields != true) {
+ for (let checkRadio = 0; checkRadio < this.formFieldList.length; checkRadio++) {
+ if (this.formFieldList[checkRadio]['fieldDisplayName'] == 'selectCriteria') {
+ for (let ffValue = 0; ffValue < this.formFieldList[checkRadio]['formFieldValues'].length; ffValue++) {
+ if (this.formFieldList[checkRadio]['formFieldValues'][ffValue]['defaultValue'] == true) {
+ this.groupSelectValue = this.formFieldList[checkRadio]['formFieldValues'][ffValue]['name'];
+ }
+ }
+ this.oldGroupSelectValue = this.groupSelectValue;
+ }
+ }
+ }
+ this.commonCount = this.totalCount - this.unCommonCnt;
+ this.totalCommonCount = this.commonCount;
+ console.log(this.unCommonGropusList);
+ console.log(this.formFieldList);
+ 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'] == 'TIMESTAMP_SEC') {
+ const multiSelectArray = [];
+
+ if (formFieldObj['formFieldValues'].length > 0) {
+ const date = formFieldObj['formFieldValues'][0]['id'];
+ let tempDate = new Date(date);
+ multiSelectArray.push(tempDate);
+ multiSelectArray.push(tempDate.getHours());
+ multiSelectArray.push(tempDate.getMinutes());
+ multiSelectArray.push(tempDate.getSeconds());
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], multiSelectArray);
+ } else {
+ multiSelectArray.push('');
+ multiSelectArray.push('0');
+ multiSelectArray.push('0');
+ multiSelectArray.push('0');
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], multiSelectArray);
+ }
+ }
+ else if (formFieldObj['validationType'] == 'TIMESTAMP_MIN') {
+ const multiSelectArray = [];
+ if (formFieldObj['formFieldValues'].length > 0) {
+ const date = formFieldObj['formFieldValues'][0]['id'];
+ let tempDate = new Date(date);
+ multiSelectArray.push(tempDate);
+ multiSelectArray.push(tempDate.getHours());
+ multiSelectArray.push(tempDate.getMinutes());
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], multiSelectArray);
+ } else {
+ multiSelectArray.push('');
+ multiSelectArray.push('0');
+ multiSelectArray.push('0');
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], multiSelectArray);
+ }
+ } else if (formFieldObj['validationType'] == 'TIMESTAMP_HOUR') {
+ const multiSelectArray = [];
+
+ if (formFieldObj['formFieldValues'].length > 0) {
+ const date = formFieldObj['formFieldValues'][0]['id'];
+
+ let tempDate = new Date(date);
+ multiSelectArray.push(tempDate);
+ multiSelectArray.push(tempDate.getHours());
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], multiSelectArray);
+ } else {
+ multiSelectArray.push('');
+ multiSelectArray.push('0');
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], multiSelectArray);
+ }
+ }
+ else{
+ const date = formFieldObj['formFieldValues'][0]['id'];
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], new Date(date));
+ }
+ } else if (formFieldObj['fieldType'] == 'LIST_BOX' && formFieldObj['formFieldValues'].length > 0) {
+ let isAdded = false;
+ for (let ffValue = 0; ffValue < formFieldObj['formFieldValues'].length; ffValue++) {
+ if (formFieldObj['formFieldValues'][ffValue]['defaultValue'] == true) {
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], formFieldObj['formFieldValues'][ffValue]['id']);
+ isAdded = true;
+ }
+ }
+ if (!isAdded) {
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], '');
+ }
+ } else if ((formFieldObj['fieldType'] == 'LIST_MULTI_SELECT' || formFieldObj['fieldType'] == 'TEXT') && formFieldObj['formFieldValues'].length > 0) {
+ let isAdded = false;
+ const multiSelectArray = [];
+ for (let ffValue = 0; ffValue < formFieldObj['formFieldValues'].length; ffValue++) {
+ if (formFieldObj['formFieldValues'][ffValue]['defaultValue'] == true) {
+ multiSelectArray.push(formFieldObj['formFieldValues'][ffValue]['id']);
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], multiSelectArray);
+ isAdded = true;
+ }
+ }
+ if (!isAdded) {
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], '');
+ }
+ } else if (formFieldObj['fieldDisplayName'] == 'DefaultRadio') {
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], '');
+
+ } else {
+ this.formFieldListValueMap.set(formFieldObj['fieldId'], '');
+ }
+ }
+
+ if (formFieldObj['triggerOtherFormFields'] === true) {
+ const formFieldId = formFieldObj['fieldId'];
+ this.triggerFormFieldArr.push(formFieldId);
+ this.initialObject[formFieldId] = [];
+ this.finalQueryParamsObj[formFieldId] = [];
+ }
+ }
+
+ console.log(this.formFieldListValueMap);
+
+ if (this.calledWithFormFields != true) {
+ if (this.formFieldGroupObjList !== null) {
+ for (const formFieldGroupObjItem of this.formFieldGroupObjList) {
+ if (formFieldGroupObjItem['name'] == this.groupSelectValue) {
+ this.toggleFormFieldRenderArr = formFieldGroupObjItem['formFieldList'];
+ for (let ffGrpValue = 0; ffGrpValue < formFieldGroupObjItem['formFieldList'].length; ffGrpValue++) {
+ if (formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'].length > 0) {
+ for (let ffValue = 0; ffValue < formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'].length; ffValue++) {
+ if (formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'][ffValue]['defaultValue'] == true) {
+ if (formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldType'] == 'LIST_MULTI_SELECT') {
+ const multiSelectArray = [];
+ multiSelectArray.push(formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'][ffValue]['id']);
+ this.formFieldListValueMap.set(formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId'], multiSelectArray);
+ } else {
+ this.formFieldListValueMap.set(formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId'], formFieldGroupObjItem['formFieldList'][ffGrpValue]['formFieldValues'][ffValue]['id']);
+ }
+ }
+ }
+ } else {
+ this.formFieldListValueMap.set(formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId'], '');
+
+ }
+ }
+ }
+
+ }
+ }
+ }
+ console.log('finalMap', this.formFieldListValueMap);
+ if (this.formFieldGroupObjList !== null) {
+ if (this.formFieldGroupObjList.length > 0) {
+ for (let ffl = 0; ffl < this.formFieldList.length; ffl++) {
+ for (let ffgl = 0; ffgl < this.formFieldGroupObjList.length; ffgl++) {
+ const inList = this.formFieldGroupObjList[ffgl]['formFieldList'];
+
+ for (let inl = 0; inl < inList.length; inl++) {
+ let cntr = 0;
+ if (inList[inl]['fieldId'] == this.formFieldList[ffl]['fieldId']) {
+ cntr++;
+ }
+ if (cntr == 0) {
+ this.finalQueryParamsObj[inList[inl]['fieldId']] = '-1';
+ }
+ }
+
+ }
+ }
+ }
+ }
+ this.save = cloneDeep(this.formFieldGroupObjList);
+ });
+ }
+
+ generateQueryString() {
+
+ this.queryString = '';
+ for (let k = 0; k < Object.keys(this.finalQueryParamsObj).length; k++) {
+ if (typeof (this.finalQueryParamsObj[Object.keys(this.finalQueryParamsObj)[k]]) == 'object') {
+ const key = Object.keys(this.finalQueryParamsObj)[k];
+ let qstr = '';
+ let l = 0;
+ while (this.finalQueryParamsObj[key][l]) {
+ if (l === 0) {
+ qstr = qstr + this.finalQueryParamsObj[Object.keys(this.finalQueryParamsObj)[k]][l];
+ } else {
+ qstr = qstr + '|' + this.finalQueryParamsObj[Object.keys(this.finalQueryParamsObj)[k]][l];
+ }
+ l++;
+ }
+ if (qstr !== '') {
+ this.queryString = this.queryString + '&' + Object.keys(this.finalQueryParamsObj)[k] + '=' + qstr;
+ }
+ } else {
+ if (typeof (this.finalQueryParamsObj[Object.keys(this.finalQueryParamsObj)[k]]) == 'string') {
+ this.queryString = this.queryString + '&' + Object.keys(this.finalQueryParamsObj)[k] + '=' + this.finalQueryParamsObj[Object.keys(this.finalQueryParamsObj)[k]];
+ } else {
+ this.queryString = this.queryString + '&' + Object.keys(this.finalQueryParamsObj)[k] + '=' + this.finalQueryParamsObj[Object.keys(this.finalQueryParamsObj)[k]];
+ }
+ }
+
+ }
+
+ }
+
+ showError(Errresponse: any) {
+ this.errorMessage = Errresponse['errormessage'];
+ this.stackTrace = Errresponse['stacktrace'];
+ this.error = true;
+ this.showSpinner = false;
+ }
+
+ runReport() {
+ this.hitCnt++;
+ this.showSpinner = true;
+ if (this.iSDashboardReport !== 'Dashboard') {
+ if (this.formFieldList.length > 0) {
+ this.reportMode = 'FormField';
+ this.generateQueryString();
+ } else {
+ this.reportMode = 'Regular';
+ }
+ this.showSpinner = false;
+ } else {
+ this.generateQueryString();
+ this.showSpinner = false;
+ }
+ this.httpCacheService.setRouteCache(this.reportId, this.getQueryString());
+ this.httpCacheService.setRouteGroupCache(this.reportId, this.groupSelectValue);
+ this.runReportAgain = !this.runReportAgain;
+ this.navigateToRun = true;
+ }
+
+ editReport(reportId: string) {
+ this._router.navigate(['v2/app/reports', 'Edit', reportId]);
+ }
+
+ showLabelFn() {
+ this.showLabel = !this.showLabel;
+ }
+
+ setDefaultFieldGroupValueForNonSelected(formFieldsList: any) {
+ this.tempFieldValues = [];
+ const map = new Map<string, string>();
+ for (const value in this.finalQueryParamsObj) {
+ map.set(value, this.finalQueryParamsObj[value]);
+ }
+ for (const ffl of formFieldsList) {
+ if (!map.get(ffl['fieldId']) && ffl['formFieldValues'].length === 1) {
+ this.tempFieldValues = ffl['formFieldValues'];
+ if (ffl['fieldDisplayName'] == this.tempFieldValues[0]['name']) {
+ this.finalQueryParamsObj[ffl['fieldId']] = '-1';
+ }
+ }
+ }
+ }
+
+ resetFormFieldValues() {
+ this.httpCacheService.clearCache();
+ this._router.navigateByUrl('v2/app/refresh', {skipLocationChange: true}).then(() =>
+ this._router.navigate(['v2/run', this.reportId]));
+ }
+
+ goBack() {
+ const prevId = this.httpCacheService.getPreviousId(this.reportId) || null;
+ const prevIdParent = this.httpCacheService.getPreviousId(prevId) || null;
+ if (prevId) {
+ if (prevIdParent && prevIdParent === 'parent') {
+ this._router.navigate(['v2/run', prevId, this.httpCacheService.getRouteCache(prevId), this.httpCacheService.getRouteGroupCache(prevId), 'false', 'true']);
+ } else {
+ this._router.navigate(['v2/run', prevId, this.httpCacheService.getRouteCache(prevId), this.httpCacheService.getRouteGroupCache(prevId), 'true', 'true']);
+ }
+ }
+ }
+
+ private delay(ms: number) {
+ return new Promise(resolve => setTimeout(resolve, ms));
+ }
+
+ private removePrevioustoggleGroupData() {
+ for (const formFieldGroupObjItem of this.formFieldGroupObjList) {
+ if (formFieldGroupObjItem['name'] == this.oldGroupSelectValue) {
+ for (let ffGrpValue = 0; ffGrpValue < formFieldGroupObjItem['formFieldList'].length; ffGrpValue++) {
+ this.finalQueryParamsObj[formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId']] = '-1';
+ this.formFieldListValueMap.delete(formFieldGroupObjItem['formFieldList'][ffGrpValue]['fieldId']);
+ this.triggerFormFieldArr = [];
+ }
+
+ }
+ }
+ }
+
+ getTime(){
+ for(let i=0; i<=59; i++){
+ this.timeStampArray.push(i);
+ }
+ }
+
+ getHours(){
+ for(let i=0; i<=23; i++){
+ this.hoursArray.push(i);
+ }
+ }
+}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set-datasource.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set-datasource.ts
new file mode 100644
index 00000000..a6a515b5
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set-datasource.ts
@@ -0,0 +1,86 @@
+import { DataSource } from '@angular/cdk/collections';
+import { MatPaginator } from '@angular/material/paginator';
+import { MatSort } from '@angular/material/sort';
+import { map } from 'rxjs/operators';
+import { Observable, of as observableOf, merge } from 'rxjs';
+
+// TODO: Replace this with your own data model type
+export interface RunReportFinalTableItem {
+
+}
+
+// TODO: replace this with real data from your application
+
+
+/**
+ * Data source for the RunReportFinalTable view. This class should
+ * encapsulate all logic for fetching and manipulating the displayed data
+ * (including sorting, pagination, and filtering).
+ */
+export class RunReportFinalTableDataSource extends DataSource<RunReportFinalTableItem> {
+ data: RunReportFinalTableItem[];
+ paginator: MatPaginator;
+ sort: MatSort;
+
+ constructor() {
+ super();
+ }
+
+ /**
+ * Connect this data source to the table. The table will only update when
+ * the returned stream emits new items.
+ * @returns A stream of the items to be rendered.
+ */
+ connect(): Observable<RunReportFinalTableItem[]> {
+ // Combine everything that affects the rendered data into one update
+ // stream for the data-table to consume.
+ const dataMutations = [
+ observableOf(this.data),
+ this.paginator.page,
+ this.sort.sortChange
+ ];
+
+ return merge(...dataMutations).pipe(map(() => {
+ return this.getPagedData(this.getSortedData([...this.data]));
+ }));
+ }
+
+ /**
+ * Called when the table is being destroyed. Use this function, to clean up
+ * any open connections or free any held resources that were set up during connect.
+ */
+ disconnect() {}
+
+ /**
+ * Paginate the data (client-side). If you're using server-side pagination,
+ * this would be replaced by requesting the appropriate data from the server.
+ */
+ private getPagedData(data: RunReportFinalTableItem[]) {
+ const startIndex = this.paginator.pageIndex * this.paginator.pageSize;
+ return data.splice(startIndex, this.paginator.pageSize);
+ }
+
+ /**
+ * Sort the data (client-side). If you're using server-side sorting,
+ * this would be replaced by requesting the appropriate data from the server.
+ */
+ private getSortedData(data: RunReportFinalTableItem[]) {
+ if (!this.sort.active || this.sort.direction === '') {
+ return data;
+ }
+
+ return data.sort((a, b) => {
+ const isAsc = this.sort.direction === 'asc';
+ switch (this.sort.active) {
+ // case 'name': return compare(a.name, b.name, isAsc);
+ // case 'id': return compare(+a.id, +b.id, isAsc);
+ default: return 0;
+ }
+ });
+ }
+}
+
+/** Simple sort comparator for example ID/Name columns (for client-side sorting). */
+function compare(a, b, isAsc) {
+ return (a < b ? -1 : 1) * (isAsc ? 1 : -1);
+}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.css b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.css
new file mode 100644
index 00000000..d74a7bd4
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.css
@@ -0,0 +1,201 @@
+/* .left {
+ width: auto;
+ float: left;
+ text-align: right;
+}
+.right {
+ width: auto;
+
+ float: left;
+} */
+
+mat-icon{
+ color: #006496;
+ cursor: pointer;
+}
+
+/* .tab-pane{
+ padding-right: 130px;
+ padding-left: 120px;
+ color: rgba(0, 0, 0, 0.603)
+} */
+
+.boxMargin{
+
+ width: auto;
+}
+
+mat-button-toggle{
+ display: block;
+ width: 400px;
+ border-radius: 5px;
+}
+
+input {
+ width: 400px;
+ height: 20px;
+}
+
+.tab-content{
+ margin-right: 20px;
+ /* background-color: #006496; */
+ color: rgb(0, 0, 0);
+}
+
+.stdForm{
+ margin-left: 20px;
+}
+
+.field-group {
+ position: relative;
+ display: block;
+}
+
+label + .field-group, label + .input-append, label + .row, label + .row-nowrap, label + .form-row {
+ margin-top: 5px;
+}
+
+textarea {
+ display: block;
+ width: 400px;
+ max-width: 50%;
+ padding: 15px;
+}
+
+select{
+ display: block;
+ width: 400px;
+ max-width: 400px;
+ padding: 15px;
+ background-color: #cfcfcf7a
+}
+
+.webform-component-my-select select {
+ height: 200px;
+}
+
+.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: 80px;
+ /* margin-left: 250px;
+ margin-right: 250px; */
+ /* overflow: scroll; */
+}
+
+.app-data-table1 {
+ margin-left: 150px;
+ margin-right: 150px;
+}
+
+th{
+ /* background-color: #006496; */
+ color: rgb(0, 0, 0);
+ 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: 5px;
+
+}
+
+.card-header{
+ height: 50px;
+}
+
+.card-body{
+ height: 150px;
+}
+
+.card-footer{
+ height: 50px;
+ margin-right: 10px;
+}
+
+.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;
+} \ 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-result-set/run-report-result-set.component.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.html
new file mode 100644
index 00000000..76183db3
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.html
@@ -0,0 +1,23 @@
+<div class="app-data-table">
+ <table mat-table class="full-width-table" matSort aria-label="Elements">
+ <!-- Id Column -->
+ <!-- <div *ngFor="let b of "> -->
+ <div *ngFor="let keys of displayedColumns; let i = index">
+ <ng-container matColumnDef="{{keys}}">
+ <th mat-header-cell *matHeaderCellDef mat-sort-header >{{displayedColumnsArr[i].split(",")[0]}}</th>
+ <td mat-cell *matCellDef="let row">{{row[keys]}}</td>
+ </ng-container>
+ </div>
+
+ <!-- </div> -->
+ <tr mat-header-row *matHeaderRowDef="displayedColumns" ></tr>
+ <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
+ </table>
+
+ <mat-paginator #paginator
+ [length]="dataSource?.data.length"
+ [pageIndex]="0"
+ [pageSize]="15"
+ [pageSizeOptions]="[15, 25, 50, 100, 250]">
+ </mat-paginator>
+</div>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.spec.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.spec.ts
new file mode 100644
index 00000000..cc8fd2bd
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.spec.ts
@@ -0,0 +1,38 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+import { MatPaginatorModule } from '@angular/material/paginator';
+import { MatSortModule } from '@angular/material/sort';
+import { MatTableModule } from '@angular/material/table';
+
+import { RunReportResultSetComponent } from './run-report-result-set.component';
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { RouterTestingModule } from '@angular/router/testing';
+
+describe('RunReportResultSetComponent', () => {
+ let component: RunReportResultSetComponent;
+ let fixture: ComponentFixture<RunReportResultSetComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ RunReportResultSetComponent ],
+ imports: [
+ NoopAnimationsModule,
+ MatPaginatorModule,
+ MatSortModule,
+ MatTableModule,
+ HttpClientTestingModule,
+ RouterTestingModule
+ ],
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(RunReportResultSetComponent);
+ component = fixture.componentInstance;
+ //fixture.detectChanges();
+ });
+
+ it('should compile', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.ts
new file mode 100644
index 00000000..4f18ff8e
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report-result-set/run-report-result-set.component.ts
@@ -0,0 +1,139 @@
+import { AfterViewInit, Component, OnInit, ViewChild, Input, SimpleChange } from '@angular/core';
+import { MatPaginator } from '@angular/material/paginator';
+import { MatSort } from '@angular/material/sort';
+import { MatTable } from '@angular/material/table';
+import { RunReportFinalTableDataSource, RunReportFinalTableItem } from './run-report-result-set-datasource';
+import { ActivatedRoute } from '@angular/router';
+import { HttpClient } from '@angular/common/http';
+import { RunService } from '../run.service';
+
+@Component({
+ selector: 'app-run-report-result-set',
+ templateUrl: './run-report-result-set.component.html',
+ styleUrls: ['./run-report-result-set.component.css']
+})
+export class RunReportResultSetComponent implements AfterViewInit, OnInit {
+
+ @Input("reportId") reportId1 : string;
+
+
+ @ViewChild(MatPaginator, {static: false} as any) paginator: MatPaginator;
+ @ViewChild(MatSort, {static: false} as any) sort: MatSort;
+ @ViewChild(MatTable, {static: false} as any) table: MatTable<RunReportFinalTableItem>;
+ dataSource: RunReportFinalTableDataSource;
+
+ /** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */
+ displayedColumns : string[];
+ IncomingReportId : string;
+ displayedColumnsArr : string[];
+ displayedRowObj : RunReportFinalTableItem[];
+
+ constructor(private _http : HttpClient, private _route : ActivatedRoute, private _runService : RunService){
+ this.displayedColumnsArr = new Array();
+ this.displayedRowObj = new Array();
+ this.displayedColumns = new Array();
+ }
+
+ ngOnInit() {
+ this.dataSource = new RunReportFinalTableDataSource();
+
+ this._route.params.subscribe(params => {
+
+ this.IncomingReportId = params["reportId"];
+ });
+ this._runService.getReportData(this.reportId1)
+ .subscribe((response) => {
+ console.log(response);
+
+ let i=0;
+ while(response["reportDataColumns"][i])
+ {
+ this.displayedColumnsArr.push(response["reportDataColumns"][i]["columnTitle"] +","+ response["reportDataColumns"][i]["colId"]);
+ i++;
+ }
+
+ let j=0;
+ while(response["reportDataRows"][j])
+ {
+ let k=0;
+ let obj = new Object();
+ while(this.displayedColumnsArr[k])
+ {
+ if(response["reportDataRows"][j][this.displayedColumnsArr[k].split(",")[1]])
+ {
+ obj[response["reportDataRows"][j][this.displayedColumnsArr[k].split(",")[1]]["colId"]] = response["reportDataRows"][j][this.displayedColumnsArr[k].split(",")[1]]["displayValue"];
+ }
+ k++;
+ }
+ this.displayedRowObj.push(obj);
+ j++;
+ }
+
+ console.log(this.displayedColumnsArr);
+ console.log(this.displayedRowObj);
+
+ for(let l=0; l<this.displayedColumnsArr.length; l++)
+ {
+ this.displayedColumns.push(this.displayedColumnsArr[l].split(",")[1]);
+ }
+
+
+ this.dataSource.data = this.displayedRowObj;
+ this.dataSource.sort = this.sort;
+ this.dataSource.paginator = this.paginator;
+ this.table.dataSource = this.dataSource;
+
+ });
+
+
+ }
+
+ ngAfterViewInit() {
+ this._runService.getReportData(this.reportId1)
+ .subscribe((response) => {
+ console.log(response);
+
+ let i=0;
+ while(response["reportDataColumns"][i])
+ {
+ this.displayedColumnsArr.push(response["reportDataColumns"][i]["columnTitle"] +","+ response["reportDataColumns"][i]["colId"]);
+ i++;
+ }
+
+ let j=0;
+ while(response["reportDataRows"][j])
+ {
+ let k=0;
+ let obj = new Object();
+ while(this.displayedColumnsArr[k])
+ {
+ if(response["reportDataRows"][j][this.displayedColumnsArr[k].split(",")[1]])
+ {
+ obj[response["reportDataRows"][j][this.displayedColumnsArr[k].split(",")[1]]["colId"]] = response["reportDataRows"][j][this.displayedColumnsArr[k].split(",")[1]]["displayValue"];
+ }
+ k++;
+ }
+ this.displayedRowObj.push(obj);
+ j++;
+ }
+
+ console.log(this.displayedColumnsArr);
+ console.log(this.displayedRowObj);
+
+ for(let l=0; l<this.displayedColumnsArr.length; l++)
+ {
+ this.displayedColumns.push(this.displayedColumnsArr[l].split(",")[1]);
+ }
+
+ this.dataSource.data = this.displayedRowObj;
+ this.dataSource.sort = this.sort;
+ this.dataSource.paginator = this.paginator;
+ this.table.dataSource = this.dataSource;
+
+ });
+
+
+ }
+
+
+}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/dashboard-report.service.spec.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/dashboard-report.service.spec.ts
new file mode 100644
index 00000000..1c96f7ed
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/dashboard-report.service.spec.ts
@@ -0,0 +1,37 @@
+import { TestBed } from '@angular/core/testing';
+
+import { DashboardReportService } from './dashboard-report.service';
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { HttpClient } from '@angular/common/http';
+import { environment } from 'src/environments/environment';
+
+describe('DashboardReportService', () => {
+
+ let service: DashboardReportService;
+
+ beforeEach(() => {TestBed.configureTestingModule({
+ imports: [HttpClientTestingModule],
+ providers: [HttpClient, HttpClientTestingModule, DashboardReportService]
+ });
+ service = TestBed.get(DashboardReportService);
+
+});
+
+ it('should be created', () => {
+ const service: DashboardReportService = TestBed.get(DashboardReportService);
+ expect(service).toBeTruthy();
+ });
+
+ it('should getReportData', () => {
+ service.getReportData("test").subscribe((res) => {
+ expect(res).toBe(environment);
+ });
+ });
+
+ it('should getReportDataWithFormFields', () => {
+ service.getReportDataWithFormFields("just", "test").subscribe((res) => {
+ expect(res).toBe(environment);
+ });
+ });
+
+});
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/dashboard-report.service.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/dashboard-report.service.ts
new file mode 100644
index 00000000..009865e7
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/dashboard-report.service.ts
@@ -0,0 +1,22 @@
+import { Injectable } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
+import { Observable } from 'rxjs';
+import { environment } from 'src/environments/environment';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class DashboardReportService {
+
+ constructor(private _http: HttpClient) {
+ }
+
+
+ getReportData(reportId: string): Observable<any> {
+ return this._http.get(environment.baseUrl + 'raptor.htm?action=report.run.container&c_master=' + reportId + '&refresh=Y');
+ }
+
+ getReportDataWithFormFields(queryString: string, reportId: string): Observable<any> {
+ return this._http.get(environment.baseUrl + 'raptor.htm?action=report.run.container&c_master=' + reportId + queryString + '&refresh=Y&display_content=Y&r_page=0&child=true');
+ }
+}
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.css b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.css
new file mode 100644
index 00000000..730fa004
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.css
@@ -0,0 +1,90 @@
+.submit-approval-btn{
+ display: contents;
+}
+.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);
+ }
+}
+
+
+table {
+ width: 100%;
+ }
+ .example-container {
+ height: auto;
+ max-height: 500px;
+ overflow: auto;
+ }
+
+ td.mat-cell{
+ padding-left: 3px;
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ border-right: 0.1px solid gray;
+ border-left: 0.1px solid gray;
+}
+.mat-icon-delete{
+ color: #006496;
+ cursor: pointer;
+}
+
+
+.app-data-table {
+ margin-top: 0px;
+ }
+
+
+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;
+ }
+
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.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.html
new file mode 100644
index 00000000..5384e89b
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.html
@@ -0,0 +1,44 @@
+<span *ngIf="showSpinner" class="ecomp-spinner"></span>
+
+<div *ngIf="!showChart">
+ <div class="app-data-table">
+ <div class="app-data-table-fixed-height">
+ <div class="example-container">
+<!-- <mat-paginator [pageSizeOptions]="[5, 10, 20]" showFirstLastButtons></mat-paginator>-->
+ <table [dataSource]="dataSource" mat-table matSort>
+ <div *ngFor="let keys of displayedColumns; let i = index">
+ <ng-container matColumnDef="{{keys}}">
+ <th *matHeaderCellDef mat-header-cell
+ mat-sort-header>{{displayedColumnsArr[i].split(",")[0]}}</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] == '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] !== 'linkToReport' && row[keys].split('|')[0] !== 'linkToMail'">
+ {{row[keys].split('|')[0]}}</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>
+
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.scss b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.scss
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.scss
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.spec.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.spec.ts
new file mode 100644
index 00000000..ba2fbf34
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-dashboard-report/run-dashboard-report.component.spec.ts
@@ -0,0 +1,126 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { MatTableModule } from '@angular/material';
+import { RunDashboardReportComponent } from './run-dashboard-report.component';
+import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+import { RouterModule, Router } from '@angular/router';
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { RouterTestingModule } from '@angular/router/testing';
+import { DashboardReportService } from './dashboard-report.service';
+import { MockBackend, MockConnection } from '@angular/http/testing';
+import { Http, BaseRequestOptions } from '@angular/http';
+import { Observable } from 'rxjs';
+import 'rxjs/add/observable/empty';
+import 'rxjs/add/observable/of';
+import { environment } from 'src/environments/environment';
+
+describe('RunDashboardReportComponent', () => {
+ let component: RunDashboardReportComponent;
+ let fixture: ComponentFixture<RunDashboardReportComponent>;
+ let dashboardService : DashboardReportService;
+ let router: Router;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+ declarations: [ RunDashboardReportComponent ],
+ imports: [MatTableModule, RouterTestingModule, HttpClientTestingModule],
+ providers:[DashboardReportService, MockBackend, BaseRequestOptions, {
+ provide: Http,
+ useFactory: (backend: MockBackend, defaultOptions: BaseRequestOptions) => {
+ return new Http(backend, defaultOptions);
+ },
+ deps: [MockBackend, BaseRequestOptions],
+ }]
+ })
+ .compileComponents();
+ dashboardService = TestBed.get(DashboardReportService);
+ router = TestBed.get(Router);
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(RunDashboardReportComponent);
+ component = fixture.componentInstance;
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+
+ it('should test ngOnInit method', () => {
+ component.queryString = "test";
+ component.ngOnInit();
+ expect(component.initialQueryString).toEqual("test");
+ expect(component.initCounter).toEqual(component.initCounter++);
+ spyOn(component, 'initialProcesses');
+ component.initialProcesses();
+ expect(component.initialProcesses).toHaveBeenCalled();
+ });
+
+ it('should test initialProcess method', () => {
+ component.initialProcesses();
+ expect(component.dataSource.paginator).toEqual(component.paginator);
+ });
+
+ it('should test ngOnChanges methods if condition', () => {
+
+ component.hitCnt = 1;
+ component.queryString = "testing"
+ component.initialQueryString === "test";
+ component.initCounter > 0;
+ component.runButtonHitCounter === 2;
+
+ component.ngOnChanges();
+ expect(component.initialQueryString).toEqual(component.queryString);
+ expect(component.runButtonHitCounter).toEqual(component.hitCnt);
+
+ spyOn(component, 'initialProcesses');
+ spyOn(component, 'afterViewInitProcesses');
+ component.initialProcesses();
+ component.afterViewInitProcesses();
+ expect(component.initialProcesses).toHaveBeenCalled();
+ expect(component.afterViewInitProcesses).toHaveBeenCalled();
+
+ });
+
+ it('should test ngOnChanges methods else condition', () => {
+
+ component.hitCnt = 1;
+ component.queryString = "testing"
+ component.initialQueryString === "testing";
+ component.initCounter = 0;
+ component.runButtonHitCounter === 1;
+
+ component.ngOnChanges();
+ expect(component.runButtonHitCounter).toBe(component.hitCnt);
+ expect(component.initialQueryString).toBe(component.queryString);
+
+});
+
+ it('should test applyFilter method', () => {
+ component.applyFilter("testing");
+ expect(component.dataSource.filter).toEqual("testing".trim().toLowerCase());
+ });
+
+ it('should test afterViewInitProcesses method', () => {
+ component.afterViewInitProcesses();
+ expect(component.displayedColumnsArr).toEqual(new Array());
+ expect(component.displayedRowObj).toEqual(new Array());
+ expect(component.displayedColumns).toEqual(new Array());
+ expect(component.formFieldList).toEqual(new Array());
+ expect(component.showSpinner).toEqual(true);
+ expect(component.isReady).toEqual(false);
+ expect(component.NEWdisplayedColumns).toEqual(new Array());
+ });
+
+ it('should test linkToReport method', () => {
+ let reportId = "abc";
+ let queryParameters = "def";
+ component.linkToReport(reportId, queryParameters);
+ });
+
+ it('should test linkToMail method', () => {
+ let mailID = "abc";
+ component.linkToMail(mailID);
+ });
+
+}); \ 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-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
new file mode 100644
index 00000000..e37154a1
--- /dev/null
+++ 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
@@ -0,0 +1,303 @@
+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 { DashboardReportService } from './dashboard-report.service';
+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';
+
+export interface PeriodicElement {
+
+}
+
+const ELEMENT_DATA: PeriodicElement[] = [{}];
+
+@Component({
+ selector: 'app-run-dashboard-report',
+ templateUrl: './run-dashboard-report.component.html',
+ styleUrls: ['./run-dashboard-report.component.css']
+})
+
+export class RunDashboardReportComponent implements AfterViewInit {
+
+ @Input('reportId') inputReportId: string;
+ @Input('queryString') queryString: string;
+ @Input('hitCnt') hitCnt: number;
+ @Input('reportType') reportType: string;
+ @Input('parentId') parentId: 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[];
+ private chartRunUrl: string;
+ replaceDisplayValue: String;
+saveResponseObj:any;
+
+ constructor(private _dashboardReportService: DashboardReportService,
+ private _router: Router,
+ private _runService: RunService,
+ private ngModal: NgbModal,
+ private changeDetectorRefs: ChangeDetectorRef,
+ public ngbModal: NgbModal) {
+ this.initCounter = 0;
+ this.runButtonHitCounter = 0;
+ }
+
+ 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._dashboardReportService.getReportDataWithFormFields(this.queryString, this.inputReportId)
+ .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.saveResponseObj = response;
+ this.formFieldPresent = false;
+ this.responseFormFieldListLength = 0;
+ this.reportName = response['reportName'];
+ let columnCntr = 0;
+ this.displayedColumnsArr.push('RowNum,RowNum');
+ while (response['reportDataColumns'][columnCntr]) {
+ this.displayedColumnsArr.push(response['reportDataColumns'][columnCntr]['columnTitle'] + ','
+ + response['reportDataColumns'][columnCntr]['colId']);
+ columnCntr++;
+ }
+ let totalCnt = 0;
+ while (response['reportTotalDataRows'][totalCnt]) {
+ this.displayTotal.push(response['reportTotalDataRows'][totalCnt]);
+ totalCnt++;
+ }
+ 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) {
+ 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 (reportDataRows[rowColumnId]['displayValueHtml'].includes('{')) {
+ displayObj = JSON.parse(reportDataRows[rowColumnId]['displayValueHtml']);
+ }
+ displayObj['text-align'] = reportDataRows[rowColumnId]['alignment'];
+ obj['RowNum'] = (rdr_cntr + 1) + '|{"text-align":"center"}';
+ if (this.replaceDisplayValue.includes('linkToReport') || this.replaceDisplayValue.includes('linkToMail')) {
+ obj[reportDataRows[rowColumnId]['colId']] = this.replaceDisplayValue.split(',').join('|')
+ + '|' + JSON.stringify(displayObj);
+ } else {
+ obj[reportDataRows[rowColumnId]['colId']] = this.replaceDisplayValue
+ + '|' + JSON.stringify(displayObj);
+ }
+ }
+ dca_cntr++;
+ }
+ this.displayedRowObj.push(obj);
+ rdr_cntr++;
+ }
+ for (let pushCounter = 0; pushCounter < this.displayedColumnsArr.length; pushCounter++) {
+ this.displayedColumns.push(this.displayedColumnsArr[pushCounter].split(',')[1]);
+ }
+ this.showSpinner = false;
+ this.dataSource = new MatTableDataSource<PeriodicElement>(this.displayedRowObj);
+ this.dataSource.sort = this.sort;
+ this.changeDetectorRefs.detectChanges();
+ }
+
+ linkToReport(reportID: string, queryParameters: string) {
+ localStorage.setItem(this.inputReportId, JSON.stringify(this.saveResponseObj));
+ if (sessionStorage.length === 0) {
+ sessionStorage.setItem('1', this.parentId + '|' + this.queryString);
+ } else {
+ let length = sessionStorage.length;
+ length++;
+ sessionStorage.setItem(length.toString(), this.parentId + '|' + this.queryString);
+ }
+ this._router.navigate(['v2/run', reportID, queryParameters]);
+ }
+
+ 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') {
+ styles = rowData.split('|')[4];
+ } else if (rowData.split('|')[0] === 'linkToMail') {
+ styles = rowData.split('|')[3];
+ } else {
+ styles = rowData.split('|')[1];
+ }
+ if (styles !== undefined && styles.includes('{')) {
+ return JSON.parse(styles);
+ } else {
+ return {};
+ }
+ }
+
+ getDisplayTotal(keys: any) {
+ if (this.displayTotal.length > 0) {
+ return this.displayTotal[0][keys].displayValue;
+ } else {
+ return '';
+ }
+ }
+
+ 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;
+ }
+
+}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report-datasource.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report-datasource.ts
new file mode 100644
index 00000000..8c8d6222
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report-datasource.ts
@@ -0,0 +1,89 @@
+import { DataSource } from '@angular/cdk/collections';
+import { MatPaginator } from '@angular/material/paginator';
+import { MatSort } from '@angular/material/sort';
+import { map } from 'rxjs/operators';
+import { Observable, of as observableOf, merge } from 'rxjs';
+
+// TODO: Replace this with your own data model type
+export interface RunReportFinalTableItem {
+
+}
+
+// TODO: replace this with real data from your application
+
+
+/**
+ * Data source for the RunReportFinalTable view. This class should
+ * encapsulate all logic for fetching and manipulating the displayed data
+ * (including sorting, pagination, and filtering).
+ */
+export class RunReportDataSource extends DataSource<RunReportFinalTableItem> {
+ data: RunReportFinalTableItem[];
+ paginator: MatPaginator;
+ sort: MatSort;
+
+ constructor() {
+ super();
+ }
+
+ /**
+ * Connect this data source to the table. The table will only update when
+ * the returned stream emits new items.
+ * @returns A stream of the items to be rendered.
+ */
+ connect(): Observable<RunReportFinalTableItem[]> {
+ // Combine everything that affects the rendered data into one update
+ // stream for the data-table to consume.
+ const dataMutations = [
+ observableOf(this.data),
+ this.paginator.page,
+ this.sort.sortChange
+ ];
+
+ return merge(...dataMutations).pipe(map(() => {
+ return this.getPagedData(this.getSortedData([...this.data]));
+ }));
+ }
+
+ /**
+ * Called when the table is being destroyed. Use this function, to clean up
+ * any open connections or free any held resources that were set up during connect.
+ */
+ disconnect() {}
+
+ /**
+ * Paginate the data (client-side). If you're using server-side pagination,
+ * this would be replaced by requesting the appropriate data from the server.
+ */
+ private getPagedData(data: RunReportFinalTableItem[]) {
+ const startIndex = this.paginator.pageIndex * this.paginator.pageSize;
+ return data.splice(startIndex, this.paginator.pageSize);
+ }
+
+ /**
+ * Sort the data (client-side). If you're using server-side sorting,
+ * this would be replaced by requesting the appropriate data from the server.
+ */
+ private getSortedData(data: RunReportFinalTableItem[]) {
+ if (!this.sort.active || this.sort.direction === '') {
+ return data;
+ }
+
+
+ return data.sort((a, b) => {
+ const isAsc = this.sort.direction === 'asc';
+ switch (this.sort.active) {
+ // case 'name': return compare(a.name, b.name, isAsc);
+ // case 'id': return compare(+a.id, +b.id, isAsc);
+
+
+ default: return 0;
+ }
+ });
+ }
+}
+
+/** Simple sort comparator for example ID/Name columns (for client-side sorting). */
+function compare(a, b, isAsc) {
+ return (a < b ? -1 : 1) * (isAsc ? 1 : -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
new file mode 100644
index 00000000..5f0f289d
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.css
@@ -0,0 +1,1362 @@
+.approval-img{
+ height:25px;
+ width:25px
+}
+
+.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);
+ }
+}
+
+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;
+}
+
+
+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;}
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
new file mode 100644
index 00000000..6b3836e9
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.html
@@ -0,0 +1,127 @@
+<span *ngIf="showSpinner" class="ecomp-spinner"></span>
+
+<span *ngIf="showUploadSpinner" class="ecomp-spinner"></span>
+
+<div *ngIf="showDashboardReport">
+ <span *ngIf="download_in_progress" class="ecomp-small-spinner"></span>
+ Download:
+ <a *ngIf = "isDashboardExcelReadyToDownload" [routerLink]=""><img class="downloadImg" (click)="downloadReport('application/vnd.ms-excel', 'xls')"
+ placement="top" ngbTooltip="Download Dashboard Report"
+ src="assets/images/xlsx.png"></a>&nbsp;
+
+ <gridster class="gridster-color"[options]="options">
+ <gridster-item *ngFor="let item of dashboard" [item]="item">
+ <div *ngIf="item.hasContent" class="gridster-item-content">
+ <div>
+ <a (click)="takeToReport(queryString, item.hasContent.id.split('#')[1])"
+ [routerLink]="">{{item.hasContent.name}}</a>
+ <div style="height: 6px;"></div>
+ <app-run-dashboard-report [hitCnt]="hitCnt" [queryString]="queryString"
+ [reportId]="item.hasContent.id.split('#')[1]"
+ [reportType]="item.hasContent.id.split('#')[0]"
+ [parentId]="inputReportId">
+ </app-run-dashboard-report>
+ </div>
+ </div>
+ </gridster-item>
+ </gridster>
+ <div *ngIf="error == true">
+ <h1>Error Message:</h1>
+ <p>{{errorMessage}}</p>
+ <br/>
+ <h1>Stack Trace:</h1>
+ <p>{{stackTrace}}</p>
+ </div>
+</div>
+<span *ngIf="download_in_progress" class="ecomp-small-spinner"></span>
+<div *ngIf="!showDashboardReport">
+ <div *ngIf="error == false" [hidden]="isChartAvailable == false" align="center">
+ <iframe #iframe height="500" style="border: none" width="70%"></iframe>
+ </div>
+
+ <div>
+ <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 class="download-title"> Download:</span>
+ <a [routerLink]=""><img class="downloadImg" (click)="downloadSinglePage('application/vnd.ms-excel', 'xls')" placement="top" ngbTooltip="Download Current Page"
+ src="assets/images/xlsx.png"></a>&nbsp;
+ <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;
+ <a [routerLink]=""><img class="downloadImg" (click)="downloadReport('application/octet-stream', 'zip')" placement="top" ngbTooltip="Download CSV Upto 750,000"
+ src="assets/images/csv.png" ></a>&nbsp;
+ <a [routerLink]=""><img class="downloadImg" (click)="downloadReport('application/pdf', 'pdf')" placement="top" ngbTooltip="Download PDF"
+ src="assets/images/pdf.png" ></a>&nbsp;
+ <button *ngIf="showBackButton" (click)="goBack()" class="btn btn-alt btn-back" >Back</button>
+ </div>
+ <div class="pagination-div">
+ <mat-paginator (page)="pageEvent = $event; onPaginationChange($event)" [length]="totalRecords"
+ [pageSize]="pageSize" showFirstLastButtons></mat-paginator>
+ </div>
+ </div>
+ <div class="app-data-table-fixed-height" id="reportTableSize">
+ <table [dataSource]="dataSource" mat-table matSort>
+ <ng-container *ngFor="let keys of displayedColumns; let i = index">
+ <ng-container matColumnDef="{{keys}}">
+ <th *matHeaderCellDef align="center" mat-header-cell mat-sort-header>
+ {{displayedColumnsArr[i].split(",")[0]}}</th>
+ <td *matCellDef="let row" mat-cell [ngStyle]="setStyle(row[keys])">
+ <div *ngIf="row[keys].split('|')[0] == 'linkToReport'">
+ <a (click)="linkToReport(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'">
+ {{row[keys].split('|')[0]}}&nbsp;</div>
+ </td>
+ <td *matFooterCellDef align="center" mat-footer-cell>{{getDisplayTotal(keys)}}</td>
+ </ng-container>
+ </ng-container>
+
+ <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>
+<h6>Execution Time: {{timeTaken}} Seconds</h6>
+
+
+<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-report.component.spec.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.spec.ts
new file mode 100644
index 00000000..8c1d5260
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.spec.ts
@@ -0,0 +1,188 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+import { MatPaginatorModule } from '@angular/material/paginator';
+import { MatSortModule } from '@angular/material/sort';
+import { MatTableModule, MatTableDataSource } from '@angular/material/table';
+
+import { RunReportComponent, PeriodicElement } from './run-report.component';
+import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, SimpleChange, SimpleChanges } from '@angular/core';
+import { MatMenuModule } from '@angular/material';
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { RouterTestingModule } from '@angular/router/testing';
+import { RunService } from '../run.service';
+import 'rxjs/add/observable/empty';
+import 'rxjs/add/observable/of';
+import { Observable } from 'rxjs';
+import {MatDialog, MatDialogModule} from '@angular/material';
+import {HttpCacheService} from '../../../shared/services/cache.service';
+
+describe('RunReportComponent', () => {
+ let component: RunReportComponent;
+ let fixture: ComponentFixture<RunReportComponent>;
+ const displayedColumnsArr1 = [];
+ const DashboardReportObj1 = [];
+ const trigger = ["a","b"];
+ let change : SimpleChanges;
+ let runService : RunService;
+ let httpCacheService : HttpCacheService;
+ let matDialog : MatDialog;
+ let options1 = {};
+ let dashboard;
+ let dashboard2;
+ let responseformfield = 1;
+ let environment = [
+ {
+ baseUrl: 'just a link'
+ }
+ ]
+
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
+ declarations: [ RunReportComponent ],
+ imports: [
+ NoopAnimationsModule,
+ MatPaginatorModule,
+ MatSortModule,
+ MatTableModule,
+ MatMenuModule,
+ HttpClientTestingModule,
+ RouterTestingModule,
+ MatDialogModule
+ ],
+ providers: [RunService, HttpCacheService, MatDialog]
+ }).compileComponents();
+ runService = TestBed.get(RunService);
+ httpCacheService = TestBed.get(HttpCacheService);
+ matDialog = TestBed.get(MatDialog);
+ //spyOn(runService, 'getReportDataWithFormFields').and.returnValue(Observable.of(environment));
+ //spyOn(runService, 'getReportData').and.returnValue(Observable.of(environment));
+ spyOn(runService, 'downloadReportExcel').and.returnValue(Observable.of(environment));
+ }));
+
+ beforeEach(() => {
+ //dashboard = {"item":{"hasContent":{"name":"rupi","id":"check#check"}}};
+ fixture = TestBed.createComponent(RunReportComponent);
+ runService = TestBed.get(RunService);
+ httpCacheService = TestBed.get(HttpCacheService);
+ matDialog = TestBed.get(MatDialog);
+
+ component = fixture.componentInstance;
+ component.DashboardReportObj = DashboardReportObj1;
+ component.displayedColumnsArr = displayedColumnsArr1;
+ component.TriggerFFArr = trigger;
+ component.options = options1;
+ component.dashboard = dashboard;
+ component.responseFormFieldListLength = responseformfield;
+ //fixture.detectChanges();
+ });
+
+ it('should compile', () => {
+ expect(component).toBeTruthy();
+ });
+
+ it('should test the ngOnChanges second If condition', () => {
+ component.queryString = "test"
+ component.runButtonHitCnt = 1;
+ component.initialQueryString = "abc";
+ component.initCounter = 4;
+ component.hitCnt = 2;
+ component.ngOnChanges(change);
+
+ expect(component.runButtonHitCnt).toEqual(component.hitCnt);
+ expect(component.initialQueryString).toEqual("test");
+ spyOn(component, 'initialProcesses');
+ spyOn(component, 'afterViewInitialProcesses');
+ component.initialProcesses();
+ component.afterViewInitialProcesses();
+
+ expect(component.initialProcesses).toHaveBeenCalled();
+ expect(component.afterViewInitialProcesses).toHaveBeenCalled();
+});
+
+ it('should test afterViewInitialProcesses method', () => {
+ component.DashboardReportObj.length = 0;
+ component.reportMode = "Regular";
+ component.initCnt = 0;
+ component.afterViewInitialProcesses();
+
+ expect(component.showMoreVert).toEqual(false);
+ expect(component.displayedColumnsArr).toEqual(new Array());
+ expect(component.displayedRowObj).toEqual(new Array());
+ expect(component.displayedColumns).toEqual(new Array());
+ expect(component.formFieldList).toEqual(new Array());
+ expect(component.showSpinner).toEqual(true);
+ expect(component.isReady).toEqual(false);
+ expect(component.NEWdisplayedColumns).toEqual(new Array());
+ });
+
+ it('should test showError method', () => {
+
+ const spy1 = spyOn((component as any).changeDetectorRefs, 'detectChanges');
+ component.showError();
+ expect(spy1).toHaveBeenCalled();
+ expect(component.showSpinner).toEqual(false);
+ });
+
+ it('should test linkToReport', () => {
+ component.linkToReport("test", "abc");
+ })
+
+ it('should test linkToMail', () => {
+ const spy1 = spyOn((component as any).changeDetectorRefs, 'detectChanges');
+ component.linkToMail("test");
+ expect(spy1).toHaveBeenCalled();
+ })
+
+ it('should test openOptions method', () => {
+ component.openOptions();
+ expect(component.openOptionsFlag).toEqual(component.openOptionsFlag);
+ });
+
+
+ it('should test applyFilter method', () => {
+ let filterValue = "test"
+ component.applyFilter(filterValue);
+ expect(component.dataSource.filter).toEqual(filterValue.trim().toLowerCase());
+ });
+
+ it('should test the ngOnChanges first If condition', () => {
+ change = {};
+ component.reportMode !== "Regular"
+ component.initCnt = 1;
+ component.TriggerFFArr.length = 0;
+ component.ngOnChanges(change);
+ expect(component.showMoreVert).toEqual(false);
+ expect(component.initCnt).toEqual(1);
+ expect(component.showDashboardReport).toEqual(false);
+ expect(component.displayedRowObj).toEqual(new Array());
+ expect(component.displayedColumns).toEqual(new Array());
+ expect(component.formFieldList).toEqual(new Array());
+ expect(component.showSpinner).toEqual(true);
+ expect(component.NEWdisplayedColumns).toEqual(new Array());
+ expect(component.isReady).toEqual(false);
+ });
+
+ it('should test initialProcess method', () => {
+ component.DashboardReportObj.length = 1;
+ component.initialProcesses();
+ });
+
+ // it('should test postFetchingReportDataFn method', () => {
+ // let response: any;
+ // component.postFetchingReportDataFn(response);
+ // })
+
+ // it('should test ngOnChanges subscribe method', () => {
+ // spyOn(component, 'ngOnChanges').and.callThrough();
+ // component.ngOnChanges(change);
+ // expect(component.ngOnChanges).toHaveBeenCalled();
+ // })
+
+ // it('should test postFetchingReportDataFn method', () => {
+ // let obj: any;
+ // component.postFetchingReportDataFn(obj);
+ // })
+
+});
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
new file mode 100644
index 00000000..54a45226
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run-report/run-report.component.ts
@@ -0,0 +1,786 @@
+import {
+ AfterViewInit,
+ ChangeDetectionStrategy,
+ ChangeDetectorRef,
+ Component,
+ ElementRef,
+ HostListener,
+ Input,
+ OnChanges,
+ OnInit,
+ SimpleChanges,
+ ViewChild
+} from '@angular/core';
+import { MatPaginator } from '@angular/material/paginator';
+import { MatSort } from '@angular/material/sort';
+import { MatTableDataSource } from '@angular/material/table';
+import { ActivatedRoute, Router } from '@angular/router';
+import { HttpClient } from '@angular/common/http';
+import { RunService } from '../run.service';
+import { GridsterConfig, GridsterItem, GridType } from 'angular-gridster2';
+import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
+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 {InformationModalComponent } from 'src/app/modals/information-modal/information-modal.component';
+import { FormControl } from '@angular/forms';
+import { NgbModal } 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';
+
+export interface PeriodicElement {
+
+}
+
+const ELEMENT_DATA: PeriodicElement[] = [{}];
+
+@Component({
+ selector: 'app-run-report',
+ templateUrl: './run-report.component.html',
+ styleUrls: ['./run-report.component.css'],
+ changeDetection: ChangeDetectionStrategy.OnPush
+})
+export class RunReportComponent implements OnInit, AfterViewInit, OnChanges {
+ @Input('reportId') inputReportId: string;
+ @Input('reportMode') reportMode: string;
+ @Input('queryString') queryString: string;
+ @Input('isGoBack') isGoBack: string;
+ @Input('DashboardReportObj') DashboardReportObj: Array<GridsterItem>;
+ @Input('TriggerFFArr') TriggerFFArr: string[];
+ @Input('hitCnt') hitCnt: number;
+ @Input('runAgain') runAgain: string;
+ @Input('groupSelectValue') groupSelectValue: string;
+ @Input('chartType') chartType: string;
+ @ViewChild('iframe') iframe: ElementRef;
+ @ViewChild(MatPaginator, {static: false} as any) paginator: MatPaginator;
+ @ViewChild(MatSort, {static: false} as any) sort: MatSort;
+ dataSource = new MatTableDataSource<PeriodicElement>(ELEMENT_DATA);
+ displayedColumns: string[];
+ IncomingReportId: string;
+ displayedColumnsArr: string[];
+ displayedRowObj: PeriodicElement[];
+ formFieldPresent: boolean;
+ showSpinner: boolean;
+ formFieldList: {}[];
+ isReady: boolean;
+ responseFormFieldListLength: number;
+ NEWdisplayedColumns: string[];
+ initCnt: number;
+ reportName: string;
+ showDashboardReport: boolean;
+ checkCnt: number;
+ options: GridsterConfig;
+ dashboard: Array<GridsterItem> = [];
+ openOptionsFlag: boolean;
+ showMoreVert: boolean;
+ errorMessage = '';
+ stackTrace = '';
+ error = false;
+ environment: any;
+ initialQueryString: string;
+ initCounter: number;
+ runButtonHitCnt: number;
+ chartRunUrl: string;
+ url: SafeResourceUrl;
+ replaceDisplayValue: String;
+ nodeName: string;
+ uploadId: string;
+ ecgi: string;
+ lac: string;
+ cid: string;
+ displayTotal: any[];
+ totalRecords: number;
+ pageSize: number;
+ download_in_progress: boolean;
+ commentCtrl = new FormControl('');
+ isChartAvailable = false;
+ timeTaken = '...';
+ saveResponseObj: any;
+ showBackButton = false;
+
+ isDashboardExcelReadyToDownload = false;
+
+ constructor(private _http: HttpClient,
+ private _route: ActivatedRoute,
+ private _runService: RunService,
+ private _router: Router,
+ private changeDetectorRefs: ChangeDetectorRef,
+ public sanitizer: DomSanitizer,
+ public ngbModal: NgbModal,
+ private httpCacheService: HttpCacheService,
+ private dialog: MatDialog) {
+ this.displayedColumnsArr = [];
+ this.displayedRowObj = [];
+ this.displayedColumns = [];
+ this.formFieldList = [];
+ this.showSpinner = true;
+ this.isReady = false;
+ this.NEWdisplayedColumns = [];
+ this.initCnt = 0;
+ this.checkCnt = 0;
+ this.showDashboardReport = false;
+ this.openOptionsFlag = false;
+ this.showMoreVert = false;
+ this.environment = environment;
+ this.initCounter = 0;
+ this.runButtonHitCnt = 0;
+ this.displayTotal = [];
+ this.totalRecords = 0;
+ this.pageSize = 0;
+ this.download_in_progress = false;
+ this.isGoBack = '';
+ this.isDashboardExcelReadyToDownload = false;
+ }
+
+ @HostListener('click') onClick() {
+ this.changeDetectorRefs.detectChanges();
+ }
+
+ ngOnChanges(changes: SimpleChanges) {
+ if (this.reportMode !== 'Regular' && this.initCnt > 0 && changes['runAgain']) {
+ this.isGoBack = '';
+ this.showMoreVert = false;
+ if (changes['queryString']) {
+ this.queryString = changes['queryString']['currentValue'];
+ }
+ if (this.queryString !== this.initialQueryString) {
+ this.initCnt = 1;
+ this.showDashboardReport = false;
+ this.dataSource = new MatTableDataSource<PeriodicElement>(ELEMENT_DATA);
+ this.displayedColumnsArr = [];
+ this.displayedRowObj = [];
+ this.displayedColumns = [];
+ this.formFieldList = [];
+ this.showSpinner = true;
+ this.isReady = false;
+ this.NEWdisplayedColumns = [];
+ this.displayTotal = [];
+ this.isChartAvailable = false;
+ this.timeTaken = '...';
+ const startDate: Date = new Date();
+ const startTime = startDate.getTime();
+ this._runService.getReportDataWithFormFields(this.queryString, this.inputReportId, this.groupSelectValue)
+ .subscribe((response) => {
+ if (response['errormessage']) {
+ this.openErrorModel(response['errormessage']);
+ this.showError();
+ this.changeDetectorRefs.detectChanges();
+ } else {
+ this.chartRunUrl = environment.baseUrl + 'raptor.htm?action=chart.run&c_master=' +
+ this.inputReportId + this.queryString + '&refresh=Y&display_content=Y&r_page=0';
+ if (this.reportMode !== 'FormField') {
+ this.postFetchingReportDataFn(response, false, 0);
+ const endDate: Date = new Date();
+ const endTime = endDate.getTime();
+ this.showMoreVert = true;
+ this.showDashboardReport = true;
+ this.errorMessage = '';
+ this.error = false;
+ } else {
+ this.postFetchingReportDataFn(response, false, 0);
+ const endDate: Date = new Date();
+ const endTime = endDate.getTime();
+ this.showMoreVert = true;
+ this.errorMessage = '';
+ this.error = false;
+ }
+ }
+ }, error => {
+ this.openErrorModel('Error occurred while running report: ' + this.inputReportId);
+ this.showError();
+ });
+ }
+ } else {
+ }
+ if (this.initialQueryString !== this.queryString && this.initCounter > 0 && this.hitCnt !== this.runButtonHitCnt) {
+ this.runButtonHitCnt = this.hitCnt;
+ this.initialQueryString = this.queryString;
+ this.initialProcesses();
+ } else {
+ this.runButtonHitCnt = this.hitCnt;
+ }
+
+ }
+
+ ngOnInit() {
+ this.dataSource.paginator = this.paginator;
+ this.dataSource.sort = this.sort;
+ this.dataSource.data = this.displayedRowObj;
+ this.initialProcesses();
+ this.errorMessage = '';
+ this.error = false;
+ }
+
+ initialProcesses() {
+ if (this.DashboardReportObj.length > 0) {
+ this.dashboard = this.DashboardReportObj;
+ this.options = {
+ gridType: GridType.VerticalFixed,
+ margin: 10,
+ outerMargin: true,
+ outerMarginTop: 10,
+ outerMarginRight: 10,
+ outerMarginBottom: 5000,
+ outerMarginLeft: 10,
+ scrollSensitivity: 10,
+ scrollSpeed: 20,
+ fixedColWidth: 400,
+ fixedRowHeight: 600,
+ emptyCellDragMaxCols: null,
+ emptyCellDragMaxRows: null,
+ ignoreContentClass: 'gridster-item-content',
+ enableOccupiedCellDrop: true,
+ ignoreMarginInRow: false,
+ draggable: {
+ enabled: true,
+ },
+ resizable: {
+ enabled: true,
+ },
+ swap: true,
+ pushItems: true,
+ disablePushOnDrag: false,
+ disablePushOnResize: false,
+ pushDirections: {north: true, east: true, south: true, west: true},
+ pushResizeItems: true,
+ disableWindowResize: true,
+ disableWarnings: false,
+ scrollToNewItems: true,
+ enableDropToAdd: true,
+ enableEmptyCellDrop: true,
+ minCols: 2,
+ minRows: 2,
+ };
+ this._runService.getDashboardReportFormFields(this.inputReportId)
+ .subscribe((dashboardFormFields) => {
+ this.changeDetectorRefs.detectChanges();
+ this._runService.runDashboardReport(this.inputReportId, this.queryString)
+ .subscribe((runDashboardReportResp) => {
+ if (runDashboardReportResp) {
+ this.isDashboardExcelReadyToDownload = true;
+ this.changeDetectorRefs.detectChanges();
+ }
+ });
+ this.download_in_progress = false;
+
+ });
+
+ this.showDashboardReport = true;
+
+ }
+ this.hitCnt = this.runButtonHitCnt;
+ this.initialQueryString = this.queryString;
+ this.initCounter++;
+ }
+
+ ngAfterViewInit() {
+ this.afterViewInitialProcesses();
+ }
+
+ afterViewInitialProcesses() {
+ if (sessionStorage.length > 0) {
+ this.showBackButton = true;
+ } else {
+ this.showBackButton = false;
+ }
+ if (this.DashboardReportObj.length === 0) {
+ if (this.reportMode === 'Regular' && this.initCnt == 0) {
+ this.showMoreVert = false;
+ this.dataSource = new MatTableDataSource<PeriodicElement>(ELEMENT_DATA);
+ this.displayedColumnsArr = [];
+ this.displayedRowObj = [];
+ this.displayedColumns = [];
+ this.formFieldList = [];
+ this.showSpinner = true;
+ this.isReady = false;
+ this.NEWdisplayedColumns = [];
+ this.timeTaken = '...';
+ const startDate: Date = new Date();
+ const startTime = startDate.getTime();
+ this._runService.getReportData(this.inputReportId)
+ .subscribe((response) => {
+ if (response['errormessage']) {
+ this.openErrorModel(response['errormessage']);
+ this.showError();
+ this.changeDetectorRefs.detectChanges();
+ } else {
+ this.chartRunUrl = environment.baseUrl + 'raptor.htm?action=chart.run&c_master=' +
+ this.inputReportId + '&refresh=Y&display_content=Y&r_page=0';
+ this.postFetchingReportDataFn(response, false, 0);
+ const endDate: Date = new Date();
+ const endTime = endDate.getTime();
+ this.showMoreVert = true;
+ }
+ }, error => {
+ this.openErrorModel('Error occurred while running report: ' + this.inputReportId);
+ this.showError();
+ });
+ } else {
+ this.showMoreVert = false;
+ this.dataSource = new MatTableDataSource<PeriodicElement>(ELEMENT_DATA);
+ this.displayedColumnsArr = [];
+ this.displayedRowObj = [];
+ this.displayedColumns = [];
+ this.formFieldList = [];
+ this.showSpinner = true;
+ this.isReady = false;
+ this.NEWdisplayedColumns = [];
+ this.timeTaken = '...';
+ const startDate: Date = new Date();
+ const startTime = startDate.getTime();
+ if (localStorage.getItem(this.inputReportId)) {
+ this.chartRunUrl = environment.baseUrl + 'raptor.htm?action=chart.run&c_master=' +
+ this.inputReportId + this.queryString + '&refresh=Y&display_content=Y&r_page=0';
+ this.postFetchingReportDataFn(JSON.parse(localStorage.getItem(this.inputReportId)), false, 0);
+ this.saveResponseObj = JSON.parse(localStorage.getItem(this.inputReportId));
+ const endDate: Date = new Date();
+ const endTime = endDate.getTime();
+ this.showMoreVert = true;
+ localStorage.removeItem(this.inputReportId);
+ this.isGoBack = 'true';
+ } else {
+ this._runService.getReportDataWithFormFields(this.queryString, this.inputReportId, this.groupSelectValue)
+ .subscribe((response) => {
+ if (response['errormessage']) {
+ this.openErrorModel(response['errormessage']);
+ this.showError();
+ this.changeDetectorRefs.detectChanges();
+ } else {
+ this.chartRunUrl = environment.baseUrl + 'raptor.htm?action=chart.run&c_master=' +
+ this.inputReportId + this.queryString + '&refresh=Y&display_content=Y&r_page=0';
+ this.saveResponseObj = response;
+ this.postFetchingReportDataFn(response, false, 0);
+ const endDate: Date = new Date();
+ const endTime = endDate.getTime();
+ this.showMoreVert = true;
+ }
+ }, error => {
+ this.openErrorModel('Error occurred while running report: ' + this.inputReportId);
+ this.showError();
+ });
+ }
+ }
+ } else {
+ this.showMoreVert = true;
+ this.showSpinner = false;
+ }
+ this.errorMessage = '';
+ this.error = false;
+ this.initCnt = 1;
+ }
+
+ showError() {
+ this.showSpinner = false;
+ this.isChartAvailable = false;
+ this.changeDetectorRefs.detectChanges();
+ }
+
+ postFetchingReportDataFn(response: any, isPageChange: boolean, pagenum: any) {
+ this.pageSize = 0;
+ this.totalRecords = 0;
+ this.displayedColumnsArr = [];
+ this.displayedColumns = [];
+ this.formFieldPresent = false;
+ this.responseFormFieldListLength = 0;
+ this.reportName = response['reportName'];
+ let rdc_cntr = 0;
+ this.timeTaken = (response['totalRunTime'] / 1000).toString();
+ this.displayedColumnsArr.push('RowNum,RowNum');
+ while (response['reportDataColumns'][rdc_cntr]) {
+ const columnTitle = response['reportDataColumns'][rdc_cntr]['columnTitle'];
+ const columnId = response['reportDataColumns'][rdc_cntr]['colId'];
+ this.displayedColumnsArr.push(columnTitle + ',' + columnId);
+ rdc_cntr++;
+ }
+
+ if (response['chartWizardAvailable'] === true && this.chartType !== 'none') {
+ this.isChartAvailable = true;
+ this.iframe.nativeElement.setAttribute('src', this.chartRunUrl);
+ }
+
+ let totalCnt = 0;
+ while (response['reportTotalDataRows'][totalCnt]) {
+ this.displayTotal.push(response['reportTotalDataRows'][totalCnt]);
+ totalCnt++;
+ }
+
+ 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) {
+ 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 (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')) {
+ let replaceValArr = new Array();
+ 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.totalRecords = 0;
+ this.totalRecords = response['totalRows'];
+ this.showSpinner = false;
+ if (!isPageChange) {
+ this.paginator.length = this.totalRecords;
+ this.paginator.pageSize = this.pageSize;
+ this.paginator.pageIndex = 0;
+ }
+ this.dataSource.data = this.displayedRowObj;
+ this.dataSource.sort = this.sort;
+ 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);
+/* localStorage.setItem(this.inputReportId, JSON.stringify(this.saveResponseObj));
+ if (sessionStorage.length === 0) {
+ sessionStorage.setItem('1', this.inputReportId + '|' + this.queryString);
+ } else {
+ let length = sessionStorage.length;
+ length++;
+ sessionStorage.setItem(length.toString(), this.inputReportId + '|' + this.queryString);
+ }*/
+ let queryParamsArr = new Array();
+ let columnDrilldownqueryParamsArr = new Array();
+ 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) {
+ this.changeDetectorRefs.detectChanges();
+ const email = 'mailto:' + mailId;
+ window.location.href = email;
+ }
+
+ openOptions() {
+ this.changeDetectorRefs.detectChanges();
+ this.openOptionsFlag = !this.openOptionsFlag;
+ }
+
+ 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();
+ });
+ //});
+
+ });
+ }
+ }
+
+ downloadSinglePage(contentType: string, extension: string) {
+ this.changeDetectorRefs.detectChanges();
+ this.download_in_progress = true;
+ this._runService.downloadSinglePageReport(this.inputReportId, extension, this.isGoBack)
+ .subscribe((responseExcel) => {
+
+ this.downLoadFile(responseExcel, contentType, extension, '');
+ 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);
+ }
+ }
+
+ applyFilter(filterValue: string) {
+ this.changeDetectorRefs.detectChanges();
+ this.dataSource.data = this.displayedRowObj;
+ this.dataSource.sort = this.sort;
+ if (filterValue === '' || filterValue === null) {
+ } else {
+ this.dataSource.filter = filterValue.trim().toLowerCase();
+ this.changeDetectorRefs.detectChanges();
+ }
+ }
+
+ setStyle(rowData: string) {
+ let styles = '';
+ if (rowData.split('|')[0] === 'linkToReport') {
+ styles = rowData.split('|')[4];
+ } else if (rowData.split('|')[0] === 'linkToMail') {
+ styles = rowData.split('|')[3];
+ } else {
+ styles = rowData.split('|')[1];
+ }
+ if (styles.includes('{')) {
+ return JSON.parse(styles);
+ } else {
+ return {};
+ }
+ }
+
+
+
+ getDisplayTotal(keys: string) {
+ if (this.displayTotal.length > 0 && this.displayTotal[0][keys]) {
+ return this.displayTotal[0][keys].displayValue;
+ } else {
+ return '';
+ }
+ }
+
+ onPaginationChange(event: any) {
+ this.changeDetectorRefs.detectChanges();
+ if (this.DashboardReportObj.length === 0) {
+ if (this.reportMode === 'Regular' && this.initCnt === 0) {
+ this.showMoreVert = false;
+ this.displayedColumnsArr = [];
+ this.displayedRowObj = [];
+ this.displayedColumns = [];
+ this.formFieldList = [];
+ this.showSpinner = true;
+ this.isReady = false;
+ this.NEWdisplayedColumns = [];
+ this.isChartAvailable = false;
+ this.timeTaken = '...';
+ const startDate: Date = new Date();
+ const startTime = startDate.getTime();
+ this._runService.getReportDataWithPageNo(this.inputReportId, event.pageIndex)
+ .subscribe((response) => {
+ if (response['errormessage']) {
+ this.openErrorModel(response['errormessage']);
+ this.showError();
+ this.changeDetectorRefs.detectChanges();
+ } else {
+ const endDate: Date = new Date();
+ const endTime = endDate.getTime();
+ this.chartRunUrl = environment.baseUrl + 'raptor.htm?action=chart.run&c_master=' +
+ this.inputReportId + '&refresh=Y&display_content=Y&r_page=' + event.pageIndex;
+ this.postFetchingReportDataFn(response, true, event.pageIndex);
+ this.showMoreVert = true;
+ }
+ }, error => {
+ this.openErrorModel('Error occurred while running report: ' + this.inputReportId);
+ this.showError();
+ });
+ } else {
+ this.showMoreVert = false;
+ this.displayedColumnsArr = [];
+ this.displayedRowObj = [];
+ this.displayedColumns = [];
+ this.formFieldList = [];
+ this.showSpinner = true;
+ this.isReady = false;
+ this.NEWdisplayedColumns = [];
+ this.isChartAvailable = false;
+ this.timeTaken = '...';
+ const startDate: Date = new Date();
+ const startTime = startDate.getTime();
+ this._runService.getReportDataWithFormFieldsWithPageNo(this.queryString, this.inputReportId, event.pageIndex)
+ .subscribe((response) => {
+ if (response['errormessage']) {
+ this.openErrorModel(response['errormessage']);
+ this.showError();
+ this.changeDetectorRefs.detectChanges();
+ } else {
+ const endDate: Date = new Date();
+ const endTime = endDate.getTime();
+ this.chartRunUrl = environment.baseUrl + 'raptor.htm?action=chart.run&c_master=' +
+ this.inputReportId + this.queryString + '&refresh=Y&display_content=Y&r_page=' + event.pageIndex;
+ this.postFetchingReportDataFn(response, true, event.pageIndex);
+ this.showMoreVert = true;
+ }
+ }, error => {
+ this.openErrorModel('Error occurred while running report: ' + this.inputReportId);
+ this.showError();
+ });
+ }
+ } else {
+ this.showMoreVert = true;
+ this.showSpinner = false;
+ }
+ this.errorMessage = '';
+ this.error = false;
+ this.initCnt = 1;
+ }
+
+ 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('&');
+ 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;
+ }
+
+ takeToReport(queryString: string, reportID: string) {
+ this._router.navigate(['v2/run', reportID, queryString, this.groupSelectValue]);
+ }
+
+ goBack() {
+ this.changeDetectorRefs.detectChanges();
+ const length = sessionStorage.length;
+ let repId = '';
+ let queryString = '';
+ if (length > 1) {
+ let split = [];
+ split = sessionStorage.getItem((length).toString()).split('|');
+ repId = split[0];
+ queryString = split[1];
+ sessionStorage.removeItem((length).toString());
+ } else if (length === 1) {
+ let split = [];
+ split = sessionStorage.getItem('1').split('|');
+ repId = split[0];
+ queryString = split[1];
+ sessionStorage.removeItem('1');
+ }
+ localStorage.removeItem(this.inputReportId);
+ this._router.navigate(['v2/run', repId, queryString]);
+ }
+
+ openErrorModel(_message: string) {
+ this.changeDetectorRefs.detectChanges();
+ const modalInfoRef = this.ngbModal.open(ErrorModalComponent);
+ modalInfoRef.componentInstance.message = _message;
+ return modalInfoRef;
+ }
+
+}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.css b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.css
new file mode 100644
index 00000000..89e09a51
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.css
@@ -0,0 +1,497 @@
+/* .left {
+ width: auto;
+ float: left;
+ text-align: right;
+}
+.right {
+ width: auto;
+
+ float: left;
+} */
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-weight: normal;
+ text-rendering: optimizeLegibility;
+ margin: 0;
+ line-height: 1; }
+
+mat-icon{
+ color: #006496;
+ cursor: pointer;
+}
+
+/* .tab-pane{
+ padding-right: 130px;
+ padding-left: 120px;
+ color: rgba(0, 0, 0, 0.603)
+} */
+
+.boxMargin{
+
+ width: auto;
+}
+
+mat-button-toggle{
+ display: block;
+ width: 400px;
+ border-radius: 5px;
+}
+
+input {
+ width: 400px;
+ height: 20px;
+}
+
+.tab-content{
+ margin-right: 20px;
+ /* background-color: #006496; */
+ color: rgb(0, 0, 0);
+}
+
+.stdForm{
+ margin-left: 20px;
+}
+
+.field-group {
+ position: relative;
+ display: block;
+}
+
+label + .field-group, label + .input-append, label + .row, label + .row-nowrap, label + .form-row {
+ margin-top: 5px;
+}
+
+textarea {
+ display: block;
+ width: 400px;
+ max-width: 50%;
+ padding: 15px;
+}
+
+select{
+ display: block;
+ width: 400px;
+ max-width: 400px;
+ padding: 15px;
+ background-color: #cfcfcf7a
+}
+
+.webform-component-my-select select {
+ height: 200px;
+}
+
+.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;
+}
+
+
+.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; }
+
+.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;
+ /* margin-left: 250px;
+ margin-right: 250px; */
+
+}
+
+.app-data-table1 {
+ overflow: scroll;
+ width: 1780px;
+ height: 550px;
+}
+
+th{
+ /* background-color: #006496; */
+ color: rgb(0, 0, 0);
+ 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: 5px;
+
+}
+
+.card-header{
+ height: 50px;
+}
+
+.card-body{
+ height: 150px;
+}
+
+.card-footer{
+ height: 50px;
+ margin-right: 10px;
+}
+
+.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;
+} \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.html
new file mode 100644
index 00000000..bd765038
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.html
@@ -0,0 +1,12 @@
+
+<div class="stdForm">
+ <br/>
+ <div class="tab-content">
+ <h3>Step {{stepNo}} - Report Run</h3>
+ </div>
+ <br/>
+ <div *ngIf="!toggle">
+ <button class="btn btn-alt btn-small" (click)="runReport()">Run Report</button>
+ </div>
+
+</div>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.spec.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.spec.ts
new file mode 100644
index 00000000..3aa4713f
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.spec.ts
@@ -0,0 +1,39 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { RunComponent } from './run.component';
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { RouterTestingModule } from '@angular/router/testing';
+
+describe('RunComponent', () => {
+ let component: RunComponent;
+ let fixture: ComponentFixture<RunComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ RunComponent ],
+ imports: [HttpClientTestingModule, RouterTestingModule]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(RunComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+
+ it('should test ngOnInit method', () => {
+ component.reportType = "Dashboard";
+ component.ngOnInit();
+ expect(component.stepNo).toEqual("4");
+
+ component.reportType = "test";
+ component.ngOnInit();
+ expect(component.stepNo).toEqual("8");
+ });
+
+});
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.ts
new file mode 100644
index 00000000..906bc44c
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.component.ts
@@ -0,0 +1,52 @@
+import { Component, OnInit, Input } from '@angular/core';
+import { ActivatedRoute, Router } from '@angular/router';
+import { HttpClient } from '@angular/common/http';
+
+@Component({
+ selector: 'app-run',
+ templateUrl: './run.component.html',
+ styleUrls: ['./run.component.css']
+})
+export class RunComponent implements OnInit {
+
+ toggle : boolean;
+ IncomingReportId : string;
+ stepNo : string;
+
+ @Input("reportId") reportId1 : string;
+ @Input("reportType") reportType : string;
+
+
+
+ constructor(private _http : HttpClient, private _route : ActivatedRoute, private router : Router) {
+ this.toggle = false;
+ }
+
+ ngOnInit() {
+
+ if(this.reportType === "Dashboard")
+ {
+ this.stepNo= "4";
+ }
+ else
+ {
+ this.stepNo= "8";
+ }
+
+ }
+
+ runReport()
+ {
+ this.toggle = true;
+
+ this._route.params.subscribe(params => {
+
+ this.IncomingReportId = params["reportId"];
+ this.reportId1 = params["reportId"];
+ });
+
+ this.router.navigate(['v2/run', this.reportId1]);
+
+ }
+
+}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.service.spec.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.service.spec.ts
new file mode 100644
index 00000000..a5c7fe4b
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.service.spec.ts
@@ -0,0 +1,61 @@
+import { TestBed } from '@angular/core/testing';
+
+import { RunService } from './run.service';
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { HttpClient } from '@angular/common/http';
+import { environment } from 'src/environments/environment';
+
+describe('RunService', () => {
+ let service: RunService;
+
+ beforeEach(() =>
+ {
+ TestBed.configureTestingModule({
+ imports: [HttpClientTestingModule],
+ providers: [HttpClient, HttpClientTestingModule, RunService]
+ });
+
+ service = TestBed.get(RunService);
+});
+
+ it('should be created', () => {
+ const service: RunService = TestBed.get(RunService);
+ expect(service).toBeTruthy();
+ });
+
+ it('should getReportData', () => {
+ service.getReportData("test").subscribe((res) => {
+ expect(res).toBe(environment);
+ });
+ });
+
+ it('should getReportDataWithFormFields', () => {
+ service.getReportDataWithFormFields("just", "testing", "").subscribe((res) => {
+ expect(res).toBe(environment);
+ });
+ });
+
+ it('should getDefinitionPageDetails', () => {
+ service.getDefinitionPageDetails(1).subscribe((res) => {
+ expect(res).toBe(environment);
+ });
+ });
+
+ it('should refreshFormFields', () => {
+ service.refreshFormFields("just", "testing").subscribe((res) => {
+ expect(res).toBe(environment);
+ });
+ });
+
+ it('should getFormFieldGroupsData', () => {
+ service.getFormFieldGroupsData("test").subscribe((res) => {
+ expect(res).toBe(environment);
+ });
+ });
+
+ it('should downloadReportExcel', () => {
+ service.downloadReportExcel("test").subscribe((res) => {
+ expect(res).toBe(new Blob);
+ });
+ });
+});
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.service.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.service.ts
new file mode 100644
index 00000000..21f94831
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/report-run/run/run.service.ts
@@ -0,0 +1,101 @@
+import {Injectable} from '@angular/core';
+import {HttpClient, HttpHeaders} from '@angular/common/http';
+import {Observable, throwError} from 'rxjs';
+import {retry, catchError} from 'rxjs/operators';
+
+import {HtmlParser} from '@angular/compiler';
+import {environment} from '../../../environments/environment';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class RunService {
+ finalArr: any;
+ finalResponseArr: any;
+
+ constructor(private _http: HttpClient) {
+ }
+
+ getReportData(reportId: string): Observable<any> {
+ return this._http.get(environment.baseUrl + 'raptor.htm?action=report.run.container&c_master=' + reportId + '&refresh=Y');
+ }
+
+ getReportDataWithFormFields(queryString: string, reportId: string, groupSelectValue: string): Observable<any> {
+ return this._http.get(environment.baseUrl + 'raptor.htm?action=report.run.container&c_master=' + reportId + queryString +
+ '&refresh=Y&display_content=Y&r_page=0&groupSelectValue='+groupSelectValue);
+ }
+
+ getReportDataWithPageNo(reportId: string, pageNo: string): Observable<any> {
+ if (!pageNo || pageNo === null) {
+ pageNo = '0';
+ }
+ return this._http.get(environment.baseUrl + 'raptor.htm?action=report.run.container&c_master='
+ + reportId + '&refresh=Ydisplay_content=Y&r_page=' + pageNo);
+ }
+
+ getReportDataWithFormFieldsWithPageNo(queryString: string, reportId: string, pageNo: string): Observable<any> {
+ if (!pageNo || pageNo === null) {
+ pageNo = '0';
+ }
+ return this._http.get(environment.baseUrl + 'raptor.htm?action=report.run.container&c_master='
+ + reportId + queryString + '&refresh=Y&display_content=Y&r_page=' + pageNo);
+ }
+
+ getDefinitionPageDetails(IncomingReportId: number): Observable<any> {
+ return this._http.get(environment.baseUrl + 'report/wizard/retrieve_def_tab_wise_data/' + IncomingReportId, {headers: new HttpHeaders({'Content-Type': 'application/json'})});
+ }
+
+ refreshFormFields(reportId: string, queryString: string): Observable<any> {
+ return this._http.get(environment.baseUrl + 'raptor.htm?action=report.formfields.run.container&c_master=' + reportId + queryString);
+ }
+
+ getFormFieldGroupsData(reportId: string): Observable<any> {
+ return this._http.get(environment.baseUrl + 'report/wizard/get_formfield_groups_data/' + reportId);
+ }
+
+ downloadReportExcel(reportId: string): Observable<Blob> {
+ return this._http.get(environment.baseUrl + 'raptor.htm?c_master=' + reportId + '&r_action=report.download.excel.session&page_dowload=true', {responseType: 'blob'});
+ }
+
+ downloadReport(reportId: string, type: string, isGoBack: string): Observable<Blob> {
+ if (type === 'xlsx') {
+ return this._http.get(environment.baseUrl + 'raptor.htm?c_master=' + reportId + '&r_action=report.download.excel.session&page_download=false&go_back=' + isGoBack, {responseType: 'blob'});
+ } else if (type === 'pdf') {
+ return this._http.get(environment.baseUrl + 'raptor.htm?c_master=' + reportId + '&r_action=report.download.pdf.session&page_download=false&go_back=' + isGoBack, {responseType: 'blob'});
+ } else if (type === 'zip') {
+ return this._http.get(environment.baseUrl + 'raptor.htm?c_master=' + reportId + '&r_action=report.download.csv.session&page_download=false&go_back=' + isGoBack, {responseType: 'blob'});
+ } else {
+ return this._http.get(environment.baseUrl + 'raptor.htm?c_master=' + reportId + '&r_action=report.download.excel.session&page_download=false&go_back=' + isGoBack, {responseType: 'blob'});
+ }
+ }
+
+ downloadSinglePageReport(reportId: string, type: string, isGoBack: string): Observable<Blob> {
+ return this._http.get(environment.baseUrl + 'raptor.htm?c_master=' + reportId + '&r_action=report.download.excel.session&page_download=true&go_back=' + isGoBack, {responseType: 'blob'});
+
+ }
+
+ getDashboardReportFormFields(reportId: string): Observable<any> {
+ return this._http.get(environment.baseUrl + 'raptor/dashboard/run/' + reportId);
+ }
+
+ runDashboardReport(reportId: string, queryString: string) {
+ return this._http.get(environment.baseUrl + 'raptor.htm?action=report.run.container&c_master=' + reportId + queryString + '&refresh=Y&display_content=Y&r_page=0', {responseType: 'text'});
+ }
+
+ downloadDashboardReportExcel(reportId: string): Observable<Blob> {
+ return this._http.get(environment.baseUrl + 'raptor.htm?c_master=' + reportId + '&r_action=report.download.excel.session', {responseType: 'blob'});
+ }
+
+ handleError(error) {
+ let errorMessage = '';
+ if (error.error instanceof ErrorEvent) {
+ // client-side error
+ errorMessage = `Error: ${error.error.message}`;
+ } else {
+ // server-side error
+ errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
+ }
+ window.alert(errorMessage);
+ return throwError(errorMessage);
+ }
+}