diff --git a/projects/discussion-ui/src/lib/common/constants.json b/projects/discussion-ui/src/lib/common/constants.json
index bf01e7e5..722fe6ea 100644
--- a/projects/discussion-ui/src/lib/common/constants.json
+++ b/projects/discussion-ui/src/lib/common/constants.json
@@ -588,5 +588,24 @@
"TOPIC": "/discussion-forum/topic/",
"DISCUSSION": "/discussion-forum/",
"CATEGORY": "/discussion-forum/category/"
- }
+ },
+ "MENUOPTIONS":[
+ {
+ "route": "All discussions",
+ "enable": true
+ },
+ {
+ "route": "categories",
+ "enable": true
+ },
+ {
+ "route": "tags",
+ "enable": true
+ },
+ {
+ "route": "my-discussion",
+ "enable": true
+ }
+
+ ]
}
\ No newline at end of file
diff --git a/projects/discussion-ui/src/lib/components/discuss-category/discuss-category.component.ts b/projects/discussion-ui/src/lib/components/discuss-category/discuss-category.component.ts
index 7ca42e16..a38b9e61 100644
--- a/projects/discussion-ui/src/lib/components/discuss-category/discuss-category.component.ts
+++ b/projects/discussion-ui/src/lib/components/discuss-category/discuss-category.component.ts
@@ -8,6 +8,7 @@ import { TelemetryUtilsService } from './../../telemetry-utils.service';
import * as CONSTANTS from './../../common/constants.json';
/* tslint:disable */
import * as _ from 'lodash'
+import { ConfigService } from '../../services/config.service';
/* tslint:enable */
@Component({
@@ -36,6 +37,7 @@ export class DiscussCategoryComponent implements OnInit, OnDestroy {
constructor(
public discussService: DiscussionService,
+ public configService: ConfigService,
public router: Router,
public activatedRoute: ActivatedRoute,
private telemetryUtils: TelemetryUtilsService
@@ -90,14 +92,15 @@ export class DiscussCategoryComponent implements OnInit, OnDestroy {
this.isTopicCreator = _.get(response, 'privileges.topics:create') === true ? true : false;
this.showStartDiscussionModal = false;
if (_.get(response, 'children').length > 0) {
- this.router.navigate([], { relativeTo: this.activatedRoute.parent, queryParams: { cid: this.categoryId } });
+ this.router.navigate([], { relativeTo: this.activatedRoute.parent, queryParams: { cid: this.categoryId }, queryParamsHandling: "merge" });
this.categories = [];
_.get(response, 'children').forEach(subCategoryData => {
this.categories.push(subCategoryData);
});
} else {
this.discussService.setContext(CONTEXT_PROPS.cid, this.categoryId);
- this.router.navigate([`${CONSTANTS.ROUTES.CATEGORY}`, `${this.categoryId}`]);
+ let routerSlug = this.configService.getConfig().routerSlug ? this.configService.getConfig().routerSlug : ''
+ this.router.navigate([`${routerSlug}${CONSTANTS.ROUTES.CATEGORY}`, `${this.categoryId}`], {queryParamsHandling: "merge"});
}
}, error => {
this.showLoader = false;
diff --git a/projects/discussion-ui/src/lib/components/discuss-home/discuss-home.component.ts b/projects/discussion-ui/src/lib/components/discuss-home/discuss-home.component.ts
index 5eb6dd09..ae31a0d0 100644
--- a/projects/discussion-ui/src/lib/components/discuss-home/discuss-home.component.ts
+++ b/projects/discussion-ui/src/lib/components/discuss-home/discuss-home.component.ts
@@ -7,6 +7,7 @@ import * as CONSTANTS from './../../common/constants.json';
/* tslint:disable */
import * as _ from 'lodash'
import { NSDiscussData } from '../../models/discuss.model';
+import { ConfigService } from '../../services/config.service';
/* tslint:enable */
@Component({
@@ -27,7 +28,8 @@ export class DiscussHomeComponent implements OnInit {
public router: Router,
private route: ActivatedRoute,
private discussionService: DiscussionService,
- private telemetryUtils: TelemetryUtilsService) {}
+ private configService: ConfigService,
+ private telemetryUtils: TelemetryUtilsService) { }
ngOnInit() {
this.telemetryUtils.logImpression(NSDiscussData.IPageName.HOME);
@@ -48,7 +50,8 @@ export class DiscussHomeComponent implements OnInit {
id: _.get(discussionData, 'tid'),
type: 'Topic'
});
- this.router.navigate([`${CONSTANTS.ROUTES.TOPIC}${_.trim(_.get(discussionData, 'slug'))}`]);
+ let routerSlug = this.configService.getConfig().routerSlug ? this.configService.getConfig().routerSlug : ''
+ this.router.navigate([`${routerSlug}${CONSTANTS.ROUTES.TOPIC}${_.trim(_.get(discussionData, 'slug'))}`], {queryParamsHandling: "merge"});
}
getDiscussionList(slug: string) {
diff --git a/projects/discussion-ui/src/lib/components/discuss-tags/discuss-tags.component.ts b/projects/discussion-ui/src/lib/components/discuss-tags/discuss-tags.component.ts
index e1bf0029..831d495d 100644
--- a/projects/discussion-ui/src/lib/components/discuss-tags/discuss-tags.component.ts
+++ b/projects/discussion-ui/src/lib/components/discuss-tags/discuss-tags.component.ts
@@ -33,9 +33,9 @@ export class DiscussTagsComponent implements OnInit {
ngOnInit() {
this.telemetryUtils.setContext([]);
this.telemetryUtils.logImpression(NSDiscussData.IPageName.TAGS);
- this.configService.setConfig()
+ // this.configService.setConfig(this.activatedRoute)
this.getParams = this.configService.getConfig()
- this.cIds = JSON.parse(_.get(this.getParams, 'categories'))
+ this.cIds = _.get(this.getParams, 'categories')
console.log(this.getParams, this.cIds)
this.fetchAllTags();
diff --git a/projects/discussion-ui/src/lib/components/discussion-details/discussion-details.component.ts b/projects/discussion-ui/src/lib/components/discussion-details/discussion-details.component.ts
index 01835ee7..8d4165d5 100644
--- a/projects/discussion-ui/src/lib/components/discussion-details/discussion-details.component.ts
+++ b/projects/discussion-ui/src/lib/components/discussion-details/discussion-details.component.ts
@@ -8,6 +8,7 @@ import * as CONSTANTS from '../../common/constants.json';
/* tslint:disable */
import * as _ from 'lodash'
import { Subscription } from 'rxjs';
+import { ConfigService } from '../../services/config.service';
/* tslint:enable */
@@ -41,6 +42,7 @@ export class DiscussionDetailsComponent implements OnInit, OnDestroy {
constructor(
private route: ActivatedRoute,
private discussionService: DiscussionService,
+ private configService: ConfigService,
private formBuilder: FormBuilder,
public router: Router,
private telemetryUtils: TelemetryUtilsService,
@@ -253,7 +255,8 @@ export class DiscussionDetailsComponent implements OnInit, OnDestroy {
navigateWithPage(page: any) {
if (page !== this.currentActivePage) {
- this.router.navigate([`${CONSTANTS.ROUTES.CATEGORY} ${this.topicId}`], { queryParams: { page } });
+ let routerSlug = this.configService.getConfig().routerSlug ? this.configService.getConfig().routerSlug : ''
+ this.router.navigate([`${routerSlug}${CONSTANTS.ROUTES.CATEGORY} ${this.topicId}`], { queryParams: { page }, queryParamsHandling: "merge" });
}
}
diff --git a/projects/discussion-ui/src/lib/components/lib-entry/lib-entry.component.ts b/projects/discussion-ui/src/lib/components/lib-entry/lib-entry.component.ts
index 20c1d009..ffc366bc 100644
--- a/projects/discussion-ui/src/lib/components/lib-entry/lib-entry.component.ts
+++ b/projects/discussion-ui/src/lib/components/lib-entry/lib-entry.component.ts
@@ -5,21 +5,45 @@ import { Location } from '@angular/common';
/* tslint:disable */
import * as _ from 'lodash'
+import { IdiscussionConfig } from '../../models/discussion-config.model';
+import { ConfigService } from '../../services/config.service';
+import { OnDestroy } from '@angular/core';
/* tslint:enable */
@Component({
selector: 'lib-lib-entry',
templateUrl: './lib-entry.component.html',
styleUrls: ['./lib-entry.component.scss']
})
-export class LibEntryComponent implements OnInit {
+export class LibEntryComponent implements OnInit, OnDestroy {
+ data: IdiscussionConfig;
+ config: any;
+ pageKey: string;
constructor(
public activatedRoute: ActivatedRoute,
private discussionService: DiscussionService,
+ private configService: ConfigService,
private location: Location
) { }
- ngOnInit() { }
+ ngOnInit() {
+
+ this.activatedRoute.queryParams.subscribe((params) => {
+ this.pageKey = _.get(params, 'page')
+ this.config = localStorage.getItem(_.get(params, 'page'))
+ this.configService.setConfig(JSON.parse(this.config))
+
+ this.data = this.configService.getConfig();
+ this.discussionService.userName = _.get(this.data, 'userName');
+ const rawCategories = _.get(this.data, 'categories');
+ this.discussionService.forumIds = _.get(rawCategories, 'result');
+ this.discussionService.initializeUserDetails(this.data.userName);
+ });
+ }
+
+ ngOnDestroy() {
+ localStorage.removeItem(this.pageKey)
+ }
goBack() {
this.location.back();
diff --git a/projects/discussion-ui/src/lib/components/my-discussion/my-discussion.component.html b/projects/discussion-ui/src/lib/components/my-discussion/my-discussion.component.html
index 17ccc940..458c4b7a 100644
--- a/projects/discussion-ui/src/lib/components/my-discussion/my-discussion.component.html
+++ b/projects/discussion-ui/src/lib/components/my-discussion/my-discussion.component.html
@@ -26,7 +26,7 @@
-
+
diff --git a/projects/discussion-ui/src/lib/components/my-discussion/my-discussion.component.ts b/projects/discussion-ui/src/lib/components/my-discussion/my-discussion.component.ts
index 39162d8a..fa98e2bc 100644
--- a/projects/discussion-ui/src/lib/components/my-discussion/my-discussion.component.ts
+++ b/projects/discussion-ui/src/lib/components/my-discussion/my-discussion.component.ts
@@ -6,6 +6,7 @@ import { Router } from '@angular/router';
import * as CONSTANTS from '../../common/constants.json';
/* tslint:disable */
import * as _ from 'lodash'
+import { ConfigService } from '../../services/config.service';
/* tslint:enable */
@Component({
@@ -25,8 +26,9 @@ export class MyDiscussionComponent implements OnInit {
showLoader = false;
constructor(
private discussService: DiscussionService,
+ private configService: ConfigService,
public router: Router,
- private telemetryUtils: TelemetryUtilsService) {}
+ private telemetryUtils: TelemetryUtilsService) { }
/** To fetch user details */
fetchUserProfile(userName) {
@@ -52,8 +54,8 @@ export class MyDiscussionComponent implements OnInit {
ngOnInit() {
this.telemetryUtils.setContext([]);
this.telemetryUtils.logImpression(NSDiscussData.IPageName.MY_DISCUSSION);
- if (localStorage.getItem('userName')) {
- this.fetchUserProfile(localStorage.getItem('userName'));
+ if (this.discussService.userName) {
+ this.fetchUserProfile(this.discussService.userName);
}
}
@@ -131,7 +133,8 @@ export class MyDiscussionComponent implements OnInit {
navigateToDiscussionDetails(discussionData) {
console.log('discussionData', discussionData);
- this.router.navigate([`${CONSTANTS.ROUTES.TOPIC}${_.get(discussionData, 'topic.slug')}`]);
+ let routerSlug = this.configService.getConfig().routerSlug ? this.configService.getConfig().routerSlug : ''
+ this.router.navigate([`${routerSlug}${CONSTANTS.ROUTES.TOPIC}${_.get(discussionData, 'topic.slug')}`], {queryParamsHandling: "merge"});
}
logTelemetry(event) {
diff --git a/projects/discussion-ui/src/lib/components/side-pannel/side-pannel.component.html b/projects/discussion-ui/src/lib/components/side-pannel/side-pannel.component.html
index 5b4dca78..5d30f4a1 100644
--- a/projects/discussion-ui/src/lib/components/side-pannel/side-pannel.component.html
+++ b/projects/discussion-ui/src/lib/components/side-pannel/side-pannel.component.html
@@ -1,8 +1,7 @@
diff --git a/projects/discussion-ui/src/lib/components/side-pannel/side-pannel.component.ts b/projects/discussion-ui/src/lib/components/side-pannel/side-pannel.component.ts
index 5c2a99b2..4470ad1b 100644
--- a/projects/discussion-ui/src/lib/components/side-pannel/side-pannel.component.ts
+++ b/projects/discussion-ui/src/lib/components/side-pannel/side-pannel.component.ts
@@ -9,6 +9,8 @@ import * as CONSTANTS from './../../common/constants.json';
/* tslint:disable */
import * as _ from 'lodash'
import { first } from 'rxjs/operators';
+import { ConfigService } from '../../services/config.service';
+import { IdiscussionConfig, IMenuOptions } from '../../models/discussion-config.model';
/* tslint:enable */
@Component({
@@ -24,9 +26,9 @@ export class SidePannelComponent implements OnInit, OnDestroy {
defaultPage = 'categories';
- queryParams: any;
+ data: IdiscussionConfig;
hideSidePanel: boolean;
-
+ menu: Array = [];
selectedTab: string;
showSideMenu: Boolean = true;
@@ -35,27 +37,34 @@ export class SidePannelComponent implements OnInit, OnDestroy {
public discussService: DiscussionService,
public activatedRoute: ActivatedRoute,
private telemetryUtils: TelemetryUtilsService,
+ private configService: ConfigService
) { }
ngOnInit() {
// TODO: loader or spinner
this.hideSidePanel = document.body.classList.contains('widget');
this.telemetryUtils.logImpression(NSDiscussData.IPageName.HOME);
- this.paramsSubscription = this.activatedRoute.queryParams.pipe(first()).subscribe((params) => {
- console.log('params', params);
- this.queryParams = params;
- this.discussService.userName = _.get(params, 'userName');
- const rawCategories = JSON.parse(_.get(params, 'categories'));
- this.discussService.forumIds = _.get(rawCategories , 'result');
- });
- localStorage.setItem('userName', _.get(this.queryParams, 'userName'));
- this.discussService.initializeUserDetails(localStorage.getItem('userName'));
- if (this.discussService.forumIds) {
- this.navigate(this.defaultPage);
- } else {
- // TODO: Error toast
- console.log('forum ids not found');
+ this.data = this.configService.getConfig()
+ let menuArr = this.data.menuOptions && this.data.menuOptions.length > 0 ? this.data.menuOptions : CONSTANTS.MENUOPTIONS
+ // })
+ for (let i = 0; i < menuArr.length; i++) {
+ if (menuArr[i].enable) {
+ this.menu.push(menuArr[i])
+ }
+ }
+
+ }
+
+ isActive(selectedItem) {
+ if (this.router.url.indexOf(`/${selectedItem}`) > -1 || this.selectedTab === selectedItem) {
+ if (!this.selectedTab) {
+ this.selectedTab = selectedItem
+ }
+ return true
+ } else if (selectedItem === 'categories' && !this.selectedTab) {
+ return true
}
+ return false
}
navigate(pageName: string, event?) {
@@ -64,7 +73,7 @@ export class SidePannelComponent implements OnInit, OnDestroy {
if (event) {
this.telemetryUtils.logInteract(event, NSDiscussData.IPageName.HOME);
}
- this.router.navigate([`${CONSTANTS.ROUTES.DISCUSSION}${pageName}`], { queryParams: this.queryParams });
+ this.router.navigate([`${pageName}`], { relativeTo: this.activatedRoute, queryParamsHandling: "merge" });
}
ngOnDestroy() {
@@ -75,10 +84,10 @@ export class SidePannelComponent implements OnInit, OnDestroy {
showMenuButton() {
this.showSideMenu = this.showSideMenu ? false : true;
- }
+ }
+
+ closeNav() {
+ this.showSideMenu = this.showSideMenu ? false : true;
+ }
- closeNav(){
- this.showSideMenu = this.showSideMenu ? false : true;
- }
-
}
diff --git a/projects/discussion-ui/src/lib/discussion-routing/discussion-routing.module.ts b/projects/discussion-ui/src/lib/discussion-routing/discussion-routing.module.ts
index dc213b45..634d2199 100644
--- a/projects/discussion-ui/src/lib/discussion-routing/discussion-routing.module.ts
+++ b/projects/discussion-ui/src/lib/discussion-routing/discussion-routing.module.ts
@@ -17,6 +17,11 @@ const routes: Routes = [
path: '',
component: LibEntryComponent,
children: [
+ {
+ path: '',
+ pathMatch: 'full',
+ component: DiscussCategoryComponent
+ },
{
path: 'home',
pathMatch: 'full',
diff --git a/projects/discussion-ui/src/lib/elements/related-discussion/related-discussion.component.ts b/projects/discussion-ui/src/lib/elements/related-discussion/related-discussion.component.ts
index b4d0bda7..a2fb4c8e 100644
--- a/projects/discussion-ui/src/lib/elements/related-discussion/related-discussion.component.ts
+++ b/projects/discussion-ui/src/lib/elements/related-discussion/related-discussion.component.ts
@@ -1,5 +1,6 @@
import { Component, Input, OnInit } from '@angular/core';
import { Router } from '@angular/router'
+import { ConfigService } from '../../services/config.service';
import * as CONSTANTS from './../../common/constants.json';
@Component({
@@ -12,13 +13,16 @@ export class RelatedDiscussionComponent implements OnInit {
@Input()
relatedDiscussions!: []
- constructor(private router: Router) { }
+ constructor(private router: Router,
+ private configService: ConfigService
+ ) { }
ngOnInit() {
}
getDiscussion(discuss) {
- this.router.navigate([`${CONSTANTS.ROUTES.DISCUSSION}topic/${discuss.slug}`]);
+ let routerSlug = this.configService.getConfig().routerSlug ? this.configService.getConfig().routerSlug : ''
+ this.router.navigate([`${routerSlug}${CONSTANTS.ROUTES.DISCUSSION}topic/${discuss.slug}`], {queryParamsHandling: "merge"});
}
}
diff --git a/projects/discussion-ui/src/lib/models/discussion-config.model.ts b/projects/discussion-ui/src/lib/models/discussion-config.model.ts
new file mode 100644
index 00000000..7b856e82
--- /dev/null
+++ b/projects/discussion-ui/src/lib/models/discussion-config.model.ts
@@ -0,0 +1,22 @@
+export interface IdiscussionConfig {
+ menuOptions?: Array
+ userName: string
+ context: Object
+ categories: Icategory
+ path: string
+ routerSlug: string
+ }
+
+ export interface Icontext {
+ id: number
+ }
+
+ export interface IMenuOptions {
+ route: string
+ enable: boolean
+ }
+
+ export interface Icategory {
+ result : Array
+ }
+
\ No newline at end of file
diff --git a/projects/discussion-ui/src/lib/services/config.service.ts b/projects/discussion-ui/src/lib/services/config.service.ts
index 6938e795..6a279bd8 100644
--- a/projects/discussion-ui/src/lib/services/config.service.ts
+++ b/projects/discussion-ui/src/lib/services/config.service.ts
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs';
import * as _ from 'lodash'
+import { IdiscussionConfig } from '../models/discussion-config.model';
@Injectable({
providedIn: 'root'
@@ -9,7 +10,7 @@ import * as _ from 'lodash'
export class ConfigService {
paramsSubscription: Subscription;
- private _config: any;
+ private _config: IdiscussionConfig;
public checkContext: boolean
@@ -21,19 +22,23 @@ export class ConfigService {
}
- setConfig() {
- this.paramsSubscription = this.activatedRoute.queryParams.subscribe((params) => {
- this._config = params;
- })
+ setConfig(config) {
+ // activatedRoute.data.subscribe((config) => {
+ this._config = config;
+ // })
}
+ setDiscussionConfig(key, config) {
+ localStorage.setItem(key, config)
+ }
+
+ getDiscussionConfig(key) {
+ return localStorage.getItem(key)
+ }
+
public getConfig() {
- if (!this._config) {
- this.setConfig()
- } else {
- return this._config;
- }
+ return this._config;
}
diff --git a/projects/discussion-ui/src/lib/services/discussion.service.ts b/projects/discussion-ui/src/lib/services/discussion.service.ts
index d8dcb722..69560772 100644
--- a/projects/discussion-ui/src/lib/services/discussion.service.ts
+++ b/projects/discussion-ui/src/lib/services/discussion.service.ts
@@ -216,7 +216,7 @@ export class DiscussionService {
fetchUserProfile(userName) {
// return this.http.get(urlConfig.userDetails(userName));
- return this.csDiscussionService.getUserDetails(this.userName);
+ return this.csDiscussionService.getUserDetails(userName);
}
getContextBasedTopic(slug: string) {
diff --git a/projects/discussion-ui/src/public-api.ts b/projects/discussion-ui/src/public-api.ts
index fb62d476..8bb19d14 100644
--- a/projects/discussion-ui/src/public-api.ts
+++ b/projects/discussion-ui/src/public-api.ts
@@ -4,3 +4,5 @@
export * from './lib/discussion-ui.module';
export * from './lib/discussion-events.service';
+export * from './lib/models/discussion-config.model';
+export * from './lib/services/config.service'