-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathdoc.js
86 lines (86 loc) · 2.51 KB
/
doc.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var DocApp = {
Defaults: {
PageName: "overview"
},
LoadPages: function () {
$("[data-page]:not([data-page-done])").each(function () {
var $this = $(this);
var page = $this.attr("data-page");
$this.attr("data-page-done", true);
$.ajax({
url: page,
cache: false,
success: function (contents) {
$this.html(contents);
DocApp.LoadPages();
}
});
});
},
Init: function () {
DocApp.Load(window.location.hash);
DocApp.LoadPages();
},
/**
* @param {jQuery} $button
*/
BindNavCollapse: function ($button) {
$button.click(function () {
$(window).scrollTop(0);
});
},
/**
* @param {jQuery} $nav
*/
BindNav: function ($nav) {
$nav.find("a").click(function (e) {
var href = $(this).attr("href");
DocApp.Load(href);
$('.navbar-collapse').collapse('hide');
});
$(window).on('hashchange', function () {
DocApp.Load(window.location.hash);
if (window.location.hash.split("-").length > 1) {
var aTag = $(window.location.hash);
$('html,body').scrollTop(aTag.offset().top);
}
if (window.location.hash === "#" + DocApp.GetPageName(window.location.hash)) {
$(window).scrollTop(0);
}
});
},
/**
* @param {string} hash
* @returns {string}
*/
GetPageName: function (hash) {
var page = hash.replace(/^#/, "");
if (!page || !page.length) {
page = DocApp.Defaults.PageName;
}
var pageParts = page.split("-");
var $page;
for (var i = 0; pageParts.length > i; i++) {
page = pageParts.slice(0, i + 1).join("-");
$page = $("#page-" + page);
if ($page.length) {
return page;
}
}
return "";
},
/**
* @param {string} hash
*/
Load: function (hash) {
var pageName = DocApp.GetPageName(hash);
var $page = $("#page-" + pageName);
$(".main").addClass("hidden");
$page.removeClass("hidden");
$(".sidebar li").removeClass("active");
if (pageName === DocApp.Defaults.PageName) {
pageName = "";
}
$(".sidebar a[href$='#" + pageName + "']").parent("li").addClass("active");
}
};