removed unused components
This commit is contained in:
parent
f3adbfba0f
commit
2c61988074
@ -1,128 +0,0 @@
|
|||||||
<div class="d-flex flex-column h-100 pb-3">
|
|
||||||
<div class="container text-center mt-1" [formGroup]="editorForm">
|
|
||||||
<div class="btn-toolbar pt-2">
|
|
||||||
<span class="d-none d-sm-block flex-grow-1"></span>
|
|
||||||
|
|
||||||
<ng-container *ngIf="images && images.length">
|
|
||||||
<div class="input-group input-group-pill flex-grow-1 flex-grow-sm-0 me-sm-3 w-sm-auto w-100">
|
|
||||||
<input type="text" class="form-control" placeholder="Search by name..." formControlName="searchTerm" appAlphaOnly="^[A-Za-z0-9_-]+$">
|
|
||||||
<button class="btn btn-outline-info" type="button" (click)="clearSearch()" [disabled]="!editorForm.get('searchTerm').value"
|
|
||||||
tooltip="Clear search" container="body" placement="top" [adaptivePosition]="false">
|
|
||||||
<fa-icon icon="times" size="sm" [fixedWidth]="true"></fa-icon>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="btn-group flex-grow-1 flex-grow-sm-0 w-sm-auto w-100" dropdown placement="bottom left">
|
|
||||||
<button class="btn btn-outline-info dropdown-toggle" dropdownToggle>
|
|
||||||
Sort by
|
|
||||||
<b *ngIf="editorForm.get('sortProperty').value === 'name'">name</b>
|
|
||||||
<b *ngIf="editorForm.get('sortProperty').value === 'description'">description</b>
|
|
||||||
<b *ngIf="editorForm.get('sortProperty').value === 'os'">operating system</b>
|
|
||||||
<b *ngIf="editorForm.get('sortProperty').value === 'type'">type</b>
|
|
||||||
<b *ngIf="editorForm.get('sortProperty').value === 'state'">status</b>
|
|
||||||
</button>
|
|
||||||
<ul id="dropdown-split" *dropdownMenu class="dropdown-menu dropdown-menu-right" role="menu">
|
|
||||||
<li role="menuitem">
|
|
||||||
<button class="dropdown-item" [class.active]="editorForm.get('sortProperty').value === 'name'" (click)="setSortProperty('name')">
|
|
||||||
Name
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<li role="menuitem">
|
|
||||||
<button class="dropdown-item" [class.active]="editorForm.get('sortProperty').value === 'description'" (click)="setSortProperty('description')">
|
|
||||||
Description
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<li role="menuitem">
|
|
||||||
<button class="dropdown-item" [class.active]="editorForm.get('sortProperty').value === 'os'" (click)="setSortProperty('os')">
|
|
||||||
Operating system
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<li role="menuitem">
|
|
||||||
<button class="dropdown-item" [class.active]="editorForm.get('sortProperty').value === 'type'" (click)="setSortProperty('type')">
|
|
||||||
Type
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<li role="menuitem">
|
|
||||||
<button class="dropdown-item" [class.active]="editorForm.get('sortProperty').value === 'status'" (click)="setSortProperty('status')">
|
|
||||||
Status
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</ng-container>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="spinner-border text-center text-info text-faded" role="status" *ngIf="loadingIndicator">
|
|
||||||
<span class="visually-hidden">Loading...</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="overflow-auto">
|
|
||||||
<div class="container my-4">
|
|
||||||
<div class="table-responsive" *ngIf="!loadingIndicator">
|
|
||||||
<p *ngIf="!images.length" class="text-center text-info text-faded p-3 mb-0">
|
|
||||||
You don't have any custom images yet
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<table class="table table-hover" *ngIf="images.length">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Name</th>
|
|
||||||
<th>Description</th>
|
|
||||||
<th>OS</th>
|
|
||||||
<th>Type</th>
|
|
||||||
<th>Publish date</th>
|
|
||||||
<th>Status</th>
|
|
||||||
<th></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr *ngFor="let image of listItems">
|
|
||||||
<td>
|
|
||||||
{{ image.name }}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<div class="text-truncate">{{ image.description }}</div>
|
|
||||||
</td>
|
|
||||||
<td class="text-uppercase">
|
|
||||||
{{ image.os }}
|
|
||||||
</td>
|
|
||||||
<td class="text-uppercase">
|
|
||||||
{{ image.type }}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ image.published_at ? (image.published_at | timeago) : '' }}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span class="badge" [ngClass]="image.state === 'active' ? 'bg-success' : 'bg-warning text-dark'">{{ image.state }}</span>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<div class="btn-group btn-group-sm" dropdown placement="bottom right" container="body" [isDisabled]="image.working">
|
|
||||||
<button class="btn btn-link text-info" dropdownToggle
|
|
||||||
tooltip="More options" container="body" placement="top" [adaptivePosition]="false">
|
|
||||||
<fa-icon icon="ellipsis-v" [fixedWidth]="true" size="sm"></fa-icon>
|
|
||||||
</button>
|
|
||||||
<ul id="dropdown-split" *dropdownMenu class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="button-split">
|
|
||||||
<li role="menuitem">
|
|
||||||
<button class="dropdown-item" (click)="deleteCustomImage(image)">
|
|
||||||
<fa-icon icon="trash" [fixedWidth]="true"></fa-icon>
|
|
||||||
Delete this image
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
<tfoot *ngIf="!listItems.length">
|
|
||||||
<tr>
|
|
||||||
<td colspan="7" class="text-uppercase">
|
|
||||||
No images match your search criteria
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tfoot>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,45 +0,0 @@
|
|||||||
.table-responsive
|
|
||||||
{
|
|
||||||
background-color: rgba(16, 21, 39, 0.75);
|
|
||||||
box-shadow: 0 0 0 2px #0b2b51, 0 0 2px 4px #0b284b, 0 0 10px 3px #0e162a;
|
|
||||||
transition: box-shadow 0.15s ease-out;
|
|
||||||
border-radius: .25rem;
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
{
|
|
||||||
box-shadow: 0 0 0 2px #0b2b51, 0 0 2px 4px rgb(18 203 240 / 40%), 0 0 10px 3px #0e162a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rule
|
|
||||||
{
|
|
||||||
text-transform: uppercase;
|
|
||||||
color: #3d5e8e;
|
|
||||||
}
|
|
||||||
|
|
||||||
.highlight
|
|
||||||
{
|
|
||||||
color: #8881ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
b, .strong
|
|
||||||
{
|
|
||||||
color: #ff9c07;
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-truncate
|
|
||||||
{
|
|
||||||
max-width: 350px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inline-list-item + .inline-list-item
|
|
||||||
{
|
|
||||||
padding-left: .25rem;
|
|
||||||
|
|
||||||
&:before
|
|
||||||
{
|
|
||||||
content: attr(text);
|
|
||||||
color: #3d5e8e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { CustomImagesComponent } from './custom-images.component';
|
|
||||||
|
|
||||||
describe('CustomImagesComponent', () => {
|
|
||||||
let component: CustomImagesComponent;
|
|
||||||
let fixture: ComponentFixture<CustomImagesComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ CustomImagesComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(CustomImagesComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,191 +0,0 @@
|
|||||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
|
||||||
import { ColumnMode, SelectionType } from '@swimlane/ngx-datatable';
|
|
||||||
import { CatalogService } from '../helpers/catalog.service';
|
|
||||||
import { AuthService } from '../../helpers/auth.service';
|
|
||||||
import { debounceTime, distinctUntilChanged, filter, first, map, switchMap, takeUntil } from 'rxjs/operators';
|
|
||||||
import { Subject } from 'rxjs';
|
|
||||||
import { ToastrService } from 'ngx-toastr';
|
|
||||||
import { CatalogImage } from '../models/image';
|
|
||||||
import { FormGroup, FormBuilder, Validators, AbstractControl, FormArray } from '@angular/forms';
|
|
||||||
import Fuse from 'fuse.js';
|
|
||||||
import { sortArray } from '../../helpers/utils.service';
|
|
||||||
import { BsModalService } from 'ngx-bootstrap/modal';
|
|
||||||
import { ConfirmationDialogComponent } from '../../components/confirmation-dialog/confirmation-dialog.component';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-custom-images',
|
|
||||||
templateUrl: './custom-images.component.html',
|
|
||||||
styleUrls: ['./custom-images.component.scss']
|
|
||||||
})
|
|
||||||
export class CustomImagesComponent implements OnInit, OnDestroy
|
|
||||||
{
|
|
||||||
images: CatalogImage[] = [];
|
|
||||||
listItems: CatalogImage[] = [];
|
|
||||||
editorForm: FormGroup;
|
|
||||||
loadingIndicator = true;
|
|
||||||
|
|
||||||
private destroy$ = new Subject();
|
|
||||||
private readonly fuseJsOptions: {};
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------------
|
|
||||||
constructor(private readonly catalogService: CatalogService,
|
|
||||||
private readonly modalService: BsModalService,
|
|
||||||
private readonly authService: AuthService,
|
|
||||||
private readonly toastr: ToastrService,
|
|
||||||
private readonly fb: FormBuilder)
|
|
||||||
{
|
|
||||||
// Configure FuseJs
|
|
||||||
this.fuseJsOptions = {
|
|
||||||
includeScore: false,
|
|
||||||
minMatchCharLength: 2,
|
|
||||||
includeMatches: true,
|
|
||||||
shouldSort: false,
|
|
||||||
threshold: .3, // Lower value means a more exact search
|
|
||||||
keys: [
|
|
||||||
{ name: 'name', weight: .9 },
|
|
||||||
{ name: 'description', weight: .8 },
|
|
||||||
{ name: 'os', weight: .7 },
|
|
||||||
{ name: 'type', weight: .7 }
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
this.createForm();
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------------
|
|
||||||
private createForm()
|
|
||||||
{
|
|
||||||
this.editorForm = this.fb.group(
|
|
||||||
{
|
|
||||||
searchTerm: [''],
|
|
||||||
sortProperty: ['name']
|
|
||||||
});
|
|
||||||
|
|
||||||
this.editorForm.get('searchTerm').valueChanges
|
|
||||||
.pipe(
|
|
||||||
debounceTime(300),
|
|
||||||
distinctUntilChanged(),
|
|
||||||
takeUntil(this.destroy$)
|
|
||||||
)
|
|
||||||
.subscribe(() => this.applyFiltersAndSort());
|
|
||||||
|
|
||||||
this.editorForm.get('sortProperty').valueChanges
|
|
||||||
.pipe(
|
|
||||||
distinctUntilChanged(),
|
|
||||||
takeUntil(this.destroy$)
|
|
||||||
)
|
|
||||||
.subscribe(() => this.applyFiltersAndSort());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------------
|
|
||||||
private applyFiltersAndSort()
|
|
||||||
{
|
|
||||||
let listItems: CatalogImage[] = null;
|
|
||||||
|
|
||||||
const searchTerm = this.editorForm.get('searchTerm').value;
|
|
||||||
if (searchTerm.length >= 2)
|
|
||||||
{
|
|
||||||
const fuse = new Fuse(this.images, this.fuseJsOptions);
|
|
||||||
const fuseResults = fuse.search(searchTerm);
|
|
||||||
listItems = fuseResults.map(x => x.item as CatalogImage);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!listItems)
|
|
||||||
listItems = [...this.images];
|
|
||||||
|
|
||||||
this.listItems = sortArray(listItems, this.editorForm.get('sortProperty').value);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------------
|
|
||||||
setSortProperty(propertyName: string)
|
|
||||||
{
|
|
||||||
this.editorForm.get('sortProperty').setValue(propertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------------
|
|
||||||
clearSearch()
|
|
||||||
{
|
|
||||||
this.editorForm.get('searchTerm').setValue('');
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------------
|
|
||||||
private getCustomImages()
|
|
||||||
{
|
|
||||||
this.loadingIndicator = true;
|
|
||||||
|
|
||||||
this.authService.userInfoUpdated$
|
|
||||||
.pipe(
|
|
||||||
takeUntil(this.destroy$),
|
|
||||||
filter(userInfo => userInfo != null),
|
|
||||||
switchMap(userInfo => this.catalogService.getCustomImages(userInfo.id))
|
|
||||||
)
|
|
||||||
.subscribe(images =>
|
|
||||||
{
|
|
||||||
this.images = images;
|
|
||||||
|
|
||||||
this.applyFiltersAndSort();
|
|
||||||
|
|
||||||
this.loadingIndicator = false
|
|
||||||
}, err =>
|
|
||||||
{
|
|
||||||
const errorDetails = err.error?.message ? `(${err.error.message})` : '';
|
|
||||||
this.toastr.error(`Failed to retrieve the list of custom images ${errorDetails}`);
|
|
||||||
|
|
||||||
this.loadingIndicator = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------------
|
|
||||||
deleteCustomImage(image: CatalogImage)
|
|
||||||
{
|
|
||||||
const modalConfig = {
|
|
||||||
ignoreBackdropClick: true,
|
|
||||||
keyboard: false,
|
|
||||||
animated: true,
|
|
||||||
initialState: {
|
|
||||||
prompt: `Are you sure you wish to permanently delete the "${image.name}" image?`,
|
|
||||||
confirmButtonText: 'Yes, delete this image',
|
|
||||||
declineButtonText: 'No, keep it',
|
|
||||||
confirmByDefault: false
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const modalRef = this.modalService.show(ConfirmationDialogComponent, modalConfig);
|
|
||||||
|
|
||||||
modalRef.content.confirm.pipe(first()).subscribe(() =>
|
|
||||||
{
|
|
||||||
this.toastr.info(`Removing machine "${image.name}"...`);
|
|
||||||
|
|
||||||
this.catalogService.deleteImage(image.id)
|
|
||||||
.subscribe(() =>
|
|
||||||
{
|
|
||||||
const index = this.images.findIndex(i => i.id === image.id);
|
|
||||||
if (index >= 0)
|
|
||||||
this.images.splice(index, 1);
|
|
||||||
|
|
||||||
this.applyFiltersAndSort();
|
|
||||||
|
|
||||||
this.toastr.info(`The image "${image.name}" has been removed`);
|
|
||||||
},
|
|
||||||
err =>
|
|
||||||
{
|
|
||||||
this.toastr.error(`Failed to delete the "${image.name}" image ${err.error.message}`);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------------
|
|
||||||
ngOnInit(): void
|
|
||||||
{
|
|
||||||
this.getCustomImages();
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------------
|
|
||||||
ngOnDestroy()
|
|
||||||
{
|
|
||||||
this.destroy$.next();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
<p>docker-image-editor works!</p>
|
|
@ -1,25 +0,0 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { DockerImageEditorComponent } from './docker-image-editor.component';
|
|
||||||
|
|
||||||
describe('DockerImageEditorComponent', () => {
|
|
||||||
let component: DockerImageEditorComponent;
|
|
||||||
let fixture: ComponentFixture<DockerImageEditorComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ DockerImageEditorComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(DockerImageEditorComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,15 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-docker-image-editor',
|
|
||||||
templateUrl: './docker-image-editor.component.html',
|
|
||||||
styleUrls: ['./docker-image-editor.component.scss']
|
|
||||||
})
|
|
||||||
export class DockerImageEditorComponent implements OnInit {
|
|
||||||
|
|
||||||
constructor() { }
|
|
||||||
|
|
||||||
ngOnInit(): void {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,57 +0,0 @@
|
|||||||
<ngx-datatable [rows]="rows" [headerHeight]="48" [footerHeight]="46" [rowHeight]="40"
|
|
||||||
[scrollbarV]="true" [scrollbarH]="false" [selectionType]="selectionType.checkbox" [columnMode]="columnMode.flex"
|
|
||||||
[loadingIndicator]="loadingIndicator">
|
|
||||||
<ngx-datatable-column [width]="30"
|
|
||||||
[sortable]="false"
|
|
||||||
[canAutoResize]="false"
|
|
||||||
[draggable]="false"
|
|
||||||
[resizeable]="false"
|
|
||||||
[headerCheckboxable]="true"
|
|
||||||
[checkboxable]="true">
|
|
||||||
</ngx-datatable-column>
|
|
||||||
|
|
||||||
<ngx-datatable-column name="Name" [canAutoResize]="true" [flexGrow]="1"></ngx-datatable-column>
|
|
||||||
|
|
||||||
<ngx-datatable-column name="Description" [flexGrow]="2">
|
|
||||||
<ng-template let-value="value" ngx-datatable-cell-template>
|
|
||||||
<div class="text-truncate">{{ value }}</div>
|
|
||||||
</ng-template>
|
|
||||||
</ngx-datatable-column>
|
|
||||||
|
|
||||||
<ngx-datatable-column name="Status" prop="state" [width]="70" [canAutoResize]="false">
|
|
||||||
<ng-template let-value="value" ngx-datatable-cell-template>
|
|
||||||
<span class="badge" [ngClass]="value === 'active' ? 'bg-success' : 'bg-warning text-dark'">{{ value }}</span>
|
|
||||||
</ng-template>
|
|
||||||
</ngx-datatable-column>
|
|
||||||
|
|
||||||
<ngx-datatable-column name="OS" [canAutoResize]="false" [width]="100">
|
|
||||||
<ng-template let-value="value" ngx-datatable-cell-template>
|
|
||||||
<div class="os" [class.smartos]="value === 'smartos'" [class.bsd]="value === 'bsd'"
|
|
||||||
[class.windows]="value === 'windows'" [class.linux]="value === 'linux'">
|
|
||||||
<span>{{ value }}</span>
|
|
||||||
</div>
|
|
||||||
</ng-template>
|
|
||||||
</ngx-datatable-column>
|
|
||||||
|
|
||||||
<ngx-datatable-column name="Type" [width]="120" [canAutoResize]="false"></ngx-datatable-column>
|
|
||||||
|
|
||||||
<ngx-datatable-column name="Publish date" prop="published_at" [width]="100" [canAutoResize]="false">
|
|
||||||
<ng-template let-value="value" ngx-datatable-cell-template>
|
|
||||||
{{ value | date | timeago }}
|
|
||||||
</ng-template>
|
|
||||||
</ngx-datatable-column>
|
|
||||||
|
|
||||||
<!--<ngx-datatable-column name="Tags">
|
|
||||||
<ng-template let-value="value" ngx-datatable-cell-template>
|
|
||||||
<ng-container *ngFor="let tag of value | keyvalue">
|
|
||||||
<span class="badge badge-dark mr-1">{{ tag.key }} <span class="text-primary">{{ tag.value }}</span></span>
|
|
||||||
</ng-container>
|
|
||||||
</ng-template>
|
|
||||||
</ngx-datatable-column>-->
|
|
||||||
|
|
||||||
<ngx-datatable-column [flexGrow]="1" cellClass="text-right" headerClass="text-right" [sortable]="false">
|
|
||||||
<ng-template let-value="value" ngx-datatable-cell-template>
|
|
||||||
<button class="btn btn-sm btn-primary m-1">Instances</button>
|
|
||||||
</ng-template>
|
|
||||||
</ngx-datatable-column>
|
|
||||||
</ngx-datatable>
|
|
@ -1,25 +0,0 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { DockerImagesComponent } from './docker-images.component';
|
|
||||||
|
|
||||||
describe('DockerImagesComponent', () => {
|
|
||||||
let component: DockerImagesComponent;
|
|
||||||
let fixture: ComponentFixture<DockerImagesComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ DockerImagesComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(DockerImagesComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,28 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
import { ColumnMode, SelectionType } from '@swimlane/ngx-datatable';
|
|
||||||
import { CatalogService } from '../helpers/catalog.service';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-docker-images',
|
|
||||||
templateUrl: './docker-images.component.html',
|
|
||||||
styleUrls: ['./docker-images.component.scss']
|
|
||||||
})
|
|
||||||
export class DockerImagesComponent implements OnInit
|
|
||||||
{
|
|
||||||
rows: any[] = [];
|
|
||||||
loadingIndicator = true;
|
|
||||||
selectionType = SelectionType;
|
|
||||||
columnMode = ColumnMode;
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------------
|
|
||||||
constructor(private readonly catalogService: CatalogService)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------------
|
|
||||||
ngOnInit(): void
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
<p>docker-registry-editor works!</p>
|
|
@ -1,25 +0,0 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { DockerRegistryEditorComponent } from './docker-registry-editor.component';
|
|
||||||
|
|
||||||
describe('DockerRegistryEditorComponent', () => {
|
|
||||||
let component: DockerRegistryEditorComponent;
|
|
||||||
let fixture: ComponentFixture<DockerRegistryEditorComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ DockerRegistryEditorComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(DockerRegistryEditorComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,15 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-docker-registry-editor',
|
|
||||||
templateUrl: './docker-registry-editor.component.html',
|
|
||||||
styleUrls: ['./docker-registry-editor.component.scss']
|
|
||||||
})
|
|
||||||
export class DockerRegistryEditorComponent implements OnInit {
|
|
||||||
|
|
||||||
constructor() { }
|
|
||||||
|
|
||||||
ngOnInit(): void {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
<p>docker-registry works!</p>
|
|
@ -1,25 +0,0 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { DockerRegistryComponent } from './docker-registry.component';
|
|
||||||
|
|
||||||
describe('DockerRegistryComponent', () => {
|
|
||||||
let component: DockerRegistryComponent;
|
|
||||||
let fixture: ComponentFixture<DockerRegistryComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ DockerRegistryComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(DockerRegistryComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,15 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-docker-registry',
|
|
||||||
templateUrl: './docker-registry.component.html',
|
|
||||||
styleUrls: ['./docker-registry.component.scss']
|
|
||||||
})
|
|
||||||
export class DockerRegistryComponent implements OnInit {
|
|
||||||
|
|
||||||
constructor() { }
|
|
||||||
|
|
||||||
ngOnInit(): void {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Reference in New Issue
Block a user