From 31f2e4b549945bb15fffa8e880d4e3ba69a9b7f7 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 24 Sep 2015 16:48:20 -0400 Subject: [PATCH] (js) Fix selected message class in advanced search Also improved display of accounts subheaders. --- .../MailerUI/UIxMailFolderTemplate.wox | 8 ++--- UI/Templates/MailerUI/UIxMailMainFrame.wox | 29 +++++++++-------- .../js/Mailer/Mailbox.service.js | 11 +++++++ UI/WebServerResources/js/Mailer/Mailer.app.js | 15 +++++---- .../js/Mailer/VirtualMailbox.service.js | 31 +++++++++++++++++-- .../scss/core/typography.scss | 6 ++++ 6 files changed, 70 insertions(+), 30 deletions(-) diff --git a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox index 8e0455482..313b4dd53 100644 --- a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox +++ b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox @@ -208,12 +208,12 @@ + ng-class="{'md-bg': mailbox.selectedFolder.isSelectedMessage(currentMessage.uid, currentMessage.$mailbox.path), + unread: !currentMessage.isread}" + ng-click="mailbox.selectMessage(currentMessage)">
diff --git a/UI/Templates/MailerUI/UIxMailMainFrame.wox b/UI/Templates/MailerUI/UIxMailMainFrame.wox index ef8cb9ee0..a83778aa8 100644 --- a/UI/Templates/MailerUI/UIxMailMainFrame.wox +++ b/UI/Templates/MailerUI/UIxMailMainFrame.wox @@ -231,21 +231,20 @@
-
- {{account.name}} -
- - add_circle_outline - - - people - -
+
+
{{account.name}}
+
+ + add_circle_outline + + + people +
diff --git a/UI/WebServerResources/js/Mailer/Mailbox.service.js b/UI/WebServerResources/js/Mailer/Mailbox.service.js index 07af203f1..0e92cd3b4 100644 --- a/UI/WebServerResources/js/Mailer/Mailbox.service.js +++ b/UI/WebServerResources/js/Mailer/Mailbox.service.js @@ -224,6 +224,17 @@ }; /** + * @function isSelectedMessage + * @memberof Mailbox.prototype + * @desc Check if the specified message is selected. + * @param {string} messageId + * @returns true if the specified message is selected + */ + Mailbox.prototype.isSelectedMessage = function(messageId) { + return this.selectedMessage == messageId; + }; + + /** * @function $filter * @memberof Mailbox.prototype * @desc Fetch the messages metadata of the mailbox diff --git a/UI/WebServerResources/js/Mailer/Mailer.app.js b/UI/WebServerResources/js/Mailer/Mailer.app.js index 0cad55d35..b3906bcb5 100644 --- a/UI/WebServerResources/js/Mailer/Mailer.app.js +++ b/UI/WebServerResources/js/Mailer/Mailer.app.js @@ -191,17 +191,14 @@ return mailbox; }; - if (Mailbox.$virtualMode) - return Mailbox.selectedFolder; - return _find(stateAccount.$mailboxes); } /** * @ngInject */ - stateMessages.$inject = ['$q', 'Mailbox', 'stateMailbox']; - function stateMessages($q, Mailbox, stateMailbox) { + stateMessages.$inject = ['Mailbox', 'stateMailbox']; + function stateMessages(Mailbox, stateMailbox) { if (Mailbox.$virtualMode) return []; @@ -236,10 +233,12 @@ function stateVirtualMailboxOfMessage($q, Mailbox, decodeUriFilter, $stateParams) { var mailboxId = decodeUriFilter($stateParams.mailboxId); - if (Mailbox.$virtualMode) + if (Mailbox.$virtualMode) { + Mailbox.selectedFolder.resetSelectedMessage(); return _.find(Mailbox.selectedFolder.$mailboxes, function(mailboxObject) { return mailboxObject.path == mailboxId; }); + } else return $q.reject("No virtual mailbox defined for message"); } @@ -247,8 +246,8 @@ /** * @ngInject */ - stateMessage.$inject = ['Mailbox', 'encodeUriFilter', '$stateParams', '$state', 'stateMailbox']; - function stateMessage(Mailbox, encodeUriFilter, $stateParams, $state, stateMailbox) { + stateMessage.$inject = ['Mailbox', 'encodeUriFilter', '$stateParams', '$state', 'stateMailbox', 'stateMessages']; + function stateMessage(Mailbox, encodeUriFilter, $stateParams, $state, stateMailbox, stateMessages) { var message; message = _.find(stateMailbox.$messages, function(messageObject) { diff --git a/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js b/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js index 125bb7d88..fb4b03bec 100644 --- a/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js +++ b/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js @@ -59,7 +59,7 @@ /** * @function init - * @memberof Mailbox.prototype + * @memberof VirtualMailbox.prototype * @desc Extend instance with new data and compute additional attributes. * @param {object} data - attributes of mailbox */ @@ -103,9 +103,34 @@ this.$isLoading = false; }; + /** + * @function resetSelectedMessage + * @memberof VirtualMailbox.prototype + * @desc Delete 'selectedMessage' attribute of all submailboxes. + */ + VirtualMailbox.prototype.resetSelectedMessage = function() { + _.each(this.$mailboxes, function(mailbox) { + delete mailbox.selectedMessage; + }); + }; + + /** + * @function isSelectedMessage + * @memberof VirtualMailbox.prototype + * @desc Check if the message of the specified mailbox is selected. + * @param {string} messageId + * @param {string} mailboxPath + * @returns true if the specified message is selected + */ + VirtualMailbox.prototype.isSelectedMessage = function(messageId, mailboxPath) { + return angular.isDefined(_.find(this.$mailboxes, function(mailbox) { + return mailbox.path == mailboxPath && mailbox.selectedMessage == messageId; + })); + }; + /** * @function getLength - * @memberof Mailbox.prototype + * @memberof VirtualMailbox.prototype * @desc Used by md-virtual-repeat / md-on-demand * @returns the number of items in the mailbox */ @@ -124,7 +149,7 @@ /** * @function getItemAtIndex - * @memberof Mailbox.prototype + * @memberof VirtualMailbox.prototype * @desc Used by md-virtual-repeat / md-on-demand * @returns the message as the specified index */ diff --git a/UI/WebServerResources/scss/core/typography.scss b/UI/WebServerResources/scss/core/typography.scss index 5f1e92c23..40cbdd49a 100644 --- a/UI/WebServerResources/scss/core/typography.scss +++ b/UI/WebServerResources/scss/core/typography.scss @@ -369,6 +369,12 @@ html p { white-space: normal; } +.sg-no-wrap { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + .sg-label-outline { // See also .sg-outline-button in button.scss border-width: 1px;