Lungo.Router.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /**
  2. * Handles the <sections> and <articles> to show
  3. *
  4. * @namespace LUNGO
  5. * @class Router
  6. *
  7. * @author Javier Jimenez Villar <javi@tapquo.com> || @soyjavi
  8. * @author Guillermo Pascual <pasku@tapquo.com> || @pasku1
  9. */
  10. LUNGO.Router = (function(lng, undefined) {
  11. var CLASS = lng.Constants.CLASS;
  12. var ELEMENT = lng.Constants.ELEMENT;
  13. var ERROR = lng.Constants.ERROR;
  14. var TRIGGER = lng.Constants.TRIGGER;
  15. /**
  16. * Navigate to a <section>.
  17. *
  18. * @method section
  19. *
  20. * @param {string} Id of the <section>
  21. */
  22. var section = function(section_id) {
  23. var section_id = lng.Core.parseUrl(section_id);
  24. var target = ELEMENT.SECTION + section_id;
  25. if (_existsTarget(target)) {
  26. lng.dom(_getHistoryCurrent()).removeClass(CLASS.SHOW).addClass(CLASS.HIDE);
  27. lng.dom(target).addClass(CLASS.SHOW).trigger(TRIGGER.LOAD);
  28. lng.Router.History.add(section_id);
  29. }
  30. };
  31. /**
  32. * Displays the <article> in a particular <section>.
  33. *
  34. * @method article
  35. *
  36. * @param {string} <section> Id
  37. * @param {string} <article> Id
  38. */
  39. var article = function(section_id, article_id) {
  40. var section_id = lng.Core.parseUrl(section_id);
  41. var article_id = lng.Core.parseUrl(article_id);
  42. var target = ELEMENT.SECTION + section_id + ' ' + ELEMENT.ARTICLE + article_id;
  43. if (_existsTarget(target)) {
  44. lng.dom(target).trigger(TRIGGER.LOAD);
  45. lng.View.Article.show(section_id, article_id);
  46. }
  47. };
  48. /**
  49. * Displays the <aside> in a particular <section>.
  50. *
  51. * @method aside
  52. *
  53. * @param {string} <section> Id
  54. * @param {string} <aside> Id
  55. */
  56. var aside = function(section_id, aside_id) {
  57. var section_id = lng.Core.parseUrl(section_id);
  58. var aside_id = lng.Core.parseUrl(aside_id);
  59. var target = ELEMENT.ASIDE + aside_id;
  60. if (_existsTarget(target)) {
  61. var is_visible = lng.dom(target).hasClass(CLASS.CURRENT);
  62. if (is_visible) {
  63. lng.View.Aside.hide(section_id, aside_id);
  64. } else {
  65. lng.View.Aside.show(section_id, aside_id);
  66. }
  67. }
  68. };
  69. /**
  70. * Return to previous section.
  71. *
  72. * @method back
  73. */
  74. var back = function() {
  75. var target = ELEMENT.SECTION + _getHistoryCurrent();
  76. lng.dom(target).removeClass(CLASS.SHOW).trigger(TRIGGER.UNLOAD);
  77. lng.Router.History.removeLast();
  78. lng.dom(_getHistoryCurrent()).removeClass(CLASS.HIDE).addClass(CLASS.SHOW);
  79. };
  80. var _existsTarget = function(target) {
  81. var exists = false;
  82. if (lng.dom(target).length > 0) {
  83. exists = true;
  84. } else {
  85. lng.Core.log(3, ERROR.ROUTER + target);
  86. }
  87. return exists;
  88. };
  89. var _getHistoryCurrent = function() {
  90. return lng.Router.History.current();
  91. };
  92. return {
  93. section: section,
  94. article: article,
  95. aside: aside,
  96. back: back
  97. };
  98. })(LUNGO);