Lungo.Boot.Article.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /**
  2. * Initialize the <article> element
  3. *
  4. * @namespace Lungo.Boot
  5. * @class Article
  6. *
  7. * @author Javier Jimenez Villar <javi@tapquo.com> || @soyjavi
  8. * @author Guillermo Pascual <pasku@tapquo.com> || @pasku1
  9. */
  10. Lungo.Boot.Article = (function(lng, undefined) {
  11. var ATTRIBUTE = lng.Constants.ATTRIBUTE;
  12. var ELEMENT = lng.Constants.ELEMENT;
  13. var SELECTORS = {
  14. LIST_IN_ARTICLE: 'article.list, aside.list',
  15. CHECKBOX_IN_ARTICLE: '.checkbox',
  16. ARTICLE_SCROLLABLE: 'article.scroll'
  17. };
  18. /**
  19. * Initializes the markup elements of an article
  20. *
  21. * @method init
  22. */
  23. var init = function() {
  24. _initElement(SELECTORS.LIST_IN_ARTICLE, _createListElement);
  25. _initElement(SELECTORS.CHECKBOX_IN_ARTICLE, _createCheckboxElement);
  26. _initElement(SELECTORS.ARTICLE_SCROLLABLE, _scrollFix);
  27. };
  28. var _initElement = function(selector, callback) {
  29. var found_elements = lng.dom(selector);
  30. for (var i = 0, len = found_elements.length; i < len; i++) {
  31. var element = lng.dom(found_elements[i]);
  32. lng.Core.execute(callback, element);
  33. }
  34. };
  35. var _createListElement = function(article) {
  36. if (article.children().length === 0) {
  37. var article_id = article.attr(ATTRIBUTE.ID);
  38. article.append(ELEMENT.LIST);
  39. }
  40. };
  41. var _createCheckboxElement = function(checkbox) {
  42. checkbox.append(ELEMENT.SPAN);
  43. };
  44. var _scrollFix = function(article) {
  45. article[0].addEventListener('touchstart', function(event) {
  46. scrollTop = this.scrollTop;
  47. if(scrollTop <= 1) {
  48. this.scrollTop = 1;
  49. }
  50. if(scrollTop + this.offsetHeight >= this.scrollHeight) {
  51. this.scrollTop = this.scrollHeight - this.offsetHeight - 1;
  52. }
  53. }, false);
  54. };
  55. return {
  56. init: init
  57. };
  58. })(Lungo);