/** * 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' ) ); } );