From 2d79498f505644380ea7ca9547ba3008a1ae3e05 Mon Sep 17 00:00:00 2001
From: Eike Cochu <eike@cochu.com>
Date: Sat, 18 Jun 2016 01:50:20 +0200
Subject: [PATCH] updated missing tab pages, removed nya select dependency

---
 .../html/directives/sequence-dropdown.html    |   6 +-
 .../app/html/directives/window-dropdown.html  |  12 --
 vipra-ui/app/html/entities/show.html          |   4 +-
 vipra-ui/app/html/network.html                |   4 -
 vipra-ui/app/html/topics/articles.html        | 112 +++++++++--------
 vipra-ui/app/html/topics/sequences.html       | 113 ++++++++++++++++++
 vipra-ui/app/html/topics/show.html            |  94 +--------------
 vipra-ui/app/html/words/show.html             |   4 +-
 vipra-ui/app/js/app.js                        |   7 +-
 vipra-ui/app/js/controllers.js                |  28 +++--
 vipra-ui/app/js/directives.js                 |  23 ----
 vipra-ui/app/less/app.less                    |  21 ++--
 vipra-ui/bower.json                           |   1 -
 vipra-ui/gulpfile.js                          |   2 -
 14 files changed, 215 insertions(+), 216 deletions(-)
 delete mode 100644 vipra-ui/app/html/directives/window-dropdown.html
 create mode 100644 vipra-ui/app/html/topics/sequences.html

diff --git a/vipra-ui/app/html/directives/sequence-dropdown.html b/vipra-ui/app/html/directives/sequence-dropdown.html
index 54e8dc89..cd86d8ff 100644
--- a/vipra-ui/app/html/directives/sequence-dropdown.html
+++ b/vipra-ui/app/html/directives/sequence-dropdown.html
@@ -1,5 +1 @@
-<ol class="nya-bs-select nya-bs-condensed" ng-model="ngModel" ng-class="{dropup:showDropup}" disabled="!sequences">
-  <li class="nya-bs-option" nya-bs-option="sequence in sequences">
-    <a ng-bind="sequence.label"></a>
-  </li>
-</ol>
\ No newline at end of file
+<select class="form-control inline" ng-model="ngModel" ng-disabled="!sequences" ng-options="sequence as sequence.label for sequence in sequences track by sequence.id"></select>
\ No newline at end of file
diff --git a/vipra-ui/app/html/directives/window-dropdown.html b/vipra-ui/app/html/directives/window-dropdown.html
deleted file mode 100644
index 263ccf94..00000000
--- a/vipra-ui/app/html/directives/window-dropdown.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<div class="input-group">
-  <ol class="nya-bs-select form-control" ng-model="ngModel" ng-class="{dropup:showDropup}" disabled="!windows">
-    <li class="nya-bs-option" nya-bs-option="window in windows">
-      <a ng-bind="window.label"></a>
-    </li>
-  </ol>
-  <span class="input-group-btn">
-    <button class="btn btn-default selectclear nooutline" type="button">
-      <span class="glyphicon glyphicon-remove-circle" ng-click="ngModel=''" analytics-on analytics-event="Window Dropdown (clear)" analytics-category="Filter actions"></span>
-    </button>
-  </span>
-</div>
\ No newline at end of file
diff --git a/vipra-ui/app/html/entities/show.html b/vipra-ui/app/html/entities/show.html
index 0f8eb97c..bca31168 100644
--- a/vipra-ui/app/html/entities/show.html
+++ b/vipra-ui/app/html/entities/show.html
@@ -6,7 +6,7 @@
   <div>
     <ul class="nav nav-tabs" role="tablist">
       <li class="active">
-        <a data-target=".tab-info" data-toggle="tab" bs-tab><i class="fa fa-file-text-o"></i></a>
+        <a><i class="fa fa-file-text-o"></i></a>
       </li>
       <li>
         <a ui-sref="entities.show.articles({id:entity.entity})">
@@ -15,7 +15,7 @@
       </li>
     </ul>
     <div class="tab-content">
