From 2ce581d29df12e8c7a5deeed155f5a7ca0624a32 Mon Sep 17 00:00:00 2001
From: Joze RIHTARSIC <joze.rihtarsic@ext.ec.europa.eu>
Date: Mon, 15 Oct 2018 09:57:45 +0200
Subject: [PATCH] set Edit Service group page for Edit - change expand button
 with (+), (-)

---
 smp-angular/src/app/app.component.html        |  6 ++--
 smp-angular/src/app/app.routes.ts             |  2 +-
 .../search-table/search-table.component.css   |  4 +++
 .../search-table/search-table.component.html  | 11 +++----
 .../search-table/search-table.component.ts    | 15 ++++++---
 .../service-group.component.html              |  2 +-
 .../service-group.component.ts                |  1 -
 .../service-group-ro.model.ts                 |  8 -----
 .../service-group-search-controller.ts        | 13 ++------
 .../service-group-search-ro.model.ts          |  8 +++++
 .../service-group-search.component.html       | 31 +++++++++++++++----
 .../service-group-search.component.ts         | 17 +++++-----
 ...ts => service-metadata-search-ro.model.ts} |  2 +-
 13 files changed, 70 insertions(+), 50 deletions(-)
 delete mode 100644 smp-angular/src/app/service-group-search/service-group-ro.model.ts
 create mode 100644 smp-angular/src/app/service-group-search/service-group-search-ro.model.ts
 rename smp-angular/src/app/service-group-search/{service-metadata-ro.model.ts => service-metadata-search-ro.model.ts} (74%)

diff --git a/smp-angular/src/app/app.component.html b/smp-angular/src/app/app.component.html
index ea081424a..4957b3e62 100644
--- a/smp-angular/src/app/app.component.html
+++ b/smp-angular/src/app/app.component.html
@@ -9,11 +9,11 @@
     </div>
 
     <button mat-raised-button class="sideNavButton" [routerLink]="['/']" id="search_id">
-      <mat-icon matTooltip="Search participants" matTooltipDisabled="{{fullMenu}}" matTooltipDisabled="right">search</mat-icon>
+      <mat-icon matTooltip="Search" matTooltipDisabled="{{fullMenu}}" matTooltipDisabled="right">search</mat-icon>
       <span>Search</span>
     </button>
-    <button mat-raised-button class="sideNavButton" [routerLink]="['/']" id="edit_id">
-      <mat-icon matTooltip="Search participants" matTooltipDisabled="{{fullMenu}}" matTooltipDisabled="right">edit</mat-icon>
+    <button mat-raised-button class="sideNavButton" [routerLink]="['/edit']" id="edit_id">
+      <mat-icon matTooltip="Edit" matTooltipDisabled="{{fullMenu}}" matTooltipDisabled="right">edit</mat-icon>
       <span>Edit</span>
     </button>
     <button mat-raised-button class="sideNavButton" [routerLink]="['/domain']" id="domain_id">
diff --git a/smp-angular/src/app/app.routes.ts b/smp-angular/src/app/app.routes.ts
index 784b9cfe2..6d09b43e6 100644
--- a/smp-angular/src/app/app.routes.ts
+++ b/smp-angular/src/app/app.routes.ts
@@ -4,13 +4,13 @@ import {ServiceGroupSearchComponent} from './service-group-search/service-group-
 import {ServiceGroupComponent} from './service-group-edit/service-group.component';
 import {DomainComponent} from './domain/domain.component';
 import {AuthenticatedGuard} from './guards/authenticated.guard';
-import {AuthorizedAdminGuard} from './guards/authorized-admin.guard';
 import {UserComponent} from './user/user.component';
 
 
 const appRoutes: Routes = [
   {path: '', component: ServiceGroupSearchComponent},
   {path: 'search', component: ServiceGroupSearchComponent},
+  {path: 'edit', component: ServiceGroupComponent},
   {path: 'domain', component: DomainComponent},
   {path: 'user', component: UserComponent},
 
diff --git a/smp-angular/src/app/common/search-table/search-table.component.css b/smp-angular/src/app/common/search-table/search-table.component.css
index 163929e63..9cdb4f048 100644
--- a/smp-angular/src/app/common/search-table/search-table.component.css
+++ b/smp-angular/src/app/common/search-table/search-table.component.css
@@ -25,3 +25,7 @@
   left: 8px;
   bottom: 8px;
 }
