diff --git a/src/app/appmarket/domains/domain-group-search.pipe.ts b/src/app/appmarket/domains/domain-group-search.pipe.ts new file mode 100644 index 0000000000000000000000000000000000000000..dd61bf6efd22505fd5858365db0baa5616bdbc40 --- /dev/null +++ b/src/app/appmarket/domains/domain-group-search.pipe.ts @@ -0,0 +1,28 @@ +import {Pipe, PipeTransform} from '@angular/core'; +import {DomainGroup} from '../../model/domaingroup'; + +@Pipe({ + name: 'searchDomainGroup' +}) +export class SearchDomainGroupPipe implements PipeTransform { + + transform(value: DomainGroup[], searchValue: string): any[] { + + if (!value || !searchValue) { + return value + } + + const result = []; + value.forEach( val => { + if (val.name.toLowerCase().includes(searchValue.toLowerCase()) || + val.codename.toLowerCase().includes(searchValue.toLowerCase()) || + val.domains.some(domain => domain.name.toLowerCase().includes(searchValue.toLowerCase()) || + domain.codename.toLowerCase().includes(searchValue.toLowerCase())) + ) { + result.push(val); + } + + }) + return result; + } +} diff --git a/src/app/appmarket/domains/domain-groups/domain-groups.component.css b/src/app/appmarket/domains/domain-groups/domain-groups.component.css index 64f05678ab2bee44a4333d66d3ae1935af945c39..7cc4c1ecabca30691fff692308eb4bbbd24dd7fe 100644 --- a/src/app/appmarket/domains/domain-groups/domain-groups.component.css +++ b/src/app/appmarket/domains/domain-groups/domain-groups.component.css @@ -1,2 +1,23 @@ .pointer {cursor: pointer;} + + +.space-between { + display: flex; + justify-content: space-between; +} + +.fa { + color: black; +} + +.icon-black { + color: black; + cursor: pointer; +} + +.icon-bigger{ + font-size: x-large; + margin-left: 5px; + margin-right: 5px; +} diff --git a/src/app/appmarket/domains/domain-groups/domain-groups.component.html b/src/app/appmarket/domains/domain-groups/domain-groups.component.html index 2723e74f200f7da026e4d53f1826c52b6affd161..18f2b66602bd1ef4815b798266e1e1206398706c 100644 --- a/src/app/appmarket/domains/domain-groups/domain-groups.component.html +++ b/src/app/appmarket/domains/domain-groups/domain-groups.component.html @@ -1,8 +1,19 @@ <div class="col-sm-12 col-sm-offset-1 col-sm 10 col-md-offset-1 col-md-10"> <h3>{{'DOMAINS.LIST.GROUPS' | translate}}</h3> - <button [routerLink]="['/admin/domains/groups/add']" class="btn btn-primary">{{ 'APPS_MANAGEMENT.ADD_BUTTON' | translate }}</button> - <hr> - <table class="table table-hover table-condensed" aria-describedby="Apps management table"> + <div class="flex space-between"> + <div class="flex"> + <a *roles="['ROLE_SYSTEM_ADMIN']" [routerLink]="['/admin/domains/groups/add']" class="btn btn-primary" + role="button">{{'DOMAINS.ADD_BUTTON' | translate}}</a> + </div> +<!-- <div *roles="['ROLE_SYSTEM_ADMIN']" class="flex" style="align-content: center; margin-top: 8px;">--> +<!-- <span style="align-content: center; margin-right: 5px;"> {{'DOMAINS.NOTACTIVE' | translate}}</span>--> +<!-- <p-checkbox id="showNotActive" [binary]="true" [(ngModel)]=" showNotActive"></p-checkbox>--> +<!-- </div>--> + <div class="flex"> + <input pInputText class="flex" name="search" id="search" placeholder="Search" type="text" style="height: 34px" [(ngModel)]="searchValue"> + </div> + </div> + <table class="table table-hover table-condensed" aria-describedby="Apps management table" style="margin-top: 20px;"> <thead> <tr> <th scope="col"></th> @@ -14,14 +25,14 @@ </thead> <tbody> - <ng-template ngFor let-domainGroup [ngForOf]="groups" let-i="index"> - <tr class="table-row" (click)="clickTableRow(i)"> - <td style="width: 5%" *ngIf="!domainsRowVisible[i]"><span class="glyphicon glyphicon-chevron-right"></span></td> - <td style="width: 5%" *ngIf="domainsRowVisible[i]"><span class="glyphicon glyphicon-chevron-down"></span></td> - <td style="width: 25%">{{domainGroup?.name}}</td> - <td style="width: 20%">{{domainGroup?.codename}}</td> - <td style="width: 15%"></td> - <td style="width: 15%"></td> + <ng-template ngFor let-domainGroup [ngForOf]="groups | searchDomainGroup: searchValue" let-i="index"> + <tr class="table-row" > + <td style="width: 5%" (click)="clickTableRow(i)" *ngIf="!domainsRowVisible[i]"><span class="glyphicon glyphicon-chevron-right"></span></td> + <td style="width: 5%" (click)="clickTableRow(i)" *ngIf="domainsRowVisible[i]"><span class="glyphicon glyphicon-chevron-down"></span></td> + <td style="width: 25%" (click)="clickTableRow(i)">{{domainGroup?.name}}</td> + <td style="width: 20%" (click)="clickTableRow(i)">{{domainGroup?.codename}}</td> + <td style="width: 15%" (click)="clickTableRow(i)"></td> + <td style="width: 15%" (click)="clickTableRow(i)"></td> <td style="width: 20%" class="text-right"> <span class="dropdown"> <a style="display: inline-block" class="dropdown-toggle " aria-expanded="false" aria-haspopup="true" data-toggle="dropdown" href="#" role="button"> diff --git a/src/app/appmarket/domains/domain-groups/domain-groups.component.ts b/src/app/appmarket/domains/domain-groups/domain-groups.component.ts index dc6dea470f3a81fb70448d730c75479685457911..76b92c1974f3c72718dc07ed8c705b8e65893953 100644 --- a/src/app/appmarket/domains/domain-groups/domain-groups.component.ts +++ b/src/app/appmarket/domains/domain-groups/domain-groups.component.ts @@ -14,6 +14,7 @@ export class DomainGroupsComponent implements OnInit { public groups: DomainGroup[] = []; public domainsRowVisible: boolean[] = [] + public searchValue: string; constructor(private domainService: DomainService) { } diff --git a/src/app/appmarket/domains/domains.module.ts b/src/app/appmarket/domains/domains.module.ts index 208c185fee6cd4d63c269b190ee0fdb060f23824..0fc01281ddb890d1b38179cc2c0f2d98326b2497 100644 --- a/src/app/appmarket/domains/domains.module.ts +++ b/src/app/appmarket/domains/domains.module.ts @@ -23,6 +23,7 @@ import { DomainGroupViewComponent } from './domain-group-view/domain-group-view. import {DropdownModule} from 'primeng/dropdown'; import {MultiSelectModule} from 'primeng/multiselect'; import { RemovalConfirmationModalComponent } from './modals/removal-confirmation-modal/removal-confirmation-modal.component'; +import {SearchDomainGroupPipe} from './domain-group-search.pipe'; @@ -34,6 +35,7 @@ import { RemovalConfirmationModalComponent } from './modals/removal-confirmation DomainGroupsComponent, DomainGroupViewComponent, RemovalConfirmationModalComponent, + SearchDomainGroupPipe ], imports: [ CommonModule, @@ -52,7 +54,8 @@ import { RemovalConfirmationModalComponent } from './modals/removal-confirmation ], exports: [ DomainsListComponent, - SearchDomainPipe + SearchDomainPipe, + SearchDomainGroupPipe ], providers: [ DomainService, diff --git a/src/app/shared/navbar/navbar.component.html b/src/app/shared/navbar/navbar.component.html index ed4b015b79dd48f89b131489162e395b9e1636d6..904717e28162bb3b9a4a159110df132403949c0c 100644 --- a/src/app/shared/navbar/navbar.component.html +++ b/src/app/shared/navbar/navbar.component.html @@ -38,9 +38,6 @@ <li *roles="['ROLE_SYSTEM_ADMIN']"> <a [routerLink]="['/admin/domains/deploy']">{{ 'NAVBAR.BULK_DEPLOYMENT_DOMAIN' | translate }}</a> </li> - <li *roles="['ROLE_SYSTEM_ADMIN']"> - <a [routerLink]="['/admin/domains/groups']">{{ 'NAVBAR.DOMAIN_GROUPS' | translate }}</a> - </li> <li *roles="['ROLE_SYSTEM_ADMIN']"> <a [routerLink]="['/admin/domains/bulks']">{{ 'NAVBAR.PAST_BULK_DOMAIN' | translate }}</a> </li> @@ -78,6 +75,9 @@ <li *roles="['ROLE_DOMAIN_ADMIN', 'ROLE_SYSTEM_ADMIN', 'ROLE_OPERATOR']"><a [routerLink]="['/admin/domains']">{{ 'NAVBAR.DOMAINS' | translate }}</a> </li> + <li *roles="['ROLE_SYSTEM_ADMIN']"> + <a [routerLink]="['/admin/domains/groups']">{{ 'NAVBAR.DOMAIN_GROUPS' | translate }}</a> + </li> <li *roles="['ROLE_SYSTEM_ADMIN']"><a [routerLink]="['/admin/users']">{{ 'NAVBAR.USERS' | translate }}</a> </li>