-      <div role="tabpanel" class="tab-pane active tab-info">
+      <div role="tabpanel" class="tab-pane active">
         <h3>Info</h3>
         <table class="table table-bordered table-condensed table-fixed">
           <tbody>
diff --git a/vipra-ui/app/html/network.html b/vipra-ui/app/html/network.html
index d17c63a3..c72ba8a4 100644
--- a/vipra-ui/app/html/network.html
+++ b/vipra-ui/app/html/network.html
@@ -28,10 +28,6 @@
           <input type="checkbox" id="loadOnClick" ng-model="loadOnClick">
           <label for="loadOnClick" analytics-on analytics-event="Network Click Load Enable" analytics-category="Network actions">Load on click</label>
         </div>
-        <div style="display:none">
-          Window
-          <window-dropdown ng-model="selectedWindow" windows="windows" />
-        </div>
         <div>
           <div class="btn-group btn-group-justified">
             <input class="form-control" type="text" ng-model="searchNodes" ng-model-options="{debounce:300}" placeholder="Search...">
diff --git a/vipra-ui/app/html/topics/articles.html b/vipra-ui/app/html/topics/articles.html
index b2272aa0..26d722b9 100644
--- a/vipra-ui/app/html/topics/articles.html
+++ b/vipra-ui/app/html/topics/articles.html
@@ -1,58 +1,70 @@
 <div class="container" ng-cloak ng-hide="!rootModels.topicModel || state.name !== 'topics.show.articles'">
-  <div class="row">
-    <div class="col-md-12">
-      <div class="page-header">
-        <h1 ng-bind-template="Articles for topic '{{::topic.name}}'"></h1>
-        <table class="item-actions">
-          <tr>
-            <td>
-              <a class="btn btn-default" ui-sref="^">Back</a>
-            </td>
-          </tr>
-        </table>
-      </div>
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-12 text-center">
-      <pagination total="articlesTotal" page="topicsArticlesModels.page" limit="topicsArticlesModels.limit" change="changePage" />
-    </div>
+  <div class="page-header no-border">
+    <span class="label label-default">Topic</span>
+    <h1 ng-bind="::topic.name"></h1>
   </div>
-  <div class="row">
-    <div class="col-md-12">
-      <div class="panel panel-default">
-        <div class="panel-heading">
-          Found
-          <ng-pluralize count="articlesTotal||0" when="{0:'no articles',1:'1 article',other:'{} articles'}"></ng-pluralize> in the database.
-          <span ng-show="articlesTotal" ng-cloak>
-          Sort by
-          <ol class="nya-bs-select nya-bs-condensed" ng-model="topicsArticlesModels.sortkey">
-            <li value="title" class="nya-bs-option"><a>Title</a></li>
-            <li value="date" class="nya-bs-option"><a>Date</a></li>
-            <li value="created" class="nya-bs-option"><a>Added</a></li>
-          </ol>
-          <sort-dir ng-model="topicsArticlesModels.sortdir" />
-        </span>
+  <div>
+    <ul class="nav nav-tabs" role="tablist">
+      <li>
+        <a ui-sref="topics.show({id:topic.id})"><i class="fa fa-file-text-o"></i></a>
+      </li>
+      <li>
+        <a ui-sref="topics.show.sequences({id:topic.id})">Sequences</a>
+      </li>
+      <li class="active">
+        <a>Articles</a>
+      </li>
+      <li>
+         <a ui-sref="network({type:'topics', id:topic.id})">
+          <i class="fa fa-sitemap"></i> Network
+        </a>
+      </li>
+    </ul>
+    <div class="tab-content">
+      <div role="tabpanel" class="tab-pane active">
+        <div class="row">
+          <br>
+          <div class="col-md-12">
+            <div class="panel panel-default">
+              <div class="panel-heading">
+                Found
+                <ng-pluralize count="articlesTotal||0" when="{0:'no articles',1:'1 article',other:'{} articles'}"></ng-pluralize> in the database.
+                <span ng-show="articlesTotal" ng-cloak>
+                Sort by
+                <div class="input-group inline">
+                  <select class="form-control" ng-model="topicsArticlesModels.sortkey">
+                    <option value="title">Title</option>
+                    <option value="date">Date</option>
+                    <option value="created">Added</option>
+                  </select>
+                  <span class="input-group-btn">
+                    <sort-dir ng-model="topicsArticlesModels.sortdir" />
+                  </span>
+                </div>
+              </span>
+              </div>
+              <table class="table table-hover table-condensed table-fixed">
+                <tbody>
+                  <tr ng-repeat="article in articles">
+                    <td>
+                      <article-link article="::article"/>
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+              <div class="panel-footer">
+                Page <span ng-bind="topicsArticlesModels.page||1"></span> of <span ng-bind="maxPage||1"></span>
+              </div>
+            </div>
+          </div>
         </div>
