← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 17145: properly use altField/altFormat in datepicker to allow for multiple date formats, id will always ...

 

------------------------------------------------------------
revno: 17145
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Fri 2014-10-17 15:04:54 +0700
message:
  properly use altField/altFormat in datepicker to allow for multiple date formats, id will always point to an input with yyyy-mm-dd format, and id-dp will point to date-picker instance, updated data-entry to properly support this
modified:
  dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.period.js
  dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/entry.js
  dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.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-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.period.js'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.period.js	2014-09-30 03:34:44 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.period.js	2014-10-17 08:04:54 +0000
@@ -70,7 +70,8 @@
       dateFormat: format,
       showAnim: '',
       maxDate: calendar.today(),
-      yearRange: 'c-100:c+100'
+      yearRange: 'c-100:c+100',
+      altFormat: 'yyyy-mm-dd'
     }
   });
 };
@@ -79,10 +80,11 @@
  * Creates a date picker.
  *
  * @param {jQuery|String|Object} el Element to select on, can be any kind of jQuery selector, or a jqEl
- * @param {*} [fromIso] Convert field from ISO 8601 to local calendar
- * @param {*} [options] Additional options, will be merged with the defaults
+ * @param {boolean} [fromIso] Convert field from ISO 8601 to local calendar
+ * @param {Object} [options] Additional options, will be merged with the defaults
  */
 dhis2.period.DatePicker.prototype.createInstance = function( el, fromIso, options ) {
+  var self = this;
   var $el = $(el);
 
   if( fromIso ) {
@@ -92,6 +94,25 @@
     $el.val(this.calendar.formatDate(this.format, cDateIsoDate));
   }
 
+  var isoFieldId = $el.attr('id');
+  $el.attr('id', isoFieldId + '-dp');
+
+  $el.before($('<input type="hidden"/>')
+    .attr({
+      id: isoFieldId
+    }));
+
+  $(document).on('dhis2.de.event.dataValuesLoaded', function() {
+    var $isoField = $('#' + isoFieldId);
+
+    var date = self.calendar.parseDate('yyyy-mm-dd', $isoField.val());
+    var localDate = self.calendar.formatDate(self.format, date);
+
+    $el.val(localDate);
+  });
+
+  options.altField = '#' + isoFieldId;
+
   $el.calendarsPicker($.extend({}, this.defaults, options));
 };
 

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/entry.js'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/entry.js	2014-10-11 19:29:38 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/entry.js	2014-10-17 08:04:54 +0000
@@ -148,9 +148,10 @@
     return expression;
 }
 
-function saveVal( dataElementId, optionComboId, fieldId )
+function saveVal( dataElementId, optionComboId, fieldId, target )
 {
 	var fieldIds = fieldId.split( "-" );
+  var feedbackId = '#' + (target || fieldId);
 
 	if ( fieldIds.length > 3 )
 	{
@@ -163,7 +164,7 @@
     var value = $( fieldId ).val();
     var type = getDataElementType( dataElementId );
 
-    $( fieldId ).css( 'background-color', dhis2.de.cst.colorYellow );
+    $( feedbackId ).css( 'background-color', dhis2.de.cst.colorYellow );
 
     var periodId = $( '#selectedPeriodId' ).val();
 
@@ -248,7 +249,7 @@
     
     var color = warning ? dhis2.de.cst.colorOrange : dhis2.de.cst.colorGreen;
     
-    var valueSaver = new ValueSaver( dataElementId,	periodId, optionComboId, value, fieldId, color );
+    var valueSaver = new ValueSaver( dataElementId,	periodId, optionComboId, value, feedbackId, color );
     valueSaver.save();
 
     dhis2.de.updateIndicators(); // Update indicators for custom form

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js	2014-10-15 05:43:36 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js	2014-10-17 08:04:54 +0000
@@ -454,13 +454,13 @@
             // fake event, needed for valueBlur / valueFocus when using date-picker (it doesn't send the event object through).
             var fakeEvent = {
                 target: {
-                    id: id
+                    id: id + '-dp'
                 }
             };
 
             dhis2.period.picker.createInstance( '#' + id, false, {
                 onSelect: function() {
-                    saveVal( dataElementId, optionComboId, id );
+                    saveVal( dataElementId, optionComboId, id, fakeEvent.target.id );
                 },
                 onClose: function() {
                     valueBlur(fakeEvent);