diff --git a/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration-routing.module.ts b/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration-routing.module.ts new file mode 100644 index 00000000000..6d499a0c7bc --- /dev/null +++ b/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration-routing.module.ts @@ -0,0 +1,27 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file 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. + */ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { ConfigurationComponent } from './configuration.component'; + +const routes: Routes = [ + { + path: '', + component: ConfigurationComponent + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class ConfigurationRoutingModule {} diff --git a/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.component.html b/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.component.html new file mode 100644 index 00000000000..6708f345203 --- /dev/null +++ b/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.component.html @@ -0,0 +1,37 @@ + + + + + Shows current configurations for Zeppelin Server. +
+ Note: For security reasons, some key/value pairs including passwords would not be shown. +
+
+ + + + Name + Value + + + + + {{data[0]}} + {{data[1]}} + + + +
diff --git a/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.component.less b/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.component.less new file mode 100644 index 00000000000..b3c4ee24e55 --- /dev/null +++ b/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.component.less @@ -0,0 +1,22 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file 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. + */ + +@import 'theme-mixin'; + +.themeMixin({ + .content { + padding: @card-padding-base / 2; + nz-table { + background: @card-background; + } + } +}); diff --git a/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.component.ts b/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.component.ts new file mode 100644 index 00000000000..fb3b1205743 --- /dev/null +++ b/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.component.ts @@ -0,0 +1,36 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file 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. + */ +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core'; +import { ConfigurationService } from '@zeppelin/services'; + +@Component({ + selector: 'zeppelin-configuration', + templateUrl: './configuration.component.html', + styleUrls: ['./configuration.component.less'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ConfigurationComponent implements OnInit { + configEntries: Array<[string, string]> = []; + + constructor(private configurationService: ConfigurationService, private cdr: ChangeDetectorRef) {} + + ngOnInit() { + this.getAllConfig(); + } + + getAllConfig(): void { + this.configurationService.getAll().subscribe(data => { + this.configEntries = [...Object.entries(data)]; + this.cdr.markForCheck(); + }); + } +} diff --git a/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.module.ts b/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.module.ts new file mode 100644 index 00000000000..ff64f8932c4 --- /dev/null +++ b/zeppelin-web-angular/src/app/pages/workspace/configuration/configuration.module.ts @@ -0,0 +1,24 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file 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. + */ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; + +import { ShareModule } from '@zeppelin/share'; +import { NzTableModule } from 'ng-zorro-antd'; +import { ConfigurationRoutingModule } from './configuration-routing.module'; +import { ConfigurationComponent } from './configuration.component'; + +@NgModule({ + declarations: [ConfigurationComponent], + imports: [CommonModule, ShareModule, NzTableModule, ConfigurationRoutingModule] +}) +export class ConfigurationModule {} diff --git a/zeppelin-web-angular/src/app/pages/workspace/workspace-routing.module.ts b/zeppelin-web-angular/src/app/pages/workspace/workspace-routing.module.ts index 0340a8d1499..1155f67fe32 100644 --- a/zeppelin-web-angular/src/app/pages/workspace/workspace-routing.module.ts +++ b/zeppelin-web-angular/src/app/pages/workspace/workspace-routing.module.ts @@ -39,6 +39,11 @@ const routes: Routes = [ path: 'interpreter', loadChildren: () => import('@zeppelin/pages/workspace/interpreter/interpreter.module').then(m => m.InterpreterModule) + }, + { + path: 'configuration', + loadChildren: () => + import('@zeppelin/pages/workspace/configuration/configuration.module').then(m => m.ConfigurationModule) } ] } diff --git a/zeppelin-web-angular/src/app/services/configuration.service.ts b/zeppelin-web-angular/src/app/services/configuration.service.ts new file mode 100644 index 00000000000..b8c392f0ff4 --- /dev/null +++ b/zeppelin-web-angular/src/app/services/configuration.service.ts @@ -0,0 +1,30 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file 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. + */ + +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; + +import { BaseRest } from './base-rest'; +import { BaseUrlService } from './base-url.service'; + +@Injectable({ + providedIn: 'root' +}) +export class ConfigurationService extends BaseRest { + constructor(baseUrlService: BaseUrlService, private http: HttpClient) { + super(baseUrlService); + } + + getAll() { + return this.http.get<{ [key: string]: string }>(this.restUrl`/configurations/all`); + } +} diff --git a/zeppelin-web-angular/src/app/services/public-api.ts b/zeppelin-web-angular/src/app/services/public-api.ts index d6709ac83e8..155a3b2e80f 100644 --- a/zeppelin-web-angular/src/app/services/public-api.ts +++ b/zeppelin-web-angular/src/app/services/public-api.ts @@ -27,3 +27,4 @@ export * from './array-ordering.service'; export * from './note-list.service'; export * from './runtime-compiler.service'; export * from './shortcut.service'; +export * from './configuration.service'; diff --git a/zeppelin-web-angular/src/app/share/page-header/page-header.component.html b/zeppelin-web-angular/src/app/share/page-header/page-header.component.html index 430f7e2880b..c214ab41ff4 100644 --- a/zeppelin-web-angular/src/app/share/page-header/page-header.component.html +++ b/zeppelin-web-angular/src/app/share/page-header/page-header.component.html @@ -12,7 +12,7 @@

{{title}}

-

{{description}}

+

{{description}}

diff --git a/zeppelin-web-angular/src/app/share/page-header/page-header.component.ts b/zeppelin-web-angular/src/app/share/page-header/page-header.component.ts index 1c03ee6298c..601726eed30 100644 --- a/zeppelin-web-angular/src/app/share/page-header/page-header.component.ts +++ b/zeppelin-web-angular/src/app/share/page-header/page-header.component.ts @@ -21,7 +21,7 @@ import { InputBoolean } from 'ng-zorro-antd'; }) export class PageHeaderComponent implements OnInit { @Input() title: string; - @Input() description: string; + @Input() description: string | TemplateRef; @Input() @InputBoolean() divider = false; @Input() extra: TemplateRef; diff --git a/zeppelin-web-angular/src/app/share/share.module.ts b/zeppelin-web-angular/src/app/share/share.module.ts index fcb03751092..3f7a003b1b1 100644 --- a/zeppelin-web-angular/src/app/share/share.module.ts +++ b/zeppelin-web-angular/src/app/share/share.module.ts @@ -16,6 +16,7 @@ import { FormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; import { + NzAddOnModule, NzAlertModule, NzBadgeModule, NzButtonModule, @@ -74,6 +75,7 @@ const PIPES = [HumanizeBytesPipe]; FormsModule, CommonModule, NzMenuModule, + NzAddOnModule, NzIconModule, NzInputModule, NzDropDownModule,