Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 68d15545

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

  • ID 68d15545d1eabd0a60c8457b701106bdd01cf808
  • Vorgänger 11047a5a
  • Nachfolger 07516234

erste Idee: Ungültig für ChartPicker umgesetzt

Unterschiede anzeigen:

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