-        <table class="table table-hover table-condensed table-fixed">
-          <tbody>
-            <tr ng-repeat="article in articles">
-              <td>
-                <article-link article="::article"/>
-              </td>
-            </tr>
-          </tbody>
-        </table>
-        <div class="panel-footer">
-          Page <span ng-bind="topicsArticlesModels.page||1"></span> of <span ng-bind="maxPage||1"></span>
+        <div class="row">
+          <div class="col-md-12 text-center">
+            <pagination total="articlesTotal" page="topicsArticlesModels.page" limit="topicsArticlesModels.limit" change="changePage" />
+          </div>
         </div>
       </div>
     </div>
   </div>
-  <div class="row">
-    <div class="col-md-12 text-center">
-      <pagination total="articlesTotal" page="topicsArticlesModels.page" limit="topicsArticlesModels.limit" change="changePage" />
-    </div>
-  </div>
 </div>
-<div ng-cloak ui-view></div>
+<div ng-cloak ui-view></div>
\ No newline at end of file
diff --git a/vipra-ui/app/html/topics/sequences.html b/vipra-ui/app/html/topics/sequences.html
new file mode 100644
index 00000000..8a60b070
--- /dev/null
+++ b/vipra-ui/app/html/topics/sequences.html
@@ -0,0 +1,113 @@
+<div class="container topic-show" ng-cloak ng-hide="!rootModels.topicModel || state.name !== 'topics.show.sequences'">
+  <div class="page-header no-border">
+    <span class="label label-default">Topic</span>
+    <h1 ng-bind="::topic.name"></h1>
+  </div>
+  <div>
+    <ul class="nav nav-tabs" role="tablist">
+      <li>
+        <a ui-sref="topics.show({id:topic.id})"><i class="fa fa-file-text-o"></i></a>
+      </li>
+      <li class="active">
+        <a>Sequences</a>
+      </li>
+      <li>
+        <a ui-sref="topics.show.articles({id:topic.id})">Articles</a>
+      </li>
+      <li>
+         <a ui-sref="network({type:'topics', id:topic.id})">
+          <i class="fa fa-sitemap"></i> Network
+        </a>
+      </li>
+    </ul>
+    <div class="tab-content">
+      <div role="tabpanel" class="tab-pane active">
+        <h3>Sequences</h3>
+        <div class="row">
+          <div ng-class="{'col-md-12':!sequenceCompare,'col-md-5':sequenceCompare}">
+            <div class="panel panel-default">
+              <div class="panel-heading seq-head">
+                <small>Sequence:</small>
+                <sequence-dropdown ng-model="topicsShowModels.sequence" sequences="topic.sequences"></sequence-dropdown>
+                <div class="pull-right" ng-if="!sequenceCompare">
+                  <small>Compare to:</small>
+                  <sequence-dropdown ng-model="topicsShowModels.sequenceCompare" sequences="topic.sequences"></sequence-dropdown>
+                </div>
+              </div>
+              <table class="table table-condensed table-bordered table-hover table-fixed table-compare" ng-show="sequence" ng-cloak>
+                <thead>
+                  <tr>
+                    <th ng-model="topicsShowModels.seqSortWords" sort-by="word">Word</th>
+                    <th ng-model="topicsShowModels.seqSortWords" sort-by="probability">Probability</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr class="compare-row" ng-repeat="word in sequence.words | orderBy:topicsShowModels.seqSortWords" ng-attr-word="{{::word.word}}">
+                    <td>
+                      <word-link word="::word" />
+                    </td>
+                    <td ng-bind="word.probability.toFixed(4)"></td>
+                  </tr>
+                </tbody>
+              </table>
+              <div class="panel-footer seq-foot" ng-show="sequence" ng-cloak>
+                <ng-pluralize count="sequence.words.length||0" when="{0:'No words',1:'Top word',other:'Top {} words'}"></ng-pluralize>
+              </div>
+            </div>
+          </div>
+          <div class="col-md-2" ng-if="sequenceCompare">
+            <div class="panel panel-default">
+              <div class="panel-heading seq-head text-center" style="padding-top:15px">Comparison</div>
+              <table class="table table-condensed table-bordered table-hover table-fixed table-compare" ng-show="sequence" ng-cloak>
+                <thead>
+                  <tr>
+                    <th class="text-center" ng-model="topicsShowModels.seqSortWords" sort-by="change">Change</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr class="compare-row" ng-repeat="word in sequence.words | orderBy:topicsShowModels.seqSortWords" ng-attr-word="{{::word.word}}">
+                    <td class="text-center">
+                      <change-pos change="word.change"/>
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+              <div class="panel-footer seq-foot" ng-show="sequence" ng-cloak></div>
+            </div>
+          </div>
+          <div class="col-md-5" ng-if="sequenceCompare">
+            <div class="panel panel-default">
+              <div class="panel-heading seq-head">
+                <small>Sequence:</small>
+                <sequence-dropdown ng-model="topicsShowModels.sequenceCompare" sequences="topic.sequences"></sequence-dropdown>
+                <button type="button" class="close" ng-click="closeCompare()" analytics-on analytics-event="Topic Sequence Compare (Close)" analytics-category="Topic actions"><span aria-hidden="true">&times;</span></button>
+              </div>
+              <table class="table table-condensed table-bordered table-hover table-fixed table-compare">
+                <thead>
+                  <tr>
+                    <th ng-model="topicsShowModels.seqSortWords" sort-by="word">Word</th>
+                    <th ng-model="topicsShowModels.seqSortWords" sort-by="probability">Probability</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr class="compare-row" ng-repeat="word in sequenceCompare.words | orderBy:topicsShowModels.seqSortWords" ng-attr-word="{{::word.word}}">
+                    <td>
+                      <word-link word="::word" />
+                    </td>
+                    <td ng-bind="word.probability.toFixed(4)"></td>
+                  </tr>
+                </tbody>
+              </table>
+              <div class="panel-footer seq-foot">
+                <ng-pluralize count="sequenceCompare.words.length||0" when="{0:'No words',1:'Top word',other:'Top {} words'}"></ng-pluralize>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="loading" ng-hide="topic">Loading...</div>
+  </div>
+</div>
+
+<div ng-cloak ui-view></div>
diff --git a/vipra-ui/app/html/topics/show.html b/vipra-ui/app/html/topics/show.html
index 1ae1e69a..8b2ed46b 100644
--- a/vipra-ui/app/html/topics/show.html
+++ b/vipra-ui/app/html/topics/show.html
@@ -27,15 +27,13 @@
         </ul>
       </li>
       <li class="active">
