Listing pages

The listing pages are an integral part of the Wissensplattform-application. They show collections of elements of different type and allow a filtering and comparison of elements. Like all parts of the website, also these pages are composed of different HTML-components. These components are

  • descriptionContainer.html

  • search-bar.html:

  • comparison.html

  • pagination.html

On specific listing sites it is possible to show a comparison of different elements.

In the following section the implementation of these pages is described in detail.

Technical implementation

The listing-sites have a features implemented, which are described in that section. These features are the asynchronious loading of filtered elements and the comparison-feature.

Asynchronious loading of filtered elements

When selecting filters or entering a search string into the search-bar, a asynchronious javascript and XML (ajax)-request is sent from the browser to the django-backend to retrive the filtered listing items:

$('#searchBox').on('submit', function(e) {
    e.preventDefault();  // Prevent the form from submitting normally

    var url = $(this).attr('action');  // Get the form's action URL
    var formData = $(this).serialize();  // Serialize the form data

    $.ajax({
        type: 'GET',
        url: url,
        data: formData,
        success: function(response) {
            // Handle the response here
            // remove all ancestors of the div with the id
            if ($("#componentListingContainer").length > 0) {
              $('#componentListingContainer').empty();
              $('#componentListingContainer').append(response);
            }
            else if ($('#tool-listing-results').length > 0) {
              $('#tool-listing-results').empty();
              $('#tool-listing-results').append(response);
            }
            else if ($("#dataset-listing-results").length > 0) {
              $('#dataset-listing-results').empty();
              $('#dataset-listing-results').append(response);             
            }
            else if ($("#weatherdata-listing-results").length > 0) {
              $('#weatherdata-listing-results').empty();
              $('#weatherdata-listing-results').append(response);             
            }
            else if ($("#protocol-listing-results").length > 0) {
              $('#protocol-listing-results').empty();
              $('#protocol-listing-results').append(response);             
            }
            else if ($("#norm-listing-results").length > 0) {
              $('#norm-listing-results').empty();
              $('#norm-listing-results').append(response);             
            }
          },
        error: function(jqXHR, textStatus, errorThrown) {
            // Handle the error here
        }
    });
});

(From search-bar.html) In the above javascript code, a ajax GET-request is performed, whereby the filter from-data is put into the request and sent to the backend, where the filtering is performed. As a response a HTML partial is returned, which is put at the position in the DOM, where the listed elements shuld be present.

Comparison feature

The implementation of the comparison feature is descibed in the following.