const display_notifications = (messages, type, selector) => { let html = ''; type = type == 'error' ? 'danger' : type; for(let message of messages) { html += `
${message}
`; } $(selector).html(html); }; const fade_out_redirect = ({ url = false, selector = 'body', wait_time = 70, full = false }) => { /* Get the base url */ let base_url = $('#url').val(); /* Redirect link */ let redirect_url = full ? url : `${base_url}${url}`; setTimeout(() => { $(selector).fadeOut(() => { $(selector).html('
Загрузка...
').show(); }); setTimeout(() => window.location.href = redirect_url, 100) }, wait_time) }; const redirect = (url, full = false) => { /* Get the base url */ let base_url = $('#url').val(); window.location.href = full ? url : `${base_url}${url}`; }; const ajax_call_helper = (event, controller, request_type, success_callback = () => {}) => { let row_id = $(event.currentTarget).data('row-id'); let global_token = $('input[name="global_token"]').val(); let data = { global_token, request_type }; switch(controller) { case 'project-ajax': data.project_id = row_id; break; case 'store-ajax': data.product_id = row_id; data.category_id = row_id; break; case 'link-ajax': data.link_id = row_id; break; default: data.id = row_id; } $.ajax({ type: 'POST', url: controller, data: data, success: (data) => { if(data.status == 'error') { alert(data.message[0]); } else if(data.status == 'success') { success_callback(event, data); } }, dataType: 'json' }); event.preventDefault(); }; const number_format = (number, decimals, dec_point = '.', thousands_point = ',') => { if (number == null || !isFinite(number)) { throw new TypeError('number is not valid'); } if(!decimals) { let len = number.toString().split('.').length; decimals = len > 1 ? len : 0; } number = parseFloat(number).toFixed(decimals); number = number.replace('.', dec_point); let splitNum = number.split(dec_point); splitNum[0] = splitNum[0].replace(/\B(?=(\d{3})+(?!\d))/g, thousands_point); number = splitNum.join(dec_point); return number; }; const nr = (number, decimals = 0) => { let decimal_point = $('[name="number_decimal_point"]').val(); let thousands_separator = $('[name="number_thousands_separator"]').val(); return number_format(number, decimals, decimal_point, thousands_separator); }; const get_random_color = () => { let letters = '0123456789ABCDEF'; let color = '#'; for (let i = 0; i < 6; i++) { color += letters[Math.floor(Math.random() * 16)]; } return color; };