瀏覽代碼

Refactor Boot.Events

soyjavi 13 年之前
父節點
當前提交
e66f7ad72e

+ 4 - 0
src/boot/Lungo.Boot.Device.js

@@ -22,6 +22,10 @@ Lungo.Boot.Device = (function(lng, undefined) {
         lng.DEVICE = env.screen.width < 768 ? DEVICE.PHONE: DEVICE.TABLET;
 
         lng.dom(document.body).data("data", lng.DEVICE);
+
+        if (lng.DEVICE === lng.Constants.DEVICE.PHONE) {
+            lng.View.Aside.draggable();
+        }
     };
 
     return {

+ 22 - 28
src/boot/Lungo.Boot.Events.js

@@ -13,12 +13,10 @@ Lungo.Boot.Events = (function(lng, undefined) {
     var ATTRIBUTE = lng.Constants.ATTRIBUTE;
     var CLASS = lng.Constants.CLASS;
     var ELEMENT = lng.Constants.ELEMENT;
+    var QUERY = lng.Constants.QUERY;
+
     var SELECTORS = {
-        HREF_ASIDE: 'header a[href][data-router=aside]',
-        HREF_TARGET: 'a[href][data-router]',
-        HREF_TARGET_FROM_ASIDE: 'aside a[href][data-router]',
-        INPUT_CHECKBOX: 'input[type=range].checkbox',
-        HREF_TARGET_FROM_MENU: "[data-control=menu] a[href]"
+        INPUT_CHECKBOX: 'input[type=range].checkbox'
     };
 
     /**
@@ -28,12 +26,9 @@ Lungo.Boot.Events = (function(lng, undefined) {
      *
      */
     var init = function() {
-        lng.dom(SELECTORS.HREF_TARGET_FROM_ASIDE).tap(_hideAsideIfNecesary);
-        lng.dom(SELECTORS.HREF_TARGET).tap(_loadTarget);
-        lng.dom(SELECTORS.INPUT_CHECKBOX).tap(_changeCheckboxValue);
-        lng.dom(SELECTORS.HREF_TARGET_FROM_MENU).tap(_closeMenu);
-
-        lng.View.Aside.suscribeEvents(lng.dom(SELECTORS.HREF_ASIDE));
+        lng.dom(QUERY.HREF_ROUTER).tap(_loadTarget);
+        lng.dom(QUERY.MENU_HREF).tap(_closeMenu);
+        lng.dom(QUERY.INPUT_CHECKBOX).tap(_changeCheckboxValue);
     };
 
     var _loadTarget = function(event) {
@@ -47,11 +42,6 @@ Lungo.Boot.Events = (function(lng, undefined) {
         }
     };
 
-    var _hideAsideIfNecesary = function(event) {
-        event.preventDefault();
-        lng.View.Aside.hide();
-    };
-
     var _changeCheckboxValue = function(event)  {
         event.preventDefault();
         var el = lng.dom(this);
@@ -66,7 +56,23 @@ Lungo.Boot.Events = (function(lng, undefined) {
         lng.dom("[data-router=menu] > .icon").attr("class", "icon " + el.data("icon"));
     };
 
+    var _loadAsyncTarget = function(link) {
+        lng.Notification.show();
+        lng.Resource.load(link.data("async"));
+        link[0].removeAttribute("data-async");
+        lng.Boot.Data.init( link.attr(ATTRIBUTE.HREF) );
+
+        setTimeout(function() {
+            _selectTarget(link);
+            lng.Notification.hide();
+        }, lng.Constants.TRANSITION.DURATION * 2);
+    };
+
     var _selectTarget = function(link) {
+        if (link.closest(ELEMENT.ASIDE).length > 0) {
+            lng.View.Aside.hide();
+        }
+
         var target_type = link.data(ATTRIBUTE.ROUTER);
         var target_id = link.attr(ATTRIBUTE.HREF);
 
@@ -89,18 +95,6 @@ Lungo.Boot.Events = (function(lng, undefined) {
         }
     };
 
-    var _loadAsyncTarget = function(link) {
-        lng.Notification.show();
-        lng.Resource.load(link.data("async"));
-        link[0].removeAttribute("data-async");
-        lng.Boot.Data.init( link.attr(ATTRIBUTE.HREF) );
-
-        setTimeout(function() {
-            _selectTarget(link);
-            lng.Notification.hide();
-        }, lng.Constants.TRANSITION.DURATION * 2);
-    };
-
     var _goSection = function(id) {
         id = lng.Core.parseUrl(id);
         if (id === '#back') {

+ 4 - 1
src/modules/Lungo.Constants.js

@@ -23,7 +23,10 @@ Lungo.Constants = {
     QUERY: {
         LIST_IN_ELEMENT: 'article.list, aside.list',
         ELEMENT_SCROLLABLE: 'aside.scroll, article.scroll',
-        HREF_ASIDE: 'header a[href][data-router=aside]'
+        HREF_ASIDE: 'header a[href][data-router=aside]',
+        HREF_ROUTER: 'a[href][data-router]',
+        MENU_HREF: '[data-control=menu] a[href]',
+        INPUT_CHECKBOX: 'input[type=range].checkbox'
     },
 
     CLASS: {

+ 3 - 5
src/router/Lungo.Router.js

@@ -16,7 +16,6 @@ Lungo.Router = (function(lng, undefined) {
     var TRIGGER = lng.Constants.TRIGGER;
     var ATTRIBUTE = lng.Constants.ATTRIBUTE;
     var DEVICE = lng.Constants.DEVICE;
-
     var HASHTAG_CHARACTER = '#';
 
     /**
@@ -42,14 +41,13 @@ Lungo.Router = (function(lng, undefined) {
                 target.removeClass(CLASS.HIDE).addClass(CLASS.SHOW);
 
 
-                _asideAttached(target);
+                _attachAside(target);
 
 
                 lng.Element.Cache.section = target;
                 lng.Element.Cache.article = target.find(ELEMENT.ARTICLE + '.' + CLASS.ACTIVE);
 
 
-                console.error(lng.Element.Cache.aside);
                 lng.Router.History.add(section_id);
                 _sectionTriggers(current, target);
             }
@@ -132,7 +130,7 @@ Lungo.Router = (function(lng, undefined) {
         target = current.siblings(ELEMENT.SECTION + lng.Router.History.current());
 
         _assignTransition(target, target.data('transition-origin'));
-        _asideAttached(target);
+        _attachAside(target);
         target.removeClass(CLASS.HIDE).addClass(CLASS.SHOW);
         lng.Element.Cache.section = target;
         lng.Element.Cache.article = target.find(ELEMENT.ARTICLE + "." + CLASS.ACTIVE);
@@ -169,7 +167,7 @@ Lungo.Router = (function(lng, undefined) {
         section.data('transition-origin', section.data('transition'));
     };
 
-    var _asideAttached = function(target) {
+    var _attachAside = function(target) {
         if (lng.Element.Cache.aside) lng.Element.Cache.aside.removeClass(CLASS.SHOW);
         if (target.data("aside") && lng.DEVICE != DEVICE.PHONE) {
             lng.View.Aside.show(target.data("aside"));

+ 5 - 4
src/view/Lungo.View.Aside.js

@@ -89,9 +89,10 @@ Lungo.View.Aside = (function(lng, undefined) {
      *
      * @method suscribeEvents
      */
-    var suscribeEvents = function() {
-
+    var draggable = function() {
         var MIN_XDIFF = parseInt(document.body.getBoundingClientRect().width / 3, 10);
+        MIN_XDIFF = 128;
+
         lng.dom(QUERY.HREF_ASIDE).each(function() {
             var STARTED = false;
             var a = lng.dom(this);
@@ -156,10 +157,10 @@ Lungo.View.Aside = (function(lng, undefined) {
     };
 
     return {
-        suscribeEvents: suscribeEvents,
         toggle: toggle,
         show: show,
-        hide: hide
+        hide: hide,
+        draggable: draggable
     };
 
 })(Lungo);