| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600 |
- //============================== Generic Javascript Functions
- var user_config = {
- log: 1,
- theme: 'default',
- menu_default: false, // true - Collapsed | false - Open
- allways_ajax: true
- };
- function log(message, importance = 0) {
- if (user_config.log === 0) {
- return;
- }
- if (importance === 0) {
- console.log("LOG:: |" + message + "|");
- }
- if (importance === 1) {
- console.log(message);
- }
- if (importance === 2) {
- alert("LOG:: |" + message + "|");
- }
- }
- 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;
- }
- }
- //============================== Generic Template Functions
- function revalidate_screen() {
- $('[data-format]').each(function () {
- $(this).mask($(this).data('format'), {});
- });
- $('[data-toggle="popover"]').popover();
- $('select').each(function () {
- if (typeof $(this).data('value') !== "undefined" && $(this).data('value') !== '') {
- $(this).val($(this).data('value'));
- }
- });
- $('.datepicker').each(function () {
- $(this).datepicker({
- format: "dd/mm/yyyy",
- todayBtn: "linked",
- clearBtn: true,
- autoclose: true,
- todayHighlight: true
- });
- });
- $('.selectpicker').each(function () {
- $(this).select2({
- liveSearch: true
- });
- });
- $('.popup-toggle').each(() => {
- var template = '<div class="modal-dialog"> <div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal"> X </button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body">{{aaa}}</div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div>';
- if ($(this).hasClass('processed')) {
- return true;
- }
- $(this).addClass('processed');
- $(this).on('click', function (e) {
- e.preventDefault();
- $.ajax({
- method: 'GET',
- url: $(this).data('source')
- }).done(function (msg) {
- template = template.replace('{{aaa}}', msg);
- $('#modal').html(template).modal('show');
- revalidate_screen();
- });
- });
- $('#modal').on('shown.bs.modal', function () {
- revalidate_screen();
- $(this).find('.datatable-anchor').focus();
- });
- });
- $('.remote-popup').each((i, element) => {
- if ($(element).hasClass('processed')) {
- return true;
- }
- var instance = $(element);
- var number = $(element).find('.remote-popup-number');
- var button = $(element).find('button');
- var label = $(element).find('.remote-popup-label');
- searchRemote = (value = null) => {
- if (value == null) {
- value = $(number).val();
- }
- $.ajax({
- method: 'GET',
- url: $(instance).data('relay') + '/' + value
- }).done(function (msg) {
- $(label).val(msg.name);
- }).fail(function () {
- $(number).val('');
- $(label).val('');
- });
- }
- remotePopup = (source) => {
- $($('#modal')).off();
- var template = '<div class="modal-dialog"> <div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal"> X </button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body">{{aaa}}</div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div>';
- $.ajax({
- method: 'GET',
- url: source
- }).done(function (msg) {
- template = template.replace('{{aaa}}', msg);
- $('#modal').html(template).modal('show');
- $('#modal').on('hide.bs.modal', () => {
- $(number).val($("#modal .selected").data('info').id);
- searchRemote();
- });
- revalidate_screen();
- });
- };
- $(button).on('click', () => {
- remotePopup($(instance).data('relay') + '/' + $(instance).data('mode'));
- });
- $(number).on('keyup', (e) => {
- if (e.keyCode == 112) {
- remotePopup($(instance).data('relay') + '/' + $(instance).data('mode'));
- }
- });
- $(number).on('focusout', () => {
- console.log($(number).val() == '');
- if ($(number).val() == '') {
- $(label).val('');
- return;
- }
- searchRemote($(number).val());
- });
-
- if($(number).val() != ''){
- searchRemote( $(number).val() )
- }
-
- /*console.log($(element))
- console.log(number);
- console.log(button);
- console.log(label);*/
-
- $(element).addClass('processed');
-
- });
- $('.live-selectpicker').each(function () {
- $(this).select2({
- liveSearch: true
- });
- var object = $(this);
- var source = definedOr($(this).data('source'), false);
- var placeholder = definedOr($(this).data('placeholder'));
- var filter_name = definedOr($(this).data('filter'));
- var value = definedOr($(this).data('value'));
- if (!source) {
- return;
- }
- object.ajax = {
- "url": source,
- "data": function (params) {
- var query = {
- "name": params.value
- }
- }
- };
- /*$(this).ajaxSelectPicker({
- ajax: {
- url: source + "/combo_data",
- method: 'GET',
- data: {
- nome: '{{{q}}}',
- filter: function() {
- if (filter_name === '') {
- return ''
- }
- return $("[name='" + filter_name + "'] option:selected").val();
- }
- }
- },
- locale: {
- emptyTitle: placeholder
- },
- preprocessData: function(data) {
- var registers = [];
- registers.push({
- 'value': '0',
- 'text': 'Selecione'
- });
- for (var i in data) {
- registers.push({
- 'value': data[i].id,
- 'text': data[i].nome
- });
- }
- return registers;
- },
- preserveSelected: true
- });*/
- });
- /*===========================================*/
- $('.icon-colapser').on('click', function () {
- $(this).parent().parent().find('.panel-collapse').collapse('toggle');
- });
- /*$('form').each(function () {
- $(this).validator();
- });*/
- $('.data-table').each(function () {
- if ($(this).hasClass('processed')) {
- return;
- }
- var wrapper = $(this);
- var table_anchor = $(this).find('a');
- var table = $(this).find('table');
- var str = '<thead> <tr class="header">';
- for (var i in table.data('columns')) {
- if (typeof table.data('columns')[i].name === 'undefined') {
- str = str + '<th>' + table.data('columns')[i].data + "</th>";
- } else {
- str = str + '<th>' + table.data('columns')[i].name + "</th>";
- }
- }
- str += '<th>*</th>';
- str += "</tr> </thead>";
- $(table).html(str);
- var datatable = $(table).DataTable({
- 'createdRow': function (row, data) {
- $(row).attr('data-info', JSON.stringify(data));
- var content = '';
- if (typeof $(table).data('update') != 'undefined') {
- content += '<a href="' + $(table).data('update') + '"> <i class="fa fa-pencil-square"></i> </a>'
- }
- if (typeof $(table).data('delete') != 'undefined') {
- content += '<a href="' + $(table).data('delete') + '"> <i class="fa fa-trash"></i> </a>'
- }
- if (typeof $(table).data('purge') != 'undefined') {
- content += '<a href="' + $(table).data('purge') + '"> <i class="fa fa-minus-square"></i> </a>'
- }
- $(row).append('<td>' + content + '</td>');
- },
- "drawCallback": function (settings) {
- if ($(wrapper).hasClass('selectable')) {
- $($(table).find('tr')[1]).addClass('selected');
- if (!$(wrapper).hasClass('processed')) {
- $(table_anchor).focus();
- }
- }
- },
- "initComplete": function (settings, json) {
- $(wrapper).addClass('processed');
- },
- processing: true,
- serverSide: true,
- searchDelay: 800,
- ajax: {'url': table.data('source'), 'type': 'POST'},
- columns: table.data('columns')
- });
- var search = $(this).find('input');
- $(search).on('keyup', function (e) {
- if (e.keyCode == 13) {
- $(table_anchor).focus();
- }
- });
- if ($(wrapper).hasClass('selectable')) {
- $(this).on('contextmenu', 'tr', function () {
- });
- $(this).on('click', 'tr', function () {
- $(table_anchor).focus();
- if ($(this).hasClass('selected')) {
- $(this).removeClass('selected');
- return;
- }
- $(this).parent().find('tr').each(function () {
- $(this).removeClass('selected');
- });
- $(this).addClass('selected');
- });
- $(table_anchor).on('focus', function () {
- $('body').addClass('no-scroll');
- $($(table).find('tr')[1]).addClass('selected');
- });
- $(table_anchor).on('focusout', function () {
- $('body').removeClass('no-scroll');
- $(table).find('tr').each((i, value) => {
- $(value).removeClass('selected');
- });
- });
- $(table_anchor).on('keypress', function (e) {
- });
- $(table_anchor).on('keyup', function (e) {
- e.preventDefault();
- if (e.keyCode == 70) {
- $(search).focus();
- }
- if (e.keyCode == 112) {
- ajax_call($(this).data('insert'));
- }
- if (e.keyCode == 113) {
- id = $(table).find('.selected').data('info').id;
- ajax_call($(this).data('insert') + '/' + id);
- }
- if (e.keyCode == 39 && e.ctrlKey) {
- datatable.page('last').draw('page');
- }
- if (e.keyCode == 37 && e.ctrlKey) {
- datatable.page('first').draw('page');
- $($(table).find('tr')[1]).addClass('selected');
- }
- if (e.keyCode == 37) { //left
- datatable.page('previous').draw('page');
- $($(table).find('tr')[1]).addClass('selected');
- }
- if (e.keyCode == 39) { //right
- datatable.page('next').draw('page');
- $($(table).find('tr')[1]).addClass('selected');
- }
- if (e.keyCode == 38) { //up
- var last = null;
- var line = null;
- $(table).find('tr').each((i, value) => {
- if ($(value).hasClass('selected')) {
- ;
- line = $(value)
- return false;
- }
- last = $(value)
- });
- if ($(last).hasClass('header')) {
- datatable.page('previous').draw('page');
- }
- if (line != null) {
- $(line).removeClass('selected');
- $(last).addClass('selected');
- }
- }
- if (e.keyCode == 40) { //up
- var next = false;
- $(table).find('tr').each((i, value) => {
- if (next) {
- $(value).addClass('selected');
- next = false;
- return false;
- }
- if ($(value).hasClass('selected')) {
- next = true;
- $(value).removeClass('selected');
- }
- });
- if (next) {
- datatable.page('next').draw('page');
- }
- }
- if (e.keyCode == 13) {
- if ($(this).parent().parent().hasClass('modal-body')) {
- $(this).parent().parent()
- .parent().parent()
- .parent().modal('hide');
- //console.log($(this).parent().find('.selected').data('info'));
- }
- }
- })
- }
- });
- popover_help();
- }
- /*===========================================*/
- $('.remote-element').each(function () {
- var element = $(this);
- var source = $(this).data('source');
- var value = $(this).data('value');
- $.ajax({
- method: "GET",
- url: source,
- data: {value: value}
- }).done(function (msg) {
- $(element).html(msg);
- });
- });
- //============================== 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();
- revalidate_screen();
- //============================== - 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
- $('a').on('click', 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') {
- return true;
- }
- e.preventDefault();
- if (typeof method === 'undefined') {
- method = 'GET';
- }
- $('#progress').removeClass('hidden');
- $.ajax({
- method: method,
- url: target
- }).done(function (msg) {
- $('#content').html(msg);
- history.replaceState({}, '', target);
- }).fail(function () {
- alert('fail');
- }).always(function () {
- $('#progress').addClass('hidden')
- revalidate_screen();
- });
- });
- function ajax_call(target) {
- $('#progress').removeClass('hidden');
- $.ajax({
- method: 'GET',
- url: target
- }).done(function (msg) {
- $('#content').html(msg);
- history.replaceState({}, '', target);
- }).fail(function () {
- alert('fail');
- }).always(function () {
- $('#progress').addClass('hidden')
- revalidate_screen();
- });
- }
- function open_popup(source) {
- var template = '<div class="modal-dialog"> <div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal"> X </button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body">{{aaa}}</div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div>';
- $.ajax({
- method: 'GET',
- url: source
- }).done(function (msg) {
- //alert(msg);
- template = template.replace('{{aaa}}', msg);
- $('#modal').html(template).modal('show');
- revalidate_screen();
- });
- }
|