";
return html;
}
function getFilterHtml(data) {
var html = "";
var widget = data.widget;
try {
var filters = JSON.parse(widget.filters);
if (filters.length) {
html += "
";
if (filters.indexOf("departments") != -1) {
data.departments = data.departments.filter(function (department) {
for (var i = 0; i < data.services.length; i++) {
if (data.services[i].departmentId == department.departmentId) {
return true;
}
}
return false;
});
html += "";
jQuery(document).on('change', ".departments-filter", filter);
}
if (filters.indexOf("tags") != -1) {
data.tags = data.tags.filter(function (tag) {
for (var i = 0; i < data.services.length; i++) {
if (data.services[i].tags.indexOf(tag.tagId.toString()) != -1) {
return true;
}
}
return false;
});
html += "";
jQuery(document).on('change', ".tags-filter", filter);
}
html += "
";
}
} catch (e) {}
return html;
}
function filter() {
var widgetData = jQuery(this).closest(".services-widget").data("widget-data");
var departmentId = jQuery(this).closest(".services-widget").find(".departments-filter").val() || "";
var tagId = jQuery(this).closest(".services-widget").find(".tags-filter").val() || "";
var tempData = widgetData.services.filter(function (row) {
if (departmentId != "") {
return row.departmentId == departmentId;
} else {
return true;
}
}).filter(function (row) {
if (tagId != "") {
return row.tags.indexOf(tagId) != -1;
} else {
return true;
}
});
var html = getListHtml({
services: tempData,
widget: widgetData.widget
});
jQuery(this).closest(".services-widget").find("ul").remove();
jQuery(this).closest(".services-widget").append(html);
}
Array.prototype.filter || (Array.prototype.filter = function (t, r) {
"use strict";
if ("Function" != typeof t && "function" != typeof t || !this) throw new TypeError();
var i,
e = this.length >>> 0,
o = new Array(e),
n = this,
f = 0,
h = -1;
if (void 0 === r) for (; ++h !== e;) {
h in this && (i = n[h], t(n[h], h, n) && (o[f++] = i));
} else for (; ++h !== e;) {
h in this && (i = n[h], t.call(r, n[h], h, n) && (o[f++] = i));
}
return o.length = f, o;
});