diff --git a/client/src/app/admin/instance/dataset/components/instance-buttons.component.html b/client/src/app/admin/instance/dataset/components/instance-buttons.component.html index 89218e04727878415c9c8a3856bf101097b9e6f0..953804002baeb30ba8408c744808fdaa68550b64 100644 --- a/client/src/app/admin/instance/dataset/components/instance-buttons.component.html +++ b/client/src/app/admin/instance/dataset/components/instance-buttons.component.html @@ -1,10 +1,15 @@ <div class="btn-toolbar mb-3" role="toolbar" aria-label="Toolbar with button groups"> - <div class="btn-group mr-2" role="group" aria-label="First group"> + <div class="btn-group mr-2" role="group" aria-label="New Dataset family"> <button (click)="openModal(template); $event.stopPropagation()" title="Add new dataset family" class="btn btn-outline-success"> <span class="fas fa-plus"></span> New dataset family </button> </div> - <div class="btn-group mr-2" role="group" aria-label="Second group"> + <div class="btn-group mr-2" role="group" aria-label="Edit webpages"> + <button routerLink="/admin/instance/configure-instance/{{ instance.name }}/webpages" title="Edit instances webpages" class="btn btn-outline-primary"> + <span class="fas fa-file-lines"></span> Edit instance webpages + </button> + </div> + <div class="btn-group mr-2" role="group" aria-label="Handle dataset groups"> <button routerLink="/admin/instance/configure-instance/{{ instance.name }}/dataset-group" title="Handle groups" class="btn btn-outline-primary"> <span class="fas fa-users"></span> Handle dataset groups </button> diff --git a/client/src/app/admin/instance/instance-routing.module.ts b/client/src/app/admin/instance/instance-routing.module.ts index d7f78cc8e9869a9fe8744a108db608bfdb3fca2f..a0ea13dd3852ba503e0247bf2e53a916c713d80e 100644 --- a/client/src/app/admin/instance/instance-routing.module.ts +++ b/client/src/app/admin/instance/instance-routing.module.ts @@ -29,7 +29,8 @@ const routes: Routes = [ [ { path: '', redirectTo: 'dataset/dataset-list', pathMatch: 'full' }, { path: 'dataset', loadChildren: () => import('./dataset/dataset.module').then(m => m.DatasetModule) }, - { path: 'dataset-group', loadChildren: () => import('./dataset-group/dataset-group.module').then(m => m.DatasetGroupModule) } + { path: 'dataset-group', loadChildren: () => import('./dataset-group/dataset-group.module').then(m => m.DatasetGroupModule) }, + { path: 'webpages', loadChildren: () => import('./webpages/webpages.module').then(m => m.WebpagesModule) }, ] }, ]; diff --git a/client/src/app/admin/instance/webpages/components/index.ts b/client/src/app/admin/instance/webpages/components/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..6de339c71a1248ffa8b768bba4995eab4b3ff143 --- /dev/null +++ b/client/src/app/admin/instance/webpages/components/index.ts @@ -0,0 +1,11 @@ +/** + * This file is part of Anis Client. + * + * @copyright Laboratoire d'Astrophysique de Marseille / CNRS + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +export const dummiesComponents = [ +]; diff --git a/client/src/app/admin/instance/webpages/containers/webpages-list.component.html b/client/src/app/admin/instance/webpages/containers/webpages-list.component.html new file mode 100644 index 0000000000000000000000000000000000000000..de41922f96e8acca52965559967ca740ae466389 --- /dev/null +++ b/client/src/app/admin/instance/webpages/containers/webpages-list.component.html @@ -0,0 +1,28 @@ +<div class="container-fluid"> + <nav aria-label="breadcrumb"> + <ol class="breadcrumb"> + <li class="breadcrumb-item"> + <a routerLink="/admin/instance/instance-list"> + Instances + </a> + </li> + <li class="breadcrumb-item"> + <a routerLink="/admin/instance/configure-instance/{{ instanceName | async }}"> + Configure instance {{ instanceName | async }} + </a> + </li> + <li class="breadcrumb-item active" aria-current="page">Edit instance webpages</li> + </ol> + </nav> + + <div class="row"> + <nav class="col-md-2 col-sm-12 mb-2"> + <div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical"> + <a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</a> + </div> + </nav> + <div class="col-md-10 col-sm-12"> + <textarea type="text" name="txtarea" style="font-family: Arial;font-size: 12pt;width:100%;height:40vw"></textarea> + </div> + </div> +</div> diff --git a/client/src/app/admin/instance/webpages/containers/webpages-list.component.scss b/client/src/app/admin/instance/webpages/containers/webpages-list.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/client/src/app/admin/instance/webpages/containers/webpages-list.component.ts b/client/src/app/admin/instance/webpages/containers/webpages-list.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..6e8843614fe24a1973f9c266dd4ce5370a3fc27a --- /dev/null +++ b/client/src/app/admin/instance/webpages/containers/webpages-list.component.ts @@ -0,0 +1,27 @@ +/** + * This file is part of Anis Client. + * + * @copyright Laboratoire d'Astrophysique de Marseille / CNRS + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import { Component } from '@angular/core'; +import { Observable } from 'rxjs'; +import { Store } from '@ngrx/store'; + +import * as instanceSelector from 'src/app/metamodel/selectors/instance.selector'; + +@Component({ + selector: 'app-webpages-list', + templateUrl: 'webpages-list.component.html', + styleUrls: [ 'webpages-list.component.scss' ] +}) +export class WebpagesListComponent { + public instanceName: Observable<string>; + + constructor(private store: Store<{ }>) { + this.instanceName = this.store.select(instanceSelector.selectInstanceNameByRoute); + } +} diff --git a/client/src/app/admin/instance/webpages/webpages-routing.module.ts b/client/src/app/admin/instance/webpages/webpages-routing.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..5af6138b15939770ed12c33f8d70424a2cc9cfe9 --- /dev/null +++ b/client/src/app/admin/instance/webpages/webpages-routing.module.ts @@ -0,0 +1,31 @@ +/** + * This file is part of Anis Client. + * + * @copyright Laboratoire d'Astrophysique de Marseille / CNRS + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { WebpagesListComponent } from './containers/webpages-list.component'; + +const routes: Routes = [ + { path: '', component: WebpagesListComponent } +]; + +/** + * @class + * @classdesc Dataset routing module. + */ +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class DatasetRoutingModule { } + +export const routedComponents = [ + WebpagesListComponent +]; diff --git a/client/src/app/admin/instance/webpages/webpages.module.ts b/client/src/app/admin/instance/webpages/webpages.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..9222e0418b1048bf802bd0c537d8fd384e6f6466 --- /dev/null +++ b/client/src/app/admin/instance/webpages/webpages.module.ts @@ -0,0 +1,33 @@ +/** + * This file is part of Anis Client. + * + * @copyright Laboratoire d'Astrophysique de Marseille / CNRS + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'src/app/shared/shared.module'; +import { DatasetRoutingModule, routedComponents } from './webpages-routing.module'; +import { dummiesComponents } from './components'; + +import { AdminSharedModule } from '../../admin-shared/admin-shared.module'; + +/** + * @class + * @classdesc Dataset module. + */ +@NgModule({ + imports: [ + SharedModule, + DatasetRoutingModule, + AdminSharedModule + ], + declarations: [ + routedComponents, + dummiesComponents + ] +}) +export class WebpagesModule { } diff --git a/client/yarn.lock b/client/yarn.lock index 6418171403d03c5fd92b58ce44d9bfc89db43592..4a964f04631ee997f26bcff363f389b2819124b5 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -6192,6 +6192,11 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +marked@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" + integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -6468,6 +6473,15 @@ ngx-json-viewer@^3.0.2: dependencies: tslib "^2.0.0" +ngx-md@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/ngx-md/-/ngx-md-12.0.5.tgz#4b48dabad7a4f8cc3e0f321fea95a066e590bcf9" + integrity sha512-sjCfnV665oq2MCgtNPbso9v/OKJridvtlj3ExR75q5f783QUmEWJKAnglS/bZESjjxZm+RZrWpdFsxDVwk/5xw== + dependencies: + marked "^0.7.0" + prismjs "^1.15.0" + tslib "^2.0.0" + ngx-toastr@^14.2.1: version "14.2.1" resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-14.2.1.tgz#2899cc6e69af607aa89a2de807c32b46fdc035f8" @@ -7252,6 +7266,11 @@ pretty-format@^27.5.1: ansi-styles "^5.0.0" react-is "^17.0.1" +prismjs@^1.15.0: + version "1.28.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.28.0.tgz#0d8f561fa0f7cf6ebca901747828b149147044b6" + integrity sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"