var ItemSearch = function (params) {
var self = this;
this.selected_items = [];
this.current_items = [];
this.current_items_full = [];
this.name_field = params.name_field;
this.id_field = params.id_field;
this.on_select = params.on_select;
this.placeholder = params.placeholder;
this.container_id = params.container_id;
this.panel_title = params.panel_title;
var pageSize = 20,
searchResults= null;
this.destroy = function(){
$('#'+self.container_id).empty();
}
var data = [];
this.init = function () {
self.render_form();
}
this.render_form = function () {
//
//
//
Filter timeline by jurisdiction
//
//
//
//
//
//
var search_panel = document.createElement("div");
search_panel.setAttribute('id','item_search_panel_'+self.container_id);
search_panel.setAttribute('class','panel panel-default' );
var search_panel_heading = document.createElement("div");
search_panel_heading.setAttribute('id','item_search_panel_heading'+self.container_id);
search_panel_heading.setAttribute('class','panel-heading' );
search_panel_heading.innerHTML = ' '+self.panel_title+'
';
var search_panel_body = document.createElement("div");
search_panel_body.setAttribute('id','item_search_panel_body'+self.container_id);
search_panel_body.setAttribute('class','panel-body' );
var search_panel_input_group = document.createElement("div");
search_panel_input_group.setAttribute('id','item_search_input-group'+self.container_id);
search_panel_input_group.setAttribute('class','input-group' );
search_panel_input_group.setAttribute('style','display: inline-block; width: 100%' );
var search_panel_input_wrapper = document.createElement("div");
search_panel_input_wrapper.setAttribute('style','display: inline-block; width: 90%' );
var item_search_input = document.createElement("select");
item_search_input.setAttribute('id','item_search_input'+self.container_id);
item_search_input.setAttribute('class','select2-input select2-default' );
var item_search_go_button = document.createElement("a");
item_search_go_button.setAttribute('id','item_search_go'+self.container_id);
item_search_go_button.setAttribute('class','btn btn-default btn-xs' );
item_search_go_button.setAttribute('style','width: 10%' );
item_search_go_button.innerHTML = 'Go';
search_panel_input_wrapper.appendChild(item_search_input)
search_panel_input_group.appendChild(search_panel_input_wrapper)
search_panel_input_group.appendChild(item_search_go_button)
search_panel_body.appendChild(search_panel_input_group)
search_panel.appendChild(search_panel_heading)
search_panel.appendChild(search_panel_body)
$('#'+self.container_id).append(search_panel);
function format(item) { return item[self.name_field]; }
console.log(params.data)
console.log(self.name_field)
console.log(self.id_field)
data = _.map(params.data, function(item){
item['id'] = item[self.id_field];
item['text'] = item[self.name_field];
return item;
});
$('#item_search_input'+self.container_id).select2({
multiple: true,
width: '100%',
height: '95%',
placeholder: self.placeholdler,
containerCss: {'border-radius': '0px',
'height':'28px',
'min-height':'28px'
},
//function(suggest){
// console.log(suggest)
// return 123; },
// language: {
// "noResults": function(e){
// return "No Results";
// }
// },
data: data,
// formatSelection: format,
// formatResult: formatResult,
// escapeMarkup: function (markup) {
// return markup; }, // let our custom formatter work
// minimumInputLength: 1,
// templateResult: formatResult, // omitted for brevity, see the source of this page
// templateSelection: formatResultSelection // omitted for brevity, see the source of this page
});
$('#item_search_input'+self.container_id).off("select2:select");
$('#item_search_input'+self.container_id).off("select2:unselect");
$('#item_search_input'+self.container_id).on("select2:select", function (e) {
console.log(e.params.data)
selected_item = e.params.data
var index = self.selected_items.indexOf(selected_item.id)
if (index == -1)
self.selected_items.push(selected_item[self.id_field])
});
$('#item_search_input'+self.container_id).on('select2:unselect', function (e) {
console.log(e.params.data)
unselected_item = e.params.data
var index = self.selected_items.indexOf(unselected_item.id)
if (index > -1)
self.selected_items.splice(index, 1);
});
$('#item_search_go'+self.container_id).off('click')
$('#item_search_go'+self.container_id).on('click', function(){
self.on_select(self.selected_items)
})
}
function formatResult(result) {
var index = self.current_items.indexOf(result.id)
if (index == -1){
if (result.loading) return result[self.name_field];
var markup = "" + result.text + "
"
var markup = '' + result[self.name_field] +
'
'
return markup;
}else{
return false;
}
}
function formatResultSelection (result) {
return result[self.name_field];
}
this.init();
};
ItemSearch.prototype = {
constructor: ItemSearch,
help: function () {
}
}