145 lines
4.4 KiB
JavaScript
145 lines
4.4 KiB
JavaScript
/**
|
|
* Created by Pensare Software.
|
|
* User: Theo Weijmer
|
|
* Date: 21/04/2018
|
|
* Time: 19:58
|
|
*/
|
|
|
|
|
|
$( function () {
|
|
dbo.employeeTargetModel = {
|
|
|
|
employeeTargets: ko.observableArray( [] ),
|
|
employeeID : null,
|
|
months : ko.observableArray( [] ),
|
|
years : ko.observableArray( [] ),
|
|
targetLength : [],
|
|
newTarget : ko.observable( true ),
|
|
busy : false,
|
|
|
|
init: function ( employeeID ) {
|
|
var vm = dbo.employeeTargetModel;
|
|
|
|
vm.employeeID = employeeID;
|
|
|
|
vm.months( dbo.monthArray );
|
|
vm.years( dbo.years );
|
|
|
|
vm.showModal();
|
|
|
|
vm.refreshEmployeeTargets();
|
|
},
|
|
|
|
showModal: function () {
|
|
$( "#employee-target-modal" ).modal( 'show' );
|
|
},
|
|
|
|
addEmployeeTarget: function () {
|
|
var vm = dbo.employeeTargetModel;
|
|
var lastYear = dbo.currentYear;
|
|
var lastMonth = dbo.currentMonth;
|
|
|
|
var data = {
|
|
id : 0,
|
|
user_id : vm.employeeID,
|
|
startyear : lastYear,
|
|
startmonth: lastMonth,
|
|
endyear : null,
|
|
endmonth : null,
|
|
target : 0
|
|
}
|
|
|
|
vm.employeeTargets.push( new vm.Employeetarget( data, (vm.targetLength - 1), false ) );
|
|
},
|
|
|
|
checkNumeric: function () {
|
|
this.target( dbo.helpers.validateNumber( this.target() ) );
|
|
},
|
|
|
|
saveEmployeeTarget: function () {
|
|
var vm = dbo.employeeTargetModel;
|
|
var self = this;
|
|
var submitDATA = {
|
|
id : self.id,
|
|
user_id : vm.employeeID,
|
|
startmonth: self.startmonth(),
|
|
startyear : self.startyear(),
|
|
endmonth : self.endmonth() || 0,
|
|
endyear : self.endyear() || 0,
|
|
target : self.target()
|
|
}
|
|
|
|
dbo.employeeTargetDataService.saveEmployeeTarget( submitDATA, function ( data ) {
|
|
if ( !data.success ) return self.saved( false );
|
|
|
|
self.saved( true );
|
|
self.id = data.targetID;
|
|
} );
|
|
},
|
|
|
|
setUnsaved: function () {
|
|
var vm = dbo.employeeTargetModel;
|
|
|
|
if ( vm.busy ) return;
|
|
|
|
this.saved( false );
|
|
},
|
|
|
|
refreshEmployeeTargets: function () {
|
|
var vm = dbo.employeeTargetModel;
|
|
|
|
vm.busy = true;
|
|
dbo.employeeTargetDataService.getEmployeeTargets( vm.employeeID, function ( data ) {
|
|
vm.employeeTargets.removeAll();
|
|
|
|
vm.newTarget( true );
|
|
vm.targetLength = data.length
|
|
var i = 0;
|
|
_.each( data, function ( p ) {
|
|
vm.employeeTargets.push( new vm.Employeetarget( p, i, true ) );
|
|
i++;
|
|
} );
|
|
vm.busy = false;
|
|
} );
|
|
},
|
|
|
|
|
|
Employeetarget: function ( data, i, saved ) {
|
|
var vm = dbo.employeeTargetModel;
|
|
var self = this;
|
|
|
|
vm.newTarget( true );
|
|
|
|
self.id = data.id;
|
|
self.startyear = ko.observable( data.startyear );
|
|
self.startmonth = ko.observable( data.startmonth );
|
|
self.endyear = ko.observable( data.endyear );
|
|
self.endmonth = ko.observable( data.endmonth );
|
|
self.target = ko.observable( data.target );
|
|
self.saved = ko.observable( saved );
|
|
|
|
self.changeable = ko.pureComputed( function () {
|
|
if ( i == (vm.targetLength - 1) ) return true;
|
|
|
|
return false;
|
|
} );
|
|
|
|
self.validTarget = ko.pureComputed( function () {
|
|
if ( !self.endmonth() && !self.endyear() ) return true;
|
|
if ( !self.endmonth() || !self.endyear() ) return false;
|
|
if ( self.endyear() == self.startyear() && self.endmonth() > self.startmonth() ) return true;
|
|
if ( self.endyear() > self.startyear() && self.endmonth() ) return true;
|
|
|
|
return false;
|
|
} );
|
|
|
|
if ( !self.endmonth() ) vm.newTarget( false );
|
|
if ( !self.endyear() ) vm.newTarget( false );
|
|
}
|
|
};
|
|
|
|
ko.applyBindings( dbo.employeeTargetModel, document.getElementById( 'employee-target-modal' ) );
|
|
|
|
} );
|
|
|