commit 78faeba727b41884680b96b35d55e77521849a8c
parent 65a196fb3113e2dbaf4f70176e267916cd292d86
Author: Jan Dankert <develop@jandankert.de>
Date: Thu, 1 Apr 2021 22:53:24 +0200
Fix: Search
Diffstat:
4 files changed, 64 insertions(+), 58 deletions(-)
diff --git a/modules/cms/ui/themes/default/script/Oquery.js b/modules/cms/ui/themes/default/script/Oquery.js
@@ -160,6 +160,16 @@ export class OQuery {
this.on( 'submit',handler );
return this;
}
+ change( handler ) {
+ this.on( 'change',handler )
+ return this;
+ }
+ input( handler ) {
+ this.on( 'input',handler )
+ return this;
+ }
+
+
on ( event,handler ) {
if ( typeof handler !== 'undefined')
@@ -243,14 +253,6 @@ export class OQuery {
return this;
}
- change() {
- this.nodes.forEach(node => {
- //node.fireEvent("onchange");
- } );
- return this;
- }
-
-
is( selector ) {
for( let node of this.nodes )
if ( node.matches(selector) )
diff --git a/modules/cms/ui/themes/default/script/jquery-global.js b/modules/cms/ui/themes/default/script/jquery-global.js
@@ -30,23 +30,23 @@ class CMSQuery extends OQuery {
}
orAutoheight() {
- return autoheight.call(this);
+ return autoheight.apply(this,arguments);
};
orButton() {
- return button.call(this);
+ return button.apply(this,arguments);
};
orLinkify() {
- return linkify.call(this);
+ return linkify.apply(this,arguments);
};
orSearch() {
- return search.call(this);
+ return search.apply(this,arguments);
};
orTree() {
- return tree.call(this);
+ return tree.apply(this,arguments);
};
toggleAttr() {
diff --git a/modules/cms/ui/themes/default/script/openrat/workbench.js b/modules/cms/ui/themes/default/script/openrat/workbench.js
@@ -562,7 +562,7 @@ export default class Workbench {
}
} );
$('.or-search .or-act-search-delete').click( function() {
- $('.or-search .or-title-input').val('').change();
+ $('.or-search .or-title-input').val('').input();
} );
};
registerGlobalSearch();
diff --git a/modules/cms/ui/themes/default/script/plugin/jquery-plugin-orSearch.js b/modules/cms/ui/themes/default/script/plugin/jquery-plugin-orSearch.js
@@ -7,7 +7,7 @@ import WorkbenchNavigator from "../openrat/navigator.js";
export default function( options )
{
// Create some defaults, extending them with any options that were provided
- var settings = $.extend( {
+ let settings = $.extend( {
'dropdown': $(), // empty element
'select' : function( obj ) {},
'afterSelect' : function() {},
@@ -16,11 +16,11 @@ export default function( options )
'openDropdown' : true,
'action': 'search',
'method': 'quicksearch',
- 'resultEntryClass': 'or-dropdown-entry',
+ 'resultEntryClass': 'dropdown-entry',
}, options);
- return $(this).on('input change', function()
+ return $(this).input(async function()
{
let searchInput = $(this)
let searchArgument = searchInput.val();
@@ -33,57 +33,61 @@ export default function( options )
dropdownEl.addClass('search-result--is-active');
let url = './api/?action='+settings.action+'&subaction='+settings.method+'&output=json&search='+searchArgument;
- let load = fetch( url, {
+ let response = await fetch( url, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
} } );
- load.then( response => {
- if ( ! response.ok )
- throw "Search request getting an error";
- return response.json();
- }
- ).then( data => {
- $(dropdownEl).empty(); // Leeren.
-
- for (let id in data.output.result) {
- let result = data.output.result[id];
+ if ( ! response.ok )
+ throw "Search request getting an error";
+ let data = await response.json();
+ $(dropdownEl).empty(); // Leeren.
- // Suchergebnis-Zeile in das Ergebnis schreiben.
+ for (let id in data.output.result) {
+ let result = data.output.result[id];
- let div = $('<div class="' + settings.resultEntryClass + ' ' + settings.resultEntryClass + '--active" title="' + result.desc + '"></div>');
- div.data('object', {
- 'name': result.name,
- 'action': result.type,
- 'id': result.id
- });
- let link = $('<a class="or-link"/>').attr('href', WorkbenchNavigator.createShortUrl(result.type, result.id));
- link.click(function (e) {
- e.preventDefault();
- });
- $(link).append('<i class="or-image-icon or-image-icon--action-' + result.type + '" />');
- $(link).append('<span class="or-dropdown-text">' + result.name + '</span>');
+ // Suchergebnis-Zeile in das Ergebnis schreiben.
- $(div).append(link);
- $(dropdownEl).append(div);
- }
+ let div = $.create('div')
+ .addClass( settings.resultEntryClass )
+ .addClass( settings.resultEntryClass + '--active' )
+ .attr('title',result.desc);
+ div.data('object', {
+ 'name': result.name,
+ 'action': result.type,
+ 'id': result.id
+ });
+ let link = $.create('a')
+ .addClass('link')
+ .attr('href', WorkbenchNavigator.createShortUrl(result.type, result.id));
+ link.click(function (e) {
+ e.preventDefault();
+ });
+ $(link).append(
+ $.create('i').addClass('image-icon').addClass('image-icon--action-' + result.type)
+ );
+ $(link).append(
+ $.create('span').addClass('dropdown-text').text(result.name)
+ );
- if (data.output.result && settings.openDropdown) {
- // Open the menu
- //$(dropdownEl).closest('.or-menu').addClass('menu--is-open');
- $(dropdownEl).addClass('dropdown--is-open');
- } else {
- $(dropdownEl).removeClass('dropdown--is-open');
- }
+ $(div ).append(link);
+ $(dropdownEl).append(div);
+ }
- // Register clickhandler for search results.
- $(dropdownEl).find('.or-search-result-entry').click(function (e) {
- settings.select($(this).data('object'));
- settings.afterSelect();
- searchInput.val('');
- });
+ if (data.output.result && settings.openDropdown) {
+ // Open the menu
+ //$(dropdownEl).closest('.or-menu').addClass('menu--is-open');
+ $(dropdownEl).addClass('dropdown--is-open');
+ } else {
+ $(dropdownEl).removeClass('dropdown--is-open');
+ }
- } );
+ // Register clickhandler for search results.
+ $(dropdownEl).find('.or-search-result-entry').click(function (e) {
+ settings.select($(this).data('object'));
+ settings.afterSelect();
+ searchInput.val('');
+ });
}
else
{