Diversen opmerkingen Peter (23-08-2019)

This commit is contained in:
2019-09-12 20:16:57 +02:00
parent f5b815d34d
commit b49fb957a3
17 changed files with 1194 additions and 1094 deletions
@@ -8,237 +8,257 @@
dbo.employeehoursInit = function () {
if ( dbo.employeehoursModel !== undefined ) {
dbo.employeehoursModel.init();
} else {
dbo.employeehoursModel = {
var timeout;
employeehours : ko.observableArray( [] ),
archive : ko.observable( false ),
months : ko.observableArray( [] ),
years : ko.observableArray( [] ),
hourtypes : ko.observableArray( [] ),
employees : ko.observableArray( [] ),
selectedYear : ko.observable(),
selectedMonth : ko.observable(),
busy : false,
selectedEmployeeID : ko.observable(),
offersWithoutProject: ko.observableArray( [] ),
if ( dbo.employeehoursModel !== undefined ) {
dbo.employeehoursModel.init();
} else {
dbo.employeehoursModel = {
init: function () {
var vm = dbo.employeehoursModel;
employeehours : ko.observableArray( [] ),
archive : ko.observable( false ),
months : ko.observableArray( [] ),
years : ko.observableArray( [] ),
hourtypes : ko.observableArray( [] ),
employees : ko.observableArray( [] ),
selectedYear : ko.observable(),
selectedMonth : ko.observable(),
busy : false,
selectedEmployeeID : ko.observable(),
offersWithoutProject: ko.observableArray( [] ),
projects : ko.observableArray( [] ),
vm.busy = true;
init: function () {
var vm = dbo.employeehoursModel;
vm.months( dbo.monthArray );
vm.years( dbo.years );
vm.busy = true;
vm.selectedMonth( dbo.currentMonth );
vm.selectedYear( dbo.currentYear );
vm.months( dbo.monthArray );
vm.years( dbo.years );
dbo.employeehoursDataService.getHourtypes( function ( data ) {
vm.hourtypes( data );
dbo.offerDataService.getOffersWithoutProject( function ( data ) {
vm.offersWithoutProject( data );
dbo.userDataService.getUserWithprojects( function ( data ) {
vm.employees.removeAll();
_.each( data, function ( p ) {
vm.employees.push( new vm.Employee( p ) );
} );
vm.selectedEmployeeID( dbo.currentUser.id )
vm.selectedMonth( dbo.currentMonth );
vm.selectedYear( dbo.currentYear );
vm.busy = false;
vm.refreshEmployeehours();
} );
} );
} );
},
vm.selectedEmployeeID( dbo.currentUser.id );
newEmployeehour: function () {
var vm = dbo.employeehoursModel;
dbo.userDataService.getAllUsers( 'F', function ( data ) {
vm.employees( data );
var employeeHour = vm.employeehours()[vm.employeehours().length - 1];
dbo.employeehoursDataService.getHourtypes( function ( data ) {
vm.hourtypes( data );
dbo.offerDataService.getOffersWithoutProject( function ( data ) {
vm.offersWithoutProject( data );
vm.busy = false;
vm.refreshEmployeehours();
} );
} );
} );
},
var employeeID = null;
if ( !vm.selectedEmployeeID ) {
employeeID = employeeHour ? employeeHour.employee_id() : null;
} else {
employeeID = vm.selectedEmployeeID();
}
newEmployeehour: function () {
var vm = dbo.employeehoursModel;
var employeehour = {
id : 0,
employee_id: employeeID,
hourdate : employeeHour ? employeeHour.hourdate() : null,
hourtype_id: employeeHour ? employeeHour.hourtype_id() : 9,
project_id : employeeHour ? employeeHour.projectID() : null,
hours : 0,
inEdit : true
};
var employeeHour = vm.employeehours()[vm.employeehours().length - 1];
vm.employeehours.push( new vm.Employeehour( employeehour ) );
},
var employeeID = null;
if ( !vm.selectedEmployeeID ) {
employeeID = employeeHour ? employeeHour.employee_id() : null;
} else {
employeeID = vm.selectedEmployeeID();
}
toggleArchive: function () {
var vm = dbo.employeeemployeehoursModel;
var employeehour = {
id : 0,
employee_id: employeeID,
hourdate : employeeHour ? employeeHour.hourdate() : null,
hourtype_id: employeeHour ? employeeHour.hourtype_id() : 9,
project_id : employeeHour ? employeeHour.projectID() : null,
hours : 0,
inEdit : true,
dirty : true
};
vm.archive( !vm.archive() );
vm.employeehours.push( new vm.Employeehour( employeehour ) );
},
vm.refreshHours();
},
toggleArchive: function () {
var vm = dbo.employeehoursModel;
saveEmployeehours: function ( self = false ) {
if ( !self ) self = this;
vm.archive( !vm.archive() );
if ( !self.employee_id() ) return;
if ( !self.hourtype_id() ) return;
if ( !self.hourdate() ) return;
if ( self.hourType() == 'PROJECTS' && !self.projectID() ) return;
if ( self.hourType() == 'OFFERS' && !self.projectID() ) return;
vm.refreshHours();
},
var submitDATA = {
id : self.id(),
employee_id: self.employee_id(),
hourdate : self.hourdate(),
hourtype_id: self.hourtype_id(),
hours : self.hours(),
hourType : self.hourType(),
project_id : self.projectID()
};
saveDelayedEmployeehours: function () {
var vm = dbo.employeehoursModel;
var self = this;
self.dirty( true );
if ( timeout ) {
clearTimeout( timeout );
timeout = null;
}
timeout = setTimeout( function () {
vm.saveEmployeehours( self );
}, 300 );
},
dbo.employeehoursDataService.saveEmployeehour( submitDATA, function ( data ) {
self.id( data.employeehourID );
} );
},
saveEmployeehours: function ( self = false ) {
self.dirty( true );
if ( !self ) self = this;
editEmployeehour: function () {
dbo.employeehoursModel.saveEmployeehours( this );
this.inEdit( !this.inEdit() );
},
if ( !self.employee_id() ) return;
if ( !self.hourtype_id() ) return;
if ( !self.hourdate() ) return;
if ( self.hours() <= 0 ) return;
if ( self.hourType() == 'PROJECTS' && !self.projectID() ) return;
if ( self.hourType() == 'OFFERS' && !self.projectID() ) return;
changeEmployee: function () {
var vm = dbo.employeehoursModel;
this.projects( vm.setEmployeeProjects( this ) );
var submitDATA = {
id : self.id(),
employee_id: self.employee_id(),
hourdate : self.hourdate(),
hourtype_id: self.hourtype_id(),
hours : self.hours(),
hourType : self.hourType(),
project_id : self.projectID()
};
this.projectID( null );
dbo.employeehoursDataService.saveEmployeehour( submitDATA, function ( data ) {
self.id( data.employeehourID );
self.dirty( false );
} );
},
vm.saveEmployeehours( this );
},
editEmployeehour: function () {
dbo.employeehoursModel.saveEmployeehours( this );
this.inEdit( !this.inEdit() );
},
removeEmployeehour: function () {
var vm = dbo.employeehoursModel;
var self = this;
changeEmployee: function () {
var vm = dbo.employeehoursModel;
this.projects( vm.setEmployeeProjects( this ) );
tellMe( {
title : 'verwijderen uren',
message : 'weet u zeker dat u deze uren wilt verwijderen, dit kan niet ongedaan worden gemaakt',
notify : true,
noText : 'nee verwijder de uren niet',
yesText : 'ja verwijder de uren',
modalClass: 'modal-warning'
}, function ( response ) {
if ( response ) {
dbo.employeehoursDataService.removeEmployeehour( self.id(), self.hourType(), function ( data ) {
if ( data.result ) {
vm.refreshEmployeehours();
} else {
tellMe( {
title : 'fout bij verwijderen uren',
message : 'de uren konden niet worden verwijderd',
modalClass: 'modal-danger'
} );
}
} );
}
} );
},
this.projectID( null );
refreshEmployeehours: function () {
var vm = dbo.employeehoursModel;
vm.saveEmployeehours( this );
},
if( vm.busy == true ) return;
removeEmployeehour: function () {
var vm = dbo.employeehoursModel;
var self = this;
var employeeID = vm.selectedEmployeeID() || 0;
tellMe( {
title : 'verwijderen uren',
message : 'weet u zeker dat u deze uren wilt verwijderen, dit kan niet ongedaan worden gemaakt',
notify : true,
noText : 'nee verwijder de uren niet',
yesText : 'ja verwijder de uren',
modalClass: 'modal-warning'
}, function ( response ) {
if ( response ) {
dbo.employeehoursDataService.removeEmployeehour( self.id(), self.hourType(), function ( data ) {
if ( data.result ) {
vm.refreshEmployeehours();
} else {
tellMe( {
title : 'fout bij verwijderen uren',
message : 'de uren konden niet worden verwijderd',
modalClass: 'modal-danger'
} );
}
} );
}
} );
},
vm.employeehours.removeAll();
dbo.employeehoursDataService.getEmployeehours(
vm.selectedMonth(), vm.selectedYear(), employeeID, function ( data ) {
$.each( data, function ( i, p ) {
vm.employeehours.push( new vm.Employeehour( p ) );
} );
} );
},
refreshEmployeehours: function () {
var vm = dbo.employeehoursModel;
validateNumber: function ( field ) {
this[field]( dbo.helpers.validateNumber( this[field](), true ) );
},
if ( vm.busy == true ) return;
Employee: function ( data ) {
var vm = dbo.employeehoursModel;
var self = this;
var employeeID = vm.selectedEmployeeID() || 0;
self.id = data.id;
self.fullname = data.fullname;
vm.employeehours.removeAll();
dbo.employeehoursDataService.getEmployeehours(
vm.selectedMonth(), vm.selectedYear(), employeeID, function ( data ) {
$.each( data, function ( i, p ) {
vm.employeehours.push( new vm.Employeehour( p ) );
} );
} );
},
self.projecten = ko.observableArray( [] );
_.each( data.projectemployees, function ( p ) {
if ( p.project )
self.projecten.push( new vm.Project( p ) );
} );
validateNumber: function ( field ) {
this[field]( dbo.helpers.validateNumber( this[field](), true ) );
},
Employee: function ( data ) {
var vm = dbo.employeehoursModel;
var self = this;
self.id = data.id;
self.fullname = data.fullname;
self.projecten = ko.observableArray( [] );
_.each( data.projectemployees, function ( p ) {
if ( p.project )
self.projecten.push( new vm.Project( p ) );
} );
// _.each( vm.offersWithoutProject(), function ( p ) {
// self.projecten.push( new vm.Offer( p, self.id ) );
// } );
},
},
Project: function ( data ) {
this.projectEmployeeID = data.id;
this.type = 'PROJECT';
this.projectID = data.project.id;
this.project = data.project.projectnumber + ' - ' + data.project.projectname;
},
Project: function ( data ) {
this.projectEmployeeID = data.id;
this.type = 'PROJECT';
this.projectID = data.project.id;
this.project = data.project.projectnumber + ' - ' + data.project.projectname;
this.projectname = data.project.projectnumber + ' - ' + data.project.projectname;
},
Offer: function ( data, employeeID ) {
this.projectemployeeID = employeeID;
this.type = 'OFFER';
this.projectID = data.id;
this.project = data.offernumber + ' - ' + data.offername;
},
Offer: function ( data, employeeID ) {
this.projectemployeeID = employeeID;
this.type = 'OFFER';
this.projectID = data.id;
this.project = data.offernumber + ' - ' + data.offername;
},
Employeehour: function ( data ) {
var vm = dbo.employeehoursModel;
var self = this;
Employeehour: function ( data ) {
var vm = dbo.employeehoursModel;
var self = this;
self.id = ko.observable( data.id );
self.employee_id = ko.observable( data.employee_id );
self.hourtype_id = ko.observable( data.hourtype_id );
self.hourdate = ko.observable( data.hourdate );
self.hours = ko.observable( data.hours );
self.inEdit = ko.observable( data.inEdit || false );
self.projectID = ko.observable( data.project_id );
self.hourType = ko.pureComputed( function () {
return dbo.helpers.findArrayElement( 'id', 'key', this.hourtype_id(), vm.hourtypes() );
}, this );
self.id = ko.observable( data.id );
self.employee_id = ko.observable( data.employee_id );
self.hourtype_id = ko.observable( data.hourtype_id );
self.hourdate = ko.observable( data.hourdate );
self.hours = ko.observable( data.hours );
self.inEdit = ko.observable( data.inEdit || false );
self.projectID = ko.observable( data.project_id );
self.dirty = ko.observable( data.dirty || false );
self.hourType = ko.pureComputed( function () {
return dbo.helpers.findArrayElement( 'id', 'key', this.hourtype_id(), vm.hourtypes() );
}, this );
self.canFillInHours = ko.pureComputed( function () {
if ( self.hourType() == 'PROJECTS' || self.hourType() == 'OFFERS' ) {
if ( !self.projectID() ) {
self.hours( 0 );
}
}
vm.setEmployeeProjects( self );
},
setEmployeeProjects: function ( self ) {
var vm = dbo.employeehoursModel;
return true;
} );
}
};
var employeeProjects =
dbo.helpers.findArrayElement( 'id', 'projecten', self.employee_id(), vm.employees() );
self.projects = ko.observableArray( [] );
_.each( employeeProjects, function ( p ) {
self.projects.push( {
projectID : p.projectID,
projectname: p.project
} );
} );
}
};
dbo.employeehoursModel.init();
dbo.employeehoursModel.init();
ko.applyBindings( dbo.employeehoursModel, document.getElementById( 'EMPLOYEEHOURS' ) );
ko.applyBindings( dbo.employeehoursModel, document.getElementById( 'EMPLOYEEHOURS' ) );
}
dbo.employeehoursModel.selectedEmployeeID.subscribe( function () {
dbo.userDataService.getUserActiveProjects( dbo.currentUser.id, function ( data ) {
dbo.employeehoursModel.projects( data );
} );
} );
}
}