+.table-button-expand {
+  padding: 0 !important;
+  margin: 0 !important;
+}
diff --git a/smp-angular/src/app/common/search-table/search-table.component.html b/smp-angular/src/app/common/search-table/search-table.component.html
index 5dc0ced5a..5f1075801 100644
--- a/smp-angular/src/app/common/search-table/search-table.component.html
+++ b/smp-angular/src/app/common/search-table/search-table.component.html
@@ -57,7 +57,7 @@
       <!-- Row Detail Template -->
       <ngx-datatable-row-detail id="rowDetail" [rowHeight]="'auto'" #searchTableDetailRow
                                 (toggle)="onDetailToggle($event)">
-        <ng-template let-row="row" let-expanded="expanded" ngx-datatable-row-detail-template>
+        <ng-template let-row="row" let-expanded="expanded" let-enabled="enabled"  ngx-datatable-row-detail-template>
           <ng-container [ngTemplateOutlet]="tableRowDetailContainer"
                         [ngTemplateOutletContext]="{row:row}"></ng-container>
         </ng-template>
@@ -81,13 +81,12 @@
       </div>
     </ng-template>
 
-    <ng-template #rowExpand let-row="row" let-expanded="expanded" ngx-datatable-cell-template>
-      <a
+    <ng-template #rowExpand let-row="row" let-expanded="expanded" let-disabled="disabled" ngx-datatable-cell-template >
+      <span *ngIf="!!disabled">( )</span>
+      <a *ngIf="!disabled" class="table-button-expand"
         href="javascript:void(0)"
-        [class.datatable-icon-right]="!expanded"
-        [class.datatable-icon-down]="expanded"
         title="Expand/Collapse Row"
-        (click)="toggleExpandRow(row)">
+        (click)="toggleExpandRow(row)">{{expanded?'(-)':'(+)'}}
       </a>
     </ng-template>
   </div>
