szurubooru/client/js/views/help_view.js

87 lines
2.7 KiB
JavaScript
Raw Normal View History

"use strict";
2016-03-29 12:34:10 +02:00
const api = require("../api.js");
const views = require("../util/views.js");
2016-03-29 12:34:10 +02:00
const template = views.getTemplate("help");
const sectionTemplates = {
about: views.getTemplate("help-about"),
keyboard: views.getTemplate("help-keyboard"),
search: views.getTemplate("help-search"),
comments: views.getTemplate("help-comments"),
tos: views.getTemplate("help-tos"),
};
const subsectionTemplates = {
search: {
default: views.getTemplate("help-search-general"),
posts: views.getTemplate("help-search-posts"),
users: views.getTemplate("help-search-users"),
tags: views.getTemplate("help-search-tags"),
pools: views.getTemplate("help-search-pools"),
},
};
class HelpView {
constructor(section, subsection) {
this._hostNode = document.getElementById("content-holder");
2016-03-29 12:34:10 +02:00
const sourceNode = template();
const ctx = {
name: api.getName(),
};
2016-04-08 10:35:38 +02:00
section = section || "about";
if (section in sectionTemplates) {
views.replaceContent(
sourceNode.querySelector(".content"),
sectionTemplates[section](ctx)
);
2016-03-29 12:34:10 +02:00
}
subsection = subsection || "default";
if (
section in subsectionTemplates &&
subsection in subsectionTemplates[section]
) {
views.replaceContent(
sourceNode.querySelector(".subcontent"),
subsectionTemplates[section][subsection](ctx)
);
}
views.replaceContent(this._hostNode, sourceNode);
for (let itemNode of sourceNode.querySelectorAll(
".primary [data-name]"
)) {
itemNode.classList.toggle(
"active",
itemNode.getAttribute("data-name") === section
);
if (itemNode.getAttribute("data-name") === section) {
itemNode.parentNode.scrollLeft =
itemNode.getBoundingClientRect().left -
itemNode.parentNode.getBoundingClientRect().left;
}
2016-03-29 12:34:10 +02:00
}
2016-04-08 10:35:38 +02:00
for (let itemNode of sourceNode.querySelectorAll(
".secondary [data-name]"
)) {
itemNode.classList.toggle(
"active",
itemNode.getAttribute("data-name") === subsection
);
if (itemNode.getAttribute("data-name") === subsection) {
itemNode.parentNode.scrollLeft =
itemNode.getBoundingClientRect().left -
itemNode.parentNode.getBoundingClientRect().left;
}
}
2016-07-13 17:18:28 +02:00
views.syncScrollPosition();
2016-03-29 12:34:10 +02:00
}
}
module.exports = HelpView;