-        <a data-target=".tab-info" data-toggle="tab" bs-tab><i class="fa fa-file-text-o"></i></a>
+        <a><i class="fa fa-file-text-o"></i></a>
       </li>
       <li>
-        <a data-target=".tab-sequences" data-toggle="tab" bs-tab>Sequences</a>
+        <a ui-sref="topics.show.sequences({id:topic.id})">Sequences</a>
       </li>
       <li>
-        <a ui-sref="topics.show.articles({id:topic.id})">
-          Articles
-        </a>
+        <a ui-sref="topics.show.articles({id:topic.id})">Articles</a>
       </li>
       <li>
          <a ui-sref="network({type:'topics', id:topic.id})">
@@ -44,7 +42,7 @@
       </li>
     </ul>
     <div class="tab-content">
-      <div role="tabpanel" class="tab-pane active tab-info">
+      <div role="tabpanel" class="tab-pane active">
         <h3>Relevance <info text="Topic relevance: topic distribution sum divided by number of articles in a sequence"/></h3>
         <div class="panel panel-default">
           <div class="panel-heading">
@@ -70,90 +68,6 @@
         <h3>Word evolution <info text="Word evolution: absolute word probability per sequence"/></h3>
         <word-evolution topic="topic"/>
       </div>
-      <div role="tabpanel" class="tab-pane tab-sequences">
-        <h3>Sequences</h3>
-        <div class="row">
-          <div ng-class="{'col-md-12':!sequenceCompare,'col-md-5':sequenceCompare}">
-            <div class="panel panel-default">
-              <div class="panel-heading seq-head">
-                <small>Sequence:</small>
-                <sequence-dropdown ng-model="topicsShowModels.sequence" sequences="topic.sequences"></sequence-dropdown>
-                <div class="pull-right" ng-if="!sequenceCompare">
-                  <small>Compare to:</small>
-                  <sequence-dropdown ng-model="topicsShowModels.sequenceCompare" sequences="topic.sequences"></sequence-dropdown>
-                </div>
-              </div>
-              <table class="table table-condensed table-bordered table-hover table-fixed table-compare" ng-show="sequence" ng-cloak>
-                <thead>
-                  <tr>
-                    <th ng-model="topicsShowModels.seqSortWords" sort-by="word">Word</th>
-                    <th ng-model="topicsShowModels.seqSortWords" sort-by="probability">Probability</th>
-                  </tr>
-                </thead>
-                <tbody>
-                  <tr class="compare-row" ng-repeat="word in sequence.words | orderBy:topicsShowModels.seqSortWords" ng-attr-word="{{::word.word}}">
-                    <td>
-                      <word-link word="::word" />
-                    </td>
-                    <td ng-bind="word.probability.toFixed(4)"></td>
-                  </tr>
-                </tbody>
-              </table>
-              <div class="panel-footer seq-foot" ng-show="sequence" ng-cloak>
-                <ng-pluralize count="sequence.words.length||0" when="{0:'No words',1:'Top word',other:'Top {} words'}"></ng-pluralize>
-              </div>
-            </div>
-          </div>
-          <div class="col-md-2" ng-if="sequenceCompare">
-            <div class="panel panel-default">
-              <div class="panel-heading seq-head"></div>
-              <table class="table table-condensed table-bordered table-hover table-fixed table-compare" ng-show="sequence" ng-cloak>
-                <thead>
-                  <tr>
-                    <th class="text-center" ng-model="topicsShowModels.seqSortWords" sort-by="change">Change</th>
-                  </tr>
-                </thead>
-                <tbody>
-                  <tr class="compare-row" ng-repeat="word in sequence.words | orderBy:topicsShowModels.seqSortWords" ng-attr-word="{{::word.word}}">
-                    <td class="text-center">
-                      <change-pos change="word.change"/>
-                    </td>
-                  </tr>
-                </tbody>
-              </table>
-              <div class="panel-footer seq-foot" ng-show="sequence" ng-cloak></div>
-            </div>
-          </div>
-          <div class="col-md-5" ng-if="sequenceCompare">
-            <div class="panel panel-default">
-              <div class="panel-heading seq-head">
-                <small>Sequence:</small>
-                <sequence-dropdown ng-model="topicsShowModels.sequenceCompare" sequences="topic.sequences"></sequence-dropdown>
-                <button type="button" class="close" ng-click="closeCompare()" analytics-on analytics-event="Topic Sequence Compare (Close)" analytics-category="Topic actions"><span aria-hidden="true">&times;</span></button>
-              </div>
-              <table class="table table-condensed table-bordered table-hover table-fixed table-compare">
-                <thead>
-                  <tr>
-                    <th ng-model="topicsShowModels.seqSortWords" sort-by="word">Word</th>
-                    <th ng-model="topicsShowModels.seqSortWords" sort-by="probability">Probability</th>
-                  </tr>
-                </thead>
-                <tbody>
-                  <tr class="compare-row" ng-repeat="word in sequenceCompare.words | orderBy:topicsShowModels.seqSortWords" ng-attr-word="{{::word.word}}">
-                    <td>
-                      <word-link word="::word" />
-                    </td>
-                    <td ng-bind="word.probability.toFixed(4)"></td>
-                  </tr>
-                </tbody>
-              </table>
-              <div class="panel-footer seq-foot">
-                <ng-pluralize count="sequenceCompare.words.length||0" when="{0:'No words',1:'Top word',other:'Top {} words'}"></ng-pluralize>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
     </div>
     <div class="loading" ng-hide="topic">Loading...</div>
   </div>
