Menü aufrufen
Toggle preferences menu
Persönliches Menü aufrufen
Nicht angemeldet
Ihre IP-Adresse wird öffentlich sichtbar sein, wenn Sie Änderungen vornehmen.

Benutzer:Col. o'neill/CatTools.js: Unterschied zwischen den Versionen

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
Die Seite wurde neu angelegt: „var CatTools = { modes: { AND: '', //TODO OR: '', //TODO WITHOUT: '', //TODO }, mode: CatTools.modes.AND, cat1: '', cat2: '', suggestions: [], con…“
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
var CatTools = {
var CatTools = {
modes: {
mode: 'AND',
AND: '', //TODO
OR: '', //TODO
WITHOUT: '', //TODO
},
mode: CatTools.modes.AND,
cat1: '',
cat1: '',
cat2: '',
cat2: '',
Zeile 14: Zeile 9:
results: [],
results: [],
init: function(){
init: function(){
//TODO add EventListeners / MutationObservers to fill cat1, cat2, mode and to call suggest, existsFeedback, exec
$('#CatToolsInputWrapper').html(
"<input id='CatToolsInputCat1' type='text' size='50' placeholder='Kategorie 1' list='CatToolsSugg1'>"+
"<select id='CatToolsInputMode'>"+
"<option value='AND' selected>und</option>"+
"<option value='OR'>oder</option>"+
"<option value='WITHOUT'>ohne</option>"+
"</select>"+
"<input id='CatToolsInputCat2' type='text' size='50' placeholder='Kategorie 2' list='CatToolsSugg2'>"+
"<datalist id='CatToolsSugg1'></datalist>"+
"<datalist id='CatToolsSugg2'></datalist>"+
"<input id='CatToolsSubmit' type='button' value='Seiten anzeigen'>"
);
$('#CatToolsInputCat1').on('keyup', function(){
CatTools.existsFeedback('CatToolsInputCat1');
CatTools.suggest('CatToolsInputCat1', 'CatToolsSugg1');
});
$('#CatToolsInputCat2').on('keyup', function(){
CatTools.existsFeedback('CatToolsInputCat2');
CatTools.suggest('CatToolsInputCat2', 'CatToolsSugg2');
});
$('#CatToolsSubmit').on('click', function(){
CatTools.reset();
CatTools.cat1=$('#CatToolsInputCat1').val();
CatTools.cat2=$('#CatToolsInputCat2').val();
CatTools.mode=$('#CatToolsInputMode option:selected').val();
CatTools.exec();
});
},
},
suggest: function(phrase){
suggest: function(inputID, datalistID){
$.get(wgServer+wgScriptPath+'/api.php?action=opensearch&format=json&namespace=14&limit=10&search='+encodeURI(phrase), function(d){
$.get(wgServer+wgScriptPath+'/api.php?action=opensearch&format=json&namespace=14&limit=10&search='+encodeURI($('#'+inputID).val()), function(d){
if('string'==typeof d) d=JSON.parse(d);
if('string'==typeof d) d=JSON.parse(d);
$('#'+datalistID).empty();
d[1].forEach(function(v){
d[1].forEach(function(v){
//TODO: display v.substring(10) as suggestion
$('#'+datalistID).append($('<option>')).attr('value',v.substring(10));
});
});
}, 'json');
}, 'json');
Zeile 26: Zeile 48:
existsFeedback: function(inputID){
existsFeedback: function(inputID){
var exists;
var exists;
$.get(wgServer+wgScriptPath+'/api.php?action=query&format=json&titles='+encodeURI($(inputID).val()), function(d){
$.get(wgServer+wgScriptPath+'/api.php?action=query&format=json&titles='+encodeURI($('#'+inputID).val()), function(d){
if('string'==typeof d) d=JSON.parse(d);
if('string'==typeof d) d=JSON.parse(d);
if(d.query.pages.hasOwnProperty('-1')) exists = false;
if(d.query.pages.hasOwnProperty('-1')) exists = false;
Zeile 47: Zeile 69:
switch(CatTools.mode){
switch(CatTools.mode){
default:
default:
case CatTools.modes.AND:
case 'AND':
CatTools.cat1Results.forEach(function(v){
CatTools.cat1Results.forEach(function(v){
if(CatTools.cat2Results.includes(v)) results.push(v);
if(CatTools.cat2Results.includes(v)) results.push(v);
});
});
break;
break;
case CatTools.modes.OR:
case 'OR':
CatTools.cat1Results.forEach(function(v){
CatTools.cat1Results.forEach(function(v){
if(!CatTools.results.includes(v)) results.push(v);
if(!CatTools.results.includes(v)) results.push(v);
Zeile 60: Zeile 82:
});
});
break;
break;
case CatTools.modes.WITHOUT:
case 'WITHOUT':
CatTools.cat1Results.forEach(function(v){
CatTools.cat1Results.forEach(function(v){
if(!CatTools.cat2Results.includes(v)) results.push(v);
if(!CatTools.cat2Results.includes(v)) results.push(v);
Zeile 81: Zeile 103:
},
},
render: function(){
render: function(){
$('#CatToolsResultWrapper').show().append($('<ul>'));
CatTools.results.forEach(function(v){
CatTools.results.forEach(function(v){
$('#CatToolsResultWrapper').append($('<a>').attr('href','http://stargate-wiki.de/wiki/'+encodeURI(v)).attr('title',v).text(v));
$('#CatToolsResultWrapper ul').append($('<li>')).append($('<a>').attr('href','http://stargate-wiki.de/wiki/'+encodeURI(v)).attr('title',v).text(v));
});
});
},
reset: function(){
$('#CatToolsResultWrapper').hide().empty();
}
}
};
};
$(CatTools.init);
$(CatTools.init);