Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision b5742d3c

Von Jan Büren vor etwa 2 Jahren hinzugefügt

  • ID b5742d3c1a45c9c979767c7cb0b5b6b6e11a9de8
  • Vorgänger 07516234
  • Nachfolger f0c23972

Drei Status für chart eingeführt: valid, invalid, all (POD erg.)

Unterschiede anzeigen:

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