=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/i18n/i18n_app.properties' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/i18n/i18n_app.properties 2015-10-20 12:54:44 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/i18n/i18n_app.properties 2015-11-16 15:48:46 +0000 @@ -23,6 +23,7 @@ save_and_add_new=Save and add new save_and_close=Save and close save_and_back=Save and go back +upload=Upload delete=Delete cancel=Cancel close=Close === 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-11-12 19:53:13 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/controllers.js 2015-11-16 15:48:46 +0000 @@ -12,6 +12,7 @@ $modal, $translate, $anchorScroll, + $window, orderByFilter, SessionStorageService, Paginator, @@ -61,7 +62,8 @@ $scope.currentElement = {id: '', update: false}; $scope.optionSets = []; $scope.proceedSelection = true; - $scope.formUnsaved = false; + $scope.formUnsaved = false; + $scope.fileNames = {}; //notes $scope.note = {}; @@ -1092,4 +1094,24 @@ } return 'form-control'; }; + + $scope.getClickFunction = function(dhis2Event, column){ + + if(column.id === 'comment'){ + return "showNotes(" + dhis2Event + ")"; + } + else{ + if(dhis2Event.event ===$scope.currentEvent.evnet){ + return ''; + } + else{ + return "showEventList(" + dhis2Event + ")"; + } + } + return ''; + }; + + $scope.downloadFile = function(eventUid, dataElementUid) { + $window.open('../api/events/files?eventUid=' + eventUid +'&dataElementUid=' + dataElementUid, '_blank', ''); + }; }); \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/directives.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/directives.js 2015-10-23 08:08:54 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/directives.js 2015-11-16 15:48:46 +0000 @@ -1,3 +1,5 @@ +/* global selection, angular */ + 'use strict'; /* Directives */ @@ -29,4 +31,99 @@ } } }; -}); \ No newline at end of file +}) + +.directive('d2FileInputField', function () { + + return { + restrict: 'E', + templateUrl: 'views/file-input.html', + link: function (scope, element, attrs) {} + }; +}) + +.directive('d2FileInput', function($parse, $timeout, FileService, DialogService){ + + return { + restrict: "A", + link: function (scope, element, attrs) { + var modelGetter = $parse(attrs.d2FileInput); + var modelSetter = modelGetter.assign; + + var nameGetter = $parse(attrs.d2FileInputName); + var nameSetter = nameGetter.assign; + + var updateModel = function () { + FileService.upload(element[0].files[0]).then(function(data){ + if(data && data.status === 'OK' && data.response && data.response.fileResource && data.response.fileResource.id){ + $timeout(function(){ + modelSetter(scope, data.response.fileResource.id); + nameSetter(scope, element[0].files[0].name); + scope.$apply(); + }); + } + else{ + var dialogOptions = { + headerText: 'error', + bodyText: 'file_upload_failed' + }; + DialogService.showDialog({}, dialogOptions); + } + + }); + }; + element.bind('change', updateModel); + } + }; +}) + +.directive('d2FileInputDelete', function($parse, $timeout, ModalService, FileService, DialogService){ + + return { + restrict: "A", + link: function (scope, element, attrs) { + var modelGetter = $parse(attrs.d2FileInputDelete); + var modelSetter = modelGetter.assign; + var nameGetter = $parse(attrs.d2FileInputName); + var nameSetter = nameGetter.assign; + + if(modelGetter(scope)) { + FileService.get(modelGetter(scope)).then(function(data){ + if(data && data.name && data.id){ + $timeout(function(){ + nameSetter(scope, data.name); + scope.$apply(); + }); + } + else{ + var dialogOptions = { + headerText: 'error', + bodyText: 'file_missing' + }; + DialogService.showDialog({}, dialogOptions); + } + }); + } + + var deleteFile = function () { + var modalOptions = { + closeButtonText: 'cancel', + actionButtonText: 'remove', + headerText: 'remove', + bodyText: 'are_you_sure_to_remove' + }; + + ModalService.showModal({}, modalOptions).then(function(result){ + $timeout(function(){ + modelSetter(scope, ''); + nameSetter(scope, ''); + scope.$apply(); + }); + }); + }; + + element.bind('click', deleteFile); + } + }; +}); + === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/services.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/services.js 2015-10-01 10:07:00 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/scripts/services.js 2015-11-16 15:48:46 +0000 @@ -17,6 +17,34 @@ }; }) +/* Service for uploading/downloading file */ +.service('FileService', function ($http) { + + return { + get: function (uid) { + var promise = $http.get('../api/fileResources/' + uid).then(function (response) { + return response.data; + }); + return promise; + }, + download: function (fileName) { + var promise = $http.get(fileName).then(function (response) { + return response.data; + }); + return promise; + }, + upload: function(file){ + var formData = new FormData(); + formData.append('file', file); + var headers = {transformRequest: angular.identity, headers: {'Content-Type': undefined}}; + var promise = $http.post('../api/fileResources', formData, headers).then(function(response){ + return response.data; + }); + return promise; + } + }; +}) + .factory('OfflineECStorageService', function($http, $q, $rootScope, ECStorageService){ return { hasLocalData: function() { === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/styles/style.css' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/styles/style.css 2015-10-15 14:54:15 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/styles/style.css 2015-11-16 15:48:46 +0000 @@ -376,4 +376,31 @@ .ui-datepicker-group .ui-datepicker-header { //height: 1.5em; height: inherit; //this is to make it play nice with bootstrap -} \ No newline at end of file +} + +.btn-file { + position: relative; + overflow: hidden; +} +.btn-file input[type=file] { + position: absolute; + top: 0; + right: 0; + min-width: 100%; + min-height: 100%; + font-size: 100px; + text-align: right; + filter: alpha(opacity=0); + opacity: 0; + background: red; + cursor: inherit; + display: block; +} +/*.file-input input[readonly] { + background-color: white !important; + cursor: text !important; +}*/ + +/*input[type='file'] { + opacity:0 +}*/ \ No newline at end of file === 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-10-20 09:25:25 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-event-capture/views/defaultForm.html 2015-11-16 15:48:46 +0000 @@ -187,6 +187,30 @@ input-field-id={{eventGridColumn.id}} ng-change="saveDatavalue()" /> +
+
+ + + + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + +
+
- - - - - - - {{eventGridColumn.name}} - {{eventGridColumn.name | translate}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + {{eventGridColumn.name}} + {{eventGridColumn.name | translate}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - {{'comment' | translate}} - - + + + + + + + + + + + {{'comment' | translate}} + + - + -
+
{{noLabel}} @@ -146,8 +143,7 @@ -
+
+ ng-model="currentEvent[eventGridColumn.id]" + ng-required={{eventGridColumn.compulsory}} + ng-blur="updateEventDataValue(dhis2Event, eventGridColumn.id)" + name="foo" + ng-class="getInputNotifcationClass(eventGridColumn.id,false)"/>
@@ -339,13 +335,12 @@
- - - - - - - + + + + + +