|
<script type="text/javascript">
|
|
$(document).ready(function()
|
|
{
|
|
|
|
$("#filter_form").validate({
|
|
errorPlacement: function(error, element){}
|
|
});
|
|
|
|
function array_search (needle, haystack)
|
|
{
|
|
for (var key in haystack)
|
|
{
|
|
if (haystack[key] == needle)
|
|
return key;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function update_form ()
|
|
{
|
|
var i = 0;
|
|
$(".t").each(function (){
|
|
if (type_options[$(this).val()] != undefined)
|
|
{
|
|
var value = $(this).next().val();
|
|
$(this).next().children().remove();
|
|
for (var key in type_options_orders[$(this).val()])
|
|
{
|
|
$(this).next().append('<option value="'+type_options_orders[$(this).val()][key]+'"'+((type_options_orders[$(this).val()][key] == value) ? ' selected' : '')+'>'+type_options[$(this).val()][type_options_orders[$(this).val()][key]]+'</option>');
|
|
}
|
|
|
|
var values = value_options[$(this).val()];
|
|
|
|
if (type_values[i] == undefined)
|
|
type_values[i] = new Array();
|
|
|
|
if (type_values[i][$(this).val()] == undefined)
|
|
type_values[i][$(this).val()] = (typeof(values[0]) != 'string' && values[0] != undefined) ? values[0][$(this).next().val()] : values[0];
|
|
|
|
if (values[0] != undefined && array_search (type_values[i][$(this).val()], values) == false)
|
|
type_values[i][$(this).val()] = (typeof(values[0]) != 'string' && values[0] != undefined) ? values[0][$(this).next().val()] : values[0];
|
|
|
|
$(this).next().next().val(type_values[i][$(this).val()]);
|
|
|
|
var without = withouts[$(this).val()];
|
|
|
|
if (classes[$(this).val()][$(this).next().val()] != undefined)
|
|
$(this).next().next().attr ('class', 'v '+types[$(this).val()]+' '+classes[$(this).val()][$(this).next().val()]);
|
|
else if (classes[$(this).val()]['all'] != undefined)
|
|
$(this).next().next().attr ('class', 'v '+types[$(this).val()]+' '+classes[$(this).val()]['all']);
|
|
else
|
|
$(this).next().next().attr ('class', 'v '+types[$(this).val()]);
|
|
|
|
if (without)
|
|
{
|
|
$(this).next().next().addClass('without_select_button');
|
|
$(this).next().next().next().hide();
|
|
}
|
|
else
|
|
$(this).next().next().next().show();
|
|
|
|
var callback = callbacks[$(this).val()];
|
|
var minlength = minlengths[$(this).val()];
|
|
var oper = $(this).next().val();
|
|
|
|
if (values.length)
|
|
{
|
|
$(this).next().next().autocomplete({
|
|
minLength: minlength,
|
|
source: function (request, response){
|
|
var arr = new Array();
|
|
var x = 0;
|
|
for (var i=0;i<count(values);i++)
|
|
{
|
|
var value = values[i];
|
|
|
|
if (typeof(value) != 'string')
|
|
{
|
|
for (var key in value)
|
|
if (key == oper)
|
|
value = value[key];
|
|
}
|
|
|
|
if (request.term == "" || (strpos(value, request.term) === 0 && value!=request.term))
|
|
arr[x++] = value;
|
|
}
|
|
response(arr);
|
|
},
|
|
close: function(event, ui) {
|
|
$(this).trigger('keyup');
|
|
}
|
|
});
|
|
}
|
|
else if (callback != undefined)
|
|
{
|
|
$(this).next().next().autocomplete({
|
|
minLength: minlength,
|
|
source: callback,
|
|
close: function(event, ui) {
|
|
$(this).trigger('keyup');
|
|
}
|
|
});
|
|
}
|
|
//else
|
|
// $(this).next().next().autocomplete("disable");
|
|
|
|
$(this).next().next().next().next().val(tables[$(this).val()]);
|
|
}
|
|
i++;
|
|
});
|
|
}
|
|
|
|
$( ".select_button" ).click(function (){
|
|
$(this).prev().autocomplete( "search", "" );
|
|
$(this).prev().focus();
|
|
});
|
|
|
|
$(".v").keyup(function (){
|
|
var i =0;
|
|
$(".v").each(function (){
|
|
type_values[i][$(this).prev().prev().val()] = $(this).val();
|
|
i++;
|
|
});
|
|
});
|
|
|
|
$(".delete_button").click(function (){
|
|
$(this).parent().hide();
|
|
$(this).prev().prev().prev().prev().val("");
|
|
$(this).remove();
|
|
|
|
if ($(".delete_button").length == 1)
|
|
$(".delete_button").hide();
|
|
});
|
|
|
|
var type_options = new Array();
|
|
var type_options_orders = new Array();
|
|
value_options = new Array();
|
|
<?php foreach ($js_operation_values as $name => $opers): ?>
|
|
type_options['<?php echo $name ?>'] = new Array();
|
|
type_options_orders['<?php echo $name ?>'] = new Array();
|
|
value_options['<?php echo $name ?>'] = new Array();
|
|
<?php foreach ($opers as $key => $val): ?>
|
|
type_options['<?php echo $name ?>'][<?php echo $key ?>] = '<?php echo __($val) ?>';
|
|
type_options_orders['<?php echo $name ?>'][type_options_orders['<?php echo $name ?>'].length] = <?php echo $key ?>;
|
|
<?php endforeach ?>
|
|
<?php if (isset ($value_options[$name])) :?>
|
|
<?php foreach ($value_options[$name] as $option): ?>
|
|
<?php if (is_array($option)): ?>
|
|
value_options['<?php echo $name ?>'][value_options['<?php echo $name ?>'].length] = {
|
|
<?php foreach ($option as $id => $val): ?>
|
|
<?php echo $id ?>: '<?php echo $val ?>',
|
|
<?php endforeach ?>
|
|
}
|
|
<?php else: ?>
|
|
value_options['<?php echo $name ?>'][value_options['<?php echo $name ?>'].length] = '<?php echo $option ?>';
|
|
<?php endif ?>
|
|
<?php endforeach ?>
|
|
<?php endif ?>
|
|
<?php endforeach ?>
|
|
|
|
var callbacks = new Array();
|
|
<?php foreach ($callbacks as $name => $callback): ?>
|
|
callbacks['<?php echo $name ?>'] = '<?php echo $callback ?>';
|
|
<?php endforeach ?>
|
|
|
|
var minlengths = new Array();
|
|
<?php foreach ($minlengths as $name => $minlength): ?>
|
|
minlengths['<?php echo $name ?>'] = '<?php echo $minlength ?>';
|
|
<?php endforeach ?>
|
|
|
|
var withouts = new Array();
|
|
<?php foreach ($withouts as $name => $without): ?>
|
|
withouts['<?php echo $name ?>'] = <?php echo $without ?>;
|
|
<?php endforeach ?>
|
|
|
|
var types = new Array();
|
|
<?php foreach ($js_types as $name => $js_type): ?>
|
|
types['<?php echo $name ?>'] = '<?php echo $js_type ?>';
|
|
<?php endforeach ?>
|
|
|
|
type_values = {
|
|
<?php foreach ($types as $i => $type): ?>
|
|
<?php echo $i ?>: {
|
|
'<?php echo $type ?>': '<?php echo trim($values[$i]) ?>'
|
|
},
|
|
<?php endforeach ?>
|
|
}
|
|
|
|
var tables = {
|
|
<?php foreach ($tables as $name => $table):?>
|
|
'<?php echo $name ?>': ["<?php echo $table ?>"],
|
|
<?php endforeach; ?>
|
|
}
|
|
|
|
classes = {
|
|
<?php foreach ($classes as $name => $oper_class): ?>
|
|
'<?php echo $name ?>': {
|
|
<?php foreach ($oper_class as $oper => $class): ?>
|
|
'<?php echo $oper ?>': ["<?php echo $class ?>"],
|
|
<?php endforeach ?>
|
|
},
|
|
<?php endforeach ?>
|
|
}
|
|
|
|
update_form();
|
|
$(".t, .o").change(update_form);
|
|
|
|
if ($(".delete_button").length == 1)
|
|
$(".delete_button").hide();
|
|
|
|
});
|
|
</script>
|
|
<?php echo form::open(url::base(TRUE).url::current(FALSE), array('method' => 'get', 'id' => 'filter_form')) ?>
|
|
|
|
<?php if ($default_count): ?>
|
|
<div id="default_filter_div">
|
|
<?php endif ?>
|
|
<?php foreach ($types as $i => $type): ?>
|
|
<div class="filter_div">
|
|
<?php echo form::dropdown ('types[]', $type_values, $type, " class='t'") ?>
|
|
<?php echo form::dropdown ('opers[]', $operation_values, $operations[$i], " class='o'") ?>
|
|
<?php echo form::input(array('name' => 'values[]', 'value' => trim($values[$i]), 'class' => 'v without_select_button')) ?>
|
|
<img src='<?php echo url::base() ?>media/images/layout/select.png' class='select_button'>
|
|
<?php echo form::hidden('tables[]', $tables[$type]) ?>
|
|
<?php echo form::hidden('default[]', $default[$i]) ?>
|
|
<img src='<?php echo url::base() ?>media/images/icons/delete.png' class='delete_button' title="<?php echo __('Delete this filter') ?>">
|
|
</div>
|
|
<?php if ($default_count == ($i+1)): ?>
|
|
</div>
|
|
<?php endif ?>
|
|
<?php endforeach ?>
|
|
|
|
<div class="filter_div">
|
|
<?php echo form::dropdown ('types[]', $type_values, NULL, " class='t'") ?>
|
|
<?php echo form::dropdown ('opers[]', $operation_values, NULL, " class='o'") ?>
|
|
<?php echo form::input(array('name' => 'values[]', 'class' => 'v without_select_button')) ?>
|
|
<img src='<?php echo url::base() ?>media/images/layout/select.png' class='select_button'>
|
|
<?php echo form::hidden('tables[]', "") ?>
|
|
<?php echo form::hidden('default[]', 0) ?>
|
|
<img src='<?php echo url::base() ?>media/images/icons/delete.png' class='delete_button' title="<?php echo __('Delete this filter') ?>">
|
|
</div>
|
|
|
|
<?php foreach ($keys as $name => $keys): ?>
|
|
<?php foreach ($keys as $key => $val): ?>
|
|
<?php echo form::hidden("keys[$name][]", $val['key']) ?>
|
|
<?php echo form::hidden("vals[$name][]", $val['value']) ?>
|
|
<?php endforeach ?>
|
|
<?php endforeach ?>
|
|
|
|
<?php echo form::button(array('type' => 'submit', 'class' => 'submit', 'value' => __('Filter'))) ?>
|
|
<?php echo form::close() ?>
|