-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve presentation of navigation at mobile #16
Conversation
I didn't realise there were tests for this. I'll take a look soon. |
- Add button to show/hide menu items - Ensure navigation fills the width of the viewport by moving it out of the main container element
1ae2c5b
to
ce6529b
Compare
I've rebased my branch on top of your rebased branch, and fixed the test that I broke. |
I've pushed up another commit that should resolve the line length issue. I find it odd that the line length test failed on python2 but not python3. |
Thanks for your contribution, will start reviewing it asap :)
For each commit Travis creates 4 builds: Three are just running unit-tests for each supported python-version ( |
tsstats/tests/test_template.py
Outdated
@@ -35,7 +35,8 @@ def test_debug(output): | |||
logger.setLevel(logging.INFO) | |||
soup = BeautifulSoup(open(output_path), 'html.parser') | |||
# check debug-label presence | |||
assert soup.find('nav').find(id='main-nav').find('span').text == 'debug mode' | |||
debug_element = soup.find('nav').find('div', id='main-nav').find('span') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You could've just split the line with a backslash (\
) before the==
but you can keep it this way.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't think there was a neat place to split the line using a backslash. Any positioning would have made the code far less readable than just keeping it all on one line IMO.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nah, would've looked like this with splitting by backslash:
assert soup.find('nav').find(id='main-nav').find('span').text \
== 'debug mode'
Don't think that's far less readable.
tsstats/templates/index.jinja2
Outdated
@@ -49,5 +59,23 @@ | |||
{% endfor %} | |||
<small>Generated by <a href="https://github.com/Thor77/TeamspeakStats" rel="noopener">TeamspeakStats</a> at {{ creation_time|frmttime }}</small> | |||
</div> | |||
|
|||
<script type="text/javascript"> | |||
document.addEventListener('click', function(event) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please attach the event-listener just to the button and not to the whole document.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm using event delegation: https://davidwalsh.name/event-delegate
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's what the default bootstrap javascript would do if it was to be used, just with jQuery instead of vanilla javascript.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm, okey. Thanks for linking this article, but can you at least add it just to the nav
-object instead of the whole document?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thought about it for a while now and I don't think we should use event delegation here, as we only need one eventlistener and are not dynamically modifying the DOM. Therefore we don't use any of the benefits of event-delegation.
tsstats/templates/index.jinja2
Outdated
</nav> | ||
<div id="main-nav" class="collapse navbar-collapse"> | ||
<ul class="navbar-nav mr-auto"> | ||
<li class="hidden-md-down"><a href="" class="navbar-brand">{{ title }}</a></li> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason you're adding navbar-brand for a second time here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One is used for mobile and tablet, the other is used for desktop. The new navbar markup means it's much easier to do this than to try and only have one navbar-brand
element.
tsstats/templates/index.jinja2
Outdated
var toggleTarget = document.getElementById(toggler.dataset.target); | ||
|
||
if (toggleTarget.classList.contains('collapse')) { | ||
toggleTarget.classList.remove('collapse'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Huh, please don't mess with the collapse
-class here. You can check the current collapse-state via the aria-expanded
-attribute, can't you?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think there's a good answer to this, as there's nothing to stop the presence of the collapse
class and the value of the aria-expanded
attribute from getting out of sync. I'm happy to test whichever one you prefer, but it is easier to test for the presence of the classname IMO.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would prefer to just rely on aria-expanded
, because adding/removing classes just for saving a state seems kinda wrong to me.
I should get to these updates over the weekend. |
I've just pushed the requested updates. |
Thanks for your contribution! 👍 |
* add button to show/hide menu items * ensure navigation fills the width of the viewport by moving it out of the main container element
* add button to show/hide menu items * ensure navigation fills the width of the viewport by moving it out of the main container element
* add button to show/hide menu items * ensure navigation fills the width of the viewport by moving it out of the main container element
* add button to show/hide menu items * ensure navigation fills the width of the viewport by moving it out of the main container element
* add button to show/hide menu items * ensure navigation fills the width of the viewport by moving it out of the main container element
* add button to show/hide menu items * ensure navigation fills the width of the viewport by moving it out of the main container element
* add button to show/hide menu items * ensure navigation fills the width of the viewport by moving it out of the main container element
the main container element