1
0
mirror of https://github.com/linkedin/oncall.git synced 2025-11-30 23:44:59 +02:00

Make typeahead more specific in calendar page

This commit is contained in:
Daniel Wang
2017-05-08 15:09:29 -07:00
committed by Qingping Hou
parent 4ed569b8d6
commit ea4bf3026e
3 changed files with 19 additions and 5 deletions

View File

@@ -39,6 +39,16 @@ def on_get(req, resp):
cursor.execute(query, (keyword, keyword))
data['users'] = [{'full_name': r[0], 'name': r[1]} for r in cursor]
if 'team_users' in fields:
filter = '%s%%' % keyword
team = req.get_param('team', required=True)
query = '''SELECT `user`.`full_name`, `user`.`name`
FROM `team_user` JOIN `user` ON `team_user`.`user_id` = `user`.`id`
WHERE `team_user`.`team_id` = (SELECT `id` FROM `team` WHERE `name` = %s)
AND (`name` LIKE %s OR `full_name` LIKE %s)'''
cursor.execute(query, (team, filter, filter))
data['users'] = [{'full_name': r[0], 'name': r[1]} for r in cursor]
cursor.close()
connection.close()
resp.body = dumps(data)

View File

@@ -1147,7 +1147,7 @@
.append('<label class="label-col">User: </label>')
.append(
$('<div class="input-col" />')
.append('<input type="text" class="typeahead" id="inc-event-user" name="inc-event-user" placeholder="username" value="' + self.options.user + '" style="width:100px" /> ')
.append('<input type="text" class="typeahead" data-type="team_users" id="inc-event-user" name="inc-event-user" placeholder="username" value="' + self.options.user + '" style="width:100px" /> ')
)
)
.append('<label class="label-col">Start: </label>')

View File

@@ -820,9 +820,9 @@ var oncall = {
},
onModalOpen: function($modal){
if ($modal.hasClass('inc-create-event-modal')) {
oncall.typeahead.init(null, function(){$modal.find('#inc-role').trigger('change')});
oncall.typeahead.init(null, function(){$modal.find('#inc-role').trigger('change')}, self.data.teamName);
} else {
oncall.typeahead.init();
oncall.typeahead.init(null, null, self.data.teamName);
}
},
onEventDetailsModalOpen: function($modal, $calendar, $eventItem, evt){
@@ -2326,7 +2326,7 @@ var oncall = {
url: '/api/v0/',
field: 'input.typeahead'
},
init: function(urlType, changeCallback){
init: function(urlType, changeCallback, team){
var $field = $(this.data.field),
self = this;
@@ -2353,11 +2353,15 @@ var oncall = {
$(this).attr('value', $(this).val());
});
} else {
var url = self.data.url + 'search?fields=' + type + '&keyword=%QUERY';
if (team) {
url += '&team=' + team;
}
results = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: self.data.url + 'search?fields=users&keyword=%QUERY',
url: url,
wildcard: '%QUERY',
transform: function(response) {
return response.users