diff --git a/vipra-ui/app/html/words/show.html b/vipra-ui/app/html/words/show.html
index 183a37d0..26f957f0 100644
--- a/vipra-ui/app/html/words/show.html
+++ b/vipra-ui/app/html/words/show.html
@@ -6,7 +6,7 @@
   <div>
     <ul class="nav nav-tabs" role="tablist">
       <li class="active">
-        <a data-target=".tab-info" data-toggle="tab" bs-tab><i class="fa fa-file-text-o"></i></a>
+        <a><i class="fa fa-file-text-o"></i></a>
       </li>
       <li>
         <a ui-sref="words.show.topics({id:word.word})">
@@ -20,7 +20,7 @@
       </li>
     </ul>
     <div class="tab-content">
-      <div role="tabpanel" class="tab-pane active tab-info">
+      <div role="tabpanel" class="tab-pane active">
         <h3>Info</h3>
         <table class="table table-bordered table-condensed table-fixed">
           <tbody>
diff --git a/vipra-ui/app/js/app.js b/vipra-ui/app/js/app.js
index e9fe0924..b94779fb 100644
--- a/vipra-ui/app/js/app.js
+++ b/vipra-ui/app/js/app.js
@@ -13,7 +13,6 @@
     'ngAnimate',
     'ui.router',
     'cfp.hotkeys',
