]>
Commit | Line | Data |
---|---|---|
f6b5b4d7 TL |
1 | import { Injectable } from '@angular/core'; |
2 | ||
3 | import { BehaviorSubject, Subscription } from 'rxjs'; | |
4 | import { filter, first, map } from 'rxjs/operators'; | |
5 | ||
6 | import { CephReleaseNamePipe } from '../pipes/ceph-release-name.pipe'; | |
7 | import { SummaryService } from './summary.service'; | |
8 | ||
9 | @Injectable({ | |
10 | providedIn: 'root' | |
11 | }) | |
12 | export class DocService { | |
13 | private releaseDataSource = new BehaviorSubject<string>(null); | |
14 | releaseData$ = this.releaseDataSource.asObservable(); | |
15 | ||
16 | constructor( | |
17 | private summaryservice: SummaryService, | |
18 | private cephReleaseNamePipe: CephReleaseNamePipe | |
19 | ) { | |
20 | this.summaryservice.subscribeOnce((summary) => { | |
21 | const releaseName = this.cephReleaseNamePipe.transform(summary.version); | |
22 | this.releaseDataSource.next(releaseName); | |
23 | }); | |
24 | } | |
25 | ||
1e59de90 TL |
26 | urlGenerator(section: string, release = 'main'): string { |
27 | const docVersion = release === 'main' ? 'latest' : release; | |
f67539c2 | 28 | const domain = `https://docs.ceph.com/en/${docVersion}/`; |
1e59de90 TL |
29 | const domainCeph = `https://ceph.io`; |
30 | const domainCephOld = `https://old.ceph.com`; | |
f6b5b4d7 TL |
31 | |
32 | const sections = { | |
33 | iscsi: `${domain}mgr/dashboard/#enabling-iscsi-management`, | |
34 | prometheus: `${domain}mgr/dashboard/#enabling-prometheus-alerting`, | |
35 | 'nfs-ganesha': `${domain}mgr/dashboard/#configuring-nfs-ganesha-in-the-dashboard`, | |
36 | 'rgw-nfs': `${domain}radosgw/nfs`, | |
37 | rgw: `${domain}mgr/dashboard/#enabling-the-object-gateway-management-frontend`, | |
aee94f69 TL |
38 | 'rgw-multisite': `${domain}/radosgw/multisite/#failover-and-disaster-recovery`, |
39 | multisite: `${domain}/radosgw/multisite`, | |
f6b5b4d7 TL |
40 | dashboard: `${domain}mgr/dashboard`, |
41 | grafana: `${domain}mgr/dashboard/#enabling-the-embedding-of-grafana-dashboards`, | |
42 | orch: `${domain}mgr/orchestrator`, | |
1e59de90 TL |
43 | pgs: `${domainCephOld}/pgcalc`, |
44 | help: `${domainCeph}/en/users/`, | |
45 | security: `${domainCeph}/en/security/`, | |
46 | trademarks: `${domainCeph}/en/trademarks/`, | |
f67539c2 TL |
47 | 'dashboard-landing-page-status': `${domain}mgr/dashboard/#dashboard-landing-page-status`, |
48 | 'dashboard-landing-page-performance': `${domain}mgr/dashboard/#dashboard-landing-page-performance`, | |
49 | 'dashboard-landing-page-capacity': `${domain}mgr/dashboard/#dashboard-landing-page-capacity` | |
f6b5b4d7 TL |
50 | }; |
51 | ||
52 | return sections[section]; | |
53 | } | |
54 | ||
55 | subscribeOnce( | |
56 | section: string, | |
57 | next: (release: string) => void, | |
58 | error?: (error: any) => void | |
59 | ): Subscription { | |
60 | return this.releaseData$ | |
61 | .pipe( | |
62 | filter((value) => !!value), | |
f67539c2 | 63 | map((release) => this.urlGenerator(section, release)), |
f6b5b4d7 TL |
64 | first() |
65 | ) | |
66 | .subscribe(next, error); | |
67 | } | |
68 | } |