From c69e8fc0f386f6572405ca12e5323b559f7386c0 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 24 Dec 2018 18:53:44 +0100 Subject: Image gallery on tables first version --- ishtar_common/static/js/ishtar.js | 160 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) (limited to 'ishtar_common/static/js/ishtar.js') diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index ea0ccc516..a41b718a7 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -40,6 +40,7 @@ function get_previous_table_id(){} var datatable_submit_search = function() {}; +var current_tab = "table"; var shortcut_url = ''; var show_shortcut_menu = false; var alert_url = ''; @@ -48,6 +49,7 @@ var datatables_i18n; var current_modal; var default_search_vector; var pin_search_url; +var static_path = '/static/'; var datatables_default = { "processing": true, @@ -67,6 +69,8 @@ var datatables_static_default = { "lengthMenu": [ 5, 10, 25, 50, 100 ] }; +var show_msg = "Show"; +var entries_msg = "entries"; var activate_all_search_msg = "Searches in the shortcut menu deals with all items."; var activate_own_search_msg = "Searches in the shortcut menu deals with only your items."; var added_message = " items added."; @@ -979,3 +983,159 @@ var dt_multi_enable_disable_submit_button = function(e, dt, type, indexes){ $("#validation-bar #submit_form").prop('disabled', true); } }; + +var render_gallery = function(data_table, table_name, nb_select){ + var html = ''; + html += ""; + + /* pagination */ + var page_total = data_table['total']; + var page_current = data_table['page']; + html += "
"; + html += '
    '; + + var disabled = page_current == 1; + html += render_paginate_button(page_current - 1, page_current, "Previous", + disabled, " previous"); + html += render_paginate_button(1, page_current); + + var idx_page = 2; + if (page_current < 5){ + while (idx_page <= 5){ + if (idx_page <= page_total){ + html += render_paginate_button(idx_page, page_current); + idx_page += 1; + } + } + if (page_total > 6){ + html += render_paginate_button('...'); + } + html += render_paginate_button(page_total, page_current); + } else { + html += render_paginate_button('...'); + if (page_total < page_current + 2 && + page_total > (page_current - 2)){ + html += render_paginate_button(page_current - 3, page_current); + } + if (page_total < page_current + 3 && + page_total > (page_current - 3)){ + html += render_paginate_button(page_current - 2, page_current); + } + html += render_paginate_button(page_current - 1, page_current); + html += render_paginate_button(page_current, page_current); + if (page_total > page_current) + html += render_paginate_button(page_current + 1, page_current); + if (page_total < page_current + 3){ + idx_page = page_current + 2; + while (idx_page <= page_total){ + html += render_paginate_button(idx_page, page_current); + idx_page += 1; + } + } else { + html += render_paginate_button('...'); + html += render_paginate_button(page_total, page_current); + } + } + + disabled = page_current == page_total; + html += render_paginate_button( + page_current + 1, page_current, "Next", disabled, " next"); + + html += '
'; + return html; +}; + +var render_paginate_button = function(nb, current, label, disabled, extra_class){ + if (!extra_class) extra_class = ''; + if (nb == '...'){ + disabled = true; + } else if (current == nb) { + extra_class += ' active'; + } + if (disabled) extra_class += ' disabled'; + if (!label) label = nb; + + var html = '
  • '; + html += ''; + html += label + '
  • '; + return html; +}; + +var current_image_page = 1; + +var register_image_paginate = function(){ + $(".image-pagination .paginate_button a").click(function(){ + current_image_page = $(this).attr('data-dt-idx'); + gallery_submit_search(); + }); +}; + +var main_submit_search = function(){ + if (current_tab == "table") datatable_submit_search(); + if (current_tab == "gallery") gallery_submit_search(); +}; + +var search_get_query_data = function(query_vars, table_name){ + $("#id_search_vector").removeClass('input-progress'); + if ($('.modal-progress').length > 0){ + $('.modal-progress').modal('show'); + } + var data = ""; + for (idx in query_vars){ + var key = query_vars[idx]; + var item = jQuery("#id_" + key); + var val = null; + if (item.prop('type') == 'checkbox'){ + if (item.prop('checked')){ + var val = item.val(); + } + } else { + var val = item.val(); + } + if (val){ + if (data) data += "&"; + data += key + "=" + encodeURIComponent(val); + } + } + if (current_image_page && current_tab == "gallery"){ + var id_select = "#id_" + table_name + '-length_image'; + if (data) data += "&"; + data += "start=" + ((current_image_page - 1) * $(id_select).val()); + } + return data; +}; -- cgit v1.2.3