martinsonesson.se JsDOC

/**
 * @constructor PageUrlService
 * @memberof services
 * @description Service used for reading page URL
 * @param {$location} $location - See {@link https://code.angularjs.org/1.2.26/docs/api/ng/service/$location}
 */
export default class PageUrlService {
    constructor($location) {
        this.$location = $location;
    }

    /**
     * @function services.PageUrlService#getPageName
     * @description Gets the name of the current page
     * @return {obj} The current pages name
     */
    getPageName() {
        var page = this.$location.path();
        page = page.replace('.html', '');
        page = page.replace('.php', '');
        page = page.replace('/', '');
        if (page === '') {
            page = 'start';
        }
        return page;
    }

    /**
     * @function services.PageUrlService#getCurrentMainPage
     * @description Gets the current MAIN page category like MISC or PROFILE.
     * @return {String} The current pages main category name
     */
    getCurrentMainPage() {
        var page = this.getPageName();
        if (page === 'start' || page === 'profile' || page === 'projects' || page === 'misc') {
            return page;
        } else if (page.includes('projects/') || page === 'flappyDoge' || page === 'gyroSnakeEditor') {
            return 'projects';
        } else if (page === 'bio' || page === 'cv') {
            return 'profile';
        } else if (page === 'blog' || page === 'art' || page === 'videos' || page === 'photos') {
            return 'misc';
        } else if (page.includes('blog/')) {
            return 'misc';
        } else {
            return 'NONE';
        }
    }

    /**
     * @function services.PageUrlService#getParameterValueByKey
     * @description Gets the GET-parameter value by key by reading the URL
     * @param {String} parameterName - The key of parameter
     * @return {String} The value of the given parameter key
     */
    getParameterValueByKey(parameterName) {
        var pageURL = this.$location.absUrl();
        var parameters = pageURL.split('?')[1];

        if (parameters) {
            parameters = parameters.split('&');
            for (var i = 0, max = parameters.length; i < max; i++) {
                var paramPair = parameters[i].split('=');
                if (paramPair[0] === parameterName) {
                    return paramPair[1];
                }
            }
        }

        return null;
    }
}