postFiles: function($form, request, callback)
{
var formData = new FormData($form[0]);
var input = $form.find('input[type=file]')[0];
for(var n in input.files) {
if(input.files[n].size > 104857600) {
alert('Максимальный размер загружаемых файлов - 100 Мб!');
return;
}
}
$.ajax({
url: window.location.href,
headers: {
'X-WINTER-REQUEST-HANDLER': request? request : $form.attr('data-request') // это для WinterCMS
},
method: 'POST',
dataType: 'json',
type: 'POST',
processData: false,
contentType: false,
data: formData,
success: function(data) {
$('#file-upload-progress').remove();
if(callback) {
callback(data);
} else {
eval($form.attr('data-request-success'));
}
},
error: function(data) {
$('#file-upload-progress').remove();
if(data.responseText) {
alert(data.responseText);
}
},
xhr: function() { // custom xhr
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload) {
myXhr.upload.addEventListener(
'progress',
function(evt) {
if (evt.lengthComputable) {
var $progress = $('#file-upload-progress');
if($progress.length === 0) {
$progress = $(
'<div id="file-upload-progress" style="position: fixed; top: 0; left: 45%; text-align: center; background-color: white; border-radius: 1em; padding: 0 1em 1em 1em; border: 2px solid #CEF; z-index: 2000">' +
'<h6>Загрузка файлов</h6>' +
'<div class="progress" style="margin-bottom: 1em">' +
'<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>' +
'</div>' +
'</div>'
);
$progress.append(
$('<button class="btn btn-sm btn-default"><i class="icon-remove"></i> Отменить загрузку</button>')
.click(function() {
myXhr.abort();
$progress.remove();
})
)
$('body').append($progress.hide());
}
var percentComplete = Math.round(evt.loaded / evt.total * 100);
if(percentComplete === 1) {
$progress.hide();
} else {
$progress.find('div.progress-bar').css('width', percentComplete + '%').attr('aria-valuenow', percentComplete).html(percentComplete + ' %');
$progress.show();
}
}
},
false
);
}
return myXhr;
}
});
return false;
},
$ pdfinfo sample.pdf
Producer: Oracle BI Publisher 12.2.1.4.0
Custom Metadata: yes
Metadata Stream: no
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 3
Encrypted: no
Page size: 595.3 x 841.9 pts (A4)
Page rot: 0
File size: 70491 bytes
Optimized: no
PDF version: 1.6
const prices = [
{ diameter: 40, brick: 25, concrete: 30 },
{ diameter: 50, brick: 25, concrete: 30 },
{ diameter: 60, brick: 25, concrete: 30 },
];
const realDiameter = 55;
const material = 'brick';
let price = 0;
for(let n = 0; n < prices.length; ++n) {
if(realDiameter < prices[n].diameter) {
break;
}
price = prices[n][material];
}
это все в виде приложения для телефона
это когда приходите в заведение
сканируете qr и заказываете
// в switch: определяем n, и только.
for(let i = 0; i < one.length; i += n) {
let eq = true;
for(let pos = 0; pos < n; ++pos) {
if(one[i + pos] != two[i + pos]) {
eq = false;
break;
}
if(eq) {
// ну, и тут по аналогии
}
}
}