From 00ed475d06265520625195ee47fbf36a50dc4822 Mon Sep 17 00:00:00 2001 From: Sri Balaji Marripud Date: Mon, 31 Aug 2020 09:06:36 -0400 Subject: [PATCH] sdk footer changes Issue-ID: PORTAL-992 Change-Id: I7909a3054238880fdb0bb335f5dda658e959105d Signed-off-by: Sri Balaji Marripud --- .../ngappsrc/src/assets/images/global.logo | Bin 0 -> 2992 bytes .../ngappsrc/src/assets/images/pdf.png | Bin 0 -> 2332 bytes .../ngappsrc/src/assets/images/spinner.gif | Bin 0 -> 4178 bytes .../ngappsrc/src/assets/images/xlsx.png | Bin 0 -> 2649 bytes .../ngappsrc/src/environments/environment.prod.ts | 9 +- .../ngappsrc/src/environments/environment.ts | 9 +- .../layout/components/footer/footer.component.html | 11 + .../layout/components/footer/footer.component.scss | 38 ++ .../components/footer/footer.component.spec.ts | 56 +++ .../layout/components/footer/footer.component.ts | 71 ++++ .../components/sidebar/sidebar.component.html | 105 +++--- .../components/sidebar/sidebar.component.scss | 409 +++++++++++---------- .../ngapp/src/app/layout/layout.component.html | 7 +- .../webapp/ngapp/src/app/layout/layout.module.ts | 3 +- .../webapp/ngapp/src/app/shared/services/index.ts | 3 +- .../services/manifest/manifest.service.spec.ts | 13 + .../shared/services/manifest/manifest.service.ts | 53 +++ 17 files changed, 532 insertions(+), 255 deletions(-) create mode 100644 ecomp-sdk/epsdk-app-os/ngappsrc/src/assets/images/global.logo create mode 100644 ecomp-sdk/epsdk-app-os/ngappsrc/src/assets/images/pdf.png create mode 100644 ecomp-sdk/epsdk-app-os/ngappsrc/src/assets/images/spinner.gif create mode 100644 ecomp-sdk/epsdk-app-os/ngappsrc/src/assets/images/xlsx.png create mode 100644 ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.html create mode 100644 ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.scss create mode 100644 ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.spec.ts create mode 100644 ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.ts create mode 100644 ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/manifest/manifest.service.spec.ts create mode 100644 ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/manifest/manifest.service.ts diff --git a/ecomp-sdk/epsdk-app-os/ngappsrc/src/assets/images/global.logo b/ecomp-sdk/epsdk-app-os/ngappsrc/src/assets/images/global.logo new file mode 100644 index 0000000000000000000000000000000000000000..bf85815aadfaa6175e6df4696930814c38b1c112 GIT binary patch literal 2992 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 literal 0 HcmV?d00001 diff --git a/ecomp-sdk/epsdk-app-os/ngappsrc/src/assets/images/pdf.png b/ecomp-sdk/epsdk-app-os/ngappsrc/src/assets/images/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..ed96c5c1b61d78500b4fbd5a6d822bed89a7aa5b GIT binary patch literal 2332 zcmV+%3FG#OP)JIK~#90?VNj1RM#DVzq`xw*o8${UMdm<1r#y9YQ#rk8Xu@ls%=uo z+L=zLotS3QXlF9fOxtPFcE)O>(=-#CbUIBtO{UJ+)Xu~rN^7G@M9@?MDhlihq6oV@ zciDw~-u|&b5CwLZ%UyQE_t);;-E)8Un{&?Z+;h%dm|}`4rugzAjC5e*uggR^1Mw9> z;6lmX!opz3F@Pf20r-n3vZClfSy`~-7+}mASh9D8e9??T(SZv9C=>!7kBA`hX~`>v ztAiX?=+(d`OuWRf7YGw8 zF+!?>e4(<@%$uhTn9L3`bTK@&G>r`f$$pjb+}q{jjzbiYY?4#98t4&44t!Y0osK>n zE)VssRt^{I`Qt~o-UqroB9Rda9-p7Y*O#UOaJtGQcNmf(o4{!r7222xx@}HOW(NR;a}xo$ zakodVFeFDdfdY^>BNl+mjoknwYa;>Zv^wPqLvmzo!mDz;HSTOp8vxoE6#(YmDS#{TePF5OeYVQSLnp!1y7?L5oz?|u^EX>ei>2vY+e;NVEOjgSshGYcgUikZKGZ29G z9`A4_D`iTcU*t}YWp$oz@O}0ecOjFRpv}f?>+cHzA`~O;ahmi5O<;q`Hu(D8vrWMY zW84Hy;6+2%;OlaICm-MF2v#WLA}9iT9d16m*^MB;&Q<9E94WntrOy?NaK=SY1fH+! z#NqN#FiXpKR;N=iOG~HK$?r=WCj8v_>2WMbkCUvtpa>ke7k(^HhXCx^ltr{k!I^7q zoVnIEq31rdGoROY=1W$d>;l^?4lWtGQ7ILy&h<_%%uI;phwCx{cC>WVv)HlP-B|5zL{UT`2xy{|q$kFZJ0q41U5rduaxbz8yrl2KV6>r&i{y#?d)I

