Revision 68d15545
Von Jan Büren vor etwa 2 Jahren hinzugefügt
SL/DB/Manager/Chart.pm | ||
---|---|---|
my ($key, $value) = @_;
|
||
return __PACKAGE__->booked_filter($value);
|
||
},
|
||
invalid => sub {
|
||
my ($key, $value) = @_;
|
||
return __PACKAGE__->invalid_filter($value);
|
||
},
|
||
|
||
);
|
||
sub invalid_filter {
|
||
my ($class, $invalid) = @_;
|
||
|
||
$invalid //= 0;
|
||
my @filter;
|
||
|
||
if ( $invalid ) {
|
||
push @filter, ( id => [ \"SELECT id FROM chart" ] );
|
||
} else {
|
||
push @filter, ( id => [ \"SELECT id FROM chart WHERE NOT invalid" ] );
|
||
};
|
||
|
||
return @filter;
|
||
}
|
||
|
||
|
||
sub booked_filter {
|
||
my ($class, $booked) = @_;
|
SL/Presenter/Chart.pm | ||
---|---|---|
|
||
sub chart_picker {
|
||
my ($name, $value, %params) = @_;
|
||
|
||
$value = SL::DB::Manager::Chart->find_by(id => $value) if $value && !ref $value;
|
||
my $id = delete($params{id}) || name_to_id($name);
|
||
my $fat_set_item = delete $params{fat_set_item};
|
||
... | ... | |
|
||
my $ret =
|
||
input_tag($name, (ref $value && $value->can('id') ? $value->id : ''), class => "@classes", type => 'hidden', id => $id) .
|
||
join('', map { $params{$_} ? input_tag("", delete $params{$_}, id => "${id}_${_}", type => 'hidden') : '' } qw(type category choose booked)) .
|
||
join('', map { $params{$_} ? input_tag("", delete $params{$_}, id => "${id}_${_}", type => 'hidden') : '' } qw(type category choose booked invalid)) .
|
||
input_tag("", (ref $value && $value->can('displayable_name')) ? $value->displayable_name : '', id => "${id}_name", %params);
|
||
|
||
$::request->layout->add_javascripts('autocomplete_chart.js');
|
js/autocomplete_chart.js | ||
---|---|---|
var $category = $('#' + real_id + '_category'); // hidden input_field of the chart_picker, added in Presenter, never changes
|
||
var $choose = $('#' + real_id + '_choose');
|
||
var $booked = $('#' + real_id + '_booked');
|
||
var $invalid = $('#' + real_id + '_invalid');
|
||
var state = STATES.PICKED;
|
||
var last_real = $real.val();
|
||
var last_dummy = $dummy.val();
|
||
... | ... | |
if ($category && $category.val())
|
||
data['filter.category'] = $category.val().split(',');
|
||
|
||
data['filter.invalid'] = ($invalid && $invalid.val()) ? 1 : 0;
|
||
//data['invalid'] = 1;
|
||
|
||
|
||
return data;
|
||
}
|
||
|
templates/webpages/chart/test_page.html | ||
---|---|---|
<p>
|
||
All charts: [% P.chart.picker('chart_id', '', style=style) %]text after icon<br>
|
||
Only booked charts: [% P.chart.picker('chart_id_booked', '', booked=1, style=style) %]<br>
|
||
Only valid charts: [% P.chart.picker('chart_id_valid', '', invalid=0, style=style) %]<br>
|
||
Only invalid charts: [% P.chart.picker('chart_id_invalid', '', invalid=1, style=style) %]<br>
|
||
All charts choose: [% P.chart.picker('chart_id_choose', '', choose=1, style=style) %]<br>
|
||
</p>
|
||
|
Auch abrufbar als: Unified diff
erste Idee: Ungültig für ChartPicker umgesetzt