Files
NodeBB/public/src/modules/autocomplete.js

114 lines
2.6 KiB
JavaScript
Raw Normal View History

2015-02-19 15:56:04 -05:00
'use strict';
define('autocomplete', function () {
2015-02-19 15:56:04 -05:00
var module = {};
2015-06-15 16:03:38 -04:00
module.user = function (input, onselect) {
app.loadJQueryUI(function () {
2015-06-15 16:03:38 -04:00
input.autocomplete({
2016-03-03 18:15:20 +02:00
delay: 200,
open: function () {
$(this).autocomplete('widget').css('z-index', 20000);
},
2015-06-15 16:03:38 -04:00
select: onselect,
source: function (request, response) {
socket.emit('user.search', {query: request.term}, function (err, result) {
2015-06-08 16:58:53 -04:00
if (err) {
return app.alertError(err.message);
}
2015-02-19 15:56:04 -05:00
2015-06-08 16:58:53 -04:00
if (result && result.users) {
var names = result.users.map(function (user) {
var username = $('<div/>').html(user.username).text();
2015-06-08 16:58:53 -04:00
return user && {
2016-03-03 18:15:20 +02:00
label: username,
value: username,
2015-06-08 16:58:53 -04:00
user: {
uid: user.uid,
name: user.username,
2017-02-17 19:31:21 -07:00
slug: user.userslug,
},
2015-06-08 16:58:53 -04:00
};
});
response(names);
}
$('.ui-autocomplete a').attr('data-ajaxify', 'false');
});
2017-02-17 19:31:21 -07:00
},
2015-06-08 16:58:53 -04:00
});
2015-02-19 15:56:04 -05:00
});
};
module.group = function (input, onselect) {
app.loadJQueryUI(function () {
2015-06-15 16:03:38 -04:00
input.autocomplete({
2016-03-03 18:15:20 +02:00
delay: 200,
2015-06-15 16:03:38 -04:00
select: onselect,
source: function (request, response) {
2015-06-08 16:58:53 -04:00
socket.emit('groups.search', {
2017-02-17 19:31:21 -07:00
query: request.term,
}, function (err, results) {
2015-06-08 16:58:53 -04:00
if (err) {
return app.alertError(err.message);
}
2015-06-08 16:58:53 -04:00
if (results && results.length) {
var names = results.map(function (group) {
2015-06-08 16:58:53 -04:00
return group && {
label: group.name,
value: group.name,
group: {
name: group.name,
2017-02-17 19:31:21 -07:00
slug: group.slug,
},
2015-06-08 16:58:53 -04:00
};
});
response(names);
}
$('.ui-autocomplete a').attr('data-ajaxify', 'false');
});
2017-02-17 19:31:21 -07:00
},
2015-06-08 16:58:53 -04:00
});
});
};
2016-12-19 21:40:09 +03:00
module.tag = function (input, onselect) {
app.loadJQueryUI(function () {
input.autocomplete({
delay: 100,
open: function () {
$(this).autocomplete('widget').css('z-index', 20000);
},
select: function (event, ui) {
onselect = onselect || function () {};
var e = jQuery.Event('keypress');
e.which = 13;
e.keyCode = 13;
setTimeout(function () {
input.trigger(e);
}, 100);
onselect(event, ui);
},
source: function (request, response) {
socket.emit('topics.autocompleteTags', {
query: request.term,
2017-02-17 19:31:21 -07:00
cid: ajaxify.data.cid || 0,
2016-12-19 21:40:09 +03:00
}, function (err, tags) {
if (err) {
return app.alertError(err.message);
}
if (tags) {
response(tags);
}
$('.ui-autocomplete a').attr('data-ajaxify', 'false');
});
2017-02-17 19:31:21 -07:00
},
2016-12-19 21:40:09 +03:00
});
});
};
2015-02-19 15:56:04 -05:00
return module;
});