d2d.emegrendeles.hu/resources/js/admin/supplier.js
2026-04-26 05:37:07 +02:00

900 lines
33 KiB
JavaScript

if(typeof Supplier==='undefined'){
class Supplier extends DataModel{
/*
* Constructor
*/
constructor (data,options) {
super(data,options)
if(typeof this.contact ==="undefined"){
this.contact=[];
}
if(typeof this.canSee ==="undefined"){
this.canSee=1;
}
if(typeof this.canSeeInOrder ==="undefined"){
this.canSeeInOrder=1;
}
console.log('Supplier constructor called');
};
};
window.Supplier=Supplier;
}
window.SupplierAdmin=function (options,SupplierItem) {
/*
* Variables accessible
* in the class
*/
let Opts = {
token:null,
containerCssSelector: '.containerSupplier',
testMode:false,
URL:{
getDataTableContent:'',
index:'',
show:'',
edit:'',
create:'',
store:'',
update:'',
destroy:'',
attachFile:'',
detachFile:'',
createUser:'',
},
dataTable:{
orderDirective:[1, 'asc']
},
onAfterInitViewDetails:function (){}
};
let Supplier = {};
let root = this;
let contactPopupWorkflow='new';
/*
* Constructor
*/
this.construct = function (options,SupplierItem) {
console.log('SupplierAdmin constructor called');
$.extend(Opts, options);
if(!SupplierItem){
console.log('supplier letre kellet hozni ');
if(!APP.Supplier){
APP.Supplier=new window.Supplier();
}
root.Supplier=APP.Supplier;
}
};
this.getOpts=function (){
return Opts;
}
this.formDataToDataObjectAPICallOld= function (CSSSelector) {
let data = new FormData(document.querySelector(CSSSelector));
//let formJSON = Object.fromEntries(data.entries());
var formJSON = {};
data.forEach((value, key) => {
// Reflect.has in favor of: formJSON.hasOwnProperty(key)
if(!Reflect.has(formJSON, key)){
formJSON[key] = value;
return;
}
if(!Array.isArray(formJSON[key])){
formJSON[key] = [formJSON[key]];
}
formJSON[key].push(value);
});
$(CSSSelector+' input[data-inputmask]').each(function (){
if(formJSON[$(this).attr('name')]){
formJSON[$(this).attr('name')]=formJSON[$(this).attr('name')].replace(/[_ ]+$/g,"");
}
});
//formJSON.productGroups=$(".productCategorySelect").select2().val();
/*Multiselect or checkbox to array:
ajaxData['productGroup']=$(".productCategorySelect").select2().val();
formJSON.multiselectName = data.getAll('multiselectName');
$.each(formJSON, function (item, value) {
formJSON[$.lcFirst(item.replace('contact', ''))] = value;
delete formJSON[item];
});
if(formJSON.phone){
formJSON.phone=formJSON.phone.replaceAll('_','');
}
if(formJSON.email){
formJSON.email=formJSON.email.replaceAll('_','');
}
*/
return formJSON;
}
this.formDataToDataObjectAPICall = function (CSSSelectorForm) {
let ajaxData=new FormData($(CSSSelectorForm)[0]);
$.each(ajaxData.getAll('profitCenter'),function(key,value){
ajaxData.append('profitCenter[]',value);
})
$.each(ajaxData.getAll('productGroup'),function(key,value){
ajaxData.append('productGroup[]',value);
})
$.each(ajaxData.getAll('supplierService'),function(key,value){
ajaxData.append('supplierService[]',value);
})
$.each(ajaxData.getAll('contactId'),function(key,value){
ajaxData.append('contactId[]',value);
})
ajaxData.append('_token',$('input[name=_token]').val());
$(CSSSelectorForm+' input[data-inputmask]').each(function (){
let indexKey=$(this).attr('name');
if(ajaxData.get(indexKey)){
ajaxData.set(indexKey,ajaxData.get(indexKey).replace(/[_ ]+$/g,""));
}
});
return ajaxData;
}
this.clickSaveButton=function (event) {
debug('Save clicked');
let CSSSelectorForm=Opts.containerCssSelector+' .supplierForm';
event.preventDefault();
if ($(CSSSelectorForm+' input[name="canSeeInOrder"]').val()==1 && $(CSSSelectorForm)[0].checkValidity() === false) {
console.log('validaton false');
$(CSSSelectorForm).addClass('was-validated');
$(CSSSelectorForm)[0].reportValidity();
Toast.create({ title: "Validációs hiba!", message: "Kérjük, töltse ki a kötelező mezőket!", status: TOAST_STATUS.DANGER, timeout: 5000 });
event.stopPropagation();
return;
} else {
console.log('validaton ok');
$(CSSSelectorForm).removeClass('was-validated');
//do your ajax submition here
}
let ajaxData=root.formDataToDataObjectAPICall(CSSSelectorForm);
let ajaxUrl=Opts.URL.store;
let ajaxMethod="POST";
if(root.Supplier.id){
ajaxUrl=Opts.URL.update.replace('%id%',root.Supplier.id);
//ajaxMethod="PUT";
//ajaxData=new FormData($(CSSSelectorForm)[0]);
ajaxData.append('_method','PUT');
}
debug(ajaxMethod);
debug(ajaxData);
$.ajax({
url:ajaxUrl,
data:ajaxData,
type:ajaxMethod,
contentType:false,
processData: false,
headers: {
'X-CSRF-TOKEN': $('input[name="_token"]').val()
},
success:function (data){
debug('d1: Save success ');
debug(data);
if(data.success==true){
//Opts.onAfterInitViewDetails=root.autofillDetails;
Opts.dataTable.orderDirective=[0, 'desc'];
Toast.create({ title: "Sikeres rögzítés!", message: ajaxData.get('name')+" nevű beszálllító elmentve", status: TOAST_STATUS.SUCCESS, timeout: 5000 });
APP.loadMainContent(Opts.URL.index+'?init=0',root.initViewList);
}
}
});
}
this.setDetailsViewData=function () {
debug('setDetailsViewData');
console.log(Supplier);
let CSSSelectorForm=Opts.containerCssSelector+' .supplierForm';
let needToSet=[
'name','hooreycaId','nameId',
'orderEmail','orderEmail2','address','mailingAddress','phone','fax','customerServicePhone',
'name22',
'openHours', 'ordersDeadline', 'minOrderValue',
];
$.each(needToSet,function () {
if(typeof root.Supplier[this]!='undefined'){
$(CSSSelectorForm+' input[name='+this+']').val(root.Supplier[this]);
$(CSSSelectorForm+' textarea[name='+this+']').val(root.Supplier[this]);
}
})
if(typeof root.Supplier['note']!='undefined'){
$(CSSSelectorForm+' textarea[name=note]').val(root.Supplier.note);
}
if(typeof root.Supplier['emailAttachmentType']!='undefined'){
$(CSSSelectorForm+' input[name=emailAttachmentType][value='+root.Supplier['emailAttachmentType']+']').prop('checked',true);
}
$(CSSSelectorForm+' *[data-toggle=canSee][data-title='+root.Supplier.canSee+']').click();
$(CSSSelectorForm+' *[data-toggle=canSeeInOrder][data-title='+root.Supplier.canSeeInOrder+']').click();
$(CSSSelectorForm+' *[data-toggle=hooreycaDataActive][data-title='+root.Supplier.hooreycaDataActive+']').click();
let productGroup=[];
$.each(root.Supplier.product_group,function () {
productGroup.push(this.name);
});
$(CSSSelectorForm+' .productCategorySelect').val(productGroup).change();
let service=[];
$.each(root.Supplier.service,function () {
service.push(this.name);
});
$(CSSSelectorForm+' .serviceSelect').val(service).change();
let profitCenter=[];
$.each(root.Supplier.profit_center,function () {
profitCenter.push(this.name);
});
//$(CSSSelectorForm+' .profitCenterSelect').val(profitCenter).change();
//debug(profitCenter);
$.each(profitCenter,function () {
$('input[value="'+$.escapeSelector(this)+'"]').prop( "checked", true );
})
if(typeof root.Supplier['logoFile']!='undefined' && (root.Supplier['logoFile'])){
$(CSSSelectorForm+' img.imageLogo').attr('src',root.Supplier['logoFile']);
}
if(typeof root.Supplier.users !== 'undefined'){
root.resetUserTable();
}
//debug(APP.SupplierAdmin.formDataToDataObjectAPICall('.supplierForm')['productGroup']);
//$('[name=productGroup]').val(['Büféáru_édesipari_termékek','Tojás']).change();
//root.setDetailsViewData();
}
this.initViewDetails=function (options,SupplierItem){
debug('**call initViewDetails ');
if(!APP.ContactPopUp){
console.log('nincs APP.ContactPopUp')
APP.ContactPopUp = new window.ContactPopUp();
}else{
console.log('mar van APP.ContactPopUp')
}
APP.ContactPopUp.init({
active:true,
onAfterSave:root.contactAction
});
root.renderContact();
$('.supplierForm .buttonNewContact').bind('click',function (){
APP.SupplierAdmin.setContactPopupWorkflow('new');
APP.ContactPopUp.clearData();
APP.ContactPopUp.show();
});
$('[data-toggle="tooltip"]').tooltip();
initRadioButtons();
$(":input").inputmask({
"onincomplete": function () {
console.log($(this).data('required'));
if ($(this).val().length > 0 || $(this).data('required') === true) {
$(this).addClass('is-invalid');
}
},
"oncomplete": function () {
$(this).removeClass('is-invalid');
$(this).addClass('is-valid');
},
"oncleared": function () {
console.log('cleared');
$(this).removeClass('is-invalid');
}
});
$('form.supplierForm button.FormSaveButton').off('click');
$('form.supplierForm button.FormSaveButton').on('click',root.clickSaveButton);
root.setDetailsViewData();
root.initUserCreate();
$(".productCategorySelect").select2();
$(".serviceSelect").select2({
tags: true,
createTag: function (params) {
let term = $.trim(params.term);
if (term === '') {
return null;
}
return {
id: term,
text: term,
newTag: true // add additional parameters
}
}
});
//$(".profitCenterSelect").select2();
$("input[name=logoFile]").change(function(){
setImageFromLocal(this,Opts.containerCssSelector+' .imageLogo');
});
$('form.supplierForm .profitCenterSelectCheckboxAll').off('click');
$('form.supplierForm .profitCenterSelectCheckboxAll').on('click',function () {
//console.log();
//let checked=$(this).is(":checked")
$('form.supplierForm input.profitCenterSelectCheckbox').prop('checked',$(this).is(":checked"));
});
root.renderAttachment();
//Opts.onAfterInitViewDetails();
root.initFileAttachmentFeature();
debug('**end initViewDetails ');
}
this.selectedUploadFileToggle=function (fileInput){
/*
console.log(fileInput.attr('name'));
console.log(fileInput[0].files[0]);
console.log(fileInput[0].files[0].name);
*/
if(fileInput){
$('.containerFileUpload').addClass('d-none');
if(fileInput[0].files[0]){
$('.containerUploadedFileName').text(fileInput[0].files[0].name);
}
$('.containerFileUploadStarted').removeClass('d-none');
$('.containerUploadedSpinner').removeClass('d-none');
}else{
$('.containerUploadedFileName').text('');
$('.custom-file-label.selected').text('');
$('.containerFileUploadStarted').addClass('d-none');
$('.uploadStatusRow').addClass('d-none');
$('.containerFileUpload').removeClass('d-none');
}
}
this.initFileAttachmentFeature=function () {
console.log('-------initFileAttachmentFeature-----------');
if(root.Supplier.id){
$('.containerFileUpload').removeClass('d-none');
$('.containerFileUploadNone').addClass('d-none');
}
$(Opts.containerCssSelector+' .buttonUpload').off('click');
$(Opts.containerCssSelector+' .buttonUpload').on('click',function (){
console.group('-------buttonUpload-----------');
let fileInput=$('#inputGroupAttacheFile');
if(fileInput[0].files.length<1){
Toast.create({ title: "Hiba!", message: 'Vállaszon ki fájlt!', status: TOAST_STATUS.DANGER, timeout: 10000 });
return;
}
console.log($(Opts.containerCssSelector).find('form.supplierForm')[0]);
let data= new FormData($(Opts.containerCssSelector).find('form.supplierForm')[0]);
data.append(fileInput.attr('name'),fileInput[0].files[0]);
root.selectedUploadFileToggle(fileInput);
let ajaxUrl=Opts.URL.attachFile.replace('%id%',root.Supplier.id);
console.groupEnd();
$.ajax({
url:ajaxUrl,
data:data,
type:'POST',
contentType:false,
processData: false,
beforeSend: function() {
},
success: function(data) {
console.log(data);
if(data.success==true){
root.addAttachment(data.data.attachment);
root.selectedUploadFileToggle();
}
},
error: function(data) {
console.log(data.responseJSON);
root.selectedUploadFileToggle();
ajaxErrorFieldHandler(data.responseJSON.error);
}
})
});
}
this.clickNew=function () {
debug('clickNew');
APP.loadMainContent(Opts.URL.create,root.clickNewCallBack);
}
this.clickNewCallBack=function () {
debug('callbackNew');
root.Supplier=new window.Supplier();
root.initViewDetails();
}
this.datatableRowActionEdit=function (rowData,node) {
console.log('datatableRowActionEdit Called');
//Opts.onAfterInitViewDetails=root.autofillDetails;
let ajaxUrl=Opts.URL.edit.replace('%id%',rowData.id);
APP.loadMainContent(ajaxUrl,root.initViewDetails);
console.log('datatableRowActionEdit End');
}
this.clickOrderDeleteConfirmed=function (event){
debug('clickSupplierDeleteConfirmed');
debug(event);
debug(event.data);
$('#dialogModal').modal('hide');
let ajaxData={};
ajaxData._token=Opts.token;
let ajaxUrl=Opts.URL.destroy.replace('%id%',event.data.id);
ajaxData._token=$('input[name=_token]').val();
console.log(ajaxUrl);
console.log(ajaxData);
let row=$(dataTableCSSSelector).DataTable().row(root.dadatatableRowActionCallerNode.parents('tr'));
$.ajax({
url:ajaxUrl,
data:ajaxData,
method:"DELETE",
success:function (data){
if(data.success==true){
row.remove().draw();
root.dadatatableRowActionCallerNode=false;
}
}
});
}
let datatableRowActionCallerNode=false;
this.datatableRowActionDelete=function (rowData,node) {
console.log('datatableRowActionDelete Called');
root.dadatatableRowActionCallerNode=node;
$('#dialogModal').on('show.bs.modal', function (event) {
// If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
// Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
var modal = $(this);
modal.find('.modal-title').text('Megerősítés ');
modal.find('.modal-body').text('Biztosan törli a beszállítót?');
modal.find('.buttonYes').off('click');
modal.find('.buttonYes').on('click',{id:rowData.id},root.clickOrderDeleteConfirmed);
});
$('#dialogModal').modal('show');
}
this.datatableRowActionButtonClick=function (event){
debug('datatableRowActionButtonClick');
let node=$(event[0].currentTarget);
let row=$(dataTableCSSSelector).DataTable().row(node.parents('tr'));
let rowData=row.data();
let actionName='datatableRowAction'+node.data('buttontype').capitalize();
if (typeof root[actionName] === "function") {
return root[actionName](rowData,node)
}
}
this.initViewList = function (options={}) {
debug('listview inicialization');
dataTableCSSSelector=Opts.containerCssSelector+' .dataTable'; //
let colNum=$(dataTableCSSSelector+' thead th').length; //buttons insert position need
APP.setOpts({
datatableActionButtonClickCallBack:root.clickNew,
datatableRowActionButtonClickCallBack:root.datatableRowActionButtonClick,
})
let orderDirective=Opts.dataTable.orderDirective;
if(typeof options['orderDirective']!='undefined'){
orderDirective=options['orderDirective'];
}
$(dataTableCSSSelector).DataTable( {
language: {
url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'
},
//"ajax": "{{asset('exapmle2.json')}}",
"ajax": Opts.URL.getDataTableContent,
"columnDefs": [
{
"targets": colNum-1,
"render": function ( data, type, row ) {
let buttons=APP.datatableAddRowTrashButton(0,arguments);
buttons+=APP.datatableAddRowEditButton(0,arguments);
return buttons;
},
},
{
"targets": 1,
"render": function ( data, type, row ) {
return type === "sort" ? data.latinise() : data;
},
},
//{ "visible": false, "targets": [ 0 ] }
],
buttons:{
buttons: [
'excel','pdf',
{
extend: 'print',
//text: 'Print current page',
'title': 'title custom text',
'messageTop': 'Message On Top',
autoPrint: true
},
/**/
{
text: 'Új felvitele',
className: 'btn btn-success newItem',
attr:{
/*
data:{
a:1,
b:2
}
*/
'data':'newItem'
},
init: function(api, node, config) {
$(node).removeClass('ui-button')
},
action: function ( e, dt, node, config ) {
APP.datatableActionButtonClickCallBack(arguments);
/* console.log(e);
console.log(dt);
console.log(node);
console.log(config);*/
}
}
]
},
"columns": [
{ "data": "id" },
{ "data": "name" },
{ "data": "hooreycaId" },
{ "data": "nameId" },
{ "data": "created_at" },
null,
],
"order": orderDirective,
"stateSave": true,
"drawCallback": function( settings ) {
APP.datatableAddRowAction(dataTableCSSSelector);
}
} );
debug('listview end');
}
this.autofillDetails=function (){
debug('nyeresre allunk');
let randomNumber=getRandomInt(9999);
$('input[name=name]').val('Beszalító'+randomNumber);
$('input[name=hooreycaId]').val('hb'+randomNumber);
$('input[name=nameId]').val('be'+randomNumber);
$('input[name=orderEmail]').val('kapcsolat'+randomNumber+'@beszallito.hu');
$('input[name=orderEmail2]').val('informacio'+randomNumber+'@beszallito.hu');
$('input[name=address]').val('8989 Supplier utca '+randomNumber);
$('input[name=mailingAddress]').val('8989 Postai út'+randomNumber);
$('input[name=phone]').val('+36301234567');
$('input[name=fax]').val('36308889999');
$('input[name=customerServicePhone]').val('+36761234444');
$('textarea[name=note]').val('Megjegyzem '+randomNumber);
}
this.testMode=function () {
console.debug('!!!!testmode !!!!');
root.Supplier = new window.Supplier({
'contact':[
{
id:2,
},
{
id:3,
},
/*
{
id:3,
name:'Kósa Veronika',
email:'szamlazas4@funkcio.hu',
phone:'{{formatterPhoneNumber("+36204589180")}}'
}
*/
]
});
Opts.onAfterInitViewDetails=root.autofillDetails;
APP.loadMainContent(Opts.URL.create,root.initViewDetails);
}
this.init=function (options,SupplierItem){
$.extend(Opts, options);
if(Opts.testMode){
return root.testMode();
}
if(SupplierItem){
root.Supplier=SupplierItem
}
root.initViewList();
}
this.renderAttachment=function (){
let rowNum=1;
console.log('renderingAttachment');
$.each(root.Supplier.getData('attachment'),function (){
let attachmentData=this;
attachmentData.rowNum=rowNum;
date=new Date(attachmentData.created_at);
attachmentData.date=date.toLocaleString();
attachmentData.link=attachmentData.PublicUrl+'/'+attachmentData.filename;
let template=$('template[data-name="supplierAttachmentTableRow"]').html()
let render=Mustache.render(template,attachmentData);
$('.attachmentTable tbody').append(render);
rowNum++;
});
root.bindAttachmentClickAction();
}
this.addAttachment=function (attachmentData){
console.log(attachmentData);
let CSSSelectorForm=Opts.containerCssSelector+' .supplierForm';
root.Supplier.attachment.push(attachmentData);
attachmentData.rowNum=root.Supplier.attachment.length;
let template=$('template[data-name="supplierAttachmentTableRow"]').html()
let render=Mustache.render(template,attachmentData);
$(CSSSelectorForm+' .attachmentTable tbody').append(render);
root.bindContactClickAction();
Toast.enableTimers(false);
Toast.create({ title: "Fájl hozzáadva!", message: attachmentData.original_filename+" fájl hozzáadva", status: TOAST_STATUS.SUCCESS, timeout: 5000 });
}
this.resetContactTable=function (){
$('.contactTable tbody tr').remove();
root.renderContact();
}
this.renderContact=function (){
let rowNum=1;
console.log('renderingContacts');
$.each(root.Supplier.getData('contact'),function (){
let contactData=this;
contactData.rowNum=rowNum;
//console.log(contactData);
let template=$('template[data-name="supplierContactTableRow"]').html()
let render=Mustache.render(template,contactData);
$('.contactTable tbody').append(render);
rowNum++;
});
root.bindContactClickAction();
}
this.bindContactClickAction =function (){
let node=$('.contactTable .buttonDelete');
node.unbind('click');
node.bind('click',root.contactDeleteClick);
node=$('.contactTable .buttonEdit');
node.unbind('click');
node.bind('click',root.contactEditClick);
}
this.bindAttachmentClickAction=function (){
let node=$('.attachmentTable .buttonDelete');
node.unbind('click');
node.bind('click',root.attachmentDeleteClick);
}
let currentAttachmentRow=false;
this.attachmentDeleteClick=function (event){
let row=$(this).closest('tr');
let id=row.find('input[name=attachmentId]').val();
let ajaxUrl=Opts.URL.detachFile.replace('%id%',root.Supplier.id);
//let data= new FormData($(Opts.containerCssSelector).find('form.supplierForm')[0]);
//data.append(fileInput.attr('name'),fileInput[0].files[0]);
let data={};
data._token=$('input[name="_token"]').val();
data.attachemntId=id;
$.ajax({
url:ajaxUrl,
data:data,
type:'POST',
//contentType:false,
//processData: false,
beforeSend: function() {
},
success: function(data) {
console.log(data);
if(data.success==true){
root.Supplier.attachment=root.Supplier.attachment.filter(
function (value,index,arr){
if (value.id!==data.data. attachment.id*1){
return true;
}
return false;
}
);
/*
*/
//row.remove();
root.resetAttachmentTable();
}
},
error: function(data) {
console.log(data.responseJSON);
root.selectedUploadFileToggle();
ajaxErrorFieldHandler(data.responseJSON.error);
}
})
}
this.resetAttachmentTable=function (){
$('.attachmentTable tbody tr').remove();
root.renderAttachment();
}
this.contactDeleteClick=function (event){
let row=$(this).closest('tr');
let id=row.find('input[name=contactId]').val();
root.Supplier.contact=root.Supplier.contact.filter(
function (value,index,arr){
if (value.id!==id*1){
return true;
}
return false;
}
);
row.remove();
root.resetContactTable();
}
root.getContactPopupWorkflow = function () {
return contactPopupWorkflow;
}
root.setContactPopupWorkflow = function (status) {
contactPopupWorkflow=status;
}
this.contactEditClick=function (event){
//console.log(this);
let row=$(this).closest('tr');
let id=row.find('input[name=contactId]').val();
root.setContactPopupWorkflow('edit');
APP.ContactPopUp.loadData(id);
}
this.getSupplier=function (){
return root.Supplier;
}
this.contactAction=function (contactData){
console.log('nah most kellene meg valamit csinalni.')
if(root.getContactPopupWorkflow()=='new'){
root.addContact(contactData);
}else if(root.getContactPopupWorkflow()=='edit'){
root.editContact(contactData.id,contactData);
}
}
this.editContact=function (id,contactData){
let newContacts=[];
$.each(root.Supplier.getData('contact'),function (index){
if(this.id==id){
newContacts.push(contactData);
}else{
newContacts.push(this);
}
});
root.Supplier.contact=newContacts;
root.resetContactTable();
Toast.create({ title: "Kapcsolat adatai módosítva!", message: contactData.name+" nevű kapcsolattartó módosítva", status: TOAST_STATUS.SUCCESS, timeout: 5000 });
}
this.addContact=function (contactData){
/*
fel kell venni a sorba
*/
root.Supplier.contact.push(contactData);
contactData.rowNum=root.Supplier.contact.length;
let template=$('template[data-name="supplierContactTableRow"]').html()
let render=Mustache.render(template,contactData);
$('.contactTable tbody').append(render);
root.bindContactClickAction();
Toast.enableTimers(false);
Toast.create({ title: "Kapcsolattartó hozzáadva!", message: contactData.name+" nevű kapcsolattartó hozzáadva", status: TOAST_STATUS.SUCCESS, timeout: 5000 });
}
this.resetUserTable=function (){
$('.supplierUserTable tbody tr').remove();
root.renderUsers();
}
this.renderUsers=function (){
let rowNum=1;
let users=root.Supplier.users||[];
$.each(users,function (){
let userData=$.extend({},this);
userData.rowNum=rowNum;
let template=$('template[data-name="supplierUserTableRow"]').html();
let render=Mustache.render(template,userData);
$('.supplierUserTable tbody').append(render);
rowNum++;
});
root.bindUserClickAction();
}
this.bindUserClickAction=function (){
let node=$('.supplierUserTable .buttonDelete');
node.unbind('click');
node.bind('click',root.userDeleteClick);
}
this.userDeleteClick=function (){
let row=$(this).closest('tr');
let id=row.find('input[name=userId]').val()*1;
root.Supplier.users=root.Supplier.users.filter(function (value){
return value.id!==id;
});
row.remove();
root.resetUserTable();
}
this.addUser=function (userData){
if(!root.Supplier.users){ root.Supplier.users=[]; }
let alreadyAdded=root.Supplier.users.some(function(u){ return u.id===userData.id; });
if(alreadyAdded){ return; }
root.Supplier.users.push(userData);
userData.rowNum=root.Supplier.users.length;
let template=$('template[data-name="supplierUserTableRow"]').html();
let render=Mustache.render(template,userData);
$('.supplierUserTable tbody').append(render);
root.bindUserClickAction();
Toast.enableTimers(false);
Toast.create({ title: 'Felhasználó hozzáadva!', message: userData.name+' hozzárendelve', status: TOAST_STATUS.SUCCESS, timeout: 3000 });
}
this.initUserCreate=function (){
let createUrl=Opts.URL.createUser||'';
let container=$(Opts.containerCssSelector);
function clearForm(){
container.find('.supplierNewUserName').val('');
container.find('.supplierNewUserEmail').val('');
container.find('.supplierNewUserPassword').val('');
container.find('.supplierNewUserError').hide().text('');
}
container.find('.buttonCreateUser').off('click').on('click',function(){
let name=container.find('.supplierNewUserName').val().trim();
let email=container.find('.supplierNewUserEmail').val().trim();
let password=container.find('.supplierNewUserPassword').val();
let errorEl=container.find('.supplierNewUserError');
errorEl.hide().text('');
if(!name||!email||!password){
errorEl.text('Minden mező kitöltése kötelező!').show();
return;
}
$.ajax({
url:createUrl,
type:'POST',
data:{name:name, email:email, password:password},
headers:{'X-CSRF-TOKEN': $('input[name="_token"]').val()},
success:function(data){
if(data.success){
root.addUser(data.user);
clearForm();
}else{
errorEl.text('Hiba történt a felhasználó létrehozásakor!').show();
}
},
error:function(xhr){
let msg='Hiba történt!';
if(xhr.responseJSON&&xhr.responseJSON.errors){
let errors=xhr.responseJSON.errors;
let firstKey=Object.keys(errors)[0];
msg=errors[firstKey][0];
}
errorEl.text(msg).show();
}
});
});
}
this.construct(options,SupplierItem);
};