| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539 |
- //============================== 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("<li>" + $(this).parent().html() + "</li>")
- }
- });
- $("#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('<div id="reader" width="600px"></div>');
- 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');
|