d2d.emegrendeles.hu/resources/js/app.js

574 lines
16 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

require('./bootstrap');
//----------------------------------------------------------------------
/*
Helper function
*/
window.getMonday=function(date,dateStr) {
if(dateStr){
date = new Date(dateStr);
}
let day = date.getDay(),
diff = date.getDate() - day + (day == 0 ? -6:1); // adjust when day is sunday
return new Date(date.setDate(diff));
}
window.debug=function (txt)
{
try {
if (txt && typeof txt === 'object' && !Array.isArray(txt)) {
const seen = new WeakSet();
const safeObj = JSON.parse(JSON.stringify(txt, (key, value) => {
if (typeof value === 'object' && value !== null) {
if (seen.has(value)) return '[Circular]';
seen.add(value);
}
return value;
}));
console.log(safeObj);
} else {
console.log(txt);
}
}
catch(e){
console.log(txt);
}
};
window.buildFormData=function(formData, data, parentKey) {
if (data && typeof data === 'object' && !(data instanceof Date) && !(data instanceof File)) {
Object.keys(data).forEach(key => {
buildFormData(formData, data[key], parentKey ? `${parentKey}[${key}]` : key);
});
} else {
const value = data == null ? '' : data;
formData.append(parentKey, value);
}
}
window.jsonToFormData=function(data) {
const formData = new FormData();
buildFormData(formData, data);
return formData;
}
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1)
}
window.arrayRemove=function(arr, value) {
return arr.filter(function(ele){
return ele != value;
});
}
window.getRandomInt=function (max=Number.MAX_SAFE_INTEGER,min=0) {
debug(max);
debug(min);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
window.setImageFromLocal=function(input,targetImgCssSelector) {
if (input.files && input.files[0]) {
let reader = new FileReader();
reader.onload = function (e) {
$(targetImgCssSelector).attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
require('./latinise');
/*
disable back button
*/
$(function() {
if (window.history && window.history.pushState) {
window.history.pushState('', null, window.location.href);
$(window).on('popstate', function(event) {
// alert('Back button was pressed.');
//document.location.href = '#';
window.history.pushState('', document.title, window.location.href);
//console.log('mevagy');
event.stopPropagation();
});
}
});
//----------------------------------------------------------------------
/*
init custom radio buttons
*/
window.initRadioButtons=function (Options){
let Opts = {
onChange: function (value,node) {
},
};
$.extend(Opts, Options);
$('.customRadioBtnGroup .active').each(function() {
let activeValue = $(this).data('title');
let target = $(this).data('toggle');
$('input[name='+target+']').prop('value', activeValue);
});
$('.customRadioBtnGroup a').unbind('click');
$('.customRadioBtnGroup a').bind('click',function(){
let sel = $(this).data('title');
let tog = $(this).data('toggle');
$('input[name='+tog+']').prop('value', sel);
$('a[data-toggle="'+tog+'"]').not('[data-title="'+sel+'"]').removeClass('active').addClass('notActive');
$('a[data-toggle="'+tog+'"][data-title="'+sel+'"]').removeClass('notActive').addClass('active');
Opts.onChange(sel,tog);
});
}
//----------------------------------------------------------------------
// Defaults
//----------------------------------------------------------------------
$.extend( true, $.fn.dataTable.defaults, {
language: {
url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'
},
lengthMenu: [
[ 10, 25, 50, -1 ],
[ '10 sor', '25 sor', '50 sor', 'Összes' ]
],
buttons:{
dom:{
button:{
className:'fg-button ui-button dataTableHeaderButtons'
}
},
},
dom: '<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-tl ui-corner-tr"lBfr>'+
't'+
'<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-bl ui-corner-br"ip>',
} );
Inputmask.extendDefinitions({
'x': {
validator: "[\.,-áéíóöőúàèìòùüűÁÉÍÓÖŐÚÀÈÌÒÙÜŰA-Za-z0-9 ]",
//cardinality: 1
}
});
//----------------------------------------------------------------------
Toast.enableTimers(false);
$.fn.select2.defaults.set('language', 'jp');
window.select2CreateTag=function (params){
var term = $.trim(params.term);
var count = 0
var existsVar = false;
//check if there is any option already
if($('#keywords option').length > 0){
$('#keywords option').each(function(){
if ($(this).text().toUpperCase() == term.toUpperCase()) {
existsVar = true
return false;
}else{
existsVar = false
}
});
if(existsVar){
return null;
}
return {
id: params.term,
text: params.term,
newTag: true
}
}
//since select has 0 options, add new without comparing
else{
return {
id: params.term,
text: params.term,
newTag: true
}
}
}
window.ajaxErrorHandler= function (xhr, ajaxOptions, thrownError){
debug(this);
console.error(xhr);
console.error(ajaxOptions);
console.error(thrownError);
// Biztonsági ellenőrzés ha nincs responseJSON (pl. HTML válasz), megpróbáljuk parszolni
if (!xhr.responseJSON && xhr.responseText) {
try {
xhr.responseJSON = JSON.parse(xhr.responseText);
} catch (e) {
console.error("Nem sikerült a responseText JSON parszolása");
}
}
// Biztonsági ellenőrzés ha nincs responseJSON (pl. HTML válasz)
if (!xhr.responseJSON) {
ajaxErrorFieldHandler({'detail': 'Váratlan szerverhiba. Kérjük próbálja újra később.'});
return;
}
// Validációs hibák (422) ezeket részletesen megjelenítjük
if (xhr.responseJSON.errors) {
console.error("d2---------------");
if("jsonapi" in xhr.responseJSON){
ajaxErrorFieldHandlerJsonAPI(xhr.responseJSON.errors);
}else{
ajaxErrorFieldHandler(xhr.responseJSON.errors);
}
}
// Egyedi referencia kódos hiba (500, stb.)
else if (xhr.responseJSON.error_ref) {
console.error("error_ref: " + xhr.responseJSON.error_ref);
Toast.create({
title: "Szerverhiba",
message: "Váratlan hiba történt a feldolgozás során.<br>" +
"<small>Hivatkozási kód: <strong>" + xhr.responseJSON.error_ref + "</strong></small><br>" +
"<small>Kérjük, ezt a kódot adja meg a hibajelentésben.</small>",
status: TOAST_STATUS.DANGER,
timeout: 0
});
}
// 404
else if (xhr.status == 404) {
console.error("d3---------------");
ajaxErrorFieldHandler({'detail':'Nincs ilyen elem.'});
}
// Egyéb ismeretlen hiba
else {
console.error("d4---------------");
ajaxErrorFieldHandler({'detail':'Általános hiba.'});
}
}
window.ajaxErrorFieldHandlerJsonAPI= function (errors, container) {
console.error("d6---------------");
let toastBodyHtml = '';
let toastTitle = 'Hiba';
console.error(errors);
$.each(errors, function (index, value) {
console.error(value);
toastTitle = 'Hiba';
toastBodyHtml = '';
if("title" in value){
toastTitle=value.title;
}
if("detail" in value){
toastBodyHtml += '<div>' + value.detail + '<div>';
}
Toast.create({
title: toastTitle,
message: toastBodyHtml,
status: TOAST_STATUS.DANGER, // SUCCESS (zöld)
timeout: 10000
});
});
}
window.ajaxErrorFieldHandler = function (errors, container) {
console.error("d5---------------");
console.error(errors);
let toastBodyHtml = '';
$.each(errors, function (index, value) {
toastBodyHtml += '<div>' + value + '<div>';
});
Toast.create({
title: "Hiba!",
message: toastBodyHtml,
status: TOAST_STATUS.DANGER, // SUCCESS (zöld)
timeout: 10000
});
}
$.ajaxSetup({
error:ajaxErrorHandler,
});
/*
datepicker afterShow function
*/
$.datepicker._updateDatepicker_original = $.datepicker._updateDatepicker;
$.datepicker._updateDatepicker = function(inst) {
$.datepicker._updateDatepicker_original(inst);
let afterShow = this._get(inst, 'afterShow');
if (afterShow)
afterShow.apply((inst.input ? inst.input[0] : null)); // trigger custom callback
}
//----------------------------------------------------------------------
window.EmegrendelesDefaults={
datatableActionButtonClickCallBack: function () {},
datatableAddRowTrashButton: function (id,args) {
return '<button type="button" class="btn btn-sm btn-danger buttonDelete" data-buttonType="delete" data-toggle="tooltip" data-placement="bottom" title="Törlés">' +
'<span class="fas fa-trash"></span>' +
'</button>'
},
datatableAddRowEditButton: function (args) {
let title='Adatok';
if(typeof args[1].title!=="undefined"){
title=args[1].title;
}
return '<button type="button" class="btn btn-sm btn-info buttonEdit" data-buttonType="edit" data-toggle="tooltip" data-placement="bottom" title="'+title+'">' +
'<span class="fas fa-pencil-alt"></span>' +
'</button>'
},
datatableAddRowViewButton: function (id,args) {
return '<button type="button" class="btn btn-sm btn-outline-secondary dataTableRowButton buttonView" data-buttonType="view" data-toggle="tooltip" data-placement="bottom" title="Megtekint">' +
'<span class="fas fa-eye"></span>' +
'</button>'
},
datatableAddRowAttachmentButton: function (id,args) {
return '<button type="button" class="btn btn-sm btn-outline-dark dataTableRowButton buttonAttachment" data-buttonType="attachment" data-toggle="tooltip" data-placement="bottom" title="Csatolmány">' +
'<span class="fas fa-paperclip"></span>' +
'</button>'
},
datatableCustomHeadButtonClickCallBack:function (args) {
console.log(args);
},
afterLoadMainContent:function (args) {
console.log(args);
},
};
if(typeof DataModel==='undefined'){
class DataModel{
/*
* Variables accessible
* in the class
*/
Opts = {
active: false,
};
/*
* Constructor
*/
constructor (data,options) {
$.extend(this, data);
$.extend(this.Opts, options);
};
setData (data){
$.extend(this, data);
}
getData(index){
if(index){
return this[index];
}else{
return this;
}
}
};
window.DataModel=DataModel;
}
window.Emegrendeles = function (options) {
/*
* Variables accessible
* in the class
*/
let Opts = {
myVar: 'Emegrendeles value',
datatableAddRowTrashButton:{},
datatableAddRowEditButton:{},
datatableActionButtonClickCallBack:{},
datatableRowActionButtonClickCallBack:{},
datatableCustomHeadButtonClickCallBack:{},
afterLoadMainContent:{},
Url:{},
};
const PublicVar={};
let PublicVar2={'asd':'21'};
let ApiToken=null;
let root=this;
/*
* Constructor
*/
this.construct = function (options) {
//$.extend(Opts, options);
console.log(this.constructor.name+' constructor called');
$.extend(Opts, window.EmegrendelesDefaults, options);
};
this.setOpts=function(options){
$.extend(Opts, options);
}
this.getOpts=function(){
return Opts;
}
this.datatableAddRowTrashButton=function (){
return Opts.datatableAddRowTrashButton(arguments);
}
this.datatableAddRowEditButton=function (){
return Opts.datatableAddRowEditButton(arguments);
}
this.datatableAddRowViewButton=function (){
return Opts.datatableAddRowViewButton(arguments);
}
this.datatableAddRowAttachmentButton=function (){
return Opts.datatableAddRowAttachmentButton(arguments);
}
this.afterLoadMainContent=function (){
return Opts.afterLoadMainContent(arguments);
}
this.datatableActionButtonClickCallBack=function (){
return Opts.datatableActionButtonClickCallBack(arguments);
}
this.datatableRowActionButtonClickCallBack=function (){
return Opts.datatableRowActionButtonClickCallBack(arguments);
}
this.datatableAddRowAction=function (CSSSelector){
if(!CSSSelector){
return;
}
$(CSSSelector+' tr button').off('click');
$(CSSSelector+' tr button').on('click',APP.datatableRowActionButtonClickCallBack );
}
this.datatableCustomHeadButtonClickCallBack=function (){
return Opts.datatableCustomHeadButtonClickCallBack(arguments);
}
/*
* Public method
* Can be called outside class
*/
this.myPublicMethod = function () {
console.log(Opts);
myPrivateMethod();
};
this.setApiToken = function (token) {
root.ApiToken=token;
};
this.getApiToken = function () {
return root.ApiToken;
};
/*
* Private method
* Can only be called inside class
*/
const myPrivateMethod = function () {
console.log('accessed private method');
};
/**
* @param {string} itemName
*/
this.setActiveNavBarItem=function(itemName){
$('.speedButtonNavBar li').removeClass('selected');
$('.speedButtonNavBar li.iconholderModul'+itemName).addClass('selected');
return this;
}
this.getActiveNavBarItem=function(){
return $('.speedButtonNavBar .selected').find('a').data('name');
}
this.clearArchiveModuleDataTableState=function(){
if(APP.OrderArchiveModule!=undefined ){
console.log('APP.OrderArchiveModule');
console.log('clear');
APP.OrderArchiveModule.dataTable.state.clear();
}
}
this.navBarItemBeforepost=function (){
console.log('navBarItemBeforepost');
if(root.getActiveNavBarItem()!=='activeOrder'){
root.clearArchiveModuleDataTableState();
};
}
this.navBarItemAfterPost=function (){
}
this.initNavBar=function (){
$(".speedButtonNavBar a:not([data-target=_blank]):not([data-no-ajax])").bind('click',function (event){
console.log($(this).data().name);
if($(this).data('big-icon')){
$(".speedButtonNavBar").removeClass('smallicons');
}else{
$(".speedButtonNavBar").addClass('smallicons');
}
root.setActiveNavBarItem($(this).data().name);
event.preventDefault();
});
$(".speedButtonNavBar a:not([data-target=_blank]):not([data-no-ajax])").ajaxlink({
target:$('.mainContent'),
ajaxtype:'GET',
afterpost:root.navBarItemAfterPost,
beforepost:root.navBarItemBeforepost,
});
$(".speedButtonNavBar a[data-target=_blank], .speedButtonNavBar a[data-no-ajax]").bind('click',function(){
root.clearArchiveModuleDataTableState();
});
}
this.loadMainContent=function (url,data,callBack){
if(!callBack){
callBack=root.afterLoadMainContent;
}else{
console.log('van callback');
console.log(callBack);
}
$('.mainContent').load(
url,data,callBack
);
}
/*
* Pass options when class instantiated
*/
this.construct(options);
};
/*
$.fn.ajaxlink = function(options){
};
import './ajaxLink';
* */
window.APP={};
$(document).ready(function (){
console.log('ready doc');
//$('.datepicker').datepicker();
Mustache.tags = [ '[[', ']]' ];
// = [ '<%', '%>' ];
});