move code from js.js to search.js in the search app

Tento commit je obsažen v:
Jörn Friedrich Dreyer 2014-12-10 17:11:02 +01:00
rodič d3662722f6
revize 088323aad5
4 změnil soubory, kde provedl 145 přidání a 82 odebrání

Zobrazit soubor

@ -308,22 +308,9 @@ var OC={
* Do a search query and display the results
* @param {string} query the search query
*/
search: _.debounce(function(query){
if(query){
OC.addStyle('search','results');
var classList = document.getElementById('content').className.split(/\s+/);
var inApps = [];
for (var i = 0; i < classList.length; i++) {
if (classList[i].indexOf('app-') === 0) {
var inApps = [classList[i].substr(4)];
}
}
$.getJSON(OC.generateUrl('search/ajax/search.php'), {inApps:inApps, query:query}, function(results){
OC.Search.lastResults=results;
OC.Search.showResults(results);
});
}
}, 500),
search: function (query) {
OC.Search.search(query)
},
/**
* Dialog helper for jquery dialogs.
*
@ -1075,48 +1062,6 @@ function initCore() {
}else{
SVGSupport.checkMimeType();
}
$('form.searchbox').submit(function(event){
event.preventDefault();
});
$('#searchbox').keyup(function(event){
if(event.keyCode===13){//enter
if(OC.Search.currentResult>-1){
var result=$('#searchresults tr.result a')[OC.Search.currentResult];
window.location = $(result).attr('href');
}
}else if(event.keyCode===38){//up
if(OC.Search.currentResult>0){
OC.Search.currentResult--;
OC.Search.renderCurrent();
}
}else if(event.keyCode===40){//down
if(OC.Search.lastResults.length>OC.Search.currentResult+1){
OC.Search.currentResult++;
OC.Search.renderCurrent();
}
}else if(event.keyCode===27){//esc
OC.Search.hide();
if (FileList && typeof FileList.unfilter === 'function') { //TODO add hook system
FileList.unfilter();
}
}else{
var query=$('#searchbox').val();
if(OC.Search.lastQuery!==query){
OC.Search.lastQuery=query;
OC.Search.currentResult=-1;
if (FileList && typeof FileList.filter === 'function') { //TODO add hook system
FileList.filter(query);
}
if(query.length>2){
OC.search(query);
}else{
if(OC.Search.hide){
OC.Search.hide();
}
}
}
}
});
// user menu
$('#settings #expand').keydown(function(event) {

Zobrazit soubor

@ -362,6 +362,7 @@ class OC {
OC_Util::addScript("eventsource");
OC_Util::addScript("config");
//OC_Util::addScript( "multiselect" );
OC_Util::addScript('search', 'search');
OC_Util::addScript('search', 'result');
OC_Util::addScript("oc-requesttoken");
OC_Util::addScript("apps");

Zobrazit soubor

@ -8,14 +8,7 @@
*
*/
//translations for result type ids, can be extended by apps
OC.Search.resultTypes={
file: t('core','File'),
folder: t('core','Folder'),
image: t('core','Image'),
audio: t('core','Audio')
};
OC.Search.hide=function(){
OC.Search.hide = function(){
$('#searchresults').hide();
if($('#searchbox').val().length>2){
$('#searchbox').val('');
@ -29,15 +22,15 @@ OC.Search.hide=function(){
}
}
};
OC.Search.showResults=function(results){
OC.Search.showResults = function(results){
if(results.length === 0){
return;
}
if(!OC.Search.showResults.loaded){
var parent=$('<div class="searchresults-wrapper"/>');
if (!OC.Search.showResults.loaded){
var parent = $('<div class="searchresults-wrapper"/>');
$('#app-content').append(parent);
parent.load(OC.filePath('search','templates','part.results.php'),function(){
OC.Search.showResults.loaded=true;
OC.Search.showResults.loaded = true;
$('#searchresults').click(function(event){
OC.Search.hide();
event.stopPropagation();
@ -68,19 +61,18 @@ OC.Search.showResults=function(results){
$row.find('td.icon').css('background-image', 'url(' + OC.imagePath('core', 'places/link') + ')');
/**
* Give plugins the ability to customize the search results. For example:
* OC.search.customResults.file = function (row, item){
* OC.search.customResults.file = function (row, item){ FIXME
* if(item.name.search('.json') >= 0) ...
* };
*/
if(OC.Search.hasFormatter(result.type)){
if (OC.Search.hasFormatter(result.type)) {
OC.Search.getFormatter(result.type)($row, result);
} else
{
} else {
// for backward compatibility add text div
$row.find('td.info div.name').addClass('result')
$row.find('td.result div.name').after('<div class="text"></div>');
$row.find('td.result div.text').text(result.name);
if(OC.search.customResults[result.type]){
if(OC.search.customResults && OC.search.customResults[result.type]) {
OC.search.customResults[result.type]($row, result);
}
}
@ -99,13 +91,22 @@ OC.Search.showResults=function(results){
});
}
};
OC.Search.showResults.loaded=false;
OC.Search.showResults.loaded = false;
OC.Search.renderCurrent=function(){
if($('#searchresults tr.result')[OC.search.currentResult]){
var result=$('#searchresults tr.result')[OC.search.currentResult];
$('#searchresults tr.result').removeClass('current');
$(result).addClass('current');
OC.Search.renderCurrent = function(){
var $resultsContainer = $('#searchresults');
var result = $resultsContainer.find('tr.result')[OC.Search.currentResult]
if (result) {
var $result = $(result);
var currentOffset = $resultsContainer.scrollTop();
$resultsContainer.animate({
// Scrolling to the top of the new result
scrollTop: currentOffset + $result.offset().top - $result.height() * 2
}, {
duration: 100
});
$resultsContainer.find('tr.result.current').removeClass('current');
$result.addClass('current');
}
};
@ -117,7 +118,7 @@ OC.Search.setFormatter('file', function ($row, result) {
result.mime = result.mime_type;
}
$pathDiv = $('<div class="path"></div>').text(result.path)
$pathDiv = $('<div class="path"></div>').text(result.path);
$row.find('td.info div.name').after($pathDiv).text(result.name);
$row.find('td.result a').attr('href', result.link);

116
search/js/search.js Normální soubor
Zobrazit soubor

@ -0,0 +1,116 @@
/**
* ownCloud - core
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @copyright Bernhard Posselt 2014
*/
(function (exports) {
'use strict';
exports.Search = {
/**
* contains closures that are called to format search results
*/
formatter:{},
setFormatter: function(type, formatter) {
this.formatter[type] = formatter;
},
hasFormatter: function(type) {
return typeof this.formatter[type] !== 'undefined';
},
getFormatter: function(type) {
return this.formatter[type];
},
/**
* contains closures that are called when a search result has been clicked
*/
handler:{},
setHandler: function(type, handler) {
this.handler[type] = handler;
},
hasHandler: function(type) {
return typeof this.handler[type] !== 'undefined';
},
getHandler: function(type) {
return this.handler[type];
},
currentResult:-1,
lastQuery:'',
lastResults:{},
/**
* Do a search query and display the results
* @param {string} query the search query
*/
search: _.debounce(function(query) {
if(query) {
exports.addStyle('search','results');
$.getJSON(exports.filePath('search','ajax','search.php')+'?query=' + encodeURIComponent(query), function(results) {
exports.Search.lastResults = results;
exports.Search.showResults(results);
});
}
}, 500)
};
$(document).ready(function () {
$('form.searchbox').submit(function(event) {
event.preventDefault();
});
$('#searchbox').keyup(function(event) {
if (event.keyCode === 13) { //enter
if(exports.Search.currentResult > -1) {
var result = $('#searchresults tr.result a')[exports.Search.currentResult];
window.location = $(result).attr('href');
}
} else if(event.keyCode === 38) { //up
if(exports.Search.currentResult > 0) {
exports.Search.currentResult--;
exports.Search.renderCurrent();
}
} else if(event.keyCode === 40) { //down
if(exports.Search.lastResults.length > exports.Search.currentResult + 1){
exports.Search.currentResult++;
exports.Search.renderCurrent();
}
} else if(event.keyCode === 27) { //esc
exports.Search.hide();
if (FileList && typeof FileList.unfilter === 'function') { //TODO add hook system
FileList.unfilter();
}
} else {
var query = $('#searchbox').val();
if (exports.Search.lastQuery !== query) {
exports.Search.lastQuery = query;
exports.Search.currentResult = -1;
if (FileList && typeof FileList.filter === 'function') { //TODO add hook system
FileList.filter(query);
}
if (query.length > 2) {
exports.Search.search(query);
} else {
if (exports.Search.hide) {
exports.Search.hide();
}
}
}
}
});
});
}(OC));
/**
* @deprecated use get/setFormatter() instead
*/
OC.search.customResults = {};
/**
* @deprecated use get/setFormatter() instead
*/
OC.search.resultTypes = {};