Revision b5742d3c
Von Jan Büren vor etwa 2 Jahren hinzugefügt
SL/DB/Manager/Chart.pm | ||
---|---|---|
use SL::DB::Helper::Paginated;
|
||
use SL::DB::Helper::Filtered;
|
||
use SL::MoreCommon qw(listify);
|
||
use DateTime;
|
||
use SL::DBUtils;
|
||
|
||
use Carp;
|
||
use DateTime;
|
||
use Data::Dumper;
|
||
|
||
sub object_class { 'SL::DB::Chart' }
|
||
... | ... | |
my ($key, $value) = @_;
|
||
return __PACKAGE__->booked_filter($value);
|
||
},
|
||
invalid => sub {
|
||
status => sub {
|
||
my ($key, $value) = @_;
|
||
return __PACKAGE__->invalid_filter($value);
|
||
},
|
||
|
||
);
|
||
sub invalid_filter {
|
||
my ($class, $invalid) = @_;
|
||
my ($class, $status) = @_;
|
||
|
||
croak "Wrong call, need status invalid, all or valid, got:" . $status unless $status =~ m/invalid|all|valid/;
|
||
|
||
$invalid //= 0;
|
||
my @filter;
|
||
|
||
if ( $invalid ) {
|
||
if ($status eq 'all') {
|
||
push @filter, ( id => [ \"SELECT id FROM chart" ] );
|
||
} else {
|
||
} elsif ($status eq 'valid') {
|
||
push @filter, ( id => [ \"SELECT id FROM chart WHERE NOT invalid" ] );
|
||
};
|
||
} elsif ($status eq 'invalid') {
|
||
push @filter, ( id => [ \"SELECT id FROM chart WHERE invalid" ] );
|
||
} else { die "Wrong state for invalid_filter"; }
|
||
|
||
return @filter;
|
||
}
|
SL/Presenter/Chart.pm | ||
---|---|---|
|
||
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 invalid)) .
|
||
join('', map { $params{$_} ? input_tag("", delete $params{$_}, id => "${id}_${_}", type => 'hidden') : '' } qw(type category choose booked status)) .
|
||
input_tag("", (ref $value && $value->can('displayable_name')) ? $value->displayable_name : '', id => "${id}_name", %params);
|
||
|
||
$::request->layout->add_javascripts('autocomplete_chart.js');
|
||
... | ... | |
Without fat_set_item only the variables id and name (displayable name) are
|
||
available.
|
||
|
||
=item * status
|
||
|
||
If C<%params> contains C<status> only charts of this status will be used
|
||
for autocompletion. C<status> can be one of the following strings:
|
||
C<valid>, C<invalid> or C<all>. C<valid> is the default if C<status> is
|
||
not given.
|
||
|
||
=back
|
||
|
||
C<chart_picker> will register its javascript for inclusion in the next header
|
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 $status = $('#' + real_id + '_status');
|
||
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;
|
||
|
||
// show only valid charts
|
||
data['filter.status'] = ($status && $status.val()) ? $status.val() : 'valid';
|
||
|
||
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>
|
||
Only valid charts: [% P.chart.picker('chart_id_valid', '', style=style) %]<br>
|
||
Only invalid charts: [% P.chart.picker('chart_id_invalid', '', status='invalid', style=style) %]<br>
|
||
Valid and invalid charts: [% P.chart.picker('chart_id_all', '', status='all', style=style) %]<br>
|
||
All charts choose: [% P.chart.picker('chart_id_choose', '', choose=1, style=style) %]<br>
|
||
</p>
|
||
|
Auch abrufbar als: Unified diff
Drei Status für chart eingeführt: valid, invalid, all (POD erg.)