BiFace_Server_Lite/web/js/common.js
2021-08-23 15:19:49 +07:00

521 lines
16 KiB
JavaScript

$(function () {
$('[data-toggle="tooltip"]').tooltip({
container: 'body'
});
function youtube_parser(url) {
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
var match = url.match(regExp);
return (match && match[7].length == 11) ? match[7] : false;
}
$('iframe').each(function (i, o) {
var $o = $(o);
if ($o.prop('src').search('youtube') != -1) {
if (!$o.parent().hasClass('embed-responsive')) {
$o.addClass('embed-responsive-item');
$o.wrapAll('<div class="embed-responsive embed-responsive-16by9" />');
var vid = youtube_parser($o.prop("src"));
if (vid) {
$o.addClass('hidden-print');
$o.parent().addClass('youtube-preview youtube-preview-print').append('<img class="embed-responsive-item visible-print" src="https://img.youtube.com/vi/' + vid + '/0.jpg" onerror="this.src=\"https:\/\/img.youtube.com\/vi\/' + vid + '\/maxresdefault.jpg\""/>');
$o.parent().append('<a class="youtube-play-icon" href="' + $o.prop("src") + '"><img class="visible-print" src="/assets/images/icon_youtube_play.png"/></a>');
}
}
}
});
$.fn.modal.Constructor.prototype.enforceFocus = function () {};
// var api = common.getAPI();
// var socket = io.connect(api);
// socket.on('getNotification', function (data) {
// if (data.user_id == parseInt($("input[name='current_user_id']").val())) {
// var number = parseInt($("#number_notif_1").html()) + 1;
// $("#number_notif_1").html(number).removeClass("hidden");
// $("#number_notif_2").html(number);
// var html = `<li {if style="background: #edf2fa;">
// <a href="` + data.url + `">
// <i class="fa fa-book text-aqua"></i> ` + data.content + `
// </a>
// </li>`;
// $("#notif_lists").prepend(html);
// notification.df(`<a href="` + data.url + `" style="text-decoration: none;">` + data.content + `</a>`, 30000, data.type);
// }
// });
});
$(document).on('focusin', function (e) {
if ($(e.target).closest(".mce-window").length) {
e.stopImmediatePropagation();
}
});
/**
* Các hàm sử dụng chung
*/
var common = {};
common.csrf = $('meta[name="csrf-token"]').attr("content");
common.csrfParam = $('meta[name="csrf-param"]').attr("content");
common.getAPI = function () {
var protocol = location.protocol;
var slashes = protocol.concat("//");
var host = slashes.concat(window.location.hostname);
return host + ":8002/";
};
common.sendNotification = function (data) {
var api = common.getAPI();
$.ajax({
url: api + "notification",
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json',
success: function (data) {
}
});
};
common.mark = function (e) {
$.ajax({
url: $(e).attr("data-href"),
type: 'POST',
success: function (data) {
$("#number_notif_2").html("0");
$("#number_notif_1").html("0").addClass("hidden");
}
});
};
common.modalOpen = function (data, lg, title) {
$("#myModalContent").html(data);
$("#myModalContent").attr("style", "");
if (lg) {
$(".modal-dialog").addClass("modal-lg");
} else {
$(".modal-dialog").removeClass("modal-lg");
}
if (!title) {
$("#modalHeader").addClass("hidden");
} else {
$("#modalHeader").removeClass("hidden");
$("#myModalLabel").html(title);
}
$("#myModalFooter").addClass("hidden");
$("#myModal").modal();
};
common.modalOpenFullScreen = function (data, title) {
$("input[name='ReLoadFullScreen']").val("false");
$("#myModalFullScreenContent").html(data);
if (title == false) {
$("#modalFullScreenHeader").addClass("hidden");
} else {
$("#modalFullScreenHeader").removeClass("hidden");
$("#myModalFullScreenLabel").html(title);
}
$("#myModalFullScreen").modal();
};
common.modalBlock = function (stt) {
if (stt) {
$("#blocking").modal({
keyboard: false,
backdrop: false
});
} else {
$("#blocking").modal("hide");
}
};
common.uploadBlock = function (stt) {
if (stt) {
$("#uploadBlock").modal({
keyboard: false,
backdrop: false
});
} else {
$("#uploadBlock").modal("hide");
}
};
common.modalAlert = function (text, cls, link) {
$("#alertModalContent").html(text);
$("#alertModalDialog").removeClass("modal-lg");
$("#alertModal").modal({
backdrop: 'static',
keyboard: false
});
switch (cls) {
case "success":
$("#alertModalHeader").attr("style", "background-color:#5cb85c;color:white;");
break;
case "danger":
$("#alertModalHeader").attr("style", "background-color:#d9534f;color:white;");
break;
case "info":
$("#alertModalHeader").attr("style", "background-color:#5bc0de;color:white;");
break;
case "warning":
$("#alertModalHeader").attr("style", "background-color:#f0ad4e;color:white;");
break;
}
if (link !== "") {
$('#alertModal').on('hide.bs.modal', function () {
window.location = link;
});
}
};
common.ajaxError = function () {
common.modalAlert($("input[name='CO_LOI_XAY_RA_HAY_THU_LAI']").val(), "danger", "");
};
common.btnUpload = function (mUrl, className, extension, fileSize) {
var fData = {
UploadFile: true,
Name: className
};
fData[common.csrfParam] = common.csrf;
new afuButton({
uploadURI: mUrl,
formData: fData,
wrap: {
tagName: 'div',
classes: ''
},
fileExtension: extension,
fileSizeLimit: fileSize,
classes: 'btn btn-default file-paperclip-' + className,
fakeInputContent: '<span class=\'fa fa-paperclip\'></span>',
onUploaded: function (data) {
common.uploadBlock(false);
if (data !== 'false') {
var r = JSON.parse(data);
if (r['link'] == 2) {
alert('Định dạng tệp tin không được hỗ trợ!\n Các loại tệp tin được hỗ trợ: ' + extension);
} else {
//alert("Tệp tin đã được tải lên thành công");
$("#fileUpload" + className).attr("href", r['link']);
$("#fileUpload" + className).html(r['name'] + " ");
$("input[name='fileUploadLink" + className + "']").val(r['link']);
}
} else {
alert('Có lỗi xảy ra, tải tệp tin không thành công!');
}
}
}).addInstance('file' + className);
$(".file-paperclip-" + className).closest("div").attr("style", "display:inline-block;");
};
common.btnUploadImage = function (mUrl, className, extension, fileSize) {
var fData = {
UploadImage: true,
Name: className
};
fData[common.csrfParam] = common.csrf;
new afuButton({
uploadURI: mUrl,
formData: fData,
wrap: {
tagName: 'div',
classes: ''
},
fileExtension: extension,
fileSizeLimit: fileSize,
classes: 'btn btn-primary btn-xs',
fakeInputContent: '<span class=\'fa fa-file-image-o\'></span> Chọn hình ảnh',
onUploaded: function (data) {
common.uploadBlock(false);
alert("Hình ảnh đã được tải lên thành công");
$("#HinhMinhHoa" + className).attr("src", "data/uploads" + data);
$("input[name='HinhMinhHoaLink" + className + "']").val(data);
$("input[name='updateStatus']").val("1");
}
}).addInstance('image' + className);
};
common.dateTimePicker = function (id) {
$('#' + id).datetimepicker({
locale: 'vi',
ignoreReadonly: true,
format: 'HH:mm DD/MM/YYYY',
sideBySide: true
});
};
common.dateTimePickerDay = function (id) {
$('#' + id).datetimepicker({
locale: 'vi',
ignoreReadonly: true,
format: 'DD/MM/YYYY'
});
};
common.dateTimePickerHour = function (id) {
$('#' + id).datetimepicker({
locale: 'vi',
ignoreReadonly: true,
format: 'HH:mm'
});
};
common.dateTimePickerByClass = function (cls, format) {
$('.' + cls).datetimepicker({
locale: 'vi',
ignoreReadonly: true,
sideBySide: true,
format: format
});
};
common.checkAll = function (id, cls) {
$('#' + id).on('ifChecked', function (event) {
$('.' + cls).iCheck('check');
});
$('#' + id).on('ifUnchecked', function (event) {
$('.' + cls).iCheck('uncheck');
});
$('#' + id).on('ifChanged', function (event) {
if (!this.changed) {
this.changed = true;
$('#' + id).iCheck('check');
} else {
this.changed = false;
$('#' + id).iCheck('uncheck');
}
$('#' + id).iCheck('update');
});
};
common.getUrlParameter = function (sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : sParameterName[1];
}
}
};
common.error = function (id, text) {
$("#" + id).addClass("has-error").removeClass("has-success");
$("#" + id).find(".help-block").html(text).removeClass("hidden");
};
common.success = function (id) {
$("#" + id).addClass("has-success").removeClass("has-error");
$("#" + id).find(".help-block").addClass("hidden");
};
common.resetForm = function (e) {
common.modalBlock(true);
$.ajax({
url: $(e).attr("href"),
type: 'POST',
success: function (data) {
common.modalBlock(false);
common.modalOpen(data.form, false, data.title);
},
error: function (jqXHR, textStatus, errorThrown) {
common.modalBlock(false);
common.ajaxError();
}
});
};
common.reset = function (e) {
var deleteDB = false;
var resetDevice = false;
if ($("input[name='DeleteDatabase']").is(':checked'))
deleteDB = true;
if ($("input[name='ResetDevice']").is(':checked'))
resetDevice = true;
if (!deleteDB && !resetDevice) {
alert($("input[name='HAY_LUA_CHON_THAO_TAC']").val());
return;
}
var confirmText = "";
if (deleteDB)
confirmText = $("input[name='DELETE_DB_CONFIRM']").val();
if (resetDevice)
confirmText = $("input[name='RESET_DB_CONFIRM']").val();
if (confirm(confirmText)) {
common.modalBlock(true);
$.ajax({
url: $(e).attr("data-href"),
type: 'POST',
data: {
deleteDB: deleteDB,
resetDevice: resetDevice
},
success: function (data) {
window.location = data;
},
error: function (jqXHR, textStatus, errorThrown) {
common.modalBlock(false);
common.ajaxError();
}
});
}
};
common.validateIp = function (Ip) {
if (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(Ip)) {
return true;
}
return false;
};
common.changeLanguage = function (e) {
$.ajax({
url: $(e).attr("href"),
type: 'POST',
success: function (data) {
window.location.reload(true);
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
}
/**
* =========================
*/
/**
* Notification
*/
var notification = {
success: function (text, time) {
$.notify({
icon: "fa fa-check",
message: "<strong>" + text + "</strong>"
}, {
type: "success",
allow_dismiss: false,
showProgressbar: false,
z_index: 99999999,
placement: {
from: "bottom",
align: "left"
},
offset: 70,
delay: time,
animate: {
enter: 'animated fadeInDown',
exit: 'animated fadeOutUp'
},
});
},
danger: function (text, time) {
$.notify({
icon: "fa fa-remove",
message: "<strong>" + text + "</strong>"
}, {
type: "danger",
allow_dismiss: false,
showProgressbar: false,
z_index: 99999999,
placement: {
from: "bottom",
align: "left"
},
offset: 70,
delay: time,
animate: {
enter: 'animated fadeInDown',
exit: 'animated fadeOutUp'
},
});
},
warning: function (text, time) {
$.notify({
icon: "fa fa-question-circle",
message: "<strong>" + text + "</strong>"
}, {
type: "warning",
allow_dismiss: false,
showProgressbar: false,
z_index: 99999999,
placement: {
from: "bottom",
align: "left"
},
offset: 70,
delay: time,
animate: {
enter: 'animated fadeInDown',
exit: 'animated fadeOutUp'
},
});
},
info: function (text, time) {
$.notify({
icon: "fa fa-info-circle",
message: "<strong>" + text + "</strong>"
}, {
type: "info",
allow_dismiss: false,
showProgressbar: false,
z_index: 99999999,
placement: {
from: "bottom",
align: "right"
},
offset: 70,
delay: time,
animate: {
enter: 'animated fadeInDown',
exit: 'animated fadeOutUp'
},
});
},
df: function (text, time, type) {
$.notify({
icon: "fa fa-info-circle",
message: text
}, {
type: type,
allow_dismiss: false,
showProgressbar: false,
z_index: 99999999,
placement: {
from: "bottom",
align: "right"
},
offset: 70,
delay: time,
animate: {
enter: 'animated fadeInDown',
exit: 'animated fadeOutUp'
},
});
},
primary: function (text, time) {
$.notify({
icon: "fa fa-info-circle",
message: "<strong>" + text + "</strong>"
}, {
type: "primary",
allow_dismiss: false,
showProgressbar: false,
z_index: 99999999,
placement: {
from: "bottom",
align: "left"
},
offset: 70,
delay: time,
animate: {
enter: 'animated fadeInDown',
exit: 'animated fadeOutUp'
},
});
},
};
+function ($, document) {
//Fix scroll with modal multiple show
var stackModal = 0;
var orginBodyPad = '';
$(document).on('show.bs.modal', '.modal', function (event) {
// var zIndex = 1040 + (10 * $('.modal:visible').length);
// $(this).css('z-index', zIndex);
if (stackModal <= 0) {
orginBodyPad = document.body.style.paddingRight || '';
}
stackModal++;
setTimeout(function () {
$('.modal-backdrop').not('.modal-stack')
// .css('z-index', zIndex - 1)
.addClass('modal-stack');
}, 0);
$(this).appendTo(document.body);
});
$(document).on('hidden.bs.modal', '.modal', function (event) {
stackModal--;
if (stackModal > 0) {
$('body').addClass("modal-open");
} else {
$('body').removeClass("modal-open");
document.body.style.paddingRight = orginBodyPad;
orginBodyPad = '';
}
});
}(jQuery, document);