|
|
@@ -12,7 +12,7 @@
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/tocas-ui/2.3.3/tocas.js"></script>
|
|
|
<link href="//fonts.googleapis.com/css?family=Raleway:400,300,600" rel="stylesheet" type="text/css">
|
|
|
|
|
|
-<script src="showdown.min.js"></script>
|
|
|
+<script src="../../showdown.min.js"></script>
|
|
|
<style>
|
|
|
|
|
|
p,div,span,h1,h2,h3,h4,h5{
|
|
|
@@ -51,7 +51,7 @@ pre{
|
|
|
<body>
|
|
|
<div class="ts demo left sidebar" style="width:400px !important;">
|
|
|
<div class="ts header">
|
|
|
- ArOZ Online System Documentation
|
|
|
+ ArozOS Documentation
|
|
|
<div id="lang" class="sub header" href="index.html"></div>
|
|
|
</div>
|
|
|
<div class="ts top attached tabbed menu">
|
|
|
@@ -62,7 +62,7 @@ pre{
|
|
|
|
|
|
</div>
|
|
|
<div style="width:100%;" align="right">
|
|
|
- <a href="index.html">Exit <i class="log out icon"></i></a>
|
|
|
+ <a href="../../index.html">Exit <i class="log out icon"></i></a>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
@@ -84,7 +84,7 @@ pre{
|
|
|
</div>
|
|
|
<div class="ts divider"></div>
|
|
|
<div class="ts basic segment">
|
|
|
-ArOZ Documentation Reader v1.1
|
|
|
+ArOZ Documentation Reader v1.2
|
|
|
</div>
|
|
|
<br><br><br><br>
|
|
|
</div>
|
|
|
@@ -92,19 +92,42 @@ ArOZ Documentation Reader v1.1
|
|
|
<script>
|
|
|
var currentRenderPage = 0;
|
|
|
var searchingPage = 0;
|
|
|
-var lang = window.location.hash.replace("#",""); //get lang id
|
|
|
+var state; //get lang id
|
|
|
var docs = []; //All documents will be loaded into memory as the reader loads, but not rendered yet
|
|
|
var docsTitles = [];
|
|
|
-var baseFolder = "lang/" + lang + "/";
|
|
|
+var rootFolder = "../../chapter/";
|
|
|
+var baseFolder = rootFolder + "default/";
|
|
|
var sidebarMode = "index"; //Either index or stars
|
|
|
var staredPages = [];
|
|
|
-initLoad();
|
|
|
-$("#lang").text("Language: " + lang);
|
|
|
-//Check if there are stared pages. If yes, load them
|
|
|
-if (localStorage.getItem(lang) !== null) {
|
|
|
- staredPages = JSON.parse(localStorage.getItem(lang));
|
|
|
+
|
|
|
+//Parse the system state from hash
|
|
|
+if (window.location.hash.length > 1){
|
|
|
+ try{
|
|
|
+ state = JSON.parse(decodeURIComponent(window.location.hash.substr(1)));
|
|
|
+ baseFolder = rootFolder + state.chapter + "/";
|
|
|
+ let targetPageNumber = state.page;
|
|
|
+ initLoad(function(){
|
|
|
+ //Callback after all document loaded.
|
|
|
+ if (targetPageNumber != undefined){
|
|
|
+ currentRenderPage = state.page;
|
|
|
+ readDoc();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#lang").text("Chapter: " + state.chapter);
|
|
|
+ //Check if there are stared pages. If yes, load them
|
|
|
+ if (localStorage.getItem(state.chapter) !== null) {
|
|
|
+ staredPages = JSON.parse(localStorage.getItem(state.chapter));
|
|
|
+ }
|
|
|
+
|
|
|
+ }catch(ex){
|
|
|
+ alert("Failed to parse chapter information")
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
function starThisPage(){
|
|
|
for (var i =0; i < staredPages.length; i++){
|
|
|
if (staredPages[i][0] == currentRenderPage){
|
|
|
@@ -178,7 +201,7 @@ function toggleList(){
|
|
|
|
|
|
function redirectDoc(indexID){
|
|
|
currentRenderPage = indexID;
|
|
|
- readDoc();
|
|
|
+ readDoc(true);
|
|
|
toggleList();
|
|
|
}
|
|
|
|
|
|
@@ -196,7 +219,7 @@ function reloadAllDocs(){
|
|
|
docsTitles=[];
|
|
|
}
|
|
|
|
|
|
-function loadAllDocs(){
|
|
|
+function loadAllDocs(callback=undefined){
|
|
|
$.ajax({
|
|
|
type: 'get',
|
|
|
timeout: 5000,
|
|
|
@@ -206,7 +229,7 @@ function loadAllDocs(){
|
|
|
docs.push(data.split("\n"));
|
|
|
//console.log(data.split("\n"));
|
|
|
searchingPage++;
|
|
|
- loadAllDocs();
|
|
|
+ loadAllDocs(callback);
|
|
|
},
|
|
|
error:function (xhr, ajaxOptions, thrownError){
|
|
|
//End of documentation
|
|
|
@@ -214,7 +237,10 @@ function loadAllDocs(){
|
|
|
readDoc(); //Start rendering
|
|
|
parseDocList(); //Update the doc list
|
|
|
renderDocsList(); //Render the documentation list
|
|
|
- }
|
|
|
+ if (callback != undefined){
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
|
|
|
@@ -225,7 +251,7 @@ function nextPage(){
|
|
|
currentRenderPage = currentRenderPage - 1;
|
|
|
return;
|
|
|
}
|
|
|
- readDoc();
|
|
|
+ readDoc(true);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -236,10 +262,10 @@ function lastPage(){
|
|
|
currentRenderPage = currentRenderPage + 1;
|
|
|
return;
|
|
|
}
|
|
|
- readDoc();
|
|
|
+ readDoc(true);
|
|
|
}
|
|
|
|
|
|
-function readDoc(){
|
|
|
+function readDoc(rememberState=false){
|
|
|
let pageInfo = Array.from(docs[currentRenderPage]);
|
|
|
var metaTag = JSON.parse(pageInfo.shift());
|
|
|
document.title = metaTag[0];
|
|
|
@@ -248,6 +274,16 @@ function readDoc(){
|
|
|
pageInfo = pageInfo.join("\n");
|
|
|
$("#docLoader").append(md2html(pageInfo));
|
|
|
updateStartedIcon();
|
|
|
+
|
|
|
+ if (rememberState){
|
|
|
+ updateWindowHash();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function updateWindowHash(){
|
|
|
+ state["page"] = currentRenderPage;
|
|
|
+ window.location.hash = encodeURIComponent(JSON.stringify(state))
|
|
|
+
|
|
|
}
|
|
|
|
|
|
function parseDocList(){
|
|
|
@@ -259,12 +295,14 @@ function parseDocList(){
|
|
|
}
|
|
|
|
|
|
function md2html(input){
|
|
|
- var converter = new showdown.Converter();
|
|
|
+ var converter = new showdown.Converter({
|
|
|
+ tables: true,
|
|
|
+ });
|
|
|
return converter.makeHtml(input);
|
|
|
}
|
|
|
|
|
|
//Initiate the loading interface
|
|
|
-function initLoad(){
|
|
|
+function initLoad(callback){
|
|
|
$("#docLoader").html('<div align="center" style="width:100%;">\
|
|
|
<br><br>\
|
|
|
<i class="big spinner loading icon stillLoading"></i><br>\
|
|
|
@@ -272,7 +310,7 @@ function initLoad(){
|
|
|
<br><br>\
|
|
|
</div>');
|
|
|
setTimeout(chkLoadFail,15000);
|
|
|
- loadAllDocs();
|
|
|
+ loadAllDocs(callback);
|
|
|
}
|
|
|
|
|
|
//Check if the load failed using setTimeout
|