diff --git a/app/.vs/VSWorkspaceState.json b/app/.vs/VSWorkspaceState.json
new file mode 100644
index 0000000..c303fc1
--- /dev/null
+++ b/app/.vs/VSWorkspaceState.json
@@ -0,0 +1,16 @@
+{
+ "ExpandedNodes": [
+ "",
+ "\\src",
+ "\\src\\app",
+ "\\src\\app\\instances",
+ "\\src\\app\\instances\\instance-info",
+ "\\src\\app\\instances\\instance-networks",
+ "\\src\\app\\instances\\instance-security",
+ "\\src\\app\\networking",
+ "\\src\\app\\networking\\helpers",
+ "\\src\\app\\networking\\virtual-network-editor"
+ ],
+ "SelectedNode": "\\src\\app\\networking\\networks\\networks.component.ts",
+ "PreviewInSolutionExplorer": false
+}
\ No newline at end of file
diff --git a/app/.vs/app/config/applicationhost.config b/app/.vs/app/config/applicationhost.config
new file mode 100644
index 0000000..269dc55
--- /dev/null
+++ b/app/.vs/app/config/applicationhost.config
@@ -0,0 +1,1021 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/.vs/app/v16/.suo b/app/.vs/app/v16/.suo
new file mode 100644
index 0000000..f228265
Binary files /dev/null and b/app/.vs/app/v16/.suo differ
diff --git a/app/.vs/slnx.sqlite b/app/.vs/slnx.sqlite
new file mode 100644
index 0000000..e976b9e
Binary files /dev/null and b/app/.vs/slnx.sqlite differ
diff --git a/app/src/app/catalog/images/images.component.html b/app/src/app/catalog/images/images.component.html
index 6b26370..6455333 100644
--- a/app/src/app/catalog/images/images.component.html
+++ b/app/src/app/catalog/images/images.component.html
@@ -82,7 +82,6 @@
Type |
Brand |
Publish date |
- Status |
|
@@ -101,14 +100,11 @@
{{ image.type }}
- {{ image.requirements.brand }}
+ {{ image.requirements.brand }}
|
{{ image.published_at ? (image.published_at | timeago) : '' }}
|
-
- {{ image.state }}
- |
-
@@ -47,7 +47,10 @@
Close without saving
- Save changes
+
+
+ Save changes
+
diff --git a/app/src/app/instances/instance-tag-editor/instance-tag-editor.component.ts b/app/src/app/instances/instance-tag-editor/instance-tag-editor.component.ts
index 9d1e504..7df05c4 100644
--- a/app/src/app/instances/instance-tag-editor/instance-tag-editor.component.ts
+++ b/app/src/app/instances/instance-tag-editor/instance-tag-editor.component.ts
@@ -6,6 +6,7 @@ import { Subject } from 'rxjs';
import { filter, takeUntil } from 'rxjs/operators';
import { InstancesService } from '../helpers/instances.service';
import { ToastrService } from 'ngx-toastr';
+import { Instance } from '../models/instance';
@Component({
selector: 'app-instance-tag-editor',
@@ -15,7 +16,7 @@ import { ToastrService } from 'ngx-toastr';
export class InstanceTagEditorComponent implements OnInit
{
@Input()
- instance: any;
+ instance: Instance;
@Input()
showMetadata: boolean;
@@ -48,14 +49,20 @@ export class InstanceTagEditorComponent implements OnInit
private createForm()
{
const items = this.fb.array(this.showMetadata
- ? Object.keys(this.instance.metadata).map(key => this.fb.group({ key, value: this.instance.metadata[key] }))
- : Object.keys(this.instance.tags).map(key => this.fb.group({ key, value: this.instance.tags[key] }))
+ ? Object.keys(this.instance.metadata).map(key => this.fb.group({
+ key: [key, Validators.required],
+ value: [this.instance.metadata[key], Validators.required]
+ }))
+ : Object.keys(this.instance.tags).map(key => this.fb.group({
+ key: [key, Validators.required],
+ value: [this.instance.tags[key], Validators.required]
+ }))
);
this.editorForm = this.fb.group({
items,
- key: [null, Validators.required],
- value: [null, Validators.required]
+ key: [null],
+ value: [null]
});
}
@@ -91,13 +98,14 @@ export class InstanceTagEditorComponent implements OnInit
// ----------------------------------------------------------------------------------------------------------------
close()
{
- this.save.next();
this.modalRef.hide();
}
// ----------------------------------------------------------------------------------------------------------------
saveChanges()
{
+ this.working = true;
+
const items = this.editorForm.getRawValue().items.reduce((map, item) =>
{
map[item.key] = item.value;
@@ -110,17 +118,21 @@ export class InstanceTagEditorComponent implements OnInit
observable.subscribe(response =>
{
+ this.working = false;
this.save.next(response);
this.modalRef.hide();
}, err =>
{
this.toastr.error(err.error.message);
+ this.working = false;
});
}
// ----------------------------------------------------------------------------------------------------------------
ngOnInit(): void
{
+ //this.instancesService.getTags(this.instance.id).subscribe();
+
this.createForm();
}
}
diff --git a/app/src/app/instances/instance-wizard/instance-wizard.component.html b/app/src/app/instances/instance-wizard/instance-wizard.component.html
index 17c34c1..23bbe56 100644
--- a/app/src/app/instances/instance-wizard/instance-wizard.component.html
+++ b/app/src/app/instances/instance-wizard/instance-wizard.component.html
@@ -110,7 +110,7 @@
|
-
+
- {{ networks[network] || network }}
|
+
+
+ {{ tag.key }}:{{ tag.value }}
+
+ |
@@ -94,8 +100,9 @@
-
+
+
|
diff --git a/app/src/app/volumes/volumes.component.scss b/app/src/app/volumes/volumes.component.scss
index a8643f8..a460431 100644
--- a/app/src/app/volumes/volumes.component.scss
+++ b/app/src/app/volumes/volumes.component.scss
@@ -1,3 +1,5 @@
+@import "../../styles/_variables.scss";
+
:host
{
flex-grow: 1;
@@ -39,7 +41,7 @@
&:before
{
content: attr(text);
- color: #3d5e8e;
+ color: $table-header-color;
}
}
diff --git a/app/src/assets/i18n/dashboard/en.json b/app/src/assets/i18n/dashboard/en.json
index f361a44..1040a5c 100644
--- a/app/src/assets/i18n/dashboard/en.json
+++ b/app/src/assets/i18n/dashboard/en.json
@@ -78,7 +78,8 @@
"deleting": "Removing the \"{machineName}\" machine...",
"deleted": "The \"{machineName}\" machine has been removed",
"deletingFailed": "Failed to delete the \"{machineName}\" machine",
- "loadingFailed": "Failed to load additional details for the \"{machineName}\" machine"
+ "loadingFailed": "Failed to load additional details for the \"{machineName}\" machine",
+ "gone": "The machine \"{machineName}\" has been removed"
}
},
"infoTab":
diff --git a/app/src/styles/_modal.scss b/app/src/styles/_modal.scss
index 3aa4b07..5c68da9 100644
--- a/app/src/styles/_modal.scss
+++ b/app/src/styles/_modal.scss
@@ -1,3 +1,5 @@
+@import "_variables.scss";
+
.modal
{
backdrop-filter: blur(6px);
@@ -28,7 +30,7 @@
h4
{
- color: #3d5e8e;
+ color: $table-header-color;
font-family: "Bebas Neue", sans-serif;
}
}
@@ -54,5 +56,5 @@
border: none;
background: none;
font-size: 2rem;
- color: #3d5e8e;
-}
\ No newline at end of file
+ color: $table-header-color;
+}
diff --git a/app/src/styles/_variables.scss b/app/src/styles/_variables.scss
index 9354a37..a4db783 100644
--- a/app/src/styles/_variables.scss
+++ b/app/src/styles/_variables.scss
@@ -9,3 +9,5 @@ $success: #2AAA65;
$success-color: #0bb13b;
$danger-color: #ff384b;
+$table-header-color: #3d5e8e;
+$table-body-color: #7dbbf1;
diff --git a/app/src/styles/styles.scss b/app/src/styles/styles.scss
index beebda1..223ff85 100644
--- a/app/src/styles/styles.scss
+++ b/app/src/styles/styles.scss
@@ -14,7 +14,7 @@ html, body
body
{
background-color: #090b17;
- color: #3d5e8e;
+ color: $table-header-color;
font-family: 'Mukta', sans-serif;
line-height: 1;
-webkit-font-smoothing: antialiased;
@@ -46,6 +46,7 @@ body, div, virtual-scroller
.tooltip-wrap .tooltip-inner
{
white-space: pre-line;
+ width: 400px;
}
.navbar-nav .nav-link
@@ -477,19 +478,18 @@ accordion
{
font-family: "Bebas Neue", sans-serif;
font-size: 1.2rem;
- color: #A3A4B8;
+ color: $table-header-color;
}
tbody
{
- color: #7dbbf1;
+ color: $table-body-color;
}
th
{
background-color: rgba(16, 21, 39, 0.75);
padding: 1rem .5rem 1rem .75rem;
- color: #3d5e8e;
border-bottom-color: transparent;
}
@@ -498,13 +498,12 @@ accordion
border-style: none;
vertical-align: middle;
padding-left: .75rem;
- color: #8881ff;
}
- &.table-hove tr:hover td
+ &.table-hover tr:hover td
{
- background-color: rgba(0, 0, 0, .5);
- color: #FFF;
+ background-color: rgba(0, 0, 0, .25);
+ color: $table-body-color;
}
}
@@ -550,4 +549,13 @@ accordion
margin-bottom: .25rem;
display: inline-block;
text-transform: none;
-}
\ No newline at end of file
+}
+
+.badge-discreet
+{
+ color: lighten($table-header-color, 15);
+ border: 1px solid;
+ text-transform: none;
+ vertical-align: middle;
+ margin-left: .125rem;
+}