Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 525f4f88

Von Sven Schöling vor 1 Tag hinzugefügt

  • ID 525f4f882d4e37c8003ed97b0845a27f94d1682a
  • Vorgänger de08e910
  • Nachfolger 07458256

Artikeleingabe unten: alternatives Scrollverhalten wenn Positionsliste ohne Scrollbereich

Wenn die Artikeleingabe unten gerendert wird, und die Positionsliste
nicht begrenzt ist, gilt jetzt folgendes Verhalten:

Wenn nach dem Einfügen der neuen Zeile die Seite scrollbar ist, und
durch scrollen die Eingabeleite auf konstanter Höhe gehalten werden
kann, dann wird so gescrollt.

Unterschiede anzeigen:

SL/Controller/Order.pm
48 48
use SL::Helper::UserPreferences::DisplayPreferences;
49 49
use SL::Helper::UserPreferences::PositionsScrollbar;
50 50
use SL::Helper::UserPreferences::UpdatePositions;
51
use SL::Helper::UserPreferences::ItemInputPosition;
51 52

  
52 53
use SL::Controller::Helper::GetModels;
53 54

  
......
1112 1113

  
1113 1114
  $self->js->run('kivi.Order.row_table_scroll_down') if !$::form->{insert_before_item_id};
1114 1115

  
1116
  # alternate scroll behaviour if item input below positions and unlimited scroll height
1117
  $self->js->run('kivi.Order.scroll_page_after_row_insert', $item_id)
1118
    if 0 == SL::Helper::UserPreferences::PositionsScrollbar->new()->get_height
1119
    && SL::Helper::UserPreferences::ItemInputPosition->new()->get_order_item_input_position
1120
       // $::instance_conf->get_order_item_input_position;
1121

  
1115 1122
  $self->js_redisplay_amounts_and_taxes;
1116 1123
  $self->js->render();
1117 1124
}
js/kivi.Order.js
549 549
    $('#row_table_scroll_id').scrollTop($('#row_table_scroll_id')[0].scrollHeight);
550 550
  };
551 551

  
552
  ns.scroll_page_after_row_insert = function(id) {
553
    // find row height and border spacing
554
    const $id_input = $('input[name="orderitem_ids[+]"][value="'+id+'"]');
555
    const $row = $id_input.closest('tbody');
556
    const table = $row.closest('table')[0];
557
    const style = getComputedStyle(table);
558

  
559
    const height = $row[0].offsetHeight + parseFloat(style.borderSpacing) || 0;
560

  
561
    // if site is scrollable and scrolling can put it where it was before: do scroll
562
    const max_scroll = document.documentElement.scrollHeight - window.innerHeight;
563

  
564
    if (window.scrollY + height <= max_scroll) {
565
      window.scrollBy(0, height)
566
    }
567
  }
568

  
552 569
  ns.show_longdescription_dialog = function(clicked) {
553 570
    var row                 = $(clicked).parents("tbody").first();
554 571
    var position            = $(row).find('[name="position"]').html();

Auch abrufbar als: Unified diff