diff --git a/html/src/app.js b/html/src/app.js index 83795c7e..b7ee846a 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -5308,6 +5308,7 @@ speechSynthesis.getVoices(); $app.data.orderFriendsGroup2 = configRepository.getBool('orderFriendGroup2'); $app.data.orderFriendsGroup3 = configRepository.getBool('orderFriendGroup3'); $app.data.orderFriendsGroupPrivate = configRepository.getBool('orderFriendGroupPrivate'); + $app.data.orderFriendsGroupStatus = configRepository.getBool('orderFriendGroupPrivate'); $app.data.orderFriendsGroupGPS = configRepository.getBool('orderFriendGroupGPS'); var saveOrderFriendGroup = function () { configRepository.setBool('orderFriendGroup0', this.orderFriendsGroup0); @@ -5315,6 +5316,7 @@ speechSynthesis.getVoices(); configRepository.setBool('orderFriendGroup2', this.orderFriendsGroup2); configRepository.setBool('orderFriendGroup3', this.orderFriendsGroup3); configRepository.setBool('orderFriendGroupPrivate', this.orderFriendsGroupPrivate); + configRepository.setBool('orderFriendsGroupStatus', this.orderFriendsGroupStatus); configRepository.setBool('orderFriendGroupGPS', this.orderFriendsGroupGPS); this.sortFriendsGroup0 = true; this.sortFriendsGroup1 = true; @@ -5324,6 +5326,7 @@ speechSynthesis.getVoices(); $app.watch.orderFriendsGroup2 = saveOrderFriendGroup; $app.watch.orderFriendsGroup3 = saveOrderFriendGroup; $app.watch.orderFriendsGroupPrivate = saveOrderFriendGroup; + $app.watch.orderFriendsGroupStatus = saveOrderFriendGroup; $app.watch.orderFriendsGroupGPS = saveOrderFriendGroup; $app.methods.fetchActiveFriend = function (userId) { @@ -5811,6 +5814,62 @@ speechSynthesis.getVoices(); return 0; }; + // status + var compareByStatus = function (a, b) { + if ((typeof a.ref === 'undefined') || (typeof b.ref === 'undefined')) { + return 0; + } + if (($app.orderFriendsGroupPrivate) && ((a.ref.location !== 'private') || (b.ref.location !== 'private'))) { + return 0; + } + if (a.ref.status === b.ref.status) { + return 0; + } + switch (b.ref.status) { + case 'join me': + switch (a.ref.status) { + case 'active': + return 1; + case 'ask me': + return 1; + case 'busy': + return 1; + } + break; + case 'active': + switch (a.ref.status) { + case 'join me': + return -1; + case 'ask me': + return 1; + case 'busy': + return 1; + } + break; + case 'ask me': + switch (a.ref.status) { + case 'join me': + return -1; + case 'active': + return -1; + case 'busy': + return 1; + } + break; + case 'busy': + switch (a.ref.status) { + case 'join me': + return -1; + case 'active': + return -1; + case 'ask me': + return -1; + } + break; + } + return 0; + }; + // location at var compareByLocationAt = function (a, b) { if (a.$location_at < b.$location_at) { @@ -5828,6 +5887,9 @@ speechSynthesis.getVoices(); if (this.orderFriendsGroupPrivate) { this.friendsGroupA_.sort(compareByPrivate); } + if (this.orderFriendsGroupStatus) { + this.friendsGroupA_.sort(compareByStatus); + } return this.friendsGroupA_; } if (this.sortFriendsGroup0) { @@ -5836,6 +5898,9 @@ speechSynthesis.getVoices(); if (this.orderFriendsGroupPrivate) { this.friendsGroup0_.sort(compareByPrivate); } + if (this.orderFriendsGroupStatus) { + this.friendsGroup0_.sort(compareByStatus); + } } return this.friendsGroup0_; }; @@ -5846,6 +5911,9 @@ speechSynthesis.getVoices(); if (this.orderFriendsGroupPrivate) { this.friendsGroupB_.sort(compareByPrivate); } + if (this.orderFriendsGroupStatus) { + this.friendsGroupB_.sort(compareByStatus); + } return this.friendsGroupB_; } if (this.sortFriendsGroup1) { @@ -5854,6 +5922,9 @@ speechSynthesis.getVoices(); if (this.orderFriendsGroupPrivate) { this.friendsGroup1_.sort(compareByPrivate); } + if (this.orderFriendsGroupStatus) { + this.friendsGroup1_.sort(compareByStatus); + } } return this.friendsGroup1_; }; diff --git a/html/src/index.pug b/html/src/index.pug index 3e0c9fd9..fed04e93 100644 --- a/html/src/index.pug +++ b/html/src/index.pug @@ -34,9 +34,9 @@ html el-form(ref="loginForm" :model="loginForm" :rules="loginForm.rules" @submit.native.prevent="login()") el-form-item(label="Username or Email" prop="username" required) el-input(v-model="loginForm.username" name="username" placeholder="Username or Email" clearable) - el-form-item(label="Password" prop="password" required) + el-form-item(label="Password" prop="password" required style="margin-top:5px") el-input(type="password" v-model="loginForm.password" name="password" placeholder="Password" clearable show-password) - el-checkbox(v-model="loginForm.saveCredentials") Save Credentials + el-checkbox(v-model="loginForm.saveCredentials" style="margin-top:15px") Save Credentials el-form-item(style="margin-top:15px") el-button(native-type="submit" type="primary" :loading="loginForm.loading" style="width:100%") Login el-form-item @@ -697,6 +697,9 @@ html div.options-container-item span.name Sort Private to bottom el-switch(v-model="orderFriendsGroupPrivate") + div.options-container-item + span.name Sort by status + el-switch(v-model="orderFriendsGroupStatus") div.options-container-item span.name Sort GPS to top el-switch(v-model="orderFriendsGroupGPS")