Files
dbois/public/js/lib/modals/externalModal.js
T

145 lines
4.5 KiB
JavaScript

/**
* Created by Pensare Software.
* External: Theo Weijmer
* Date: 25/12/2017
* Time: 17:32
*/
$( function () {
dbo.editExternalModal = {
id : null,
name : ko.observable(),
address : ko.observable(),
postcode : ko.observable(),
place : ko.observable(),
contactperson: ko.observable(),
email : ko.observable(),
website : ko.observable(),
remarks : ko.observable(),
rate : ko.observable(),
kvk_number : ko.observable(),
iban : ko.observable(),
callback : null,
init: function () {
},
newEditExternal: function ( external, callback ) {
var vm = dbo.editExternalModal;
vm.callback = typeof(callback) == 'function' ? callback : null;
vm.showExternalModal();
vm.setExternal( external );
},
saveExternal: function () {
var vm = dbo.editExternalModal;
if ( vm.formValid == false ) return;
var submitDATA = {
id : vm.id,
name : vm.name(),
address : vm.address(),
postcode : vm.postcode(),
place : vm.place(),
contactperson: vm.contactperson(),
email : vm.email(),
website : vm.website(),
remarks : vm.remarks(),
rate : vm.rate(),
kvk_number : vm.kvk_number(),
iban : vm.iban()
}
dbo.externalDataService.saveExternal( submitDATA, function ( data ) {
if ( data.success ) {
tellMe( {
title : 'onderaannemer aangemaakt',
message : 'onderaannemer is succesvol opgeslagen',
modalClass: 'modal-success'
}, function () {
vm.hideExternalModal();
if ( typeof(vm.callback) == 'function' ) vm.callback();
} );
return;
}
var errorMessage = '<ul>';
$.each( data.messages, function ( i, p ) {
if ( p[0] ) {
errorMessage += '<li>' + i + ': ' + p[0] + '</li>';
}
} );
errorMessage += '</ul>';
tellMe( {
title : 'fout aanmaken onderaannemer',
message : errorMessage,
modalClass: 'modal-danger'
} );
} );
},
setExternal: function ( external ) {
var vm = dbo.editExternalModal;
vm.id = (external.id || 0);
vm.name( external.name || '' );
vm.address( external.address || '' );
vm.postcode( external.postcode || '' );
vm.place( external.place || '' );
vm.contactperson( external.contactperson || '' );
vm.email( external.email || '' );
vm.website( external.website || '' );
vm.remarks( external.remarks || '' );
vm.rate( external.rate || 0 );
vm.kvk_number( external.kvk_number || '' );
vm.iban( external.iban || '' );
},
showExternalModal: function () {
$( "#external-modal" ).modal( 'show' );
},
hideExternalModal: function () {
$( "#external-modal" ).modal( 'hide' );
},
validateNumber: function () {
var vm = dbo.editExternalModal;
vm.rate( dbo.helpers.validateNumber( vm.rate(), false ) );
}
};
dbo.editExternalModal.init();
dbo.editExternalModal.contactpersonInvalid = ko.pureComputed( function () {
if ( !this.contactperson() ) return true;
if ( this.contactperson().length < 2 ) return true;
return false;
}, dbo.editExternalModal );
dbo.editExternalModal.emailInvalid = ko.pureComputed( function () {
if ( !this.email() ) return false;
return !dbo.helpers.validateEmail( this.email() );
}, dbo.editExternalModal );
dbo.editExternalModal.formValid = ko.pureComputed( function () {
if ( this.contactpersonInvalid() ) return false;
if ( this.emailInvalid() ) return false;
return true;
}, dbo.editExternalModal )
ko.applyBindings( dbo.editExternalModal, document.getElementById( 'external-modal' ) );
} );