uiSettings.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. var Settings = (function() {
  2. var displayed = false,
  3. currentPage = null,
  4. pages = {
  5. services: "services",
  6. display: "display",
  7. privacy: "privacy"
  8. },
  9. spawn = function() {
  10. document.getElementById(R.id.settings.wrapper).classList.remove(R.klass.hidden);
  11. displayed = true;
  12. },
  13. setVisiblePage = function(page) {
  14. if (currentPage) {
  15. document.getElementById(R.id.settings.wrapper).classList.remove("display-" +currentPage);
  16. document.getElementById("setting-menu-" +currentPage).classList.remove(R.klass.selected);
  17. }
  18. document.getElementById(R.id.settings.wrapper).classList.add("display-" +page);
  19. document.getElementById("setting-menu-" +page).classList.add(R.klass.selected);
  20. currentPage = page;
  21. };
  22. document.getElementById(R.id.settings.menu.list).addEventListener("click", function(e) {
  23. for (var target = e.target; e.currentTarget !== target && target; target = target.parentNode) {
  24. if (target.dataset && target.dataset["target"]) {
  25. for (var i in pages) {
  26. if (pages[i] === target.dataset["target"]) {
  27. setVisiblePage(pages[i]);
  28. return;
  29. }
  30. }
  31. }
  32. }
  33. });
  34. return {
  35. /** @type {function(string=)} */
  36. display: function(page) {
  37. if (!displayed)
  38. spawn();
  39. setVisiblePage(page || pages.services);
  40. return this;
  41. },
  42. /** @type {function(boolean)} */
  43. setClosable: function(closable) {
  44. return this;
  45. },
  46. pages: pages
  47. };
  48. })();