diff --git a/src/composer/src/app/app.module.ts b/src/composer/src/app/app.module.ts
index d05a0eb..d4fd593 100644
--- a/src/composer/src/app/app.module.ts
+++ b/src/composer/src/app/app.module.ts
@@ -25,6 +25,7 @@ import { MatTooltipModule } from '@angular/material/tooltip'
import { MatCheckboxModule } from '@angular/material/checkbox'
import { MatMenuModule } from '@angular/material/menu'
import { MatStepperModule } from '@angular/material/stepper'
+import { MatAutocompleteModule } from '@angular/material/autocomplete'
import { RepoSearchComponent, DialogDetails, DialogAddCustom } from './core/components/repo-search/repo-search.component'
import { HeaderComponent } from './core/components/header/header.component'
@@ -124,6 +125,7 @@ export function getHighlightLanguages() {
MatCheckboxModule,
MatMenuModule,
MatStepperModule,
+ MatAutocompleteModule,
DragDropModule,
HighlightModule,
FlexLayoutModule,
diff --git a/src/composer/src/app/core/components/dialogs/manage-project-dialog/manage-project-dialog.component.html b/src/composer/src/app/core/components/dialogs/manage-project-dialog/manage-project-dialog.component.html
index 04fe385..8746030 100644
--- a/src/composer/src/app/core/components/dialogs/manage-project-dialog/manage-project-dialog.component.html
+++ b/src/composer/src/app/core/components/dialogs/manage-project-dialog/manage-project-dialog.component.html
@@ -10,15 +10,12 @@
Tag
-
-
- {{ tag }}
-
-
-
-
-
-
+
+
+
+ {{ tag }}
+
+
diff --git a/src/composer/src/app/core/components/dialogs/manage-project-dialog/manage-project-dialog.component.ts b/src/composer/src/app/core/components/dialogs/manage-project-dialog/manage-project-dialog.component.ts
index 1ead06e..3fdefc8 100644
--- a/src/composer/src/app/core/components/dialogs/manage-project-dialog/manage-project-dialog.component.ts
+++ b/src/composer/src/app/core/components/dialogs/manage-project-dialog/manage-project-dialog.component.ts
@@ -65,7 +65,7 @@ export class ManageProjectDialogComponent implements OnInit, OnDestroy {
) {
this.serviceName = this.data.name
this.formGeneral = this.formBuilder.group({
- image: new FormControl({ value: this.data.image, disabled: true }, Validators.required),
+ image: new FormControl( this.data.image, Validators.required),
name: new FormControl('', [Validators.required, this.serviceNameAlreadyExistsValidator]),
tag: new FormControl('', [Validators.required]),
restart: new FormControl('', [Validators.required]),
@@ -78,6 +78,11 @@ export class ManageProjectDialogComponent implements OnInit, OnDestroy {
networks: new FormControl(),
})
+ this.formGeneral.get('image').valueChanges.pipe(takeUntil(this.unSubscribe$)).subscribe((value)=> {
+ if (!value) this.formGeneral.get('tag').disable()
+ else if (value && this.formGeneral.get('tag').disabled) this.formGeneral.get('tag').enable()
+ })
+
this.project = this.store.select('project')
const sub = this.project.pipe(takeUntil(this.unSubscribe$)).subscribe((v) => {
@@ -152,15 +157,11 @@ export class ManageProjectDialogComponent implements OnInit, OnDestroy {
getTags(): void {
this.isLoading = true
this.rest
- .getRepoTags(this.formGeneral.get('image').value, this.nextTagPage)
+ .getRepoTags(this.formGeneral.get('image').value, this.nextTagPage, this.formGeneral.get('tag').value)
.pipe(takeUntil(this.unSubscribe$))
- .subscribe(({ results, next }) => {
- next ? this.nextTagPage++ : (this.nextTagPage = null)
+ .subscribe(({ results }) => {
- results.forEach(({ name }) => {
- const index = this.tags.findIndex((prevName) => name === prevName)
- index === -1 ? this.tags.push(name) : ''
- })
+ this.tags = results.map(({name}) => name)
this.isLoading = false
})
diff --git a/src/composer/src/app/core/components/repo-search/dialog-add-custom.html b/src/composer/src/app/core/components/repo-search/dialog-add-custom.html
index 6b06bf3..aeb83df 100644
--- a/src/composer/src/app/core/components/repo-search/dialog-add-custom.html
+++ b/src/composer/src/app/core/components/repo-search/dialog-add-custom.html
@@ -9,8 +9,13 @@
Tag
+
+
+ Service name
+
+
-
+
diff --git a/src/composer/src/app/core/components/repo-search/repo-search.component.ts b/src/composer/src/app/core/components/repo-search/repo-search.component.ts
index 9a90dec..92fe07f 100644
--- a/src/composer/src/app/core/components/repo-search/repo-search.component.ts
+++ b/src/composer/src/app/core/components/repo-search/repo-search.component.ts
@@ -94,7 +94,7 @@ export class RepoSearchComponent implements OnInit, OnDestroy {
shm_size: null,
stdin_open: null,
tty: null,
- name: `${data['name']}_${postfix}`,
+ name: data['serviceName'] ? `${data['serviceName']}_${postfix}` : `${data['name']}_${postfix}`,
container_name: null,
deploy: null,
image: imageName,
@@ -250,9 +250,10 @@ export class DialogAddCustom {
@Output() onAddProject = new EventEmitter()
imageName: string
tag: string
+ serviceName: string
constructor(public dialogRef: MatDialogRef) {}
addProject() {
- this.onAddProject.emit({name: this.imageName, tag: this.tag})
+ this.onAddProject.emit({name: this.imageName, tag: this.tag, serviceName: this.serviceName})
}
}
diff --git a/src/composer/src/app/core/services/rest.service.ts b/src/composer/src/app/core/services/rest.service.ts
index fba4994..c6d1c28 100644
--- a/src/composer/src/app/core/services/rest.service.ts
+++ b/src/composer/src/app/core/services/rest.service.ts
@@ -38,8 +38,8 @@ export class RestService {
return this.http.get(`${baseDetailUrl}/?r=${repoName}`, httpOptions).pipe(map(this.extractData))
}
- getRepoTags(repoName: string, pageNumber: number): Observable {
- return this.http.get(`${baseTagsUrl}/?r=${repoName}&page=${pageNumber}`, httpOptions).pipe(map(this.extractData))
+ getRepoTags(repoName: string, pageNumber: number, searchSubStr: string): Observable {
+ return this.http.get(`${baseTagsUrl}/?r=${repoName}&s=${searchSubStr}&page=${pageNumber}`, httpOptions).pipe(map(this.extractData))
}
generateCode(data: object): Observable {