diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index d21da2f..9e18076 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -6,6 +6,7 @@ import { PortfolioComponent } from './portfolio/portfolio.component'
import { DetailComponent } from './detail/detail.component'
import { HomeComponent } from './home/home.component'
import { AdminComponent } from './admin/admin.component'
+import { SitemapComponent } from './sitemap/sitemap.component'
const routes: Routes = [
{
@@ -32,7 +33,8 @@ const routes: Routes = [
},
{ path: 'admin', component: AdminComponent }
]
- }
+ },
+ { path: 'sitemap', component: SitemapComponent }
]
@NgModule({
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index e9ca59f..4ee3054 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -16,6 +16,7 @@ import { DetailComponent } from './detail/detail.component';
import { AdminComponent } from './admin/admin.component';
import { HomeComponent } from './home/home.component';
import { SpinnerComponent } from './spinner/spinner.component';
+import { SitemapComponent } from './sitemap/sitemap.component';
@NgModule({
declarations: [
@@ -27,7 +28,8 @@ import { SpinnerComponent } from './spinner/spinner.component';
DetailComponent,
AdminComponent,
HomeComponent,
- SpinnerComponent
+ SpinnerComponent,
+ SitemapComponent
],
imports: [
BrowserModule,
diff --git a/src/app/sitemap/sitemap.component.html b/src/app/sitemap/sitemap.component.html
new file mode 100644
index 0000000..9c39da7
--- /dev/null
+++ b/src/app/sitemap/sitemap.component.html
@@ -0,0 +1,2 @@
+
+{{sitemap}}
diff --git a/src/app/sitemap/sitemap.component.scss b/src/app/sitemap/sitemap.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/sitemap/sitemap.component.spec.ts b/src/app/sitemap/sitemap.component.spec.ts
new file mode 100644
index 0000000..0278236
--- /dev/null
+++ b/src/app/sitemap/sitemap.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { SitemapComponent } from './sitemap.component';
+
+describe('SitemapComponent', () => {
+ let component: SitemapComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ SitemapComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(SitemapComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/sitemap/sitemap.component.ts b/src/app/sitemap/sitemap.component.ts
new file mode 100644
index 0000000..a5ffe90
--- /dev/null
+++ b/src/app/sitemap/sitemap.component.ts
@@ -0,0 +1,73 @@
+import { Component, OnInit } from '@angular/core'
+import { Router, NavigationEnd } from '@angular/router'
+import { ApisService } from '../services/apis.service'
+import { environment } from '../../environments/environment'
+
+@Component({
+ selector: 'app-sitemap',
+ templateUrl: './sitemap.component.html',
+ styleUrls: ['./sitemap.component.scss']
+})
+export class SitemapComponent implements OnInit {
+
+ public basePath = `${environment.BASE_PATH}`
+ public sitemap: string = ''
+
+ constructor(
+ private apisService: ApisService,
+ private router: Router
+ ) { }
+
+ ngOnInit(): void {
+
+ const sections = [
+ 'about',
+ 'portfolio',
+ 'exhibitions',
+ 'installations',
+ 'entertainment',
+ 'performances',
+ 'worhshops'
+ ]
+
+ sections.forEach((e) => {
+ this.sitemap += `${this.basePath}/${e}\n`
+ })
+
+ this.apisService.getPortfolio('portfolio').toPromise().then((response) => {
+ response.items.forEach((e) => {
+ this.sitemap += `${this.basePath}/detail/${e.type}/${e.id}/${this.parseTitle(e.title)}\n`
+ })
+
+ this.apisService.getPortfolio('exhibitions').toPromise().then((response) => {
+ response.items.forEach((e) => {
+ this.sitemap += `${this.basePath}/detail/exhibitions/${e.id}/${this.parseTitle(e.title)}\n`
+ })
+
+ this.download()
+
+ },(error) => {
+ console.error(error)
+ }).catch((e) => {
+ console.error(e)
+ })
+
+ },(error) => {
+ console.error(error)
+ }).catch((e) => {
+ console.error(e)
+ })
+ }
+
+ parseTitle(title): string {
+ return title.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-').replace('--', '-').replace('--', '-')
+ }
+
+ download() {
+ const header = '\n\n'
+ const footer = '\n'
+ const blob = new Blob([`${header}${this.sitemap}${footer}`], { type: 'text/xml' })
+ const url= window.URL.createObjectURL(blob)
+ window.location.assign(url)
+ }
+}