-    'nya.bootstrap.select',
     'angulartics',
     'angulartics.google.analytics',
     'angular-loading-bar',
@@ -86,6 +85,12 @@
         controller: 'TopicsShowController'
       });
 
+      $stateProvider.state('topics.show.sequences', {
+        url: '/sequences',
+        templateUrl: 'html/topics/sequences.html',
+        controller: 'TopicsSequencesController'
+      });
+
       $stateProvider.state('topics.show.articles', {
         url: '/articles',
         templateUrl: 'html/topics/articles.html',
diff --git a/vipra-ui/app/js/controllers.js b/vipra-ui/app/js/controllers.js
index f1b3f83f..4eb33008 100644
--- a/vipra-ui/app/js/controllers.js
+++ b/vipra-ui/app/js/controllers.js
@@ -1499,6 +1499,22 @@
         }
       };
 
+      $scope.$on('$stateChangeSuccess', function(e, toState) {
+        if(toState.name === 'topics.show') {
+          $timeout(function() {
+            $scope.redrawRelevanceGraph();
+          }, 100);
+        }
+      });
+    }
+  ]);
+
+  /**
+   * Topic Show Sequences route
+   */
+  app.controller('TopicsSequencesController', ['$scope', '$state', '$stateParams', 'TopicFactory', 'SequenceFactory',
+    function($scope, $state, $stateParams, TopicFactory, SequenceFactory) {
+      
       $scope.recalcSeqChange = function() {
         if (!$scope.sequence || !$scope.sequenceCompare) return;
         wordLoop:
@@ -1545,21 +1561,13 @@
         });
       });
 
-      $('.tab-sequences').on('mouseleave', '.compare-row', function() {
+      $('body').on('mouseleave', '.compare-row', function() {
         $('[word="' + $(this).attr('word') + '"]').removeClass('highlight');
       });
 
-      $('.tab-sequences').on('mouseenter', '.compare-row', function() {
+      $('body').on('mouseenter', '.compare-row', function() {
         $('[word="' + $(this).attr('word') + '"]').addClass('highlight');
       });
-
-      $scope.$on('$stateChangeSuccess', function(e, toState) {
-        if(toState.name === 'topics.show') {
-          $timeout(function() {
-            $scope.redrawRelevanceGraph();
-          }, 100);
-        }
-      });
     }
   ]);
 
diff --git a/vipra-ui/app/js/directives.js b/vipra-ui/app/js/directives.js
index 4ec8f13e..4747f268 100644
--- a/vipra-ui/app/js/directives.js
+++ b/vipra-ui/app/js/directives.js
@@ -291,29 +291,6 @@
     };
   }]);
 
