=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry-controller.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry-controller.js 2015-03-10 10:07:03 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry-controller.js 2015-03-11 11:21:40 +0000 @@ -1,6 +1,7 @@ trackerCapture.controller('DataEntryController', function($scope, $modal, + $filter, DateUtils, EventUtils, orderByFilter, @@ -10,13 +11,16 @@ OptionSetService, ModalService, CurrentSelection, - CustomFormService) { - + CustomFormService, + PeriodService) { //Data entry form $scope.dataEntryOuterForm = {}; $scope.displayCustomForm = false; $scope.currentElement = {}; $scope.schedulingEnabled = false; + $scope.eventPeriods = []; + $scope.currentPeriod = []; + $scope.filterEvents = true; var loginDetails = storage.get('LOGIN_DETAILS'); var storedBy = ''; @@ -60,7 +64,7 @@ $scope.selectedEnrollment = selections.selectedEnrollment; $scope.optionSets = selections.optionSets; - $scope.selectedProgramWithStage = []; + $scope.stagesById = []; if($scope.selectedOrgUnit && $scope.selectedProgram && $scope.selectedProgram.id && $scope.selectedEntity && $scope.selectedEnrollment && $scope.selectedEnrollment.enrollment){ ProgramStageFactory.getByProgram($scope.selectedProgram).then(function(stages){ $scope.programStages = stages; @@ -73,7 +77,7 @@ $scope.prStDes[prStDe.dataElement.id] = prStDe; }); - $scope.selectedProgramWithStage[stage.id] = stage; + $scope.stagesById[stage.id] = stage; $scope.eventsByStage[stage.id] = []; }); $scope.getEvents(); @@ -93,7 +97,7 @@ }); } - var eventStage = $scope.selectedProgramWithStage[dhis2Event.programStage]; + var eventStage = $scope.stagesById[dhis2Event.programStage]; if(angular.isObject(eventStage)){ dhis2Event.name = eventStage.name; @@ -152,6 +156,9 @@ templateUrl: 'components/dataentry/new-event.html', controller: 'EventCreationController', resolve: { + stagesById: function(){ + return $scope.stagesById; + }, dummyEvent: function(){ return dummyEvent; }, @@ -224,7 +231,7 @@ $scope.getDataEntryForm = function(){ - $scope.currentStage = $scope.selectedProgramWithStage[$scope.currentEvent.programStage]; + $scope.currentStage = $scope.stagesById[$scope.currentEvent.programStage]; angular.forEach($scope.currentStage.programStageSections, function(section){ section.open = true; @@ -667,18 +674,40 @@ return "width: " + width + '%'; }; + $scope.sortEventsByDate = function(dhis2Event){ + var d = dhis2Event.sortingDate; + return DateUtils.getDate(d); + }; + var sortEventsByStage = function(){ - for(var key in $scope.eventsByStage){ - if($scope.eventsByStage.hasOwnProperty(key)){ - $scope.eventsByStage[key] = orderByFilter($scope.eventsByStage[key], '-sortingDate').reverse(); - $scope.totalEvents += $scope.eventsByStage[key].length <=1 ? 1:$scope.eventsByStage[key].length; - - console.log('the stage: ', key); - angular.forEach($scope.eventsByStage[key], function(stage){ - console.log('event: ', stage.sortingDate); - }); - } - } + $scope.eventFilteringRequired = false; + for(var key in $scope.eventsByStage){ + var stage = $scope.stagesById[key]; + if($scope.eventsByStage.hasOwnProperty(key) && stage){ + var sortedEvents = $filter('orderBy')($scope.eventsByStage[key], function(event) { + return DateUtils.getDate(event.sortingDate); + }); + var periods = PeriodService.getPeriods(sortedEvents, stage); + $scope.eventPeriods[key] = periods; + $scope.currentPeriod[key] = periods.length > 0 ? periods[0] : null; + $scope.eventFilteringRequired = $scope.eventFilteringRequired ? $scope.eventFilteringRequired : periods.length > 1; + } + } + }; + + $scope.showDataEntryForEvent = function(period){ + var event = null; + for(var i=0; i<$scope.eventsByStage[period.stage].length; i++){ + if($scope.eventsByStage[period.stage][i].event === period.event){ + event = $scope.eventsByStage[period.stage][i]; + break; + } + } + + if(event){ + $scope.showDataEntry(event, false); + } + }; $scope.showMap = function(event){ @@ -711,9 +740,11 @@ DateUtils, DHIS2EventFactory, DialogService, + stagesById, dummyEvent, programId, trackedEntityInstanceId){ + $scope.stagesById = stagesById; $scope.programStageId = dummyEvent.programStage; $scope.programId = programId; $scope.orgUnitId = dummyEvent.orgUnit; @@ -724,7 +755,7 @@ $scope.dueDateInvalid = false; $scope.eventDateInvalid = false; - //watch for changes in eventDate + //watch for changes in due/event-date $scope.$watchCollection('[dhis2Event.dueDate, dhis2Event.eventDate]', function() { if(angular.isObject($scope.dhis2Event)){ if(!$scope.dhis2Event.dueDate){ @@ -765,8 +796,9 @@ notes: [], dataValues: [], status: 'ACTIVE' - }; - newEvents.events.push(newEvent); + }; + newEvents.events.push(newEvent); + DHIS2EventFactory.create(newEvents).then(function(data){ if (data.importSummaries[0].status === 'ERROR') { var dialogOptions = { @@ -781,6 +813,7 @@ $modalInstance.close(newEvent); } }); + }; $scope.cancel = function(){ === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry.html' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry.html 2015-03-09 15:56:34 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry.html 2015-03-11 11:21:40 +0000 @@ -3,7 +3,8 @@ {{dataentryWidget.title| translate}} - + + @@ -20,7 +21,7 @@ {{eventColor.description| translate}} - + @@ -28,17 +29,21 @@ - @@ -47,15 +52,15 @@ === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment-controller.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment-controller.js 2015-03-09 16:23:47 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment-controller.js 2015-03-11 11:21:40 +0000 @@ -47,9 +47,9 @@ if($scope.selectedProgram){ - $scope.selectedProgramWithStage = []; + $scope.stagesById = []; angular.forEach($scope.selectedProgram.programStages, function(stage){ - $scope.selectedProgramWithStage[stage.id] = stage; + $scope.stagesById[stage.id] = stage; }); angular.forEach($scope.enrollments, function(enrollment){ === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/i18n/i18n_app.properties' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/i18n/i18n_app.properties 2015-03-06 10:08:41 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/i18n/i18n_app.properties 2015-03-11 11:21:40 +0000 @@ -281,4 +281,18 @@ zoom_in=Zoom in zoom_out=Zoom out center_map=Center map -capture_coordinate=Capture coordinate \ No newline at end of file +capture_coordinate=Capture coordinate +filter_events=Filter events +list_events=List all events +jan=January +feb=February +mar=March +apr=April +may=May +jun=June +jul=July +aug=August +sep=September +oct=October +nov=November +dec=December \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/services.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/services.js 2015-03-10 08:12:33 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/services.js 2015-03-11 11:21:40 +0000 @@ -48,6 +48,62 @@ }; }) +/* current selections */ +.service('PeriodService', function($translate, CalendarService){ + + var calendarSetting = CalendarService.getSetting(); + var months = [ + $translate('jan'), + $translate('feb'), + $translate('mar'), + $translate('apr'), + $translate('may'), + $translate('jun'), + $translate('jul'), + $translate('aug'), + $translate('sep'), + $translate('oct'), + $translate('nov'), + $translate('dec') + ]; + + this.getMonths = function(){ + return months; + }; + + this.getPeriods = function(events, stage){ + var periods = []; + if(stage){ + angular.forEach(events, function(event){ + periods.push({event: event.event, name: event.sortingDate, stage: stage.id}); + }); + /*if(stage.standardInterval === 30){ + angular.forEach(events, function(event){ + var obj = {year: moment(event.sortingDate, calendarSetting.momentFormat).year(), month: moment(event.sortingDate, calendarSetting.momentFormat).month(), week: moment(event.sortingDate, calendarSetting.momentFormat).week(), day: moment(event.sortingDate, calendarSetting.momentFormat).day()}; + periods.push({event: event.event, name: months[obj.month] + ' ' + obj.year, stage: stage.id}); + }); + } + else{ + angular.forEach(events, function(event){ + periods.push({event: event.event, name: event.sortingDate, stage: stage.id}); + }); + }*/ + } + + return periods; + }; + + + this.splitDate = function(dateValue){ + if(!dateValue){ + return; + } + var calendarSetting = CalendarService.getSetting(); + + return {year: moment(dateValue, calendarSetting.momentFormat).year(), month: moment(dateValue, calendarSetting.momentFormat).month(), week: moment(dateValue, calendarSetting.momentFormat).week(), day: moment(dateValue, calendarSetting.momentFormat).day()}; + }; +}) + /* Factory to fetch optionSets */ .factory('OptionSetService', function($q, $rootScope, TCStorageService) { return { === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/styles/style.css' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/styles/style.css 2015-03-05 15:48:50 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/styles/style.css 2015-03-11 11:21:40 +0000 @@ -89,6 +89,8 @@ .vertical-center { line-height: inherit; + vertical-align: middle; + } .empty-event-container { @@ -463,6 +465,7 @@ padding-left: 5px; padding-right: 5px; } + .advanced-search-container-main { width: 100%; float: left; @@ -668,6 +671,21 @@ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; } +.form-control-inline { + color: #555; + padding: 6px 6px; + vertical-align: middle; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} + + .form-control-program { width: 40%; height: 34px; @@ -711,6 +729,29 @@ background-color: #eee } +.form-control-inline:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 8px rgba(102,175,233,0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 8px rgba(102,175,233,0.6) +} +.form-control-inline:-moz-placeholder { + color: #999 +} +.form-control-inline::-moz-placeholder { + color: #999 +} +.form-control-inline:-ms-input-placeholder { + color: #999 +} +.form-control-inline::-webkit-input-placeholder { + color: #999 +} +.form-control-inline[disabled], .form-control-inline[readonly], fieldset[disabled] .form-control-inline { + cursor: not-allowed; + background-color: #eee +} + .form-control-select2 { display: block; width: 100%;
+ {{stage.name}} +
+ +
- + - - -
-
+
{{dhis2Event.orgUnitName}}
{{dhis2Event.sortingDate}}
- [{{$index + 1}}] + [{{$index + 1}}]
-