diff options
Diffstat (limited to 'src/pybind/mgr/dashboard/frontend/src/app/shared/services/url-builder.service.ts')
-rw-r--r-- | src/pybind/mgr/dashboard/frontend/src/app/shared/services/url-builder.service.ts | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/url-builder.service.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/url-builder.service.ts new file mode 100644 index 000000000..b06f307ad --- /dev/null +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/url-builder.service.ts @@ -0,0 +1,50 @@ +import { Location } from '@angular/common'; + +import { URLVerbs } from '../constants/app.constants'; + +export class URLBuilderService { + constructor(readonly base: string) {} + + private static concatURLSegments(segments: string[]): string { + return segments.reduce(Location.joinWithSlash); + } + + static buildURL(absolute: boolean, ...segments: string[]): string { + return URLBuilderService.concatURLSegments([...(absolute ? ['/'] : []), ...segments]); + } + + private getURL(verb: URLVerbs, absolute = true, ...segments: string[]): string { + return URLBuilderService.buildURL(absolute, this.base, verb, ...segments); + } + + getCreate(absolute = true): string { + return this.getURL(URLVerbs.CREATE, absolute); + } + + getCreateFrom(item: string, absolute = true): string { + return this.getURL(URLVerbs.CREATE, absolute, item); + } + + getDelete(absolute = true): string { + return this.getURL(URLVerbs.DELETE, absolute); + } + + getEdit(item: string, absolute = true): string { + return this.getURL(URLVerbs.EDIT, absolute, item); + } + getUpdate(item: string, absolute = true): string { + return this.getURL(URLVerbs.UPDATE, absolute, item); + } + + getAdd(absolute = true): string { + return this.getURL(URLVerbs.ADD, absolute); + } + getRemove(absolute = true): string { + return this.getURL(URLVerbs.REMOVE, absolute); + } + + // Prometheus wording + getRecreate(item: string, absolute = true): string { + return this.getURL(URLVerbs.RECREATE, absolute, item); + } +} |