Files
2019-11-17 19:14:07 +01:00

361 lines
14 KiB
JavaScript

/*
* Module made by Nukium
*
* @author Nukium
* @copyright 2018 Nukium SAS
* @license All rights reserved
*
* ███ ██ ██ ██ ██ ██ ██ ██ ██ ███ ███
* ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ████
* ██ ██ ██ ██ ██ █████ ██ ██ ██ ██ ████ ██
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
* ██ ████ ██████ ██ ██ ██ ██████ ██ ██
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
$(document).ready(function() {
$('form.AdminGlsLabel label[for^="GLS_LABEL_CARRIER_FILTER_"]:contains("[' + carrier_disabled + ']")').addClass('text-muted');
$('.bulk-actions .dropdown-menu li:first > a').trigger('click');
$('body').tooltip({
selector: '[data-toggle="tooltip"]'
});
if($('input[name="gls_label_single_type"]').val() == 'return') {
$('.packages .card-footer, .packages .packages-count, .packages .package-title').remove();
}
$('#table-labels tr:not(.extra-content)').on('click', function(e) {
e.preventDefault();
if($(this).parent('tbody').length > 0) {
$(this).find('a.toggler').trigger('click');
}
});
$('#table-labels th a.toggler').on('click', function(e) {
e.preventDefault();
if($(this).attr('aria-expanded') == 'false') {
$('#table-labels a.toggler').attr('aria-expanded', 'true');
$('#table-labels#table-labels a.toggler i').removeClass('icon-angle-down').addClass('icon-angle-up');
$('.extra-content').each(function() {
$(this).find('.extra-content-form').stop(true, false).slideDown();
});
} else {
$('#table-labels a.toggler').attr('aria-expanded', 'false');
$('#table-labels a.toggler i').removeClass('icon-angle-up').addClass('icon-angle-down');
$('.extra-content').each(function() {
$(this).find('.extra-content-form').stop(true, false).slideUp();
});
}
});
$('#table-labels td a.toggler').on('click', function(e) {
e.preventDefault();
e.stopImmediatePropagation();
$(this).attr('aria-expanded', function(_, attr) { return !(attr == 'true') });
$(this).children('i').toggleClass('icon-angle-down icon-angle-up');
$(this).closest('tr').next().find('.extra-content-form').stop(true, false).slideToggle();
return false;
});
if($('#table-labels tbody tr:not(.extra-content)').length == 1) {
$('#table-labels tbody tr td a.toggler').trigger('click');
$('#table-labels a.toggler').hide();
$('#table-labels tr:not(.extra-content)').off('click');
}
function updatePrintingState(order_id) {
var total_controls = 0;
var completed_controls = 0;
$('#extra-content-form-' + order_id + ' .form-group').each(function() {
if($(this).css('display') !== 'none') {
$(this).children('.control-label.required').next().children('.form-control').each(function() {
total_controls++;
if($(this).val() != '') {
completed_controls++;
}
});
}
});
if(total_controls > 0) {
var progress = (completed_controls / total_controls) * 100;
$('#printing-progress-' + order_id + ' .progress-bar').css('width', progress + '%').attr('aria-valuenow', progress);
if(progress == 100) {
$('#printing-progress-' + order_id + ' .progress-bar').removeClass('bg-primary').addClass('bg-success');
$('#btn-print-' + order_id).removeClass('btn-disabled').attr('title', print_ready).attr('data-original-title', print_ready).tooltip('fixTitle');
} else {
$('#printing-progress-' + order_id + ' .progress-bar').removeClass('bg-success').addClass('bg-primary');
$('#btn-print-' + order_id).addClass('btn-disabled').attr('title', print_block).attr('data-original-title', print_block).tooltip('fixTitle');
}
}
}
$.fn.getOrderId = function() {
if($(this).closest('.extra-content-form').length > 0) {
return parseInt($(this).closest('.extra-content-form').attr('id').replace('extra-content-form-', ''));
} else if($(this).closest('tr').next().hasClass('extra-content')) {
return parseInt($(this).closest('tr').next().find('.extra-content-form').attr('id').replace('extra-content-form-', ''));
}
};
var gls_label_single_type = $('input[name="gls_label_single_type"]').val();
$('.btn-print').on('click', function(e) {
e.preventDefault();
e.stopImmediatePropagation();
var toggler = $(this).closest('tr').children('td:first').children('.toggler');
if($(this).hasClass('btn-disabled')) {
if($(toggler).attr('aria-expanded') == 'false') {
$(toggler).trigger('click');
}
} else {
$(this).children('i').toggleClass('icon-print icon-spinner icon-spin');
var order_id = $(this).getOrderId();
$('input[name="gls_label_single_type"]').val(gls_label_single_type);
$.ajax({
type: 'POST',
url: ajax_uri,
cache: false,
dataType: 'json',
context: this,
data: $('#extra-content-form-' + order_id).serialize()
}).done(function(jsonData) {
if (jsonData.hasError === true) {
$('#btn-print-' + order_id).removeClass('btn-primary').addClass('btn-danger');
$('#btn-print-' + order_id).attr('title', jsonData.errors).tooltip('fixTitle').tooltip('show');
$(this).children('i').toggleClass('icon-print icon-spinner icon-spin');
} else if(jsonData.data) {
for (var i = 0, len = jsonData.data['labels'].length; i < len; i++) {
downloadFile(jsonData.data['labels'][i], 'order-' + order_id + '-label-' + (i+1) + '.pdf');
}
if($('#extra-content-form-' + order_id).find('.gls-service option:selected').attr('data-mobile-required') !== undefined
&& $('#extra-content-form-' + order_id).find('.gls-service option:selected').attr('data-mobile-required') == 'true'
&& $('#extra-content-form-' + order_id).find('input[name="return_label"]:checked').val() !== undefined
&& $('#extra-content-form-' + order_id).find('input[name="return_label"]:checked').val() == '1') {
$('input[name="gls_label_single_type"]').val('return_shipment');
$.ajax({
type: 'POST',
url: ajax_uri,
cache: false,
dataType: 'json',
context: this,
data: $('#extra-content-form-' + order_id).serialize()
}).done(function(jsonData) {
if (jsonData.hasError === true) {
$('#btn-print-' + order_id).removeClass('btn-primary').addClass('btn-danger');
$('#btn-print-' + order_id).attr('title', jsonData.errors).tooltip('fixTitle').tooltip('show');
$(this).children('i').toggleClass('icon-print icon-spinner icon-spin');
} else if(jsonData.data) {
if($(toggler).attr('aria-expanded') == 'true') {
$(toggler).trigger('click');
}
$(this).closest('tr').next().find('.extra-content-form :input').prop('disabled', true);
var parent = $(this).parent();
parent.children('.btn-print').tooltip('destroy').remove();
parent.append('<span class="icon-stack icon-lg"><i class="icon icon-circle icon-stack-2x text-success"></i><i class="icon icon-check icon-stack-1x icon-inverse"></i></span>');
for (var i = 0, len = jsonData.data['labels'].length; i < len; i++) {
downloadFile(jsonData.data['labels'][i], 'order-' + order_id + '-label-' + (i+1) + '.pdf');
}
}
}).fail(function() {
$(this).children('i').toggleClass('icon-print icon-spinner icon-spin');
// TODO display error
});
} else {
if($(toggler).attr('aria-expanded') == 'true') {
$(toggler).trigger('click');
}
$(this).closest('tr').next().find('.extra-content-form :input').prop('disabled', true);
var parent = $(this).parent();
parent.children('.btn-print').tooltip('destroy').remove();
parent.append('<span class="icon-stack icon-lg"><i class="icon icon-circle icon-stack-2x text-success"></i><i class="icon icon-check icon-stack-1x icon-inverse"></i></span>');
}
}
}).fail(function() {
$(this).children('i').toggleClass('icon-print icon-spinner icon-spin');
// TODO display error
});
}
});
var default_package_item = $('.extra-content-form:first .package:first').clone(true);
$('.extra-content-form').each(function() {
$(this).get(0).reset();
updatePrintingState($(this).children().getOrderId());
});
$('body').on('input', '.extra-content-form .form-control', function() {
updatePrintingState($(this).getOrderId());
});
$('.add-package').on('click', function(e) {
e.preventDefault();
var order_id = $(this).getOrderId();
var package_item = default_package_item;
var nb_packages = $(this).closest('.packages').find('.package').length + 1;
package_item.find('.package-index').text(nb_packages);
package_item.find('.remove-package').removeClass('d-none');
$(this).closest('.packages').find('.card-body').append(package_item.clone(true));
$(this).closest('.packages').find('.packages-count').text(nb_packages);
updatePrintingState(order_id);
});
$('body').on('click', '.remove-package', function(e) {
e.preventDefault();
if($(this).closest('.packages').find('.package').length > 1) {
var packages = $(this).closest('.packages');
var order_id = $(this).getOrderId();
$(this).closest('.package').remove();
var count = 0;
$(packages).find('.package').each(function() {
count++;
$(this).find('.package-index').text(count);
});
packages.find('.packages-count').text(count);
updatePrintingState(order_id);
}
});
$('.gls-service').on('change', function(e) {
var mobile = $(this).children('option:selected').attr('data-mobile-required');
if(typeof mobile !== 'undefined' && mobile === 'true') {
$(this).closest('.form-group').siblings('.mobile-group').find('.form-control').prop('disabled', false);
$(this).closest('.form-group').siblings('.mobile-group').stop(true, false).slideDown();
} else {
$(this).closest('.form-group').siblings('.mobile-group').stop(true, false).slideUp(function() {
$(this).find('.form-control').prop('disabled', true);
});
}
updatePrintingState($(this).getOrderId());
});
$('.gls-service').trigger('change');
function downloadFile(base64str, filename) {
var binary = atob(base64str.replace(/\s/g, ''));
var blen = binary.length;
var buffer = new ArrayBuffer(blen);
var view = new Uint8Array(buffer);
for (var n = 0; n < blen; n++) {
view[n] = binary.charCodeAt(n);
}
var newBlob = new Blob( [view], { type: "application/pdf" });
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(newBlob);
} else {
var url = URL.createObjectURL(newBlob);
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = url;
a.download = filename;
a.click();
setTimeout(function() {
URL.revokeObjectURL(url);
}, 100);
}
}
});