dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #35032
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 17988: remember grid column settings while paging
------------------------------------------------------------
revno: 17988
committer: Abyot Asalefew Gizaw <abyota@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2015-01-14 15:02:44 +0100
message:
remember grid column settings while paging
modified:
dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/controllers.js
dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/views/home.html
dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js
dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/views/tei.html
dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/angular/plugins/dhis2/services.js
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/controllers.js'
--- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/controllers.js 2015-01-13 22:47:45 +0000
+++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/controllers.js 2015-01-14 14:02:44 +0000
@@ -19,6 +19,7 @@
ContextMenuSelectedItem,
DateUtils,
CalendarService,
+ GridColumnService,
CustomFormService,
ErrorMessageService,
ModalService,
@@ -43,6 +44,7 @@
$scope.displayCustomForm = false;
$scope.currentElement = {id: '', update: false};
$scope.selectedOrgUnit = '';
+ $scope.optionSets = [];
//notes
$scope.note = {};
@@ -54,9 +56,18 @@
//watch for selection of org unit from tree
$scope.$watch('selectedOrgUnit', function() {
-
$scope.dhis2Events = [];
if( angular.isObject($scope.selectedOrgUnit)){
+
+ if(!$scope.optionSets){
+ $scope.optionSets = [];
+ OptionSetService.getAll().then(function(optionSets){
+ angular.forEach(optionSets, function(optionSet){
+ $scope.optionSets[optionSet.id] = optionSet;
+ });
+ });
+ }
+
$scope.loadPrograms();
}
});
@@ -89,15 +100,193 @@
if(angular.isObject($scope.programs) && $scope.programs.length === 1){
$scope.selectedProgram = $scope.programs[0];
- $scope.loadEvents();
+ //$scope.loadEvents();
+ $scope.getPrograms();
}
});
}
};
+
+ $scope.getPrograms = function(){
+
+ $scope.selectedProgramStage = null;
+
+ //Filtering
+ $scope.reverse = false;
+ $scope.sortHeader = {};
+ $scope.filterText = {};
+
+ if( $scope.selectedProgram &&
+ $scope.selectedProgram.programStages &&
+ $scope.selectedProgram.programStages[0] &&
+ $scope.selectedProgram.programStages[0].id){
+
+ //because this is single event, take the first program stage
+ ProgramStageFactory.get($scope.selectedProgram.programStages[0].id).then(function (programStage){
+
+ $scope.selectedProgramStage = programStage;
+
+ angular.forEach($scope.selectedProgramStage.programStageSections, function(section){
+ section.open = true;
+ });
+
+ $scope.customForm = CustomFormService.getForProgramStage($scope.selectedProgramStage);
+
+ $scope.prStDes = [];
+ $scope.eventGridColumns = [];
+ $scope.filterTypes = {};
+ $scope.newDhis2Event = {};
+
+ $scope.eventGridColumns.push({name: 'form_id', id: 'uid', type: 'string', compulsory: false, showFilter: false, show: false});
+ $scope.filterTypes['uid'] = 'string';
+
+ $scope.eventGridColumns.push({name: $scope.selectedProgramStage.reportDateDescription ? $scope.selectedProgramStage.reportDateDescription : 'incident_date', id: 'event_date', type: 'date', compulsory: false, showFilter: false, show: true});
+ $scope.filterTypes['event_date'] = 'date';
+ $scope.filterText['event_date']= {};
+
+ var errorMessages = {};
+ errorMessages['eventDate'] = $translate('required');
+ angular.forEach($scope.selectedProgramStage.programStageDataElements, function(prStDe){
+ $scope.prStDes[prStDe.dataElement.id] = prStDe;
+
+ errorMessages[prStDe.dataElement.id] = "";
+ if(prStDe.compulsory){
+ errorMessages[prStDe.dataElement.id] = $translate('required');
+ }
+
+ $scope.newDhis2Event[prStDe.dataElement.id] = '';
+ if($scope.selectedProgramStage.captureCoordinates){
+ $scope.newDhis2Event.coordinate = {};
+ }
+
+ //generate grid headers using program stage data elements
+ //create a template for new event
+ //for date type dataelements, filtering is based on start and end dates
+ $scope.eventGridColumns.push({name: prStDe.dataElement.formName ? prStDe.dataElement.formName : prStDe.dataElement.name,
+ id: prStDe.dataElement.id,
+ type: prStDe.dataElement.type,
+ compulsory: prStDe.compulsory,
+ showFilter: false,
+ show: prStDe.displayInReports});
+
+ $scope.filterTypes[prStDe.dataElement.id] = prStDe.dataElement.type;
+
+ if(prStDe.dataElement.type === 'date' || prStDe.dataElement.type === 'int' ){
+ $scope.filterText[prStDe.dataElement.id]= {};
+ }
+ });
+
+ ErrorMessageService.setErrorMessages(errorMessages);
+
+ $scope.loadEvents();
+
+ });
+ }
+ };
//get events for the selected program (and org unit)
$scope.loadEvents = function(){
+ $scope.noteExists = false;
+ $scope.dhis2Events = [];
+ $scope.eventLength = 0;
+
+ $scope.eventFetched = false;
+
+ if( $scope.selectedProgram &&
+ $scope.selectedProgram.programStages &&
+ $scope.selectedProgram.programStages[0] &&
+ $scope.selectedProgram.programStages[0].id){
+
+ //Load events for the selected program stage and orgunit
+ DHIS2EventFactory.getByStage($scope.selectedOrgUnit.id, $scope.selectedProgramStage.id, $scope.pager ).then(function(data){
+
+ if(data.events){
+ $scope.eventLength = data.events.length;
+ }
+
+ $scope.dhis2Events = data.events;
+
+ if( data.pager ){
+ $scope.pager = data.pager;
+ $scope.pager.toolBarDisplay = 5;
+
+ Paginator.setPage($scope.pager.page);
+ Paginator.setPageCount($scope.pager.pageCount);
+ Paginator.setPageSize($scope.pager.pageSize);
+ Paginator.setItemCount($scope.pager.total);
+ }
+
+ //process event list for easier tabular sorting
+ if( angular.isObject( $scope.dhis2Events ) ) {
+
+ for(var i=0; i < $scope.dhis2Events.length; i++){
+
+ if($scope.dhis2Events[i].notes && !$scope.noteExists){
+ $scope.noteExists = true;
+ }
+
+ //check if event is empty
+ if(!angular.isUndefined($scope.dhis2Events[i].dataValues)){
+
+ angular.forEach($scope.dhis2Events[i].dataValues, function(dataValue){
+
+ //converting event.datavalues[i].datavalue.dataelement = value to
+ //event[dataElement] = value for easier grid display.
+ if($scope.prStDes[dataValue.dataElement]){
+
+ var val = dataValue.value;
+ if(angular.isObject($scope.prStDes[dataValue.dataElement].dataElement)){
+
+ //converting int string value to number for proper sorting.
+ if($scope.prStDes[dataValue.dataElement].dataElement.type === 'int'){
+ if( dhis2.validation.isNumber(val) ){
+ val = new Number(val);
+ }
+ }
+ if($scope.prStDes[dataValue.dataElement].dataElement.type === 'string'){
+ if($scope.prStDes[dataValue.dataElement].dataElement.optionSet &&
+ $scope.prStDes[dataValue.dataElement].dataElement.optionSet.id &&
+ $scope.optionSets[$scope.prStDes[dataValue.dataElement].dataElement.optionSet.id] &&
+ $scope.optionSets[$scope.prStDes[dataValue.dataElement].dataElement.optionSet.id].options ){
+ val = OptionSetService.getName($scope.optionSets[$scope.prStDes[dataValue.dataElement].dataElement.optionSet.id].options, val);
+ }
+ }
+ if($scope.prStDes[dataValue.dataElement].dataElement.type === 'date'){
+ val = DateUtils.formatFromApiToUser(val);
+ }
+ if( $scope.prStDes[dataValue.dataElement].dataElement.type === 'trueOnly'){
+ if(val == 'true'){
+ val = true;
+ }
+ else{
+ val = false;
+ }
+ }
+ }
+ $scope.dhis2Events[i][dataValue.dataElement] = val;
+ }
+
+ });
+
+ $scope.dhis2Events[i]['uid'] = $scope.dhis2Events[i].event;
+ $scope.dhis2Events[i].eventDate = DateUtils.formatFromApiToUser($scope.dhis2Events[i].eventDate);
+ $scope.dhis2Events[i]['event_date'] = $scope.dhis2Events[i].eventDate;
+
+ delete $scope.dhis2Events[i].dataValues;
+ }
+ }
+
+ if($scope.noteExists && !GridColumnService.columnExists($scope.eventGridColumns, 'comment')){
+ $scope.eventGridColumns.push({name: 'comment', id: 'comment', type: 'string', compulsory: false, showFilter: false, show: true});
+ }
+ }
+ $scope.eventFetched = true;
+ });
+ }
+ };
+ /*$scope.loadEvents = function(){
+
$scope.noteExists = false;
$scope.selectedProgramStage = null;
@@ -274,9 +463,13 @@
});
});
}
- };
+ };*/
$scope.jumpToPage = function(){
+
+ if($scope.pager && $scope.pager.page && $scope.pager.pageCount && $scope.pager.page > $scope.pager.pageCount){
+ $scope.pager.page = $scope.pager.pageCount;
+ }
$scope.loadEvents();
};
=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/views/home.html'
--- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/views/home.html 2014-12-18 11:50:32 +0000
+++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/views/home.html 2015-01-14 14:02:44 +0000
@@ -47,7 +47,7 @@
name="programId"
ng-model="selectedProgram"
ng-options="program as program.name for program in programs | orderBy: 'name'"
- ng-change="loadEvents()"
+ ng-change="getPrograms()"
ng-disabled="eventRegistration || editingEventInFull || editingEventInGrid">
<option value="">{{'please_select'| translate}}</option>
</select>
=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js'
--- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js 2015-01-05 15:31:59 +0000
+++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js 2015-01-14 14:02:44 +0000
@@ -269,6 +269,9 @@
};
$scope.jumpToPage = function(){
+ if($scope.pager && $scope.pager.page && $scope.pager.pageCount && $scope.pager.page > $scope.pager.pageCount){
+ $scope.pager.page = $scope.pager.pageCount;
+ }
$scope.search();
};
=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/views/tei.html'
--- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/views/tei.html 2014-08-26 16:39:26 +0000
+++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/views/tei.html 2015-01-14 14:02:44 +0000
@@ -33,9 +33,11 @@
</tbody>
</table>
</div>
- <!-- entity ends -->
- <span ng-if='pager.pageCount > 1'>
- <serverside-paginator></serverside-paginator>
- </span>
+ <!-- entity ends -->
+
+ <!-- paging begins -->
+ <serverside-paginator></serverside-paginator>
+ <!-- paging ends -->
+
</div>
</div>
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/angular/plugins/dhis2/services.js'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/angular/plugins/dhis2/services.js 2015-01-13 22:47:45 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/angular/plugins/dhis2/services.js 2015-01-14 14:02:44 +0000
@@ -508,4 +508,22 @@
return Math.max(low, 0);
};
+})
+
+.service('GridColumnService', function(){
+ return {
+ columnExists: function(cols, id) {
+ var colExists = false;
+ if(!angular.isObject(cols) || !id || angular.isObject(cols) && !cols.length){
+ return colExists;
+ }
+
+ for(var i=0; i<cols.length && !colExists; i++){
+ if(cols[i].id === id){
+ colExists = true;
+ }
+ }
+ return colExists;
+ }
+ };
});