Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 525f4f88

Von Sven Schöling vor 5 Monaten 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
use SL::Helper::UserPreferences::DisplayPreferences;
use SL::Helper::UserPreferences::PositionsScrollbar;
use SL::Helper::UserPreferences::UpdatePositions;
use SL::Helper::UserPreferences::ItemInputPosition;
use SL::Controller::Helper::GetModels;
......
$self->js->run('kivi.Order.row_table_scroll_down') if !$::form->{insert_before_item_id};
# alternate scroll behaviour if item input below positions and unlimited scroll height
$self->js->run('kivi.Order.scroll_page_after_row_insert', $item_id)
if 0 == SL::Helper::UserPreferences::PositionsScrollbar->new()->get_height
&& SL::Helper::UserPreferences::ItemInputPosition->new()->get_order_item_input_position
// $::instance_conf->get_order_item_input_position;
$self->js_redisplay_amounts_and_taxes;
$self->js->render();
}
js/kivi.Order.js
$('#row_table_scroll_id').scrollTop($('#row_table_scroll_id')[0].scrollHeight);
};
ns.scroll_page_after_row_insert = function(id) {
// find row height and border spacing
const $id_input = $('input[name="orderitem_ids[+]"][value="'+id+'"]');
const $row = $id_input.closest('tbody');
const table = $row.closest('table')[0];
const style = getComputedStyle(table);
const height = $row[0].offsetHeight + parseFloat(style.borderSpacing) || 0;
// if site is scrollable and scrolling can put it where it was before: do scroll
const max_scroll = document.documentElement.scrollHeight - window.innerHeight;
if (window.scrollY + height <= max_scroll) {
window.scrollBy(0, height)
}
}
ns.show_longdescription_dialog = function(clicked) {
var row = $(clicked).parents("tbody").first();
var position = $(row).find('[name="position"]').html();

Auch abrufbar als: Unified diff