(js) Fix mail labels handling in the Mail module

This commit is contained in:
Francis Lachapelle
2015-09-10 11:44:09 -04:00
parent f3a5df37ae
commit b646e35f5d
3 changed files with 26 additions and 10 deletions

View File

@@ -739,6 +739,7 @@
NSDictionary *content, *result;
BOOL addOrRemove;
NGImap4Client *client;
id flag;
int i;
@@ -751,7 +752,13 @@
// We unescape our flags
for (i = [flags count]-1; i >= 0; i--)
[flags replaceObjectAtIndex: i withObject: [[flags objectAtIndex: i] fromCSSIdentifier]];
{
flag = [flags objectAtIndex: i];
if ([flag isKindOfClass: [NSString class]])
[flags replaceObjectAtIndex: i withObject: [flag fromCSSIdentifier]];
else
[flags removeObjectAtIndex: i];
}
co = [self clientObject];
client = [[co imap4Connection] client];

View File

@@ -135,18 +135,21 @@
</span>
</div>
</div>
<md-chips class="sg-readonly" ng-model="viewer.message.flags" ng-change="viewer.changeFlags()">
<md-chips class="sg-readonly"
ng-model="viewer.message.flags"
md-on-append="$chip.name"
md-on-remove="viewer.message.removeTag($chip)">
<md-chip-template>{{viewer.service.$tags[$chip][0]}}</md-chip-template>
<md-autocomplete
md-selected-item="viewer.tags.selected"
md-selected-item-change="viewer.message.addTag(viewer.tags.selected)"
md-selected-item-change="viewer.message.addTag(viewer.tags.selected.name)"
md-search-text="viewer.tags.searchText"
md-items="tag in viewer.service.filterTags(viewer.tags.searchText)"
label:placeholder="Add a tag">
<md-item-template>
<span md-highlight-text="viewer.tags.searchText"
md-highlight-flags="^i">{{tag}}</span>
</md-item-template>
<md-item-template>
<span md-highlight-text="viewer.tags.searchText"
md-highlight-flags="^i">{{tag.description}}</span>
</md-item-template>
</md-autocomplete>
</md-chips>
</md-toolbar>

View File

@@ -86,10 +86,16 @@
* @returns a collection of strings
*/
Message.filterTags = function(query) {
var re = new RegExp(query, 'i');
return _.filter(_.keys(Message.$tags), function(tag) {
return tag.search(re) != -1;
var re = new RegExp(query, 'i'),
results = [];
_.forEach(_.keys(Message.$tags), function(tag) {
var pair = Message.$tags[tag];
if (pair[0].search(re) != -1) {
results.push({ name: tag, description: pair[0], color: pair[1] });
}
});
return results;
};
/**