From c3d6c25e52e37d772286f293f94a5dd7e1059529 Mon Sep 17 00:00:00 2001 From: François Schmidts Date: Wed, 27 Jan 2016 17:14:23 +0100 Subject: redoing UI and finishing up sidebar --- src/web/js/components/MainApp.react.js | 6 +- src/web/js/components/Menu.react.js | 92 ++++++++++---------- src/web/static/css/one-page-app.css | 82 ++++++++++++++++++ src/web/static/css/side-nav.css | 51 ----------- src/web/templates/home2.html | 1 + src/web/templates/layout.html | 1 - src/web/templates/layout.html.orig | 149 --------------------------------- 7 files changed, 135 insertions(+), 247 deletions(-) create mode 100644 src/web/static/css/one-page-app.css delete mode 100644 src/web/static/css/side-nav.css delete mode 100644 src/web/templates/layout.html.orig diff --git a/src/web/js/components/MainApp.react.js b/src/web/js/components/MainApp.react.js index 816e8c82..72504d89 100644 --- a/src/web/js/components/MainApp.react.js +++ b/src/web/js/components/MainApp.react.js @@ -11,11 +11,13 @@ var MainApp = React.createClass({ render: function() { return ( - + - + diff --git a/src/web/js/components/Menu.react.js b/src/web/js/components/Menu.react.js index 4b8c167c..75255d41 100644 --- a/src/web/js/components/Menu.react.js +++ b/src/web/js/components/Menu.react.js @@ -29,13 +29,18 @@ var FeedItem = React.createClass({ if(this.props.unread){ badge_unread = {this.props.unread}; } + var classes = "nav-feed"; + if(this.props.active) { + classes += " bg-primary"; + } if(this.props.error_count == 6) { - style = "danger"; + classes += " bg-danger"; } else if(this.props.error_count > 3) { - style = "warning"; + classes += " bg-warning"; } - return (
  • - {icon}{this.props.title}{badge_unread} + var title = {this.props.title}; + return (
  • + {icon}{title}{badge_unread}
  • ); }, @@ -45,25 +50,26 @@ var FeedItem = React.createClass({ }); var Category = React.createClass({ - propTypes: {category_id: React.PropTypes.number.isRequired, - filter: React.PropTypes.string.isRequired, + propTypes: {category_id: React.PropTypes.number, active_type: React.PropTypes.string, - active_id: React.PropTypes.number}, + active_id: React.PropTypes.number, + glyph: React.PropTypes.object}, render: function() { - if(this.props.active_type == 'active_id' + var classes = "nav-cat"; + if((this.props.active_type == 'category_id' + || this.props.category_id == null) && this.props.active_id == this.props.category_id) { - var classes = "success active"; - } else { - var classes = "success"; + classes += " bg-primary"; } return (
  • + {this.props.glyph}

    {this.props.children}

  • ); }, - handleClick: function() { + handleClick: function(evnt) { if(this.props.category_id != null) { MiddlePanelActions.setCategoryFilter(this.props.category_id); } else { @@ -88,25 +94,25 @@ var CategoryGroup = React.createClass({ var filter = this.props.filter; var a_type = this.props.active_type; var a_id = this.props.active_id; - // filtering according to this.props.filter if(this.state.unfolded) { - var feeds = this.props.feeds.filter(function(feed) { - if (filter == 'unread' && feed.unread <= 0) { - return false; - } else if (filter == 'error' && feed.error_count <= 3) { - return false; - } - return true; - }).sort(function(feed_a, feed_b){ - return feed_b.unread - feed_a.unread; - }).map(function(feed) { - return ( - ); - }); + // filtering according to this.props.filter + var feeds = this.props.feeds.filter(function(feed) { + if (filter == 'unread' && feed.unread <= 0) { + return false; + } else if (filter == 'error' && feed.error_count <= 3) { + return false; + } + return true; + }).sort(function(feed_a, feed_b){ + return feed_b.unread - feed_a.unread; + }).map(function(feed) { + return ( + ); + }); } else { var feeds = []; } @@ -120,9 +126,10 @@ var CategoryGroup = React.createClass({ return (
      - {ctrl} {this.props.name} {unread} + active_id={this.props.active_id} + active_type={this.props.active_type} + glyph={ctrl}> + {this.props.name} {unread} {feeds}
    @@ -143,9 +150,10 @@ var MenuFilter = React.createClass({ render: function() { var error_button = null; if (this.props.feed_in_error) { - error_button = ( + error_button = ( + ); } return ( @@ -168,22 +176,18 @@ var Menu = React.createClass({ }, render: function() { var state = this.state; - if (this.state.active_type == null || this.state.active_id == null) { - var all_classname = "success active"; - } else { - var all_classname = "success"; - } var rmPrntFilt = (
      + active_id={this.state.active_id} + active_type={this.state.active_type}> All
    ); - return ( + return ( {rmPrntFilt} diff --git a/src/web/static/css/one-page-app.css b/src/web/static/css/one-page-app.css new file mode 100644 index 00000000..5a3444c2 --- /dev/null +++ b/src/web/static/css/one-page-app.css @@ -0,0 +1,82 @@ +#menu { + position: fixed; + top: 51px; + bottom: 0px; + left: 0px; + z-index: 1000; + display: block; + padding: 10px; + overflow-x: hidden; + overflow-y: auto; + background-color: #F5F5F5; + border-right: 1px solid #EEE; + color: #555; +} +#menu div.nav.btn-group { + margin-bottom: 10px; +} +#menu li { + padding: 2px; + cursor: pointer; + border-radius: 6px; +} +#menu li.nav-feed { + margin-left: 15px; + margin-bottom: 3px; + max-height: 22px; + overflow: hidden; +} +#menu li.nav-feed > span.badge { + top: 2px; + position: absolute; + right: 2px; +} +#menu li.nav-feed > span.title { + margin-left: 3px; +} +#menu li.bg-primary.bg-danger { + color: #fff; + background-color: orangered; +} +#menu li.bg-primary.bg-warning { + color: #fff; + background-color: gold; +} +#menu li:hover { + color: #000; + background-color: #e8e8e8; +} +#menu li.bg-primary:hover { + color: #fff; + background-color: #62a9e6; +} +#menu li.bg-warning:hover { + background-color: #f3f0da; +} +#menu li.bg-danger:hover { + background-color: #f6cab6; +} +#menu li > h4 { + padding-left: 5px; + margin: 2px; + display: inline; +} +#middle-panel { + padding-left: 20px; + padding-top: 10px; + padding-right: 20px; + position: fixed; + top: 51px; + bottom: 0px; + left: 0px; + z-index: 1000; + display: block; + overflow-x: hidden; + overflow-y: auto; + background-color: #F5F5F5; + border-right: 1px solid #EEE; +} +#middle-panel .btn-group { + margin-right: 10px; + margin-bottom: 10px; +} diff --git a/src/web/static/css/side-nav.css b/src/web/static/css/side-nav.css deleted file mode 100644 index 5128c766..00000000 --- a/src/web/static/css/side-nav.css +++ /dev/null @@ -1,51 +0,0 @@ -/* First level of nav */ -.sidenav { - margin-top: 0px; - margin-bottom: 0px; - padding-top: 10px; - padding-bottom: 0px; - overflow-y: auto; - height: 90%; - z-index: 1000; - background-color: #FFFFFF; - border-radius: 2px; - font-size: 100%; -} -/* All levels of nav */ -.sidebar .nav > li > a { - display: block; - color: #3572B0; - padding: 5px 20px; -} -.sidebar .nav > li > a:hover, -.sidebar .nav > li > a:focus { - text-decoration: none; - background-color: #F0FFFF; -} - -.sidebar .nav > .active > a, -.sidebar .nav > .active:hover > a, -.sidebar .nav > .active:focus > a { - font-weight: bold; - color: #3572B0; - background-color: transparent; -} - -.badge { - background-color: #3572B0; -} - -/* Nav: second level */ -.sidebar .nav .nav { - margin-bottom: 8px; -} -.sidebar .nav .nav > li > a { - padding-top: 3px; - padding-bottom: 3px; - font-size: 80%; -} - -li.feed-commands {display: none; text-align: right;} -li.feed-commands > span > a {margin-right: 10px;} -li.feed-menu:hover + li.feed-commands, li.feed-commands:hover {display: block;} -.glyphicon.delete, .glyphicon.like, .glyphicon.readed { cursor: pointer; } diff --git a/src/web/templates/home2.html b/src/web/templates/home2.html index 673d9041..36dd8f19 100644 --- a/src/web/templates/home2.html +++ b/src/web/templates/home2.html @@ -12,6 +12,7 @@ + {% endblock %} diff --git a/src/web/templates/layout.html b/src/web/templates/layout.html index 4b9f1a4c..ac943d54 100644 --- a/src/web/templates/layout.html +++ b/src/web/templates/layout.html @@ -12,7 +12,6 @@ - {% endblock %} diff --git a/src/web/templates/layout.html.orig b/src/web/templates/layout.html.orig deleted file mode 100644 index 1abb0b68..00000000 --- a/src/web/templates/layout.html.orig +++ /dev/null @@ -1,149 +0,0 @@ - - - - {% block head %} - - - - - JARR{% if head_titles %} - {{ ' - '.join(head_titles) }}{% endif %} - - - - - - - {% endblock %} - - - -
    - -
    - {% block messages %} - {% with messages = get_flashed_messages(with_categories=true) %} - {% if messages %} - {% for category, message in messages %} -
    - - {{ message }} -
    - {% endfor %} - {% endif %} - {% endwith %} - {% endblock %} -
    - - {% block content %}{% endblock %} - - - - - - - - -- cgit