uiSettings.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. document.getElementById(R.id.settings.services.addSection).classList.remove(R.klass.hidden);
  18. }
  19. document.getElementById(R.id.settings.wrapper).classList.add("display-" +page);
  20. document.getElementById("setting-menu-" +page).classList.add(R.klass.selected);
  21. currentPage = page;
  22. };
  23. document.getElementById(R.id.settings.menu.list).addEventListener("click", function(e) {
  24. for (var target = e.target; e.currentTarget !== target && target; target = target.parentNode) {
  25. if (target.dataset && target.dataset["target"]) {
  26. for (var i in pages) {
  27. if (pages[i] === target.dataset["target"]) {
  28. setVisiblePage(pages[i]);
  29. return;
  30. }
  31. }
  32. }
  33. }
  34. });
  35. document.getElementById(R.id.settings.services.addButton).addEventListener("click", function(e) {
  36. e.preventDefault();
  37. document.getElementById(R.id.settings.services.addSection).classList.remove(R.klass.hidden);
  38. return false;
  39. });
  40. document.getElementById(R.id.settings.services.serviceAddConfirm).addEventListener("click", function(e) {
  41. e.preventDefault();
  42. document.location.href = document.getElementById(R.id.settings.services.serviceProviderList).value;
  43. return false;
  44. });
  45. return {
  46. /** @type {function(string=)} */
  47. display: function(page) {
  48. if (!displayed)
  49. spawn();
  50. setVisiblePage(page || pages.services);
  51. return this;
  52. },
  53. /** @type {function(boolean)} */
  54. setClosable: function(closable) {
  55. return this;
  56. },
  57. pages: pages
  58. };
  59. })();