mirror of
https://github.com/Yetangitu/ampache
synced 2025-10-03 17:59:21 +02:00
Fix advanced search with jQuery and fix #34
This commit is contained in:
parent
deb8155b54
commit
24f8cf36c6
4 changed files with 65 additions and 47 deletions
|
@ -26,10 +26,10 @@ var SearchRow = {
|
|||
ruleType = 0;
|
||||
}
|
||||
else {
|
||||
types.each(function(i) {
|
||||
if (i.value.name == ruleType) {
|
||||
ruleType = i.key;
|
||||
throw $break;
|
||||
jQuery.each(types, function(i) {
|
||||
if (types[i].name == ruleType) {
|
||||
ruleType = i;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -38,12 +38,15 @@ var SearchRow = {
|
|||
operator = 0;
|
||||
}
|
||||
else {
|
||||
$H(basetypes.get(types.get(ruleType).type)).each(function(i) {
|
||||
if (i.value.name == operator) {
|
||||
operator = i.key;
|
||||
throw $break;
|
||||
}
|
||||
});
|
||||
if (ruleType != null) {
|
||||
var opts = basetypes[types[ruleType].type];
|
||||
jQuery.each(opts, function(i) {
|
||||
if (opts[i].name == operator) {
|
||||
operator = i;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var row = document.createElement('tr');
|
||||
|
@ -57,14 +60,14 @@ var SearchRow = {
|
|||
cells[2].appendChild(SearchRow.constructInput(ruleType, rowIter, input));
|
||||
cells[3].innerHTML = removeIcon;
|
||||
|
||||
cells.each(function(i) {
|
||||
row.appendChild(i);
|
||||
jQuery.each(cells, function(i) {
|
||||
row.appendChild(cells[i]);
|
||||
});
|
||||
|
||||
$('searchtable').appendChild(row);
|
||||
$('#searchtable').append(row);
|
||||
rowCount++;
|
||||
|
||||
$(cells[3]).on('click', function(){if(rowCount > 1) { Element.remove(this.parentNode); rowCount--; }});
|
||||
$(cells[3]).on('click', function(){if(rowCount > 1) { this.parentNode.remove(); rowCount--; }});
|
||||
|
||||
rowIter++;
|
||||
},
|
||||
|
@ -73,31 +76,31 @@ var SearchRow = {
|
|||
input = '';
|
||||
}
|
||||
|
||||
widget = $H(types.get(ruleType).widget);
|
||||
widget = types[ruleType].widget;
|
||||
|
||||
var inputNode = document.createElement(widget.get('0'));
|
||||
var inputNode = document.createElement(widget['0']);
|
||||
inputNode.id = 'rule_' + ruleNumber + '_input';
|
||||
inputNode.name = 'rule_' + ruleNumber + '_input';
|
||||
|
||||
switch(widget.get('0')) {
|
||||
switch(widget['0']) {
|
||||
case 'input':
|
||||
inputNode.setAttribute('type', widget.get('1'));
|
||||
inputNode.setAttribute('type', widget['1']);
|
||||
inputNode.setAttribute('value', input);
|
||||
break;
|
||||
case 'select':
|
||||
$H(widget.get('1')).each(function(i) {
|
||||
jQuery.each(widget['1'], function(i) {
|
||||
var option = document.createElement('option');
|
||||
if ( isNaN(parseInt(i.value)) ) {
|
||||
realvalue = i.key;
|
||||
if ( isNaN(parseInt(widget['1'][i])) ) {
|
||||
realvalue = i;
|
||||
}
|
||||
else {
|
||||
realvalue = parseInt(i.value);
|
||||
realvalue = parseInt(widget['1'][i]);
|
||||
}
|
||||
if ( input == realvalue ) {
|
||||
option.selected = true;
|
||||
}
|
||||
option.value = realvalue;
|
||||
option.innerHTML = i.value;
|
||||
option.innerHTML = widget['1'][i];
|
||||
inputNode.appendChild(option);
|
||||
});
|
||||
break;
|
||||
|
@ -110,11 +113,11 @@ var SearchRow = {
|
|||
optionsNode.id = 'rule_' + ruleNumber;
|
||||
optionsNode.name = 'rule_' + ruleNumber;
|
||||
|
||||
types.each(function(i) {
|
||||
jQuery.each(types, function(i) {
|
||||
var option = document.createElement('option');
|
||||
option.innerHTML = i.value.label;
|
||||
option.value = i.value.name;
|
||||
if ( i.key == ruleType ) {
|
||||
option.innerHTML = types[i].label;
|
||||
option.value = types[i].name;
|
||||
if ( i == ruleType ) {
|
||||
option.selected = true;
|
||||
}
|
||||
optionsNode.appendChild(option);
|
||||
|
@ -129,14 +132,15 @@ var SearchRow = {
|
|||
operatorNode.id = 'rule_' + ruleNumber + '_operator';
|
||||
operatorNode.name = 'rule_' + ruleNumber + '_operator';
|
||||
|
||||
basetype = types.get(ruleType).type;
|
||||
basetype = types[ruleType].type;
|
||||
operatorNode.className = 'operator' + basetype;
|
||||
|
||||
$H(basetypes.get(basetype)).each(function(i) {
|
||||
var opts = basetypes[basetype];
|
||||
jQuery.each(opts, function(i) {
|
||||
var option = document.createElement('option');
|
||||
option.innerHTML = i.value.description;
|
||||
option.value = i.key;
|
||||
if (i.key == operator) {
|
||||
option.innerHTML = opts[i].description;
|
||||
option.value = i;
|
||||
if (i == operator) {
|
||||
option.selected = true;
|
||||
}
|
||||
operatorNode.appendChild(option);
|
||||
|
@ -148,21 +152,21 @@ var SearchRow = {
|
|||
var r_findID = /rule_(\d+)/;
|
||||
var targetID = r_findID.exec(this.id)[1];
|
||||
|
||||
var operator = $('rule_' + targetID + '_operator');
|
||||
if (operator.className != 'operator' + types.get(this.selectedIndex).type) {
|
||||
var operator_cell = operator.parentNode;
|
||||
Element.remove(operator);
|
||||
operator_cell.appendChild(SearchRow.constructOperators(this.selectedIndex, targetID));
|
||||
var operator = $('#rule_' + targetID + '_operator');
|
||||
if (operator.className != 'operator' + types[this.selectedIndex].type) {
|
||||
var operator_cell = operator.parent();
|
||||
operator.remove();
|
||||
operator_cell.append(SearchRow.constructOperators(this.selectedIndex, targetID));
|
||||
}
|
||||
|
||||
var input = $('rule_' + targetID + '_input');
|
||||
var input = $('#rule_' + targetID + '_input');
|
||||
|
||||
if (input.type == 'text') {
|
||||
var oldinput = input.value;
|
||||
}
|
||||
|
||||
var input_cell = input.parentNode;
|
||||
Element.remove(input);
|
||||
input_cell.appendChild(SearchRow.constructInput(this.selectedIndex, targetID, oldinput));
|
||||
var input_cell = input.parent();
|
||||
input.remove();
|
||||
input_cell.append(SearchRow.constructInput(this.selectedIndex, targetID, oldinput));
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue