//============================== Generic Javascript Functions
var user_config = {
log: 1,
theme: 'default',
menu_default: false, // true - Collapsed | false - Open
allways_ajax: true
};
function isDefined(data) {
if (typeof data === 'undefined') {
return false;
} else {
return true;
}
}
function definedOr(data, value = '') {
if (typeof data === 'undefined') {
return value;
} else {
return data;
}
}
function setIfNotEmpty(location, value) {
if (value != '') {
$(location).val(value);
}
}
/*
* ============================== Template Boot
* _______ _ _
* |__ __| | | | |
* | | ___ _ __ ___ _ __ | | __ _| |_ ___
* | |/ _ \ '_ ` _ \| '_ \| |/ _` | __/ _ \
* | | __/ | | | | | |_) | | (_| | || __/
* |_|\___|_| |_| |_| .__/|_|\__,_|\__\___|
* | |
* |_|
*/
/* Função de aparecer ou desaparecer o menu lateral */
$(".menu-toggle").on('click', function (e) {
e.preventDefault();
//e.preventPropagation();
$("#wrapper").toggleClass("toggled");
window.dispatchEvent(new Event('resize'));
});
if (user_config.menu_default) {
$('#wrapper').addClass('toggled');
window.dispatchEvent(new Event('resize'));
}
/* Função de aparecer ou desaparecer o menu lateral Secundário*/
$(".menu-toggle").on('contextmenu', function (e) {
e.preventDefault();
//e.preventPropagation();
alert("Configs maluquinhas");
window.dispatchEvent(new Event('resize'));
});
$('#side-menu').metisMenu();
/*
* ============================== - MouseTrap
* __ __ _______
* | \/ | |__ __|
* | \ / | ___ _ _ ___ ___| |_ __ __ _ _ __
* | |\/| |/ _ \| | | / __|/ _ \ | '__/ _` | '_ \
* | | | | (_) | |_| \__ \ __/ | | | (_| | |_) |
* |_| |_|\___/ \__,_|___/\___|_|_| \__,_| .__/
* | |
* |_|
*
*/
/* Atalho, Ao apertar alt, foca no primeiro ítem do menu lateral */
Mousetrap.bind('alt', function (e) {
e.preventDefault();
$('#side-menu li:first-child a').focus();
$("#wrapper").removeClass("toggled");
return false;
});
Mousetrap.bind("alt+1", function (e) {
$("#wrapper").addClass("toggled");
e.preventDefault();
});
Mousetrap.bind("alt+2", function (e) {
$('#menu-usuario > li').addClass('open');
$('#menu-usuario > li >a').focus();
e.preventDefault();
});
//Foca na barra de pesquisa
Mousetrap.bind("ctrl+shift+f", function (e) {
$(".search-nav input").focus();
});
function popover_help() {
$('input').each(function () {
Mousetrap($(this)[0]).bind('ctrl+f1', function () {
//alert(10);
});
})
}
Mousetrap.bind("ctrl+f1", function (e) {
//alert(10);
});
//============================== MenuSearch
var menu = Array();
$("#side-menu a").each(function () {
if ($(this).attr('href') !== "") {
menu.push("
" + $(this).parent().html() + "")
}
});
$("#side-second-menu").html(menu);
$(".search-nav >input").on("keyup", function () {
var search = $(this).val().toLowerCase();
if ($(this).val() === "") {
$("#side-menu").removeClass("hidden");
$("#side-second-menu").addClass("hidden");
} else {
$("#side-menu").addClass("hidden");
$("#side-second-menu").removeClass("hidden");
$("#side-second-menu li").each(function () {
if ($(this).html().toLowerCase().indexOf(search) > -1) {
$(this).removeClass('hidden');
} else {
$(this).addClass('hidden');
}
});
}
});
/*
* ============================== - Ajax Page Handler
* _ _____
* /\ (_) | __ \
* / \ _ __ ___ __ | |__) |_ _ __ _ ___ ___
* / /\ \ | |/ _` \ \/ / | ___/ _` |/ _` |/ _ \/ __|
* / ____ \| | (_| |> < | | | (_| | (_| | __/\__ \
* /_/ \_\ |\__,_/_/\_\ |_| \__,_|\__, |\___||___/
* _/ | __/ |
* |__/ |___/
*/
//==============================
//=== Link clicks
//==============================
$('body').on('click', 'a', function (e) {
if (!user_config.allways_ajax) {
return true;
}
var target = $(this).attr('href');
var method = $(this).data('method');
if (typeof target === 'undefined' ||
target === '' ||
target === '#' ||
target == 'javascript:void(0)') {
return;
}
if (method === 'reload' || method === 'follow') {
return true;
}
e.preventDefault();
if (typeof method === 'undefined') {
method = 'GET';
}
asyncRedirect(target, method);
});
//==============================
//=== Form submissions
//==============================
$('body').on('submit', 'form', async function (e) {
var formAjax = true;
if (formAjax == false) {
return true;
}
e.preventDefault();
let request = await fetch(e.target.action, {
method: e.target.method,
body: JSON.stringify($(this).serialize()).replace(/^"+|"+$/g, ''),
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-Requested-With': 'fetch'
}
});
let responseJson = await request.json();
if (!request.ok) {
$('#toast-container').bootstrapToastWrapper({
'type': 'danger',
'title': 'Erro',
'body': responseJson,
'timeout': 5000
});
} else {
$('#toast-container').bootstrapToastWrapper({
'type': 'success',
'title': 'Sucesso',
'body': 'Ação bem sucedida',
'timeout': 5000
});
if (responseJson.location) {
asyncRedirect(responseJson.location, 'GET');
}
}
});
/*
* Ao sair do campo digitável de um valor buscavel. Executa a busca
*/
$('#content').on('blur', '[data-search] input', function (e) {
val = $(this).val();
if (val == "") { return; }
el = $(this);
elwrap = $(this).parent().parent();
url = $(this).parent().parent().data('search');
fields = $(this).parent().parent().data('searchfields').split('+');
fetch(url + val, {
method: 'GET',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-Requested-With': 'fetch'
}
}).then(function (response) {
let json = response.json();
return json;
}).then(function (json) {
if (json == null) {
$(this).val('');
$($(elwrap).find('input')[1]).val("");
return;
}
var fieldData = "";
for (value in fields) {
fieldData += json[fields[value]] + " ";
}
$($(elwrap).find('input')[1]).val(fieldData);
$(this).find('input').trigger('filled', json);
//$(e).trigger('filled', json);
//console.log();
});
});
// Revalidate screen
function revalidate_screen(location) {
$(location).find('[data-mask]').each(function () {
if ($(this).data('maskreverse') == false) {
} else {
var params = {
reverse: true
}
}
if ($(this).data('maskcomplete')) {
params.onComplete = window[$(this).data('maskcomplete')]
}
$(this).mask($(this).data('mask'), params);
$(this).on('filled', { 'params': params }, function (e) {
$(this).mask($(this).data('mask').mask);
$(this).mask($(this).data('mask').mask, params);
});
});
/*$(location).find('.remoteFill').each(function(i, el){
$(el).on('click', function(){
$(this).remoteFill();
})
});*/
//$('[data-toggle="popover"]').popover();
$(location).find('.remote-element').each(async function () {
var element = $(this);
var source = $(this).data('source');
var value = $(this).data('value');
source = source + '?value=' + value;
await asyncFill(source, 'GET', element, revalidate_screen, element);
});
$(location).find('.remote-datatable').each(async function () {
var element = $(this);
var source = $(this).data('source');
var value = $(this).data('value');
await asyncFill(source, 'GET', element, datatableInplaceBoot, $(this));
});
setSelectValues(location);
datatableBasicBoot();
$('.icon-colapser').on('click', function () {
$(this).parent().parent().find('.panel-collapse').collapse('toggle');
});
$(location).find('[data-tablesearch]').on('click', async function (e) {
await asyncFill(
$(e.currentTarget).data('tablesearch'),
'GET',
$('#modal .modal-body'),
datatableBasicBoot,
function (el) {
$(el).on('click', 'button', function (ee) {
$($(modalTarget).find('input')[0]).val($(ee.currentTarget).data('id')).trigger('blur');
modal.toggle();
})
});
await openModal({
'target': $(e.currentTarget).parent().parent().parent(),
'source': $(e.currentTarget).data('search')
});
});
$(location).find('[data-tablesearchadd]').on('click', async function (e) {
await asyncFill(
$(e.currentTarget).data('tablesearchadd') + '/table',
'GET',
$('#modal .modal-body'),
datatableBasicBoot,
async function (el) {
await $(el).on('click', 'button', async function (ee) {
modalTarget.trigger('added', $(ee.target).data('id'));
modal.toggle();
})
});
await openModal({
'target': $(e.currentTarget).parent().parent().find('.list-group'),
'source': $(e.currentTarget).data('search')
});
});
$(location).find('[data-ean] button').on('click', function (e) {
$('#modal .modal-body').html('');
function onScanSuccess(decodedText, decodedResult) {
// handle the scanned code as you like, for example:
$(this).parent().find('input').val(decodedText);
myModal.hide();
}
scan = new Html5QrcodeScanner(
"reader",
{ fps: 10, qrbox: { width: 250, height: 250 } },
/* verbose= */ false);
scan.render(onScanSuccess);
openModal({
'target': $(e.currentTarget).parent().parent().find('.list-group'),
'source': $(e.currentTarget).data('search'),
'close': function () {
scan.stop();
}
});
});
/*
* Campos que se autopreenchem quando o valor é buscado
*/
$(location).find('[data-listener]').each(function (el, i) {
var element = $(this);
let selector = "[name='" + $(this).data('listener') + "']";
let key = $(this).data('listenervalue');
$(selector).on('filled blur', function (e, data, data1) {
console.log($(this));
});
});
/* TODO create validation rules */
$('#content').find('form').each(function () {
//$(this).validator();
});
popover_help();
}
/*
* ================================================
* _____ _ _ _ _
* | __ \ | | | | | | | |
* | | | | __ _| |_ __ _| |_ __ _| |__ | | ___ ___
* | | | |/ _` | __/ _` | __/ _` | '_ \| |/ _ \/ __|
* | |__| | (_| | || (_| | || (_| | |_) | | __/\__ \
* |_____/ \__,_|\__\__,_|\__\__,_|_.__/|_|\___||___/
*
*/
function datatableBasicBoot(param) {
$('.datatable').each(function (i, el) {
var columns = [];
$(this).find('thead').find('th').each(function (i, el) {
columns.push({ 'data': $(el).data('field') });
});
var ajax = {
"url": $(el).data('src'),
'type': 'POST',
}
$(el).DataTable({
"processing": true,
"serverSide": true,
"ajax": ajax,
"columns": columns
});
param(el);
});
}
function datatableInplaceBoot(location = '#content', param = function () { }) {
$(location).find('.datatable').each(function (i, el) {
var columns = [];
$(this).find('thead').find('th').each(function (i, el) {
columns.push({ 'data': $(el).data('field') });
});
var ajax = {
"url": $(el).data('src'),
'type': 'POST',
}
$(el).DataTable({
"processing": true,
"serverSide": true,
"ajax": ajax,
"columns": columns
});
param(el);
});
}
function datatableRemoteLoad() {
}
/*
* ================================================
* _____ _ _
* / ____| | | | |
* | (___ ___| | ___ ___| |_ ___
* \___ \ / _ \ |/ _ \/ __| __/ __|
* ____) | __/ | __/ (__| |_\__ \
* |_____/ \___|_|\___|\___|\__|___/
*
*/
function setSelectValues(select, value) {
if ($(select).prop('nodeName') == 'SELECT') {
setSelectValue(select, $(select).data('value'));
} else {
$(select).find('select').each(function (i, el) {
if (typeof $(this).data('value') !== "undefined" && $(this).data('value') !== '') {
setSelectValue($(this), $(this).data('value'))
}
});
}
}
function setSelectValue(select, value) {
$(select).find('option').each(function (i, el) {
$(el).attr('selected', false);
if ($(el).val() == value) {
$(el).attr('selected', true);
}
});
}
function setSelectName(select, value) {
$(select).find('select').each(function (i, el) {
if (typeof $(this).data('value') !== "undefined" && $(this).data('value') !== '') {
setSelectName($(this), $(this).data('value'))
}
});
}
function setSelectName(select, value) {
$(select).find('option').each(function (i, el) {
$(el).attr('selected', false);
if ($(el).html() == value) {
$(el).attr('selected', true);
}
});
}
$('#content').on('reloaded', function () {
revalidate_screen('#content');
});
revalidate_screen('body');