=== 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-08-25 14:54:19 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/controllers.js 2015-09-03 10:36:07 +0000 @@ -168,7 +168,7 @@ $scope.filterTypes = {}; $scope.newDhis2Event = {}; - $scope.eventGridColumns.push({name: 'form_id', id: 'uid', type: 'string', compulsory: false, showFilter: false, show: false}); + $scope.eventGridColumns.push({name: 'form_id', id: 'uid', valueType: '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}); @@ -184,7 +184,7 @@ //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, + valueType: prStDe.dataElement.valueType, compulsory: prStDe.compulsory, showFilter: false, show: prStDe.displayInReports}); === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/event-capture.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/event-capture.js 2015-08-26 19:49:09 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/event-capture.js 2015-09-03 10:36:07 +0000 @@ -32,7 +32,7 @@ dhis2.ec.store = new dhis2.storage.Store({ name: 'dhis2ec', adapters: [dhis2.storage.IndexedDBAdapter, dhis2.storage.DomSessionStorageAdapter, dhis2.storage.InMemoryAdapter], - objectStores: ['programs', 'programStages', 'geoJsons', 'optionSets', 'events', 'programValidations', 'programRules', 'programRuleVariables', 'programIndicators', 'ouLevels', 'constants'] + objectStores: ['programs', 'programStages', 'categories', 'categoryOptions', 'geoJsons', 'optionSets', 'events', 'programValidations', 'programRules', 'programRuleVariables', 'programIndicators', 'ouLevels', 'constants'] }); (function($) { @@ -151,6 +151,8 @@ promise = promise.then( getMetaPrograms ); promise = promise.then( getPrograms ); promise = promise.then( getProgramStages ); + promise = promise.then( getCategories ); + promise = promise.then( getCategoryOptions ); promise = promise.then( getMetaProgramValidations ); promise = promise.then( getProgramValidations ); promise = promise.then( getMetaProgramIndicators ); @@ -243,7 +245,7 @@ $.ajax({ url: '../api/programs.json', type: 'GET', - data:'filter=programType:eq:WITHOUT_REGISTRATION&paging=false&fields=id,name,version,programStages[id,version,programStageSections[id],programStageDataElements[dataElement[id,optionSet[id,version]]]]' + data:'filter=programType:eq:WITHOUT_REGISTRATION&paging=false&fields=id,name,version,categoryCombo[id,categories[id,categoryOptions[id]]],programStages[id,version,programStageSections[id],programStageDataElements[dataElement[id,optionSet[id,version]]]]' }).done( function(response) { def.resolve( response.programs ? response.programs: [] ); }).fail(function(){ @@ -350,7 +352,100 @@ var p = d.promise(); dhis2.ec.store.get('programStages', program.programStages[0].id).done(function(obj) { if(!obj || obj.version !== program.programStages[0].version) { - promise = promise.then( getD2Object( program.programStages[0].id, 'programStages', '../api/programStages', 'fields=id,name,version,description,reportDateDescription,captureCoordinates,dataEntryForm,minDaysFromStart,repeatable,preGenerateUID,programStageSections[id,name,programStageDataElements[dataElement[id]]],programStageDataElements[displayInReports,sortOrder,allowProvidedElsewhere,allowFutureDate,compulsory,dataElement[id,name,type,optionSetValue,numberType,textType,formName,optionSet[id]]]', 'idb' ) ); + promise = promise.then( getD2Object( program.programStages[0].id, 'programStages', '../api/programStages', 'fields=id,name,version,description,reportDateDescription,captureCoordinates,dataEntryForm,minDaysFromStart,repeatable,preGenerateUID,programStageSections[id,name,programStageDataElements[dataElement[id]]],programStageDataElements[displayInReports,sortOrder,allowProvidedElsewhere,allowFutureDate,compulsory,dataElement[id,name,valueType,optionSetValue,formName,optionSet[id]]]', 'idb' ) ); + } + + d.resolve(); + }); + + return p; + }); + } + }); + + build.done(function() { + def.resolve(); + + promise = promise.done( function () { + mainDef.resolve( programs ); + } ); + }).fail(function(){ + mainDef.resolve( null ); + }); + + builder.resolve(); + + return mainPromise; +} + +function getCategories( programs ) +{ + if(!programs){ + return; + } + + var catigories = []; + _.each( _.values( programs ), function ( program ) { + if( program && program.categoryCombo && program.categoryCombo.categories ) { + _.each(_.values(program.categoryCombo.categories), function(cat){ + catigories.push( cat ); + }); + } + }); + + if(catigories.length > 0 ){ + return checkAndGetD2Objects( {programs: programs, self: catigories}, 'categories', '../api/categories', 'fields=id,name,categoryOptions[id]'); + } +} + +function getCategoryOptions( programs ) +{ + if(!programs){ + return; + } + + var categoryOptions = []; + _.each( _.values( programs ), function ( program ) { + if( program && program.categoryCombo && program.categoryCombo.categories ) { + _.each(_.values(program.categoryCombo.categories), function(cat){ + if(cat.categoryOptions){ + _.each(_.values(cat.categoryOptions), function(opt){ + categoryOptions.push( opt ); + }); + } + }); + } + }); + + if(categoryOptions.length > 0 ){ + return checkAndGetD2Objects( {programs: programs, self: categoryOptions}, 'categoryOptions', '../api/categoryOptions', 'fields=id,name'); + } +} + +function getCategoyOptions( programs ) +{ + if( !programs ){ + return; + } + + var mainDef = $.Deferred(); + var mainPromise = mainDef.promise(); + + var def = $.Deferred(); + var promise = def.promise(); + + var builder = $.Deferred(); + var build = builder.promise(); + + _.each( _.values( programs ), function ( program ) { + + if(program.categoryCombo && program.categoryCombo.id){ + build = build.then(function() { + var d = $.Deferred(); + var p = d.promise(); + dhis2.ec.store.get('categoryCombo', program.categoryCombo.id).done(function(obj) { + if(!obj || obj.version !== program.categoryCombo.version) { + promise = promise.then( getD2Object( program.categoryCombo.id, 'categoryCombo', '../api/categoryCombos', 'fields=id,name,categories[id]', 'idb' ) ); } d.resolve(); === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/views/defaultForm.html' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/views/defaultForm.html 2015-08-25 14:54:19 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/views/defaultForm.html 2015-09-03 10:36:07 +0000 @@ -71,80 +71,122 @@ - {{eventGridColumn.name}}* + {{eventGridColumn.name}} - {{eventGridColumn.valueType}}* - -
-
- - {{$select.selected.name || $select.selected}} - - - - -
-
- - -
-
-
-
- -
-
- - - - - - +
-
+
-
+
-
+
-
+
- {{prStDes[de.dataElement.id].dataElement.formName ? prStDes[de.dataElement.id].dataElement.formName : prStDes[de.dataElement.id].dataElement.name}}* + {{prStDes[de.dataElement.id].dataElement.formName ? prStDes[de.dataElement.id].dataElement.formName : prStDes[de.dataElement.id].dataElement.name}} + {{prStDes[de.dataElement.id].dataElement.valueType}} + * + - -
- - - {{$select.selected.name || $select.selected}} - - - - - - - - - -
-
-
+ +
+
+
+ + {{$select.selected.name || $select.selected}} + + + + +
+
+ + +
+
+
-
- - - - - + +
+
+ +
+
+ +
+
+ +
+
+ - -
-
+ class="form-control"> +
+
+ +
+
-
+
-
+
-
+
+ class="form-control"/>
-
+
- +