From 28535d1a083c23573ff94556bbc54ea69451a8c7 Mon Sep 17 00:00:00 2001 From: MrCrayon Date: Sun, 5 Apr 2020 16:32:27 +0800 Subject: [PATCH] Fix save bread when ajax calls are not done (#4716) * WIP - Fix save bread when ajax calls are not done Every relationship set in BREAD made three ajax calls to collect table fields. In a BREAD with many relationship and/or slow server this could result in some relationship not correctly populated when hitting Submit button. This PR prepopulate selects with already saved values, since we have it, and leaves ajax call only when table is changed or modal is opened. Fixes #3960 TODO: Fix select width in modal * Fix styling Co-authored-by: Christoph Schweppe --- .../views/tools/bread/edit-add.blade.php | 52 ++++++++++--------- .../bread/relationship-new-modal.blade.php | 4 +- .../bread/relationship-partial.blade.php | 3 ++ 3 files changed, 32 insertions(+), 27 deletions(-) diff --git a/resources/views/tools/bread/edit-add.blade.php b/resources/views/tools/bread/edit-add.blade.php index b41b2a03b4..511968406c 100644 --- a/resources/views/tools/bread/edit-add.blade.php +++ b/resources/views/tools/bread/edit-add.blade.php @@ -559,10 +559,6 @@ function sort() { /********** Relationship functionality **********/ $(function () { - $('.rowDrop').each(function(){ - populateRowsFromTable($(this)); - }); - $('.relationship_type').change(function(){ if($(this).val() == 'belongsTo'){ $(this).parent().parent().find('.relationshipField').show(); @@ -584,19 +580,16 @@ function sort() { }); $('.btn-new-relationship').click(function(){ + // Update table data + $('#new_relationship_modal .relationship_table').trigger('change'); + $('#new_relationship_modal').modal('show'); }); relationshipTextDataBinding(); $('.relationship_table').on('change', function(){ - var tbl_selected = $(this).val(); - var rowDropDowns = $(this).parent().parent().find('.rowDrop'); - $(this).parent().parent().find('.rowDrop').each(function(){ - console.log('1'); - $(this).data('table', tbl_selected); - populateRowsFromTable($(this)); - }); + populateRowsFromTable($(this)); }); $('.voyager-relationship-details-btn').click(function(){ @@ -611,23 +604,32 @@ function sort() { }); function populateRowsFromTable(dropdown){ - var tbl = dropdown.data('table'); - var selected_value = dropdown.data('selected'); - if(tbl.length != 0){ - $.get('{{ route('voyager.database.index') }}/' + tbl, function(data){ - $(dropdown).empty(); - for (var option in data) { - $('