import dataAccess from '../service/dataAccess.jsx';
import {urls, specialUrls} from '../constants.jsx';

import _ from 'lodash';

import utilBasic from './util-basic.jsx';

var util = {

    /**
     *
     * @param url
     * @param opts: {}
     *  isPreview
     *  root
     * @returns {string}
     */
    getWrappedUrl(url, opts) {
        opts = opts || {};
        // 为什么这里 dataAccess 为空呢????
        /**
         我去, 原来是循环引用惹的祸... @[  学习  ]{vdsvz_te9nw8xz_iht7pmsz}@
         */
        return (opts.root ? opts.root : urls.wikiRoot)
            + url + '?buildTime=' + dataAccess.getBuildTime()
            + (opts.isPreview ? '&preview' : '');
    },

    getWikiPageUrl(relativeUrlFromRoot, isPreview) {
        if (typeof relativeUrlFromRoot == 'string') {
            return this.getWrappedUrl(relativeUrlFromRoot + '.html', {isPreview: isPreview});
        } else {
            /**
             //如果是个object, 则为:  - @[  #数据结构 定义跳转页面的对象格式  ]{jzrxj_esbwddvt_ihx1h0sw}@
             //
             //data: {}
             // path
             // hash: {}
             //     tag:
             */
            return this.getWikiPageUrl(relativeUrlFromRoot.path, relativeUrlFromRoot.isPreview)
                + '#' + util.getHashParamStr(relativeUrlFromRoot.hash);
        }
    },

    getSpecialUrl(type, paramObject) {
        paramObject = paramObject || {};

        return this.getWrappedUrl(specialUrls[type], {
            root: urls.specialRoot
        }) + '#' + util.getHashParamStr(paramObject);
    },
};

_.assign(util, utilBasic);

export default util;