-  app.directive('windowDropdown', [function() {
-    return {
-      scope: {
-        ngModel: '=',
-        windows: '=',
-        dropup: '@'
-      },
-      link: function($scope) {
-        $scope.showDropup = $scope.dropup === 'true';
-
-        $scope.$watch('windows', function(newValue) {
-          if (newValue) {
-            for (var i = 0, w; i < $scope.windows.length; i++) {
-              w = $scope.windows[i];
-              w.label = Vipra.windowLabel(w.startDate, w.windowResolution);
-            }
-          }
-        });
-      },
-      templateUrl: '/html/directives/window-dropdown.html'
-    };
-  }]);
-
   app.directive('sortBy', [function() {
     return {
       restrict: 'A',
diff --git a/vipra-ui/app/less/app.less b/vipra-ui/app/less/app.less
index a49479df..b3d6b2c4 100644
--- a/vipra-ui/app/less/app.less
+++ b/vipra-ui/app/less/app.less
@@ -211,18 +211,6 @@ td {
   }
 }
 
-.nya-bs-condensed {
-  width: auto !important;
-  .dropdown-toggle {
-    padding: 5px 25px 5px 10px;
-    font-size: 12px;
-    line-height: 1.5;
-  }
-  .dropdown-menu li a {
-    padding: 2px 12px;
-  }
-}
-
 .topic-share {
   width: 75px;
 }
@@ -740,9 +728,9 @@ entity-menu {
   }
 }
 
-.topic-show .tab-info {
+.topic-show {
   .panel {
-    height: 500px;
+    height: 486px;
   }
   .wrapper {
     padding: 15px;
@@ -1072,6 +1060,11 @@ entity-menu {
   }
 }
 
+.form-control.inline {
+  width: auto;
+  display: inline-block;
+}
+
 [ng\:cloak], [ng-cloak], .ng-cloak {
   display: none !important;
 }
diff --git a/vipra-ui/bower.json b/vipra-ui/bower.json
index a84e1b26..97208360 100644
--- a/vipra-ui/bower.json
+++ b/vipra-ui/bower.json
@@ -27,7 +27,6 @@
     "highcharts": "^4.x",
     "vis": "^4.x",
     "moment": "^2.x",
-    "nya-bootstrap-select": "^2.x",
     "font-awesome": "^4.x",
     "awesome-bootstrap-checkbox": "^0.x",
     "randomcolor": "randomColor#^0.x",
diff --git a/vipra-ui/gulpfile.js b/vipra-ui/gulpfile.js
index abee6c08..5944ae18 100644
--- a/vipra-ui/gulpfile.js
+++ b/vipra-ui/gulpfile.js
@@ -28,7 +28,6 @@ var assets = {
     'bower_components/highcharts/modules/no-data-to-display.js',
     'bower_components/vis/dist/vis.min.js',
     'bower_components/moment/min/moment-with-locales.min.js',
-    'bower_components/nya-bootstrap-select/dist/js/nya-bs-select.min.js',
     'bower_components/randomcolor/randomColor.js',
     'bower_components/bootbox.js/bootbox.js',
     'bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
@@ -41,7 +40,6 @@ var assets = {
     'bower_components/bootstrap/dist/css/bootstrap.min.css',
     'bower_components/font-awesome/css/font-awesome.min.css',
     'bower_components/vis/dist/vis.min.css',
-    'bower_components/nya-bootstrap-select/dist/css/nya-bs-select.min.css',
     'bower_components/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css',
     'bower_components/angular-hotkeys/build/hotkeys.min.css',
     'bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
-- 
GitLab