diff options
Diffstat (limited to 'webclient')
-rw-r--r-- | webclient/index.html | 1 | ||||
-rw-r--r-- | webclient/recents/recents-filter.js | 47 | ||||
-rw-r--r-- | webclient/recents/recents.html | 2 |
3 files changed, 49 insertions, 1 deletions
diff --git a/webclient/index.html b/webclient/index.html index f6d3744419..16f0e8ac5f 100644 --- a/webclient/index.html +++ b/webclient/index.html @@ -20,6 +20,7 @@ <script src="home/home-controller.js"></script> <script src="login/login-controller.js"></script> <script src="recents/recents-controller.js"></script> + <script src="recents/recents-filter.js"></script> <script src="room/room-controller.js"></script> <script src="room/room-directive.js"></script> <script src="settings/settings-controller.js"></script> diff --git a/webclient/recents/recents-filter.js b/webclient/recents/recents-filter.js new file mode 100644 index 0000000000..45653fca96 --- /dev/null +++ b/webclient/recents/recents-filter.js @@ -0,0 +1,47 @@ +/* + Copyright 2014 matrix.org + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +'use strict'; + +angular.module('RecentsController') +.filter('orderRecents', function() { + return function(rooms) { + + // Transform the dict into an array + // The key, room_id, is already in value objects + var filtered = []; + angular.forEach(rooms, function(value, key) { + filtered.push( value ); + }); + + // And time sort them + // The room with the lastest message at first + filtered.sort(function (a, b) { + // Invite message does not have a body message nor ts + // Puth them at the top of the list + if (undefined === a.lastMsg) { + return -1; + } + else if (undefined === b.lastMsg) { + return 1; + } + else { + return b.lastMsg.ts - a.lastMsg.ts; + } + }); + return filtered; + }; +}); \ No newline at end of file diff --git a/webclient/recents/recents.html b/webclient/recents/recents.html index 9817d1acee..6b9abce02c 100644 --- a/webclient/recents/recents.html +++ b/webclient/recents/recents.html @@ -1,6 +1,6 @@ <div ng-controller="RecentsController" data-ng-init="onInit()"> <table class="recentsTable"> - <tbody ng-repeat="(rm_id, room) in rooms" ng-click="goToPage('room/' + (room.room_alias ? room.room_alias : rm_id) )" class ="recentsRoom" > + <tbody ng-repeat="(rm_id, room) in rooms | orderRecents" ng-click="goToPage('room/' + (room.room_alias ? room.room_alias : rm_id) )" class ="recentsRoom" > <tr> <td class="recentsRoomName"> {{ room.room_display_name }} |