diff --git a/smp-angular/src/app/common/search-table/search-table.component.ts b/smp-angular/src/app/common/search-table/search-table.component.ts
index c72fa2073..ce94644e2 100644
--- a/smp-angular/src/app/common/search-table/search-table.component.ts
+++ b/smp-angular/src/app/common/search-table/search-table.component.ts
@@ -41,6 +41,7 @@ export class SearchTableComponent implements OnInit {
   @Input() filter: any = {};
   @Input() showActionButtons: boolean = true;
   @Input() showSearchPanel: boolean = true;
+  @Input() showIndexColumn: boolean = false;
 
   loading = false;
 
@@ -71,6 +72,7 @@ export class SearchTableComponent implements OnInit {
       cellTemplate: this.rowIndex,
       name: 'Index',
       width: 50,
+      maxWidth:80,
       sortable: false
     };
 
@@ -78,24 +80,29 @@ export class SearchTableComponent implements OnInit {
       cellTemplate: this.rowActions,
       name: 'Actions',
       width: 80,
+      maxWidth:80,
       sortable: false
     };
     this.columnExpandDetails= {
       cellTemplate: this.rowExpand,
       name: ' ',
-      width: 20,
+      width: 40,
+      maxWidth:50,
       sortable: false
     };
 
     // Add actions to last column
     if (this.columnPicker) {
-      this.columnPicker.allColumns.unshift(this.columnIndex);
-      this.columnPicker.selectedColumns.unshift(this.columnIndex);
-
+      // prepend columns
       if (!!this.tableRowDetailContainer){
         this.columnPicker.allColumns.unshift(this.columnExpandDetails);
         this.columnPicker.selectedColumns.unshift(this.columnExpandDetails);
       }
+      if (this.showIndexColumn){
+        this.columnPicker.allColumns.unshift(this.columnIndex);
+        this.columnPicker.selectedColumns.unshift(this.columnIndex);
+      }
+
       if (this.showActionButtons) {
         this.columnPicker.allColumns.push(this.columnActions);
         this.columnPicker.selectedColumns.push(this.columnActions);
diff --git a/smp-angular/src/app/service-group-edit/service-group.component.html b/smp-angular/src/app/service-group-edit/service-group.component.html
index f8b1282f6..0bdf69b5b 100644
--- a/smp-angular/src/app/service-group-edit/service-group.component.html
+++ b/smp-angular/src/app/service-group-edit/service-group.component.html
@@ -2,7 +2,7 @@
   page_id='participants_id'
   title='Participants'
   [columnPicker]="columnPicker"
-  url="ui/servicegroup"
+  url="rest/servicegroup"
   [additionalToolButtons]="additionalToolButtons"
   [searchPanel]="searchPanel"
   [filter]="filter"
diff --git a/smp-angular/src/app/service-group-edit/service-group.component.ts b/smp-angular/src/app/service-group-edit/service-group.component.ts
index 0edccfd6a..3edbb969c 100644
--- a/smp-angular/src/app/service-group-edit/service-group.component.ts
+++ b/smp-angular/src/app/service-group-edit/service-group.component.ts
@@ -1,7 +1,6 @@
 import {Component, OnInit, TemplateRef, ViewChild} from '@angular/core';
 import {ColumnPicker} from '../common/column-picker/column-picker.model';
 import {MatDialog, MatDialogRef} from '@angular/material';
-import {ServiceGroupDetailsDialogComponent} from './service-group-details-dialog/service-group-details-dialog.component';
 import {AlertService} from '../alert/alert.service';
 import {ServiceGroupController} from './service-group-controller';
 import {HttpClient} from '@angular/common/http';
diff --git a/smp-angular/src/app/service-group-search/service-group-ro.model.ts b/smp-angular/src/app/service-group-search/service-group-ro.model.ts
deleted file mode 100644
index 613bf2b3f..000000000
--- a/smp-angular/src/app/service-group-search/service-group-ro.model.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { ServiceMetadataRo } from './service-metadata-ro.model';
-import {SearchTableEntity} from "../common/search-table/search-table-entity.model";
-
-export interface ServiceGroupRo extends SearchTableEntity {
-  participantIdentifier: string;
-  participantScheme: string;
-  serviceMetadata: Array<ServiceMetadataRo>;
-}
diff --git a/smp-angular/src/app/service-group-search/service-group-search-controller.ts b/smp-angular/src/app/service-group-search/service-group-search-controller.ts
index bdf2e3da0..28c1698b6 100644
--- a/smp-angular/src/app/service-group-search/service-group-search-controller.ts
+++ b/smp-angular/src/app/service-group-search/service-group-search-controller.ts
@@ -1,25 +1,17 @@
 import {SearchTableController} from '../common/search-table/search-table-controller';
 import {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material';
-
-import {UserDetailsDialogComponent} from '../user/user-details-dialog/user-details-dialog.component';
-import {SearchTableEntity} from '../common/search-table/search-table-entity.model';
-import {ServiceGroupRo} from './service-group-ro.model';
-import {SearchTableEntityStatus} from '../common/search-table/search-table-entity-status.model';
+import {ServiceGroupSearchRo} from './service-group-search-ro.model';
 
 export class ServiceGroupSearchController implements SearchTableController {
 
   constructor(public dialog: MatDialog) { }
 
   public showDetails(row: any) {
-
   }
 
   public showExtension(row: any) {
-
   }
 
-
-
   public edit(row: any) { }
 
   public delete(row: any) { }
@@ -28,8 +20,7 @@ export class ServiceGroupSearchController implements SearchTableController {
     return null;
   }
 
-  public newRow(): ServiceGroupRo {
+  public newRow(): ServiceGroupSearchRo {
     return null;
   }
-
 }
diff --git a/smp-angular/src/app/service-group-search/service-group-search-ro.model.ts b/smp-angular/src/app/service-group-search/service-group-search-ro.model.ts
new file mode 100644
index 000000000..f20d01a53
--- /dev/null
+++ b/smp-angular/src/app/service-group-search/service-group-search-ro.model.ts
@@ -0,0 +1,8 @@
+import { ServiceMetadataSearchRo } from './service-metadata-search-ro.model';
+import {SearchTableEntity} from "../common/search-table/search-table-entity.model";
+
+export interface ServiceGroupSearchRo extends SearchTableEntity {
+  participantIdentifier: string;
+  participantScheme: string;
+  serviceMetadata: Array<ServiceMetadataSearchRo>;
+}
diff --git a/smp-angular/src/app/service-group-search/service-group-search.component.html b/smp-angular/src/app/service-group-search/service-group-search.component.html
index 3881811ef..d9f40a701 100644
--- a/smp-angular/src/app/service-group-search/service-group-search.component.html
+++ b/smp-angular/src/app/service-group-search/service-group-search.component.html
@@ -9,6 +9,7 @@
   [searchTableController]="serviceGroupSearchController"
   [tableRowDetailContainer]="tableRowDetailContainer"
   [showActionButtons]="false"
+  [showIndexColumn]="true"
 >
 
 
@@ -24,7 +25,7 @@
 
   <ng-template #rowSMPUrlLinkAction let-row="row" let-value="value" ngx-datatable-cell-template>
     <a target="_blank"
-       href="{{contextPath}}{{row.participantScheme}}::{{row.participantIdentifier}}" >{{row.participantScheme}}::{{row.participantIdentifier}}</a>
+       href="{{contextPath}}{{row.participantScheme}}::{{row.participantIdentifier}}" >Open URL</a>
 
   </ng-template>
 
@@ -53,21 +54,39 @@
 
 
   <ng-template #additionalToolButtons>
-    <button mat-raised-button color="primary"
+    <!-- button mat-raised-button color="primary"
             id="extensionbutton_id">
       <mat-icon>code</mat-icon>
       <span>Extension</span>
-    </button>
+    </button -->
   </ng-template>
 
   <ng-template #tableRowDetailContainer let-row="row">
 
     <div *ngIf="row.serviceMetadata.length===0" style="padding-left:20px;">
-      No service metadata;
+      No service metadata
     </div>
     <div *ngIf="row.serviceMetadata.length !== 0" >
 
-      <table style="width: 100%">
+      <!-- ngx-datatable
+        class='material striped'
+        style="width: 80%"
+        [loadingIndicator]="loading"
+        [rows]='row.serviceMetadata'
+        [columns]='[{name:"Domain", prop:"domainCode", maxWidth: 250 },{name:"Document identifier scheme",prop:"documentIdentifierScheme",maxWidth: 350},{name:"Document identifier", prop:"documentIdentifier"},{name:"OASIS SMP URL",maxWidth: 350}]'
+        [columnMode]='"force"'
+        [headerHeight]='50'
+        [footerHeight]='50'
+        [rowHeight]='"auto"'>
+        <ng-template #rowMetadataSMPUrlLinkAction let-row="smdRow" let-value="value" ngx-datatable-cell-template>
+
+          <a target="_blank"
+             href="{{contextPath}}{{row.participantScheme}}::{{row.participantIdentifier}}/services/{{smdRow.documentIdentifierScheme}}::{{smdRow.documentIdentifier}}" >Open URL</a>
+
+        </ng-template>
+      </ngx-datatable -->
+
+      <table style="width: 80%">
         <tr>
           <th>Domain</th>
           <th>Document identifier scheme</th>
@@ -80,7 +99,7 @@
           <td >{{smd.documentIdentifier}}</td>
           <td style="width: 50em">
             <a target="_blank"
-               href="{{contextPath}}{{row.participantScheme}}::{{row.participantIdentifier}}/services/{{smd.documentIdentifierScheme}}::{{smd.documentIdentifier}}">Oasis URL</a>
+               href="{{contextPath}}{{row.participantScheme}}::{{row.participantIdentifier}}/services/{{smd.documentIdentifierScheme}}::{{smd.documentIdentifier}}">OASIS ServiceMetadata URL</a>
           </td>
         </tr>
       </table>
diff --git a/smp-angular/src/app/service-group-search/service-group-search.component.ts b/smp-angular/src/app/service-group-search/service-group-search.component.ts
index 8481c552e..c27683511 100644
--- a/smp-angular/src/app/service-group-search/service-group-search.component.ts
+++ b/smp-angular/src/app/service-group-search/service-group-search.component.ts
@@ -7,7 +7,6 @@ import {HttpClient} from '@angular/common/http';
 import {Observable} from "rxjs/index";
 import {SearchTableResult} from "../common/search-table/search-table-result.model";
 import {DomainRo} from "../domain/domain-ro.model";
-import {SearchTableEntityStatus} from "../common/search-table/search-table-entity-status.model";
 
 @Component({
   moduleId: module.id,
@@ -29,7 +28,6 @@ export class ServiceGroupSearchComponent implements OnInit {
 
   constructor(protected http: HttpClient, protected alertService: AlertService, public dialog: MatDialog) {
     this.domainObserver = this.http.get<SearchTableResult>('rest/domain');
-
     this.domainObserver.subscribe((domains: SearchTableResult) => {
       this.domainlist = new Array(domains.serviceEntities.length)
         .map((v, index) => domains.serviceEntities[index] as DomainRo);
@@ -51,34 +49,37 @@ export class ServiceGroupSearchComponent implements OnInit {
       {
         name: 'Metadata count',
         prop: 'serviceMetadata.length',
-        width: 60
+        width: 60,
+        maxWidth: 80
       },
       {
         name: 'Participant scheme',
         prop: 'participantScheme',
+        maxWidth: 300
       },
       {
         name: 'Participant identifier',
         prop: 'participantIdentifier',
-        width: 275
       },
       {
         cellTemplate: this.rowSMPUrlLinkAction,
-        name: 'SMP Url',
-        width: 80,
+        name: 'OASIS ServiceGroup URL',
+        width: 150,
+        maxWidth: 250,
         sortable: false
       },
+      /*
       {
         cellTemplate: this.rowExtensionAction,
         name: 'Extension',
         width: 80,
         sortable: false
-      }
+      }*/
     ];
 
 
     this.columnPicker.selectedColumns = this.columnPicker.allColumns.filter(col => {
-      return ["Metadata count", "Participant scheme", "Participant identifier","SMP Url", "Extension"].indexOf(col.name) != -1
+      return ["Metadata count", "Participant scheme", "Participant identifier","OASIS ServiceGroup URL"].indexOf(col.name) != -1
     });
   }
 
diff --git a/smp-angular/src/app/service-group-search/service-metadata-ro.model.ts b/smp-angular/src/app/service-group-search/service-metadata-search-ro.model.ts
similarity index 74%
rename from smp-angular/src/app/service-group-search/service-metadata-ro.model.ts
rename to smp-angular/src/app/service-group-search/service-metadata-search-ro.model.ts
index 9b97f060a..d6260aa78 100644
--- a/smp-angular/src/app/service-group-search/service-metadata-ro.model.ts
+++ b/smp-angular/src/app/service-group-search/service-metadata-search-ro.model.ts
@@ -1,6 +1,6 @@
 import {SearchTableEntity} from "../common/search-table/search-table-entity.model";
 
-export interface ServiceMetadataRo extends SearchTableEntity {
+export interface ServiceMetadataSearchRo extends SearchTableEntity {
   documentIdentifier: string;
   documentIdentifierScheme: string;
   smlSubdomain: string;
-- 
GitLab