diff --git a/res/app/device-list/device-list-details.jade b/res/app/device-list/device-list-details.jade index 37d4c207..e29765ce 100644 --- a/res/app/device-list/device-list-details.jade +++ b/res/app/device-list/device-list-details.jade @@ -3,3 +3,4 @@ table.table.table-hover.dataTable tr th(ng-repeat='column in columns()', ng-if='column.selected', ng-class='["sort-" + (sortedColumns[column.name].order || "none")]', ng-click='sortBy(column, $event.shiftKey)') span {{ columnDefinitions[column.name].title | translate }} +device-list-empty(tracker='tracker()') diff --git a/res/app/device-list/device-list-empty-directive.js b/res/app/device-list/device-list-empty-directive.js new file mode 100644 index 00000000..a4986907 --- /dev/null +++ b/res/app/device-list/device-list-empty-directive.js @@ -0,0 +1,35 @@ +module.exports = function DeviceListEmptyDirective() { + return { + restrict: 'E' + , template: require('./device-list-empty.jade') + , scope: { + tracker: '&tracker' + } + , link: function (scope) { + var tracker = scope.tracker() + + scope.empty = true + + function update() { + var oldEmpty = scope.empty + , newEmpty = !tracker.devices.length + + if (oldEmpty !== newEmpty) { + scope.$apply(function() { + scope.empty = newEmpty + }) + } + } + + tracker.on('add', update) + tracker.on('change', update) + tracker.on('remove', update) + + scope.$on('$destroy', function() { + tracker.removeListener('add', update) + tracker.removeListener('change', update) + tracker.removeListener('remove', update) + }) + } + } +} diff --git a/res/app/device-list/device-list-empty.jade b/res/app/device-list/device-list-empty.jade new file mode 100644 index 00000000..fd95831d --- /dev/null +++ b/res/app/device-list/device-list-empty.jade @@ -0,0 +1 @@ +nothing-to-show(message='{{"No devices connected"|translate}}', icon='fa-sitemap', ng-show='empty') diff --git a/res/app/device-list/device-list-icons.jade b/res/app/device-list/device-list-icons.jade index 115dd6c6..8733d1b3 100644 --- a/res/app/device-list/device-list-icons.jade +++ b/res/app/device-list/device-list-icons.jade @@ -1,3 +1,4 @@ ul.devices-icon-view +device-list-empty(tracker='tracker()') .clear-fix .line diff --git a/res/app/device-list/device-list.css b/res/app/device-list/device-list.css index ed920995..6156e616 100644 --- a/res/app/device-list/device-list.css +++ b/res/app/device-list/device-list.css @@ -175,7 +175,3 @@ ul.devices-icon-view .device-is-busy .device-photo-small img { padding-left: 10px; padding-right: 10px; } - -.device-list-details-content { - min-height: 300px; -} diff --git a/res/app/device-list/device-list.jade b/res/app/device-list/device-list.jade index ef64ca3a..723dee7b 100644 --- a/res/app/device-list/device-list.jade +++ b/res/app/device-list/device-list.jade @@ -1,5 +1,5 @@ div.stf-device-list - .row.stf-stats-container(ng-show='tracker.devices.length') + .row.stf-stats-container .col-md-12 device-list-stats(tracker='tracker') @@ -13,8 +13,6 @@ div.stf-device-list i.fa.fa-th-large span(translate) Devices div.device-list-devices-content - nothing-to-show(message='{{"No devices connected"|translate}}', icon='fa-sitemap', ng-show='!tracker.devices.length') - .filtering-buttons.pull-right input(type='search',results='5', autosave='deviceSearch' name='deviceSearch', ng-model='deviceSearch', ng-change='deviceSearchChanged()', @@ -34,8 +32,6 @@ div.stf-device-list i.fa.fa-list span(translate) Details div.device-list-details-content - nothing-to-show(message='{{"No devices connected"|translate}}', icon='fa-sitemap', ng-show='!tracker.devices.length') - .filtering-buttons div(ng-show='ngTableEnabled') clear-button(ng-click="clearSorting()") diff --git a/res/app/device-list/index.js b/res/app/device-list/index.js index 2df3a2d0..afab2fbc 100644 --- a/res/app/device-list/index.js +++ b/res/app/device-list/index.js @@ -19,3 +19,4 @@ module.exports = angular.module('device-list', [ .directive('deviceListDetails', require('./device-list-details-directive')) .directive('deviceListIcons', require('./device-list-icons-directive')) .directive('deviceListStats', require('./device-list-stats-directive')) + .directive('deviceListEmpty', require('./device-list-empty-directive'))