L6{t5_Iakxc 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 Hu0mjfM6e7b literal 0 HcmV?d00001 diff --git a/ecomp-sdk/epsdk-app-os/ngappsrc/src/environments/environment.prod.ts b/ecomp-sdk/epsdk-app-os/ngappsrc/src/environments/environment.prod.ts index 125d0548..d4692c04 100644 --- a/ecomp-sdk/epsdk-app-os/ngappsrc/src/environments/environment.prod.ts +++ b/ecomp-sdk/epsdk-app-os/ngappsrc/src/environments/environment.prod.ts @@ -31,5 +31,12 @@ export const environment = { saveRole:'role/saveRole.htm?role_id=', toggleProfileActive: 'profile/toggleProfileActive?profile_id=', isLogDisabled:'true', - brandName: "Portal SDK" + brandName: "Portal SDK", + getManifest: 'manifest', + brandLogoImagePath: '', + footerLink: '', + footerLinkText: '', + footerMessage: '', + footerLogoImagePath: '', + footerLogoText: '' }; diff --git a/ecomp-sdk/epsdk-app-os/ngappsrc/src/environments/environment.ts b/ecomp-sdk/epsdk-app-os/ngappsrc/src/environments/environment.ts index 7d8f161c..003c89c8 100644 --- a/ecomp-sdk/epsdk-app-os/ngappsrc/src/environments/environment.ts +++ b/ecomp-sdk/epsdk-app-os/ngappsrc/src/environments/environment.ts @@ -35,7 +35,14 @@ export const environment = { saveRole:'http://www.sdk.onap.org:8080/epsdk-app-os/role/saveRole.htm?role_id=', toggleProfileActive: 'http://www.sdk.onap.org:8080/epsdk-app-os/profile/toggleProfileActive?profile_id=', isLogDisabled:'false', - brandName: "Portal SDK" + brandName: "Portal SDK", + getManifest: 'http://www.sdk.onap.org:8080/epsdk-app-os/manifest', + brandLogoImagePath: '', + footerLink: '', + footerLinkText: '', + footerMessage: '', + footerLogoImagePath: '', + footerLogoText: '' }; /* diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.html new file mode 100644 index 00000000..f7663462 --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.html @@ -0,0 +1,11 @@ +

+ +
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.scss b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.scss new file mode 100644 index 00000000..dbb5a100 --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.scss @@ -0,0 +1,38 @@ +$topnav-background-color: #222; + +.footerText { + background-color: $topnav-background-color; +} + +.copyright-text { + background-color: $topnav-background-color; + color: #fff; + font-size: 11px; + margin-bottom: 0; + line-height: 3rem; + margin-top: 20px; + text-align: center; +} + +.footer { + position: fixed; + bottom: 0; + // background-color: $topnav-background-color; + width: 100%; + // height: 7.5em; + z-index: 1002; + // bottom: 0px; + // right: 0px; + // width: 84%; + margin-bottom: -.5rem; +} + +.footer-logo { + width: 1.5rem; + margin-top: -10px; +} + +.footerText h2 { + font-size: 1.5rem; + margin-top: -10px; +} \ No newline at end of file diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.spec.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.spec.ts new file mode 100644 index 00000000..8eda932f --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.spec.ts @@ -0,0 +1,56 @@ +// import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +// import { FooterComponent } from './footer.component'; + +// describe('FooterComponent', () => { +// let component: FooterComponent; +// let fixture: ComponentFixture; + +// beforeEach(async(() => { +// TestBed.configureTestingModule({ +// declarations: [ FooterComponent ] +// }) +// .compileComponents(); +// })); + +// beforeEach(() => { +// fixture = TestBed.createComponent(FooterComponent); +// component = fixture.componentInstance; +// fixture.detectChanges(); +// }); + +// it('should create', () => { +// expect(component).toBeTruthy(); +// }); +// }); + +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { HttpClientModule } from '@angular/common/http'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { FooterComponent } from './footer.component'; + +describe('FooterComponent', () => { + let component: FooterComponent; + let fixture: ComponentFixture; + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + HttpClientModule, + HttpClientTestingModule + ], + declarations: [ FooterComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FooterComponent); + 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/layout/components/footer/footer.component.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.ts new file mode 100644 index 00000000..7aae6d0b --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/footer/footer.component.ts @@ -0,0 +1,71 @@ +import { Component, OnInit } from '@angular/core'; +import { ManifestService } from 'src/app/shared/services'; +import { environment } from 'src/environments/environment'; + + +declare var runAnalytics: any +@Component({ + selector: 'app-footer', + templateUrl: './footer.component.html', + styleUrls: ['./footer.component.scss'] +}) +export class FooterComponent implements OnInit { + +buildVersion: string; + api = environment; + brandName: string; + footerLink: string; + footerLinkText: string; + footerMessage: string; + footerLogoImagePath: string; + footerLogoText: string; + + constructor(private manifest: ManifestService) { } + + ngOnInit() { + this.buildVersion = ''; + this.manifestDetails(); + + this.brandName = "ONAP Portal SDK"; + if(this.api.brandName != ''){ + this.brandName = this.api.brandName; + } + this.footerLink = this.api.footerLink; + this.footerLinkText = this.api.footerLinkText; + this.footerMessage= this.api.footerMessage; + if(this.api.footerLogoImagePath !=''){ + this.footerLogoImagePath= this.api.footerLogoImagePath; + } + this.footerLogoText= this.api.footerLogoText; + this.portalHook(); + + } + + manifestDetails() { + this.manifest.getManifest().subscribe((_res: any) => { + this.buildVersion = _res['Build-Number']; + }, (_err) => { + + }); + } + + portalHook() { + + let done = false; + let script = document.createElement('script'); + script.src = "api/v3/analytics" + script.async = true; + script.onload = ()=> { + runAnalytics(); + } + + document.head.appendChild(script); + + } + } + + + + + + \ No newline at end of file diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/sidebar/sidebar.component.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/sidebar/sidebar.component.html index 5f8a2ec5..c86a0693 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/sidebar/sidebar.component.html +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/sidebar/sidebar.component.html @@ -1,52 +1,55 @@ - \ No newline at end of file + + + +
+ + +   +
+ \ No newline at end of file diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/sidebar/sidebar.component.scss b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/sidebar/sidebar.component.scss index 3917b896..02c969cc 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/sidebar/sidebar.component.scss +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/components/sidebar/sidebar.component.scss @@ -35,203 +35,214 @@ * * */ -$topnav-background-color: #f2f2f2; + $topnav-background-color: #f2f2f2; -.siderbar-height-noHeader{ - top: 0px; -} - -.siderbar-height{ - top: 56px; -} - -.sidebar { - border-radius: 0; - position: fixed; - z-index: 1000; - left: 235px; - width: 235px; - margin-left: -235px; - margin-bottom: 48px; - border: none; - border-radius: 0; - overflow-y: auto; - background-color: $topnav-background-color; - bottom: 0; - overflow-x: hidden; - padding-bottom: 40px; - white-space: nowrap; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -ms-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - .list-group { - a.list-group-item { - background: $topnav-background-color; - border: 0; - border-top: 1px solid #999; - border-radius: 0; - color: #0568ae; - text-decoration: none; - .fa { - margin-right: 10px; - color: #000; - } - } - a:hover { - background: darken($topnav-background-color, 5%); - color: #fff; - } - a.router-link-active { - background: darken($topnav-background-color, 5%); - color: #fff; - } - .header-fields { - padding-top: 10px; - - > .list-group-item:first-child { - border-top: 1px solid rgba(255, 255, 255, 0.2); - } - } - } - .sidebar-dropdown { - *:focus { - border-radius: none; - border: none; - } - .panel-title { - font-size: 1rem; - height: 50px; - margin-bottom: 0; - a { - color: #999; - text-decoration: none; - font-weight: 400; - background: $topnav-background-color; - span { - position: relative; - display: block; - padding: 0.75rem 1.5rem; - padding-top: 1rem; - } - } - a:hover, - a:focus { - color: #fff; - outline: none; - outline-offset: -2px; - } - } - .panel-title:hover { - background: darken($topnav-background-color, 5%); - } - .panel-collapse { - border-radious: 0; - border: none; - .panel-body { - .list-group-item { - border-radius: 0; - background-color: $topnav-background-color; - border: 0 solid transparent; - a { - color: #999; - } - a:hover { - color: #fff; - } - } - .list-group-item:hover { - background: darken($topnav-background-color, 5%); - } - } - } - } -} - -.nested-menu { - .list-group-item { - cursor: pointer; - } - .nested { - list-style-type: none; - } - ul.submenu { - display: none; - height: 0; - } - & .expand { - ul.submenu { - display: block; - list-style-type: none; - height: auto; - li { - a { - color: #0568ae; - padding: 10px; - display: block; - } - } - } - } -} -@media screen and (max-width: 992px) { - .sidebar { - top: 54px; - left: 0px; - } -} -@media print { - .sidebar { - display: none !important; - } -} -@media (min-width: 992px) { - .header-fields { - display: none; - } -} - -::-webkit-scrollbar { - width: 8px; -} - -::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 0px rgba(255, 255, 255, 1); - border-radius: 3px; -} - -::-webkit-scrollbar-thumb { - border-radius: 3px; - -webkit-box-shadow: inset 0 0 3px rgba(255, 255, 255, 1); -} - -.toggle-button { - position: fixed; - width: 236px; - cursor: pointer; - padding: 12px; - bottom: 0; - color: #000;; - background: #f2f2f2; - i { - font-size: 23px; - } - &:hover { - background: darken($topnav-background-color, 5%); - color: #fff; - } - border-top: 1px solid #999; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -ms-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} - -.collapsed { - width: 60px; - span { - display: none; - } -} + .siderbar-height-noHeader{ + top: 0px; + } + + .siderbar-height{ + top: 56px; + } + + .sidebar-list { + border-radius: 0; + position: fixed; + z-index: 1000; + left: 235px; + width: 235px; + //height: 100%; + height: 76%; + margin-left: -235px; + //margin-bottom: 48px; + margin-bottom: 0px; + border: none; + border-radius: 0; + overflow-y: auto; + background-color: $topnav-background-color; + top: 7.2em; + //top: 0em; + overflow-x: hidden; + //padding-bottom: 40px; + padding-bottom: 5em; + white-space: nowrap; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + .list-group { + a.list-group-item { + background: $topnav-background-color; + border: 0; + border-top: 1px solid #999; + border-radius: 0; + color: #0568ae; + text-decoration: none; + .fa { + margin-right: 10px; + color: #000; + } + } + a:hover { + background: darken($topnav-background-color, 5%); + color: #fff; + } + a.router-link-active { + background: darken($topnav-background-color, 5%); + color: #fff; + } + .header-fields { + padding-top: 10px; + + > .list-group-item:first-child { + border-top: 1px solid rgba(255, 255, 255, 0.2); + } + } + } + .sidebar-dropdown { + *:focus { + border-radius: none; + border: none; + } + .panel-title { + font-size: 1rem; + height: 50px; + margin-bottom: 0; + a { + color: #999; + text-decoration: none; + font-weight: 400; + background: $topnav-background-color; + span { + position: relative; + display: block; + padding: 0.75rem 1.5rem; + padding-top: 1rem; + } + } + a:hover, + a:focus { + color: #fff; + outline: none; + outline-offset: -2px; + } + } + .panel-title:hover { + background: darken($topnav-background-color, 5%); + } + .panel-collapse { + border-radious: 0; + border: none; + .panel-body { + .list-group-item { + border-radius: 0; + background-color: $topnav-background-color; + border: 0 solid transparent; + a { + color: #999; + } + a:hover { + color: #fff; + } + } + .list-group-item:hover { + background: darken($topnav-background-color, 5%); + } + } + } + } + } + + .nested-menu { + .list-group-item { + cursor: pointer; + } + .nested { + list-style-type: none; + } + ul.submenu { + display: none; + height: 0; + } + & .expand { + ul.submenu { + display: block; + list-style-type: none; + height: auto; + li { + a { + color: #0568ae; + padding: 10px; + display: block; + } + } + } + } + } + @media screen and (max-width: 992px) { + .sidebar { + top: 54px; + left: 0px; + } + } + @media print { + .sidebar { + display: none !important; + } + } + @media (min-width: 992px) { + .header-fields { + display: none; + } + } + + ::-webkit-scrollbar { + width: 8px; + } + + ::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 0px rgba(255, 255, 255, 1); + border-radius: 3px; + } + + ::-webkit-scrollbar-thumb { + border-radius: 3px; + -webkit-box-shadow: inset 0 0 3px rgba(255, 255, 255, 1); + } + .sidebar{ + position: relative; + } + .toggle-button { + position: fixed; + width: 236px; + cursor: pointer; + padding: 12px; + // bottom: 5.5em; + top: 3.5em; + left: 0; + z-index: 1001; + color: #000;; + background: #f2f2f2; + i { + font-size: 23px; + } + &:hover { + background: darken($topnav-background-color, 5%); + color: #fff; + } + border-bottom: 1px solid #999; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + } + + .collapsed { + width: 60px; + span { + display: none; + } + } + \ No newline at end of file diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/layout.component.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/layout.component.html index 446e8fc7..bf4507f6 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/layout.component.html +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/layout.component.html @@ -4,7 +4,12 @@ -
+ +
+ +
+ +
\ No newline at end of file diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/layout.module.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/layout.module.ts index 51af0be1..07b8459c 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/layout.module.ts +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/layout/layout.module.ts @@ -44,6 +44,7 @@ import { LayoutRoutingModule } from './layout-routing.module'; import { LayoutComponent } from './layout.component'; import { SidebarComponent } from './components/sidebar/sidebar.component'; import { HeaderComponent } from './components/header/header.component'; +import { FooterComponent } from './components/footer/footer.component' import {A11yModule} from '@angular/cdk/a11y'; import {BidiModule} from '@angular/cdk/bidi'; import {ObserversModule} from '@angular/cdk/observers'; @@ -74,6 +75,6 @@ import {AdminModule} from '../admin/admin.module'; CdkStepperModule, CdkTableModule ], - declarations: [LayoutComponent, SidebarComponent, HeaderComponent] + declarations: [LayoutComponent, SidebarComponent, HeaderComponent, FooterComponent] }) export class LayoutModule {} diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/index.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/index.ts index c161be12..167a54b4 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/index.ts +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/index.ts @@ -35,4 +35,5 @@ * * */ -export * from './sidebar/sidebar.service'; \ No newline at end of file +export * from './sidebar/sidebar.service'; +export * from './manifest/manifest.service'; \ No newline at end of file diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/manifest/manifest.service.spec.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/manifest/manifest.service.spec.ts new file mode 100644 index 00000000..85e6e294 --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/manifest/manifest.service.spec.ts @@ -0,0 +1,13 @@ +import { TestBed } from '@angular/core/testing'; + +import { ManifestService } from './manifest.service'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; + +describe('ManifestService', () => { + beforeEach(() => TestBed.configureTestingModule({imports:[HttpClientTestingModule]})); + + it('should be created', () => { + const service: ManifestService = TestBed.get(ManifestService); + expect(service).toBeTruthy(); + }); +}); diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/manifest/manifest.service.ts b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/manifest/manifest.service.ts new file mode 100644 index 00000000..7553e38c --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/shared/services/manifest/manifest.service.ts @@ -0,0 +1,53 @@ +/*- + * ============LICENSE_START========================================== + * ONAP Portal + * =================================================================== + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); + * you may not use this software except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ============LICENSE_END============================================ + * + * + */ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { environment } from 'src/environments/environment'; + +@Injectable({ + providedIn: 'root' +}) +export class ManifestService { + + api = environment; + constructor(public httpClient: HttpClient) { } + + getManifest() { + return this.httpClient.get(this.api.getManifest); + } +} -- 2.16.6