From d11d9cbbf777c33c67a4ec05342bff3c9cdffacb Mon Sep 17 00:00:00 2001 From: Diego Sampaio <chinello@gmail.com> Date: Fri, 1 Jul 2016 16:12:18 -0300 Subject: [PATCH] Add autocomplete feature to livechat user management --- .../client/views/app/livechatUsers.html | 4 +- .../client/views/app/livechatUsers.js | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/packages/rocketchat-livechat/client/views/app/livechatUsers.html b/packages/rocketchat-livechat/client/views/app/livechatUsers.html index 87edaf05998..ae99fd5ef78 100644 --- a/packages/rocketchat-livechat/client/views/app/livechatUsers.html +++ b/packages/rocketchat-livechat/client/views/app/livechatUsers.html @@ -2,7 +2,7 @@ <h2>{{_ "Livechat_managers"}}</h2> <form id="form-manager" class="inline"> <label>{{_ "Add_manager"}}</label> - <input type="text" name="username" placeholder="{{_ "Enter_a_username"}}"> + {{> inputAutocomplete settings=managerAutocompleteSettings name="username" class="search" placeholder=(_ "Search_by_username") autocomplete="off"}} <button name="add" class="button primary">{{_ "Add"}}</button> </form> <div class="list"> @@ -36,7 +36,7 @@ <h2>{{_ "Livechat_agents"}}</h2> <form id="form-agent" class="inline"> <label>{{_ "Add_agent"}}</label> - <input type="text" name="username" placeholder="{{_ "Enter_a_username"}}"> + {{> inputAutocomplete settings=agentAutocompleteSettings name="username" class="search" placeholder=(_ "Search_by_username") autocomplete="off"}} <button name="add" class="button primary">{{_ "Add"}}</button> </form> <div class="list"> diff --git a/packages/rocketchat-livechat/client/views/app/livechatUsers.js b/packages/rocketchat-livechat/client/views/app/livechatUsers.js index 2977a908528..f15a654a084 100644 --- a/packages/rocketchat-livechat/client/views/app/livechatUsers.js +++ b/packages/rocketchat-livechat/client/views/app/livechatUsers.js @@ -15,6 +15,50 @@ Template.livechatUsers.helpers({ if (this.emails && this.emails.length > 0) { return this.emails[0].address; } + }, + agentAutocompleteSettings() { + return { + limit: 10, + // inputDelay: 300 + rules: [{ + // @TODO maybe change this 'collection' and/or template + collection: 'UserAndRoom', + subscription: 'userAutocomplete', + field: 'username', + template: Template.userSearch, + noMatchTemplate: Template.userSearchEmpty, + matchAll: true, + filter: { + exceptions: _.map(AgentUsers.find({}, { fields: { username: 1 } }).fetch(), user => { return user.username; }) + }, + selector(match) { + return { username: match }; + }, + sort: 'username' + }] + }; + }, + managerAutocompleteSettings() { + return { + limit: 10, + // inputDelay: 300 + rules: [{ + // @TODO maybe change this 'collection' and/or template + collection: 'UserAndRoom', + subscription: 'userAutocomplete', + field: 'username', + template: Template.userSearch, + noMatchTemplate: Template.userSearchEmpty, + matchAll: true, + filter: { + exceptions: _.map(ManagerUsers.find({}, { fields: { username: 1 } }).fetch(), user => { return user.username; }) + }, + selector(match) { + return { username: match }; + }, + sort: 'username' + }] + }; } }); -- GitLab