Files
dbois/public/js/lib/modules/projects/projectsModule.js
T

202 lines
7.2 KiB
JavaScript

/**
* Created by Pensare Software.
* User: Theo Weijmer
* Date: 05/01/2018
* Time: 15:54
*/
dbo.projectsInit = function () {
var timeout;
if ( dbo.projectsModel !== undefined ) {
dbo.projectsModel.refreshProjects();
} else {
dbo.projectsModel = {
projects : ko.observableArray( [] ),
project : ko.observable(),
archive : ko.observable( false ),
selectedRowID: ko.observable(),
busy : false,
search : ko.observable(),
order : ko.observable( 'projectnumber' ),
direction : ko.observable(),
init: function () {
var vm = dbo.projectsModel;
vm.refreshProjects();
},
searchProjects: function () {
var vm = dbo.projectsModel;
if ( timeout ) {
clearTimeout( timeout );
timeout = null;
}
timeout = setTimeout( function () {
vm.refreshProjects();
}, 700 );
},
directionOrderProjects: function ( field ) {
var vm = dbo.projectsModel;
if ( field == vm.order() ) {
vm.direction( !vm.direction() );
} else {
vm.direction( true );
}
vm.order( field );
vm.refreshProjects();
},
newProject: function () {
var vm = dbo.projectsModel;
dbo.editProjectModal.addProject( function () {
vm.refreshProjects();
} );
},
toggleArchive: function () {
var vm = dbo.projectsModel;
vm.archive( !vm.archive() );
vm.refreshProjects();
},
editProject: function () {
var project = this;
var vm = dbo.projectsModel;
dbo.editProjectModal.editProject( project.id, function () {
vm.refreshProjects();
} );
},
selectProject: function () {
var vm = dbo.projectsModel;
vm.selectedRowID( this.id );
},
archiveProject: function () {
var vm = dbo.projectsModel;
var self = this;
var status = self.archive == 'F' ? 'T' : 'F';
dbo.projectDataService.archiveProject( self.id, status, function () {
vm.refreshProjects();
} );
},
removeProject: function () {
var vm = dbo.projectsModel;
var self = this;
tellMe( {
title : 'verwijderen projecte',
message : 'weet u zeker dat u de project wilt verwijderen, dit kan niet ongedaan worden gemaakt',
notify : true,
noText : 'nee verwijder de project niet',
yesText : 'ja verwijder de project',
modalClass: 'modal-warning'
}, function ( response ) {
console.log( response );
if ( response ) {
dbo.projectDataService.removeProject( self.id, function ( data ) {
if ( data.result ) {
tellMe( {
title : 'project verwijderd',
message : 'de project is succesvol verwijderd',
modalClass: 'modal-success'
}, function () {
vm.refreshProjects();
} );
} else {
tellMe( {
title : 'fout bij verwijderen project',
message : 'de project kan niet worden verwijderd, verwijder eerst de gerelateerde gegevens (facturen, reserveringen, projectmedewerkers, prognoses) ',
modalClass: 'modal-danger'
} );
}
} );
}
} );
},
refreshProjects: function () {
var vm = dbo.projectsModel;
var projectsObject = {
archive : vm.archive() ? 'T' : 'F',
search : vm.search(),
order : vm.order(),
direction: vm.direction() ? 'ASC' : 'DESC'
}
dbo.projectDataService.getAllProjects( projectsObject, function ( data ) {
vm.projects.removeAll();
$.each( data, function ( i, p ) {
vm.projects.push( new vm.Project( p ) );
} )
} );
},
Project: function ( data ) {
var vm = dbo.projectsModel;
var self = this;
self.id = data.id;
self.projectnumber = data.projectnumber;
self.projectleader = data.projectleader ? data.projectleader.fullname : '#NB';
self.projectname = data.projectname;
self.customer = data.customer ? data.customer.name : '#NB';
self.startdate = data.startdate;
self.enddate = data.enddate;
self.archive = data.archive;
self.totalOwnrevenue = Number( data.offer.own_revenue );
self.totalOtherrevenue = Number( data.offer.other_revenue );
self.costs = Number( data.offer.costs );
self.total = Number( data.offer.own_revenue ) + Number( data.offer.other_revenue ) + Number( data.offer.costs );
},
Revenue: function ( data ) {
var vm = dbo.projectsModel;
var self = this;
self.id = data.id;
self.offernumber = data.offernumber;
self.startdate = dbo.helpers.mysql2date( self.startdate );
self.accepteddate = dbo.helpers.mysql2date( self.accepteddate );
self.rejectdate = dbo.helpers.mysql2date( self.rejectdate );
self.own_revenue = data.own_revenue;
self.other_revenue = data.other_revenue;
self.acceptance_chance = data.acceptance_chance;
self.payed = 0;
self.payments = ko.observableArray( [] );
$.each( data.payments, function ( i, p ) {
self.payed = +p.paymentamount;
self.payments.push( new vm.Payment( p ) );
} );
},
Payment: function ( data ) {
self.id = data.id;
self.paymentdate = dbo.helpers.mysql2date( self.paymentdate );
self.paymentamount = data.paymentamount;
}
};
dbo.projectsModel.init();
ko.applyBindings( dbo.projectsModel, document.getElementById( 'PROJECTS' ) );
}
}