import {LitElement, html} from 'https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js';
window.addEventListener('DOMContentLoaded', function() {
class UnifiedSearch extends LitElement {
/*
static properties = {
searchText: { type: String },
favoritesFilter: { type: Boolean },
administratorFilter: { type: Boolean },
editorFilter: { type: Boolean },
viewerFilter: { type: Boolean },
publicFilter: { type: Boolean },
privateFilter: { type: Boolean },
}
*/
constructor() {
super();
this.searchText = "";
this.administrator = false;
this.editor = false;
this.viewer = false;
this.rolesFilter = [];
this.filterUrl = new URL(`${document.location.origin}/rest/v1/collabs?search=&offset=0&orderField=title&order=asc&favorite=true&roles=`);
}
toggleRoleFilter(roleName) {
if(this.rolesFilter.indexOf(roleName) == -1) {
this.rolesFilter.push(roleName);
} else {
this.rolesFilter.filter(role => role !== roleName);
}
this[roleName] = !this[roleName];
this.filterUrl.searchParams.set('roles', this.rolesFilter.join("+"));
}
setSearchText(e) {
this.searchText = e.target.value;
}
handleSearch() {
console.log(this.searchText);
}
buildFilter() {
//https://wiki-dev.ebrains.eu/rest/v1/collabs?search=&offset=0&orderField=title&order=asc&favorite=true&roles=
}
render() {
return html`
`
}
}
customElements.define('clb-unified-search', UnifiedSearch);
function handleXWikiSearch(space, callback) {
require(['jquery'], function($) {
var solrServiceURL = new XWiki.Document('SuggestSolrService', 'XWiki').getURL('get');
const contextSearchButton = document.getElementById("context-search-button");
const xwikiSpace = space ? `.${space}` : '';
contextSearchButton.addEventListener('click', function() {
$.post(solrServiceURL, {
outputSyntax: 'plain',
media: 'json',
query: [
'q="__INPUT__"~100',
'fq=type:DOCUMENT',
`fq=space:Collabs${xwikiSpace}.*`
].join('\n'),
input: $('#context-search-text').val()
}).then(res => {
if(callback) {
callback(res).then(results => {
contextSearchResponse.innerText = JSON.stringify(results, null, 2);
})
} else {
contextSearchResponse.innerText = JSON.stringify(res, null, 2);
}
});
});
});
}
});