dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #30019
[Merge] lp:dhis2 into lp:~tw-msf/dhis2/dhis2
Mahendra Kariya has proposed merging lp:dhis2 into lp:~tw-msf/dhis2/dhis2.
Requested reviews:
Lars Helge Øverland (larshelge)
Related bugs:
Bug #338615 in DHIS: "DXF Import tries importing when no file is selected"
https://bugs.launchpad.net/dhis2/+bug/338615
Bug #339272 in DHIS: "i18n resource editor not working with Indic scripts"
https://bugs.launchpad.net/dhis2/+bug/339272
Bug #339807 in DHIS: "Menu crashes with WebKit"
https://bugs.launchpad.net/dhis2/+bug/339807
Bug #340918 in DHIS: "The english help page contains errors"
https://bugs.launchpad.net/dhis2/+bug/340918
Bug #341630 in DHIS: "The login screen does not focus on field when page loads"
https://bugs.launchpad.net/dhis2/+bug/341630
Bug #344152 in DHIS: "ANM Indian mobile application - exiting midway"
https://bugs.launchpad.net/dhis2/+bug/344152
Bug #363292 in DHIS: "SMS Listener Does Not Remember COM Port"
https://bugs.launchpad.net/dhis2/+bug/363292
Bug #363645 in DHIS: "Data Element Group Editor does not show any group members"
https://bugs.launchpad.net/dhis2/+bug/363645
Bug #418065 in DHIS: "IE7 selection lists not working"
https://bugs.launchpad.net/dhis2/+bug/418065
Bug #421110 in DHIS: "SMSListener throws ArithmeticException while Decompression"
https://bugs.launchpad.net/dhis2/+bug/421110
Bug #421111 in DHIS: "SMS Listener does not show version or branding"
https://bugs.launchpad.net/dhis2/+bug/421111
Bug #423727 in DHIS: "Data Browser: Browse by orgunit does not show orgunit tree and fails"
https://bugs.launchpad.net/dhis2/+bug/423727
Bug #426160 in DHIS: "Prune periods fails on a foreign key constraint"
https://bugs.launchpad.net/dhis2/+bug/426160
Bug #496938 in DHIS: "Sorting should be ignore case for all lists"
https://bugs.launchpad.net/dhis2/+bug/496938
Bug #525787 in DHIS: "Division by zero error when loading data entry form"
https://bugs.launchpad.net/dhis2/+bug/525787
Bug #537522 in DHIS: "Build fails if bzr is not found on PATH or not installed"
https://bugs.launchpad.net/dhis2/+bug/537522
Bug #537672 in DHIS: "Filtering elements in list doesn't work in other browsers, only FF"
https://bugs.launchpad.net/dhis2/+bug/537672
Bug #540908 in DHIS: "Data Element Groups: both available and selected DE lists are empty in the edit data element group window"
https://bugs.launchpad.net/dhis2/+bug/540908
Bug #664390 in dhis-mobile: "Data elements in program stage are not arranged in order"
https://bugs.launchpad.net/dhis-mobile/+bug/664390
Bug #675872 in dhis-mobile: "Activity plan lacks sorting "
https://bugs.launchpad.net/dhis-mobile/+bug/675872
Bug #987316 in DHIS: "ouwt: should always reload from server when organisationUnit.size == 0"
https://bugs.launchpad.net/dhis2/+bug/987316
Bug #994079 in DHIS: "Wrong column names in Data Browser"
https://bugs.launchpad.net/dhis2/+bug/994079
For more details, see:
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+merge/219164
- Changed Translation to have uid of the translated object rather than the database id.
- Added an API for Translations. (Get all / Post )
- Making pwd validation optional for update user api
- Adding get user preference web api
--
The attached diff has been truncated due to its size.
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+merge/219164
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/AbstractCalendar.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/AbstractCalendar.java 2014-04-29 07:28:26 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/AbstractCalendar.java 2014-05-12 09:56:39 +0000
@@ -144,6 +144,24 @@
}
@Override
+ public DateInterval toInterval( DateIntervalType type )
+ {
+ return toInterval( today(), type );
+ }
+
+ @Override
+ public DateInterval toInterval( DateUnit dateUnit, DateIntervalType type )
+ {
+ return toInterval( dateUnit, type, 0, 1 );
+ }
+
+ @Override
+ public DateInterval toInterval( DateIntervalType type, int offset, int length )
+ {
+ return toInterval( today(), type, offset, length );
+ }
+
+ @Override
public DateUnit today()
{
DateTime dateTime = DateTime.now( ISOChronology.getInstance() );
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/Calendar.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/Calendar.java 2014-04-29 07:28:26 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/Calendar.java 2014-05-12 09:56:39 +0000
@@ -118,12 +118,42 @@
/**
* Gets interval of type based on DateUnit
* @param dateUnit DateUnit representing local year, month, day
+ * @param type Interval type to get
+ * @param offset Offset to start at, can be negative of positive
+ * @param length How many periods to asks for, i.e. type = MONTH, length = 2, two months
+ * @return Interval for interval type based on dateUnit
+ * @see DateIntervalType
+ */
+ DateInterval toInterval( DateUnit dateUnit, DateIntervalType type, int offset, int length );
+
+ /**
+ * Gets interval of type based on DateUnit using default options, 0 for offset, 1 for length
+ * @param dateUnit DateUnit representing local year, month, day
+ * @param type Interval type to get
* @return Interval for interval type based on dateUnit
* @see DateIntervalType
*/
DateInterval toInterval( DateUnit dateUnit, DateIntervalType type );
/**
+ * Gets interval of type based on today's date
+ * @param type Interval type to get
+ * @return Interval for interval type based on dateUnit
+ * @see DateIntervalType
+ */
+ DateInterval toInterval( DateIntervalType type );
+
+ /**
+ * Gets interval of type based on today's date
+ * @param type Interval type to get
+ * @param offset Offset to start at, can be negative of positive
+ * @param length How many periods to asks for, i.e. type = MONTH, length = 2, two months
+ * @return Interval for interval type based on dateUnit
+ * @see DateIntervalType
+ */
+ DateInterval toInterval( DateIntervalType type, int offset, int length );
+
+ /**
* Gets current date as local DateUnit
* @return Today date as local DateUnit
*/
@@ -221,4 +251,68 @@
* @see <a href="http://en.wikipedia.org/wiki/Internationalization_and_localization">http://en.wikipedia.org/wiki/Internationalization_and_localization</a>
*/
String shortNameOfDay( int day );
+
+ /**
+ * Returns a new dateUnit with specified number of days added
+ * @param dateUnit DateUnit representing local year, month, day
+ * @param days Days to add
+ * @return dateUnit + days
+ */
+ DateUnit plusDays( DateUnit dateUnit, int days );
+
+ /**
+ * Returns a new dateUnit with specified number of days subtracted
+ * @param dateUnit DateUnit representing local year, month, day
+ * @param days Days to subtract
+ * @return dateUnit - days
+ */
+ DateUnit minusDays( DateUnit dateUnit, int days );
+
+ /**
+ * Returns a new dateUnit with specified number of weeks added
+ * @param dateUnit DateUnit representing local year, month, day
+ * @param weeks Weeks to add
+ * @return dateUnit + weeks
+ */
+ DateUnit plusWeeks( DateUnit dateUnit, int weeks );
+
+ /**
+ * Returns a new dateUnit with specified number of weeks subtracted
+ * @param dateUnit DateUnit representing local year, month, day
+ * @param weeks Weeks to subtract
+ * @return dateUnit - weeks
+ */
+ DateUnit minusWeeks( DateUnit dateUnit, int weeks );
+
+ /**
+ * Returns a new dateUnit with specified number of months added
+ * @param dateUnit DateUnit representing local year, month, day
+ * @param months Months to add
+ * @return dateUnit + months
+ */
+ DateUnit plusMonths( DateUnit dateUnit, int months );
+
+ /**
+ * Returns a new dateUnit with specified number of months subtracted
+ * @param dateUnit DateUnit representing local year, month, day
+ * @param months Months to subtract
+ * @return dateUnit - months
+ */
+ DateUnit minusMonths( DateUnit dateUnit, int months );
+
+ /**
+ * Returns a new dateUnit with specified number of years added
+ * @param dateUnit DateUnit representing local year, month, day
+ * @param years Years to add
+ * @return dateUnit + years
+ */
+ DateUnit plusYears( DateUnit dateUnit, int years );
+
+ /**
+ * Returns a new dateUnit with specified number of years subtracted
+ * @param dateUnit DateUnit representing local year, month, day
+ * @param years Years to subtract
+ * @return dateUnit - years
+ */
+ DateUnit minusYears( DateUnit dateUnit, int years );
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/ChronologyBasedCalendar.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/ChronologyBasedCalendar.java 2014-04-27 02:45:02 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/ChronologyBasedCalendar.java 2014-05-12 09:56:39 +0000
@@ -62,51 +62,121 @@
}
@Override
- public DateInterval toInterval( DateUnit dateUnit, DateIntervalType type )
+ public DateInterval toInterval( DateUnit dateUnit, DateIntervalType type, int offset, int length )
{
switch ( type )
{
case ISO8601_YEAR:
- return toYearIsoInterval( dateUnit );
+ return toYearIsoInterval( dateUnit, offset, length );
case ISO8601_MONTH:
- return toMonthIsoInterval( dateUnit );
+ return toMonthIsoInterval( dateUnit, offset, length );
case ISO8601_WEEK:
- return toWeekIsoInterval( dateUnit );
+ return toWeekIsoInterval( dateUnit, offset, length );
+ case ISO8601_DAY:
+ return toDayIsoInterval( dateUnit, offset, length );
}
return null;
}
- private DateInterval toYearIsoInterval( DateUnit dateUnit )
- {
- DateUnit from = new DateUnit( dateUnit.getYear(), 1, 1 );
- DateUnit to = new DateUnit( dateUnit.getYear(), monthsInYear(), daysInMonth( dateUnit.getYear(), monthsInYear() ) );
-
- from.setDayOfWeek( isoWeekday( from ) );
- to.setDayOfWeek( isoWeekday( to ) );
-
- return new DateInterval( from, to, DateIntervalType.ISO8601_YEAR );
- }
-
- private DateInterval toMonthIsoInterval( DateUnit dateUnit )
- {
- DateUnit from = new DateUnit( dateUnit.getYear(), dateUnit.getMonth(), 1 );
- DateUnit to = new DateUnit( dateUnit.getYear(), dateUnit.getMonth(), daysInMonth( dateUnit.getYear(), dateUnit.getMonth() ) );
-
- from.setDayOfWeek( isoWeekday( from ) );
- to.setDayOfWeek( isoWeekday( to ) );
-
- return new DateInterval( from, to, DateIntervalType.ISO8601_MONTH );
- }
-
- private DateInterval toWeekIsoInterval( DateUnit dateUnit )
- {
- DateTime dateTime = new DateTime( dateUnit.getYear(), dateUnit.getMonth(), dateUnit.getDay(), 0, 0, chronology );
-
- DateTime from = dateTime.weekOfWeekyear().toInterval().getStart();
- DateTime to = dateTime.weekOfWeekyear().toInterval().getEnd().minusDays( 1 );
-
- return new DateInterval( DateUnit.fromDateTime( from ), DateUnit.fromDateTime( to ), DateIntervalType.ISO8601_WEEK );
+ private DateInterval toYearIsoInterval( DateUnit dateUnit, int offset, int length )
+ {
+ DateTime from = dateUnit.toDateTime( chronology );
+
+ if ( offset > 0 )
+ {
+ from = from.plusYears( offset );
+ }
+ else if ( offset < 0 )
+ {
+ from = from.minusYears( -offset );
+ }
+
+ DateTime to = new DateTime( from ).plusYears( length ).minusDays( 1 );
+
+ DateUnit fromDateUnit = DateUnit.fromDateTime( from );
+ DateUnit toDateUnit = DateUnit.fromDateTime( to );
+
+ fromDateUnit.setDayOfWeek( isoWeekday( fromDateUnit ) );
+ toDateUnit.setDayOfWeek( isoWeekday( toDateUnit ) );
+
+ return new DateInterval( toIso( fromDateUnit ), toIso( toDateUnit ),
+ DateIntervalType.ISO8601_YEAR );
+ }
+
+ private DateInterval toMonthIsoInterval( DateUnit dateUnit, int offset, int length )
+ {
+ DateTime from = dateUnit.toDateTime( chronology );
+
+ if ( offset > 0 )
+ {
+ from = from.plusMonths( offset );
+ }
+ else if ( offset < 0 )
+ {
+ from = from.minusMonths( -offset );
+ }
+
+ DateTime to = new DateTime( from ).plusMonths( length ).minusDays( 1 );
+
+ DateUnit fromDateUnit = DateUnit.fromDateTime( from );
+ DateUnit toDateUnit = DateUnit.fromDateTime( to );
+
+ fromDateUnit.setDayOfWeek( isoWeekday( fromDateUnit ) );
+ toDateUnit.setDayOfWeek( isoWeekday( toDateUnit ) );
+
+ return new DateInterval( toIso( fromDateUnit ), toIso( toDateUnit ),
+ DateIntervalType.ISO8601_MONTH );
+ }
+
+ private DateInterval toWeekIsoInterval( DateUnit dateUnit, int offset, int length )
+ {
+ DateTime from = dateUnit.toDateTime( chronology );
+
+ if ( offset > 0 )
+ {
+ from = from.plusWeeks( offset );
+ }
+ else if ( offset < 0 )
+ {
+ from = from.minusWeeks( -offset );
+ }
+
+ DateTime to = new DateTime( from ).plusWeeks( length ).minusDays( 1 );
+
+ DateUnit fromDateUnit = DateUnit.fromDateTime( from );
+ DateUnit toDateUnit = DateUnit.fromDateTime( to );
+
+ fromDateUnit.setDayOfWeek( isoWeekday( fromDateUnit ) );
+ toDateUnit.setDayOfWeek( isoWeekday( toDateUnit ) );
+
+ return new DateInterval( toIso( fromDateUnit ), toIso( toDateUnit ),
+ DateIntervalType.ISO8601_WEEK );
+ }
+
+ private DateInterval toDayIsoInterval( DateUnit dateUnit, int offset, int length )
+ {
+ DateTime from = dateUnit.toDateTime( chronology );
+
+ if ( offset > 0 )
+ {
+ from = from.plusDays( offset );
+ }
+ else if ( offset < 0 )
+ {
+ from = from.minusDays( -offset );
+ }
+
+ DateTime to = new DateTime( from ).plusDays( length );
+
+ DateUnit fromDateUnit = DateUnit.fromDateTime( from );
+ DateUnit toDateUnit = DateUnit.fromDateTime( to );
+
+ fromDateUnit.setDayOfWeek( isoWeekday( fromDateUnit ) );
+ toDateUnit.setDayOfWeek( isoWeekday( toDateUnit ) );
+
+ return new DateInterval( toIso( fromDateUnit ), toIso( toDateUnit ),
+ DateIntervalType.ISO8601_DAY );
}
@Override
@@ -164,4 +234,60 @@
DateTime dateTime = dateUnit.toDateTime( chronology );
return dateTime.getDayOfWeek();
}
+
+ @Override
+ public DateUnit plusDays( DateUnit dateUnit, int days )
+ {
+ DateTime dateTime = dateUnit.toDateTime( chronology );
+ return DateUnit.fromDateTime( dateTime.plusDays( days ) );
+ }
+
+ @Override
+ public DateUnit minusDays( DateUnit dateUnit, int days )
+ {
+ DateTime dateTime = dateUnit.toDateTime( chronology );
+ return DateUnit.fromDateTime( dateTime.minusDays( days ) );
+ }
+
+ @Override
+ public DateUnit plusWeeks( DateUnit dateUnit, int weeks )
+ {
+ DateTime dateTime = dateUnit.toDateTime( chronology );
+ return DateUnit.fromDateTime( dateTime.plusWeeks( weeks ) );
+ }
+
+ @Override
+ public DateUnit minusWeeks( DateUnit dateUnit, int weeks )
+ {
+ DateTime dateTime = dateUnit.toDateTime( chronology );
+ return DateUnit.fromDateTime( dateTime.minusWeeks( weeks ) );
+ }
+
+ @Override
+ public DateUnit plusMonths( DateUnit dateUnit, int months )
+ {
+ DateTime dateTime = dateUnit.toDateTime( chronology );
+ return DateUnit.fromDateTime( dateTime.plusMonths( months ) );
+ }
+
+ @Override
+ public DateUnit minusMonths( DateUnit dateUnit, int months )
+ {
+ DateTime dateTime = dateUnit.toDateTime( chronology );
+ return DateUnit.fromDateTime( dateTime.minusMonths( months ) );
+ }
+
+ @Override
+ public DateUnit plusYears( DateUnit dateUnit, int years )
+ {
+ DateTime dateTime = dateUnit.toDateTime( chronology );
+ return DateUnit.fromDateTime( dateTime.plusYears( years ) );
+ }
+
+ @Override
+ public DateUnit minusYears( DateUnit dateUnit, int years )
+ {
+ DateTime dateTime = dateUnit.toDateTime( chronology );
+ return DateUnit.fromDateTime( dateTime.minusYears( years ) );
+ }
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/DateIntervalType.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/DateIntervalType.java 2014-04-27 02:45:02 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/DateIntervalType.java 2014-05-12 09:56:39 +0000
@@ -37,5 +37,5 @@
* Gives interval for a year, month or week based on ISO 8601.
* @see <a href="http://en.wikipedia.org/wiki/ISO_8601">http://en.wikipedia.org/wiki/ISO_8601</a>
*/
- ISO8601_YEAR, ISO8601_MONTH, ISO8601_WEEK
+ ISO8601_YEAR, ISO8601_MONTH, ISO8601_WEEK, ISO8601_DAY
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/DateUnit.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/DateUnit.java 2014-05-05 08:08:38 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/DateUnit.java 2014-05-12 09:56:39 +0000
@@ -70,6 +70,14 @@
{
}
+ public DateUnit( DateUnit dateUnit )
+ {
+ this.year = dateUnit.getYear();
+ this.month = dateUnit.getMonth();
+ this.day = dateUnit.getDay();
+ this.dayOfWeek = dateUnit.getDayOfWeek();
+ }
+
public DateUnit( int year, int month, int day )
{
this.year = year;
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/impl/NepaliCalendar.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/impl/NepaliCalendar.java 2014-04-29 07:28:26 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/impl/NepaliCalendar.java 2014-05-12 09:56:39 +0000
@@ -94,65 +94,43 @@
DateTime start = startIso.toDateTime();
DateTime end = dateUnit.toDateTime();
- int days = Days.daysBetween( start, end ).getDays();
-
- int curYear = startNepal.getYear();
- int curMonth = startNepal.getMonth();
- int curDay = startNepal.getDay();
- int dayOfWeek = startNepal.getDayOfWeek();
-
- while ( days != 0 )
- {
- // days in month
- int dm = conversionMap.get( curYear )[curMonth];
-
- curDay++;
-
- if ( curDay > dm )
- {
- curMonth++;
- curDay = 1;
- }
-
- if ( curMonth > 12 )
- {
- curYear++;
- curMonth = 1;
- }
-
- dayOfWeek++;
-
- if ( dayOfWeek > 7 )
- {
- dayOfWeek = 1;
- }
-
- days--;
- }
-
- return new DateUnit( curYear, curMonth, curDay, dayOfWeek );
+ return plusDays( startNepal, Days.daysBetween( start, end ).getDays() );
}
@Override
- public DateInterval toInterval( DateUnit dateUnit, DateIntervalType type )
+ public DateInterval toInterval( DateUnit dateUnit, DateIntervalType type, int offset, int length )
{
switch ( type )
{
case ISO8601_YEAR:
- return toYearIsoInterval( dateUnit );
+ return toYearIsoInterval( dateUnit, offset, length );
case ISO8601_MONTH:
- return toMonthIsoInterval( dateUnit );
+ return toMonthIsoInterval( dateUnit, offset, length );
case ISO8601_WEEK:
- return toWeekIsoInterval( dateUnit );
+ return toWeekIsoInterval( dateUnit, offset, length );
+ case ISO8601_DAY:
+ return toDayIsoInterval( dateUnit, offset, length );
}
return null;
}
- private DateInterval toYearIsoInterval( DateUnit dateUnit )
+ private DateInterval toYearIsoInterval( DateUnit dateUnit, int offset, int length )
{
- DateUnit from = new DateUnit( dateUnit.getYear(), 1, 1 );
- DateUnit to = new DateUnit( dateUnit.getYear(), monthsInYear(), daysInMonth( dateUnit.getYear(), monthsInYear() ) );
+ DateUnit from = new DateUnit( dateUnit );
+
+ if ( offset > 0 )
+ {
+ from = plusYears( from, offset );
+ }
+ else if ( offset < 0 )
+ {
+ from = minusYears( from, -offset );
+ }
+
+ DateUnit to = new DateUnit( from );
+ to = plusYears( to, length );
+ to = minusDays( to, length );
from = toIso( from );
to = toIso( to );
@@ -160,10 +138,22 @@
return new DateInterval( from, to, DateIntervalType.ISO8601_YEAR );
}
- private DateInterval toMonthIsoInterval( DateUnit dateUnit )
+ private DateInterval toMonthIsoInterval( DateUnit dateUnit, int offset, int length )
{
- DateUnit from = new DateUnit( dateUnit.getYear(), dateUnit.getMonth(), 1 );
- DateUnit to = new DateUnit( dateUnit.getYear(), dateUnit.getMonth(), daysInMonth( dateUnit.getYear(), dateUnit.getMonth() ) );
+ DateUnit from = new DateUnit( dateUnit );
+
+ if ( offset > 0 )
+ {
+ from = plusMonths( from, offset );
+ }
+ else if ( offset < 0 )
+ {
+ from = minusMonths( from, -offset );
+ }
+
+ DateUnit to = new DateUnit( from );
+ to = plusMonths( to, length );
+ to = minusDays( to, 1 );
from = toIso( from );
to = toIso( to );
@@ -171,14 +161,49 @@
return new DateInterval( from, to, DateIntervalType.ISO8601_MONTH );
}
- private DateInterval toWeekIsoInterval( DateUnit dateUnit )
- {
- DateTime dateTime = toIso( dateUnit ).toDateTime();
-
- DateTime from = dateTime.weekOfWeekyear().toInterval().getStart();
- DateTime to = dateTime.weekOfWeekyear().toInterval().getEnd().minusDays( 1 );
-
- return new DateInterval( DateUnit.fromDateTime( from ), DateUnit.fromDateTime( to ), DateIntervalType.ISO8601_WEEK );
+ private DateInterval toWeekIsoInterval( DateUnit dateUnit, int offset, int length )
+ {
+ DateUnit from = new DateUnit( dateUnit );
+
+ if ( offset > 0 )
+ {
+ from = plusWeeks( from, offset );
+ }
+ else if ( offset < 0 )
+ {
+ from = minusWeeks( from, -offset );
+ }
+
+ DateUnit to = new DateUnit( from );
+ to = plusWeeks( to, length );
+ to = minusDays( to, 1 );
+
+ from = toIso( from );
+ to = toIso( to );
+
+ return new DateInterval( from, to, DateIntervalType.ISO8601_WEEK );
+ }
+
+ private DateInterval toDayIsoInterval( DateUnit dateUnit, int offset, int length )
+ {
+ DateUnit from = new DateUnit( dateUnit );
+
+ if ( offset > 0 )
+ {
+ from = plusDays( from, offset );
+ }
+ else if ( offset < 0 )
+ {
+ from = minusDays( from, -offset );
+ }
+
+ DateUnit to = new DateUnit( from );
+ to = plusDays( to, length );
+
+ from = toIso( from );
+ to = toIso( to );
+
+ return new DateInterval( from, to, DateIntervalType.ISO8601_DAY );
}
@Override
@@ -284,6 +309,174 @@
return conversionMap.get( year )[0];
}
+ @Override
+ public DateUnit minusYears( DateUnit dateUnit, int years )
+ {
+ DateUnit result = new DateUnit( dateUnit.getYear() - years, dateUnit.getMonth(), dateUnit.getDay(), dateUnit.getDayOfWeek() );
+ updateDateUnit( result );
+
+ return result;
+ }
+
+ @Override
+ public DateUnit minusMonths( DateUnit dateUnit, int months )
+ {
+ DateUnit result = new DateUnit( dateUnit );
+
+ while ( months != 0 )
+ {
+ result.setMonth( result.getMonth() - 1 );
+
+ if ( result.getMonth() < 1 )
+ {
+ result.setMonth( monthsInYear() );
+ result.setYear( result.getYear() - 1 );
+ }
+
+ months--;
+ }
+
+ updateDateUnit( result );
+
+ return result;
+ }
+
+ @Override
+ public DateUnit minusWeeks( DateUnit dateUnit, int weeks )
+ {
+ return minusDays( dateUnit, weeks * daysInWeek() );
+ }
+
+ @Override
+ public DateUnit minusDays( DateUnit dateUnit, int days )
+ {
+ int curYear = dateUnit.getYear();
+ int curMonth = dateUnit.getMonth();
+ int curDay = dateUnit.getDay();
+ int dayOfWeek = dateUnit.getDayOfWeek();
+
+ while ( days != 0 )
+ {
+ curDay--;
+
+ if ( curDay == 0 )
+ {
+ curMonth--;
+
+ if ( curMonth == 0 )
+ {
+ curYear--;
+ curMonth = 12;
+ }
+
+ curDay = conversionMap.get( curYear )[curMonth];
+ }
+
+ dayOfWeek--;
+
+ if ( dayOfWeek == 0 )
+ {
+ dayOfWeek = 7;
+ }
+
+ days--;
+ }
+
+ return new DateUnit( curYear, curMonth, curDay, dayOfWeek );
+ }
+
+ @Override
+ public DateUnit plusYears( DateUnit dateUnit, int years )
+ {
+ DateUnit result = new DateUnit( dateUnit.getYear() + years, dateUnit.getMonth(), dateUnit.getDay(), dateUnit.getDayOfWeek() );
+ updateDateUnit( result );
+
+ return result;
+ }
+
+ @Override
+ public DateUnit plusMonths( DateUnit dateUnit, int months )
+ {
+ DateUnit result = new DateUnit( dateUnit );
+
+ while ( months != 0 )
+ {
+ result.setMonth( result.getMonth() + 1 );
+
+ if ( result.getMonth() > monthsInYear() )
+ {
+ result.setMonth( 1 );
+ result.setYear( result.getYear() + 1 );
+ }
+
+ months--;
+ }
+
+ updateDateUnit( result );
+
+ return result;
+ }
+
+ @Override
+ public DateUnit plusWeeks( DateUnit dateUnit, int weeks )
+ {
+ return plusDays( dateUnit, weeks * daysInWeek() );
+ }
+
+ @Override
+ public DateUnit plusDays( DateUnit dateUnit, int days )
+ {
+ int curYear = dateUnit.getYear();
+ int curMonth = dateUnit.getMonth();
+ int curDay = dateUnit.getDay();
+ int dayOfWeek = dateUnit.getDayOfWeek();
+
+ while ( days != 0 )
+ {
+ // days in month
+ int dm = conversionMap.get( curYear )[curMonth];
+
+ curDay++;
+
+ if ( curDay > dm )
+ {
+ curMonth++;
+ curDay = 1;
+ }
+
+ if ( curMonth > 12 )
+ {
+ curYear++;
+ curMonth = 1;
+ }
+
+ dayOfWeek++;
+
+ if ( dayOfWeek > 7 )
+ {
+ dayOfWeek = 1;
+ }
+
+ days--;
+ }
+
+ return new DateUnit( curYear, curMonth, curDay, dayOfWeek );
+ }
+
+ // check if day is more than current maximum for month, don't overflow, just set to maximum
+ // set day of week
+ private void updateDateUnit( DateUnit result )
+ {
+ int dm = conversionMap.get( result.getYear() )[result.getMonth()];
+
+ if ( result.getDay() > dm )
+ {
+ result.setDay( dm );
+ }
+
+ result.setDayOfWeek( weekday( result ) );
+ }
+
//------------------------------------------------------------------------------------------------------------
// Conversion map for Nepali calendar
//
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryFilter.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryFilter.java 2014-04-21 11:05:22 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryFilter.java 2014-05-12 09:56:39 +0000
@@ -1,8 +1,5 @@
package org.hisp.dhis.common;
-import java.util.HashMap;
-import java.util.Map;
-
/*
* Copyright (c) 2004-2014, University of Oslo
* All rights reserved.
@@ -31,6 +28,9 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @author Lars Helge Overland
*/
@@ -38,18 +38,18 @@
{
public static final String OPTION_SEP = ";";
- public static final Map<String, String> OPERATOR_MAP = new HashMap<String, String>() { {
- put( "eq", "=" );
- put( "gt", ">" );
- put( "ge", ">=" );
- put( "lt", "<" );
- put( "le", "<=" );
- put( "ne", "!=" );
- put( "like", "like" );
- put( "in", "in" );
+ public static final Map<QueryOperator, String> OPERATOR_MAP = new HashMap<QueryOperator, String>() { {
+ put( QueryOperator.EQ, "=" );
+ put( QueryOperator.GT, ">" );
+ put( QueryOperator.GE, ">=" );
+ put( QueryOperator.LT, "<" );
+ put( QueryOperator.LE, "<=" );
+ put( QueryOperator.NE, "!=" );
+ put( QueryOperator.LIKE, "like" );
+ put( QueryOperator.IN, "in" );
} };
- protected String operator;
+ protected QueryOperator operator;
protected String filter;
@@ -61,7 +61,7 @@
{
}
- public QueryFilter( String operator, String filter )
+ public QueryFilter( QueryOperator operator, String filter )
{
this.operator = operator;
this.filter = filter;
@@ -73,7 +73,7 @@
public boolean isFilter()
{
- return operator != null && !operator.isEmpty() && filter != null && !filter.isEmpty();
+ return operator != null && filter != null && !filter.isEmpty();
}
public String getSqlOperator()
@@ -83,7 +83,7 @@
return null;
}
- return OPERATOR_MAP.get( operator.toLowerCase() );
+ return OPERATOR_MAP.get( operator );
}
public String getSqlFilter( String encodedFilter )
@@ -92,12 +92,12 @@
{
return null;
}
-
- if ( operator.equalsIgnoreCase( "like" ) )
+
+ if ( QueryOperator.LIKE.equals( operator ) )
{
return "'%" + encodedFilter + "%'";
}
- else if ( operator.equalsIgnoreCase( "in" ) )
+ else if ( QueryOperator.IN.equals( operator ) )
{
String[] split = encodedFilter.split( OPTION_SEP );
@@ -185,12 +185,12 @@
// Getters and setters
// -------------------------------------------------------------------------
- public String getOperator()
+ public QueryOperator getOperator()
{
return operator;
}
- public void setOperator( String operator )
+ public void setOperator( QueryOperator operator )
{
this.operator = operator;
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryItem.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryItem.java 2014-04-21 11:05:22 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryItem.java 2014-05-12 09:56:39 +0000
@@ -61,7 +61,7 @@
this.numeric = numeric;
}
- public QueryItem( IdentifiableObject item, String operator, String filter, boolean numeric )
+ public QueryItem( IdentifiableObject item, QueryOperator operator, String filter, boolean numeric )
{
this.item = item;
this.numeric = numeric;
=== added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryOperator.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryOperator.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryOperator.java 2014-05-12 09:56:39 +0000
@@ -0,0 +1,16 @@
+package org.hisp.dhis.common;
+
+public enum QueryOperator
+{
+ EQ, GT, GE, LT, LE, NE, LIKE, IN;
+
+ public static final QueryOperator fromString( String string )
+ {
+ if ( string == null || string.isEmpty() )
+ {
+ return null;
+ }
+
+ return valueOf( string.toUpperCase() );
+ }
+}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStage.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStage.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStage.java 2014-05-12 09:56:39 +0000
@@ -180,6 +180,9 @@
this.reminders = reminders;
}
+ @JsonProperty
+ @JsonView( { DetailedView.class, ExportView.class } )
+ @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
public DataEntryForm getDataEntryForm()
{
return dataEntryForm;
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java 2014-05-12 09:56:39 +0000
@@ -146,25 +146,6 @@
List<ProgramStageInstance> getProgramStageInstances( TrackedEntityInstance entityInstance, Boolean completed );
/**
- * Get an event report of program instance
- *
- * @param programInstance ProgramInstance
- * @param format I18nFormat object
- * @param i18n I18n object
- *
- * @return List of grids. Each grid is included all information of a event
- */
- List<Grid> getProgramStageInstancesReport( ProgramInstance programInstance, I18nFormat format, I18n i18n );
-
- /**
- * Remove events without any data values
- *
- * @param programStage Empty events belong to this program stage are removed
- * @param organisationUnit Specify an orgunit where empty events belong to
- */
- void removeEmptyEvents( ProgramStage programStage, OrganisationUnit organisationUnit );
-
- /**
* Create relationship between an OutboundSms with many events.
*
* @param programStageInstances Event list
@@ -337,11 +318,4 @@
*/
ProgramStageInstance createProgramStageInstance( TrackedEntityInstance entityInstance, Program program, Date executionDate,
OrganisationUnit organisationUnit );
-
- Grid searchEvents( ProgramStage programStage, List<TabularEventColumn> columns,
- Collection<Integer> organisationUnits, Date startDate, Date endDate, Boolean completed, Integer min,
- Integer max, I18n i18n );
-
- int searchEventsCount( ProgramStage programStage, List<TabularEventColumn> columns,
- Collection<Integer> organisationUnits, Boolean completed, Date startDate, Date endDate );
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java 2014-05-12 09:56:39 +0000
@@ -35,7 +35,6 @@
import org.hisp.dhis.common.GenericIdentifiableObjectStore;
import org.hisp.dhis.common.Grid;
import org.hisp.dhis.i18n.I18n;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.sms.outbound.OutboundSms;
import org.hisp.dhis.trackedentity.TrackedEntityInstance;
@@ -102,14 +101,6 @@
List<ProgramStageInstance> get( TrackedEntityInstance entityInstance, Boolean completed );
/**
- * Remove events without any data values
- *
- * @param programStage Empty events belong to this program stage are removed
- * @param organisationUnit Specify an orgunit where empty events belong to
- */
- void removeEmptyEvents( ProgramStage programStage, OrganisationUnit organisationUnit );
-
- /**
* Create relationship between an OutboundSms with many events.
*
* @param programStageInstances Event list
@@ -245,41 +236,4 @@
* @return Grid
*/
Grid getCompleteness( Collection<Integer> orgunitIds, Program program, String startDate, String endDate, I18n i18n );
-
- /**
- * Search {@link ProgramStageInstance} by criteria with result limited
- *
- * @param programStage {@link ProgramStage} needs for searching events
- * @param orgUnits List of {@link OrganisationUnit} ids
- * @param columns The criteria for searching
- * @param startDate Report date the instance should be on or after.
- * @param endDate Report date the instance should be on or before.
- * @param completed The status of events. There are three status values,
- * NULL for retrieving all events, false for retrieving events
- * uncompleted and true for retrieving events completed.
- * @param min
- * @param max
- * @param i18n
- *
- * @return A grid
- */
- Grid searchEvent( ProgramStage programStage, Collection<Integer> orgUnits, List<TabularEventColumn> columns,
- Date startDate, Date endDate, Boolean completed, Integer min, Integer max, I18n i18n );
-
- /**
- * Search {@link ProgramStageInstance} by criteria
- *
- * @param programStage {@link ProgramStage} needs for searching events
- * @param orgUnits List of {@link OrganisationUnit} ids
- * @param columns The criteria for searching
- * @param startDate Report date the instance should be on or after.
- * @param endDate Report date the instance should be on or before.
- * @param completed The status of events. There are three status values,
- * NULL for retrieving all events, false for retrieving events
- * uncompleted and true for retrieving events completed.
- *
- * @return The number of events
- */
- int searchEventsCount( ProgramStage programStage, List<TabularEventColumn> columns,
- Collection<Integer> organisationUnits, Date startDate, Date endDate, Boolean completed );
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceQueryParams.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceQueryParams.java 2014-04-21 11:05:22 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceQueryParams.java 2014-05-12 09:56:39 +0000
@@ -159,8 +159,30 @@
// -------------------------------------------------------------------------
/**
- * //TODO allow attributes only once and allow multiple filters per item
- *
+ * Adds a query item as attribute to the parameters.
+ */
+ public void addAttribute( QueryItem attribute )
+ {
+ this.attributes.add( attribute );
+ }
+
+ /**
+ * Adds a query item as filter to the parameters.
+ */
+ public void addFilter( QueryItem filter )
+ {
+ this.filters.add( filter );
+ }
+
+ /**
+ * Adds an organisation unit to the parameters.
+ */
+ public void addOrganisationUnit( OrganisationUnit unit )
+ {
+ this.organisationUnits.add( unit );
+ }
+
+ /**
* Performs a set of operations on this params.
*
* <ul>
@@ -210,8 +232,35 @@
return setMap;
}
+
+ /**
+ * Add the given attributes to this params if they are not already present.
+ */
+ public void addAttributesIfNotExist( List<QueryItem> attrs )
+ {
+ for ( QueryItem attr : attrs )
+ {
+ if ( attributes != null && !attributes.contains( attr ) )
+ {
+ attributes.add( attr );
+ }
+ }
+ }
/**
+ * Adds the given filters to this params if they are not already present.
+ */
+ public void addFiltersIfNotExist( List<QueryItem> filtrs )
+ {
+ for ( QueryItem filter : filtrs )
+ {
+ if ( filters != null && !filters.contains( filter ) )
+ {
+ filters.add( filter );
+ }
+ }
+ }
+ /**
* Indicates whether this is a logical OR query, meaning that a query string
* is specified and instances which matches this query on one or more attributes
* should be included in the response. The opposite is an item-specific query,
@@ -278,35 +327,7 @@
return duplicates;
}
-
- /**
- * Add the given attributes to this params if they are not already present.
- */
- public void addAttributesIfNotExist( List<QueryItem> attrs )
- {
- for ( QueryItem attr : attrs )
- {
- if ( attributes != null && !attributes.contains( attr ) )
- {
- attributes.add( attr );
- }
- }
- }
-
- /**
- * Adds the given filters to this params if they are not already present.
- */
- public void addFiltersIfNotExist( List<QueryItem> filtrs )
- {
- for ( QueryItem filter : filtrs )
- {
- if ( filters != null && !filters.contains( filter ) )
- {
- filters.add( filter );
- }
- }
- }
-
+
/**
* Indicates whether this params specifies any attributes and/or filters.
*/
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceService.java 2014-05-04 14:04:41 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceService.java 2014-05-12 09:56:39 +0000
@@ -45,6 +45,49 @@
import org.hisp.dhis.validation.ValidationCriteria;
/**
+ * <p>This interface is responsible for retrieving tracked entity instances (TEI).
+ * The query methods accepts a TrackedEntityInstanceQueryParams object which
+ * encapsulates all arguments.</p>
+ *
+ * <p>The TEIs are returned as a Grid object, which is a two-dimensional list with
+ * headers. The TEI attribute values are returned in the same order as specified
+ * in the arguments. The grid has a set of columns which are always present
+ * starting at index 0, followed by attributes specified for the query. All
+ * values in the grid are of type String. The order is:</p>
+ *
+ * <ul>
+ * <li>0: Tracked entity instance UID</li>
+ * <li>1: Created time stamp</li>
+ * <li>2: Last updated time stamp</li>
+ * <li>3: Organisation unit UID</li>
+ * <li>4: Tracked entity UID</li>
+ * <ul>
+ *
+ * <p>Attributes specified in the query follows on the next column indexes.
+ * Example usage for retrieving TEIs with two attributes using one attribute as
+ * filter:</p>
+ *
+ * <pre>
+ * <code>
+ * TrackedEntityInstanceQueryParams params = new TrackedEntityInstanceQueryParams();
+ *
+ * params.addAttribute( new QueryItem( gender, QueryOperator.EQ, "Male", false ) );
+ * params.addAttribute( new QueryItem( age, QueryOperator.LT, "5", true ) );
+ * params.addFilter( new QueryItem( weight, QueryOperator.GT, "2500", true ) );
+ * params.addOrganistionUnit( unit );
+ *
+ * Grid instances = teiService.getTrackedEntityInstances( params );
+ *
+ * for ( List<Object> row : instances.getRows() )
+ * {
+ * String tei = row.get( 0 );
+ * String ou = row.get( 3 );
+ * String gender = row.get( 5 );
+ * String age = row.get( 6 );
+ * }
+ * </code>
+ * </pre>
+ *
* @author Abyot Asalefew Gizaw
*/
public interface TrackedEntityInstanceService
@@ -154,7 +197,7 @@
* @return a collection of all TrackedEntityInstance, or an empty collection
* if there are no TrackedEntityInstances.
*/
- Collection<TrackedEntityInstance> getAllTrackedEntityInstances();
+ //Collection<TrackedEntityInstance> getAllTrackedEntityInstances();
/**
* Retrieve entityInstances for mobile base on identifier value
@@ -184,7 +227,7 @@
* @param program Program
* @return TrackedEntityInstance list
*/
- Collection<TrackedEntityInstance> getTrackedEntityInstances( Program program );
+ //Collection<TrackedEntityInstance> getTrackedEntityInstances( Program program );
/**
* Retrieve entityInstances registered in a orgunit and enrolled into a
@@ -194,16 +237,7 @@
* @param program
* @return
*/
- Collection<TrackedEntityInstance> getTrackedEntityInstances( OrganisationUnit organisationUnit, Program program );
-
- /**
- * Retrieve entityInstances base on Attribute
- *
- * @param attributeId
- * @param value
- * @return
- */
- Collection<TrackedEntityInstance> getTrackedEntityInstance( Integer attributeId, String value );
+ //Collection<TrackedEntityInstance> getTrackedEntityInstances( OrganisationUnit organisationUnit, Program program );
/**
* Search entityInstances base on OrganisationUnit and Program with result
@@ -225,8 +259,7 @@
* @param attribute
* @return TrackedEntityInstance List
*/
- Collection<TrackedEntityInstance> sortTrackedEntityInstancesByAttribute(
- Collection<TrackedEntityInstance> entityInstances, TrackedEntityAttribute attribute );
+ //Collection<TrackedEntityInstance> sortTrackedEntityInstancesByAttribute( Collection<TrackedEntityInstance> entityInstances, TrackedEntityAttribute attribute );
/**
* Get entityInstances who has the same representative
@@ -241,13 +274,13 @@
* Register a new entityInstance
*
* @param entityInstance TrackedEntityInstance
- * @param representativeId The id of entityInstance who is representative
+ * @param representativeId The uid of entityInstance who is representative
* @param relationshipTypeId The id of relationship type defined
* @param attributeValues Set of attribute values
*
* @return The error code after registering entityInstance
*/
- int createTrackedEntityInstance( TrackedEntityInstance entityInstance, Integer representativeId,
+ int createTrackedEntityInstance( TrackedEntityInstance entityInstance, String representativeId,
Integer relationshipTypeId, Set<TrackedEntityAttributeValue> attributeValues );
/**
@@ -261,7 +294,7 @@
* @param valuesForDelete The entityInstance attribute values for deleting
*
*/
- void updateTrackedEntityInstance( TrackedEntityInstance entityInstance, Integer representativeId,
+ void updateTrackedEntityInstance( TrackedEntityInstance entityInstance, String representativeId,
Integer relationshipTypeId, List<TrackedEntityAttributeValue> valuesForSave,
List<TrackedEntityAttributeValue> valuesForUpdate, Collection<TrackedEntityAttributeValue> valuesForDelete );
@@ -273,7 +306,7 @@
*
* @return The number of entityInstances
*/
- int countGetTrackedEntityInstancesByOrgUnit( OrganisationUnit organisationUnit );
+ //int countGetTrackedEntityInstancesByOrgUnit( OrganisationUnit organisationUnit );
/**
* Get the number of entityInstances who registered into an organisation
@@ -284,7 +317,7 @@
*
* @return The number of entityInstances
*/
- int countGetTrackedEntityInstancesByOrgUnitProgram( OrganisationUnit organisationUnit, Program program );
+ //int countGetTrackedEntityInstancesByOrgUnitProgram( OrganisationUnit organisationUnit, Program program );
/**
* Cache value from String to the value type based on property
@@ -298,26 +331,6 @@
Object getObjectValue( String property, String value, I18nFormat format );
/**
- * Get events which meet the criteria for searching
- *
- * @param searchKeys The key for searching entityInstances by attribute
- * values and/or a program
- * @param orgunit Organisation unit where entityInstances registered
- * @param followup Only getting entityInstances with program risked if this
- * property is true. And getting entityInstances without program
- * risked if its value is false
- * @param statusEnrollment The status of program of entityInstances. There
- * are three status, includes Active enrollments only, Completed
- * enrollments only and Active and completed enrollments
- * @parma min
- * @param max
- *
- * @return List of entityInstance
- */
- List<Integer> getProgramStageInstances( List<String> searchKeys, Collection<OrganisationUnit> orgunit,
- Boolean followup, Integer statusEnrollment, Integer min, Integer max );
-
- /**
* Search entityInstances by phone number (performs partial search)
*
* @param phoneNumber The string for searching by phone number
@@ -326,7 +339,7 @@
*
* @return List of entityInstance
*/
- Collection<TrackedEntityInstance> getTrackedEntityInstancesByPhone( String phoneNumber, Integer min, Integer max );
+ //Collection<TrackedEntityInstance> getTrackedEntityInstancesByPhone( String phoneNumber, Integer min, Integer max );
/**
* Validate entityInstance attributes and validation criteria by program
@@ -364,8 +377,7 @@
* @return TrackedEntityInstance List
*/
- Collection<TrackedEntityInstance> searchTrackedEntityInstancesForMobile( String searchText, int orgUnitId,
- int attributeId );
+ Collection<TrackedEntityInstance> searchTrackedEntityInstancesForMobile( String searchText, int orgUnitId, int attributeId );
/**
* Search entityInstances by entityInstance attribute value (performs
@@ -378,50 +390,8 @@
*
* @return List of TrackedEntityInstance
*/
- Collection<TrackedEntityInstance> getTrackedEntityInstancesByAttributeValue( String searchText, int attributeId,
- Integer min, Integer max );
-
- /**
- * Search entityInstances by attribute values and/or a program which
- * entityInstances enrolled into
- *
- * @param searchKeys The key for searching entityInstances by attribute
- * values, identifiers and/or a program
- * @param orgunit Organisation unit where entityInstances registered
- * @param followup Only getting entityInstances with program risked if this
- * property is true. And getting entityInstances without program
- * risked if its value is false
- * @param attributes The attribute values of these attribute are displayed
- * into result
- * @param statusEnrollment The status of program of entityInstances. There
- * are three status, includes Active enrollments only, Completed
- * enrollments only and Active and completed enrollments
- * @param min
- * @param max
- *
- * @return An object
- */
- Collection<TrackedEntityInstance> searchTrackedEntityInstances( List<String> searchKeys,
- Collection<OrganisationUnit> orgunit, Boolean followup, Collection<TrackedEntityAttribute> attributes,
- Integer statusEnrollment, Integer min, Integer max );
-
- /**
- * Get the number of entityInstances who meet the criteria for searching
- *
- * @param searchKeys The key for searching entityInstances by attribute
- * values and/or a program
- * @param orgunit Organisation unit where entityInstances registered
- * @param followup Only getting entityInstances with program risked if this
- * property is true. And getting entityInstances without program
- * risked if its value is false
- * @param statusEnrollment The status of program of entityInstances. There
- * are three status, includes Active enrollments only, Completed
- * enrollments only and Active and completed enrollments
- *
- * @return The number of entityInstances
- */
- int countSearchTrackedEntityInstances( List<String> searchKeys, Collection<OrganisationUnit> orgunit,
- Boolean followup, Integer statusEnrollment );
+ //Collection<TrackedEntityInstance> getTrackedEntityInstancesByAttributeValue( String searchText, int attributeId, Integer min, Integer max );
+
/**
* Get entityInstances by {@link TrackedEntity}
*
@@ -430,5 +400,4 @@
* @return List of entityInstance
*/
Collection<TrackedEntityInstance> getTrackedEntityInstances( TrackedEntity trackedEntity );
-
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStore.java 2014-05-04 14:04:41 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStore.java 2014-05-12 09:56:39 +0000
@@ -79,8 +79,7 @@
*
* @return List of entityInstances
*/
- Collection<TrackedEntityInstance> getByOrgUnitProgram( OrganisationUnit organisationUnit, Program program,
- Integer min, Integer max );
+ Collection<TrackedEntityInstance> getByOrgUnitProgram( OrganisationUnit organisationUnit, Program program, Integer min, Integer max );
/**
* Search instances who has the same representative
@@ -99,7 +98,7 @@
*
* @return The number of entityInstances
*/
- int countListTrackedEntityInstanceByOrgunit( OrganisationUnit organisationUnit );
+ //int countListTrackedEntityInstanceByOrgunit( OrganisationUnit organisationUnit );
/**
* Get the number of entityInstances who registered into a certain
@@ -113,7 +112,7 @@
*
* @return The number of entityInstances
*/
- int countGetTrackedEntityInstancesByOrgUnitProgram( OrganisationUnit organisationUnit, Program program );
+ //int countGetTrackedEntityInstancesByOrgUnitProgram( OrganisationUnit organisationUnit, Program program );
/**
* Search entityInstances by phone number (performs partial search)
@@ -127,29 +126,6 @@
Collection<TrackedEntityInstance> getByPhoneNumber( String phoneNumber, Integer min, Integer max );
/**
- * Search events which meet the criteria for searching
- *
- * @param searchKeys The key for searching entityInstances by attribute
- * values and/or a program
- * @param orgunit Organisation unit where entityInstances registered
- * @param followup Only getting entityInstances with program risked if this
- * property is true. And getting entityInstances without program
- * risked if its value is false
- * @param attributes The attribute values of these attribute are displayed
- * into result
- * @param statusEnrollment The status of program of entityInstances. There
- * are three status, includes Active enrollments only, Completed
- * enrollments only and Active and completed enrollments
- * @param min
- * @param max
- *
- * @return List of entityInstances
- */
- List<Integer> getProgramStageInstances( List<String> searchKeys, Collection<OrganisationUnit> orgunits,
- Boolean followup, Collection<TrackedEntityAttribute> attributes, Integer statusEnrollment, Integer min,
- Integer max );
-
- /**
* Search entityInstances who enrolled into a program with active status
*
* @param program Program
@@ -158,7 +134,7 @@
*
* return List of entityInstances
*/
- Collection<TrackedEntityInstance> getByProgram( Program program, Integer min, Integer max );
+ //Collection<TrackedEntityInstance> getByProgram( Program program, Integer min, Integer max );
/**
* Validate entity-instances attribute values and validation criteria by
@@ -198,48 +174,6 @@
*/
Collection<TrackedEntityInstance> getByAttributeValue( String searchText, int attributeId, Integer min, Integer max );
- /**
- * Search entityInstances by attribute values and/or a program which
- * entityInstances enrolled into
- *
- * @param searchKeys The key for searching entityInstances by attribute
- * values, identifiers and/or a program
- * @param orgunit Organisation unit where entityInstances registered
- * @param followup Only getting entityInstances with program risked if this
- * property is true. And getting entityInstances without program
- * risked if its value is false
- * @param attributes The attribute values of these attribute are displayed
- * into result
- * @param statusEnrollment The status of program of entityInstances. There
- * are three status, includes Active enrollments only, Completed
- * enrollments only and Active and completed enrollments
- * @param min
- * @param max
- *
- * @return An object
- */
- Collection<TrackedEntityInstance> search( List<String> searchKeys, Collection<OrganisationUnit> orgunits,
- Boolean followup, Collection<TrackedEntityAttribute> attributes, Integer statusEnrollment, Integer min,
- Integer max );
-
- /**
- * Get the number of entityInstances who meet the criteria for searching
- *
- * @param searchKeys The key for searching entityInstances by attribute
- * values and/or a program
- * @param orgunit Organisation unit where entityInstances registered
- * @param followup Only getting entityInstances with program risked if this
- * property is true. And getting entityInstances without program
- * risked if its value is false
- * @param statusEnrollment The status of program of entityInstances. There
- * are three status, includes Active enrollments only, Completed
- * enrollments only and Active and completed enrollments
- *
- * @return The number of entityInstances
- */
- int countSearch( List<String> searchKeys, Collection<OrganisationUnit> orgunits, Boolean followup,
- Integer statusEnrollment );
-
/**
* Get entityInstances by {@link TrackedEntity}
*
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsTable.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsTable.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsTable.java 2014-05-12 09:56:39 +0000
@@ -45,7 +45,11 @@
private Period period;
private Program program;
-
+
+ // -------------------------------------------------------------------------
+ // Constructors
+ // -------------------------------------------------------------------------
+
public AnalyticsTable()
{
}
@@ -70,7 +74,11 @@
this.period = period;
this.program = program;
}
-
+
+ // -------------------------------------------------------------------------
+ // Logic
+ // -------------------------------------------------------------------------
+
public String getTableName()
{
String name = baseName;
@@ -104,13 +112,27 @@
return name;
}
+
+ public boolean hasPeriod()
+ {
+ return period != null;
+ }
+
+ public boolean hasProgram()
+ {
+ return program != null;
+ }
@Override
public String toString()
{
return getTableName();
}
-
+
+ // -------------------------------------------------------------------------
+ // Getters and setters
+ // -------------------------------------------------------------------------
+
public String getBaseName()
{
return baseName;
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventAnalyticsService.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventAnalyticsService.java 2014-03-27 11:13:02 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventAnalyticsService.java 2014-05-12 09:56:39 +0000
@@ -49,7 +49,8 @@
* Used for aggregate query.
*/
EventQueryParams getFromUrl( String program, String stage, String startDate, String endDate,
- Set<String> dimension, Set<String> filter, boolean skipMeta, boolean hierarchyMeta, SortOrder sortOrder, Integer limit, I18nFormat format );
+ Set<String> dimension, Set<String> filter, boolean skipMeta, boolean hierarchyMeta, SortOrder sortOrder,
+ Integer limit, boolean uniqueInstances, I18nFormat format );
/**
* Used for event query.
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java 2014-04-21 14:52:46 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java 2014-05-12 09:56:39 +0000
@@ -80,6 +80,8 @@
private Integer limit;
+ private boolean uniqueInstances;
+
private boolean coordinatesOnly;
// -------------------------------------------------------------------------
@@ -123,6 +125,7 @@
params.pageSize = this.pageSize;
params.sortOrder = this.sortOrder;
params.limit = this.limit;
+ params.uniqueInstances = this.uniqueInstances;
params.coordinatesOnly = this.coordinatesOnly;
params.periodType = this.periodType;
@@ -240,6 +243,24 @@
return limit != null && limit > 0;
}
+ /**
+ * Indicates whether the program of this query requires registration of
+ * tracked entity instances.
+ */
+ public boolean isProgramRegistration()
+ {
+ return program != null && program.isRegistration();
+ }
+
+ /**
+ * Returns a negative integer in case of ascending sort order, a positive in
+ * case of descending sort order and 0 in case of no sort order.
+ */
+ public int getSortOrderAsInt()
+ {
+ return SortOrder.ASC.equals( sortOrder ) ? -1 : SortOrder.DESC.equals( sortOrder ) ? 1 : 0;
+ }
+
public String toString()
{
return "[" +
@@ -395,6 +416,16 @@
{
this.limit = limit;
}
+
+ public boolean isUniqueInstances()
+ {
+ return uniqueInstances;
+ }
+
+ public void setUniqueInstances( boolean uniqueInstances )
+ {
+ this.uniqueInstances = uniqueInstances;
+ }
public boolean isCoordinatesOnly()
{
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java 2014-04-28 18:23:49 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java 2014-05-12 09:56:39 +0000
@@ -62,6 +62,7 @@
import org.hisp.dhis.common.Pager;
import org.hisp.dhis.common.QueryFilter;
import org.hisp.dhis.common.QueryItem;
+import org.hisp.dhis.common.QueryOperator;
import org.hisp.dhis.dataelement.DataElement;
import org.hisp.dhis.dataelement.DataElementService;
import org.hisp.dhis.i18n.I18nFormat;
@@ -169,6 +170,20 @@
{
throw new IllegalQueryException( "Number of rows produced by query is larger than the max limit: " + MAX_ROWS_LIMIT );
}
+
+ // ---------------------------------------------------------------------
+ // Limit and sort - done again due to potential multiple partitions
+ // ---------------------------------------------------------------------
+
+ if ( params.hasSortOrder() )
+ {
+ grid.sortGrid( 1, params.getSortOrderAsInt() );
+ }
+
+ if ( params.hasLimit() && grid.getHeight() > params.getLimit() )
+ {
+ grid.limitGrid( params.getLimit() );
+ }
// ---------------------------------------------------------------------
// Meta-data
@@ -280,14 +295,15 @@
}
public EventQueryParams getFromUrl( String program, String stage, String startDate, String endDate,
- Set<String> dimension, Set<String> filter, boolean skipMeta, boolean hierarchyMeta, SortOrder sortOrder, Integer limit,
- I18nFormat format )
+ Set<String> dimension, Set<String> filter, boolean skipMeta, boolean hierarchyMeta, SortOrder sortOrder,
+ Integer limit, boolean uniqueInstances, I18nFormat format )
{
EventQueryParams params = getFromUrl( program, stage, startDate, endDate, dimension, filter, null, null, null,
skipMeta, hierarchyMeta, false, null, null, format );
params.setSortOrder( sortOrder );
params.setLimit( limit );
+ params.setUniqueInstances( uniqueInstances );
params.setAggregate( true );
return params;
@@ -426,7 +442,8 @@
{
for ( int i = 1; i < split.length; i += 2 )
{
- queryItem.getFilters().add( new QueryFilter( split[i], split[i+1] ) );
+ QueryOperator operator = QueryOperator.fromString( split[i] );
+ queryItem.getFilters().add( new QueryFilter( operator, split[i+1] ) );
}
}
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java 2014-04-21 14:52:46 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java 2014-05-12 09:56:39 +0000
@@ -84,7 +84,9 @@
public Grid getAggregatedEventData( EventQueryParams params, Grid grid )
{
- String sql = "select count(psi) as value," + getSelectColumns( params ) + " ";
+ String countClause = ( params.isProgramRegistration() && params.isUniqueInstances() ) ? "count(distinct tei)" : "count(psi)";
+
+ String sql = "select " + countClause + " as value," + getSelectColumns( params ) + " ";
// ---------------------------------------------------------------------
// Criteria
@@ -269,7 +271,14 @@
{
String sql = "select count(psi) ";
- sql += getFromWhereClause( params, params.getPartitions().getSinglePartition() );
+ if ( params.spansMultiplePartitions() )
+ {
+ sql += getFromWhereMultiplePartitionsClause( params, Arrays.asList( "psi" ) );
+ }
+ else
+ {
+ sql += getFromWhereClause( params, params.getPartitions().getSinglePartition() );
+ }
int count = 0;
@@ -325,13 +334,11 @@
private String getFromWhereMultiplePartitionsClause( EventQueryParams params, List<String> fixedColumns )
{
- String fixedCols = getSelectString( fixedColumns );
-
String sql = "from (";
for ( String partition : params.getPartitions().getPartitions() )
{
- sql += "select " + fixedCols + getSelectColumns( params );
+ sql += "select " + getSelectString( fixedColumns ) + getSelectColumns( params );
sql += " " + getFromWhereClause( params, partition );
@@ -441,6 +448,11 @@
*/
private String getSelectString( List<String> columns )
{
+ if ( columns == null || columns.isEmpty() )
+ {
+ return "";
+ }
+
String fixedCols = StringUtils.join( columns, ", " );
return StringUtils.defaultIfEmpty( fixedCols + ", ", fixedCols );
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcEventAnalyticsTableManager.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcEventAnalyticsTableManager.java 2014-04-07 14:27:23 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcEventAnalyticsTableManager.java 2014-05-12 09:56:39 +0000
@@ -160,17 +160,19 @@
sql = removeLast( sql, 1 ) + " ";
- sql += "from programstageinstance psi "
- + "left join programinstance pi on psi.programinstanceid=pi.programinstanceid "
- + "left join programstage ps on psi.programstageid=ps.programstageid "
- + "left join program pr on pi.programid=pr.programid "
- + "left join trackedentityinstance pa on pi.trackedentityinstanceid=pa.trackedentityinstanceid "
- + "left join organisationunit ou on psi.organisationunitid=ou.organisationunitid "
- + "left join _orgunitstructure ous on psi.organisationunitid=ous.organisationunitid "
- + "left join _dateperiodstructure dps on psi.executiondate=dps.dateperiod "
- + "where psi.executiondate >= '" + start + "' " + "and psi.executiondate <= '" + end + "' "
- + "and pr.programid=" + table.getProgram().getId() + " " + "and psi.organisationunitid is not null "
- + "and psi.executiondate is not null";
+ sql += "from programstageinstance psi " +
+ "left join programinstance pi on psi.programinstanceid=pi.programinstanceid " +
+ "left join programstage ps on psi.programstageid=ps.programstageid " +
+ "left join program pr on pi.programid=pr.programid " +
+ "left join trackedentityinstance tei on pi.trackedentityinstanceid=tei.trackedentityinstanceid " +
+ "left join organisationunit ou on psi.organisationunitid=ou.organisationunitid " +
+ "left join _orgunitstructure ous on psi.organisationunitid=ous.organisationunitid " +
+ "left join _dateperiodstructure dps on psi.executiondate=dps.dateperiod " +
+ "where psi.executiondate >= '" + start + "' " +
+ "and psi.executiondate <= '" + end + "' " +
+ "and pr.programid=" + table.getProgram().getId() + " " +
+ "and psi.organisationunitid is not null " +
+ "and psi.executiondate is not null";
log.info( "Populate SQL: " + sql );
@@ -246,6 +248,12 @@
columns.addAll( Arrays.asList( psi, ps, ed, longitude, latitude, ou, oun, ouc ) );
+ if ( table.hasProgram() && table.getProgram().isRegistration() )
+ {
+ String[] tei = { quote( "tei" ), "character(11)", "tei.uid" };
+ columns.add( tei );
+ }
+
return columns;
}
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/EmailMessageSender.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/EmailMessageSender.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/EmailMessageSender.java 2014-05-12 09:56:39 +0000
@@ -30,8 +30,6 @@
import static org.hisp.dhis.user.UserSettingService.KEY_MESSAGE_EMAIL_NOTIFICATION;
-import java.io.Serializable;
-import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
@@ -104,8 +102,6 @@
( sender.getEmail() != null ? ( sender.getEmail() + LB ) : StringUtils.EMPTY ) +
( sender.getPhoneNumber() != null ? ( sender.getPhoneNumber() + LB ) : StringUtils.EMPTY ) );
- Map<User, Serializable> settings = userService.getUserSettings( KEY_MESSAGE_EMAIL_NOTIFICATION, false );
-
try
{
Email email = getEmail( hostName, port, username, password, tls );
@@ -116,7 +112,7 @@
for ( User user : users )
{
- boolean emailNotification = settings.get( user ) != null && (Boolean) settings.get( user ) == true;
+ boolean emailNotification = (Boolean) userService.getUserSettingValue( user, KEY_MESSAGE_EMAIL_NOTIFICATION, false );
boolean doSend = forceSend || emailNotification;
@@ -124,7 +120,7 @@
{
email.addBcc( user.getEmail() );
- log.info( "Sending email to user: " + user + " with email address: " + user.getEmail() );
+ log.info( "Sending email to user: " + user.getUsername() + " with email address: " + user.getEmail() );
hasRecipients = true;
}
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java 2014-04-15 03:54:06 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java 2014-05-12 09:56:39 +0000
@@ -30,10 +30,12 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+
import org.hisp.dhis.common.Grid;
import org.hisp.dhis.common.IdentifiableObjectManager;
import org.hisp.dhis.common.OrganisationUnitSelectionMode;
import org.hisp.dhis.common.QueryItem;
+import org.hisp.dhis.common.QueryOperator;
import org.hisp.dhis.dxf2.events.trackedentity.Attribute;
import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance;
import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstanceService;
@@ -218,9 +220,6 @@
for ( ProgramInstance programInstance : programInstances )
{
- // check for null, both for pi, and for pi.entityInstance, there are DBs
- // out there where trackedentityinstanceid == null
- // even if the program is of type 1/2.
if ( programInstance != null && programInstance.getEntityInstance() != null )
{
enrollments.getEnrollments().add( getEnrollment( programInstance ) );
@@ -503,17 +502,17 @@
TrackedEntityInstanceQueryParams params = new TrackedEntityInstanceQueryParams();
- QueryItem queryItem = new QueryItem( attribute, "eq", value, false );
- params.getAttributes().add( queryItem );
+ QueryItem queryItem = new QueryItem( attribute, QueryOperator.EQ, value, false );
+ params.addAttribute( queryItem );
if ( attribute.getOrgunitScope() && attribute.getProgramScope() )
{
params.setProgram( program );
- params.getOrganisationUnits().add( organisationUnit );
+ params.addOrganisationUnit( organisationUnit );
}
else if ( attribute.getOrgunitScope() )
{
- params.getOrganisationUnits().add( organisationUnit );
+ params.addOrganisationUnit( organisationUnit );
}
else if ( attribute.getProgramScope() )
{
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/AbstractTrackedEntityInstanceService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/AbstractTrackedEntityInstanceService.java 2014-04-15 03:54:06 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/AbstractTrackedEntityInstanceService.java 2014-05-12 09:56:39 +0000
@@ -29,10 +29,12 @@
*/
import com.google.common.collect.Lists;
+
import org.hisp.dhis.common.Grid;
import org.hisp.dhis.common.IdentifiableObjectManager;
import org.hisp.dhis.common.OrganisationUnitSelectionMode;
import org.hisp.dhis.common.QueryItem;
+import org.hisp.dhis.common.QueryOperator;
import org.hisp.dhis.dxf2.importsummary.ImportConflict;
import org.hisp.dhis.dxf2.importsummary.ImportStatus;
import org.hisp.dhis.dxf2.importsummary.ImportSummary;
@@ -338,8 +340,8 @@
TrackedEntityInstanceQueryParams params = new TrackedEntityInstanceQueryParams();
- QueryItem queryItem = new QueryItem( attribute, "eq", value, false );
- params.getAttributes().add( queryItem );
+ QueryItem queryItem = new QueryItem( attribute, QueryOperator.EQ, value, false );
+ params.addAttribute( queryItem );
if ( attribute.getOrgunitScope() )
{
=== modified file 'dhis-2/dhis-services/dhis-service-i18n/src/main/resources/i18n_global.properties'
--- dhis-2/dhis-services/dhis-service-i18n/src/main/resources/i18n_global.properties 2014-05-06 09:20:18 +0000
+++ dhis-2/dhis-services/dhis-service-i18n/src/main/resources/i18n_global.properties 2014-05-12 09:56:39 +0000
@@ -829,7 +829,7 @@
app_draggable_description=Items are draggable to change their order, so it's easy to customize your favorite apps.
app_order_custom=My own order
app_order_name_alpha=Alphabetical
-app_search_placeholder=Search in apps
+app_search_placeholder=Search apps
#-- calendars ------------------------------------------------------------------#
=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/DefaultImportService.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/DefaultImportService.java 2014-05-05 18:01:22 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/DefaultImportService.java 2014-05-12 09:56:39 +0000
@@ -123,7 +123,7 @@
log.info( "Saved zipstream to file: " + tempZipFile.getAbsolutePath() );
zipFile = new ZipFile( tempZipFile );
-
+
xmlDataStream = new BufferedInputStream( ZipAnalyzer.getTransformableStream( zipFile ) );
}
=== modified file 'dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/ActivityReportingService.java'
--- dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/ActivityReportingService.java 2014-05-05 10:16:05 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/ActivityReportingService.java 2014-05-12 09:56:39 +0000
@@ -35,6 +35,7 @@
import org.hisp.dhis.api.mobile.model.ActivityValue;
import org.hisp.dhis.api.mobile.model.Message;
import org.hisp.dhis.api.mobile.model.PatientAttribute;
+import org.hisp.dhis.api.mobile.model.User;
import org.hisp.dhis.api.mobile.model.LWUITmodel.LostEvent;
import org.hisp.dhis.api.mobile.model.LWUITmodel.Notification;
import org.hisp.dhis.api.mobile.model.LWUITmodel.Patient;
@@ -106,4 +107,7 @@
public String sendFeedback( Message message )
throws NotAllowedException;
+ public Collection<User> findUser( String keyword )
+ throws NotAllowedException;
+
}
=== modified file 'dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/LWUITmodel/Patient.java'
--- dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/LWUITmodel/Patient.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/LWUITmodel/Patient.java 2014-05-12 09:56:39 +0000
@@ -49,6 +49,8 @@
private int id;
private String organisationUnitName;
+
+ private String trackedEntityName;
private List<PatientAttribute> attributes = new ArrayList<PatientAttribute>();
@@ -113,6 +115,16 @@
this.organisationUnitName = organisationUnitName;
}
+ public String getTrackedEntityName()
+ {
+ return trackedEntityName;
+ }
+
+ public void setTrackedEntityName( String trackedEntityName )
+ {
+ this.trackedEntityName = trackedEntityName;
+ }
+
public List<ProgramInstance> getEnrollmentPrograms()
{
return enrollmentPrograms;
@@ -146,6 +158,7 @@
dout.writeInt( this.getId() );
dout.writeUTF( this.getOrganisationUnitName() );
+ dout.writeUTF( this.getTrackedEntityName() );
// Write Patient Attribute
dout.writeInt( attributes.size() );
@@ -185,6 +198,7 @@
{
this.setId( din.readInt() );
this.setOrganisationUnitName( din.readUTF() );
+ this.setTrackedEntityName( din.readUTF() );
// Read Attribute
int attsNumb = din.readInt();
=== modified file 'dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/MobileOrgUnitLinks.java'
--- dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/MobileOrgUnitLinks.java 2014-05-05 10:16:05 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/MobileOrgUnitLinks.java 2014-05-12 09:56:39 +0000
@@ -67,6 +67,8 @@
private String sendFeedbackUrl;
+ private String findUserUrl;
+
private String updateContactUrl;
private String findPatientUrl;
@@ -227,6 +229,16 @@
this.sendFeedbackUrl = sendFeedbackUrl;
}
+ public String getFindUserUrl()
+ {
+ return findUserUrl;
+ }
+
+ public void setFindUserUrl( String findUserUrl )
+ {
+ this.findUserUrl = findUserUrl;
+ }
+
public String getUpdateContactUrl()
{
return updateContactUrl;
@@ -382,6 +394,7 @@
dataOutputStream.writeUTF( searchUrl );
dataOutputStream.writeUTF( updateNewVersionUrl );
dataOutputStream.writeUTF( sendFeedbackUrl );
+ dataOutputStream.writeUTF( findUserUrl );
dataOutputStream.writeUTF( updateContactUrl );
dataOutputStream.writeUTF( findPatientUrl );
dataOutputStream.writeUTF( registerPersonUrl );
@@ -396,7 +409,6 @@
dataOutputStream.writeUTF( handleLostToFollowUpUrl );
dataOutputStream.writeUTF( generateRepeatableEventUrl );
dataOutputStream.writeUTF( uploadSingleEventWithoutRegistration );
-
}
@@ -415,6 +427,7 @@
searchUrl = dataInputStream.readUTF();
updateNewVersionUrl = dataInputStream.readUTF();
sendFeedbackUrl = dataInputStream.readUTF();
+ findUserUrl = dataInputStream.readUTF();
updateContactUrl = dataInputStream.readUTF();
findPatientUrl = dataInputStream.readUTF();
registerPersonUrl = dataInputStream.readUTF();
@@ -464,6 +477,7 @@
dataOutputStream.writeUTF( this.searchUrl );
dataOutputStream.writeUTF( this.updateNewVersionUrl );
dataOutputStream.writeUTF( this.sendFeedbackUrl );
+ dataOutputStream.writeUTF( this.findUserUrl );
// dataOutputStream.writeUTF( this.updateContactUrl );
}
@@ -483,6 +497,7 @@
dataOutputStream.writeUTF( searchUrl );
dataOutputStream.writeUTF( updateNewVersionUrl );
dataOutputStream.writeUTF( sendFeedbackUrl );
+ dataOutputStream.writeUTF( findUserUrl );
dataOutputStream.writeUTF( updateContactUrl );
dataOutputStream.writeUTF( findPatientUrl );
dataOutputStream.writeUTF( registerPersonUrl );
=== added file 'dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/Recipient.java'
--- dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/Recipient.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/Recipient.java 2014-05-12 09:56:39 +0000
@@ -0,0 +1,125 @@
+package org.hisp.dhis.api.mobile.model;
+
+/*
+ * Copyright (c) 2004-2014, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Collection;
+
+public class Recipient
+ implements DataStreamSerializable
+{
+ private String clientVersion;
+
+ private Collection<User> users;
+
+ public String getClientVersion()
+ {
+ return clientVersion;
+ }
+
+ public void setClientVersion( String clientVersion )
+ {
+ this.clientVersion = clientVersion;
+ }
+
+ public Collection<User> getUsers()
+ {
+ return users;
+ }
+
+ public void setUsers( Collection<User> users )
+ {
+ this.users = users;
+ }
+
+ @Override
+ public void serialize( DataOutputStream dout )
+ throws IOException
+ {
+ if ( users == null )
+ {
+ dout.writeInt( 0 );
+ }
+ else
+ {
+ dout.writeInt( users.size() );
+ for ( User user : users )
+ {
+ user.setClientVersion( DataStreamSerializable.TWO_POINT_TEN );
+ user.serialize( dout );
+ }
+ }
+
+ }
+
+ @Override
+ public void deSerialize( DataInputStream dataInputStream )
+ throws IOException
+ {
+
+ }
+
+ @Override
+ public void serializeVersion2_8( DataOutputStream dataOutputStream )
+ throws IOException
+ {
+
+ }
+
+ @Override
+ public void serializeVersion2_9( DataOutputStream dataOutputStream )
+ throws IOException
+ {
+
+ }
+
+ @Override
+ public void serializeVersion2_10( DataOutputStream dout )
+ throws IOException
+ {
+
+ if ( users == null )
+ {
+ dout.writeInt( 0 );
+ }
+ else
+ {
+ dout.writeInt( users.size() );
+ for ( User user : users )
+ {
+ user.setClientVersion( DataStreamSerializable.TWO_POINT_TEN );
+ user.serialize( dout );
+ }
+ }
+
+ }
+
+}
=== added file 'dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/User.java'
--- dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/User.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/api/mobile/model/User.java 2014-05-12 09:56:39 +0000
@@ -0,0 +1,131 @@
+package org.hisp.dhis.api.mobile.model;
+
+/*
+ * Copyright (c) 2004-2014, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+public class User
+ implements DataStreamSerializable
+{
+ private String clientVersion;
+
+ private String surname;
+
+ private String firstName;
+
+ public User()
+ {
+ }
+
+ public User( String surname, String firstName )
+ {
+ super();
+ this.surname = surname;
+ this.firstName = firstName;
+ }
+
+ public String getClientVersion()
+ {
+ return clientVersion;
+ }
+
+ public void setClientVersion( String clientVersion )
+ {
+ this.clientVersion = clientVersion;
+ }
+
+ @XmlAttribute
+ public String getSurname()
+ {
+ return surname;
+ }
+
+ public void setSurname( String surname )
+ {
+ this.surname = surname;
+ }
+
+ @XmlAttribute
+ public String getFirstName()
+ {
+ return firstName;
+ }
+
+ public void setFirstName( String firstName )
+ {
+ this.firstName = firstName;
+ }
+
+ @Override
+ public void serialize( DataOutputStream dout )
+ throws IOException
+ {
+ dout.writeUTF( this.surname );
+ dout.writeUTF( this.firstName );
+
+ }
+
+ @Override
+ public void deSerialize( DataInputStream din )
+ throws IOException
+ {
+ surname = din.readUTF();
+ firstName = din.readUTF();
+ }
+
+ @Override
+ public void serializeVersion2_8( DataOutputStream dout )
+ throws IOException
+ {
+ dout.writeUTF( this.surname );
+ dout.writeUTF( this.firstName );
+ }
+
+ @Override
+ public void serializeVersion2_9( DataOutputStream dout )
+ throws IOException
+ {
+ dout.writeUTF( this.surname );
+ dout.writeUTF( this.firstName );
+ }
+
+ @Override
+ public void serializeVersion2_10( DataOutputStream dout )
+ throws IOException
+ {
+ dout.writeUTF( this.surname );
+ dout.writeUTF( this.firstName );
+
+ }
+
+}
=== modified file 'dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java'
--- dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java 2014-05-05 10:16:05 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java 2014-05-12 09:56:39 +0000
@@ -59,8 +59,11 @@
import org.hisp.dhis.api.mobile.model.LWUITmodel.Notification;
import org.hisp.dhis.api.mobile.model.LWUITmodel.Section;
import org.hisp.dhis.api.mobile.model.comparator.ActivityComparator;
+import org.hisp.dhis.common.Grid;
+import org.hisp.dhis.common.QueryItem;
import org.hisp.dhis.dataelement.DataElement;
import org.hisp.dhis.dataelement.DataElementService;
+import org.hisp.dhis.event.EventStatus;
import org.hisp.dhis.message.Message;
import org.hisp.dhis.message.MessageConversation;
import org.hisp.dhis.message.MessageService;
@@ -88,6 +91,7 @@
import org.hisp.dhis.trackedentity.TrackedEntityAttribute;
import org.hisp.dhis.trackedentity.TrackedEntityAttributeService;
import org.hisp.dhis.trackedentity.TrackedEntityInstance;
+import org.hisp.dhis.trackedentity.TrackedEntityInstanceQueryParams;
import org.hisp.dhis.trackedentity.TrackedEntityInstanceService;
import org.hisp.dhis.trackedentity.TrackedEntityMobileSetting;
import org.hisp.dhis.trackedentityattributevalue.TrackedEntityAttributeValue;
@@ -96,6 +100,7 @@
import org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueService;
import org.hisp.dhis.user.CurrentUserService;
import org.hisp.dhis.user.User;
+import org.hisp.dhis.user.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;
@@ -150,6 +155,8 @@
private TrackedEntityAttributeService attributeService;
+ private UserService userService;
+
private Integer patientId;
@Autowired
@@ -250,6 +257,12 @@
this.programService = programService;
}
+ @Required
+ public void setUserService( UserService userService )
+ {
+ this.userService = userService;
+ }
+
// -------------------------------------------------------------------------
// MobileDataSetService
// -------------------------------------------------------------------------
@@ -301,15 +314,23 @@
{
List<Activity> items = new ArrayList<Activity>();
- Collection<TrackedEntityInstance> patients = entityInstanceService.getTrackedEntityInstances( unit, 0,
- Integer.MAX_VALUE );
-
- for ( TrackedEntityInstance patient : patients )
+
+ TrackedEntityInstanceQueryParams param = new TrackedEntityInstanceQueryParams();
+ param.addOrganisationUnit( unit );
+
+ Grid trackedEntityDrid = entityInstanceService.getTrackedEntityInstances( param );
+ List<List<Object>> listOfListProgramStageInstance = trackedEntityDrid.getRows();
+
+ for ( List<Object> listProgramStageInstance : listOfListProgramStageInstance )
{
- for ( ProgramStageInstance programStageInstance : programStageInstanceService.getProgramStageInstances(
- patient, false ) )
+ for ( Object obj : listProgramStageInstance )
{
- items.add( getActivity( programStageInstance, false ) );
+ TrackedEntityInstance patient = (TrackedEntityInstance) obj;
+ for ( ProgramStageInstance programStageInstance : programStageInstanceService.getProgramStageInstances(
+ patient, false ) )
+ {
+ items.add( getActivity( programStageInstance, false ) );
+ }
}
}
@@ -411,13 +432,6 @@
for ( TrackedEntityInstance patient : patients )
{
- System.out.println( "----------------------------------------------------------------------------" );
- System.out.println( "Display Name: " + patient.getDisplayName() );
- System.out.println( "Name: " + patient.getName() );
- System.out.println( "Tracked Entity Display Name: " + patient.getTrackedEntity().getDisplayName() );
- System.out.println( "Tracked Entity Name: " + patient.getTrackedEntity().getName() );
- System.out.println( "----------------------------------------------------------------------------" );
-
resultSet += patient.getId() + "/";
String attText = "";
for ( TrackedEntityAttribute displayAttribute : displayAttributes )
@@ -763,6 +777,15 @@
patientModel.setOrganisationUnitName( patient.getOrganisationUnit().getName() );
}
+ if ( patient.getTrackedEntity() != null )
+ {
+ patientModel.setTrackedEntityName( patient.getTrackedEntity().getName() );
+ }
+ else
+ {
+ patientModel.setTrackedEntityName( "" );
+ }
+
this.setSetting( getSettings() );
List<TrackedEntityAttributeValue> atts = new ArrayList<TrackedEntityAttributeValue>(
@@ -1552,24 +1575,25 @@
}
Set<TrackedEntity> trackedentities = new HashSet<TrackedEntity>();
- for ( TrackedEntityInstance patient : patients)
+ for ( TrackedEntityInstance patient : patients )
{
- if (patient.getTrackedEntity() != null)
+ if ( patient.getTrackedEntity() != null )
{
trackedentities.add( patient.getTrackedEntity() );
}
}
-
+
String resultSet = "";
Collection<TrackedEntityAttribute> displayAttributes = attributeService
.getTrackedEntityAttributesDisplayInList( true );
- for ( TrackedEntity trackedentity : trackedentities)
+ for ( TrackedEntity trackedentity : trackedentities )
{
resultSet += trackedentity.getDisplayName() + "$";
for ( TrackedEntityInstance patient : patients )
{
- if(patient.getTrackedEntity()!=null && patient.getTrackedEntity().getId()==trackedentity.getId()) {
+ if ( patient.getTrackedEntity() != null && patient.getTrackedEntity().getId() == trackedentity.getId() )
+ {
resultSet += patient.getId() + "/";
String attText = "";
for ( TrackedEntityAttribute displayAttribute : displayAttributes )
@@ -1586,6 +1610,28 @@
}
}
}
+
+ //get tracked entity with no tracked entity name
+ resultSet += "Others$";
+ for ( TrackedEntityInstance patient : patients )
+ {
+ if ( patient.getTrackedEntity() == null)
+ {
+ resultSet += patient.getId() + "/";
+ String attText = "";
+ for ( TrackedEntityAttribute displayAttribute : displayAttributes )
+ {
+ TrackedEntityAttributeValue value = attValueService.getTrackedEntityAttributeValue( patient,
+ displayAttribute );
+ if ( value != null )
+ {
+ attText += value.getValue() + " ";
+ }
+ }
+ attText = attText.trim();
+ resultSet += attText + "$";
+ }
+ }
return resultSet;
}
@@ -1595,35 +1641,19 @@
{
String[] searchEventInfosArray = searchEventInfos.split( "-" );
- int programStageStatus = 0;
+ EventStatus eventStatus = EventStatus.ACTIVE;
if ( searchEventInfosArray[1].equalsIgnoreCase( "Scheduled in future" ) )
{
- programStageStatus = ProgramStageInstance.FUTURE_VISIT_STATUS;
+ eventStatus = EventStatus.FUTURE_VISIT;
}
else if ( searchEventInfosArray[1].equalsIgnoreCase( "Overdue" ) )
{
- programStageStatus = ProgramStageInstance.LATE_VISIT_STATUS;
- }
-
- boolean followUp;
-
- if ( searchEventInfosArray[2].equalsIgnoreCase( "true" ) )
- {
- followUp = true;
- }
- else
- {
- followUp = false;
+ eventStatus = EventStatus.LATE_VISIT;
}
String eventsInfo = "";
- DateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd" );
-
- List<String> searchTextList = new ArrayList<String>();
- Collection<OrganisationUnit> orgUnitList = new HashSet<OrganisationUnit>();
-
Calendar toCalendar = new GregorianCalendar();
toCalendar.add( Calendar.DATE, -1 );
toCalendar.add( Calendar.YEAR, 100 );
@@ -1635,29 +1665,41 @@
Date fromDate = fromCalendar.getTime();
- String searchText = TrackedEntityInstance.PREFIX_PROGRAM_EVENT_BY_STATUS + "_" + searchEventInfosArray[0] + "_"
- + formatter.format( fromDate ) + "_" + formatter.format( toDate ) + "_" + orgUnitId + "_" + true + "_"
- + programStageStatus;
-
- searchTextList.add( searchText );
- orgUnitList.add( organisationUnitService.getOrganisationUnit( orgUnitId ) );
- List<Integer> stageInstanceIds = entityInstanceService.getProgramStageInstances( searchTextList, orgUnitList,
- followUp, ProgramInstance.STATUS_ACTIVE, null, null );
-
- if ( stageInstanceIds.size() == 0 )
+ TrackedEntityInstanceQueryParams param = new TrackedEntityInstanceQueryParams();
+ List<TrackedEntityAttribute> trackedEntityAttributeList = new ArrayList<TrackedEntityAttribute>(
+ attributeService.getTrackedEntityAttributesByDisplayOnVisitSchedule( true ) );
+
+ for ( TrackedEntityAttribute trackedEntityAttribute : trackedEntityAttributeList )
+ {
+ QueryItem queryItem = new QueryItem( trackedEntityAttribute );
+ param.addAttribute( queryItem );
+ }
+
+ param.addOrganisationUnit( organisationUnitService.getOrganisationUnit( orgUnitId ) );
+ param.setEventStatus( eventStatus );
+ param.setEventStartDate( fromDate );
+ param.setEventEndDate( toDate );
+
+ Grid programStageInstanceGrid = entityInstanceService.getTrackedEntityInstances( param );
+ List<List<Object>> rows = programStageInstanceGrid.getRows();
+
+ if ( rows.size() == 0 )
{
throw NotAllowedException.NO_EVENT_FOUND;
}
- else if ( stageInstanceIds.size() > 0 )
+ else if ( rows.size() > 0 )
{
- for ( Integer stageInstanceId : stageInstanceIds )
+ for ( List<Object> row : rows )
{
- ProgramStageInstance programStageInstance = programStageInstanceService
- .getProgramStageInstance( stageInstanceId );
- TrackedEntityInstance patient = programStageInstance.getProgramInstance().getEntityInstance();
- eventsInfo += programStageInstance.getId() + "/" + patient.getName() + ", "
- + programStageInstance.getProgramStage().getName() + "("
- + formatter.format( programStageInstance.getDueDate() ) + ")" + "$";
+ for ( int i = 5; i < row.size(); i++ )
+ {
+ eventsInfo += row.get( i ) + "/";
+ if ( i == row.size() - 1 )
+ {
+ eventsInfo += "$";
+ }
+ }
+
}
throw new NotAllowedException( eventsInfo );
@@ -1666,6 +1708,7 @@
{
return "";
}
+
}
@SuppressWarnings( "finally" )
@@ -1867,4 +1910,37 @@
return FEEDBACK_SENT;
}
+
+ @Override
+ public Collection<org.hisp.dhis.api.mobile.model.User> findUser( String keyword )
+ throws NotAllowedException
+ {
+ Collection<User> users = new HashSet<User>();
+
+ Collection<org.hisp.dhis.api.mobile.model.User> userList = new HashSet<org.hisp.dhis.api.mobile.model.User>();
+
+ if ( keyword != null )
+ {
+ int index = keyword.indexOf( ' ' );
+
+ if ( index != -1 && index == keyword.lastIndexOf( ' ' ) )
+ {
+ String[] keys = keyword.split( " " );
+ keyword = keys[0] + " " + keys[1];
+ }
+ }
+
+ users = userService.getUsersByName( keyword );
+
+ for ( User userCore : users )
+ {
+ org.hisp.dhis.api.mobile.model.User user = new org.hisp.dhis.api.mobile.model.User();
+ user.setSurname( userCore.getSurname() );
+ user.setFirstName( userCore.getFirstName() );
+ userList.add( user );
+
+ }
+
+ return userList;
+ }
}
\ No newline at end of file
=== modified file 'dhis-2/dhis-services/dhis-service-mobile/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-mobile/src/main/resources/META-INF/dhis/beans.xml 2014-03-26 19:40:22 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/main/resources/META-INF/dhis/beans.xml 2014-05-12 09:56:39 +0000
@@ -1,52 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
-
- <!-- Services -->
-
- <bean id="org.hisp.dhis.mobile.api.FacilityReportingService" class="org.hisp.dhis.mobile.service.FacilityReportingServiceImpl">
- <property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
- <property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
- <property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
- <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
- <property name="dataValueService" ref="org.hisp.dhis.datavalue.DataValueService" />
- <property name="registrationService" ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationService" />
- <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
- <property name="oUnitService" ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
- </bean>
-
- <bean id="org.hisp.dhis.mobile.api.ActivityReportingService" class="org.hisp.dhis.mobile.service.ActivityReportingServiceImpl">
- <property name="attValueService" ref="org.hisp.dhis.trackedentityattributevalue.TrackedEntityAttributeValueService" />
- <property name="programStageInstanceService" ref="org.hisp.dhis.program.ProgramStageInstanceService" />
- <property name="mobileSettingService" ref="org.hisp.dhis.api.mobile.TrackedEntityMobileSettingService" />
- <property name="programStageSectionService" ref="org.hisp.dhis.program.ProgramStageSectionService" />
- <property name="entityInstanceService" ref="org.hisp.dhis.trackedentity.TrackedEntityInstanceService" />
- <property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
- <property name="relationshipService" ref="org.hisp.dhis.relationship.RelationshipService" />
- <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
- <property name="dataValueService" ref="org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueService" />
- <property name="programService" ref="org.hisp.dhis.program.ProgramService" />
- <property name="attributeService" ref="org.hisp.dhis.trackedentity.TrackedEntityAttributeService" />
- <property name="relationshipTypeService" ref="org.hisp.dhis.relationship.RelationshipTypeService" />
- <property name="programStageService" ref="org.hisp.dhis.program.ProgramStageService" />
- <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
- <property name="messageService" ref="org.hisp.dhis.message.MessageService" />
- <property name="smsSender" ref="org.hisp.dhis.sms.SmsSender" />
- </bean>
-
- <bean id="org.hisp.dhis.mobile.api.IProgramService" class="org.hisp.dhis.mobile.service.DefaultProgramService">
- <property name="programService" ref="org.hisp.dhis.program.ProgramService" />
- </bean>
-
- <bean id="org.hisp.dhis.api.mobile.TrackedEntityMobileSettingService"
- class="org.hisp.dhis.mobile.service.DefaultTrackedEntityMobileSettingService">
- <property name="mobileSettingStore" ref="org.hisp.dhis.api.mobile.TrackedEntityMobileSettingStore" />
- </bean>
-
- <bean id="org.hisp.dhis.api.mobile.TrackedEntityMobileSettingStore" class="org.hisp.dhis.mobile.service.HibernateTrackedEntityMobileSettingStore">
- <property name="clazz" value="org.hisp.dhis.trackedentity.TrackedEntityMobileSetting" />
- <property name="sessionFactory" ref="sessionFactory" />
- </bean>
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
+
+ <!-- Services -->
+
+ <bean id="org.hisp.dhis.mobile.api.FacilityReportingService"
+ class="org.hisp.dhis.mobile.service.FacilityReportingServiceImpl">
+ <property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
+ <property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
+ <property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
+ <property name="categoryService"
+ ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+ <property name="dataValueService" ref="org.hisp.dhis.datavalue.DataValueService" />
+ <property name="registrationService"
+ ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationService" />
+ <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
+ <property name="oUnitService"
+ ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+ </bean>
+
+ <bean id="org.hisp.dhis.mobile.api.ActivityReportingService"
+ class="org.hisp.dhis.mobile.service.ActivityReportingServiceImpl">
+ <property name="attValueService"
+ ref="org.hisp.dhis.trackedentityattributevalue.TrackedEntityAttributeValueService" />
+ <property name="programStageInstanceService"
+ ref="org.hisp.dhis.program.ProgramStageInstanceService" />
+ <property name="mobileSettingService"
+ ref="org.hisp.dhis.api.mobile.TrackedEntityMobileSettingService" />
+ <property name="programStageSectionService"
+ ref="org.hisp.dhis.program.ProgramStageSectionService" />
+ <property name="entityInstanceService"
+ ref="org.hisp.dhis.trackedentity.TrackedEntityInstanceService" />
+ <property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
+ <property name="relationshipService"
+ ref="org.hisp.dhis.relationship.RelationshipService" />
+ <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+ <property name="dataValueService"
+ ref="org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueService" />
+ <property name="programService" ref="org.hisp.dhis.program.ProgramService" />
+ <property name="attributeService"
+ ref="org.hisp.dhis.trackedentity.TrackedEntityAttributeService" />
+ <property name="relationshipTypeService"
+ ref="org.hisp.dhis.relationship.RelationshipTypeService" />
+ <property name="programStageService" ref="org.hisp.dhis.program.ProgramStageService" />
+ <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
+ <property name="messageService" ref="org.hisp.dhis.message.MessageService" />
+ <property name="smsSender" ref="org.hisp.dhis.sms.SmsSender" />
+ <property name="userService" ref="org.hisp.dhis.user.UserService" />
+ </bean>
+
+ <bean id="org.hisp.dhis.mobile.api.IProgramService" class="org.hisp.dhis.mobile.service.DefaultProgramService">
+ <property name="programService" ref="org.hisp.dhis.program.ProgramService" />
+ </bean>
+
+ <bean id="org.hisp.dhis.api.mobile.TrackedEntityMobileSettingService"
+ class="org.hisp.dhis.mobile.service.DefaultTrackedEntityMobileSettingService">
+ <property name="mobileSettingStore"
+ ref="org.hisp.dhis.api.mobile.TrackedEntityMobileSettingStore" />
+ </bean>
+
+ <bean id="org.hisp.dhis.api.mobile.TrackedEntityMobileSettingStore"
+ class="org.hisp.dhis.mobile.service.HibernateTrackedEntityMobileSettingStore">
+ <property name="clazz"
+ value="org.hisp.dhis.trackedentity.TrackedEntityMobileSetting" />
+ <property name="sessionFactory" ref="sessionFactory" />
+ </bean>
</beans>
=== modified file 'dhis-2/dhis-services/dhis-service-mobile/src/test/java/org/hisp/dhis/mobile/api/model/OrgUnitTest.java'
--- dhis-2/dhis-services/dhis-service-mobile/src/test/java/org/hisp/dhis/mobile/api/model/OrgUnitTest.java 2014-05-05 10:16:05 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/test/java/org/hisp/dhis/mobile/api/model/OrgUnitTest.java 2014-05-12 09:56:39 +0000
@@ -60,6 +60,7 @@
unit.setSearchUrl( "search" );
unit.setUpdateNewVersionUrl( "" );
unit.setSendFeedbackUrl( "sendFeedbackUrl" );
+ unit.setFindUserUrl( "findUserUrl" );
unit.setUpdateContactUrl( "updateContactUrl" );
unit.setFindPatientUrl( "findPatientUrl" );
unit.setUploadProgramStageUrl( "uploadProgramStageUrl" );
=== modified file 'dhis-2/dhis-services/dhis-service-mobile/src/test/java/org/hisp/dhis/mobile/api/model/OrgUnitsTest.java'
--- dhis-2/dhis-services/dhis-service-mobile/src/test/java/org/hisp/dhis/mobile/api/model/OrgUnitsTest.java 2014-05-05 10:16:05 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/test/java/org/hisp/dhis/mobile/api/model/OrgUnitsTest.java 2014-05-12 09:56:39 +0000
@@ -86,6 +86,7 @@
orgUnit.setSearchUrl( "search" );
orgUnit.setUpdateNewVersionUrl( "updateNewVersionUrl" );
orgUnit.setSendFeedbackUrl( "sendFeedback" );
+ orgUnit.setFindUserUrl( "findUserUrl" );
orgUnit.setUpdateContactUrl( "updateContactForMobile" );
orgUnit.setFindPatientUrl( "findPatient" );
orgUnit.setRegisterPersonUrl( "registerPerson" );
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java 2014-05-12 09:56:39 +0000
@@ -40,7 +40,6 @@
import org.hisp.dhis.common.Grid;
import org.hisp.dhis.common.GridHeader;
-import org.hisp.dhis.dataelement.DataElement;
import org.hisp.dhis.i18n.I18n;
import org.hisp.dhis.i18n.I18nFormat;
import org.hisp.dhis.message.MessageConversation;
@@ -54,14 +53,11 @@
import org.hisp.dhis.trackedentity.TrackedEntityInstance;
import org.hisp.dhis.trackedentity.TrackedEntityInstanceReminder;
import org.hisp.dhis.trackedentity.TrackedEntityInstanceReminderService;
-import org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValue;
-import org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueService;
import org.hisp.dhis.user.CurrentUserService;
import org.springframework.transaction.annotation.Transactional;
/**
* @author Abyot Asalefew
- * @version $Id$
*/
@Transactional
public class DefaultProgramStageInstanceService
@@ -85,13 +81,6 @@
this.programInstanceService = programInstanceService;
}
- private TrackedEntityDataValueService dataValueService;
-
- public void setDataValueService( TrackedEntityDataValueService dataValueService )
- {
- this.dataValueService = dataValueService;
- }
-
private SmsSender smsSender;
public void setSmsSender( SmsSender smsSender )
@@ -196,82 +185,6 @@
}
@Override
- public List<Grid> getProgramStageInstancesReport( ProgramInstance programInstance, I18nFormat format, I18n i18n )
- {
- List<Grid> grids = new ArrayList<Grid>();
-
- Collection<ProgramStageInstance> programStageInstances = programInstance.getProgramStageInstances();
-
- for ( ProgramStageInstance programStageInstance : programStageInstances )
- {
- Grid grid = new ListGrid();
-
- // -----------------------------------------------------------------
- // Title
- // -----------------------------------------------------------------
-
- Date executionDate = programStageInstance.getExecutionDate();
- String executionDateValue = (executionDate != null) ? format.formatDate( programStageInstance
- .getExecutionDate() ) : "[" + i18n.getString( "none" ) + "]";
-
- grid.setTitle( programStageInstance.getProgramStage().getName() );
- grid.setSubtitle( i18n.getString( "due_date" ) + ": "
- + format.formatDate( programStageInstance.getDueDate() ) + " - " + i18n.getString( "report_date" )
- + ": " + executionDateValue );
-
- // -----------------------------------------------------------------
- // Headers
- // -----------------------------------------------------------------
-
- grid.addHeader( new GridHeader( i18n.getString( "name" ), false, true ) );
- grid.addHeader( new GridHeader( i18n.getString( "value" ), false, true ) );
-
- // -----------------------------------------------------------------
- // Values
- // -----------------------------------------------------------------
-
- Collection<TrackedEntityDataValue> entityDataValues = dataValueService
- .getTrackedEntityDataValues( programStageInstance );
-
- if ( executionDate == null || entityDataValues == null || entityDataValues.size() == 0 )
- {
- grid.addRow();
- grid.addValue( "[" + i18n.getString( "none" ) + "]" );
- grid.addValue( "" );
- }
- else
- {
- for ( TrackedEntityDataValue entityDataValue : entityDataValues )
- {
- DataElement dataElement = entityDataValue.getDataElement();
-
- grid.addRow();
- grid.addValue( dataElement.getName() );
-
- if ( dataElement.getType().equals( DataElement.VALUE_TYPE_BOOL ) )
- {
- grid.addValue( i18n.getString( entityDataValue.getValue() ) );
- }
- else
- {
- grid.addValue( entityDataValue.getValue() );
- }
- }
- }
-
- grids.add( grid );
- }
-
- return grids;
- }
-
- @Override
- public void removeEmptyEvents( ProgramStage programStage, OrganisationUnit organisationUnit )
- {
- programStageInstanceStore.removeEmptyEvents( programStage, organisationUnit );
- }
-
- @Override
public void updateProgramStageInstances( Collection<Integer> programStageInstanceIds, OutboundSms outboundSms )
{
programStageInstanceStore.update( programStageInstanceIds, outboundSms );
@@ -313,13 +226,7 @@
int total = programInstanceService.countProgramInstances( program, orgunitIds, startDate, endDate );
grid.addRow();
grid.addValue( i18n.getString( "total_new_enrollments_in_this_period" ) );
- grid.addValue( total );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
+ grid.addValue( total ).addEmptyValues( 6 );
// Total programs completed in this period
@@ -327,13 +234,7 @@
program, orgunitIds, startDate, endDate );
grid.addRow();
grid.addValue( i18n.getString( "total_programs_completed_in_this_period" ) );
- grid.addValue( totalCompleted );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
+ grid.addValue( totalCompleted ).addEmptyValues( 6 );
// Total programs discontinued (un-enrollments)
@@ -341,13 +242,7 @@
program, orgunitIds, startDate, endDate );
grid.addRow();
grid.addValue( i18n.getString( "total_programs_discontinued_unenrollments" ) );
- grid.addValue( totalDiscontinued );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
+ grid.addValue( totalDiscontinued ).addEmptyValues( 6 );
// Average number of stages for complete programs
@@ -360,37 +255,16 @@
ProgramInstance.STATUS_ACTIVE );
percent = (stageCompleted + 0.0) / totalCompleted;
}
- grid.addValue( format.formatValue( percent ) );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
+ grid.addValue( format.formatValue( percent ) ).addEmptyValues( 6 );
// Add empty row
- grid.addRow();
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
+ grid.addRow().addEmptyValues( 8 );
// Summary by stage
grid.addRow();
- grid.addValue( i18n.getString( "summary_by_stage" ) );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
- grid.addValue( "" );
+ grid.addValue( i18n.getString( "summary_by_stage" ) ).addEmptyValues( 7 );
// Add titles for stage details
@@ -635,7 +509,7 @@
if ( type == Program.SINGLE_EVENT_WITH_REGISTRATION )
{
- // Add a new program-instance
+ // Add a new program instance
programInstance = new ProgramInstance();
programInstance.setEnrollmentDate( executionDate );
programInstance.setDateOfIncident( executionDate );
@@ -650,7 +524,7 @@
Collection<ProgramInstance> programInstances = programInstanceService.getProgramInstances( program );
if ( programInstances == null || programInstances.size() == 0 )
{
- // Add a new program-instance if it doesn't exist
+ // Add a new program instance if it doesn't exist
programInstance = new ProgramInstance();
programInstance.setEnrollmentDate( executionDate );
programInstance.setDateOfIncident( executionDate );
@@ -664,7 +538,7 @@
}
}
- // Add a new program-stage-instance
+ // Add a new program stage instance
ProgramStageInstance programStageInstance = new ProgramStageInstance();
programStageInstance.setProgramInstance( programInstance );
programStageInstance.setProgramStage( programStage );
@@ -677,23 +551,6 @@
return programStageInstance;
}
- @Override
- public Grid searchEvents( ProgramStage programStage, List<TabularEventColumn> columns,
- Collection<Integer> organisationUnits, Date startDate, Date endDate, Boolean completed, Integer min,
- Integer max, I18n i18n )
- {
- return programStageInstanceStore.searchEvent( programStage, organisationUnits, columns, startDate, endDate,
- completed, min, max, i18n );
- }
-
- @Override
- public int searchEventsCount( ProgramStage programStage, List<TabularEventColumn> columns,
- Collection<Integer> organisationUnits, Boolean completed, Date startDate, Date endDate )
- {
- return programStageInstanceStore.searchEventsCount( programStage, columns, organisationUnits, startDate,
- endDate, completed );
- }
-
// -------------------------------------------------------------------------
// Supportive methods
// -------------------------------------------------------------------------
@@ -723,5 +580,4 @@
return outboundSms;
}
-
-}
\ No newline at end of file
+}
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramInstanceStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramInstanceStore.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramInstanceStore.java 2014-05-12 09:56:39 +0000
@@ -90,8 +90,10 @@
return new ArrayList<ProgramInstance>();
}
- return getCriteria( Restrictions.in( "program", programs ) ).createAlias( "entityInstance", "entityInstance" )
- .add( Restrictions.eq( "entityInstance.organisationUnit", organisationUnit ) ).list();
+ return getCriteria(
+ Restrictions.in( "program", programs ) ).
+ createAlias( "entityInstance", "entityInstance" ).
+ add( Restrictions.eq( "entityInstance.organisationUnit", organisationUnit ) ).list();
}
@Override
@@ -103,9 +105,11 @@
return new ArrayList<ProgramInstance>();
}
- return getCriteria( Restrictions.eq( "status", status ), Restrictions.in( "program", programs ) )
- .createAlias( "entityInstance", "entityInstance" ).add( Restrictions.eq( "entityInstance.organisationUnit", organisationUnit ) )
- .list();
+ return getCriteria(
+ Restrictions.eq( "status", status ),
+ Restrictions.in( "program", programs ) ).
+ createAlias( "entityInstance", "entityInstance" ).
+ add( Restrictions.eq( "entityInstance.organisationUnit", organisationUnit ) ).list();
}
@SuppressWarnings( "unchecked" )
@@ -147,14 +151,22 @@
@SuppressWarnings( "unchecked" )
public Collection<ProgramInstance> get( Program program, OrganisationUnit organisationUnit, Integer min, Integer max )
{
- Criteria criteria = getCriteria( Restrictions.eq( "program", program ), Restrictions.isNull( "endDate" ) )
- .add( Restrictions.eq( "entityInstance.organisationUnit", organisationUnit ) ).createAlias( "entityInstance", "entityInstance" )
- .addOrder( Order.asc( "entityInstance.id" ) );
+ Criteria criteria = getCriteria(
+ Restrictions.eq( "program", program ), Restrictions.isNull( "endDate" ) ).
+ add( Restrictions.eq( "entityInstance.organisationUnit", organisationUnit ) ).
+ createAlias( "entityInstance", "entityInstance" ).
+ addOrder( Order.asc( "entityInstance.id" ) );
- if ( min != null && max != null )
- {
- criteria.setFirstResult( min ).setMaxResults( max );
- }
+ if ( min != null )
+ {
+ criteria.setFirstResult( min );
+ }
+
+ if ( max != null )
+ {
+ criteria.setMaxResults( max );
+ }
+
return criteria.list();
}
@@ -162,10 +174,14 @@
public Collection<ProgramInstance> get( Program program, OrganisationUnit organisationUnit, Date startDate,
Date endDate )
{
- return getCriteria( Restrictions.eq( "program", program ), Restrictions.isNull( "endDate" ),
- Restrictions.ge( "enrollmentDate", startDate ), Restrictions.le( "enrollmentDate", endDate ) )
- .createAlias( "entityInstance", "entityInstance" ).add( Restrictions.eq( "entityInstance.organisationUnit", organisationUnit ) )
- .addOrder( Order.asc( "entityInstance.id" ) ).list();
+ return getCriteria(
+ Restrictions.eq( "program", program ),
+ Restrictions.isNull( "endDate" ),
+ Restrictions.ge( "enrollmentDate", startDate ),
+ Restrictions.le( "enrollmentDate", endDate ) ).
+ createAlias( "entityInstance", "entityInstance" ).
+ add( Restrictions.eq( "entityInstance.organisationUnit", organisationUnit ) ).
+ addOrder( Order.asc( "entityInstance.id" ) ).list();
}
@SuppressWarnings( "unchecked" )
@@ -177,41 +193,54 @@
.createAlias( "entityInstance", "entityInstance" ).createAlias( "entityInstance.organisationUnit", "organisationUnit" )
.add( Restrictions.in( "organisationUnit.id", orgunitIds ) ).addOrder( Order.asc( "entityInstance.id" ) );
- if ( min != null && max != null )
- {
- criteria.setFirstResult( min ).setMaxResults( max );
- }
-
+ if ( min != null )
+ {
+ criteria.setFirstResult( min );
+ }
+
+ if ( max != null )
+ {
+ criteria.setMaxResults( max );
+ }
+
return criteria.list();
}
public int count( Program program, OrganisationUnit organisationUnit )
{
- Number rs = (Number) getCriteria( Restrictions.eq( "program", program ), Restrictions.isNull( "endDate" ) )
- .createAlias( "entityInstance", "entityInstance" ).add( Restrictions.eq( "entityInstance.organisationUnit", organisationUnit ) )
- .setProjection( Projections.rowCount() ).uniqueResult();
+ Number rs = (Number) getCriteria(
+ Restrictions.eq( "program", program ), Restrictions.isNull( "endDate" ) ).
+ createAlias( "entityInstance", "entityInstance" ).
+ add( Restrictions.eq( "entityInstance.organisationUnit", organisationUnit ) ).
+ setProjection( Projections.rowCount() ).uniqueResult();
+
return rs != null ? rs.intValue() : 0;
}
public int count( Program program, Collection<Integer> orgunitIds, Date startDate, Date endDate )
{
- Number rs = (Number) getCriteria( Restrictions.eq( "program", program ),
- Restrictions.ge( "enrollmentDate", startDate ), Restrictions.le( "enrollmentDate", endDate ) )
- .createAlias( "entityInstance", "entityInstance" ).createAlias( "entityInstance.organisationUnit", "organisationUnit" )
- .add( Restrictions.in( "organisationUnit.id", orgunitIds ) ).setProjection( Projections.rowCount() )
- .uniqueResult();
+ Number rs = (Number) getCriteria(
+ Restrictions.eq( "program", program ),
+ Restrictions.ge( "enrollmentDate", startDate ),
+ Restrictions.le( "enrollmentDate", endDate ) ).
+ createAlias( "entityInstance", "entityInstance" ).
+ createAlias( "entityInstance.organisationUnit", "organisationUnit" ).
+ add( Restrictions.in( "organisationUnit.id", orgunitIds ) ).
+ setProjection( Projections.rowCount() ).uniqueResult();
return rs != null ? rs.intValue() : 0;
}
- public int countByStatus( Integer status, Program program, Collection<Integer> orgunitIds, Date startDate,
- Date endDate )
+ public int countByStatus( Integer status, Program program, Collection<Integer> orgunitIds, Date startDate, Date endDate )
{
- Number rs = (Number) getCriteria( Restrictions.eq( "program", program ),
- Restrictions.between( "enrollmentDate", startDate, endDate ) ).createAlias( "entityInstance", "entityInstance" )
- .createAlias( "entityInstance.organisationUnit", "organisationUnit" )
- .add( Restrictions.in( "organisationUnit.id", orgunitIds ) ).add( Restrictions.eq( "status", status ) )
- .setProjection( Projections.rowCount() ).uniqueResult();
+ Number rs = (Number) getCriteria(
+ Restrictions.eq( "program", program ),
+ Restrictions.between( "enrollmentDate", startDate, endDate ) ).
+ createAlias( "entityInstance", "entityInstance" ).
+ createAlias( "entityInstance.organisationUnit", "organisationUnit" ).
+ add( Restrictions.in( "organisationUnit.id", orgunitIds ) ).
+ add( Restrictions.eq( "status", status ) ).
+ setProjection( Projections.rowCount() ).uniqueResult();
return rs != null ? rs.intValue() : 0;
}
@@ -220,12 +249,16 @@
public Collection<ProgramInstance> getByStatus( Integer status, Program program, Collection<Integer> orgunitIds,
Date startDate, Date endDate )
{
- return getCriteria( Restrictions.eq( "program", program ),
- Restrictions.between( "enrollmentDate", startDate, endDate ) ).createAlias( "entityInstance", "entityInstance" )
- .createAlias( "entityInstance.organisationUnit", "organisationUnit" )
- .add( Restrictions.in( "organisationUnit.id", orgunitIds ) ).add( Restrictions.eq( "status", status ) )
- .list();
+ return getCriteria(
+ Restrictions.eq( "program", program ),
+ Restrictions.between( "enrollmentDate", startDate, endDate ) ).
+ createAlias( "entityInstance", "entityInstance" ).
+ createAlias( "entityInstance.organisationUnit", "organisationUnit" ).
+ add( Restrictions.in( "organisationUnit.id", orgunitIds ) ).
+ add( Restrictions.eq( "status", status ) ).list();
}
+
+ //TODO from here this class must be rewritten
public Collection<SchedulingProgramObject> getSendMesssageEvents( String dateToCompare )
{
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageDataElementStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageDataElementStore.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageDataElementStore.java 2014-05-12 09:56:39 +0000
@@ -42,7 +42,6 @@
/**
* @author Viet Nguyen
- * @version $Id$
*/
public class HibernateProgramStageDataElementStore
implements ProgramStageDataElementStore
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java 2014-05-12 09:56:39 +0000
@@ -34,7 +34,6 @@
import java.util.Date;
import java.util.HashSet;
import java.util.List;
-import java.util.Set;
import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
@@ -44,8 +43,6 @@
import org.hisp.dhis.common.GridHeader;
import org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectStore;
import org.hisp.dhis.i18n.I18n;
-import org.hisp.dhis.jdbc.StatementBuilder;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.period.PeriodType;
import org.hisp.dhis.program.Program;
import org.hisp.dhis.program.ProgramInstance;
@@ -54,11 +51,9 @@
import org.hisp.dhis.program.ProgramStageInstance;
import org.hisp.dhis.program.ProgramStageInstanceStore;
import org.hisp.dhis.program.SchedulingProgramObject;
-import org.hisp.dhis.program.TabularEventColumn;
import org.hisp.dhis.sms.outbound.OutboundSms;
import org.hisp.dhis.system.grid.GridUtils;
import org.hisp.dhis.system.grid.ListGrid;
-import org.hisp.dhis.system.util.DateUtils;
import org.hisp.dhis.system.util.TextUtils;
import org.hisp.dhis.trackedentity.TrackedEntityInstance;
import org.hisp.dhis.trackedentity.TrackedEntityInstanceReminder;
@@ -82,13 +77,6 @@
this.programInstanceService = programInstanceService;
}
- private StatementBuilder statementBuilder;
-
- public void setStatementBuilder( StatementBuilder statementBuilder )
- {
- this.statementBuilder = statementBuilder;
- }
-
// -------------------------------------------------------------------------
// Implemented methods
// -------------------------------------------------------------------------
@@ -97,9 +85,10 @@
@SuppressWarnings( "unchecked" )
public ProgramStageInstance get( ProgramInstance programInstance, ProgramStage programStage )
{
- List<ProgramStageInstance> list = new ArrayList<ProgramStageInstance>( getCriteria(
- Restrictions.eq( "programInstance", programInstance ), Restrictions.eq( "programStage", programStage ) )
- .addOrder( Order.asc( "id" ) ).list() );
+ List<ProgramStageInstance> list = getCriteria(
+ Restrictions.eq( "programInstance", programInstance ),
+ Restrictions.eq( "programStage", programStage ) ).
+ addOrder( Order.asc( "id" ) ).list();
return list.isEmpty() ? null : list.get( list.size() - 1 );
}
@@ -108,10 +97,10 @@
@SuppressWarnings( "unchecked" )
public Collection<ProgramStageInstance> getAll( ProgramInstance programInstance, ProgramStage programStage )
{
- Criteria criteria = getCriteria( Restrictions.eq( "programInstance", programInstance ),
- Restrictions.eq( "programStage", programStage ) ).addOrder( Order.asc( "id" ) );
-
- return criteria.list();
+ return getCriteria(
+ Restrictions.eq( "programInstance", programInstance ),
+ Restrictions.eq( "programStage", programStage ) )
+ .addOrder( Order.asc( "id" ) ).list();
}
@Override
@@ -125,7 +114,8 @@
@SuppressWarnings( "unchecked" )
public Collection<ProgramStageInstance> get( Collection<ProgramInstance> programInstances, boolean completed )
{
- return getCriteria( Restrictions.in( "programInstance", programInstances ),
+ return getCriteria(
+ Restrictions.in( "programInstance", programInstances ),
Restrictions.eq( "completed", completed ) ).list();
}
@@ -138,15 +128,8 @@
return getQuery( hql ).setEntity( "entityInstance", entityInstance ).setBoolean( "completed", completed ).list();
}
- @Override
- public void removeEmptyEvents( ProgramStage programStage, OrganisationUnit organisationUnit )
- {
- String sql = "delete from programstageinstance where programstageid=" + programStage.getId()
- + " and organisationunitid=" + organisationUnit.getId() + " and programstageinstanceid not in "
- + "(select pdv.programstageinstanceid from trackedentitydatavalue pdv )";
- jdbcTemplate.execute( sql );
- }
-
+ // TODO this class must be re-written from here
+
@Override
public void update( Collection<Integer> programStageInstanceIds, OutboundSms outboundSms )
{
@@ -199,11 +182,7 @@
String programName = rs.getString( "programName" );
String programStageName = rs.getString( "programStageName" );
String daysSinceDueDate = rs.getString( "days_since_due_date" );
- String dueDate = rs.getString( "duedate" ).split( " " )[0];// just
- // get
- // date,
- // remove
- // timestamp
+ String dueDate = rs.getString( "duedate" ).split( " " )[0];
message = message.replace( TrackedEntityInstanceReminder.TEMPLATE_MESSSAGE_PROGRAM_NAME, programName );
message = message.replace( TrackedEntityInstanceReminder.TEMPLATE_MESSSAGE_PROGAM_STAGE_NAME, programStageName );
@@ -507,60 +486,6 @@
return criteria.list();
}
- @Override
- public Grid searchEvent( ProgramStage programStage, Collection<Integer> orgUnits, List<TabularEventColumn> columns,
- Date startDate, Date endDate, Boolean completed, Integer min, Integer max, I18n i18n )
- {
- // ---------------------------------------------------------------------
- // Headers cols
- // ---------------------------------------------------------------------
-
- Grid grid = new ListGrid();
- grid.setTitle( programStage.getDisplayName() );
- grid.setSubtitle( i18n.getString( "from" ) + " " + DateUtils.getMediumDateString( startDate ) + " "
- + i18n.getString( "to" ) + " " + DateUtils.getMediumDateString( endDate ) );
-
- grid.addHeader( new GridHeader( "id", true, true ) );
- grid.addHeader( new GridHeader( programStage.getReportDateDescription(), false, true ) );
-
- Collection<String> deKeys = new HashSet<String>();
- for ( TabularEventColumn column : columns )
- {
- String deKey = "element_" + column.getIdentifier();
- if ( !deKeys.contains( deKey ) )
- {
- grid.addHeader( new GridHeader( column.getName(), column.isHidden(), true ) );
- deKeys.add( deKey );
- }
- }
-
- grid.addHeader( new GridHeader( "Complete", true, true ) );
- grid.addHeader( new GridHeader( "TrackedEntityInstanceId", true, true ) );
-
- // ---------------------------------------------------------------------
- // Get SQL and build grid
- // ---------------------------------------------------------------------
-
- String sql = getTabularReportSql( false, programStage, columns, orgUnits, startDate, endDate, completed, min,
- max );
-
- SqlRowSet rowSet = jdbcTemplate.queryForRowSet( sql );
-
- GridUtils.addRows( grid, rowSet );
-
- return grid;
- }
-
- @Override
- public int searchEventsCount( ProgramStage programStage, List<TabularEventColumn> columns,
- Collection<Integer> organisationUnits, Date startDate, Date endDate, Boolean completed )
- {
- String sql = getTabularReportSql( true, programStage, columns, organisationUnits, startDate, endDate,
- completed, null, null );
-
- return jdbcTemplate.queryForObject( sql, Integer.class );
- }
-
// ---------------------------------------------------------------------
// Supportive methods
// ---------------------------------------------------------------------
@@ -719,101 +644,4 @@
+ " and ( DATE(now()) - DATE(psi.duedate) ) = prm.daysallowedsendmessage "
+ " and prm.whentosend is null " + " and prm.sendto = " + TrackedEntityInstanceReminder.SEND_TO_USER_GROUP;
}
-
- private String getTabularReportSql( boolean count, ProgramStage programStage, List<TabularEventColumn> columns,
- Collection<Integer> orgUnits, Date startDate, Date endDate, Boolean completed, Integer min, Integer max )
- {
- Set<String> deKeys = new HashSet<String>();
- String selector = count ? "count(*) " : "* ";
-
- String sql = "select " + selector + "from ( select DISTINCT psi.programstageinstanceid, psi.executiondate,";
- String where = "";
- String operator = "where ";
-
- for ( TabularEventColumn column : columns )
- {
- if ( column.isNumberDataElement() )
- {
- String deKey = "element_" + column.getIdentifier();
- if ( !deKeys.contains( deKey ) )
- {
- sql += "(select cast( value as "
- + statementBuilder.getDoubleColumnType()
- + " ) from trackedentitydatavalue where programstageinstanceid=psi.programstageinstanceid and dataelementid="
- + column.getIdentifier() + ") as element_" + column.getIdentifier() + ",";
- deKeys.add( deKey );
- }
-
- if ( column.hasQuery() )
- {
- where += operator + "element_" + column.getIdentifier() + " " + column.getOperator() + " "
- + column.getQuery() + " ";
- operator = "and ";
- }
- }
- else if ( column.isDataElement() )
- {
- String deKey = "element_" + column.getIdentifier();
- if ( !deKeys.contains( deKey ) )
- {
- sql += "(select value from trackedentitydatavalue where programstageinstanceid=psi.programstageinstanceid and dataelementid="
- + column.getIdentifier() + ") as element_" + column.getIdentifier() + ",";
- deKeys.add( deKey );
- }
-
- if ( column.hasQuery() )
- {
- if ( column.isDateType() )
- {
- where += operator + "element_" + column.getIdentifier() + " " + column.getOperator() + " "
- + column.getQuery() + " ";
- }
- else
- {
- where += operator + "lower(element_" + column.getIdentifier() + ") " + column.getOperator()
- + " " + column.getQuery() + " ";
- }
- operator = "and ";
- }
- }
- }
-
- sql += " psi.completed ";
-
- sql += "from programstageinstance psi ";
- sql += "left join programinstance pi on (psi.programinstanceid=pi.programinstanceid) ";
- sql += "left join trackedentityinstance p on (pi.trackedentityinstanceid=p.trackedentityinstanceid) ";
- sql += "join organisationunit ou on (ou.organisationunitid=psi.organisationunitid) ";
-
- sql += "where psi.programstageid=" + programStage.getId() + " ";
-
- if ( startDate != null && endDate != null )
- {
- String sDate = DateUtils.getMediumDateString( startDate );
- String eDate = DateUtils.getMediumDateString( endDate );
-
- sql += "and psi.executiondate >= '" + sDate + "' ";
- sql += "and psi.executiondate <= '" + eDate + "' ";
- }
-
- if ( orgUnits != null )
- {
- sql += "and ou.organisationunitid in (" + TextUtils.getCommaDelimitedString( orgUnits ) + ") ";
- }
- if ( completed != null )
- {
- sql += "and psi.completed=" + completed + " ";
- }
-
- sql += "order by psi.executiondate desc ";
-
- sql += " ";
- sql += ") as tabular ";
- sql += where; // filters
- sql = sql.substring( 0, sql.length() - 1 ) + " "; // Remove last comma
- sql += (min != null && max != null) ? statementBuilder.limitRecord( min, max ) : "";
-
- return sql;
- }
-
}
\ No newline at end of file
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageStore.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageStore.java 2014-05-12 09:56:39 +0000
@@ -48,7 +48,8 @@
public ProgramStage getByNameAndProgram( String name, Program program )
{
- return (ProgramStage) getCriteria( Restrictions.eq( "name", name ), Restrictions.eq( "program", program ) )
- .uniqueResult();
+ return (ProgramStage) getCriteria(
+ Restrictions.eq( "name", name ),
+ Restrictions.eq( "program", program ) ).uniqueResult();
}
}
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStore.java 2014-04-06 17:03:28 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStore.java 2014-05-12 09:56:39 +0000
@@ -94,6 +94,7 @@
criteria2.add( Restrictions.eq( "orgunitMember.id", organisationUnit.getId() ) );
Collection<Program> programs = new HashSet<Program>();
+
if ( criteria1.list() != null )
{
programs.addAll( criteria1.list() );
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/relationship/hibernate/HibernateRelationshipStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/relationship/hibernate/HibernateRelationshipStore.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/relationship/hibernate/HibernateRelationshipStore.java 2014-05-12 09:56:39 +0000
@@ -48,7 +48,9 @@
@SuppressWarnings( "unchecked" )
public Collection<Relationship> getForTrackedEntityInstance( TrackedEntityInstance instance )
{
- return getCriteria( Restrictions.disjunction().add( Restrictions.eq( "entityInstanceA", instance ) ).add(
+ return getCriteria(
+ Restrictions.disjunction().add(
+ Restrictions.eq( "entityInstanceA", instance ) ).add(
Restrictions.eq( "entityInstanceB", instance ) ) ).list();
}
@@ -61,15 +63,17 @@
@SuppressWarnings( "unchecked" )
public Collection<Relationship> get( TrackedEntityInstance entityInstanceA, RelationshipType relationshipType )
{
- return getCriteria( Restrictions.eq( "entityInstanceA", entityInstanceA ),
+ return getCriteria(
+ Restrictions.eq( "entityInstanceA", entityInstanceA ),
Restrictions.eq( "relationshipType", relationshipType ) ).list();
}
public Relationship get( TrackedEntityInstance entityInstanceA, TrackedEntityInstance entityInstanceB, RelationshipType relationshipType )
{
- return (Relationship) getCriteria( Restrictions.eq( "entityInstanceA", entityInstanceA ),
- Restrictions.eq( "entityInstanceB", entityInstanceB ), Restrictions.eq( "relationshipType", relationshipType ) )
- .uniqueResult();
+ return (Relationship) getCriteria(
+ Restrictions.eq( "entityInstanceA", entityInstanceA ),
+ Restrictions.eq( "entityInstanceB", entityInstanceB ),
+ Restrictions.eq( "relationshipType", relationshipType ) ).uniqueResult();
}
public Relationship get( TrackedEntityInstance entityInstanceA, TrackedEntityInstance entityInstanceB )
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/relationship/hibernate/HibernateRelationshipTypeStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/relationship/hibernate/HibernateRelationshipTypeStore.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/relationship/hibernate/HibernateRelationshipTypeStore.java 2014-05-12 09:56:39 +0000
@@ -42,7 +42,8 @@
{
public RelationshipType getRelationshipType( String aIsToB, String bIsToA )
{
- return (RelationshipType) getCriteria( Restrictions.eq( "aIsToB", aIsToB ), Restrictions.eq( "bIsToA", bIsToA ) )
- .uniqueResult();
+ return (RelationshipType) getCriteria(
+ Restrictions.eq( "aIsToB", aIsToB ),
+ Restrictions.eq( "bIsToA", bIsToA ) ).uniqueResult();
}
}
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityAttributeGroupService.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityAttributeGroupService.java 2014-04-14 15:59:05 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityAttributeGroupService.java 2014-05-12 09:56:39 +0000
@@ -123,8 +123,7 @@
}
@Override
- public Collection<? extends TrackedEntityAttributeGroup> getTrackedEntityAttributeGroupsBetweenByName( String name,
- int min, int max )
+ public Collection<? extends TrackedEntityAttributeGroup> getTrackedEntityAttributeGroupsBetweenByName( String name, int min, int max )
{
return attributeGroupStore.getAllLikeNameOrderedName( name, min, max );
}
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceReminderService.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceReminderService.java 2014-03-27 23:40:38 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceReminderService.java 2014-05-12 09:56:39 +0000
@@ -141,7 +141,6 @@
value = attributeValue.getValue();
}
}
-
}
templateMessage = templateMessage.replace( match, value );
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java 2014-05-04 14:04:41 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java 2014-05-12 09:56:39 +0000
@@ -37,7 +37,6 @@
import static org.hisp.dhis.trackedentity.TrackedEntityInstanceQueryParams.TRACKED_ENTITY_INSTANCE_ID;
import java.lang.reflect.Type;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
@@ -56,6 +55,7 @@
import org.hisp.dhis.common.OrganisationUnitSelectionMode;
import org.hisp.dhis.common.Pager;
import org.hisp.dhis.common.QueryItem;
+import org.hisp.dhis.common.QueryOperator;
import org.hisp.dhis.event.EventStatus;
import org.hisp.dhis.i18n.I18nFormat;
import org.hisp.dhis.organisationunit.OrganisationUnit;
@@ -442,7 +442,9 @@
if ( operator != null && filter != null )
{
- return new QueryItem( at, operator, filter, at.isNumericType() );
+ QueryOperator op = QueryOperator.fromString( operator );
+
+ return new QueryItem( at, op, filter, at.isNumericType() );
}
else
{
@@ -457,7 +459,7 @@
}
@Override
- public int createTrackedEntityInstance( TrackedEntityInstance instance, Integer representativeId,
+ public int createTrackedEntityInstance( TrackedEntityInstance instance, String representativeId,
Integer relationshipTypeId, Set<TrackedEntityAttributeValue> attributeValues )
{
int id = addTrackedEntityInstance( instance );
@@ -474,7 +476,7 @@
if ( representativeId != null )
{
- TrackedEntityInstance representative = trackedEntityInstanceStore.get( representativeId );
+ TrackedEntityInstance representative = trackedEntityInstanceStore.getByUid( representativeId );
if ( representative != null )
{
instance.setRepresentative( representative );
@@ -526,16 +528,10 @@
}
@Override
- public Collection<TrackedEntityInstance> getAllTrackedEntityInstances()
- {
- return trackedEntityInstanceStore.getAll();
- }
-
- @Override
public Collection<TrackedEntityInstance> getTrackedEntityInstancesForMobile( String searchText, int orgUnitId )
{
Set<TrackedEntityInstance> entityInstances = new HashSet<TrackedEntityInstance>();
- entityInstances.addAll( getTrackedEntityInstancesByPhone( searchText, 0, Integer.MAX_VALUE ) );
+ entityInstances.addAll( trackedEntityInstanceStore.getByPhoneNumber( searchText, 0, Integer.MAX_VALUE ) );
if ( orgUnitId != 0 )
{
@@ -563,74 +559,7 @@
}
@Override
- public Collection<TrackedEntityInstance> getTrackedEntityInstances( Program program )
- {
- return trackedEntityInstanceStore.getByProgram( program, 0, Integer.MAX_VALUE );
- }
-
- @Override
- public Collection<TrackedEntityInstance> getTrackedEntityInstances( OrganisationUnit organisationUnit,
- Program program )
- {
- return trackedEntityInstanceStore.getByOrgUnitProgram( organisationUnit, program, 0, Integer.MAX_VALUE );
- }
-
- @Override
- public Collection<TrackedEntityInstance> getTrackedEntityInstance( Integer attributeId, String value )
- {
- TrackedEntityAttribute attribute = attributeService.getTrackedEntityAttribute( attributeId );
- if ( attribute != null )
- {
- return attributeValueService.getTrackedEntityInstance( attribute, value );
- }
-
- return null;
- }
-
- @Override
- public Collection<TrackedEntityInstance> sortTrackedEntityInstancesByAttribute(
- Collection<TrackedEntityInstance> entityInstances, TrackedEntityAttribute attribute )
- {
- Collection<TrackedEntityInstance> sortedTrackedEntityInstances = new ArrayList<TrackedEntityInstance>();
-
- // ---------------------------------------------------------------------
- // Better to fetch all attribute values at once than fetching the
- // required attribute value of each instance using loop
- // ---------------------------------------------------------------------
-
- Collection<TrackedEntityAttributeValue> attributeValues = attributeValueService
- .getTrackedEntityAttributeValues( entityInstances );
-
- if ( attributeValues != null )
- {
- for ( TrackedEntityAttributeValue attributeValue : attributeValues )
- {
- if ( attribute == attributeValue.getAttribute() )
- {
- sortedTrackedEntityInstances.add( attributeValue.getEntityInstance() );
- entityInstances.remove( attributeValue.getEntityInstance() );
- }
- }
- }
-
- // ---------------------------------------------------------------------
- // Make sure all entityInstances are in the sorted list - because all
- // entityInstances might not have the sorting attribute/value
- // ---------------------------------------------------------------------
-
- sortedTrackedEntityInstances.addAll( entityInstances );
-
- return sortedTrackedEntityInstances;
- }
-
- @Override
- public int countGetTrackedEntityInstancesByOrgUnit( OrganisationUnit organisationUnit )
- {
- return trackedEntityInstanceStore.countListTrackedEntityInstanceByOrgunit( organisationUnit );
- }
-
- @Override
- public void updateTrackedEntityInstance( TrackedEntityInstance instance, Integer representativeId,
+ public void updateTrackedEntityInstance( TrackedEntityInstance instance, String representativeId,
Integer relationshipTypeId, List<TrackedEntityAttributeValue> valuesForSave,
List<TrackedEntityAttributeValue> valuesForUpdate, Collection<TrackedEntityAttributeValue> valuesForDelete )
{
@@ -653,7 +582,7 @@
if ( shouldSaveRepresentativeInformation( instance, representativeId ) )
{
- TrackedEntityInstance representative = trackedEntityInstanceStore.get( representativeId );
+ TrackedEntityInstance representative = trackedEntityInstanceStore.getByUid( representativeId );
if ( representative != null )
{
@@ -676,14 +605,14 @@
}
}
- private boolean shouldSaveRepresentativeInformation( TrackedEntityInstance instance, Integer representativeId )
+ private boolean shouldSaveRepresentativeInformation( TrackedEntityInstance instance, String representativeId )
{
- if ( representativeId == null )
+ if ( representativeId == null || representativeId.isEmpty() )
{
return false;
}
- return instance.getRepresentative() == null || !(instance.getRepresentative().getId() == representativeId);
+ return instance.getRepresentative() == null || !(instance.getRepresentative().getUid() == representativeId);
}
@Override
@@ -694,12 +623,6 @@
}
@Override
- public int countGetTrackedEntityInstancesByOrgUnitProgram( OrganisationUnit organisationUnit, Program program )
- {
- return trackedEntityInstanceStore.countGetTrackedEntityInstancesByOrgUnitProgram( organisationUnit, program );
- }
-
- @Override
public Object getObjectValue( String property, String value, I18nFormat format )
{
try
@@ -741,21 +664,6 @@
}
@Override
- public List<Integer> getProgramStageInstances( List<String> searchKeys, Collection<OrganisationUnit> orgunits,
- Boolean followup, Integer statusEnrollment, Integer min, Integer max )
- {
- return trackedEntityInstanceStore.getProgramStageInstances( searchKeys, orgunits, followup, null,
- statusEnrollment, min, max );
- }
-
- @Override
- public Collection<TrackedEntityInstance> getTrackedEntityInstancesByPhone( String phoneNumber, Integer min,
- Integer max )
- {
- return trackedEntityInstanceStore.getByPhoneNumber( phoneNumber, min, max );
- }
-
- @Override
public String validateTrackedEntityInstance( TrackedEntityInstance instance, Program program, I18nFormat format )
{
return trackedEntityInstanceStore.validate( instance, program, format );
@@ -773,7 +681,7 @@
{
Set<TrackedEntityInstance> entityInstances = new HashSet<TrackedEntityInstance>();
- entityInstances.addAll( getTrackedEntityInstancesByAttributeValue( searchText, attributeId, 0,
+ entityInstances.addAll( trackedEntityInstanceStore.getByAttributeValue( searchText, attributeId, 0,
Integer.MAX_VALUE ) );
if ( orgUnitId != 0 )
@@ -793,34 +701,10 @@
return entityInstances;
}
-
- @Override
- public Collection<TrackedEntityInstance> getTrackedEntityInstancesByAttributeValue( String searchText,
- int attributeId, Integer min, Integer max )
- {
- return trackedEntityInstanceStore.getByAttributeValue( searchText, attributeId, min, max );
- }
-
- @Override
- public Collection<TrackedEntityInstance> searchTrackedEntityInstances( List<String> searchKeys,
- Collection<OrganisationUnit> orgunits, Boolean followup, Collection<TrackedEntityAttribute> attributes,
- Integer statusEnrollment, Integer min, Integer max )
- {
- return trackedEntityInstanceStore.search( searchKeys, orgunits, followup, attributes, statusEnrollment, min,
- max );
- }
-
- @Override
- public int countSearchTrackedEntityInstances( List<String> searchKeys, Collection<OrganisationUnit> orgunits,
- Boolean followup, Integer statusEnrollment )
- {
- return trackedEntityInstanceStore.countSearch( searchKeys, orgunits, followup, statusEnrollment );
- }
@Override
public Collection<TrackedEntityInstance> getTrackedEntityInstances( TrackedEntity trackedEntity )
{
return trackedEntityInstanceStore.get( trackedEntity );
}
-
}
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityAuditStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityAuditStore.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityAuditStore.java 2014-05-12 09:56:39 +0000
@@ -57,8 +57,10 @@
@Override
public TrackedEntityAudit get( Integer entityInstanceId, String visitor, Date date, String accessedModule )
{
- return (TrackedEntityAudit) getCriteria( Restrictions.eq( "entityInstance.id", entityInstanceId ),
- Restrictions.eq( "visitor", visitor ), Restrictions.eq( "date", date ),
+ return (TrackedEntityAudit) getCriteria(
+ Restrictions.eq( "entityInstance.id", entityInstanceId ),
+ Restrictions.eq( "visitor", visitor ),
+ Restrictions.eq( "date", date ),
Restrictions.eq( "accessedModule", accessedModule ) ).uniqueResult();
}
}
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java 2014-05-04 14:04:41 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java 2014-05-12 09:56:39 +0000
@@ -36,30 +36,20 @@
import static org.hisp.dhis.system.util.TextUtils.removeLastAnd;
import static org.hisp.dhis.system.util.TextUtils.removeLastComma;
import static org.hisp.dhis.system.util.TextUtils.removeLastOr;
-import static org.hisp.dhis.trackedentity.TrackedEntityInstance.PREFIX_PROGRAM;
-import static org.hisp.dhis.trackedentity.TrackedEntityInstance.PREFIX_PROGRAM_EVENT_BY_STATUS;
-import static org.hisp.dhis.trackedentity.TrackedEntityInstance.PREFIX_PROGRAM_INSTANCE;
-import static org.hisp.dhis.trackedentity.TrackedEntityInstance.PREFIX_PROGRAM_STAGE;
-import static org.hisp.dhis.trackedentity.TrackedEntityInstance.PREFIX_TRACKED_ENTITY_ATTRIBUTE;
import static org.hisp.dhis.trackedentity.TrackedEntityInstanceQueryParams.CREATED_ID;
import static org.hisp.dhis.trackedentity.TrackedEntityInstanceQueryParams.LAST_UPDATED_ID;
import static org.hisp.dhis.trackedentity.TrackedEntityInstanceQueryParams.ORG_UNIT_ID;
import static org.hisp.dhis.trackedentity.TrackedEntityInstanceQueryParams.TRACKED_ENTITY_ID;
import static org.hisp.dhis.trackedentity.TrackedEntityInstanceQueryParams.TRACKED_ENTITY_INSTANCE_ID;
-import java.sql.ResultSet;
-import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.Projections;
@@ -73,10 +63,8 @@
import org.hisp.dhis.i18n.I18nFormat;
import org.hisp.dhis.jdbc.StatementBuilder;
import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.organisationunit.OrganisationUnitService;
import org.hisp.dhis.program.Program;
import org.hisp.dhis.program.ProgramInstance;
-import org.hisp.dhis.program.ProgramStageInstance;
import org.hisp.dhis.program.ProgramStatus;
import org.hisp.dhis.system.util.SqlHelper;
import org.hisp.dhis.system.util.Timer;
@@ -88,7 +76,6 @@
import org.hisp.dhis.trackedentity.TrackedEntityInstanceStore;
import org.hisp.dhis.trackedentityattributevalue.TrackedEntityAttributeValue;
import org.hisp.dhis.validation.ValidationCriteria;
-import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.support.rowset.SqlRowSet;
import org.springframework.transaction.annotation.Transactional;
@@ -100,8 +87,6 @@
extends HibernateIdentifiableObjectStore<TrackedEntityInstance>
implements TrackedEntityInstanceStore
{
- private static final Log log = LogFactory.getLog( HibernateTrackedEntityInstanceStore.class );
-
private static final Map<ProgramStatus, Integer> PROGRAM_STATUS_MAP = new HashMap<ProgramStatus, Integer>()
{
{
@@ -115,13 +100,6 @@
// Dependencies
// -------------------------------------------------------------------------
- private OrganisationUnitService organisationUnitService;
-
- public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
- {
- this.organisationUnitService = organisationUnitService;
- }
-
private StatementBuilder statementBuilder;
public void setStatementBuilder( StatementBuilder statementBuilder )
@@ -454,45 +432,6 @@
@Override
@SuppressWarnings( "unchecked" )
- public Collection<TrackedEntityInstance> getByProgram( Program program, Integer min, Integer max )
- {
- String hql = "select pt from TrackedEntityInstance pt inner join pt.programInstances pi "
- + "where pi.program = :program and pi.status = :status";
-
- Query query = getQuery( hql );
- query.setEntity( "program", program );
- query.setInteger( "status", ProgramInstance.STATUS_ACTIVE );
-
- return query.list();
- }
-
- @Override
- public int countListTrackedEntityInstanceByOrgunit( OrganisationUnit organisationUnit )
- {
- Query query = getQuery( "select count(p.id) from TrackedEntityInstance p where p.organisationUnit.id=:orgUnitId " );
-
- query.setParameter( "orgUnitId", organisationUnit.getId() );
-
- Number rs = (Number) query.uniqueResult();
-
- return rs != null ? rs.intValue() : 0;
- }
-
- @Override
- public int countGetTrackedEntityInstancesByOrgUnitProgram( OrganisationUnit organisationUnit, Program program )
- {
- String sql = "select count(p.trackedentityinstanceid) from trackedentityinstance p join programinstance pi on p.trackedentityinstanceid=pi.trackedentityinstanceid "
- + "where p.organisationunitid="
- + organisationUnit.getId()
- + " and pi.programid="
- + program.getId()
- + " and pi.status=" + ProgramInstance.STATUS_ACTIVE;
-
- return jdbcTemplate.queryForObject( sql, Integer.class );
- }
-
- @Override
- @SuppressWarnings( "unchecked" )
public Collection<TrackedEntityInstance> getRepresentatives( TrackedEntityInstance instance )
{
String hql = "select distinct p from TrackedEntityInstance p where p.representative = :representative order by p.id DESC";
@@ -643,416 +582,6 @@
}
}
- @Override
- public List<Integer> getProgramStageInstances( List<String> searchKeys, Collection<OrganisationUnit> orgunits,
- Boolean followup, Collection<TrackedEntityAttribute> attributes, Integer statusEnrollment, Integer min,
- Integer max )
- {
- String sql = searchTrackedEntityInstanceSql( false, searchKeys, orgunits, followup, attributes,
- statusEnrollment, min, max );
-
- List<Integer> programStageInstanceIds = new ArrayList<Integer>();
- try
- {
- programStageInstanceIds = jdbcTemplate.query( sql, new RowMapper<Integer>()
- {
- public Integer mapRow( ResultSet rs, int rowNum )
- throws SQLException
- {
- return rs.getInt( "programstageinstanceid" );
- }
- } );
- }
- catch ( Exception ex )
- {
- ex.printStackTrace();
- }
-
- return programStageInstanceIds;
- }
-
- private String searchTrackedEntityInstanceSql( boolean count, List<String> searchKeys,
- Collection<OrganisationUnit> orgunits, Boolean followup, Collection<TrackedEntityAttribute> attributes,
- Integer statusEnrollment, Integer min, Integer max )
- {
- String selector = count ? "count(*) " : "* ";
- String sql = "select " + selector + " from ( select distinct p.trackedentityinstanceid,";
-
- if ( attributes != null )
- {
- for ( TrackedEntityAttribute attribute : attributes )
- {
- sql += "(select value from trackedentityattributevalue where trackedentityinstanceid=p.trackedentityinstanceid and trackedentityattributeid="
- + attribute.getId() + " ) as " + PREFIX_TRACKED_ENTITY_ATTRIBUTE + "_" + attribute.getId() + " ,";
- }
- }
-
- String instanceWhere = "";
- String instanceOperator = " where ";
- String instanceGroupBy = " GROUP BY p.trackedentityinstanceid ";
- String otherWhere = "";
- String operator = " where ";
- String orderBy = "";
- boolean isSearchEvent = false;
- boolean isPriorityEvent = false;
- Collection<Integer> orgunitChilrenIds = null;
-
- if ( orgunits != null )
- {
- orgunitChilrenIds = getOrgunitChildren( orgunits );
- }
-
- for ( String searchKey : searchKeys )
- {
- String[] keys = searchKey.split( "_" );
-
- if ( keys.length <= 1 || keys[1] == null || keys[1].trim().isEmpty() || keys[1].equals( "null" ) )
- {
- continue;
- }
-
- String id = keys[1];
- String value = "";
-
- if ( keys.length >= 3 )
- {
- value = keys[2];
- }
-
- if ( keys[0].equals( PREFIX_TRACKED_ENTITY_ATTRIBUTE ) )
- {
- sql += "(select value from trackedentityattributevalue where trackedentityinstanceid=p.trackedentityinstanceid and trackedentityattributeid="
- + id + " ) as " + PREFIX_TRACKED_ENTITY_ATTRIBUTE + "_" + id + ",";
-
- String[] keyValues = value.split( " " );
- otherWhere += operator + "(";
- String opt = "";
-
- for ( String v : keyValues )
- {
- otherWhere += opt + " lower(" + PREFIX_TRACKED_ENTITY_ATTRIBUTE + "_" + id + ") like '%" + v + "%'";
- opt = "or";
- }
-
- otherWhere += ")";
- operator = " and ";
- }
- else if ( keys[0].equals( PREFIX_PROGRAM ) )
- {
- sql += "(select programid from programinstance pgi where trackedentityinstanceid=p.trackedentityinstanceid and programid="
- + id;
-
- if ( statusEnrollment != null )
- {
- sql += " and pgi.status=" + statusEnrollment;
- }
-
- sql += " limit 1 ) as " + PREFIX_PROGRAM + "_" + id + ",";
- otherWhere += operator + PREFIX_PROGRAM + "_" + id + "=" + id;
- operator = " and ";
- }
- else if ( keys[0].equals( PREFIX_PROGRAM_INSTANCE ) )
- {
- sql += "(select pi."
- + id
- + " from programinstance pi where trackedentityinstanceid=p.trackedentityinstanceid and pi.status=0 ";
-
- if ( keys.length == 5 )
- {
- sql += " and pi.programid=" + keys[4];
- }
- else
- {
- sql += " limit 1 ";
- }
-
- sql += ") as " + PREFIX_PROGRAM_INSTANCE + "_" + id + ",";
- otherWhere += operator + PREFIX_PROGRAM_INSTANCE + "_" + id + "='" + keys[2] + "'";
- operator = " and ";
- }
- else if ( keys[0].equals( PREFIX_PROGRAM_EVENT_BY_STATUS ) )
- {
- isSearchEvent = true;
- isPriorityEvent = Boolean.parseBoolean( keys[5] );
- instanceWhere += instanceOperator + "pgi.trackedentityinstanceid=p.trackedentityinstanceid and ";
- instanceWhere += "pgi.programid=" + id + " and ";
- instanceWhere += "pgi.status=" + ProgramInstance.STATUS_ACTIVE;
-
- String operatorStatus = "";
- String condition = " and ( ";
-
- for ( int index = 6; index < keys.length; index++ )
- {
- int statusEvent = Integer.parseInt( keys[index] );
- switch ( statusEvent )
- {
- case ProgramStageInstance.COMPLETED_STATUS:
- instanceWhere += condition + operatorStatus
- + "( psi.executiondate is not null and psi.executiondate>='" + keys[2]
- + "' and psi.executiondate<='" + keys[3] + "' and psi.completed=true ";
-
- // get events by orgunit children
- if ( keys[4].equals( "-1" ) )
- {
- instanceWhere += " and psi.organisationunitid in( "
- + getCommaDelimitedString( orgunitChilrenIds ) + " )";
- }
-
- // get events by selected orgunit
- else if ( !keys[4].equals( "0" ) )
- {
- instanceWhere += " and psi.organisationunitid=" + getOrgUnitId( keys );
- }
-
- instanceWhere += ")";
- operatorStatus = " OR ";
- condition = "";
- continue;
- case ProgramStageInstance.VISITED_STATUS:
- instanceWhere += condition + operatorStatus
- + "( psi.executiondate is not null and psi.executiondate>='" + keys[2]
- + "' and psi.executiondate<='" + keys[3] + "' and psi.completed=false ";
-
- // get events by orgunit children
- if ( keys[4].equals( "-1" ) )
- {
- instanceWhere += " and psi.organisationunitid in( "
- + getCommaDelimitedString( orgunitChilrenIds ) + " )";
- }
-
- // get events by selected orgunit
- else if ( !keys[4].equals( "0" ) )
- {
- instanceWhere += " and psi.organisationunitid=" + getOrgUnitId( keys );
- }
-
- instanceWhere += ")";
- operatorStatus = " OR ";
- condition = "";
- continue;
- case ProgramStageInstance.FUTURE_VISIT_STATUS:
- instanceWhere += condition + operatorStatus + "( psi.executiondate is null and psi.duedate>='"
- + keys[2] + "' and psi.duedate<='" + keys[3]
- + "' and psi.status is not null and (DATE(now()) - DATE(psi.duedate) <= 0) ";
-
- // get events by orgunit children
- if ( keys[4].equals( "-1" ) )
- {
- instanceWhere += " and p.organisationunitid in( "
- + getCommaDelimitedString( orgunitChilrenIds ) + " )";
- }
-
- // get events by selected orgunit
- else if ( !keys[4].equals( "0" ) )
- {
- instanceWhere += " and p.organisationunitid=" + getOrgUnitId( keys );
- }
-
- instanceWhere += ")";
- operatorStatus = " OR ";
- condition = "";
- continue;
- case ProgramStageInstance.LATE_VISIT_STATUS:
- instanceWhere += condition + operatorStatus + "( psi.executiondate is null and psi.duedate>='"
- + keys[2] + "' and psi.duedate<='" + keys[3]
- + "' and psi.status is not null and (DATE(now()) - DATE(psi.duedate) > 0) ";
-
- // get events by orgunit children
- if ( keys[4].equals( "-1" ) )
- {
- instanceWhere += " and p.organisationunitid in( "
- + getCommaDelimitedString( orgunitChilrenIds ) + " )";
- }
-
- // get events by selected orgunit
- else if ( !keys[4].equals( "0" ) )
- {
- instanceWhere += " and p.organisationunitid=" + getOrgUnitId( keys );
- }
-
- instanceWhere += ")";
- operatorStatus = " OR ";
- condition = "";
- continue;
- case ProgramStageInstance.SKIPPED_STATUS:
- instanceWhere += condition + operatorStatus + "( psi.status=5 and psi.duedate>='" + keys[2]
- + "' and psi.duedate<='" + keys[3] + "' ";
-
- // get events by orgunit children
- if ( keys[4].equals( "-1" ) )
- {
- instanceWhere += " and psi.organisationunitid in( "
- + getCommaDelimitedString( orgunitChilrenIds ) + " )";
- }
-
- // get events by selected orgunit
- else if ( !keys[4].equals( "0" ) )
- {
- instanceWhere += " and p.organisationunitid=" + getOrgUnitId( keys );
- }
- instanceWhere += ")";
- operatorStatus = " OR ";
- condition = "";
- continue;
- default:
- continue;
- }
- }
- if ( condition.isEmpty() )
- {
- instanceWhere += ")";
- }
-
- instanceWhere += " and pgi.status=" + ProgramInstance.STATUS_ACTIVE + " ";
- instanceOperator = " and ";
- }
- else if ( keys[0].equals( PREFIX_PROGRAM_STAGE ) )
- {
- isSearchEvent = true;
- instanceWhere += instanceOperator
- + "pgi.trackedentityinstanceid=p.trackedentityinstanceid and psi.programstageid=" + id + " and ";
- instanceWhere += "psi.duedate>='" + keys[3] + "' and psi.duedate<='" + keys[4] + "' and ";
- instanceWhere += "psi.organisationunitid = " + keys[5] + " and ";
-
- int statusEvent = Integer.parseInt( keys[2] );
- switch ( statusEvent )
- {
- case ProgramStageInstance.COMPLETED_STATUS:
- instanceWhere += "psi.completed=true";
- break;
- case ProgramStageInstance.VISITED_STATUS:
- instanceWhere += "psi.executiondate is not null and psi.completed=false";
- break;
- case ProgramStageInstance.FUTURE_VISIT_STATUS:
- instanceWhere += "psi.executiondate is null and psi.duedate >= now()";
- break;
- case ProgramStageInstance.LATE_VISIT_STATUS:
- instanceWhere += "psi.executiondate is null and psi.duedate < now()";
- break;
- default:
- break;
- }
-
- instanceWhere += " and pgi.status=" + ProgramInstance.STATUS_ACTIVE + " ";
- instanceOperator = " and ";
- }
- }
-
- if ( orgunits != null && !isSearchEvent )
- {
- sql += "(select organisationunitid from trackedentityinstance where trackedentityinstanceid=p.trackedentityinstanceid and organisationunitid in ( "
- + getCommaDelimitedString( getOrganisationUnitIds( orgunits ) ) + " ) ) as orgunitid,";
- otherWhere += operator + "orgunitid in ( " + getCommaDelimitedString( getOrganisationUnitIds( orgunits ) )
- + " ) ";
- }
-
- sql = sql.substring( 0, sql.length() - 1 ) + " "; // Removing last comma
-
- String from = " from trackedentityinstance p ";
-
- if ( isSearchEvent )
- {
- String subSQL = " , psi.programstageinstanceid as programstageinstanceid, pgs.name as programstagename, psi.duedate as duedate ";
-
- if ( isPriorityEvent )
- {
- subSQL += ",pgi.followup ";
- orderBy = " ORDER BY pgi.followup desc, p.trackedentityinstanceid, duedate asc ";
- instanceGroupBy += ",pgi.followup ";
- }
- else
- {
- orderBy = " ORDER BY p.trackedentityinstanceid, duedate asc ";
- }
-
- sql = sql + subSQL + from + " inner join programinstance pgi on "
- + " (pgi.trackedentityinstanceid=p.trackedentityinstanceid) "
- + " inner join programstageinstance psi on (psi.programinstanceid=pgi.programinstanceid) "
- + " inner join programstage pgs on (pgs.programstageid=psi.programstageid) ";
-
- instanceGroupBy += ",psi.programstageinstanceid, pgs.name, psi.duedate ";
-
- from = " ";
- }
-
- sql += from + instanceWhere;
- if ( followup != null )
- {
- sql += " AND pgi.followup=" + followup;
- }
- if ( isSearchEvent )
- {
- sql += instanceGroupBy;
- }
- sql += orderBy;
- sql += " ) as searchresult";
- sql += otherWhere;
-
- if ( min != null && max != null )
- {
- sql += " limit " + max + " offset " + min;
- }
-
- log.info( "Search tracked entity instance SQL: " + sql );
-
- return sql;
- }
-
- private Integer getOrgUnitId( String[] keys )
- {
- Integer orgUnitId;
- try
- {
- orgUnitId = Integer.parseInt( keys[4] );
- }
- catch ( NumberFormatException e )
- {
- // handle as uid
- OrganisationUnit ou = organisationUnitService.getOrganisationUnit( keys[4] );
- orgUnitId = ou.getId();
- }
- return orgUnitId;
- }
-
- private Collection<Integer> getOrgunitChildren( Collection<OrganisationUnit> orgunits )
- {
- Collection<Integer> orgUnitIds = new HashSet<Integer>();
-
- if ( orgunits != null )
- {
- for ( OrganisationUnit orgunit : orgunits )
- {
- orgUnitIds
- .addAll( organisationUnitService.getOrganisationUnitHierarchy().getChildren( orgunit.getId() ) );
- orgUnitIds.remove( orgunit.getId() );
- }
- }
-
- if ( orgUnitIds.size() == 0 )
- {
- orgUnitIds.add( 0 );
- }
-
- return orgUnitIds;
- }
-
- private Collection<Integer> getOrganisationUnitIds( Collection<OrganisationUnit> orgunits )
- {
- Collection<Integer> orgUnitIds = new HashSet<Integer>();
-
- for ( OrganisationUnit orgUnit : orgunits )
- {
- orgUnitIds.add( orgUnit.getId() );
- }
-
- if ( orgUnitIds.size() == 0 )
- {
- orgUnitIds.add( 0 );
- }
-
- return orgUnitIds;
- }
-
@SuppressWarnings( "unchecked" )
@Override
public Collection<TrackedEntityInstance> getByAttributeValue( String searchText, int attributeId, Integer min,
@@ -1079,41 +608,6 @@
return entityInstances;
}
-
- @Override
- public Collection<TrackedEntityInstance> search( List<String> searchKeys, Collection<OrganisationUnit> orgunits,
- Boolean followup, Collection<TrackedEntityAttribute> attributes, Integer statusEnrollment, Integer min,
- Integer max )
- {
- String sql = searchTrackedEntityInstanceSql( false, searchKeys, orgunits, followup, attributes,
- statusEnrollment, min, max );
- Collection<TrackedEntityInstance> instances = new HashSet<TrackedEntityInstance>();
- try
- {
- instances = jdbcTemplate.query( sql, new RowMapper<TrackedEntityInstance>()
- {
- public TrackedEntityInstance mapRow( ResultSet rs, int rowNum )
- throws SQLException
- {
- return get( rs.getInt( 1 ) );
- }
- } );
- }
- catch ( Exception ex )
- {
- ex.printStackTrace();
- }
- return instances;
- }
-
- @Override
- public int countSearch( List<String> searchKeys, Collection<OrganisationUnit> orgunits, Boolean followup,
- Integer statusEnrollment )
- {
- String sql = searchTrackedEntityInstanceSql( true, searchKeys, orgunits, followup, null, statusEnrollment,
- null, null );
- return jdbcTemplate.queryForObject( sql, Integer.class );
- }
@SuppressWarnings( "unchecked" )
@Override
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentityattributevalue/hibernate/HibernateTrackedEntityAttributeValueStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentityattributevalue/hibernate/HibernateTrackedEntityAttributeValueStore.java 2014-03-19 06:44:30 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentityattributevalue/hibernate/HibernateTrackedEntityAttributeValueStore.java 2014-05-12 09:56:39 +0000
@@ -28,6 +28,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import java.util.ArrayList;
import java.util.Collection;
import org.hibernate.Query;
@@ -77,7 +78,8 @@
@Override
public TrackedEntityAttributeValue get( TrackedEntityInstance entityInstance, TrackedEntityAttribute attribute )
{
- return (TrackedEntityAttributeValue) getCriteria( Restrictions.eq( "entityInstance", entityInstance ),
+ return (TrackedEntityAttributeValue) getCriteria(
+ Restrictions.eq( "entityInstance", entityInstance ),
Restrictions.eq( "attribute", attribute ) ).uniqueResult();
}
@@ -99,6 +101,11 @@
@SuppressWarnings( "unchecked" )
public Collection<TrackedEntityAttributeValue> get( Collection<TrackedEntityInstance> entityInstances )
{
+ if ( entityInstances == null || entityInstances.isEmpty() )
+ {
+ return new ArrayList<TrackedEntityAttributeValue>();
+ }
+
return getCriteria( Restrictions.in( "entityInstance", entityInstances ) ).list();
}
@@ -106,7 +113,8 @@
@SuppressWarnings( "unchecked" )
public Collection<TrackedEntityAttributeValue> searchByValue( TrackedEntityAttribute attribute, String searchText )
{
- return getCriteria( Restrictions.eq( "attribute", attribute ),
+ return getCriteria(
+ Restrictions.eq( "attribute", attribute ),
Restrictions.ilike( "value", "%" + searchText + "%" ) ).list();
}
@@ -115,8 +123,9 @@
public Collection<TrackedEntityInstance> getTrackedEntityInstances( TrackedEntityAttribute attribute, String value )
{
return getCriteria(
- Restrictions.and( Restrictions.eq( "attribute", attribute ), Restrictions.eq( "value", value ) ) )
- .setProjection( Projections.property( "entityInstance" ) ).list();
+ Restrictions.and( Restrictions.eq( "attribute", attribute ),
+ Restrictions.eq( "value", value ) ) ).
+ setProjection( Projections.property( "entityInstance" ) ).list();
}
@Override
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentitydatavalue/DefaultTrackedEntityDataValueService.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentitydatavalue/DefaultTrackedEntityDataValueService.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentitydatavalue/DefaultTrackedEntityDataValueService.java 2014-05-12 09:56:39 +0000
@@ -41,7 +41,6 @@
/**
* @author Abyot Asalefew Gizaw
- * @version $Id$
*/
@Transactional
public class DefaultTrackedEntityDataValueService
@@ -108,8 +107,7 @@
return dataValueStore.get( programStageInstance, dataElements );
}
- public Collection<TrackedEntityDataValue> getTrackedEntityDataValues(
- Collection<ProgramStageInstance> programStageInstances )
+ public Collection<TrackedEntityDataValue> getTrackedEntityDataValues( Collection<ProgramStageInstance> programStageInstances )
{
return dataValueStore.get( programStageInstances );
}
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueDeletionHandler.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueDeletionHandler.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueDeletionHandler.java 2014-05-12 09:56:39 +0000
@@ -38,8 +38,6 @@
/**
* @author Chau Thu Tran
- * @version $ TrackedEntityDataValueDeletionHandler.java Jun 24, 2011 1:10:46 PM $
- *
*/
public class TrackedEntityDataValueDeletionHandler
extends DeletionHandler
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentitydatavalue/hibernate/HibernateTrackedEntityDataValueStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentitydatavalue/hibernate/HibernateTrackedEntityDataValueStore.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentitydatavalue/hibernate/HibernateTrackedEntityDataValueStore.java 2014-05-12 09:56:39 +0000
@@ -71,6 +71,11 @@
public Collection<TrackedEntityDataValue> get( ProgramStageInstance programStageInstance,
Collection<DataElement> dataElements )
{
+ if ( dataElements == null || dataElements.isEmpty() )
+ {
+ return new ArrayList<TrackedEntityDataValue>();
+ }
+
String hql = "from TrackedEntityDataValue pdv where pdv.dataElement in ( :dataElements ) "
+ "and pdv.programStageInstance = :programStageInstance";
@@ -99,6 +104,11 @@
public Collection<TrackedEntityDataValue> get( TrackedEntityInstance entityInstance, Collection<DataElement> dataElements, Date startDate,
Date endDate )
{
+ if ( dataElements == null || dataElements.isEmpty() )
+ {
+ return new ArrayList<TrackedEntityDataValue>();
+ }
+
String hql = "from TrackedEntityDataValue pdv where pdv.dataElement in ( :dataElements ) "
+ "and pdv.programStageInstance.programInstance.entityInstance = :entityInstance "
+ "and pdv.programStageInstance.executionDate >= :startDate and pdv.programStageInstance.executionDate <= :endDate ";
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/resources/META-INF/dhis/beans.xml 2014-05-04 14:04:41 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/resources/META-INF/dhis/beans.xml 2014-05-12 09:56:39 +0000
@@ -30,7 +30,6 @@
<property name="sessionFactory" ref="sessionFactory" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
- <property name="statementBuilder" ref="statementBuilder" />
</bean>
<bean id="org.hisp.dhis.program.ProgramInstanceStore"
@@ -77,8 +76,6 @@
<property name="clazz"
value="org.hisp.dhis.trackedentity.TrackedEntityInstance" />
<property name="sessionFactory" ref="sessionFactory" />
- <property name="organisationUnitService"
- ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="statementBuilder" ref="statementBuilder" />
</bean>
@@ -184,8 +181,6 @@
<property name="programStageInstanceStore"
ref="org.hisp.dhis.program.ProgramStageInstanceStore" />
<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
- <property name="dataValueService"
- ref="org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueService" />
<property name="smsSender" ref="org.hisp.dhis.sms.SmsSender" />
<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
<property name="reminderService"
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceServiceTest.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceServiceTest.java 2014-04-22 00:17:55 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceServiceTest.java 2014-05-12 09:56:39 +0000
@@ -99,8 +99,6 @@
private TrackedEntityAttribute entityInstanceAttribute;
- private int attributeId;
-
private Program programA;
private Program programB;
@@ -119,12 +117,13 @@
organisationUnitService.addOrganisationUnit( organisationUnitB );
entityInstanceAttribute = createTrackedEntityAttribute( 'A' );
- attributeId = attributeService.addTrackedEntityAttribute( entityInstanceAttribute );
+ attributeService.addTrackedEntityAttribute( entityInstanceAttribute );
entityInstanceA1 = createTrackedEntityInstance( 'A', organisationUnit );
entityInstanceA2 = createTrackedEntityInstance( 'A', organisationUnitB );
entityInstanceA3 = createTrackedEntityInstance( 'A', organisationUnit, entityInstanceAttribute );
entityInstanceB1 = createTrackedEntityInstance( 'B', organisationUnit );
+ entityInstanceB1.setUid( "UID-B1" );
entityInstanceB2 = createTrackedEntityInstance( 'B', organisationUnit, entityInstanceAttribute );
programA = createProgram( 'A', new HashSet<ProgramStage>(), organisationUnit );
@@ -198,87 +197,17 @@
}
@Test
- public void testGetAllTrackedEntityInstances()
- {
- entityInstanceService.addTrackedEntityInstance( entityInstanceA1 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceB1 );
-
- assertTrue( equals( entityInstanceService.getAllTrackedEntityInstances(), entityInstanceA1, entityInstanceB1 ) );
- }
-
- @Test
public void testGetTrackedEntityInstancesByOu()
{
entityInstanceService.addTrackedEntityInstance( entityInstanceA1 );
entityInstanceService.addTrackedEntityInstance( entityInstanceA2 );
entityInstanceService.addTrackedEntityInstance( entityInstanceA3 );
- Collection<TrackedEntityInstance> entityInstances = entityInstanceService.getTrackedEntityInstances( organisationUnit, null, null );
- assertEquals( 2, entityInstances.size() );
- assertTrue( entityInstances.contains( entityInstanceA1 ) );
- assertTrue( entityInstances.contains( entityInstanceA3 ) );
- }
-
- @Test
- public void testGetTrackedEntityInstancesByProgram()
- {
- programService.addProgram( programA );
-
- entityInstanceService.addTrackedEntityInstance( entityInstanceA1 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceA2 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceA3 );
-
- programInstanceService.enrollTrackedEntityInstance( entityInstanceA1, programA, date, date, organisationUnit );
- programInstanceService.enrollTrackedEntityInstance( entityInstanceA3, programA, date, date, organisationUnit );
-
- Collection<TrackedEntityInstance> entityInstances = entityInstanceService.getTrackedEntityInstances( programA );
- assertEquals( 2, entityInstances.size() );
- assertTrue( entityInstances.contains( entityInstanceA1 ) );
- assertTrue( entityInstances.contains( entityInstanceA3 ) );
- }
-
- @Test
- public void testGetTrackedEntityInstancesbyOuProgram()
- {
- programService.addProgram( programA );
-
- entityInstanceService.addTrackedEntityInstance( entityInstanceA1 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceA2 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceA3 );
-
- programInstanceService.enrollTrackedEntityInstance( entityInstanceA1, programA, date, date, organisationUnit );
- programInstanceService.enrollTrackedEntityInstance( entityInstanceA2, programA, date, date, organisationUnit );
- programInstanceService.enrollTrackedEntityInstance( entityInstanceA3, programA, date, date, organisationUnit );
-
- Collection<TrackedEntityInstance> entityInstances = entityInstanceService.getTrackedEntityInstances( organisationUnit, programA );
- assertEquals( 2, entityInstances.size() );
- assertTrue( entityInstances.contains( entityInstanceA1 ) );
- assertTrue( entityInstances.contains( entityInstanceA3 ) );
- }
-
- @Test
- public void testGetTrackedEntityInstancesByAttribute()
- {
- entityInstanceService.addTrackedEntityInstance( entityInstanceA2 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceA3 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceB1 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceB2 );
-
- TrackedEntityAttributeValue attributeValue = createTrackedEntityAttributeValue( 'A', entityInstanceA3,
- entityInstanceAttribute );
- Set<TrackedEntityAttributeValue> entityInstanceAttributeValues = new HashSet<TrackedEntityAttributeValue>();
- entityInstanceAttributeValues.add( attributeValue );
-
- entityInstanceService.createTrackedEntityInstance( entityInstanceA3, null, null, entityInstanceAttributeValues );
-
- Collection<TrackedEntityInstance> entityInstances = entityInstanceService.getTrackedEntityInstance( attributeId, "AttributeA" );
-
- assertEquals( 1, entityInstances.size() );
- assertTrue( entityInstances.contains( entityInstanceA3 ) );
-
- TrackedEntityInstance entityInstance = entityInstances.iterator().next();
- assertEquals( 1, entityInstance.getAttributeValues().size() );
- assertTrue( entityInstance.getAttributeValues().contains( attributeValue ) );
+ Collection<TrackedEntityInstance> entityInstances = entityInstanceService.getTrackedEntityInstances(
+ organisationUnit, null, null );
+ assertEquals( 2, entityInstances.size() );
+ assertTrue( entityInstances.contains( entityInstanceA1 ) );
+ assertTrue( entityInstances.contains( entityInstanceA3 ) );
}
@Test
@@ -297,8 +226,8 @@
programInstanceService.enrollTrackedEntityInstance( entityInstanceA2, programA, date, date, organisationUnit );
programInstanceService.enrollTrackedEntityInstance( entityInstanceB2, programB, date, date, organisationUnit );
- Collection<TrackedEntityInstance> entityInstances = entityInstanceService.getTrackedEntityInstances( organisationUnit, programA, 0,
- 100 );
+ Collection<TrackedEntityInstance> entityInstances = entityInstanceService.getTrackedEntityInstances(
+ organisationUnit, programA, 0, 100 );
assertEquals( 2, entityInstances.size() );
assertTrue( entityInstances.contains( entityInstanceA1 ) );
@@ -327,7 +256,7 @@
@Test
public void testCreateTrackedEntityInstanceAndRelative()
{
- int idB = entityInstanceService.addTrackedEntityInstance( entityInstanceB1 );
+ entityInstanceService.addTrackedEntityInstance( entityInstanceB1 );
RelationshipType relationshipType = createRelationshipType( 'A' );
int relationshipTypeId = relationshipTypeService.addRelationshipType( relationshipType );
@@ -337,14 +266,15 @@
Set<TrackedEntityAttributeValue> entityInstanceAttributeValues = new HashSet<TrackedEntityAttributeValue>();
entityInstanceAttributeValues.add( attributeValue );
- int idA = entityInstanceService.createTrackedEntityInstance( entityInstanceA1, idB, relationshipTypeId, entityInstanceAttributeValues );
+ int idA = entityInstanceService.createTrackedEntityInstance( entityInstanceA1, entityInstanceB1.getUid(),
+ relationshipTypeId, entityInstanceAttributeValues );
assertNotNull( entityInstanceService.getTrackedEntityInstance( idA ) );
}
@Test
public void testUpdateTrackedEntityInstanceAndRelative()
{
- int idB = entityInstanceService.addTrackedEntityInstance( entityInstanceB1 );
+ entityInstanceService.addTrackedEntityInstance( entityInstanceB1 );
RelationshipType relationshipType = createRelationshipType( 'A' );
int relationshipTypeId = relationshipTypeService.addRelationshipType( relationshipType );
@@ -354,78 +284,17 @@
entityInstanceAttribute );
Set<TrackedEntityAttributeValue> entityInstanceAttributeValues = new HashSet<TrackedEntityAttributeValue>();
entityInstanceAttributeValues.add( attributeValue );
- int idA = entityInstanceService.createTrackedEntityInstance( entityInstanceA3, idB, relationshipTypeId, entityInstanceAttributeValues );
+ int idA = entityInstanceService.createTrackedEntityInstance( entityInstanceA3, entityInstanceB1.getUid(),
+ relationshipTypeId, entityInstanceAttributeValues );
assertNotNull( entityInstanceService.getTrackedEntityInstance( idA ) );
attributeValue.setValue( "AttributeB" );
List<TrackedEntityAttributeValue> attributeValues = new ArrayList<TrackedEntityAttributeValue>();
attributeValues.add( attributeValue );
- entityInstanceService.updateTrackedEntityInstance( entityInstanceA3, idB, relationshipTypeId, attributeValues,
- new ArrayList<TrackedEntityAttributeValue>(), new ArrayList<TrackedEntityAttributeValue>() );
+ entityInstanceService.updateTrackedEntityInstance( entityInstanceA3, entityInstanceB1.getUid(),
+ relationshipTypeId, attributeValues, new ArrayList<TrackedEntityAttributeValue>(),
+ new ArrayList<TrackedEntityAttributeValue>() );
assertEquals( "B", entityInstanceService.getTrackedEntityInstance( idA ).getName() );
}
-
- @Test
- public void testCountGetTrackedEntityInstancesByOrgUnit()
- {
- entityInstanceService.addTrackedEntityInstance( entityInstanceA1 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceA2 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceA3 );
-
- assertEquals( 2, entityInstanceService.countGetTrackedEntityInstancesByOrgUnit( organisationUnit ) );
- }
-
- @Test
- public void testCountGetTrackedEntityInstancesByOrgUnitProgram()
- {
- programService.addProgram( programA );
- programService.addProgram( programB );
-
- entityInstanceService.addTrackedEntityInstance( entityInstanceA1 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceB1 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceA2 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceB2 );
-
- programInstanceService.enrollTrackedEntityInstance( entityInstanceA1, programA, date, date, organisationUnit );
- programInstanceService.enrollTrackedEntityInstance( entityInstanceB1, programA, date, date, organisationUnit );
- programInstanceService.enrollTrackedEntityInstance( entityInstanceA2, programA, date, date, organisationUnit );
- programInstanceService.enrollTrackedEntityInstance( entityInstanceB2, programB, date, date, organisationUnit );
-
- assertEquals( 2, entityInstanceService.countGetTrackedEntityInstancesByOrgUnitProgram( organisationUnit, programA ) );
- assertEquals( 1, entityInstanceService.countGetTrackedEntityInstancesByOrgUnitProgram( organisationUnit, programB ) );
- }
-
- @Test
- public void testGetTrackedEntityInstancesByPhone()
- {
- entityInstanceService.addTrackedEntityInstance( entityInstanceA1 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceA2 );
- entityInstanceService.addTrackedEntityInstance( entityInstanceA3 );
-
- TrackedEntityAttribute entityInstanceAttribute = createTrackedEntityAttribute( 'B' );
- entityInstanceAttribute.setValueType( TrackedEntityAttribute.TYPE_PHONE_NUMBER );
- attributeService.addTrackedEntityAttribute( entityInstanceAttribute );
-
- TrackedEntityAttributeValue attributeValue = createTrackedEntityAttributeValue( 'A', entityInstanceA1,
- entityInstanceAttribute );
- attributeValue.setValue( "123456789" );
- attributeValueService.addTrackedEntityAttributeValue( attributeValue );
-
- entityInstanceA1.addAttributeValue( attributeValue );
- entityInstanceService.updateTrackedEntityInstance( entityInstanceA1 );
-
- attributeValue = createTrackedEntityAttributeValue( 'A', entityInstanceA2, entityInstanceAttribute );
- attributeValue.setValue( "123456789" );
- attributeValueService.addTrackedEntityAttributeValue( attributeValue );
- entityInstanceA2.addAttributeValue( attributeValue );
- entityInstanceService.updateTrackedEntityInstance( entityInstanceA2 );
-
- Collection<TrackedEntityInstance> entityInstances = entityInstanceService.getTrackedEntityInstancesByPhone(
- "123456789", null, null );
- assertEquals( 2, entityInstances.size() );
- assertTrue( entityInstances.contains( entityInstanceA1 ) );
- assertTrue( entityInstances.contains( entityInstanceA2 ) );
- }
-
}
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStoreTest.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStoreTest.java 2014-04-22 00:17:55 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStoreTest.java 2014-05-12 09:56:39 +0000
@@ -194,35 +194,6 @@
}
@Test
- public void testGetByProgram()
- {
- programService.addProgram( programA );
- programService.addProgram( programB );
-
- entityInstanceStore.save( entityInstanceA1 );
- entityInstanceStore.save( entityInstanceB1 );
- entityInstanceStore.save( entityInstanceA2 );
- entityInstanceStore.save( entityInstanceB2 );
-
- programInstanceService.enrollTrackedEntityInstance( entityInstanceA1, programA, date, date, organisationUnit );
- programInstanceService.enrollTrackedEntityInstance( entityInstanceA2, programA, date, date, organisationUnit );
- programInstanceService.enrollTrackedEntityInstance( entityInstanceB1, programA, date, date, organisationUnit );
- programInstanceService.enrollTrackedEntityInstance( entityInstanceB2, programB, date, date, organisationUnit );
-
- Collection<TrackedEntityInstance> entityInstances = entityInstanceStore.getByProgram( programA, 0, 100 );
-
- assertEquals( 3, entityInstances.size() );
- assertTrue( entityInstances.contains( entityInstanceA1 ) );
- assertTrue( entityInstances.contains( entityInstanceA2 ) );
- assertTrue( entityInstances.contains( entityInstanceB1 ) );
-
- entityInstances = entityInstanceStore.getByOrgUnitProgram( organisationUnit, programB, 0, 100 );
-
- assertEquals( 1, entityInstances.size() );
- assertTrue( entityInstances.contains( entityInstanceB2 ) );
- }
-
- @Test
public void testGetRepresentatives()
{
entityInstanceStore.save( entityInstanceB1 );
=== modified file 'dhis-2/dhis-support/dhis-support-hibernate/pom.xml'
--- dhis-2/dhis-support/dhis-support-hibernate/pom.xml 2014-04-22 15:46:19 +0000
+++ dhis-2/dhis-support/dhis-support-hibernate/pom.xml 2014-05-12 09:56:39 +0000
@@ -33,8 +33,12 @@
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-ehcache</artifactId>
+ <groupId>com.hazelcast</groupId>
+ <artifactId>hazelcast</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.hazelcast</groupId>
+ <artifactId>hazelcast-hibernate4</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
=== removed file 'dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/ehcache.xml'
--- dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/ehcache.xml 2014-04-08 19:36:25 +0000
+++ dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/ehcache.xml 1970-01-01 00:00:00 +0000
@@ -1,385 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ehcache>
-
- <defaultCache maxElementsInMemory="800000" eternal="false" timeToIdleSeconds="360" timeToLiveSeconds="720"
- overflowToDisk="false" diskPersistent="false" />
-
- <!-- Hibernate Query Cache -->
-
- <cache name="org.hibernate.cache.internal.StandardQueryCache" maxElementsInMemory="250000" />
-
- <cache name="org.hibernate.cache.spi.UpdateTimestampsCache" maxElementsInMemory="3000" />
-
- <!-- Hibernate entities -->
-
- <cache name="org.hisp.dhis.configuration.Configuration" maxElementsInMemory="1" />
-
- <cache name="org.hisp.dhis.dataelement.DataElement" maxElementsInMemory="4000" />
-
- <cache name="org.hisp.dhis.dataelement.DataElement.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryCombo" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategory" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryOption" maxElementsInMemory="400" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryOptionCombo" maxElementsInMemory="800" />
-
- <cache name="org.hisp.dhis.dataelement.CategoryOptionGroup" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.dataelement.CategoryOptionGroupSet" maxElementsInMemory="50" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryDimension" maxElementsInMemory="2000" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementGroup" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementGroupSet" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.indicator.Indicator" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.indicator.IndicatorGroup" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.indicator.IndicatorGroupSet" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.indicator.IndicatorType" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.datadictionary.DataDictionary" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.datadictionary.DataDictionary.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.period.Period" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.period.PeriodType" maxElementsInMemory="50" />
-
- <cache name="org.hisp.dhis.period.RelativePeriods" maxElementsInMemory="30" />
-
- <cache name="org.hisp.dhis.dataset.DataSet" maxElementsInMemory="400" />
-
- <cache name="org.hisp.dhis.dataset.Section" maxElementsInMemory="400" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementOperand" maxElementsInMemory="4000" />
-
- <cache name="org.hisp.dhis.expression.Expression" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.validation.ValidationRule" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.validation.ValidationRuleGroup" maxElementsInMemory="50" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnit" maxElementsInMemory="60000" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnitGroup" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnitGroup.userGroupAccesses" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnitGroupSet" maxElementsInMemory="50" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnitGroupSet.attributeValues" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnitLevel" maxElementsInMemory="20" />
-
- <cache name="org.hisp.dhis.user.User" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.user.UserSetting" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.user.UserCredentials" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.user.UserAuthorityGroup" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.user.UserGroup" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.setting.SystemSetting" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.translation.Translation" maxElementsInMemory="200000" />
-
- <cache name="org.hisp.dhis.message.MessageConversation" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.message.Message" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.message.UserMessage" maxElementsInMemory="50000" />
-
- <cache name="org.hisp.dhis.chart.Chart" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.mapping.Map" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.eventreport.EventReport" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.report.Report" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.document.Document" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.dashboard.Dashboard" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.dashboard.DashboardItem" maxElementsInMemory="4000" />
-
- <cache name="org.hisp.dhis.constant.Constant" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.version.Version" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.attribute.Attribute" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.attribute.AttributeValue" maxElementsInMemory="5000" />
-
- <cache name="org.hisp.dhis.option.OptionSet" maxElementsInMemory="50" />
-
- <cache name="org.hisp.dhis.dataset.LockException" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.dataapproval.DataApprovalLevel" maxElementsInMemory="20" />
-
- <cache name="org.hisp.dhis.filter.MetaDataFilter" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.program.Program" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.program.ProgramStage" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.sqlview.SqlView" maxElementsInMemory="50" />
-
- <cache name="org.hisp.dhis.trackedentity.TrackedEntityAttribute" maxElementsInMemory="50" />
-
- <!-- Hibernate Associations -->
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryCombo.categories" maxElementsInMemory="300" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryCombo.optionCombos" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryCombo.userGroupAccesses" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategory.categoryOptions" maxElementsInMemory="300" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategory.userGroupAccesses" maxElementsInMemory="300" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryOption.categoryOptionCombos" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryOption.categories" maxElementsInMemory="300" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryOption.groups" maxElementsInMemory="300" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryOption.userGroupAccesses" maxElementsInMemory="300" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryOptionCombo.categoryOptions" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.dataelement.CategoryOptionGroup.userGroupAccesses" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.dataelement.CategoryOptionGroup.members" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.dataelement.CategoryOptionGroupSet.members" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.dataelement.CategoryOptionGroupSet.userGroupAccesses" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementCategoryDimension.items" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.dataset.DataSet.dataElements" maxElementsInMemory="3000" />
-
- <cache name="org.hisp.dhis.dataset.DataSet.sources" maxElementsInMemory="120000" />
-
- <cache name="org.hisp.dhis.dataset.DataSet.sections" maxElementsInMemory="3000" />
-
- <cache name="org.hisp.dhis.dataset.DataSet.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.dataset.DataSet.attributeValues" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.dashboard.Dashboard.userGroupAccesses" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.dataelement.DataElement.groups" maxElementsInMemory="3000" />
-
- <cache name="org.hisp.dhis.dataelement.DataElement.dataSets" maxElementsInMemory="3000" />
-
- <cache name="org.hisp.dhis.dataelement.DataElement.attributeValues" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementGroup.members" maxElementsInMemory="3000" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementGroup.attributeValues" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementGroup.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementGroupSet.members" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.dataelement.DataElementGroupSet.userGroupAccesses" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.document.Document.userGroupAccesses" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.indicator.Indicator.groups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.indicator.Indicator.dataSets" maxElementsInMemory="400" />
-
- <cache name="org.hisp.dhis.indicator.Indicator.attributeValues" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.indicator.Indicator.userGroupAccesses" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.indicator.IndicatorGroup.members" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.indicator.IndicatorGroup.attributeValues" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.indicator.IndicatorGroup.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.indicator.IndicatorGroupSet.members" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.indicator.IndicatorGroupSet.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.dataset.Section.dataElements" maxElementsInMemory="4000" />
-
- <cache name="org.hisp.dhis.dataset.Section.greyedFields" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.expression.Expression.dataElementsInExpression" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnit.children" maxElementsInMemory="60000" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnit.dataSets" maxElementsInMemory="120000" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnit.groups" maxElementsInMemory="20000" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnit.users" maxElementsInMemory="20000" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnit.attributeValues" maxElementsInMemory="20000" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnitGroup.members" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnitGroup.attributeValues" maxElementsInMemory="20000" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnitGroup.dataSets" maxElementsInMemory="100" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnitGroupSet.organisationUnitGroups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.organisationunit.OrganisationUnitGroupSet.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.report.Report.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.indicators" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.dataElements" maxElementsInMemory="1500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.dataElementOperands" maxElementsInMemory="1500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.dataSets" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.periods" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.organisationUnits" maxElementsInMemory="2000" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.dataElementGroups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.organisationUnitGroups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.categoryOptionGroups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.itemOrganisationUnitGroups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.categoryDimensions" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.columnDimensions" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.rowDimensions" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.filterDimensions" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.organisationUnitLevels" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.reporttable.ReportTable.userGroupAccesses" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.chart.Chart.indicators" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.chart.Chart.dataElements" maxElementsInMemory="1500" />
-
- <cache name="org.hisp.dhis.chart.Chart.dataElementOperands" maxElementsInMemory="1500" />
-
- <cache name="org.hisp.dhis.chart.Chart.dataSets" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.chart.Chart.periods" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.chart.Chart.organisationUnits" maxElementsInMemory="2000" />
-
- <cache name="org.hisp.dhis.chart.Chart.dataElementGroups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.chart.Chart.organisationUnitGroups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.chart.Chart.categoryOptionGroups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.chart.Chart.itemOrganisationUnitGroups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.chart.Chart.categoryDimensions" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.chart.Chart.filterDimensions" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.chart.Chart.organisationUnitLevels" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.chart.Chart.userGroupAccesses" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.mapping.Map.mapViews" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.mapping.Map.userGroupAccesses" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.mapping.MapView" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.mapping.MapView.dataSets" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.mapping.MapView.indicators" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.mapping.MapView.dataElements" maxElementsInMemory="1500" />
-
- <cache name="org.hisp.dhis.mapping.MapView.dataElementOperands" maxElementsInMemory="1500" />
-
- <cache name="org.hisp.dhis.mapping.MapView.periods" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.mapping.MapView.organisationUnits" maxElementsInMemory="2000" />
-
- <cache name="org.hisp.dhis.mapping.MapView.organisationUnitLevels" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.mapping.MapView.itemOrganisationUnitGroups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.eventreport.EventReport.columnDimensions" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.eventreport.EventReport.rowDimensions" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.eventreport.EventReport.filterDimensions" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.eventreport.EventReport.periods" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.eventreport.EventReport.organisationUnits" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.eventreport.EventReport.organisationUnitLevels" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.eventreport.EventReport.itemOrganisationUnitGroups" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.eventreport.EventReport.userGroupAccesses" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.attribute.Attribute.attributeValues" maxElementsInMemory="5000" />
-
- <cache name="org.hisp.dhis.option.OptionSet.options" maxElementsInMemory="2000" />
-
- <cache name="org.hisp.dhis.option.OptionSet.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.dataapproval.DataApprovalLevel.userGroupAccesses" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.interpretation.Interpretation.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.user.User.organisationUnits" maxElementsInMemory="20000" />
-
- <cache name="org.hisp.dhis.user.User.dataViewOrganisationUnits" maxElementsInMemory="20000" />
-
- <cache name="org.hisp.dhis.user.User.attributeValues" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.user.User.groups" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.user.User.apps" maxElementsInMemory="1000" />
-
- <cache name="org.hisp.dhis.user.UserGroup.attributeValues" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.user.UserGroup.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.user.UserCredentials.userAuthorityGroups" maxElementsInMemory="2000" />
-
- <cache name="org.hisp.dhis.user.UserCredentials.cogsDimensionConstraints" maxElementsInMemory="2000" />
-
- <cache name="org.hisp.dhis.user.UserAuthorityGroup.authorities" maxElementsInMemory="500" />
-
- <cache name="org.hisp.dhis.user.UserAuthorityGroup.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.validation.ValidationRuleGroup.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.sqlview.SqlView.userGroupAccesses" maxElementsInMemory="200" />
-
- <cache name="org.hisp.dhis.trackedentity.TrackedEntityAttribute.userGroupAccesses" maxElementsInMemory="200" />
-
-</ehcache>
=== added file 'dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/hazelcast.xml'
--- dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/hazelcast.xml 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/hazelcast.xml 2014-05-12 09:56:39 +0000
@@ -0,0 +1,30 @@
+<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.2.xsd"
+ xmlns="http://www.hazelcast.com/schema/config"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <!--
+ <group>
+ <name>dhis-hz-cluster</name>
+ <password>dhis-hz-cluster</password>
+ </group>
+ <network>
+ <port auto-increment="true" port-count="100">5701</port>
+ <outbound-ports>
+ <ports>0</ports>
+ </outbound-ports>
+ <join>
+ <multicast enabled="false">
+ <multicast-group>224.2.2.3</multicast-group>
+ <multicast-port>54327</multicast-port>
+ </multicast>
+ <tcp-ip enabled="true">
+ <member>127.0.0.1</member>
+ </tcp-ip>
+ </join>
+ </network>
+ -->
+ <map name="default">
+ <time-to-live-seconds>720</time-to-live-seconds>
+ <max-size policy="PER_NODE">800000</max-size>
+ <eviction-policy>LRU</eviction-policy>
+ </map>
+</hazelcast>
\ No newline at end of file
=== modified file 'dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/hibernate-default.properties'
--- dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/hibernate-default.properties 2014-04-28 19:23:37 +0000
+++ dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/hibernate-default.properties 2014-05-12 09:56:39 +0000
@@ -8,7 +8,7 @@
# 1) The classpath (src/main/resources)
# 2) $DHIS2_HOME
-# H2 In-Memory setup:
+# H2 In-Memory setup
hibernate.dialect = org.hibernate.dialect.H2Dialect
hibernate.connection.driver_class = org.h2.Driver
@@ -17,30 +17,28 @@
hibernate.connection.password =
hibernate.hbm2ddl.auto = create-drop
-# see c3p0-config.xml
-#hibernate.c3p0.min_size = 3
-#hibernate.c3p0.max_size = 20
-#hibernate.c3p0.acquire_increment = 2
-#hibernate.c3p0.timeout = 5000
-#hibernate.c3p0.max_statements = 50
-#hibernate.c3p0.idle_test_period = 300
+# See c3p0-config.xml
+# hibernate.c3p0.min_size = 3
+# hibernate.c3p0.max_size = 20
+# hibernate.c3p0.acquire_increment = 2
+# hibernate.c3p0.timeout = 5000
+# hibernate.c3p0.max_statements = 50
+# hibernate.c3p0.idle_test_period = 300
# Caching
-hibernate.cache.region.factory_class = org.hibernate.cache.ehcache.EhCacheRegionFactory
hibernate.cache.use_second_level_cache = true
hibernate.cache.use_query_cache = true
-
-# hibernate.cache.region.factory_class = net.sf.ehcache.hibernate.EhCacheRegionFactory
-# hibernate.cache.provider_class = org.hibernate.cache.EhCacheProvider
-
-# MySQL setup:
+hibernate.cache.region.factory_class = com.hazelcast.hibernate.HazelcastLocalCacheRegionFactory
+# hibernate.cache.region.factory_class = org.hibernate.cache.ehcache.EhCacheRegionFactory
+
+# MySQL setup
#
# hibernate.dialect = org.hibernate.dialect.MySQLDialect
# hibernate.connection.driver_class = com.mysql.jdbc.Driver
# hibernate.connection.url = jdbc:mysql://localhost/dhis2?useUnicode=true&characterEncoding=UTF-8
-# PostgreSQL setup:
+# PostgreSQL setup
#
# hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
# hibernate.connection.driver_class = org.postgresql.Driver
=== modified file 'dhis-2/dhis-web/dhis-web-api-mobile/src/main/java/org/hisp/dhis/api/mobile/controller/MobileClientController.java'
--- dhis-2/dhis-web/dhis-web-api-mobile/src/main/java/org/hisp/dhis/api/mobile/controller/MobileClientController.java 2014-05-05 10:16:05 +0000
+++ dhis-2/dhis-web/dhis-web-api-mobile/src/main/java/org/hisp/dhis/api/mobile/controller/MobileClientController.java 2014-05-12 09:56:39 +0000
@@ -83,8 +83,8 @@
@RequestMapping( method = RequestMethod.GET, value = "/{version}" )
@ResponseBody
- public OrgUnits getOrgUnitsForUser( HttpServletRequest request,
- @PathVariable String version )
+ public OrgUnits getOrgUnitsForUser( HttpServletRequest request, @PathVariable
+ String version )
throws NotAllowedException
{
User user = currentUserService.getCurrentUser();
@@ -108,8 +108,8 @@
@RequestMapping( method = RequestMethod.GET, value = "/{version}/LWUIT" )
@ResponseBody
- public OrgUnits getOrgUnitsForUserLWUIT( HttpServletRequest request,
- @PathVariable String version )
+ public OrgUnits getOrgUnitsForUserLWUIT( HttpServletRequest request, @PathVariable
+ String version )
throws NotAllowedException
{
User user = currentUserService.getCurrentUser();
@@ -147,7 +147,8 @@
orgUnit.setChangeUpdateDataSetLangUrl( getUrl( request, unit.getId(), "changeLanguageDataSet" ) );
orgUnit.setSearchUrl( getUrl( request, unit.getId(), "search" ) );
orgUnit.setUpdateNewVersionUrl( getUrl( request, unit.getId(), "updateNewVersionUrl" ) );
- orgUnit.setSendFeedbackUrl( getUrl(request, unit.getId(), "sendFeedback") );
+ orgUnit.setSendFeedbackUrl( getUrl( request, unit.getId(), "sendFeedback" ) );
+ orgUnit.setFindUserUrl( getUrl( request, unit.getId(), "findUser" ) );
orgUnit.setUpdateContactUrl( getUrl( request, unit.getId(), "updateContactForMobile" ) );
orgUnit.setFindPatientUrl( getUrl( request, unit.getId(), "findPatient" ) );
orgUnit.setRegisterPersonUrl( getUrl( request, unit.getId(), "registerPerson" ) );
@@ -161,7 +162,8 @@
orgUnit.setFindLostToFollowUpUrl( getUrl( request, unit.getId(), "findLostToFollowUp" ) );
orgUnit.setHandleLostToFollowUpUrl( getUrl( request, unit.getId(), "handleLostToFollowUp" ) );
orgUnit.setGenerateRepeatableEventUrl( getUrl( request, unit.getId(), "generateRepeatableEvent" ) );
- orgUnit.setUploadSingleEventWithoutRegistration(getUrl( request, unit.getId(), "uploadSingleEventWithoutRegistration" ));
+ orgUnit.setUploadSingleEventWithoutRegistration( getUrl( request, unit.getId(),
+ "uploadSingleEventWithoutRegistration" ) );
// generate URL for download new version
String full = UrlUtils.buildFullRequestUrl( request );
=== modified file 'dhis-2/dhis-web/dhis-web-api-mobile/src/main/java/org/hisp/dhis/api/mobile/controller/MobileOrganisationUnitController.java'
--- dhis-2/dhis-web/dhis-web-api-mobile/src/main/java/org/hisp/dhis/api/mobile/controller/MobileOrganisationUnitController.java 2014-05-05 10:16:05 +0000
+++ dhis-2/dhis-web/dhis-web-api-mobile/src/main/java/org/hisp/dhis/api/mobile/controller/MobileOrganisationUnitController.java 2014-05-12 09:56:39 +0000
@@ -44,11 +44,12 @@
import org.hisp.dhis.api.mobile.model.DataSetValue;
import org.hisp.dhis.api.mobile.model.DataSetValueList;
import org.hisp.dhis.api.mobile.model.DataStreamSerializable;
+import org.hisp.dhis.api.mobile.model.Message;
import org.hisp.dhis.api.mobile.model.MobileModel;
import org.hisp.dhis.api.mobile.model.ModelList;
+import org.hisp.dhis.api.mobile.model.Recipient;
import org.hisp.dhis.api.mobile.model.SMSCode;
import org.hisp.dhis.api.mobile.model.SMSCommand;
-import org.hisp.dhis.api.mobile.model.Message;
import org.hisp.dhis.api.mobile.model.LWUITmodel.LostEvent;
import org.hisp.dhis.api.mobile.model.LWUITmodel.Notification;
import org.hisp.dhis.api.mobile.model.LWUITmodel.Patient;
@@ -560,4 +561,17 @@
}
+ @RequestMapping( method = RequestMethod.GET, value = "{clientVersion}/orgUnits/{id}/findUser" )
+ @ResponseBody
+ public Recipient findUser( String clientVersion, @PathVariable
+ int id, @RequestHeader( "name" )
+ String keyword )
+ throws NotAllowedException
+ {
+ Recipient recipient = new Recipient();
+ recipient.setClientVersion( clientVersion );
+ recipient.setUsers( activityReportingService.findUser( keyword ) );
+ return recipient;
+ }
+
}
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/EventAnalyticsController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/EventAnalyticsController.java 2014-03-26 09:26:06 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/EventAnalyticsController.java 2014-05-12 09:56:39 +0000
@@ -85,11 +85,13 @@
@RequestParam(required=false) boolean skipMeta,
@RequestParam(required=false) boolean hierarchyMeta,
@RequestParam(required=false) Integer limit,
+ @RequestParam(required=false) boolean uniqueInstances,
@RequestParam(required=false) SortOrder sortOrder,
Model model,
HttpServletResponse response ) throws Exception
{
- EventQueryParams params = analyticsService.getFromUrl( program, stage, startDate, endDate, dimension, filter, skipMeta, hierarchyMeta, sortOrder, limit, i18nManager.getI18nFormat() );
+ EventQueryParams params = analyticsService.getFromUrl( program, stage, startDate, endDate, dimension, filter,
+ skipMeta, hierarchyMeta, sortOrder, limit, uniqueInstances, i18nManager.getI18nFormat() );
contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_JSON, CacheStrategy.RESPECT_SYSTEM_SETTING );
Grid grid = analyticsService.getAggregatedEventData( params );
@@ -109,11 +111,13 @@
@RequestParam(required=false) boolean skipMeta,
@RequestParam(required=false) boolean hierarchyMeta,
@RequestParam(required=false) Integer limit,
+ @RequestParam(required=false) boolean uniqueInstances,
@RequestParam(required=false) SortOrder sortOrder,
Model model,
HttpServletResponse response ) throws Exception
{
- EventQueryParams params = analyticsService.getFromUrl( program, stage, startDate, endDate, dimension, filter, skipMeta, hierarchyMeta, sortOrder, limit, i18nManager.getI18nFormat() );
+ EventQueryParams params = analyticsService.getFromUrl( program, stage, startDate, endDate, dimension, filter,
+ skipMeta, hierarchyMeta, sortOrder, limit, uniqueInstances, i18nManager.getI18nFormat() );
contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_XML, CacheStrategy.RESPECT_SYSTEM_SETTING, "events.xml", false );
Grid grid = analyticsService.getAggregatedEventData( params );
@@ -131,11 +135,13 @@
@RequestParam(required=false) boolean skipMeta,
@RequestParam(required=false) boolean hierarchyMeta,
@RequestParam(required=false) Integer limit,
+ @RequestParam(required=false) boolean uniqueInstances,
@RequestParam(required=false) SortOrder sortOrder,
Model model,
HttpServletResponse response ) throws Exception
{
- EventQueryParams params = analyticsService.getFromUrl( program, stage, startDate, endDate, dimension, filter, skipMeta, hierarchyMeta, sortOrder, limit, i18nManager.getI18nFormat() );
+ EventQueryParams params = analyticsService.getFromUrl( program, stage, startDate, endDate, dimension, filter,
+ skipMeta, hierarchyMeta, sortOrder, limit, uniqueInstances, i18nManager.getI18nFormat() );
contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_EXCEL, CacheStrategy.RESPECT_SYSTEM_SETTING, "events.xls", true );
Grid grid = analyticsService.getAggregatedEventData( params );
@@ -153,11 +159,13 @@
@RequestParam(required=false) boolean skipMeta,
@RequestParam(required=false) boolean hierarchyMeta,
@RequestParam(required=false) Integer limit,
+ @RequestParam(required=false) boolean uniqueInstances,
@RequestParam(required=false) SortOrder sortOrder,
Model model,
HttpServletResponse response ) throws Exception
{
- EventQueryParams params = analyticsService.getFromUrl( program, stage, startDate, endDate, dimension, filter, skipMeta, hierarchyMeta, sortOrder, limit, i18nManager.getI18nFormat() );
+ EventQueryParams params = analyticsService.getFromUrl( program, stage, startDate, endDate, dimension, filter,
+ skipMeta, hierarchyMeta, sortOrder, limit, uniqueInstances, i18nManager.getI18nFormat() );
contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_CSV, CacheStrategy.RESPECT_SYSTEM_SETTING, "events.csv", true );
Grid grid = analyticsService.getAggregatedEventData( params );
@@ -175,11 +183,13 @@
@RequestParam(required=false) boolean skipMeta,
@RequestParam(required=false) boolean hierarchyMeta,
@RequestParam(required=false) Integer limit,
+ @RequestParam(required=false) boolean uniqueInstances,
@RequestParam(required=false) SortOrder sortOrder,
Model model,
HttpServletResponse response ) throws Exception
{
- EventQueryParams params = analyticsService.getFromUrl( program, stage, startDate, endDate, dimension, filter, skipMeta, hierarchyMeta, sortOrder, limit, i18nManager.getI18nFormat() );
+ EventQueryParams params = analyticsService.getFromUrl( program, stage, startDate, endDate, dimension, filter,
+ skipMeta, hierarchyMeta, sortOrder, limit, uniqueInstances, i18nManager.getI18nFormat() );
contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_HTML, CacheStrategy.RESPECT_SYSTEM_SETTING, "events.html", false );
Grid grid = analyticsService.getAggregatedEventData( params );
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/SystemController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/SystemController.java 2014-04-25 13:14:41 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/SystemController.java 2014-05-12 09:56:39 +0000
@@ -29,6 +29,9 @@
*/
import org.hisp.dhis.api.utils.ContextUtils;
+import org.hisp.dhis.calendar.Calendar;
+import org.hisp.dhis.calendar.CalendarService;
+import org.hisp.dhis.calendar.DateIntervalType;
import org.hisp.dhis.common.CodeGenerator;
import org.hisp.dhis.dxf2.metadata.ImportSummary;
import org.hisp.dhis.dxf2.utils.JacksonUtils;
=== removed file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/LoadAnonymousProgramsAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/LoadAnonymousProgramsAction.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/LoadAnonymousProgramsAction.java 1970-01-01 00:00:00 +0000
@@ -1,125 +0,0 @@
-package org.hisp.dhis.caseentry.action.caseentry;
-
-/*
- * Copyright (c) 2004-2014, University of Oslo
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * Neither the name of the HISP project nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.hisp.dhis.common.comparator.IdentifiableObjectNameComparator;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.organisationunit.OrganisationUnitLevel;
-import org.hisp.dhis.organisationunit.OrganisationUnitService;
-import org.hisp.dhis.ouwt.manager.OrganisationUnitSelectionManager;
-import org.hisp.dhis.program.Program;
-import org.hisp.dhis.program.ProgramService;
-
-import com.opensymphony.xwork2.Action;
-
-/**
- * @author Chau Thu Tran
- *
- * @version $Id: LoadAnonymousProgramsAction.java Dec 14, 2011 9:12:34 AM $
- */
-public class LoadAnonymousProgramsAction
- implements Action
-{
- // -------------------------------------------------------------------------
- // Dependencies
- // -------------------------------------------------------------------------
-
- private OrganisationUnitSelectionManager selectionManager;
-
- public void setSelectionManager( OrganisationUnitSelectionManager selectionManager )
- {
- this.selectionManager = selectionManager;
- }
-
- private OrganisationUnitService organisationUnitService;
-
- public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
- {
- this.organisationUnitService = organisationUnitService;
- }
-
- private ProgramService programService;
-
- public void setProgramService( ProgramService programService )
- {
- this.programService = programService;
- }
-
- // -------------------------------------------------------------------------
- // Output
- // -------------------------------------------------------------------------
-
- private OrganisationUnit orgunit;
-
- public OrganisationUnit getOrgunit()
- {
- return orgunit;
- }
-
- private List<Program> programs;
-
- public List<Program> getPrograms()
- {
- return programs;
- }
-
- private List<OrganisationUnitLevel> levels;
-
- public List<OrganisationUnitLevel> getLevels()
- {
- return levels;
- }
-
- // -------------------------------------------------------------------------
- // Implementation Action
- // -------------------------------------------------------------------------
-
- public String execute()
- throws Exception
- {
- orgunit = selectionManager.getSelectedOrganisationUnit();
-
- if ( orgunit != null )
- {
- programs = new ArrayList<Program>( programService.getPrograms( Program.SINGLE_EVENT_WITHOUT_REGISTRATION,
- orgunit ) );
- programs.retainAll( programService.getProgramsByCurrentUser());
-
- Collections.sort( programs, IdentifiableObjectNameComparator.INSTANCE );
- }
-
- levels = organisationUnitService.getOrganisationUnitLevels();
-
- return SUCCESS;
- }
-}
=== removed file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/RemoveEmptyEventsAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/RemoveEmptyEventsAction.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/RemoveEmptyEventsAction.java 1970-01-01 00:00:00 +0000
@@ -1,103 +0,0 @@
-package org.hisp.dhis.caseentry.action.caseentry;
-
-/*
- * Copyright (c) 2004-2014, University of Oslo
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * Neither the name of the HISP project nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.ouwt.manager.OrganisationUnitSelectionManager;
-import org.hisp.dhis.program.ProgramStage;
-import org.hisp.dhis.program.ProgramStageInstanceService;
-import org.hisp.dhis.program.ProgramStageService;
-
-import com.opensymphony.xwork2.Action;
-
-/**
- * @author Chau Thu Tran
- * @version RemoveEmptyEventsAction.java Jul 3, 2012 $
- */
-public class RemoveEmptyEventsAction
- implements Action
-{
- // -------------------------------------------------------------------------
- // Dependencies
- // -------------------------------------------------------------------------
-
- private ProgramStageService programStageService;
-
- public void setProgramStageService( ProgramStageService programStageService )
- {
- this.programStageService = programStageService;
- }
-
- private ProgramStageInstanceService programStageInstanceService;
-
- public void setProgramStageInstanceService( ProgramStageInstanceService programStageInstanceService )
- {
- this.programStageInstanceService = programStageInstanceService;
- }
-
- private OrganisationUnitSelectionManager selectionManager;
-
- public void setSelectionManager( OrganisationUnitSelectionManager selectionManager )
- {
- this.selectionManager = selectionManager;
- }
-
- // -------------------------------------------------------------------------
- // Input/Output
- // -------------------------------------------------------------------------
-
- private Integer programStageId;
-
- public void setProgramStageId( Integer programStageId )
- {
- this.programStageId = programStageId;
- }
-
- // -------------------------------------------------------------------------
- // Implementation Action
- // -------------------------------------------------------------------------
-
- public String execute()
- throws Exception
- {
- if ( programStageId == null )
- {
- return INPUT;
- }
-
- ProgramStage programStage = programStageService.getProgramStage( programStageId );
-
- OrganisationUnit organisationUnit = selectionManager.getSelectedOrganisationUnit();
-
- programStageInstanceService.removeEmptyEvents( programStage, organisationUnit );
-
- return SUCCESS;
- }
-
-}
=== removed file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SearchEventsAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SearchEventsAction.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SearchEventsAction.java 1970-01-01 00:00:00 +0000
@@ -1,457 +0,0 @@
-package org.hisp.dhis.caseentry.action.caseentry;
-
-/*
- * Copyright (c) 2004-2014, University of Oslo
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * Neither the name of the HISP project nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.hibernate.exception.SQLGrammarException;
-import org.hisp.dhis.common.Grid;
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.dataelement.DataElementService;
-import org.hisp.dhis.i18n.I18n;
-import org.hisp.dhis.i18n.I18nFormat;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.organisationunit.OrganisationUnitService;
-import org.hisp.dhis.paging.ActionPagingSupport;
-import org.hisp.dhis.program.ProgramStage;
-import org.hisp.dhis.program.ProgramStageInstance;
-import org.hisp.dhis.program.ProgramStageInstanceService;
-import org.hisp.dhis.program.ProgramStageService;
-import org.hisp.dhis.program.TabularEventColumn;
-import org.hisp.dhis.system.util.ConversionUtils;
-import org.hisp.dhis.system.util.TextUtils;
-import org.hisp.dhis.trackedentity.TrackedEntityAttribute;
-import org.hisp.dhis.user.CurrentUserService;
-
-/**
- * @author Chau Thu Tran
- * @version $ SearchEventsAction.java Nov 22, 2013 1:06:04 PM $
- */
-public class SearchEventsAction
- extends ActionPagingSupport<ProgramStageInstance>
-{
- // -------------------------------------------------------------------------
- // Dependencies
- // -------------------------------------------------------------------------
-
- private OrganisationUnitService organisationUnitService;
-
- public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
- {
- this.organisationUnitService = organisationUnitService;
- }
-
- private ProgramStageService programStageService;
-
- public void setProgramStageService( ProgramStageService programStageService )
- {
- this.programStageService = programStageService;
- }
-
- private DataElementService dataElementService;
-
- public void setDataElementService( DataElementService dataElementService )
- {
- this.dataElementService = dataElementService;
- }
-
- private ProgramStageInstanceService programStageInstanceService;
-
- public void setProgramStageInstanceService( ProgramStageInstanceService programStageInstanceService )
- {
- this.programStageInstanceService = programStageInstanceService;
- }
-
- private CurrentUserService currentUserService;
-
- public void setCurrentUserService( CurrentUserService currentUserService )
- {
- this.currentUserService = currentUserService;
- }
-
- // -------------------------------------------------------------------------
- // Input/Output
- // -------------------------------------------------------------------------
-
- private List<TrackedEntityAttribute> attributes = new ArrayList<TrackedEntityAttribute>();
-
- public List<TrackedEntityAttribute> getAttributes()
- {
- return attributes;
- }
-
- private Collection<String> orgunitIds = new HashSet<String>();
-
- public void setOrgunitIds( Collection<String> orgunitIds )
- {
- this.orgunitIds = orgunitIds;
- }
-
- private Integer programStageId;
-
- public void setProgramStageId( Integer programStageId )
- {
- this.programStageId = programStageId;
- }
-
- private String startDate;
-
- public void setStartDate( String startDate )
- {
- this.startDate = startDate;
- }
-
- private String endDate;
-
- public void setEndDate( String endDate )
- {
- this.endDate = endDate;
- }
-
- private List<String> values = new ArrayList<String>();
-
- public List<String> getValues()
- {
- return values;
- }
-
- private List<String> filterValues = new ArrayList<String>();
-
- public void setFilterValues( List<String> filterValues )
- {
- this.filterValues = filterValues;
- }
-
- private Boolean userOrganisationUnit;
-
- public void setUserOrganisationUnit( Boolean userOrganisationUnit )
- {
- this.userOrganisationUnit = userOrganisationUnit;
- }
-
- private Boolean userOrganisationUnitChildren;
-
- public void setUserOrganisationUnitChildren( Boolean userOrganisationUnitChildren )
- {
- this.userOrganisationUnitChildren = userOrganisationUnitChildren;
- }
-
- private Grid grid;
-
- public Grid getGrid()
- {
- return grid;
- }
-
- private Integer total;
-
- public void setTotal( Integer total )
- {
- this.total = total;
- }
-
- public Integer getTotal()
- {
- return total;
- }
-
- private I18n i18n;
-
- public void setI18n( I18n i18n )
- {
- this.i18n = i18n;
- }
-
- private I18nFormat format;
-
- public void setFormat( I18nFormat format )
- {
- this.format = format;
- }
-
- private Boolean useCompletedEvents;
-
- public void setUseCompletedEvents( Boolean useCompletedEvents )
- {
- this.useCompletedEvents = useCompletedEvents;
- }
-
- private List<DataElement> dataElements = new ArrayList<DataElement>();
-
- public List<DataElement> getDataElements()
- {
- return dataElements;
- }
-
- private String type;
-
- public void setType( String type )
- {
- this.type = type;
- }
-
- private String facilityLB; // All, children, current
-
- public void setFacilityLB( String facilityLB )
- {
- this.facilityLB = facilityLB;
- }
-
- private List<String> valueTypes = new ArrayList<String>();
-
- public List<String> getValueTypes()
- {
- return valueTypes;
- }
-
- private Map<Integer, List<String>> mapSuggestedValues = new HashMap<Integer, List<String>>();
-
- public Map<Integer, List<String>> getMapSuggestedValues()
- {
- return mapSuggestedValues;
- }
-
- private String message;
-
- public String getMessage()
- {
- return message;
- }
-
- private Boolean useFormNameDataElement;
-
- public void setUseFormNameDataElement( Boolean useFormNameDataElement )
- {
- this.useFormNameDataElement = useFormNameDataElement;
- }
-
- // -------------------------------------------------------------------------
- // Implementation Action
- // -------------------------------------------------------------------------
-
- public String execute()
- throws Exception
- {
- if ( programStageId == null )
- {
- return INPUT;
- }
-
- // ---------------------------------------------------------------------
- // Get user orgunits
- // ---------------------------------------------------------------------
-
- Set<OrganisationUnit> ous = new HashSet<OrganisationUnit>( organisationUnitService.getOrganisationUnitsByUid( orgunitIds ) );
- Set<Integer> orgUnitIds = new HashSet<Integer>( ConversionUtils.getIdentifiers( OrganisationUnit.class, ous ) );
-
- if ( userOrganisationUnit || userOrganisationUnitChildren )
- {
- Collection<OrganisationUnit> userOrgunits = currentUserService.getCurrentUser().getOrganisationUnits();
- orgUnitIds = new HashSet<Integer>();
-
- if ( userOrganisationUnit )
- {
- for ( OrganisationUnit userOrgunit : userOrgunits )
- {
- orgUnitIds.add( userOrgunit.getId() );
- }
- }
-
- if ( userOrganisationUnitChildren )
- {
- for ( OrganisationUnit userOrgunit : userOrgunits )
- {
- if ( userOrgunit.hasChild() )
- {
- for ( OrganisationUnit childOrgunit : userOrgunit.getSortedChildren() )
- {
- orgUnitIds.add( childOrgunit.getId() );
- }
- }
- }
- }
- }
-
- // ---------------------------------------------------------------------
- // Get orgunitIds
- // ---------------------------------------------------------------------
-
- Set<Integer> organisationUnits = new HashSet<Integer>();
-
- if ( facilityLB.equals( "selected" ) )
- {
- organisationUnits.addAll( orgUnitIds );
- }
- else if ( facilityLB.equals( "childrenOnly" ) )
- {
- for ( Integer orgunitId : orgUnitIds )
- {
- OrganisationUnit selectedOrgunit = organisationUnitService.getOrganisationUnit( orgunitId );
- organisationUnits.addAll( organisationUnitService.getOrganisationUnitHierarchy()
- .getChildren( orgunitId ) );
- organisationUnits.remove( selectedOrgunit );
- }
- }
- else
- {
- for ( Integer orgunitId : orgUnitIds )
- {
- organisationUnits.addAll( organisationUnitService.getOrganisationUnitHierarchy()
- .getChildren( orgunitId ) );
- }
- }
-
- // ---------------------------------------------------------------------
- // Get program-stage, start-date, end-date
- // ---------------------------------------------------------------------
-
- ProgramStage programStage = programStageService.getProgramStage( programStageId );
- Date start = format.parseDate( startDate );
- Date end = format.parseDate( endDate );
- List<TabularEventColumn> columns = getTableColumns();
-
- // ---------------------------------------------------------------------
- // Generate tabular report
- // ---------------------------------------------------------------------
- try
- {
- if ( type == null ) // Tabular report
- {
- total = programStageInstanceService.searchEventsCount( programStage, columns, organisationUnits,
- useCompletedEvents, start, end );
- this.paging = createPaging( total );
-
- grid = programStageInstanceService.searchEvents( programStage, columns, organisationUnits, start, end,
- useCompletedEvents, paging.getStartPos(), paging.getPageSize(), i18n );
- }
- // Download as Excel
- else
- {
- grid = programStageInstanceService.searchEvents( programStage, columns, organisationUnits, start, end,
- useCompletedEvents, null, null, i18n );
- }
- }
- catch ( SQLGrammarException ex )
- {
- message = i18n.getString( "failed_to_get_events" );
- }
-
- return type == null ? SUCCESS : type;
- }
-
- // -------------------------------------------------------------------------
- // Supportive methods
- // -------------------------------------------------------------------------
-
- private List<TabularEventColumn> getTableColumns()
- {
- List<TabularEventColumn> columns = new ArrayList<TabularEventColumn>();
-
- int index = 0;
-
- for ( String filterValue : filterValues )
- {
- String[] values = filterValue.split( "_" );
-
- if ( values != null && values.length >= 3 )
- {
- String prefix = values[0];
-
- TabularEventColumn column = new TabularEventColumn();
- column.setPrefix( prefix );
- column.setIdentifier( values[1] );
- column.setHidden( Boolean.parseBoolean( values[2] ) );
-
- column.setOperator( values.length > 3 ? TextUtils.lower( values[3] ) : TextUtils.EMPTY );
- column.setQuery( values.length > 4 ? TextUtils.lower( values[4] ) : TextUtils.EMPTY );
-
- if ( "de".equals( prefix ) )
- {
- int objectId = Integer.parseInt( values[1] );
- DataElement dataElement = dataElementService.getDataElement( objectId );
- if ( dataElement.getType().equals( DataElement.VALUE_TYPE_INT ) )
- {
- column.setPrefix( "numberDe" );
- }
- dataElements.add( dataElement );
-
- String valueType = dataElement.getOptionSet() != null ? "optionSet" : dataElement
- .getType();
- valueTypes.add( valueType );
- mapSuggestedValues.put( index, getSuggestedDataElementValues( dataElement ) );
- if ( dataElement.getType().equals( DataElement.VALUE_TYPE_DATE ) )
- {
- column.setDateType( true );
- }
-
- if ( useFormNameDataElement != null && useFormNameDataElement )
- {
- column.setName( dataElement.getFormNameFallback() );
- }
- else
- {
- column.setName( dataElement.getDisplayName() );
- }
- }
-
- columns.add( column );
-
- index++;
- }
- }
-
- return columns;
- }
-
- private List<String> getSuggestedDataElementValues( DataElement dataElement )
- {
- List<String> values = new ArrayList<String>();
- String valueType = dataElement.getType();
-
- if ( valueType.equals( DataElement.VALUE_TYPE_BOOL ) )
- {
- values.add( i18n.getString( "yes" ) );
- values.add( i18n.getString( "no" ) );
- }
- if ( valueType.equals( DataElement.VALUE_TYPE_TRUE_ONLY ) )
- {
- values.add( i18n.getString( "" ) );
- values.add( i18n.getString( "yes" ) );
- }
-
- return values;
- }
-}
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/AddTrackedEntityInstanceAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/AddTrackedEntityInstanceAction.java 2014-04-12 12:12:30 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/AddTrackedEntityInstanceAction.java 2014-05-12 09:56:39 +0000
@@ -92,7 +92,7 @@
// Input
// -------------------------------------------------------------------------
- private Integer representativeId;
+ private String representativeId;
private Integer relationshipTypeId;
@@ -269,7 +269,7 @@
this.attributeService = attributeService;
}
- public void setRepresentativeId( Integer representativeId )
+ public void setRepresentativeId( String representativeId )
{
this.representativeId = representativeId;
}
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/GetAttributesByProgramAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/GetAttributesByProgramAction.java 2014-04-12 11:34:06 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/GetAttributesByProgramAction.java 2014-05-12 09:56:39 +0000
@@ -29,7 +29,6 @@
*/
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -115,18 +114,14 @@
public String execute()
throws Exception
{
- if ( id != null )
+ if ( id != null && !id.isEmpty() )
{
program = programService.getProgram( id );
}
else
{
attributes = new ArrayList<TrackedEntityAttribute>(
- attributeService.getTrackedEntityAttributesWithoutProgram() );
- Collection<TrackedEntityAttribute> attribuesInList = attributeService
- .getTrackedEntityAttributesDisplayInList( true );
- attributes.removeAll( attribuesInList );
- attributes.addAll( attribuesInList );
+ attributeService.getTrackedEntityAttributesDisplayInList( true ) );
}
Collections.sort( attributes, IdentifiableObjectNameComparator.INSTANCE );
=== removed file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/SearchPersonAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/SearchPersonAction.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/SearchPersonAction.java 1970-01-01 00:00:00 +0000
@@ -1,135 +0,0 @@
-package org.hisp.dhis.caseentry.action.trackedentity;
-
-/*
- * Copyright (c) 2004-2014, University of Oslo
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * Neither the name of the HISP project nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.hisp.dhis.trackedentity.TrackedEntityInstance;
-import org.hisp.dhis.trackedentity.TrackedEntityInstanceService;
-import org.hisp.dhis.trackedentityattributevalue.TrackedEntityAttributeValue;
-import org.hisp.dhis.trackedentityattributevalue.TrackedEntityAttributeValueService;
-
-import com.opensymphony.xwork2.Action;
-
-/**
- * @author Viet
- * @version $Id$
- */
-
-public class SearchPersonAction
- implements Action
-{
- // -------------------------------------------------------------------------
- // Dependencies
- // -------------------------------------------------------------------------
-
- private TrackedEntityInstanceService entityInstanceService;
-
- private TrackedEntityAttributeValueService attributeValueService;
-
- // -------------------------------------------------------------------------
- // Input
- // -------------------------------------------------------------------------
-
- private Integer attributeId;
-
- private String searchValue;
-
- // -------------------------------------------------------------------------
- // Output
- // -------------------------------------------------------------------------
-
- private Map<String, String> attributeValueMap = new HashMap<String, String>();
-
- private Collection<TrackedEntityInstance> entityInstances;
-
- // -------------------------------------------------------------------------
- // Action implementation
- // -------------------------------------------------------------------------
-
- public String execute()
- throws Exception
- {
- entityInstances = entityInstanceService.getTrackedEntityInstance( attributeId, searchValue );
-
- if ( entityInstances != null && entityInstances.size() > 0 )
- {
- for ( TrackedEntityInstance p : entityInstances )
- {
- Collection<TrackedEntityAttributeValue> attributeValues = attributeValueService
- .getTrackedEntityAttributeValues( p );
-
- for ( TrackedEntityAttributeValue attributeValue : attributeValues )
- {
- attributeValueMap.put(
- p.getId() + "_" + attributeValue.getAttribute().getId(),
- attributeValue.getValue() );
- }
- }
- }
-
- return SUCCESS;
- }
-
- // -------------------------------------------------------------------------
- // Getter/Setter
- // -------------------------------------------------------------------------
-
- public void setAttributeId( Integer attributeId )
- {
- this.attributeId = attributeId;
- }
-
- public void setEntityInstanceService( TrackedEntityInstanceService entityInstanceService )
- {
- this.entityInstanceService = entityInstanceService;
- }
-
- public Collection<TrackedEntityInstance> getEntityInstances()
- {
- return entityInstances;
- }
-
- public Map<String, String> getAttributeValueMap()
- {
- return attributeValueMap;
- }
-
- public void setAttributeValueService( TrackedEntityAttributeValueService attributeValueService )
- {
- this.attributeValueService = attributeValueService;
- }
-
- public void setSearchValue( String searchValue )
- {
- this.searchValue = searchValue;
- }
-}
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/SelectAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/SelectAction.java 2014-04-11 00:54:51 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/SelectAction.java 2014-05-12 09:56:39 +0000
@@ -29,7 +29,6 @@
*/
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -127,12 +126,9 @@
public String execute()
throws Exception
{
-
organisationUnit = selectionManager.getSelectedOrganisationUnit();
- Collection<TrackedEntityAttribute> _attributes = attributeService.getTrackedEntityAttributesWithoutProgram();
- _attributes.addAll( attributeService.getTrackedEntityAttributesDisplayInList( true ) );
- attributes = new ArrayList<TrackedEntityAttribute>( _attributes );
+ attributes = new ArrayList<TrackedEntityAttribute>( attributeService.getTrackedEntityAttributesDisplayInList( true ) );
Collections.sort( attributes, IdentifiableObjectNameComparator.INSTANCE );
trackedEntities = new ArrayList<TrackedEntity>( trackedEntityService.getAllTrackedEntity() );
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/UpdateTrackedEntityInstanceAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/UpdateTrackedEntityInstanceAction.java 2014-04-12 12:12:30 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/UpdateTrackedEntityInstanceAction.java 2014-05-12 09:56:39 +0000
@@ -79,7 +79,7 @@
private Integer id;
- private Integer representativeId;
+ private String representativeId;
private Integer relationshipTypeId;
@@ -207,7 +207,7 @@
return entityInstance;
}
- public void setRepresentativeId( Integer representativeId )
+ public void setRepresentativeId( String representativeId )
{
this.representativeId = representativeId;
}
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml 2014-04-30 12:57:22 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml 2014-05-12 09:56:39 +0000
@@ -325,17 +325,6 @@
</bean>
<bean
- id="org.hisp.dhis.caseentry.action.caseentry.LoadAnonymousProgramsAction"
- class="org.hisp.dhis.caseentry.action.caseentry.LoadAnonymousProgramsAction"
- scope="prototype">
- <property name="selectionManager"
- ref="org.hisp.dhis.ouwt.manager.OrganisationUnitSelectionManager" />
- <property name="organisationUnitService"
- ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
- <property name="programService" ref="org.hisp.dhis.program.ProgramService" />
- </bean>
-
- <bean
id="org.hisp.dhis.caseentry.action.caseentry.RemoveCurrentEncounterAction"
class="org.hisp.dhis.caseentry.action.caseentry.RemoveCurrentEncounterAction"
scope="prototype">
@@ -362,26 +351,8 @@
<property name="programStageService" ref="org.hisp.dhis.program.ProgramStageService" />
</bean>
- <bean
- id="org.hisp.dhis.caseentry.action.caseentry.RemoveEmptyEventsAction"
- class="org.hisp.dhis.caseentry.action.caseentry.RemoveEmptyEventsAction"
- scope="prototype">
- <property name="programStageService" ref="org.hisp.dhis.program.ProgramStageService" />
- <property name="programStageInstanceService"
- ref="org.hisp.dhis.program.ProgramStageInstanceService" />
- <property name="selectionManager"
- ref="org.hisp.dhis.ouwt.manager.OrganisationUnitSelectionManager" />
- </bean>
-
<!-- Tracked Entity Instance -->
- <bean id="org.hisp.dhis.caseentry.action.trackedentity.SearchPersonAction"
- class="org.hisp.dhis.caseentry.action.trackedentity.SearchPersonAction">
- <property name="entityInstanceService" ref="org.hisp.dhis.trackedentity.TrackedEntityInstanceService" />
- <property name="attributeValueService"
- ref="org.hisp.dhis.trackedentityattributevalue.TrackedEntityAttributeValueService" />
- </bean>
-
<bean id="org.hisp.dhis.caseentry.action.trackedentity.SelectAction"
class="org.hisp.dhis.caseentry.action.trackedentity.SelectAction" scope="prototype">
<property name="selectionManager"
@@ -687,18 +658,6 @@
scope="prototype">
</bean>
- <bean id="org.hisp.dhis.caseentry.action.caseentry.SearchEventsAction"
- class="org.hisp.dhis.caseentry.action.caseentry.SearchEventsAction"
- scope="prototype">
- <property name="programStageService" ref="org.hisp.dhis.program.ProgramStageService" />
- <property name="programStageInstanceService"
- ref="org.hisp.dhis.program.ProgramStageInstanceService" />
- <property name="organisationUnitService"
- ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
- <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
- <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
- </bean>
-
<!-- Reminder -->
<bean
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/struts.xml 2014-04-30 12:57:22 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/struts.xml 2014-05-12 09:56:39 +0000
@@ -212,13 +212,6 @@
</result>
</action>
- <action name="removeEmptyEvents"
- class="org.hisp.dhis.caseentry.action.caseentry.RemoveEmptyEventsAction">
- <result name="success" type="velocity-json">
- /dhis-web-commons/ajax/jsonResponseSuccess.vm
- </result>
- </action>
-
<action name="getUsernameList"
class="org.hisp.dhis.caseentry.action.caseentry.GetUsernameListAction">
<result name="success" type="velocity-json">/dhis-web-caseentry/jsonUsernames.vm
@@ -515,13 +508,6 @@
<param name="requiredAuthorities">F_TRACKED_ENTITY_INSTANCE_ADD</param>
</action>
- <action name="searchPerson"
- class="org.hisp.dhis.caseentry.action.trackedentity.SearchPersonAction">
- <result name="success" type="velocity-xml">responseTrackedEntityInstances.vm
- </result>
- <param name="requiredAuthorities">F_TRACKED_ENTITY_INSTANCE_SEARCH</param>
- </action>
-
<action name="addRepresentative"
class="org.hisp.dhis.caseentry.action.trackedentity.AddRepresentativeAction">
<result name="success" type="velocity-xml">responseRepresentative.vm
=== removed file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/anonymousRegistration.vm'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/anonymousRegistration.vm 2014-04-17 16:00:32 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/anonymousRegistration.vm 1970-01-01 00:00:00 +0000
@@ -1,252 +0,0 @@
-<script type="text/javascript">
- jQuery( document ).ready( function () {
- datePickerInRange( 'startDate', 'endDate', true, true );
- disableCriteriaDiv();
- } );
-</script>
-
-<h3>$i18n.getString( "anonymous_events_management" ) #openHelp('single_event_without_registration')</h3>
-<h3 id='orgunitNameInfor' name='orgunitNameInfor'></h3>
-<h4 id='programName' name='programName'>fasdfadfa</h4>
-
-<input type='hidden' id='orgunitId' name='orgunitId' value='$orgunit.id'>
-<input type='hidden' id='programStageInstanceId' name='programStageInstanceId' value='0'>
-<input type='hidden' id='programStageId' name='programStageId' class='stage-object-selected'>
-<input type='hidden' id='listAll' name='listAll' value="true">
-
-<select multiple id='displayInReports' name='displayInReports' class='hidden'></select>
-
-<div>
- <div id='selectDiv'>
- <table>
- <tr>
- <td><label>$i18n.getString( "registering_unit" )</label></td>
- <td><input type="text" id='orgunitName' name='orgunitName' #if( $orgunit ) value="$encoder.htmlEncode( $orgunit.name )" #else value="[$i18n.getString( 'please_select_village' )]" #end disabled /></td>
- </tr>
- <tr>
- <td>
- $i18n.getString("program") <em title="$i18n.getString( "required" )" class="required">*</em></label>
- </td>
- <td>
- <select type="text" id="programId" name="programId" onchange='getDataElements();'>
- <option value="" psid="" reportDateDes="$i18n.getString('report_date')">[$i18n.getString("please_select")]</option>
- #foreach( $program in $programs )
- #foreach( $programStage in $program.programStages )
- <option value='$program.id' psid='$programStage.id' reportDateDes="$programStage.reportDateDescription">$program.displayName</option>
- #end
- #end
- </select>
- <input type='hidden' class='stage-object-selected hidden' />
- </td>
- <td colspan="2" style="padding-left: 20px;">
- <input type="button" class='large-button' id='addBtn' style="width: 145px;" value='$i18n.getString( "add_new" )' onclick="showAddEventForm();" />
- <input type="button" id='removeBtn' value='$i18n.getString( "remove_empty_events" )' onclick="removeEmptyEvents();" style="width: 145px;" />
- </td>
- </tr>
- <tr><td style="padding-top: 10px;"></td></tr>
- <tr>
- <td><label>$i18n.getString('from')</label></td>
- <td>
- <input type="text" id='startDate' name='startDate' style="width:260px;" />
- </td>
- <td style="padding-left: 20px;">
- <input type="checkbox" id="incompleted" name="incompleted" value="true">$i18n.getString("incomplete")</input>
- </td>
- </tr>
- <tr>
- <td><label>$i18n.getString('to')</label></td>
- <td>
- <input type="text" id='endDate' name='endDate' style="width:260px;" />
- </td>
- <td style="padding-left: 20px;">
- <input type="button" class='large-button' style="width: 145px;" id='filterBtn' name="filterBtn" value='$i18n.getString( "show_filter" )' onclick="showFilterForm();" />
- <input type="button" class='large-button' style="width: 145px;" id='listBtn' value="$i18n.getString( 'search' )" onclick="validateSearchEvents(false);" />
- </td>
- </tr>
- <tr><td> </td></tr>
- <tr id='minimized-advanced-search' class="hidden">
- <td align='right' colspan='5' height="50px">
- $i18n.getString('you_have_active_filters')
- <input type="button" class='normal-button' value="$i18n.getString('show_all')" onclick='showFilterForm()'>
- <input type="button" class='normal-button' value="$i18n.getString('clear_all')" onclick='removeAllOption()'>
- </td>
- </tr>
- </table>
- <table id='advanced-search' class='hidden advanced-search'>
- <col/>
- <col/>
- <col/>
- <col width="180"/>
- <tr class="hidden">
- <td id='searchingAttributeIdTD'>
- <select id="searchObjectId" name="searchObjectId" onchange='dataElementOnChange(this);'></select>
- </td>
- </tr>
- <tbody id='advancedSearchTB'>
- <tr><td></td></tr>
- <tr>
- <td></td>
- <td></td>
- <tr/>
-
- <tr id='advSearchBox0'>
- <td>
- <select id="searchObjectId" name="searchObjectId" onchange='dataElementOnChange(this);'></select>
- </td>
- <td>
- <input type="text" id="searchText" name="searchText" value="$!searchText">
- <input type="button" class='normal-button' name="clearSearchBtn" value='$i18n.getString( "clear" )' onclick="removeAttributeOption('advSearchBox0');" disabled>
- </td>
- </tr>
-
- </tbody>
- <tfoot>
- <tr>
- <td colspan="2">
- <input type="button" class='normal-button' id='addSearchOptionBtn' name='addSearchOptionBtn' value="$i18n.getString('add')" onclick='addAttributeOption()' />
- <input type="button" class='normal-button' id='clearAllBtn' name='clearAllBtnaddSearchOptionBtn' value="$i18n.getString('clear_all')" onclick='removeAllOption()' />
- </td>
- </tr>
- </tfoot>
- </table>
- </div>
-</div>
-
-<script id="offline-event-template" type="text/template">
- <tr id="tr<%= programStageInstanceId %>" class="listRow">
- <td><%= index %></td>
- <td><%= executionDate %></td>
-
- <td align="right" style="padding-right:20px;">
- <% if( !completed ) { %>
- <span class="incomplete-record" title="Incomplete"> ! </span>
- <% } %>
- <a href="javascript:showUpdateEvent( '<%= programStageInstanceId %>' )" title="Data entry"><img src="images/data_entry.png" alt="Data entry"></a>
- <a href="javascript:removeEvent( '<%= programStageInstanceId %>' )" title="Remove"><img src="../images/delete.png" alt="Remove"></a>
- </td>
- </tr>
-</script>
-
-<script id="no-offline-event-template" type="text/template">
- <tr class="listRow">
- <td colspan="3">No offline events</td>
- </tr>
-</script>
-
-<div id='offlineListDiv'>
- <table class="listTable hidden">
- <thead>
- <tr>
- <th colspan="4">Offline Events</th>
- </tr>
- </thead>
- <thead>
- <tr>
- <th>#</th>
- <th>Report date</th>
- <th style="width:100px">Operations</th>
- </tr>
- </thead>
-
- <tbody id="offlineEventList">
- </tbody>
- </table>
-</div>
-
-<div id='listDiv'></div>
-
-<div id='dataEntryInfor' class='hidden'>
- <table style="width:600px; margin-bottom: 0;" class="listTable">
- <tr>
- <th style='width:220px' colspan='2'><span id="reportDateDescriptionField2">$i18n.getString( "report_date" )</span> <em title="$i18n.getString( "required" )" class="required">*</em> </th>
- <th colspan="2"><input type="text" id="executionDate" name="executionDate" onchange="addNewEvent();" style="padding-left: 2px; margin-left:6px;width:300px;" ></th>
- <script type="text/javascript">
- datePickerValid( 'executionDate', false );
- </script>
- </tr>
- </table>
- <div id='dataEntryFormDiv'></div>
-
- <div id='actionDiv' class="page inputCriteria" style="width:700px;height:29px;">
- <input type="button" id="completeAndNewBtn" onclick="completedAndAddNewEvent();" value="$i18n.getString('complete_and_add_new_event')" style="width:160px;">
- <input type="button" id="completeBtn" onclick="doComplete()" value="$i18n.getString('complete')">
- <input type="button" id="uncompleteBtn" onclick="doUnComplete()" value="$i18n.getString('incomplete')">
- <input type="button" id="validateBtn" value="$i18n.getString('run_validation')" onclick="javascript: runValidation();">
- <input type="button" id="completeBtn" onclick="removeCurrentEvent();" value="$i18n.getString('remove')">
- </div>
-</div>
-
-#parse( "dhis-web-commons/loader/loader.vm" )
-
-<script>
- var i18n_please_select = '$encoder.jsEscape( $i18n.getString( "please_select" ) , "'")';
-
- var i18n_value_must_integer = '$encoder.jsEscape( $i18n.getString( "value_must_integer" ) , "'")';
- var i18n_value_must_number = '$encoder.jsEscape( $i18n.getString( "value_must_number" ) , "'")';
- var i18n_value_must_positive_integer = '$encoder.jsEscape( $i18n.getString( "value_must_positive_integer" ) , "'")';
- var i18n_value_must_negative_integer = '$encoder.jsEscape( $i18n.getString( "value_must_negative_integer" ) , "'")';
- var i18n_value_must_zero_or_positive_integer = '$encoder.jsEscape( $i18n.getString( "value_must_zero_or_positive_integer" ) , "'")';
- var i18n_value_must_unit_interval = '$encoder.jsEscape( $i18n.getString( "value_must_unit_interval" ) , "'")';
- var i18n_invalid_date = '$encoder.jsEscape( $i18n.getString( "invalid_date" ) , "'")' + ".\n "
- + '$encoder.jsEscape( $i18n.getString( "format_date" ) , "'")' + " '"
- + dateFormat.replace('yy', 'yyyy') + " '" ;
- var i18n_saving_value_failed_status_code = '$encoder.jsEscape( $i18n.getString( "saving_value_failed_status_code" ) , "'")';
- var i18n_saving_value_failed_error_code = '$encoder.jsEscape( $i18n.getString( "saving_value_failed_error_code" ) , "'")';
- var i18n_searching_tracked_entity_instance_failed = '$encoder.jsEscape( $i18n.getString( "searching_tracked_entity_instance_failed" ) , "'")';
- var i18n_complete_confirm_message = '$encoder.jsEscape( $i18n.getString( "complete_confirm_message" ) , "'")';
- var i18n_error_required_field = '$encoder.jsEscape( $i18n.getString( "error_required_field" ) , "'")';
- var i18n_violate_validation = '$encoder.jsEscape( $i18n.getString( "violate_validation" ) , "'")';
- var i18n_date_is_greater_then_or_equals_due_date = '$encoder.jsEscape( $i18n.getString( "date_is_greater_then_or_equals_due_date" ) , "'")';
-
- var i18n_violate_validation = '$encoder.jsEscape( $i18n.getString( "violate_validation" ) , "'")';
- var i18n_show_all_items = '$encoder.jsEscape( $i18n.getString( "show_all_items" ) , "'")';
- var i18n_specify_data_element = '$encoder.jsEscape( $i18n.getString( "specify_data_element" ) , "'")';
- var i18n_comfirm_delete_event = '$encoder.jsEscape( $i18n.getString( "comfirm_delete_event" ) , "'")';
- var i18n_delete_event_success = '$encoder.jsEscape( $i18n.getString( "delete_event_success" ) , "'")';
- var i18n_report_date = '$encoder.jsEscape( $i18n.getString( "report_date" ) , "'")';
- var i18n_search_events_by_dataelements = '$encoder.jsEscape( $i18n.getString( "search_events_by_dataelements" ) , "'")';
- var i18n_list_all_events = '$encoder.jsEscape( $i18n.getString( "list_all_events" ) , "'")';
- var i18n_no_compulsary_data_elements = '$encoder.jsEscape( $i18n.getString( "no_compulsary_data_elements" ) , "'")';
- var i18n_remove_empty_events_success = '$encoder.jsEscape( $i18n.getString( "remove_empty_events_success" ) , "'")';
- var i18n_confirm_remove_empty_events = '$encoder.jsEscape( $i18n.getString( "confirm_remove_empty_events" ) , "'")';
- var i18n_report_date = '$encoder.jsEscape( $i18n.getString( "report_date" ) , "'")';
-
- var i18n_yes = '$encoder.jsEscape( $i18n.getString( "yes" ) , "'")';
- var i18n_no = '$encoder.jsEscape( $i18n.getString( "no" ) , "'")';
- var i18n_specify_search_criteria = '$encoder.jsEscape( $i18n.getString( "specify_search_criteria" ) , "'")';
- var i18n_add_filter = '$encoder.jsEscape( $i18n.getString( "add_filter" ) , "'")';
- var i18n_clear_filter = '$encoder.jsEscape( $i18n.getString( "clear_filter" ) , "'")';
- var i18n_specify_a_date = '$encoder.jsEscape( $i18n.getString( "specify_a_date" ) , "'")';
- var i18n_clear = '$encoder.jsEscape( $i18n.getString( "clear" ) , "'")';
- var i18n_insert_a_report_date = '$encoder.jsEscape( $i18n.getString( "insert_a_report_date" ) , "'")';
- var i18n_comment_added = '$encoder.jsEscape( $i18n.getString( "comment_added" ) , "'")';
-
- var i18n_need_to_sync_notification = '$encoder.jsEscape( $i18n.getString( "need_to_sync_notification" ) , "'")';
- var i18n_sync_now = '$encoder.jsEscape( $i18n.getString( "sync_now" ) , "'")';
- var i18n_sync_success = '$encoder.jsEscape( $i18n.getString( "sync_success" ) , "'")';
- var i18n_sync_failed = '$encoder.jsEscape( $i18n.getString( "sync_failed" ) , "'")';
- var i18n_uploading_data_notification = '$encoder.jsEscape( $i18n.getString( "uploading_data_notification" ) , "'")';
- var i18n_incomplete_confirm_message = '$encoder.jsEscape( $i18n.getString( "incomplete_confirm_message" ) , "'")';
- var i18n_ajax_login_failed = '$encoder.jsEscape( $i18n.getString( "ajax_login_failed" ) , "'")';
- var i18n_online_notification = '$encoder.jsEscape( $i18n.getString( "online_notification" ) , "'")';
- var i18n_offline_notification = '$encoder.jsEscape( $i18n.getString( "offline_notification" ) , "'")';
- var i18n_operation_not_available_offline = '$encoder.jsEscape( $i18n.getString( "operation_not_available_offline" ) , "'")';
- var i18n_please_wait_loading = '$encoder.jsEscape( $i18n.getString( "please_wait_loading" ) , "'")';
- var i18n_complete_program_confirm_message = '$encoder.jsEscape( $i18n.getString( "complete_program_confirm_message" ) , "'")';
-
- isAjax = true;
- contentDiv = '';
- var unSave = false;
- var searchTextBox = '<input type="text" id="searchText" name="searchText">';
- setInnerHTML('reportDateDescriptionField', jQuery('#programId option:selected').attr('reportDateDes'));
- setInnerHTML('reportDateDescriptionField2', jQuery('#programId option:selected').attr('reportDateDes'));
-
- var date = new Date();
- var d = date.getDate();
- var m = date.getMonth();
- var y= date.getFullYear();
-
- var startDateSince = jQuery.datepicker.formatDate( dateFormat, new Date(y, m, d-7) ) ;
- setFieldValue('startDate', startDateSince);
-
-</script>
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/index.vm'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/index.vm 2014-04-06 18:03:57 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/index.vm 2014-05-12 09:56:39 +0000
@@ -18,10 +18,6 @@
#introListImgItem( "singleEventSelect.action" "single_event_with_registration" "attribute" )
#end
- #if( $auth.hasAccess( "dhis-web-caseentry", "anonymousRegistration" ) )
- #introListImgItem( "anonymousRegistration.action" "anonymous_events" "attribute" )
- #end
-
#if( $auth.hasAccess( "dhis-web-caseentry", "reportSelect" ) )
#introListImgItem( "reportSelect.action" "program_summary" "summaryreport" )
#end
=== removed file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/anonymousRegistration.js'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/anonymousRegistration.js 2014-03-20 10:17:37 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/anonymousRegistration.js 1970-01-01 00:00:00 +0000
@@ -1,1163 +0,0 @@
-var DAO = DAO || {};
-
-DAO.store = new dhis2.storage.Store( {
- name: 'dhis2',
- adapters: [ dhis2.storage.IndexedDBAdapter, dhis2.storage.DomSessionStorageAdapter, dhis2.storage.InMemoryAdapter ],
- objectStores: [ 'programs', 'programStages', 'optionSets', 'usernames', {
- name: 'dataValues',
- adapters: [ dhis2.storage.IndexedDBAdapter, dhis2.storage.DomLocalStorageAdapter, dhis2.storage.InMemoryAdapter ]
- } ]
-} );
-
-function loadPrograms() {
- var def = $.Deferred();
-
- $.ajax( {
- url: 'getProgramMetaData.action',
- dataType: 'json',
- cache: false
- } ).done(function ( data ) {
- var programs = _.values( data.metaData.programs );
- DAO.store.setAll( 'programs', programs ).then( function () {
- def.resolve( data.metaData );
- } );
- } ).fail( function () {
- def.resolve();
- } );
-
- return def.promise();
-}
-
-function loadProgramStages( metaData ) {
- if ( !metaData ) {
- return;
- }
-
- var def = $.Deferred();
- var promise = def.promise();
-
- _.each( _.values( metaData.programs ), function ( el ) {
- var id = el.programStages[0].id;
- promise = promise.then( makeProgramStageRequest( id ));
- } );
-
- promise = promise.then(function() {
- return $.Deferred().resolve(metaData);
- });
-
- def.resolve( metaData );
-
- return promise;
-}
-
-function makeProgramStageRequest( id ) {
- return function() {
- var data = createProgramStage( id );
-
- return $.ajax( {
- url: 'dataentryform.action',
- data: data,
- dataType: 'html',
- cache: false
- } ).done( function ( data ) {
- var obj = {};
- obj.id = id;
- obj.form = data;
- DAO.store.set( 'programStages', obj );
- } );
- }
-}
-
-function loadOptionSets( metaData ) {
- if ( !metaData ) {
- return;
- }
-
- var mainDef = $.Deferred();
- var mainPromise = mainDef.promise();
-
- var def = $.Deferred();
- var promise = def.promise();
-
- var builder = $.Deferred();
- var build = builder.promise();
-
- _.each( metaData.optionSets, function ( item ) {
- build = build.then(function() {
- var d = $.Deferred();
- var p = d.promise();
- DAO.store.get('optionSets', item.uid).done(function(obj) {
- if(!obj || obj.optionSet.version !== item.v) {
- promise = promise.then( makeOptionSetRequest(item.uid) );
- }
-
- d.resolve();
- });
-
- return p;
- });
- } );
-
- if ( metaData.usernames ) {
- promise = promise.then( makeUsernameRequest() );
- }
-
- build.done(function() {
- def.resolve();
-
- promise = promise.done( function () {
- mainDef.resolve( metaData );
- } );
- });
-
- builder.resolve();
-
- return mainPromise;
-}
-
-function makeUsernameRequest() {
- return function() {
- return $.ajax( {
- url: 'getUsernames.action',
- dataType: 'json',
- cache: false
- }).done(function( data ) {
- var obj = {};
- obj.id = 'usernames';
- obj.usernames = data.usernames;
- DAO.store.set( 'usernames', obj );
- });
- }
-}
-
-function makeOptionSetRequest( id ) {
- return function() {
- return $.ajax({
- url: 'getOptionSet.action',
- data: { id: id },
- dataType: 'json',
- cache: false
- }).done(function(data) {
- var obj = {};
- obj.id = id;
- obj.optionSet = data.optionSet;
- DAO.store.set('optionSets', obj);
- });
- }
-}
-
-function updateOfflineEvents() {
- var no_offline_template = $( '#no-offline-event-template' );
- var no_offline_template_compiled = _.template( no_offline_template.html() );
-
- var offline_template = $( '#offline-event-template' );
- var offline_template_compiled = _.template( offline_template.html() );
-
- return DAO.store.getAll( 'dataValues' ).done( function ( arr ) {
- var orgUnitId = selection.getSelected();
- var programId = $( '#programId' ).val();
-
- var target = $( '#offlineEventList' );
- target.children().remove();
-
- if ( arr.length > 0 ) {
- var matched = false;
-
- $.each( arr, function ( idx, item ) {
- var event = item.executionDate;
-
- if ( event.organisationUnitId == orgUnitId && event.programId == programId ) {
- event.index = idx + 1;
- var html = offline_template_compiled( event );
- target.append( html );
- matched = true;
- }
- } );
-
- if ( !matched ) {
- target.append( no_offline_template_compiled() );
- }
- } else {
- target.append( no_offline_template_compiled() );
- }
- } );
-}
-
-function showOfflineEvents() {
- $( "#offlineListDiv table" ).removeClass( 'hidden' );
-}
-
-function hideOfflineEvents() {
- $( "#offlineListDiv table" ).addClass( 'hidden' );
-}
-
-var haveLocalData = false;
-
-function checkOfflineData( callback ) {
- return DAO.store.getAll( 'dataValues' ).done( function ( arr ) {
- haveLocalData = arr.length > 0;
- if ( callback && typeof callback == 'function' ) callback( haveLocalData );
- } );
-}
-
-function uploadOfflineData( event ) {
- $.ajax( {
- url: 'uploadAnonymousEvent.action',
- contentType: 'application/json',
- data: JSON.stringify( event ),
- cache: false
- } ).done( function ( json ) {
- if ( json.response === 'success' ) {
- DAO.store.remove( 'dataValues', event.id ).done( function () {
- updateOfflineEvents();
- searchEvents( eval( getFieldValue( 'listAll' ) ) );
- } );
- }
- } );
-}
-
-function uploadLocalData() {
- setHeaderWaitMessage( i18n_uploading_data_notification );
-
- DAO.store.getAll( 'dataValues' ).done( function ( arr ) {
- if(arr.length == 0) {
- setHeaderDelayMessage( i18n_sync_success );
- return;
- }
-
- var deferred = $.Deferred();
- var promise = deferred.promise();
-
- $.each(arr, function(idx, item) {
- promise = promise.pipe(function () {
- uploadOfflineData( item );
- });
- });
-
- deferred.done(function() {
- setHeaderDelayMessage( i18n_sync_success );
- });
-
- deferred.resolve();
- });
-}
-
-function sync_failed_button() {
- var message = i18n_sync_failed
- + ' <button id="sync_button" type="button">' + i18n_sync_now + '</button>';
-
- setHeaderMessage( message );
-
- $( '#sync_button' ).bind( 'click', uploadLocalData );
-}
-
-$( document ).ready( function () {
- $.ajaxSetup( {
- type: 'POST',
- cache: false
- } );
-
- setHeaderWaitMessage(i18n_please_wait_loading);
-
- $("#programId").attr('disabled', true);
-
- $( "#orgUnitTree" ).one( "ouwtLoaded", function () {
- var def = $.Deferred();
- var promise = def.promise();
-
- promise = promise.then( DAO.store.open );
- promise = promise.then( loadPrograms );
- promise = promise.then( loadProgramStages );
- promise = promise.then( loadOptionSets );
- promise = promise.then( updateOfflineEvents );
- promise = promise.then( checkOfflineData );
- promise.then( function () {
- $("#programId").removeAttr('disabled');
-
- selection.setListenerFunction( organisationUnitSelected );
-
- dhis2.availability.startAvailabilityCheck();
- selection.responseReceived();
- } );
-
- def.resolve();
- } );
-
- $( document ).bind( 'dhis2.online', function ( event, loggedIn ) {
- if ( loggedIn ) {
- checkOfflineData(function(localData) {
- if ( localData ) {
- var message = i18n_need_to_sync_notification
- + ' <button id="sync_button" type="button">' + i18n_sync_now + '</button>';
-
- setHeaderMessage( message );
-
- $( '#sync_button' ).bind( 'click', uploadLocalData );
- } else {
- setHeaderDelayMessage( i18n_online_notification );
- }
-
- enableFiltering();
- searchEvents( eval( getFieldValue( 'listAll' ) ) );
- $('#commentInput').removeAttr('disabled');
- $('#commentButton').removeAttr('disabled');
- $('#validateBtn').removeAttr('disabled');
- });
-
- hideOfflineEvents();
- }
- else {
- var form = [
- '<form style="display:inline;">',
- '<label for="username">Username</label>',
- '<input name="username" id="username" type="text" style="width: 70px; margin-left: 10px; margin-right: 10px" size="10"/>',
- '<label for="password">Password</label>',
- '<input name="password" id="password" type="password" style="width: 70px; margin-left: 10px; margin-right: 10px" size="10"/>',
- '<button id="login_button" type="button">Login</button>',
- '</form>'
- ].join( '' );
-
- setHeaderMessage( form );
- ajax_login();
-
- showOfflineEvents();
- }
- } );
-
- $( document ).bind( 'dhis2.offline', function () {
- setHeaderMessage( i18n_offline_notification );
- $('#commentInput').attr('disabled', true);
- $('#commentInput').attr('disabled', true);
- $('#validateBtn').attr('disabled', true);
- disableFiltering();
- showOfflineEvents();
- } );
-} );
-
-function disableFiltering() {
- $('#listDiv').hide();
- $('#filterBtn').attr('disabled', true);
- $('#listBtn').attr('disabled', true);
- $('#incompleted').attr('disabled', true);
- $('#removeBtn').attr('disabled', true);
-}
-
-function enableFiltering() {
- var filtering = getFieldValue( 'programStageId' ) != undefined && getFieldValue( 'programStageId' ).length != 0;
-
- if ( filtering ) {
- $( '#filterBtn' ).removeAttr( 'disabled' );
- $( '#listBtn' ).removeAttr( 'disabled' );
- $( '#incompleted' ).removeAttr( 'disabled' );
- $( '#removeBtn' ).removeAttr( 'disabled' );
- }
-}
-
-function ajax_login()
-{
- $( '#login_button' ).bind( 'click', function()
- {
- var username = $( '#username' ).val();
- var password = $( '#password' ).val();
-
- $.post( '../dhis-web-commons-security/login.action', {
- 'j_username' : username,
- 'j_password' : password
- } ).success( function()
- {
- var ret = dhis2.availability.syncCheckAvailability();
-
- if ( !ret )
- {
- alert( i18n_ajax_login_failed );
- }
- } );
- } );
-}
-
-function organisationUnitSelected( orgUnits, orgUnitNames ) {
- showById( 'dataEntryMenu' );
- hideById( 'eventActionMenu' );
- hideById( 'dataEntryInfor' );
- hideById( 'advanced-search' );
- hideById( 'minimized-advanced-search' );
- hideById( 'listDiv' );
- hideById( 'programName' );
-
- setFieldValue( "listAll", true );
- setFieldValue( "startDate", '' );
- setFieldValue( "endDate", '' );
- setFieldValue( "programStageId", '' );
- setFieldValue( "programId", '' );
-
- $( '#advancedSearchTB [name=searchText]' ).val( '' );
-
- setFieldValue( 'orgunitId', orgUnits[0] );
- setFieldValue( 'orgunitName', orgUnitNames[0] );
- hideById( 'listDiv' );
- hideById( 'dataEntryInfor' );
-
- DAO.store.getAll( 'programs' ).done( function (arr) {
- var programs = [];
-
- $.each( arr, function ( idx, item ) {
- if ( item.programAssociations.indexOf( orgUnits[0] ) != -1 ) {
- programs.push( item );
- }
- } );
-
- updateProgramList( programs );
- } );
-
- updateOfflineEvents();
-}
-
-function updateProgramList( arr ) {
- $( '#searchingAttributeIdTD [id=searchObjectId] option' ).remove();
- $( '#advancedSearchTB [id=searchObjectId] option' ).remove();
- clearListById( 'displayInReports' );
- clearListById( 'programId' );
-
- $( '#programId' ).append( '<option value="" psid="" reportDateDes="' + i18n_report_date + '">[' + i18n_please_select + ']</option>' );
-
- for ( var i = 0; i < arr.length; i++ ) {
- $( '#programId' ).append(
- '<option value="' + arr[i].id
- + '" puid="' + arr[i].uid
- + '" programType="' + arr[i].type
- + '" psid="' + arr[i].programStages[0].id
- + '" psuid="' + arr[i].programStages[0].uid
- + '" reportDateDes="' + arr[i].programStages[0].reportDateDescription + '">'
- + arr[i].name
- + '</option>' );
- }
-
- disableCriteriaDiv();
- showById( 'selectDiv' );
-}
-
-function disableCriteriaDiv() {
- disable( 'listBtn' );
- disable( 'addBtn' );
- disable( 'filterBtn' );
- disable( 'removeBtn' );
- $( '#criteriaDiv :input' ).each( function ( idx, item ) {
- disable( this.id );
- } );
-}
-
-function enableCriteriaDiv() {
- enable( 'listBtn' );
- enable( 'addBtn' );
- enable( 'filterBtn' );
- enable( 'removeBtn' );
- $( '#criteriaDiv :input' ).each( function ( idx, item ) {
- enable( this.id );
- } );
-}
-
-function getDataElements() {
- hideById( 'dataEntryInfor' );
- hideById( 'listDiv' );
- $( '#searchingAttributeIdTD [id=searchObjectId] option' ).remove();
- $( '#advancedSearchTB [id=searchObjectId] option' ).remove();
- var programStageId = $( '#programId option:selected' ).attr( 'psid' );
- setFieldValue( 'programStageId', programStageId );
- setInnerHTML( 'reportDateDescriptionField', $( '#programId option:selected' ).attr( 'reportDateDes' ) );
- setInnerHTML( 'reportDateDescriptionField2', $( '#programId option:selected' ).attr( 'reportDateDes' ) );
-
- if ( programStageId == '' ) {
- removeAllAttributeOption();
- disableCriteriaDiv();
- enable( 'orgunitName' );
- enable( 'programId' );
- hideById( 'listDiv' );
- setFieldValue( 'searchText' );
- updateOfflineEvents();
- return;
- }
-
- $.getJSON( "getProgramStageDataElementList.action", {
- programStageId: programStageId
- }, function ( json ) {
- $( '#advancedSearchTB [name=searchText]' ).val( '' );
- $( '.stage-object-selected' ).attr( 'psid', $( '#programId option:selected' ).attr( "psid" ) );
-
- clearListById( 'searchObjectId' );
- clearListById( 'displayInReports' );
-
- $('[name=searchObjectId]').append('<option value="" >[' + i18n_please_select + ']</option>');
-
- $.each(json.programStageDataElements, function() {
- $('[name=searchObjectId]').append('<option value="' + this.id + '" uid="' + this.uid + '" type="' + this.type + '">' + this.name + '</option>');
-
- if( this.displayInReports == 'true' ) {
- $('#displayInReports').append('<option value="' + this.id + '" uid="' + this.uid + '" ></option>');
- }
- });
-
- enableCriteriaDiv();
- validateSearchEvents( true );
- } ).fail(function() {
- enable( 'addBtn' );
- });
-
- updateOfflineEvents();
-}
-
-function dataElementOnChange( this_ ) {
- var container = $(this_).parent().parent().attr('id');
- var element = $('#' + container + ' [id=searchText]');
- var valueType = $('#' + container + ' [id=searchObjectId] option:selected').attr('type');
-
- if( valueType == 'date' ) {
- element.replaceWith(getDateField(container));
- datePickerValid('searchText_' + container);
- }
- else {
- $('#searchText_' + container).datepicker("destroy");
- $('#' + container + ' [id=dateOperator]').replaceWith("");
-
- if( valueType == 'bool' ) {
- element.replaceWith(getTrueFalseBox());
- }
- else if( valueType == 'optionset' ) {
- element.replaceWith(searchTextBox);
- autocompletedFilterField(container + " [id=searchText]", $(this_).find("option:selected").attr('uid'));
- }
- else if( valueType == 'username' ) {
- autocompletedUsernameField($(this_).attr('id'));
- }
- else {
- element.replaceWith(searchTextBox);
- }
- }
-}
-
-function autocompletedFilterField( idField, searchObjectId ) {
- var input = $( "#" + idField );
- input.css( "width", "237px" );
- input.autocomplete( {
- delay: 0,
- minLength: 0,
- source: function ( request, response ) {
- $.ajax( {
- url: "getOptions.action?id=" + searchObjectId + "&query=" + input.val(),
- dataType: "json",
- cache: false,
- success: function ( data ) {
- response( $.map( data.options, function ( item ) {
- return {
- label: item.o,
- id: item.o
- };
- } ) );
- }
- } );
- },
- select: function ( event, ui ) {
- input.val( ui.item.value );
- input.autocomplete( "close" );
- }
- } )
- .addClass( "ui-widget" );
-
- input.data( "autocomplete" )._renderItem = function ( ul, item ) {
- return $( "<li></li>" )
- .data( "item.autocomplete", item )
- .append( "<a>" + item.label + "</a>" )
- .appendTo( ul );
- };
-
- var wrapper = this.wrapper = $( "<span style='width:200px'>" )
- .addClass( "ui-combobox" )
- .insertAfter( input );
-
- var button = $( "<a style='width:20px; margin-bottom:-5px;height:20px;'>" )
- .attr( "tabIndex", -1 )
- .attr( "title", i18n_show_all_items )
- .appendTo( wrapper )
- .button( {
- icons: {
- primary: "ui-icon-triangle-1-s"
- },
- text: false
- } )
- .addClass( 'small-button' )
- .click( function () {
- if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
- input.autocomplete( "close" );
- return;
- }
- $( this ).blur();
- input.autocomplete( "search", "" );
- input.focus();
- } );
-}
-
-function autocompletedUsernameField( idField ) {
- var input = $( "#" + idField );
- input.parent().width( input.width() + 200 );
- var dataElementId = input.attr( 'id' ).split( '-' )[1];
-
- input.autocomplete( {
- delay: 0,
- minLength: 0,
- source: function ( request, response ) {
- $.ajax( {
- url: "getUsernameList.action?query=" + input.val(),
- dataType: "json",
- cache: false,
- success: function ( data ) {
- response( $.map( data.usernames, function ( item ) {
- return {
- label: item.u,
- id: item.u
- };
- } ) );
- }
- } );
- },
- select: function ( event, ui ) {
- var fieldValue = ui.item.value;
-
- if ( !dhis2.trigger.invoke( "caseentry-value-selected", [dataElementId, fieldValue] ) ) {
- input.val( "" );
- return false;
- }
-
- input.val( fieldValue );
- if ( !unSave ) {
- saveVal( dataElementId );
- }
- input.autocomplete( "close" );
- },
- change: function ( event, ui ) {
- if ( !ui.item ) {
- var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $( this ).val() ) + "$", "i" ),
- valid = false;
- if ( !valid ) {
- $( this ).val( "" );
- if ( !unSave )
- saveVal( dataElementId );
- input.data( "autocomplete" ).term = "";
- return false;
- }
- }
- }
- } )
- .addClass( "ui-widget" );
-
- input.data( "autocomplete" )._renderItem = function ( ul, item ) {
- return $( "<li></li>" )
- .data( "item.autocomplete", item )
- .append( "<a>" + item.label + "</a>" )
- .appendTo( ul );
- };
-
- var wrapper = this.wrapper = $( "<span style='width:200px'>" )
- .addClass( "ui-combobox" )
- .insertAfter( input );
-
- var button = $( "<a style='width:20px; margin-bottom:-5px;height:20px;'>" )
- .attr( "tabIndex", -1 )
- .attr( "title", i18n_show_all_items )
- .appendTo( wrapper )
- .button( {
- icons: {
- primary: "ui-icon-triangle-1-s"
- },
- text: false
- } )
- .addClass( 'small-button' )
- .click( function () {
- if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
- input.autocomplete( "close" );
- return;
- }
- $( this ).blur();
- input.autocomplete( "search", "" );
- input.focus();
- } );
-}
-
-function removeAllAttributeOption() {
- $( '#advancedSearchTB tbody tr' ).each( function ( i, item ) {
- if ( i > 0 ) {
- $( item ).remove();
- }
- } )
-}
-
-function validateSearchEvents( listAll ) {
- listAll = eval( listAll );
- setFieldValue( 'listAll', listAll );
-
- var flag = true;
- if ( !listAll ) {
- if ( getFieldValue( 'startDate' ) == "" || getFieldValue( 'endDate' ) == "" ) {
- showWarningMessage( i18n_specify_a_date );
- flag = false;
- }
-
- if ( flag && !listAll && $( '#filterBtn' ).attr( "disabled" ) == "disabled" ) {
- $( '#advancedSearchTB tr' ).each( function ( index, row ) {
- if ( index > 1 ) {
- $( row ).find( ':input' ).each( function ( idx, item ) {
- var input = $( item );
- if ( input.attr( 'type' ) != 'button' && idx == 0 && input.val() == '' ) {
- showWarningMessage( i18n_specify_data_element );
- flag = false;
- }
- } )
- }
- } );
- }
- }
-
- if ( flag ) {
- searchEvents( listAll );
- }
-}
-
-function searchEvents( listAll ) {
- var search = getFieldValue( 'programStageId' ) != undefined && getFieldValue( 'programStageId' ).length != 0;
-
- if ( !search ) {
- return;
- }
-
- hideById( 'dataEntryInfor' );
- hideById( 'listDiv' );
-
- var params = '';
- $( '#displayInReports option' ).each( function ( i, item ) {
- var input = $( item );
- params += '&filterValues=de_' + input.val() + '_false_';
- } );
-
- if ( listAll ) {
- params += '&startDate=';
- params += '&endDate=';
- }
- else {
- var value = '';
- var searchingValue = '';
- params += '&startDate=' + getFieldValue( 'startDate' );
- params += '&endDate=' + getFieldValue( 'endDate' );
- if ( byId( "incompleted" ).checked ) {
- params += '&useCompletedEvents=false';
- }
- $( '#advancedSearchTB tr' ).each( function ( index, row ) {
- if ( index > 1 ) {
- $( row ).find( ':input' ).each( function ( idx, item ) {
- var input = $( item );
- if ( input.attr( 'type' ) != 'button' ) {
- if ( idx == 0 && input.val() != '' ) {
- searchingValue = 'de_' + input.val() + '_false_';
- }
- else if ( input.val() != '' ) {
- value += $.trim( input.val() ).toLowerCase();
- }
- }
- } );
-
- if ( value != '' ) {
- searchingValue += getValueFormula( value );
- params += '&filterValues=' + searchingValue;
- }
- searchingValue = '';
- value = '';
- }
- } )
- }
-
- params += '&facilityLB=selected';
- params += '&orgunitIds=' + getFieldValue( 'orgunitId' );
- params += '&programStageId=' + $( '#programId option:selected' ).attr( 'psid' );
- params += '&userOrganisationUnit=false';
- params += '&userOrganisationUnitChildren=false';
-
- contentDiv = 'listDiv';
- showLoader();
-
- $.ajax( {
- type: "POST",
- url: 'searchEvents.action',
- data: params,
- dataType: 'text',
- cache: false,
- success: function ( data ) {
- if ( data.indexOf( "<!DOCTYPE" ) != 0 ) {
- hideById( 'dataEntryInfor' );
- setInnerHTML( 'listDiv', data );
- }
-
- hideLoader();
- showById( 'listDiv' );
- }
- } ).fail(function() {
- hideById( 'dataEntryInfor' );
- hideById( 'listDiv' );
- } ).always(function() {
- var searchInfor = (listAll) ? i18n_list_all_events : i18n_search_events_by_dataelements;
- setInnerHTML( 'searchInforTD', searchInfor );
-
- if ( !listAll && $( '#filterBtn' ).attr( "disabled" ) == "disabled" ) {
- showById( 'minimized-advanced-search' );
- hideById( 'advanced-search' );
- }
- else {
- hideById( 'minimized-advanced-search' );
- hideById( 'advanced-search' );
- showById( 'filterBtn' );
- }
-
- hideLoader();
- });
-}
-
-function getValueFormula( value ) {
- if ( value.indexOf( '"' ) != value.lastIndexOf( '"' ) ) {
- value = value.replace( /"/g, "'" );
- }
-
- var flag = value.match( /[>|>=|<|<=|=|!=]+[ ]*/ );
-
- if( value.indexOf("'") == -1 ) {
- if( flag == null ) {
- value = "='" + value + "'";
- }
- else {
- value = value.replace(flag, flag + "'");
- value += "'";
- }
- }
- else {
- if( flag == null ) {
- value = "=" + value;
- }
- }
-
- return value;
-}
-
-function removeEvent( programStageId ) {
- DAO.store.get('dataValues', programStageId).done(function(obj) {
- if(obj) {
- if( confirm(i18n_comfirm_delete_event) ) {
- DAO.store.remove('dataValues', programStageId).always(function() {
- updateOfflineEvents();
- // needed, seemed that from time-to-time the events are updated too early, could be idb related
- setTimeout(updateOfflineEvents, 100);
- });
- }
- } else {
- removeItem( programStageId, '', i18n_comfirm_delete_event, 'removeCurrentEncounter.action' );
- }
- });
-}
-
-function showUpdateEvent( programStageInstanceId ) {
- hideById( 'dataEntryMenu' );
- showById( 'eventActionMenu' );
- $( "[name=eventActionLink]" ).hide();
- hideById( 'selectDiv' );
- hideById( 'searchDiv' );
- hideById( 'listDiv' );
- hideById( 'offlineListDiv' );
- setFieldValue( 'programStageInstanceId', programStageInstanceId );
- setInnerHTML( 'dataEntryFormDiv', '' );
- showLoader();
-
- service.displayProgramStage( getFieldValue( 'programStageId' ), programStageInstanceId, getFieldValue( 'orgunitId' ) );
- jQuery('.stage-object-selected').attr('id', 'ps_' + programStageInstanceId);
-}
-
-function backEventList() {
- showById( 'dataEntryMenu' );
- hideById( 'eventActionMenu' );
- hideById( 'dataEntryInfor' );
- hideById( 'programName' );
- showById( 'selectDiv' );
- showById( 'searchDiv' );
- showById( 'listDiv' );
- showById( 'offlineListDiv' );
-
- updateOfflineEvents();
- searchEvents( eval( getFieldValue( 'listAll' ) ) );
-}
-
-function showAddEventForm( isCreateEvent ) {
- showById( 'eventActionMenu' );
- $( "[name=eventActionLink]" ).hide();
- hideById( 'dataEntryMenu' );
- setInnerHTML( 'dataEntryFormDiv', '' );
- hideById( 'selectDiv' );
- hideById( 'searchDiv' );
- hideById( 'listDiv' );
- hideById( 'offlineListDiv' );
- showById( 'programName' );
- hideById( 'actionDiv' );
- showById( 'dataEntryInfor' );
- setFieldValue( 'programStageInstanceId', '0' );
- setInnerHTML( 'programName', $( '#programId option:selected' ).text() );
- setInnerHTML( 'orgunitNameInfor', getFieldValue("orgunitName"));
- if( isCreateEvent != undefined ){
- addNewEvent();
- }
-}
-
-function addNewEvent() {
- var programStageInstanceId = getFieldValue( 'programStageInstanceId' );
- var programId = $( '#programId option:selected' ).val();
- var executionDate = getFieldValue( 'executionDate' );
- var orgunitId = getFieldValue( 'orgunitId' );
-
- $( "#executionDate" ).css( 'background-color', SAVING_COLOR );
-
- service.saveExecutionDate( programId, programStageInstanceId, executionDate, orgunitId );
-}
-
-function completedAndAddNewEvent() {
- doComplete( true );
-}
-
-function removeEmptyEvents() {
- var result = window.confirm( i18n_confirm_remove_empty_events );
-
- if ( result ) {
- $.getJSON( "removeEmptyEvents.action",
- {
- programStageId: $( '#selectDiv [id=programId] option:selected' ).attr( 'psid' )
- },
- function ( json ) {
- if ( json.response == 'success' ) {
- showSuccessMessage( i18n_remove_empty_events_success );
- validateSearchEvents( true )
- }
- } );
- }
-}
-
-function removeCurrentEvent() {
- var programStageInstanceId = getFieldValue( 'programStageInstanceId' );
-
- DAO.store.get('dataValues', programStageInstanceId).done(function(obj) {
- if(obj) {
- if( confirm(i18n_comfirm_delete_event) ) {
- DAO.store.remove('dataValues', programStageInstanceId).always(function() {
- setTimeout(backEventList, 200);
- });
- }
- } else {
- removeCurrentEventFromServer();
- }
- });
-}
-
-function removeCurrentEventFromServer() {
- var result = window.confirm( i18n_comfirm_delete_event );
-
- if ( result ) {
- $.postJSON( "removeCurrentEncounter.action", {
- "id": getFieldValue( 'programStageInstanceId' )
- },
- function ( json ) {
- if ( json.response == "success" ) {
- backEventList();
- }
- else if ( json.response == "error" ) {
- showWarningMessage( json.message );
- }
- } );
- }
-}
-
-function showFilterForm() {
- showById( 'advanced-search' );
- hideById( 'minimized-advanced-search' );
- disable( 'filterBtn' );
- setFieldValue( 'listAll', false );
-}
-
-function removeAllOption() {
- enable( 'filterBtn' );
-
- $( '#advancedSearchTB tr' ).each( function ( idx ) {
- if( idx > 2 ) {
- $(this).remove();
- }
- else if( idx == 2 ) {
- $(this).find(':input').each(function( idx, item ) {
- var input = $(item);
- if( input.attr('type') != 'button' ) {
- input.val('');
- }
- });
- }
- } );
-
- $( '#searchObjectId' ).val( "" );
- $( '#searchText' ).val( "" );
- searchEvents( eval( getFieldValue( "listAll" ) ) );
-}
-
-function ajaxExecutionDate( programId, programStageInstanceId, executionDate, organisationUnitId ) {
- return $.ajax( {
- url: 'saveExecutionDate.action',
- data: createExecutionDate( programId, programStageInstanceId, executionDate, organisationUnitId ),
- type: 'POST',
- dataType: 'json',
- cache: false
- } );
-}
-
-// execution date module
-var service = (function () {
- return {
- saveExecutionDate: function( programId, programStageInstanceId, executionDate, organisationUnitId ) {
- ajaxExecutionDate(programId, programStageInstanceId, executionDate, organisationUnitId).done(function ( json ) {
- if ( json.response == 'success' ) {
- $( "#executionDate" ).css( 'background-color', SUCCESS_COLOR );
- setFieldValue( 'programStageInstanceId', json.message );
- jQuery('.stage-object-selected').attr('id', json.message );
- showUpdateEvent( json.message );
- }
- else {
- $( "#executionDate" ).css( 'background-color', ERROR_COLOR );
- showWarningMessage( json.message );
- }
- } ).fail( function () {
- if(programStageInstanceId == 0) {
- DAO.store.getKeys( 'dataValues' ).done( function ( keys ) {
- var i = 100;
-
- for(; i<10000; i++) {
- if( keys.indexOf("local" + i) == -1 ) break;
- }
-
- programStageInstanceId = "local"+i;
-
- var data = {};
- data.id = programStageInstanceId;
- data.executionDate = createExecutionDate(programId, programStageInstanceId, executionDate, organisationUnitId);
- data.executionDate.completed = 'false';
-
- this.set( 'dataValues', data).done(function() {
- setFieldValue( 'programStageInstanceId', programStageInstanceId );
- $( "#executionDate" ).css( 'background-color', SUCCESS_COLOR );
- showUpdateEvent( programStageInstanceId );
- });
- });
- } else {
- // if we have a programStageInstanceId, just reuse that one
- setFieldValue( 'programStageInstanceId', programStageInstanceId );
- $( "#executionDate" ).css( 'background-color', SUCCESS_COLOR );
- showUpdateEvent( programStageInstanceId );
- }
- } );
- },
-
- displayProgramStage: function( programStageId, programStageInstanceId, organisationUnitId ) {
- loadProgramStage( programStageId, programStageInstanceId, organisationUnitId, function ( data ) {
- $( '#dataEntryFormDiv' ).html( data );
- updateDataForm();
- },function () {
- $( '#dataEntryFormDiv' ).html( "<div class='message message-info'>Unable to load form.</div>" );
- hideById( 'loaderDiv' );
- } );
- }
- }
-})();
-
-function updateDataForm() {
- $( '#inputCriteriaDiv' ).remove();
- showById( 'programName' );
- showById( 'actionDiv' );
- var programName = $( '#programId option:selected' ).text();
- var programStageId = $( '#programId option:selected' ).attr( 'psid' );
- $( '.stage-object-selected' ).attr( 'psid', programStageId );
- setInnerHTML( 'programName', programName );
- $('#executionDate').css('width',430);
- $('#executionDate').css('margin-right',34);
-
- if ( getFieldValue( 'completed' ) == 'true' ) {
- disable( "completeBtn" );
- enable( "uncompleteBtn" );
- }
- else {
- enable( "completeBtn" );
- disable( "uncompleteBtn" );
- }
-
- hideById( 'loaderDiv' );
- showById( 'dataEntryInfor' );
- showById( 'entryFormContainer' );
-
- $( "#entryForm :input" ).each( function () {
- if ( ( $( this ).attr( 'options' ) != null && $( this ).attr( 'options' ) == 'true' )
- || ( $( this ).attr( 'username' ) != null && $( this ).attr( 'username' ) == 'true' ) ) {
- var input = $( this );
- input.parent().width( input.width() + 200 );
- }
- } );
-}
-
-function createExecutionDate( programId, programStageInstanceId, executionDate, organisationUnitId ) {
- var data = {};
-
- if(programId)
- data.programId = programId;
-
- if(programStageInstanceId)
- data.programStageInstanceId = programStageInstanceId;
-
- if(executionDate)
- data.executionDate = executionDate;
-
- if(organisationUnitId) {
- data.organisationUnitId = organisationUnitId;
- data.organisationUnit = organisationUnits[organisationUnitId].n;
- }
-
- return data;
-}
-
-function createProgramStage( programStageId, programStageInstanceId, organisationUnitId ) {
- var data = {};
-
- if(programStageId)
- data.programStageId = programStageId;
-
- if(programStageInstanceId)
- data.programStageInstanceId = programStageInstanceId;
-
- if(organisationUnitId)
- data.organisationUnitId = organisationUnitId;
-
- return data;
-}
-
-function loadProgramStage( programStageId, programStageInstanceId, organisationUnitId, success, fail ) {
- var data = createProgramStage( programStageId, programStageInstanceId, organisationUnitId );
-
- if( programStageId === undefined ) {
- programStageId = $('#programId option:selected').attr('psid');
- }
-
- DAO.store.get('programStages', programStageId ).done(function(obj) {
- if(success) success(obj.form);
- } ).fail(function() {
- $.ajax( {
- url: 'dataentryform.action',
- data: data,
- dataType: 'html',
- cache: false
- } ).done(function(data) {
- if(success) success(data);
- } ).fail(function() {
- if(fail) fail();
- });
- });
-}
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/form.js'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/form.js 2014-05-05 15:31:54 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/form.js 2014-05-12 09:56:39 +0000
@@ -154,7 +154,7 @@
if (statusSearching == 0) {
return;
} else if (statusSearching == 1) {
- showById('listTrackedEntityInstanceDiv');
+ showById('listEntityInstanceDiv');
}
}
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/trackedEntityInstance.js'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/trackedEntityInstance.js 2014-05-05 15:31:54 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/trackedEntityInstance.js 2014-05-12 09:56:39 +0000
@@ -362,7 +362,7 @@
+ "'><img src='../images/enroll.png' alt='"
+ i18n_dashboard
+ "'></a>";
- table += "<a href=\"javascript:isDashboard=false;showUpdateTrackedEntityInstanceForm( '"
+ table += "<a href=\"javascript:isDashboard=false;statusSearching=3;showUpdateTrackedEntityInstanceForm( '"
+ uid
+ "' )\" title='"
+ i18n_edit_profile
@@ -535,7 +535,7 @@
} else if (statusSearching == 1) {
validateAdvancedSearch();
} else if (statusSearching == 3) {
- showById('listTrackedEntityInstanceDiv');
+ showById('listEntityInstanceDiv');
}
}
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/underage.js'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/underage.js 2014-02-10 05:42:16 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/underage.js 2014-05-12 09:56:39 +0000
@@ -23,7 +23,7 @@
,data: jQuery("#addRepresentativeForm").serialize()
,dataType : "xml"
,success: function(xml){
- autoChoosePerson( xml );
+ autoChooseTEI( xml );
}
,error: function()
{
@@ -49,7 +49,7 @@
else if( type == 'duplicate' )
{
jQuery("#formContainer").hide();
- showPersons("listPersonsDuplicate", messageElement);
+ showTEIs("listPersonsDuplicate", messageElement);
}
}
@@ -68,55 +68,98 @@
return params;
}
-function searchPerson()
+function searchTEI()
{
- jQuery.ajax({
- type: "POST"
- ,url: "searchPerson.action"
- ,data: jQuery("#searchForm").serialize()
- ,dataType : "xml"
- ,success: function(xmlObject){
- showPersons( "searchForm div[id=listPersons]", xmlObject );
- }
- ,error: function(request,status,errorThrown)
- {
- alert(i18n_error_connect_to_server);
- }
- });
+ contentDiv = 'listEntityInstanceDiv';
+ var params = "ou=" + getFieldValue("orgunitId");
+ params += "&ouMode=ALL";
+ params += "&attribute=" + getFieldValue("attributeId") + ":LIKE:" + getFieldValue('searchValue');
+
+ var p = params;
+ $('#attributeIds option').each(function(i, item){
+ if ( p.indexOf(item.value) < 0 ) {
+ params += "&attribute=" + item.value;
+ }
+ });
+
+ $.ajax({
+ type : "GET",
+ url : "../api/trackedEntityInstances.json",
+ data : params,
+ dataType : "json",
+ success : function(json) {
+ showTEIs( "searchForm div[id=listPersons]", json );
+ }
+ });
}
-function showPersons( divContainer, xmlElement )
+function showTEIs( divContainer, json )
{
- var container = jQuery("#"+divContainer);
+ var container = jQuery( "#" + divContainer );
container.html("");
- var entityInstances = $(xmlElement).find('entityInstance');
- var sEntityInstance = "";
-
- if ( entityInstances.length == 0 )
- {
- var message = "<p>" + i18n_no_result + "</p>";
+ if ( json.rows.length == 0 ){
+ var message = "<p>" + i18n_no_result_found + "</p>";
container.html(message);
}
-
- $( entityInstances ).each( function( i, entityInstance )
- {
- sEntityInstance += "<hr style='margin:5px 0px;'><table>";
- var attributes = $( entityInstance ).find('attribute');
- $( attributes ).each( function( i, attribute )
- {
- sEntityInstance += "<tr class='attributeRow'>"
- + "<td class='bold'>" + $(attribute).find('name').text() + "</td>"
- + "<td>" + $(attribute).find('value').text() + "</td> "
- + "</tr>";
+ else{
+ var attList = new Array();
+ var attDate = new Array();
+ $('#attributeIds option').each(function(i, item) {
+ var valueType = $(item).attr('valueType');
+ var value = $(item).val();
+ if ( valueType == 'bool' || valueType == 'trueOnly' ) {
+ for (var i = idx; i < json.width; i++) {
+ if( value==json.headers[i].name ){
+ attList.push(i);
+ }
+ else if( valueType=='date'){
+ attDate.push(i);
+ }
+ }
+ }
+ else if ( valueType == 'date' ) {
+ for (var i = idx; i < json.width; i++) {
+ if( value==json.headers[i].name ){
+ attDate.push(i);
+ }
+ }
+ }
});
- sEntityInstance += "<tr><td colspan='2'><input type='button' id='" + $(entityInstance).find('id' ).first().text() +"' value='" + i18n_choose_this_tracked_entity_instance + "' onclick='choosePerson(this)'/></td></tr>";
- sEntityInstance += "</table>";
- container.append(i18n_duplicate_warning + "<br>" + sEntityInstance);
- } );
+
+ var result = "";
+ var idx = 4;
+ for ( var i in json.rows) {
+ result += "<hr style='margin:5px 0px;'><table>";
+ var cols = json.rows[i];
+ var uid = cols[0];
+ for (var j = idx; j < json.width; j++) {
+ var colVal = cols[j];
+ if( colVal!=''){
+ if (j == 4) {
+ colVal = json.metaData.names[colVal];
+ }
+
+ if( jQuery.inArray( j, attList )>=0 && colVal!="" ){
+ colVal = (colVal=='true')? i18n_yes : i18n_no;
+ }
+ else if( jQuery.inArray( j, attDate )>=0 && colVal!="" ){
+ colVal = colVal.split(' ')[0];
+ }
+ result += "<tr class='attributeRow'>"
+ + "<td class='bold'>" + json.headers[j].column + "</td>"
+ + "<td>" + colVal + "</td> "
+ + "</tr>";
+ }
+ }
+ result += "<tr><td colspan='2'><input type='button' id='" + uid +"' value='" + i18n_choose_this_tracked_entity_instance + "' onclick='chooseTEI(this)'/></td></tr>";
+ result += "</table>";
+ }
+ container.append(i18n_duplicate_warning + "<br>" + result);
+ }
}
-// Will be call after save new person successfully
-function autoChoosePerson( xmlElement )
+// Will be call after save new TEI successfully
+function autoChooseTEI( xmlElement )
{
jQuery("#tab-2").html("<center><span class='bold'>" + i18n_add_person_successfully + "</span></center>");
var root = jQuery(xmlElement);
@@ -135,7 +178,7 @@
// Set Representative information to parent page.
//------------------------------------------------------------------------------
-function choosePerson(this_)
+function chooseTEI(this_)
{
var relationshipTypeId = jQuery("#searchForm [id=relationshipTypeId]").val();
if( isBlank( relationshipTypeId ))
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/menu.vm'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/menu.vm 2014-04-11 06:46:17 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/menu.vm 2014-05-12 09:56:39 +0000
@@ -1,6 +1,4 @@
-#if( $auth.hasAccess( "dhis-web-caseentry", "trackedEntityInstance" )
- || $auth.hasAccess( "dhis-web-caseentry", "activityPlanSelect" )
- || $auth.hasAccess( "dhis-web-caseentry", "smsReminderSelect" ) )
+#if( $auth.hasAccess( "dhis-web-caseentry", "trackedEntityInstance" ) || $auth.hasAccess( "dhis-web-caseentry", "activityPlanSelect" ) || $auth.hasAccess( "dhis-web-caseentry", "smsReminderSelect" ) )
<h2>$i18n.getString( "tracked_entity_instance" ) </h2>
#end
<ul>
@@ -14,22 +12,16 @@
<li><a href="smsReminderSelect.action">$i18n.getString( "program_tracking" )</a></li>
#end
</ul>
-#if( $auth.hasAccess( "dhis-web-caseentry", "singleEventSelect" )
- || $auth.hasAccess( "dhis-web-caseentry", "anonymousRegistration" ) )
+#if( $auth.hasAccess( "dhis-web-caseentry", "singleEventSelect" ) )
<h2>$i18n.getString( "data_entry" ) </h2>
#end
<ul>
#if( $auth.hasAccess( "dhis-web-caseentry", "singleEventSelect" ) )
<li><a href="singleEventSelect.action">$i18n.getString( "single_event_with_registration" )</a></li>
#end
- #if( $auth.hasAccess( "dhis-web-caseentry", "anonymousRegistration" ) )
- <li><a href="anonymousRegistration.action">$i18n.getString( "anonymous_events" )</a></li>
- #end
</ul>
-#if( $auth.hasAccess( "dhis-web-caseentry", "reportSelect" )
- || $auth.hasAccess( "dhis-web-caseentry", "statisticalProgramReportSelect" )
- || $auth.hasAccess( "dhis-web-caseentry", "programStageCompletenessSelect" ) )
+#if( $auth.hasAccess( "dhis-web-caseentry", "reportSelect" ) || $auth.hasAccess( "dhis-web-caseentry", "statisticalProgramReportSelect" ) || $auth.hasAccess( "dhis-web-caseentry", "programStageCompletenessSelect" ) )
<h2>$i18n.getString( "reports" ) </h2>
#end
<ul>
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programEnrollmentForm.vm'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programEnrollmentForm.vm 2014-04-20 02:45:01 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programEnrollmentForm.vm 2014-05-12 09:56:39 +0000
@@ -1,6 +1,7 @@
#set($noGroup = $attributeGroups.size() )
#if( $programInstance || $hasDataEntry=='true' )
<input type='hidden' id='programInstanceId' name='programInstanceId' value='$programInstance.id' />
+<input type='hidden' id='programInstanceUid' name='programInstanceUid' value='$programInstance.uid' />
<input type='hidden' id='programStageInstanceId' name='programStageInstanceId' value='0'>
<input type='hidden' id='entityInstanceId' name='entityInstanceId' value='$programInstance.entityInstance.id' />
<input type='hidden' id='entityInstanceUid' name='entityInstanceUid' value='$programInstance.entityInstance.uid' />
@@ -167,7 +168,7 @@
getVisitSchedule(getFieldValue('programInstanceId'));
}
else if( ui.tab.hash == '#tab-5' ){
- programReports(getFieldValue('programInstanceId'));
+ programReports(getFieldValue('programInstanceUid'));
}
else if( ui.tab.hash == '#tab-4' ){
getEventMessages(getFieldValue('programInstanceId'));
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/underAgeForm.vm'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/underAgeForm.vm 2014-02-07 20:25:49 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/underAgeForm.vm 2014-05-12 09:56:39 +0000
@@ -1,14 +1,13 @@
<script type="text/javascript">
jQuery("#representativeDiv").ready(function() {
- addEventForTrackedEntityInstanceForm('addRepresentativeForm');
-
+
jQuery("#searchForm").validate({
meta:"validate"
,errorElement:"span"
- ,submitHandler: function(form) { searchPerson(); }
+ ,submitHandler: function(form) { searchTEI(); }
,rules : {
relationshipTypeId : { required: true },
- searchType : { required: true },
+ attributeId : { required: true },
searchValue : { required: true }
}
});
@@ -35,7 +34,7 @@
<!-- Search Person TAB -->
<div id="tab-1">
- <form id="searchForm" name="searchForm" action="searchPerson.action" method="post" >
+ <form id="searchForm" name="searchForm" method="post" >
<table>
<tr>
<td >$i18n.getString("relationship_type")<em title="$i18n.getString( "required" )" class="required">*</em></td>
@@ -48,24 +47,14 @@
</select>
</td>
</tr>
- <tr>
- <td>$i18n.getString("search_by")<em title="$i18n.getString( "required" )" class="required">*</em></td>
- <td>
- <select id="searchType" name="searchType" onclick="toggleSearchType(this)" style='width:18em'>
- <option value="">[$i18n.getString( "please_select" )]</option>
- <option value="attribute">$i18n.getString("attribute")</option>
- <option value="name">$i18n.getString("name")</option>
- </select>
- </td>
- </tr>
<tr><td colspan="2"></td></tr>
- <tr id="rowAttribute" style="display: none">
- <td>$i18n.getString("attribute")</td>
+ <tr id="rowAttribute">
+ <td>$i18n.getString("attribute")<em title="$i18n.getString( "required" )" class="required">*</em></td>
<td>
<select name="attributeId" id="attributeId" style='width:18em'>
<option value="">[$i18n.getString( "please_select" )]</option>
#foreach($attribute in $attributes)
- <option value="$attribute.id">$attribute.displayName</option>
+ <option value="$attribute.uid">$attribute.displayName</option>
#end
</select>
</td>
@@ -119,6 +108,9 @@
</div>
<script>
- var i18n_no_result = '$encoder.jsEscape( $i18n.getString( "no_result" ) , "'")';
+ var i18n_no_result_found = '$encoder.jsEscape( $i18n.getString( "no_result_found" ) , "'")';
+ var i18n_duplicate_warning = '$encoder.jsEscape( $i18n.getString( "duplicate_warning" ) , "'")';
+ var i18n_choose_this_tracked_entity_instance = '$encoder.jsEscape( $i18n.getString( "choose_this_tracked_entity_instance" ) , "'")';
+ var i18n_please_select_relationshipType = '$encoder.jsEscape( $i18n.getString( "please_select_relationshipType" ) , "'")';
</script>
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/account.css'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/account.css 2013-12-30 13:12:08 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/account.css 2014-05-12 09:56:39 +0000
@@ -66,13 +66,28 @@
color: #333;
}
+/*----------------------------------------------------------------------------*/
+/* @font-face */
+/*----------------------------------------------------------------------------*/
+
@font-face {
- font-family: 'LiberationSansRegular';
- src: url('../fonts/LiberationSans-Regular-webfont.eot');
- src: url('../fonts/LiberationSans-Regular-webfont.eot?#iefix') format('eot'),
- url('../fonts/LiberationSans-Regular-webfont.woff') format('woff'),
- url('../fonts/LiberationSans-Regular-webfont.ttf') format('truetype'),
- url('../fonts/LiberationSans-Regular-webfont.svg#webfontc8rbNdBe') format('svg');
+ font-family: 'LiberationSans';
+ src: url('../../fonts/LiberationSans-Regular-webfont.eot');
+ src: url('../../fonts/LiberationSans-Regular-webfont.eot?#iefix') format('eot'),
+ url('../../fonts/LiberationSans-Regular-webfont.woff') format('woff'),
+ url('../../fonts/LiberationSans-Regular-webfont.ttf') format('truetype'),
+ url('../../fonts/LiberationSans-Regular-webfont.svg#webfontc8rbNdBe') format('svg');
font-weight: normal;
font-style: normal;
}
+
+@font-face {
+ font-family: 'LiberationSans';
+ src: url('../../fonts/LiberationSans-Bold-webfont.eot');
+ src: url('../../fonts/LiberationSans-Bold-webfont.eot?#iefix') format('eot'),
+ url('../../fonts/LiberationSans-Bold-webfont.woff') format('woff'),
+ url('../../fonts/LiberationSans-Bold-webfont.ttf') format('truetype'),
+ url('../../fonts/LiberationSans-Bold-webfont.svg#webfontHyWb8e07') format('svg');
+ font-weight: bold;
+ font-style: normal;
+}
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/green/green.css'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/green/green.css 2014-04-29 12:49:25 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/green/green.css 2014-05-12 09:56:39 +0000
@@ -5,7 +5,7 @@
*
{
- font-family: LiberationSansRegular, arial, sans-serif;
+ font-family: LiberationSans, arial, sans-serif;
line-height: 140%;
}
@@ -76,7 +76,7 @@
position: absolute;
top: 12px;
left: 175px;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
color: #fff;
font-size: 16px;
}
@@ -229,7 +229,7 @@
margin: 16px 20px 1px 20px;
padding: 8px 0 8px 0;
font-weight: normal;
- font-family: LiberationSansBold, arial;
+ font-family: LiberationSan, arial;
}
#leftBarContents ul
@@ -321,9 +321,8 @@
text-align: left;
color: #39547d;
padding: 3px 0 3px 1px;
- font-family: LiberationSansBold, arial;
font-size: 13px;
- font-weight: normal;
+ font-weight: bold;
border-collapse: collapse;
border-bottom: 1px solid #cad5e5;
min-height: 28px;
@@ -388,12 +387,12 @@
.bold, .bold td
{
- font-family: LiberationSansBold, arial, sans-serif;
+ font-weight: bold;
}
.normal
{
- font-family: LiberationSansRegular, arial, sans-serif;
+ font-weight: normal;
}
/*----------------------------------------------------------------------------*/
@@ -453,7 +452,7 @@
.introItemHeader
{
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
color: #3F693F;
font-size: 13px;
}
@@ -468,7 +467,7 @@
/*----------------------------------------------------------------------------*/
@font-face {
- font-family: 'LiberationSansRegular';
+ font-family: 'LiberationSans';
src: url('../../fonts/LiberationSans-Regular-webfont.eot');
src: url('../../fonts/LiberationSans-Regular-webfont.eot?#iefix') format('eot'),
url('../../fonts/LiberationSans-Regular-webfont.woff') format('woff'),
@@ -479,12 +478,12 @@
}
@font-face {
- font-family: 'LiberationSansBold';
+ font-family: 'LiberationSans';
src: url('../../fonts/LiberationSans-Bold-webfont.eot');
src: url('../../fonts/LiberationSans-Bold-webfont.eot?#iefix') format('eot'),
url('../../fonts/LiberationSans-Bold-webfont.woff') format('woff'),
url('../../fonts/LiberationSans-Bold-webfont.ttf') format('truetype'),
url('../../fonts/LiberationSans-Bold-webfont.svg#webfontHyWb8e07') format('svg');
- font-weight: normal;
+ font-weight: bold;
font-style: normal;
}
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/india/india.css'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/india/india.css 2014-03-30 20:47:31 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/india/india.css 2014-05-12 09:56:39 +0000
@@ -5,7 +5,7 @@
*
{
- font-family: LiberationSansRegular, arial, sans-serif;
+ font-family: LiberationSans, arial, sans-serif;
line-height: 140%;
}
@@ -76,7 +76,7 @@
position: absolute;
top: 12px;
left: 175px;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
color: #fff;
font-size: 16px;
}
@@ -227,8 +227,7 @@
font-size: 9pt;
margin: 16px 20px 2px 20px;
padding: 7px 0 7px 0;
- font-weight: normal;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
}
#leftBarContents ul
@@ -325,9 +324,8 @@
border-style: solid;
border-width: 1px;
border-color: #c8dbea;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
font-size: 13px;
- font-weight: normal;
}
#mainPage
@@ -381,12 +379,12 @@
.bold, .bold td
{
- font-family: LiberationSansBold, arial, sans-serif;
+ font-weight: bold;
}
.normal
{
- font-family: LiberationSansRegular, arial, sans-serif;
+ font-weight: normal;
}
/*----------------------------------------------------------------------------*/
@@ -446,7 +444,7 @@
.introItemHeader
{
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
color: #3F693F;
font-size: 13px;
}
@@ -461,7 +459,7 @@
/*----------------------------------------------------------------------------*/
@font-face {
- font-family: 'LiberationSansRegular';
+ font-family: 'LiberationSans';
src: url('../../fonts/LiberationSans-Regular-webfont.eot');
src: url('../../fonts/LiberationSans-Regular-webfont.eot?#iefix') format('eot'),
url('../../fonts/LiberationSans-Regular-webfont.woff') format('woff'),
@@ -472,12 +470,12 @@
}
@font-face {
- font-family: 'LiberationSansBold';
+ font-family: 'LiberationSans';
src: url('../../fonts/LiberationSans-Bold-webfont.eot');
src: url('../../fonts/LiberationSans-Bold-webfont.eot?#iefix') format('eot'),
url('../../fonts/LiberationSans-Bold-webfont.woff') format('woff'),
url('../../fonts/LiberationSans-Bold-webfont.ttf') format('truetype'),
url('../../fonts/LiberationSans-Bold-webfont.svg#webfontHyWb8e07') format('svg');
- font-weight: normal;
+ font-weight: bold;
font-style: normal;
}
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/light_blue/light_blue.css'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/light_blue/light_blue.css 2014-04-29 12:49:25 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/light_blue/light_blue.css 2014-05-12 09:56:39 +0000
@@ -5,7 +5,7 @@
*
{
- font-family: LiberationSansRegular, arial, sans-serif;
+ font-family: LiberationSans, arial, sans-serif;
line-height: 140%;
}
@@ -76,7 +76,7 @@
position: absolute;
top: 12px;
left: 175px;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
color: #fff;
font-size: 16px;
}
@@ -228,8 +228,7 @@
font-size: 9pt;
margin: 16px 20px 1px 20px;
padding: 8px 0 8px 0;
- font-weight: normal;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
}
#leftBarContents ul
@@ -321,9 +320,8 @@
text-align: left;
color: #39547d;
padding: 3px 0 3px 1px;
- font-family: LiberationSansBold, arial;
font-size: 13px;
- font-weight: normal;
+ font-weight: bold;
border-collapse: collapse;
border-bottom: 1px solid #cad5e5;
min-height: 28px;
@@ -383,12 +381,12 @@
.bold, .bold td
{
- font-family: LiberationSansBold, arial, sans-serif;
+ font-weight: bold;
}
.normal
{
- font-family: LiberationSansRegular, arial, sans-serif;
+ font-weight: normal;
}
/*----------------------------------------------------------------------------*/
@@ -448,7 +446,7 @@
.introItemHeader
{
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
color: #3F693F;
font-size: 13px;
}
@@ -463,7 +461,7 @@
/*----------------------------------------------------------------------------*/
@font-face {
- font-family: 'LiberationSansRegular';
+ font-family: 'LiberationSans';
src: url('../../fonts/LiberationSans-Regular-webfont.eot');
src: url('../../fonts/LiberationSans-Regular-webfont.eot?#iefix') format('eot'),
url('../../fonts/LiberationSans-Regular-webfont.woff') format('woff'),
@@ -474,12 +472,12 @@
}
@font-face {
- font-family: 'LiberationSansBold';
+ font-family: 'LiberationSans';
src: url('../../fonts/LiberationSans-Bold-webfont.eot');
src: url('../../fonts/LiberationSans-Bold-webfont.eot?#iefix') format('eot'),
url('../../fonts/LiberationSans-Bold-webfont.woff') format('woff'),
url('../../fonts/LiberationSans-Bold-webfont.ttf') format('truetype'),
url('../../fonts/LiberationSans-Bold-webfont.svg#webfontHyWb8e07') format('svg');
- font-weight: normal;
+ font-weight: bold;
font-style: normal;
}
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/login.css'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/login.css 2014-01-10 08:25:15 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/login.css 2014-05-12 09:56:39 +0000
@@ -1,7 +1,7 @@
*
{
- font-family: LiberationSansRegular, sans-serif;
+ font-family: LiberationSans, sans-serif;
line-height: 125%;
overflow: hidden;
}
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/menu.css'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/menu.css 2014-05-06 09:20:18 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/menu.css 2014-05-12 09:56:39 +0000
@@ -12,11 +12,16 @@
}
#apps-search {
- width: 330px;
+ border: 1px solid #ccc;
+ border-radius: 3px;
+ outline: none;
padding-right: 25px;
+ padding-left: 5px;
+ width: 328px;
}
.apps-search-wrap {
+ padding-bottom: 10px;
position: relative;
width: 360px;
}
@@ -31,7 +36,7 @@
padding: 0;
position: absolute;
right: 5px;
- top: 24%;
+ top: 18%;
width: 20px;
}
@@ -327,7 +332,7 @@
{
display: table;
height: 34px;
- padding-top: 12px;
+ padding-top: 8px;
text-align: center;
width: 360px;
margin-top: 5px;
@@ -375,15 +380,15 @@
.menu-drop-down-wrap
{
overflow: hidden;
- height: 340px;
+ height: 375px;
}
.menu-drop-down-scroll
{
- height: 340px;
- width: 384px;
+ height: 375px;
overflow-y: auto;
overflow-x: hidden;
+ width: 384px;
}
#appsDropDown ul.menuDropDownBox {
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/vietnam/vietnam.css'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/vietnam/vietnam.css 2014-03-30 20:47:31 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/vietnam/vietnam.css 2014-05-12 09:56:39 +0000
@@ -5,7 +5,7 @@
*
{
- font-family: LiberationSansRegular, arial, sans-serif;
+ font-family: LiberationSans, arial, sans-serif;
line-height: 140%;
}
@@ -76,7 +76,7 @@
position: absolute;
top: 12px;
left: 175px;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
color: #fff;
font-size: 16px;
}
@@ -228,7 +228,7 @@
margin: 16px 20px 2px 20px;
padding: 7px 0 7px 0;
font-weight: normal;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
}
#leftBarContents ul
@@ -325,9 +325,8 @@
border-style: solid;
border-width: 1px;
border-color: #c8dbea;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
font-size: 13px;
- font-weight: normal;
}
#mainPage
@@ -381,12 +380,12 @@
.bold, .bold td
{
- font-family: LiberationSansBold, arial, sans-serif;
+ font-weight: bold;
}
.normal
{
- font-family: LiberationSansRegular, arial, sans-serif;
+ font-weight: normal;
}
/*----------------------------------------------------------------------------*/
@@ -446,7 +445,7 @@
.introItemHeader
{
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
color: #3F693F;
font-size: 13px;
}
@@ -461,7 +460,7 @@
/*----------------------------------------------------------------------------*/
@font-face {
- font-family: 'LiberationSansRegular';
+ font-family: 'LiberationSans';
src: url('../../fonts/LiberationSans-Regular-webfont.eot');
src: url('../../fonts/LiberationSans-Regular-webfont.eot?#iefix') format('eot'),
url('../../fonts/LiberationSans-Regular-webfont.woff') format('woff'),
@@ -472,12 +471,12 @@
}
@font-face {
- font-family: 'LiberationSansBold';
+ font-family: 'LiberationSans';
src: url('../../fonts/LiberationSans-Bold-webfont.eot');
src: url('../../fonts/LiberationSans-Bold-webfont.eot?#iefix') format('eot'),
url('../../fonts/LiberationSans-Bold-webfont.woff') format('woff'),
url('../../fonts/LiberationSans-Bold-webfont.ttf') format('truetype'),
url('../../fonts/LiberationSans-Bold-webfont.svg#webfontHyWb8e07') format('svg');
- font-weight: normal;
+ font-weight: bold;
font-style: normal;
}
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css 2014-04-22 16:55:51 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css 2014-05-12 09:56:39 +0000
@@ -104,7 +104,7 @@
#detailsArea label
{
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
font-size: 13px;
}
@@ -181,7 +181,7 @@
position: absolute;
left: 22px;
top: 50px;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
font-size: 9pt;
cursor: pointer;
}
@@ -190,7 +190,7 @@
{
position: absolute;
right: 2px;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
font-size: 9pt;
cursor: pointer;
}
@@ -271,7 +271,7 @@
div#orgUnitTree a.selected
{
color: #000;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
}
/*----------------------------------------------------------------------------*/
@@ -604,7 +604,7 @@
div.paging span, div.paging a
{
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
padding: 0 5px;
font-size: 12px;
}
@@ -705,7 +705,7 @@
border: 1px solid #bbb;
border-radius: 3px;
margin-right: 4px;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
font-size: 13px;
background-color: #f3f3f3;
color: #606060 !important;
@@ -725,7 +725,7 @@
border: 1px solid #3D77B3;
border-radius: 3px;
margin-right: 4px;
- font-family: LiberationSansBold, arial;
+ font-weight: bold;
font-size: 13px;
background-color: #3581CE;
color: #fff !important;
@@ -778,37 +778,29 @@
.ui-widget, .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button
{
- font-family: LiberationSansRegular, arial, sans-serif !important;
+ font-family: LiberationSans, arial, sans-serif !important;
font-size: 9pt !important;
}
.ui-datepicker th
{
- font-family: LiberationSansBold, arial, sans-serif !important;
- font-weight: normal !important;
+ font-family: LiberationSans, arial, sans-serif !important;
padding: 0.5em 0 !important;
font-size: 9pt !important;
}
.ui-widget-header, .ui-widget-header a
{
- font-family: LiberationSansBold, arial, sans-serif !important;
- font-weight: normal !important;
+ font-family: LiberationSans, arial, sans-serif !important;
font-size: 10pt !important;
}
.ui-button-text
{
- font-family: LiberationSansBold, arial, sans-serif !important;
- font-weight: normal !important;
+ font-family: LiberationSans, arial, sans-serif !important;
font-size: 9pt !important;
}
-.ui-state-default
-{
- font-weight: normal !important;
-}
-
/*----------------------------------------------------------------------------*/
/* Messages used for sharing */
/*----------------------------------------------------------------------------*/
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.menu.js'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.menu.js 2014-05-06 09:20:18 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.menu.js 2014-05-12 09:56:39 +0000
@@ -629,7 +629,7 @@
self.parent().css('width', '360px');
self.parent().parent().css('width', '360px');
} else {
- if (self.innerHeight() === 340 ) {
+ if (self.innerHeight() === 375 ) {
moreAppsElement.hide();
self.parent().css('width', '384px');
self.parent().parent().css('width', '384px');
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ouwt/ouwt.js'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ouwt/ouwt.js 2014-04-20 16:15:45 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ouwt/ouwt.js 2014-05-12 09:56:39 +0000
@@ -283,7 +283,6 @@
subtree.reloadTree();
$( "#ouwt_loader" ).hide();
- selection.scrollToSelected();
$( "#orgUnitTree" ).trigger( "ouwtLoaded" );
} );
} );
=== removed file 'dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global_lo.properties'
--- dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global_lo.properties 2014-05-03 11:43:27 +0000
+++ dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global_lo.properties 1970-01-01 00:00:00 +0000
@@ -1,663 +0,0 @@
-not_logged_in=\u0e9a\u0ecd\u0ec8\u0e95\u0ec9\u0ead\u0e87\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0eaa\u0eb9\u0ec8\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a
-log_out=\u0ead\u0ead\u0e81\u0e88\u0eb2\u0e81\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a
-org_unit_tree=\u0ec2\u0e84\u0e87\u0eae\u0ec8\u0eb2\u0e87\u0e81\u0eb2\u0e99\u0e88\u0eb1\u0e94\u0e95\u0eb1\u0ec9\u0e87
-locate_organisation_unit_by_name=\u0e97\u0eb5\u0ec8\u0e95\u0eb1\u0ec9\u0e87\u0e82\u0ead\u0e87\u0eab\u0ebb\u0ea7\u0edc\u0ec8\u0ea7\u0e8d\u0e88\u0eb1\u0e94\u0e95\u0eb1\u0ec9\u0e87\u0e9b\u0eb0\u0e95\u0eb4\u0e9a\u0eb1\u0e94\u0ead\u0eb5\u0e87\u0e95\u0eb2\u0ea1\u0e8a\u0eb7\u0ec8
-error_occurred=\u0e82\u0ecd\u0ec9\u0e9c\u0eb4\u0e94\u0e9e\u0eb2\u0e94\u0e9b\u0eb0\u0e81\u0ebb\u0e94\u0e82\u0eb7\u0ec9\u0e99.
-select_organisationunit=\u0e97\u0ec8\u0eb2\u0e99\u0e95\u0ec9\u0ead\u0e87\u0ec4\u0e94\u0ec9\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0ec0\u0ead\u0ebb\u0eb2\u0eab\u0ebb\u0ea7\u0edc\u0ec8\u0ea7\u0e8d\u0e81\u0eb2\u0e99\u0e88\u0eb1\u0e94\u0e95\u0eb1\u0ec9\u0e87\u0e9b\u0eb0\u0e95\u0eb4\u0e9a\u0eb1\u0e94\u0e88\u0eb2\u0e81\u0ec2\u0e84\u0e87\u0eae\u0ec8\u0eb2\u0e87\u0ea5\u0ea7\u0ea1
-dhis-web-maintenance-user=\u0e9c\u0eb9\u0ec9\u0e99\u0ecd\u0eb2\u0ec3\u0e8a\u0ec9
-dhis-web-maintenance-settings=\u0e95\u0eb1\u0ec9\u0e87\u0e84\u0ec8\u0eb2
-dhis-web-maintenance-patient=\u0e84\u0ebb\u0e99 \u0ec1\u0ea5\u0eb0 \u0ec1\u0e9c\u0e99\u0e87\u0eb2\u0e99
-dhis-web-importexport=\u0e82\u0eb2\u0ec0\u0e82\u0ebb\u0ec9\u0eb2-\u0e82\u0eb2\u0ead\u0ead\u0e81
-dhis-web-light=\u0ec0\u0e84\u0eb7\u0ec8\u0ead\u0e99\u0e97\u0eb5\u0ec8 (\u0ec1\u0eaa\u0e87)
-dhis-web-dashboard-integration=\u0edc\u0ec9\u0eb2\u0e95\u0ec8\u0eb2\u0e87\u0eaa\u0eb0\u0ec1\u0e94\u0e87\u0e9c\u0ebb\u0e99\u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99\u0eae\u0eb9\u0e9a\u0e9e\u0eb2\u0e9a
-dhis-web-integration=\u0e81\u0eb2\u0e99\u0e9b\u0eb0\u0eaa\u0eb2\u0e99\u0e87\u0eb2\u0e99\u0e82\u0ead\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-dhis-web-linelisting-mp=\u0e81\u0ecd\u0eb2\u0ea5\u0eb1\u0e87\u0e84\u0ebb\u0e99
-intro_dhis-web-maintenance-appmanager=\u0e81\u0eb2\u0e99\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0ec0\u0e96\u0eb4\u0e87 \u0ec1\u0ea5\u0eb0 \u0e81\u0eb2\u0e99\u0eaa\u0ebb\u0ec8\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 \u0e81\u0eb2\u0e99\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9 \u0e97\u0eb5\u0ec8\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ec0\u0e9e\u0eb5\u0ec9\u0ea1 \u0ea1\u0eb2\u0e94\u0e95\u0eb0\u0e96\u0eb2\u0e99\u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9
-intro_dhis-web-caseentry=\u0e81\u0eb2\u0e99\u0ea5\u0ebb\u0e87\u0e97\u0eb0\u0e9a\u0ebd\u0e99\u0e9c\u0eb9\u0ec9\u0ec4\u0e94\u0ec9\u0eae\u0eb1\u0e9a\u0e9c\u0ebb\u0e99\u0e9b\u0eb0\u0ec2\u0eab\u0e8d\u0e94, \u0e81\u0eb2\u0e99\u0e95\u0eb7\u0ec8\u0ea1\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 \u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a \u0eaa\u0eb5\u0ec8\u0e87\u0e97\u0eb5\u0ec8\u0ec0\u0e81\u0eb5\u0e94\u0e82\u0eb7\u0ec9\u0e99\u0e95\u0ec8\u0eb2\u0e87\u0ec6 \u0ec1\u0ea5\u0eb0 \u0ec0\u0e9a\u0eb5\u0ec8\u0e87\u0e9a\u0ebb\u0e94\u0ea5\u0eb2\u0e8d\u0e87\u0eb2\u0e99\u0ea5\u0ea7\u0ea1
-intro_dhis-web-dataentry=\u0e81\u0eb2\u0e99\u0e95\u0eb7\u0ec8\u0ea1\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 \u0ec3\u0eaa\u0ec8\u0ec1\u0e9a\u0e9a\u0e9f\u0ead\u0ea1 \u0ec2\u0e94\u0e8d\u0e81\u0eb2\u0e99\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0ea1\u0e95\u0ecd\u0ec8 \u0ead\u0eb5\u0e99\u0ec0\u0e95\u0eb5\u0ec1\u0e99\u0eb1\u0e94 \u0eab\u0ea5\u0eb7\u0e9a\u0ecd\u0ec8\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0ea1\u0e95\u0ecd\u0ec8, \u0e81\u0eb2\u0e99\u0ea2\u0eb1\u0ec9\u0e87\u0ea2\u0eb7\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 \u0ec1\u0ea5\u0eb0 \u0eaa\u0eb1\u0e87\u0ec0\u0e81\u0e94\u0e97\u0ec8\u0eb2\u0ead\u0ec8\u0ebd\u0e87\u0e95\u0ec8\u0eb2\u0e87\u0e82\u0ead\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-intro_dhis-web-mobile=\u0e81\u0eb2\u0e99\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0ec0\u0e96\u0eb4\u0e87 Smartphone \u0ec1\u0ea1\u0ec8\u0e99\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0e9b\u0ec9\u0ead\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99, \u0e88\u0eb1\u0e94\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a \u0ec1\u0ea5\u0eb0 \u0eaa\u0ebb\u0ec8\u0e87\u0e82\u0ecd\u0ec9\u0e84\u0ea7\u0eb2\u0ea1\u0ec4\u0e94\u0ec9\u0eaa\u0eb0\u0e94\u0ea7\u0e81 \u0ec1\u0ea5\u0eb0 \u0ea7\u0ec8\u0ead\u0e87\u0ec4\u0ea7
-intro_dhis-web-dashboard-integration=\u0e97\u0ec8\u0eb2\u0e99\u0e8d\u0eb1\u0e87\u0eaa\u0eb2\u0ea1\u0eb2\u0e94 \u0ec0\u0e9a\u0eb5\u0ec8\u0e87 \u0e9a\u0eb1\u0e99\u0e94\u0eb2\u0e81\u0eae\u0eb2\u0e9f \u0e97\u0eb5\u0ec8\u0eaa\u0eb0\u0ec1\u0e94\u0e87\u0e9c\u0ebb\u0e99, \u0ec1\u0e9c\u0e99\u0e97\u0eb5\u0ec8 \u0ec1\u0ea5\u0eb0 \u0e82\u0ebd\u0e99\u0e82\u0ecd\u0ec9\u0e84\u0ea7\u0eb2\u0ea1\u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0eaa\u0ebb\u0ec8\u0e87\u0ec3\u0eab\u0ec9\u0e97\u0eb5\u0ea1\u0e87\u0eb2\u0e99
-intro_help_center=\u0e97\u0ec8\u0eb2\u0e99\u0e8d\u0eb1\u0e87\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0e95\u0ebb\u0ea7\u0e8a\u0ec8\u0ea7\u0e8d\u0e88\u0eb2\u0e81\u0eab\u0ea5\u0eb2\u0e8d\u0eab\u0ebb\u0ea7\u0e82\u0ecd\u0ec9\u0e97\u0eb5\u0ec8\u0e81\u0ec8\u0ebd\u0ea7\u0e82\u0ec9\u0ead\u0e87 \u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0e88\u0eb1\u0e94\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a \u0ec1\u0ea5\u0eb0 \u0e99\u0ecd\u0eb2\u0ec3\u0e8a\u0ec9 DHIS 2.
-next=\u0e95\u0ecd\u0ec8\u0ec4\u0e9b
-sync_success=\u0e81\u0eb2\u0e99\u0eaa\u0ebb\u0ec8\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec4\u0e9b\u0eab\u0eb2 server (\u0edc\u0ec8\u0ea7\u0e8d\u0e84\u0ea7\u0eb2\u0ea1\u0e88\u0ecd\u0eb2) \u0ec4\u0e94\u0ec9\u0eaa\u0ecd\u0eb2\u0ec0\u0ea5\u0eb1\u0e94
-extend_menu=\u0ec0\u0e9e\u0eb5\u0ec9\u0ea1\u0ec0\u0ea1\u0e99\u0e8d\u0eb9\u0e95\u0eb7\u0ec8\u0ea1
-organisation_unit=\u0eab\u0ebb\u0ea7\u0edc\u0ec8\u0ea7\u0e8d\u0e88\u0eb1\u0e94\u0e95\u0eb1\u0ec9\u0e87\u0e9b\u0eb0\u0e95\u0eb4\u0e9a\u0eb1\u0e94
-start_date=\u0ea1\u0eb7\u0ec9\u0ec0\u0ea5\u0eb5\u0ec8\u0ea1
-end_date=\u0ea1\u0eb7\u0ec9\u0eaa\u0eb4\u0ec9\u0e99\u0eaa\u0eb8\u0e94
-operations=\u0e81\u0eb2\u0e99\u0e9b\u0eb0\u0e95\u0eb4\u0e9a\u0eb1\u0e94\u0e81\u0eb2\u0e99
-all=\u0e97\u0eb1\u0e87\u0edd\u0ebb\u0e94
-clone=\u0e81\u0eb2\u0e99\u0ea5\u0ead\u0e81\u0ec1\u0e9a\u0e9a
-reply=\u0e81\u0eb2\u0e99\u0e95\u0ead\u0e9a
-deleting=\u0e81\u0eb2\u0e99\u0ea5\u0eb6\u0e9a
-gender_male=~\u0ec0\u0e9e\u0e94\u0e8a\u0eb2\u0e8d
-confirm_password=\u0ea2\u0eb7\u0e99\u0ea2\u0eb1\u0e99\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99
-create_new_account=\u0eaa\u0ec9\u0eb2\u0e87~\u0ec0\u0ead\u0e81\u0eb0\u0eaa\u0eb2\u0e99\u0ec3\u0edd\u0ec8
-prove_you_are_not_a_robot=\u0ea2\u0eb1\u0ec9\u0e87\u0ea2\u0eb7\u0e99\u0ea7\u0ec8\u0eb2\u0e97\u0ec8\u0eb2\u0e99\u0e9a\u0ecd\u0ec8\u0ec1\u0ea1\u0ec8\u0e99\u0eab\u0eb8\u0ec8\u0e99\u0e8d\u0ebb\u0e99
-cant_read_the_words_try_another_one=\u0e96\u0ec9\u0eb2\u0ead\u0ec8\u0eb2\u0e99\u0e84\u0ecd\u0eb2\u0e99\u0eb5\u0ec9\u0e9a\u0ecd\u0ec8\u0ec4\u0e94\u0ec9\u0ec1\u0ea1\u0ec8\u0e99\u0ec3\u0eab\u0ec9\u0e9e\u0eb0\u0e8d\u0eb2\u0e8d\u0eb2\u0ea1\u0e84\u0ecd\u0eb2\u0ead\u0eb7\u0ec8\u0e99
-Monthly=\u0ec0\u0e9b\u0eb1\u0e99\u0ec0\u0e94\u0eb7\u0ead\u0e99
-Yearly=\u0ec1\u0e95\u0ec8\u0ea5\u0eb0\u0e9b\u0eb5
-TwoYearly=\u0e97\u0eb8\u0e81\u0ec6\u0eaa\u0ead\u0e87\u0e9b\u0eb5
-FinancialOct=\u0e87\u0ebb\u0e9a\u0e9b\u0eb0\u0ea1\u0eb2\u0e99\u0eaa\u0ebb\u0e81\u0e9b\u0eb5-\u0ec0\u0e94\u0eb7\u0ead\u0e99 10
-format.Monthly.startDate=MMMM yyyy
-format.Monthly.endDate=
-format.BiMonthly.endDate=\u0ec0\u0e94\u0eb7\u0ead\u0e99 \u0e9b\u0eb5
-format.SixMonthly.endDate=MMM yyyy
-format.Yearly.endDate=
-format.TwoYearly.endDate=\u0e9b\u0eb5
-format.Survey.startDate=\u0e9b\u0eb5- \u0ec0\u0e94\u0eb7\u0ead\u0e99-\u0ea1\u0eb5\u0ec9
-format.Relative.startDate=\u0e9b\u0eb5-\u0ec0\u0e94\u0eb7\u0ead\u0e99-\u0ea1\u0eb7\u0ec9 '- '
-format.FinancialApril.startDate=\u0ea1\u0eb7\u0ec9-\u0ec0\u0e94\u0eb7\u0ead\u0e99-\u0e9b\u0eb5 '\u0eab\u0eb2 '
-format.FinancialJuly.endDate=\u0ea1\u0eb7\u0ec9-\u0ec0\u0e94\u0eb7\u0ead\u0e99-\u0e9b\u0eb5
-format.FinancialOct.startDate='FY ' \u0eaa\u0ebb\u0e81\u0e9b\u0eb5\u0e87\u0ebb\u0e9a\u0e9b\u0eb0\u0ea1\u0eb2\u0e99
-month.february=\u0e81\u0eb8\u0ea1\u0e9e\u0eb2
-month.july=\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94
-month.august=\u0eaa\u0eb4\u0e87\u0eab\u0eb2
-month.september=\u0e81\u0eb2\u0e99\u0e8d\u0eb2
-month.short.january=\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99
-month.short.august=\u0ec0\u0e94\u0eb7\u0ead\u0e99\u0eaa\u0eb4\u0e87\u0eab\u0eb2
-weekday.wednesday=\u0ea7\u0eb1\u0e99\u0e9e\u0eb8\u0e94
-weekday.short.tuesday=\u0ea7\u0eb1\u0e99\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99
-weekday.short.saturday=\u0ea7\u0eb1\u0e99\u0ec0\u0eaa\u0ebb\u0eb2
-translation_label_id=Id
-translation_label_description=\u0e9e\u0eb1\u0e99\u0ea5\u0eb0\u0e99\u0eb2\u0ead\u0eb0\u0ead\u0ebd\u0e94
-translation_label_comment=\u0e84\u0eb3\u0ec0\u0eab\u0eb1\u0e99
-translation_languagecode=\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9e\u0eb2\u0eaa\u0eb2
-translation_label_numerator_description=\u0e9e\u0eb1\u0e99\u0ea5\u0eb0\u0e99\u0eb2\u0e81\u0ec8\u0ebd\u0ea7\u0e81\u0eb1\u0e9a\u0e95\u0ebb\u0ea7\u0e95\u0eb1\u0ec9\u0e87
-translation_label_denominator_description=\u0e81\u0eb2\u0e99\u0e9e\u0eb1\u0e99\u0ea5\u0eb0\u0e99\u0eb2\u0e81\u0ec8\u0ebd\u0ea7\u0e81\u0eb1\u0e9a\u0e95\u0ebb\u0ea7\u0eab\u0eb2\u0e99
-translation_cancel=\u0e8d\u0ebb\u0e81\u0ec0\u0ea5\u0eb5\u0e81
-translation_add=\u0ec0\u0e9e\u0eb5\u0ec8\u0ea1
-translation_language_must_be_two_chars=\u0e9e\u0eb2\u0eaa\u0eb2\u0e88\u0eb0\u0e95\u0ec9\u0ead\u0e87\u0ea1\u0eb5\u0eaa\u0ead\u0e87\u0e84\u0ecd\u0eb2
-translation_locale_already_exists=\u0e97\u0eb5\u0ec8\u0e95\u0eb1\u0ec9\u0e87\u0e99\u0eb5\u0ec9\u0ea1\u0eb5\u0ec1\u0ea5\u0ec9\u0ea7
-translation_shortname_wellformed=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2 \u0e81\u0ecd\u0eb2\u0e99\u0ebb\u0e94 \u0ec0\u0e9b\u0eb1\u0e99\u0e95\u0ebb\u0ea7\u0edc\u0eb1\u0e87\u0eaa\u0eb7, \u0ec0\u0e9b\u0eb1\u0e99\u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81, \u0edd\u0eb2\u0e8d\u0e82\u0eb5\u0e94\u0e81\u0ec9\u0ead\u0e87 \u0ec1\u0ea5\u0eb0 \u0e8d\u0eb0\u0eab\u0ea7\u0ec8\u0eb2\u0e87 \u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a \u0e9e\u0ebd\u0e87\u0ec1\u0e95\u0ec8\u0e8a\u0eb7\u0ec8\u0eaa\u0eb1\u0ec9\u0e99
-translation_shortname_length=\u0e8a\u0eb7\u0ec8\u0eaa\u0eb1\u0ec9\u0e99\u0eaa\u0eb9\u0e87\u0eaa\u0eb8\u0e94\u0e9a\u0ecd\u0ec8\u0ec3\u0eab\u0ec9\u0e81\u0eb2\u0e8d 25 \u0e84\u0ecd\u0eb2
-translation_label_formName=\u0e8a\u0eb7\u0ec8\u200b\u0ec1\u0e9a\u0e9a\u200b\u0e9f\u0ead\u0ea1\u200b
-name_exists=\u0e8a\u0eb7\u0ec8\u0e99\u0eb5\u0ec9\u0ea1\u0eb5\u0eae\u0ebd\u0e9a\u0eae\u0ec9\u0ead\u0e8d\u0ec1\u0ea5\u0ec9\u0ea7.
-name_is_required=\u0e97\u0ec8\u0eb2\u0e99\u0e88\u0ecd\u0eb2\u0ec0\u0e9b\u0eb1\u0e99\u0e95\u0ec9\u0ead\u0e87\u0e95\u0eb7\u0ec8\u0ea1\u0e8a\u0eb7\u0ec8\u0ec3\u0eaa\u0ec8
-version=\u0ea5\u0eb9\u0ec9\u0e99
-build_revision=\u0e81\u0eb2\u0e99\u0e97\u0ebb\u0e9a\u0e97\u0ea7\u0e99\u0e81\u0eb2\u0e99\u0eaa\u0ec9\u0eb2\u0e87
-environment_variable=\u0e95\u0ebb\u0ea7\u0ec1\u0e9b\u0e97\u0eb2\u0e87\u0e94\u0ec9\u0eb2\u0e99\u0eaa\u0eb0\u0e9e\u0eb2\u0e9a\u0ec1\u0ea7\u0e94\u0ea5\u0ec9\u0ead\u0ea1
-home_page=\u0eab\u0e99\u0ec9\u0eb2\u0eab\u0ea5\u0eb1\u0e81
-launchpad_site=Launchpad \u0ec1\u0ea7\u0e9a\u0ec4\u0e8a
-enter_message=\u0e95\u0eb7\u0ec8\u0ea1\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec3\u0eaa\u0ec8
-send=\u0eaa\u0ebb\u0ec8\u0e87
-send_feedback=\u0eaa\u0ebb\u0ec8\u0e87\u0e84\u0ecd\u0eb2\u0ec0\u0eab\u0eb1\u0e99\u0e84\u0eb7\u0e99\u0ec3\u0eab\u0ec9
-feedback=\u0ea1\u0eb5\u0e84\u0ecd\u0eb2\u0ec0\u0eab\u0eb1\u0e99\u0eaa\u0ebb\u0ec8\u0e87\u0e84\u0eb7\u0e99\u0ec3\u0eab\u0ec9
-help_contents=\u0e8a\u0ec8\u0ea7\u0e8d\u0e97\u0eb2\u0e87\u0e94\u0ec9\u0eb2\u0e99\u0ec0\u0e99\u0eb5\u0eb7\u0ec9\u0ead\u0ec3\u0e99
-os_version=\u0ea5\u0eb8\u0ec9\u0e99\u0e82\u0ead\u0e87\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a
-supportive_software=\u0e8a\u0ead\u0e9a\u0ec1\u0ea7\u0e97\u0eb5\u0ec8\u0eaa\u0eb0\u0edc\u0eb1\u0e9a\u0eaa\u0eb0\u0edc\u0eb9\u0e99\u0ec3\u0eab\u0ec9\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0e97\u0ecd\u0eb2\u0e87\u0eb2\u0e99\u0ec4\u0e94\u0ec9
-foxit_description=\u0e9f\u0ea3\u0eb5 \u0ec1\u0ea5\u0eb0 \u0ea1\u0eb5\u0e97\u0eb1\u0e87\u0ec2\u0e9b\u0ebc\u0ec1\u0e81\u0ebc\u0ea1 PDF \u0e97\u0eb5\u0ec8\u0eaa\u0eb0\u0e94\u0ea7\u0e81 \u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0ea7\u0eb4\u0e99\u0ec2\u0e94
-pdf_reader=\u0ec2\u0e9b\u0ebc\u0ec1\u0e81\u0ebc\u0ea1 PDF \u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0ead\u0ec8\u0eb2\u0e99
-my_datamart_description=\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e9e\u0eb7\u0ec9\u0e99\u0e96\u0eb2\u0e99\u0e97\u0eb5\u0ec8\u0ea1\u0eb5\u0ec1\u0ea1\u0ec8\u0e99\u0ec4\u0e94\u0ec9\u0ec0\u0e81\u0eb1\u0e9a\u0eae\u0eb1\u0e81\u0eaa\u0eb2\u0ec4\u0ea7\u0ec9 \u0ec0\u0ea7\u0ea5\u0eb2\u0e97\u0eb5\u0ec8\u0e9a\u0ecd\u0ec8\u0ea1\u0eb5\u0e81\u0eb2\u0e99\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0ea1\u0e95\u0ecd\u0ec8\u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0e81\u0eb2\u0e99\u0ea7\u0eb4\u0ec4\u0e88
-web_api=\u0ec0\u0e84\u0eb7\u0ead\u0e84\u0ec8\u0eb2\u0e8d API
-gender=\u0ec0\u0e9e\u0e94
-male=\u0e8a\u0eb2\u0e8d
-birthday=\u0ea7\u0eb1\u0e99-\u0ec0\u0e94\u0eb7\u0ead\u0e99-\u0e9b\u0eb5 \u0ec0\u0e81\u0eb5\u0e94
-languages=\u0e9e\u0eb2\u0eaa\u0eb2
-style=\u0eae\u0eb9\u0e9a\u0ec1\u0e9a\u0e9a
-user_message_settings=\u0e81\u0eb2\u0e99\u0e95\u0eb1\u0ec9\u0e87\u0e84\u0ec8\u0eb2\u0e82\u0ead\u0e87\u0e9c\u0eb9\u0ec9\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9
-intro_user_general_settings=\u0e94\u0eb1\u0e94\u0e9b\u0eb1\u0e9a\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0e94\u0eb1\u0ec8\u0e87\u0e81\u0ec8\u0eb2\u0ea7\u0ec3\u0eab\u0ec9\u0ec4\u0e9b\u0e95\u0eb2\u0ea1\u0e84\u0ea7\u0eb2\u0ea1\u0e95\u0ec9\u0ead\u0e87\u0e81\u0eb2\u0e99\u0e9e\u0eb4\u0ec0\u0eaa\u0e94\u0e82\u0ead\u0e87\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9 \u0ec0\u0e8a\u0eb1\u0ec8\u0e99\u0e97\u0eb5\u0ec8\u0e95\u0eb1\u0ec9\u0e87 \u0ec1\u0ea5\u0eb0 \u0eae\u0eb9\u0e9a\u0ec1\u0e9a\u0e9a\u0e95\u0ec8\u0eb2\u0e87\u0ec6
-green=\u0e82\u0ebd\u0ea7
-settings_updated=\u0e81\u0eb2\u0e99\u0e95\u0eb1\u0ec9\u0e87\u0e84\u0ec8\u0eb2\u0ec4\u0e94\u0ec9\u0e9b\u0eb1\u0e9a\u0e9b\u0eb8\u0e87\u0ec1\u0ea5\u0ec9\u0ea7
-interface_style=\u0eae\u0eb9\u0e9a\u0ec1\u0e9a\u0e9a\u0e82\u0ead\u0e87\u0e81\u0eb2\u0e99\u0eaa\u0ebb\u0e99\u0e97\u0eb0\u0e99\u0eb2\u0ec1\u0ea5\u0e81\u0e9b\u0ec8\u0ebd\u0e99
-user_groups=\u0e81\u0eb8\u0ec8\u0ea1\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9
-browse_it_here=\u0ec0\u0e9a\u0eb5\u0ec8\u0e87\u0ea2\u0eb9\u0ec8\u0e9a\u0ec8\u0ead\u0e99\u0e99\u0eb5\u0ec9
-change_log=\u0e9b\u0ec8\u0ebd\u0e99 \u0e81\u0eb2\u0e99\u0e9a\u0eb1\u0e99\u0e97\u0eb6\u0e81
-sum=\u0e9c\u0ebb\u0e99\u0e9a\u0ea7\u0e81
-string=\u0eaa\u0eb0\u0e95\u0eb4\u0e87
-date=\u0ea7\u0eb1\u0e99\u0e97\u0eb5\u0ec8
-none=\u0e9a\u0ecd\u0ec8\u0ea1\u0eb5
-profile=\u0eaa\u0eb1\u0e87\u0ea5\u0ea7\u0ea1\u0eab\u0e8d\u0ecd\u0ec9\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0eaa\u0ec8\u0ea7\u0e99\u0e95\u0ebb\u0ea7
-account=\u0e9a\u0eb1\u0e99\u0e8a\u0eb5
-user_account=\u0e9a\u0eb1\u0e99\u0e8a\u0eb5\u0e82\u0ead\u0e87\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9
-wrong_password=\u0ea5\u0eb0\u0eab\u0eb1\u0e81\u0e9c\u0ec8\u0eb2\u0e99\u0e97\u0eb5\u0ec8\u0e9c\u0eb4\u0e94
-help_center=\u0eaa\u0eb9\u0e99\u0e81\u0eb2\u0e87\u0e8a\u0ec8\u0ea7\u0e8d\u0ec0\u0eab\u0ea5\u0eb7\u0ead\u0ec1\u0e81\u0ec9\u0ec4\u0e82
-help_intro_header=\u0e8d\u0eb4\u0e99\u0e94\u0eb5\u0e95\u0ec9\u0ead\u0e99\u0eae\u0eb1\u0e9a\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0eaa\u0eb9\u0ec8\u0eaa\u0eb9\u0e99\u0e81\u0eb2\u0e87\u0e8a\u0ec8\u0ea7\u0e8d\u0ec0\u0eab\u0ea5\u0eb7\u0ead\u0ec1\u0e81\u0ec9\u0ec4\u0e82
-organisation_unit_required_for_user=\u0e9c\u0eb9\u0ec9\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9\u0e88\u0eb0\u0e95\u0ec9\u0ead\u0e87\u0ec4\u0e94\u0ec9\u0ea1\u0ead\u0e9a\u0edd\u0eb2\u0e8d\u0ea2\u0ec8\u0eb2\u0e87\u0edc\u0ec9\u0ead\u0e8d \u0e99\u0eb7\u0ec8\u0e87 \u0eab\u0ebb\u0ea7\u0edc\u0ec8\u0ea7\u0e8d\u0e81\u0eb2\u0e99\u0e88\u0eb1\u0e94\u0e95\u0eb1\u0ec9\u0e87
-address=\u0e97\u0eb5\u0ec8\u0ea2\u0eb9\u0ec8
-please_fix_this_field=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0ec1\u0e9b\u0e87\u0e9a\u0ec8\u0ead\u0e99\u0e99\u0eb5\u0ec9
-please_enter_the_equal_values_again=\u0e81\u0eb2\u0e99\u0e95\u0eb7\u0ec8\u0ea1\u0ea1\u0eb9\u0e99\u0e84\u0ec8\u0eb2\u0e9a\u0ecd\u0ec8\u0e96\u0eb7\u0e81\u0e95\u0ec9\u0ead\u0e87. \u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ec3\u0eaa\u0ec8\u0ec3\u0edd\u0ec8
-please_enter_at_least_than_n_character=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ec3\u0eaa\u0ec8\u0ea2\u0ec8\u0eb2\u0e87\u0e95\u0ecd\u0ec8\u0eb2 {0} \u0ec2\u0e95
-please_enter_a_value_between_a_and_b=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ea1\u0eb9\u0e99\u0e84\u0ec8\u0eb2\u0ec3\u0eaa\u0ec8 \u0ea5\u0eb0\u0eab\u0ea7\u0ec8\u0eb2\u0e87 {0} \u0ec1\u0ea5\u0eb0 {1}.
-please_enter_a_value_greater_than_or_equal_to_n=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ea1\u0eb9\u0e99\u0e84\u0ec8\u0eb2\u0ec3\u0eaa\u0ec8\u0ec3\u0eab\u0e8d\u0ec8\u0e81\u0ea7\u0ec8\u0eb2\u0eab\u0ea5\u0eb7 \u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0e81\u0eb1\u0e9a {0}
-please_letters_numbers_spaces_underscores_only=\u0ea1\u0eb5\u0ec1\u0e95\u0ec8\u0ec2\u0e95\u0edc\u0eb1\u0e87\u0eaa\u0eb7, \u0ec2\u0e95\u0ec0\u0ea5\u0e81, \u0e8d\u0eb0\u0eab\u0ea7\u0ec8\u0eb2\u0e87 \u0ec1\u0ea5\u0eb0 \u0e82\u0eb5\u0e94\u0e81\u0ec9\u0ead\u0e87 \u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0e99\u0eb1\u0ec9\u0e99\u0e97\u0eb5\u0ec8\u0ead\u0eb2\u0e99\u0eb8\u0e8d\u0eb2\u0e94
-please_enter_a_value_less_than_or_equal_to=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ea1\u0eb9\u0e99\u0e84\u0ec8\u0eb2\u0ec3\u0eaa\u0ec8\u0e95\u0ecd\u0ec8\u0eb2\u0e81\u0ea7\u0ec8\u0eb2\u0eab\u0ea5\u0eb7\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0e81\u0eb1\u0e9a {1}
-no_white_space_please=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e9a\u0ecd\u0ec8\u0ec3\u0eab\u0ec9\u0ea1\u0eb5\u0e9e\u0eb7\u0ec9\u0e99\u0e97\u0eb5\u0ec8\u0e82\u0eb2\u0ea7
-no_start_white_space_please=\u0ec0\u0e82\u0e94\u0e99\u0eb5\u0ec9\u0ec1\u0ea1\u0ec8\u0e99\u0e9a\u0ecd\u0ec8\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ec0\u0ea5\u0eb5\u0ec9\u0ea1\u0e95\u0ebb\u0ec9\u0e99\u0e94\u0ec9\u0ea7\u0e8d \u0e8d\u0eb0\u0eab\u0ea7\u0ec8\u0eb2\u0e87
-ZIP_code_must_be_in_the_range=\u0ea5\u0eb0\u0eab\u0eb1\u0e94 ZIP \u0e82\u0ead\u0e87\u0e97\u0ec8\u0eb2\u0e99\u0e88\u0eb0\u0e95\u0ec9\u0ead\u0e87\u0ea2\u0eb9\u0ec8\u0ec3\u0e99\u0ea5\u0eb0\u0eab\u0ea7\u0ec8\u0eb2\u0e87 902xx-xxxx \u0eab\u0eb2 905-xx-xxxx
-please_enter_valid_time=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec0\u0ea7\u0ea5\u0eb2\u0ec3\u0eab\u0ec9\u0e96\u0eb7\u0e81\u0e95\u0ec9\u0ead\u0e87 \u0ec0\u0e8a\u0eb5\u0ec8\u0e87\u0e88\u0eb0\u0ea2\u0eb9\u0ec8\u0ea5\u0eb0\u0eab\u0ea7\u0ec8\u0eb2\u0e87 00:00 \u0ec2\u0ea1\u0e87 \u0eab\u0eb2 23:59 \u0ec2\u0ea1\u0e87
-please_enter_at_least_n_character=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ea2\u0ec8\u0eb2\u0e87\u0edc\u0ec9\u0ead\u0e8d {0} \u0ec2\u0e95\u0edc\u0eb1\u0e87\u0eaa\u0eb7
-this_date_can_not_be_after_today=\u0ea7\u0eb1\u0e99\u0e97\u0eb5\u0e99\u0eb5\u0ec9\u0e9a\u0ecd\u0ec8\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0e9e\u0eb2\u0e8d\u0eab\u0ea5\u0eb1\u0e87\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec4\u0e94\u0ec9
-password_must_contain_at_least_one_capital_letter_and_one_digit=\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99\u0ea2\u0ec8\u0eb2\u0e87\u0edc\u0ec9\u0ead\u0ebd\u0e88\u0eb0\u0e95\u0ec9\u0ead\u0e87\u0ea1\u0eb5\u0e95\u0ebb\u0ea7\u0edc\u0eb1\u0e87\u0eaa\u0eb7\u0e9e\u0eb5\u0ea1\u0ec3\u0eab\u0e8d\u0ec8 \u0ec1\u0ea5\u0eb0 \u0e99\u0eb7\u0ec8\u0e87\u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81
-closedDate_should_be_greater_than_openDate=\u0ea1\u0eb7\u0ec9\u0e9b\u0eb4\u0e94\u0ea7\u0e82\u0eb0\u0ec1\u0edc\u0e87\u0e88\u0eb0\u0e95\u0ec9\u0ead\u0e87\u0ec3\u0eab\u0e8d\u0ec8\u0e81\u0ea7\u0ec8\u0eb2\u0ea1\u0eb7\u0ec9\u0ec0\u0e9b\u0eb5\u0e94
-unrecognized_coordinate_string=\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e97\u0eb5\u0ec8\u0e95\u0eb1\u0ec9\u0e87\u0e9a\u0ecd\u0ec8\u0e96\u0eb7\u0e81\u0eae\u0eb1\u0e9a\u0eae\u0eb9\u0ec9\u0ec4\u0e94\u0ec9
-please_enter_a_letters_or_digits=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1 \u0e95\u0ebb\u0ea7\u0edc\u0eb1\u0e87\u0eaa\u0eb7 \u0eab\u0ea5\u0eb7\u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81
-please_enter_valid_integer=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81\u0e97\u0eb5\u0ec8\u0ec4\u0e94\u0ec9\u0ea2\u0eb1\u0ec9\u0e87\u0ea2\u0eb7\u0e99\u0ec1\u0ea5\u0ec9\u0ea7
-please_enter_valid_negative_integer=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81\u0e97\u0eb5\u0ec8\u0ea1\u0eb5\u0e9c\u0ebb\u0e99\u0ea5\u0ebb\u0e9a
-please_select_dataset=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0e8a\u0eb8\u0e94\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-please_select_dataelement=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0ead\u0ebb\u0e87\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e82\u0ead\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-selected=\u0ec0\u0ea5\u0eb7\u0ead\u0e81
-waiting=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0ea5\u0ecd\u0e96\u0ec9\u0eb2
-select_at_level=\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0ea5\u0eb0\u0e94\u0eb1\u0e9a\u0e82\u0eb1\u0ec9\u0e99
-unselect_children=\u0e8d\u0ebb\u0e81\u0ec0\u0ea5\u0eb5\u0e81\u0e81\u0eb2\u0e99\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0ec0\u0e94\u0eb1\u0e81\u0e99\u0ec9\u0ead\u0ebd
-organisation_unit_selection_tree=\u0e81\u0eb2\u0e99\u0e84\u0eb1\u0e94\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0eab\u0ebb\u0ea7\u0edc\u0ec8\u0ea7\u0e8d\u0e88\u0eb1\u0e94\u0e95\u0eb1\u0ec9\u0e87\u0e9b\u0eb0\u0e95\u0eb4\u0e9a\u0eb1\u0e94
-go=\u0ec0\u0e94\u0eb5\u0e99\u0edc\u0eca\u0eb2\u0ec4\u0e9b
-delete_success=\u0ea5\u0eb7\u0e9a\u0eab\u0ebb\u0ea7\u0e82\u0ecd\u0ec9\u0ead\u0ead\u0e81
-process=\u0e81\u0ecd\u0eb2\u0ea5\u0eb1\u0e87\u0e94\u0ecd\u0eb2\u0ec0\u0e99\u0eb5\u0e99\u0e81\u0eb2\u0e99
-code=\u0ea5\u0eb0\u0eab\u0eb1\u0e94
-description=\u0e81\u0eb2\u0e99\u200b\u0ead\u0eb0\u200b\u0e97\u0eb4\u200b\u0e8d\u0eb2\u0e8d\u200b
-opening_date=\u0ea1\u0eb7\u0ec9\u0ec0\u0e9b\u0eb5\u0e94
-active=\u0e94\u0eb3\u0ec0\u0e99\u0eb5\u0e99\u0ea2\u0eb9\u0ec8
-type=\u0e8a\u0eb0\u0e99\u0eb4\u0e94
-on_time=\u0e97\u0eb1\u0e99\u0ec0\u0ea7\u0ea5\u0eb2
-indicator_groups=\u0e81\u0eb8\u0ec8\u0ea1\u0e95\u0ebb\u0ea7\u0e8a\u0eb5\u0ec9\u0ea7\u0eb1\u0e94
-left_expression=\u0e81\u0eb2\u0e99\u0eaa\u0eb0\u0ec1\u0e94\u0e87\u0e84\u0ecd\u0eb2\u0ec0\u0eab\u0eb1\u0e99\u0e9f\u0ec8\u0eb2\u0e8d\u0e8a\u0ec9\u0eb2\u0e8d
-numerator_aggregation_operator=\u0e81\u0eb2\u0e99\u0e9a\u0ecd\u0ea5\u0eb4\u0eab\u0eb2\u0e99\u0e88\u0eb1\u0e94\u0e81\u0eb2\u0e99\u0eaa\u0eb1\u0e87\u0ea5\u0ea7\u0ea1\u0e95\u0ebb\u0ea7\u0e95\u0eb1\u0ec9\u0e87
-denominator_description=\u0e81\u0eb2\u0e99\u0e9e\u0eb1\u0e99\u0ea5\u0eb0\u0e99\u0eb2\u0e81\u0ec8\u0ebd\u0ea7\u0e81\u0eb1\u0e9a\u0e95\u0ebb\u0ea7\u0eab\u0eb2\u0e99
-id_not_numeric=\u0e81\u0eb2\u0e99\u0e88\u0ecd\u0eb2\u0ec1\u0e99\u0e81\u0e97\u0eb5\u0ec8\u0e9a\u0ecd\u0ec8\u0ec1\u0ea1\u0ec8\u0e99\u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81
-absolute=\u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81\u0e97\u0eb5\u0ec8\u0e8d\u0eb1\u0e87\u0e9a\u0ecd\u0ec8\u0e97\u0eb1\u0e99\u0ec4\u0e94\u0ec9\u0e9b\u0eb8\u0e87\u0ec1\u0e95\u0ec8\u0e87
-statistical=\u0eaa\u0eb0\u0e96\u0eb4\u0e95\u0eb4
-left_side_of_expression=\u0e84\u0ecd\u0eb2\u0ec0\u0eab\u0eb1\u0e99\u0e82\u0ead\u0e87\u0e9d\u0ec8\u0ec8\u0eb2\u0e8d\u0e8a\u0ec9\u0eb2\u0e8d
-equal_to_symbol===
-not_equal_to_symbol=!=
-not_equal_to=!=
-public_access=\u0e97\u0eb8\u0e81\u0e84\u0ebb\u0e99\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0ec0\u0e96\u0eb4\u0e87\u0ec4\u0e94\u0ec9 (\u0ec1\u0e95\u0ec8\u0e95\u0ec9\u0ead\u0e87 login) \u0e81\u0ec8\u0ead\u0e99
-read_only=\u0ead\u0ec8\u0eb2\u0e99\u0ec4\u0e94\u0ec9\u0ea2\u0ec8\u0eb2\u0e87\u0e94\u0ebd\u0ea7
-object_will_created_public=\u0eab\u0ebb\u0ea7\u0e82\u0ecd\u0ec9\u0e99\u0eb5\u0ec9\u0ec1\u0ea1\u0ec8\u0e99\u0e88\u0eb0\u0e96\u0eb7\u0e81\u0eaa\u0ec9\u0eb2\u0e87\u0e94\u0ec9\u0ea7\u0e8d\u0e81\u0eb2\u0e99\u0e81\u0ea7\u0e94\u0ec1\u0e81\u0ec9\u0e88\u0eb2\u0e81\u0eaa\u0eb2\u0e97\u0eb2\u0ea5\u0eb0\u0e99\u0eb0
-afghanistan=\u0ead\u0eb2\u0e9f\u0e81\u0eb2\u0e99\u0eb4\u0eaa\u0e96\u0eb2\u0e99
-burkina_faso=\u0ec0\u0e9a\u0eb5\u0e81\u0eb5\u0e99\u0eb2\u0e9f\u0eb2\u0ec2\u0e8a
-ecowas=ECOWAS
-ghana=Ghana
-guinea_bissau=Guinea Bissau
-haiti=\u0ec4\u0eae\u0e95\u0eb4
-india=\u0ead\u0eb4\u0e99\u0ec0\u0e94\u0e8d
-lesotho=\u0ec0\u0ea5\u0ec2\u0e8a\u0ec2\u0e97
-mali=\u0ea1\u0eb2\u0ea5\u0eb5
-myanmar=\u0e9e\u0eb0\u0ea1\u0ec9\u0eb2
-peru=\u0ec0\u0e9b\u0ea3\u0eb9
-rwanda=\u0ea3\u0eb0\u0ea7\u0eb1\u0e99\u0e94\u0eb2
-zanzibar=\u0e8a\u0eb2\u0e99\u0e8a\u0eb5\u0e9a\u0eb2
-login_password=\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99:
-login_username=\u0e8a\u0eb7\u0ec8\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9:
-new_user_account_name=\u0e8a\u0eb7\u0ec8
-new_user_account_first_name=\u0e97\u0eb3\u0ead\u0eb4\u0e94
-go_back=\u0e81\u0eb1\u0e9a\u0e84\u0eb7\u0e99
-dhis-web-dataentry-national=\u0e9a\u0ec8\u0ead\u0e99\u0e9b\u0ec9\u0ead\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e82\u0ead\u0e87\u0ec1\u0e95\u0ec8\u0ea5\u0eb0\u0e84\u0ebb\u0e99
-dataelement=\u0ead\u0ebb\u0e87\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-month.march=\u0ea1\u0eb5\u0e99\u0eb2
-java_vendor=\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a Java
-please_do_not_enter_same_values=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0ea2\u0ec8\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ea1\u0eb9\u0e99\u0e84\u0ec8\u0eb2\u0ec0\u0e94\u0eb5\u0ea1
-dhis-web-maintenance-datadictionary=\u0ead\u0ebb\u0e87\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 \u0ec1\u0ea5\u0eb0 \u0e95\u0ebb\u0ea7\u0e8a\u0eb5\u0ec9\u0ea7\u0eb1\u0e94
-dhis-web-maintenance-organisationunit=\u0eab\u0ebb\u0ea7\u0edc\u0ec8\u0ea7\u0e8d\u0e81\u0eb2\u0e99\u0e88\u0eb1\u0e94\u0e95\u0eb1\u0ec9\u0e87
-dhis-web-maintenance-appmanager=\u0e81\u0eb2\u0e99\u0e9a\u0ecd\u0ea5\u0eb4\u0eab\u0eb2\u0e99\u0eab\u0ebb\u0ea7\u0edc\u0ec8\u0ea7\u0e8d\u0e81\u0eb2\u0e99\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9
-ok=\u0e95\u0ebb\u0e81\u0ea5\u0ebb\u0e87
-format.OnChange.startDate=\u0e9b\u0eb5-\u0ec0\u0e94\u0eb7\u0ead\u0e99-\u0ea1\u0eb7\u0ec9 '- '
-ireport_description=\u0e81\u0eb2\u0e99\u0ead\u0ead\u0e81\u0ec1\u0e9a\u0e9a\u0e9a\u0ebb\u0e94\u0ea5\u0eb2\u0e8d\u0e87\u0eb2\u0e99\u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99\u0ea1\u0eb2\u0e94\u0e95\u0eb0\u0e96\u0eb2\u0e99\u0e9a\u0ebb\u0e94\u0ea5\u0eb2\u0e8d\u0e87\u0eb2\u0e99
-db_language=\u0e9e\u0eb2\u0eaa\u0eb2\u0e82\u0ead\u0e87\u0e96\u0eb2\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-please_enter_a_different_value_to_above=Please enter a different value to above.
-move_up=\u0e8d\u0ec9\u0eb2\u0e8d\u0e82\u0eb6\u0ec9\u0e99
-greater_than_or_equal_to=>=
-intro_dhis-web-light=Access a mobile device optimized version of data entry and analysis.
-format.FinancialJuly.startDate=dd MMM yyyy 'to '
-dhis2=DHIS2
-FinancialJuly=\u0e87\u0ebb\u0e9a\u0e9b\u0eb0\u0ea1\u0eb2\u0e99\u0eaa\u0ebb\u0e81\u0e9b\u0eb5-\u0ec0\u0e94\u0eb7\u0ead\u0e99\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94
-format.SixMonthly.startDate=\u0ec0\u0e94\u0eb7\u0ead\u0e99 '\u0ec0\u0e96\u0eb4\u0e87 '
-translation_label_title=\u0eab\u0ebb\u0ea7\u0e82\u0ecd\u0ec9
-os_architecture=\u0e82\u0eb0\u0edc\u0eb2\u0e94\u0e82\u0ead\u0e87\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a
-release_page=\u0edc\u0ec9\u0eb2\u0e99\u0eb5\u0ec9\u0ec1\u0ea1\u0ec8\u0e99\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ec0\u0e9a\u0eb5\u0ec8\u0e87\u0ec3\u0e94\u0ec9 online
-please_enter_description=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0e81\u0eb2\u0e99\u0e9e\u0eb1\u0e99\u0ea5\u0eb0\u0e99\u0eb2\u0ec3\u0eaa\u0ec8
-delete_confirm=\u0e97\u0ec8\u0eb2\u0e99\u0e95\u0ec9\u0ead\u0e87\u0e81\u0eb2\u0e99\u0e88\u0eb0\u0ea5\u0eb7\u0e9a\u0e96\u0eb5\u0ec9\u0ea1\u0e9a\u0ecd\u0ec8?
-no_page_specified=\u0e9a\u0ecd\u0ec8\u0ec4\u0e94\u0ec9\u0ea5\u0eb0\u0e9a\u0eb8\u0edc\u0ec9\u0eb2
-exception_explanation_text=\u0e82\u0ecd\u0ead\u0eb0\u0ec4\u0e9e \u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0ea1\u0eb5\u0e81\u0eb2\u0e99\u0e82\u0eb1\u0e94\u0e82\u0ec9\u0ead\u0e87. \u0e9b\u0ebb\u0e81\u0eb0\u0e95\u0eb4\u0ec1\u0ea5\u0ec9\u0ea7 \u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e9a\u0ecd\u0ec8\u0ea1\u0eb5 \u0ec1\u0e95\u0ec8\u0e97\u0ec8\u0eb2\u0e99\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0eaa\u0eb7\u0e9a\u0e95\u0ecd\u0ec8\u0e9b\u0eb0\u0e95\u0eb4\u0e9a\u0eb1\u0e94\u0e87\u0eb2\u0e99 \u0ec2\u0e94\u0e8d\u0e95\u0ec9\u0ead\u0e87\u0e81\u0eb1\u0e9a\u0e84\u0eb7\u0e99\u0ec4\u0e9b\u0e99\u0edc\u0ec9\u0eb2\u0e97\u0eb5\u0ec8\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2
-unknown_source=\u0e9a\u0ecd\u0ec8\u0eae\u0eb9\u0ec9\u0ec1\u0eab\u0ec8\u0ea5\u0e87\u0e97\u0eb5\u0ec8\u0ea1\u0eb2
-logged_in=\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0eaa\u0eb9\u0ec8\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a
-access_denied_message=\u0e97\u0ec8\u0eb2\u0e99\u0e9a\u0ecd\u0ec8\u0ea1\u0eb5\u0eaa\u0eb4\u0e94\u0e97\u0eb5\u0ec8\u0e88\u0eb0\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0ec0\u0e9a\u0eb5\u0ec8\u0e87\u0edc\u0ec9\u0eb2\u0e99\u0eb5\u0ec9
-create_access_denied_message=\u0e97\u0ec8\u0eb2\u0e99\u0e9a\u0ecd\u0ec8\u0ead\u0eb2\u0e99\u0eb8\u0e8d\u0eb2\u0e94\u0ec3\u0eab\u0ec9\u0e94\u0eb1\u0e94\u0ec1\u0e9b\u0e87
-update_access_denied_message=\u0e97\u0ec8\u0eb2\u0e99\u0e9a\u0ecd\u0ec8\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0e9b\u0ec8\u0ebd\u0e99\u0ec1\u0e9b\u0e87\u0eab\u0ebb\u0ea7\u0e82\u0ecd\u0ec9\u0e99\u0eb5\u0ec9
-main_menu=\u0ec0\u0ea1\u0e99\u0e8d\u0eb9\u0eab\u0ea5\u0eb1\u0e81
-services=\u0e9a\u0ecd\u0ea5\u0eb4\u0e81\u0eb2\u0e99
-dhis-web-maintenance-dataset=\u0e8a\u0eb8\u0e94\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-dhis-web-maintenance-dataadmin=\u0e9c\u0eb9\u0ec9\u0e9a\u0ecd\u0ea5\u0eb4\u0eab\u0eb2\u0e99\u0e88\u0eb1\u0e94\u0e81\u0eb2\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-dhis-web-caseentry=\u0e81\u0eb2\u0e99\u0e9a\u0eb1\u0e99\u0e97\u0eb6\u0e81\u0eaa\u0ec8\u0ea7\u0e99\u0e95\u0ebb\u0ea7
-dhis-web-validationrule=\u0e84\u0eb8\u0e99\u0e99\u0eb0\u0e9e\u0eb2\u0e9a\u0e82\u0ead\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-dhis-web-mapping=GIS
-dhis-web-dashboard=\u0e9c\u0eb9\u0ec9\u0ea7\u0eb4\u0ec4\u0e88\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-dhis-web-spreadsheet-reporting=\u0e9a\u0ebb\u0e94\u0ea5\u0eb2\u0e8d\u0e87\u0eb2\u0e99\u0ec1\u0e9a\u0e9a\u0e95\u0eb2\u0e95\u0eb0\u0ea5\u0eb2\u0e87
-dhis-web-sms=SMS
-dhis-web-maintenance-in=\u0e81\u0eb2\u0e99\u0e81\u0eb3\u0e99\u0ebb\u0e94\u0e84\u0ec8\u0eb2
-intro_dhis-web-maintenance-dataset=\u0ec0\u0e81\u0eb1\u0e9a\u0eae\u0eb1\u0e81\u0eaa\u0eb2\u0e8a\u0eb8\u0e94\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99, \u0e94\u0eb1\u0e94\u0e9b\u0eb1\u0e9a\u0ec1\u0e9a\u0e9a\u0e9f\u0ead\u0ea1, \u0ead\u0ebb\u0e87\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e82\u0ead\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 \u0eaa\u0ec8\u0ea7\u0e99 \u0ec1\u0ea5\u0eb0 \u0e9e\u0eb2\u0e81\u0e9a\u0eb1\u0e87\u0e84\u0eb1\u0e9a
-intro_dhis-web-maintenance-settings=\u0eae\u0eb1\u0e81\u0eaa\u0eb2\u0e9c\u0eb9\u0ec9\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9 \u0ec1\u0ea5\u0eb0 \u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0e81\u0eb2\u0e99\u0e95\u0eb1\u0ec9\u0e87\u0e84\u0ec8\u0eb2\u0e97\u0eb5\u0ec8\u0e81\u0ec8\u0ebd\u0ea7\u0e82\u0ec9\u0ead\u0e87 \u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0e84\u0eb8\u0e99\u0ea5\u0eb1\u0e81\u0eaa\u0eb0\u0e99\u0eb0\u0ea1 \u0e81\u0eb2\u0e99\u0ec1\u0e88\u0ec9\u0e87\u0e81\u0eb2\u0e99 \u0ec1\u0ea5\u0eb0 \u0ead\u0eb7\u0ec8\u0e99\u0ec6\u0ead\u0eb5\u0e81
-intro_dhis-web-maintenance-patient=\u0eae\u0eb1\u0e81\u0eaa\u0eb2\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e9c\u0eb9\u0ec9\u0e97\u0eb5\u0ec8\u0ec4\u0e94\u0ec9\u0eae\u0eb1\u0e9a\u0e9c\u0ebb\u0e99\u0e9b\u0eb0\u0ec2\u0eab\u0e8d\u0e94 \u0ec1\u0ea5\u0eb0 \u0ec1\u0e9c\u0e99\u0e87\u0eb2\u0e99 \u0ea5\u0ea7\u0ea1\u0e97\u0eb1\u0e87 \u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0eaa\u0eb0\u0ec0\u0e9e\u0eb2\u0eb0\u0ead\u0eb7\u0ec8\u0e99\u0ec6\u0ead\u0eb5\u0e81
-intro_dhis-web-validationrule=\u0e81\u0eb2\u0e99\u0ea2\u0eb1\u0ec9\u0e87\u0ea2\u0eb7\u0e99 \u0ec1\u0ea5\u0eb0 \u0e81\u0eb2\u0e99\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0ec0\u0e96\u0eb4\u0e87\u0e84\u0eb8\u0e99\u0e99\u0eb0\u0e9e\u0eb2\u0e9a\u0e82\u0ead\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec2\u0e94\u0e8d\u0e99\u0ecd\u0eb2\u0ec3\u0e8a\u0ec9\u0ea1\u0eb2\u0e94\u0e95\u0eb0\u0e96\u0eb2\u0e99 \u0ec1\u0ea5\u0eb0 \u0eab\u0ea5\u0eb1\u0e81\u0e81\u0eb2\u0e99
-intro_dhis-web-reporting=\u0e81\u0eb2\u0e99\u0ea7\u0eb4\u0ec4\u0e88\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 \u0ec1\u0ea5\u0eb0 \u0ead\u0eb1\u0e94\u0e95\u0eb2\u0e81\u0eb2\u0e99\u0ea5\u0eb2\u0e8d\u0e87\u0eb2\u0e99 \u0ec2\u0e94\u0e8d\u0e99\u0ecd\u0eb2\u0ec3\u0e8a\u0ec9 \u0e81\u0eb2\u0e99\u0e81\u0ecd\u0eb2\u0e99\u0ebb\u0e94\u0e81\u0ec8\u0ead\u0e99\u0ea5\u0ec8\u0ea7\u0e87\u0edc\u0ec9\u0eb2 \u0ec1\u0ea5\u0eb0 \u0ec0\u0e84\u0eb7\u0ec8\u0ead\u0e87\u0ea1\u0eb7\u0e81\u0eb2\u0e99\u0ea5\u0eb2\u0e8d\u0e87\u0eb2\u0e99
-intro_dhis-web-pivot=\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0eaa\u0ec9\u0eb2\u0e87\u0e95\u0eb2\u0e95\u0eb0\u0ea5\u0eb2\u0e87\u0ec4\u0e94\u0ec9\u0e95\u0eb2\u0ea1\u0ec3\u0e88\u0e81\u0eb1\u0e9a\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e97\u0eb5\u0ec8\u0eaa\u0eb1\u0e87\u0ea5\u0ea7\u0ea1 \u0ec3\u0e94\u0ec9\u0ec3\u0e99\u0eab\u0ea5\u0eb2\u0e8d\u0eae\u0eb9\u0e9a\u0ec1\u0e9a\u0e9a
-intro_dhis-web-sms=\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0eaa\u0ebb\u0ec8\u0e87 \u0e82\u0ecd\u0ec9\u0e84\u0ea7\u0eb2\u0ea1 SMS \u0ec0\u0e95\u0eb7\u0ec8\u0ead\u0e99 \u0ec1\u0ea5\u0eb0 \u0ec1\u0e88\u0ec9\u0e87\u0e81\u0eb2\u0e99\u0e95\u0ec8\u0eb2\u0e87\u0ec4\u0e94\u0ec9\u0e84\u0eb7\u0e81\u0eb1\u0e9a\u0ec2\u0e97\u0ea5\u0eb0\u0eaa\u0eb1\u0e9a \u0eab\u0eb7\u0ebc \u0e9b\u0eb0\u0e95\u0eb4\u0e97\u0eb4\u0e99\u0ec1\u0e88\u0ec9\u0e87\u0e81\u0eb4\u0e94\u0e88\u0eb0\u0e81\u0ecd\u0eb2\u0e95\u0ec8\u0eb2\u0e87\u0ec6\u0ec4\u0e94\u0ec9
-intro_web_api=\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0ec4\u0e9b\u0ec0\u0e9a\u0eb5\u0ec8\u0e87\u0ec3\u0e99 Web API \u0e9a\u0ec8\u0ead\u0e99\u0e97\u0eb5\u0ec8\u0e95\u0eb7\u0ec8\u0ea1\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 \u0e97\u0eb5\u0ec8\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ec1\u0ea5\u0e81\u0e9b\u0ec8\u0ebd\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e81\u0eb1\u0e9a\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0e84\u0ead\u0ea1\u0e9e\u0eb5\u0ea7\u0ec0\u0e95\u0eb5\u0ead\u0eb7\u0ec8\u0e99\u0ec6
-intro_about_dhis2=\u0ec0\u0ead\u0ebb\u0eb2\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e81\u0ec8\u0ebd\u0ea7\u0e81\u0eb1\u0e9a\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0e99\u0eb5\u0ec9 \u0ec1\u0ea5\u0eb0 \u0e9a\u0eb1\u0e99\u0e96\u0eb2\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ead\u0eb7\u0ec8\u0e99\u0ec6\u0e82\u0ead\u0e87\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a
-intro_account=\u0e9a\u0ecd\u0ea5\u0eb4\u0eab\u0eb2\u0e99 \u0e9a\u0eb1\u0e99\u0e8a\u0eb5\u0e82\u0ead\u0e87\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9 \u0ec0\u0e8a\u0eb5\u0ec8\u0e87\u0ea5\u0ea7\u0ea1\u0ea1\u0eb5 \u0e8a\u0eb7\u0ec8, \u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99, \u0e97\u0eb5\u0ec8\u0ea2\u0eb9\u0ec8 \u0ead\u0eb5\u0ec1\u0ea1\u0ea7 \u0ec1\u0ea5\u0eb0 \u0ec0\u0e9a\u0eb5\u0ec2\u0e97 \u0ec2\u0ea1\u0e9a\u0eb2\u0e8d
-offline=\u0e9a\u0ecd\u0ec8\u0ea1\u0eb5\u0e81\u0eb2\u0e99\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0ea1\u0e95\u0ecd\u0ec8
-online=\u0ea1\u0eb5\u0e81\u0eb2\u0e99\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0ea1\u0e95\u0ecd\u0ec8
-online_notification=\u0e97\u0ec8\u0eb2\u0e99\u0ea2\u0eb9\u0ec8\u0ec3\u0e99\u0e81\u0eb2\u0e99\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0ea1\u0e95\u0ecd\u0ec8\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0ead\u0eb4\u0e99\u0ec0\u0e95\u0eb5\u0ec1\u0e99\u0e94
-sync_now=\u0e81\u0eb2\u0e99\u0eaa\u0ebb\u0ec8\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ead\u0ead\u0e81\u0eaa\u0eb9\u0ec8\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a
-sync_failed=\u0e81\u0eb2\u0e99\u0eaa\u0ebb\u0ec8\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec4\u0e9b\u0eab\u0eb2\u0e96\u0eb2\u0e99\u0ec0\u0e81\u0eb1\u0e9a\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e9a\u0ecd\u0ec8\u0ec4\u0e94\u0ec9, \u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e9e\u0eb0\u0e8d\u0eb2\u0e8d\u0eb2\u0ea1\u0ead\u0eb5\u0e81\u0ec0\u0e97\u0eb7\u0ec8\u0ead\u0ec3\u0edd\u0ec8
-year=\u0e9b\u0eb5
-hide_details=\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0e87\u0ea5\u0eb2\u0e8d\u0ea5\u0eb0\u0ead\u0ebd\u0e94
-change_password=\u0e9b\u0ec8\u0ebd\u0e99\u0ec1\u0e9b\u0e87\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99
-show_menu=\u0eaa\u0eb0\u0ec1\u0e94\u0e87\u0ec3\u0eab\u0ec9\u0ec0\u0eab\u0eb1\u0e99\u0ec0\u0ea1\u0e99\u0e8d\u0eb9
-show_main_menu=\u0eaa\u0eb0\u0ec1\u0e94\u0e87\u0ec3\u0eab\u0ec9\u0ec0\u0eab\u0eb1\u0e99\u0ec0\u0ea1\u0e99\u0e8d\u0eb9\u0eab\u0ea5\u0eb1\u0e81
-view_home_page=\u0e81\u0eb1\u0e9a\u0e84\u0eb7\u0e99\u0ea1\u0eb2\u0eab\u0eb2\u0edc\u0ec9\u0eb2\u0e97\u0ecd\u0eb2\u0ead\u0eb4\u0e94
-view_intepretations=\u0ec0\u0e9a\u0eb5\u0ec8\u0e87\u0e81\u0eb2\u0e99\u0ec1\u0e9b
-add_new=\u0ec0\u0e9e\u0eb5\u0ec9\u0ea1\u0ec3\u0eaa\u0ec8\u0ec3\u0edd\u0ec8
-remove=\u0ec0\u0ead\u0ebb\u0eb2\u0ead\u0ead\u0e81
-edit=\u0ec1\u0e81\u0ec9\u0ec4\u0e82
-close=\u0e9b\u0eb4\u0e94
-gender_female=~\u0ec0\u0e9e\u0e94\u0e8d\u0eb4\u0e87
-gender_other=\u0ead\u0eb7\u0ec8\u0e99\u0ec6
-mobile_phone=\u0ec2\u0e97\u0ea5\u0eb0\u0eaa\u0eb1\u0e9a\u0ea1\u0eb7\u0e96\u0eb7
-restore_account=\u0eae\u0ec9\u0ead\u0e87\u0e84\u0eb7\u0e99\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9a\u0eb1\u0e99\u0e8a\u0eb5
-account_recovery=\u0e9b\u0ebb\u0ea7\u0ec1\u0e9b\u0e87\u0e84\u0eb7\u0e99\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9a\u0eb1\u0e99\u0e8a\u0eb5
-recover=\u0e81\u0eb2\u0e99\u0e81\u0eb9\u0ec9\u0e84\u0eb7\u0e99
-code_from_email=\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e88\u0eb2\u0e81 email
-password_hint=\u0ea2\u0ec8\u0eb2\u0e87\u0e95\u0ecd\u0ec8\u0eb2\u0ec3\u0eab\u0ec9\u0ea1\u0eb5 8 \u0e95\u0ebb\u0ea7\u0edc\u0eb1\u0e87\u0eaa\u0eb7, \u0ec3\u0e99\u0e99\u0eb1\u0e99 \u0ea1\u0eb5\u0ec2\u0e95\u0e99\u0eb7\u0ec8\u0e87\u0ec0\u0e9b\u0eb1\u0e99\u0ec2\u0e95\u0e9e\u0eb4\u0ea1\u0ec3\u0eab\u0e8d\u0ec8 \u0ec1\u0ea5\u0eb0 \u0ea1\u0eb5\u0ec2\u0e95\u0ec0\u0ea5\u0e81 1\u200b \u0ec2\u0e95
-object_not_deleted_associated_by_objects=\u0e9a\u0ecd\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ea5\u0eb7\u0e9a\u0e9f\u0eb2\u0e8d\u0e99\u0eb5\u0ec9\u0ec4\u0e94\u0ec9\u0ec0\u0e9e\u0eb2\u0eb0\u0e8d\u0eb1\u0e87\u0ec0\u0e9b\u0eb5\u0e94\u0ec3\u0e8a\u0ec9\u0ea2\u0eb9\u0ec8
-Weekly=\u0ec0\u0e9b\u0eb1\u0e99\u0ead\u0eb2\u0e97\u0eb4\u0e94
-BiMonthly=\u0e97\u0eb8\u0e81\u0ec6\u0eaa\u0ead\u0e87\u0ec0\u0e94\u0eb7\u0ead\u0e99
-Quarterly=\u0ec1\u0e95\u0ec8\u0ea5\u0eb0\u0ec4\u0e95\u0ebc\u0ea1\u0eb2\u0e94
-Relative=\u0ec4\u0e81\u0ec9\u0e84\u0ebd\u0e87
-FinancialApril=\u0e87\u0ebb\u0e9a\u0e9b\u0eb0\u0ea1\u0eb2\u0e99\u0e81\u0eb2\u0e99\u0ec0\u0e87\u0eb4\u0e99-\u0ec0\u0e94\u0eb7\u0ead\u0e99\u0ec0\u0ea1\u0eaa\u0eb2
-format.Daily.endDate=
-format.TwoYearly.startDate=yyyy 'and '
-month.april=\u0ec0\u0ea1\u0eaa\u0eb2
-month.may=\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2
-month.november=\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2
-month.december=\u0e97\u0eb1\u0e99\u0ea7\u0eb2
-month.short.march=\u0ea1\u0eb5\u0e99\u0eb2
-month.short.june=\u0ea1\u0eb5\u0e96\u0eb8\u0e99\u0eb2
-month.short.november=\u0e9e\u0eb0\u0e88\u0eb4\u0e81
-month.short.december=\u0ec0\u0e94\u0eb7\u0ead\u0e99\u0e97\u0eb1\u0e99\u0ea7\u0eb2
-weekday.friday=\u0ea7\u0eb1\u0e99\u0eaa\u0eb8\u0e81
-weekday.saturday=\u0ea7\u0eb1\u0e99\u0ec0\u0eaa\u0ebb\u0eb2
-weekday.short.monday=\u0ea7\u0eb1\u0e99\u0e88\u0eb1\u0e99
-weekday.short.thursday=\u0ea7\u0eb1\u0e99\u0e9e\u0eb0\u0eab\u0eb1\u0e94
-weekday.short.friday=\u0ea7\u0eb1\u0e99\u0eaa\u0eb8\u0e81
-weekday.short.sunday=\u0ea7\u0eb1\u0e99\u0ead\u0eb2\u0e97\u0eb4\u0e94
-translation_addlocale=\u0e95\u0eb7\u0ec8\u0ea1\u0e97\u0eb5\u0ec8\u0e95\u0eb1\u0ec9\u0e87
-translation_select_ref=\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0eaa\u0eb7\u0ec8\u0e87\u0ead\u0ec9\u0eb2\u0e87\u0ead\u0eb5\u0e87
-translation_label_shortName=\u0e8a\u0eb7\u0ec8\u0eaa\u0eb1\u0ec9\u0e99
-translation_variant=\u0eab\u0ea5\u0eb2\u0e8d\u0ec1\u0e9a\u0e9a
-translation_countrycode=\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9b\u0eb0\u0ec0\u0e97\u0e94
-translation_country_must_be_two_chars=\u0e9b\u0eb0\u0ec0\u0e97\u0e94\u0e88\u0eb0\u0e95\u0ec9\u0ead\u0e87\u0ea1\u0eb5\u0eaa\u0ead\u0e87\u0e95\u0ebb\u0ea7\u0ead\u0eb1\u0e81\u0eaa\u0ead\u0e99
-translation_variant_must_be_specified=\u0eae\u0eb9\u0e9a\u0ec1\u0e9a\u0e9a\u0e95\u0ec8\u0eb2\u0e87\u0ec6\u0e88\u0eb0\u0e95\u0ec9\u0ead\u0e87\u0ec4\u0e94\u0ec9\u0e81\u0ecd\u0eb2\u0e99\u0ebb\u0e94
-translation_duplicated_name_with=\u0e82\u0ecd\u0ead\u0eb0\u0ec4\u0e9e \u0e8a\u0eb7\u0ec8\u0e82\u0ead\u0e87\u0e97\u0ec8\u0eb2\u0e99\u0e97\u0eb5\u0ec8\u0e95\u0eb7\u0ec8\u0ea1\u0ec3\u0eaa\u0ec8\u0e8a\u0ecd\u0ec9\u0eb2\u0e8a\u0ec9\u0ead\u0e99\u0e81\u0eb1\u0e9a\u0e8a\u0eb7\u0ec8
-build_date=\u0ea7\u0eb1\u0e99\u0eaa\u0ec9\u0eb2\u0e87
-external_configuration_directory=\u0ec2\u0e84\u0e87\u0eaa\u0ec9\u0eb2\u0e87\u0e82\u0ead\u0e87\u0eae\u0eb9\u0e9a\u0ec1\u0e9a\u0e9a\u0e9e\u0eb2\u0e8d\u0e99\u0ead\u0e81
-database_user=\u0e96\u0eb2\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e82\u0ead\u0e87\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9
-current_user=\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9\u0e9b\u0eb0\u0e88\u0eb8\u0e9a\u0eb1\u0e99
-system_status=\u0eaa\u0eb0\u0e9e\u0eb2\u0e9a\u0e82\u0ead\u0e87\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a
-about_dhis2=\u0e81\u0ec8\u0ebd\u0ea7\u0e81\u0eb1\u0e9a DHIS 2
-last_name=\u0e99\u0eb2\u0ea1\u0eaa\u0eb0\u0e81\u0eb8\u0e99
-unknown=\u0e9a\u0ecd\u0ec8\u0eae\u0eb9\u0ec9
-os_name=\u0e8a\u0eb7\u0ec8\u0e82\u0ead\u0e87\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0e9a\u0ecd\u0ea5\u0eb4\u0eab\u0eb2\u0e99\u0e88\u0eb1\u0e94\u0e81\u0eb2\u0e99
-chrome_description=web browser \u0e97\u0eb5\u0ec8\u0ea1\u0eb5\u0e84\u0ea7\u0eb2\u0ea1\u0ec4\u0ea7\u0eaa\u0eb9\u0e87
-web_browser=\u0eae\u0e87\u0e81\u0ec0\u0e9a\u0eb4\u0ec8\u0e87\u0e96\u0eb2\u0e99\u0ec0\u0e9a\u0eb4\u0ec8\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e97\u0eb5\u0ec8\u0ea1\u0eb5\u0e84\u0ea7\u0eb2\u0ea1\u0ec4\u0ea7\u0e8d\u0eb9\u0e87
-online_release_page=\u0edc\u0ec9\u0eb2\u0e97\u0eb5\u0ec8\u0eaa\u0ebb\u0ec8\u0e87\u0ead\u0ead\u0e81\u0ec4\u0e99\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0ead\u0eb4\u0e99\u0ec0\u0e95\u0eb5\u0ec1\u0e99\u0e94
-edit_profile=\u0e94\u0eb1\u0e94\u0ec1\u0e81\u0ec9 \u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-view_profile=\u0ec0\u0e9a\u0eb5\u0ec8\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-job_title=\u0e95\u0eb3\u0ec1\u0edc\u0ec8\u0e87
-introduction=\u0ec1\u0e99\u0eb0\u0e99\u0eb3
-employer=\u0e9c\u0eb9\u0ec9\u0e88\u0ec9\u0eb2\u0e87\u0e87\u0eb2\u0e99
-interests=\u0e9c\u0ebb\u0e99\u0e81\u0ecd\u0eb2\u0ec4\u0ea5
-settings=\u0e81\u0eb2\u0e99\u0e95\u0eb1\u0ec9\u0e87\u0e84\u0ec8\u0eb2
-user_settings=\u0e81\u0eb2\u0e99\u0e95\u0eb1\u0ec9\u0e87\u0e84\u0ec8\u0eb2\u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0e9c\u0eb9\u0ec9\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9
-message=\u0e82\u0ecd\u0ec9\u0e84\u0ea7\u0eb2\u0ea1
-language=\u0e9e\u0eb2\u0eaa\u0eb2\u0e97\u0eb5\u0ec8\u0ec4\u0e8a\u0ec9\u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0ec3\u0e8a\u0ec9\u0eaa\u0ebb\u0e99\u0e97\u0eb0\u0e99\u0eb2\u0ec1\u0ea5\u0e81\u0e9b\u0ec8\u0ebd\u0e99
-use_db_locale_no_translation=\u0ec3\u0e8a\u0ec9\u0e96\u0eb2\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec3\u0e99\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0e82\u0ead\u0e87\u0ea1\u0eb1\u0e99 \u0e9a\u0ecd\u0ec8\u0ea1\u0eb5\u0e81\u0eb2\u0e99\u0ec1\u0e9b
-messages=\u0e82\u0ecd\u0ec9\u0e84\u0ea7\u0eb2\u0ea1
-server_memory=\u0e96\u0eb2\u0e99\u0e84\u0ea7\u0eb2\u0ea1\u0e88\u0ecd\u0eb2
-please_select=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0ec0\u0ea5\u0eb7\u0ead\u0e81
-release=\u0ec0\u0ea5\u0eb7\u0ead\u0e81
-false=No
-text=\u0e82\u0ecd\u0ec9\u0e84\u0ea7\u0eb2\u0ea1
-number=\u0e88\u0eb3\u0e99\u0ea7\u0e99
-retype_new_password=\u0e9e\u0eb4\u0ea1\u0e84\u0eb7\u0e99\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99
-email=\u0ead\u0eb5\u0ec0\u0ea1\u0ea5
-user_roles=\u0edc\u0ec9\u0eb2\u0e97\u0eb5\u0ec8\u0e82\u0ead\u0e87\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9
-update_user_success=\u0e9a\u0eb1\u0e99\u0e8a\u0eb5\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9\u0e9a\u0ecd\u0ec8\u0ec4\u0e94\u0ec9\u0e9b\u0eb1\u0e9a\u0e9b\u0eb8\u0e87\u0ec0\u0e97\u0eb7\u0ec8\u0ead
-please_wait_while_the_system_is_processing=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0ea5\u0ecd\u0e96\u0ec9\u0eb2\u0e81\u0ecd\u0eb2\u0ea5\u0eb1\u0e87\u0e94\u0ecd\u0eb2\u0ec0\u0e99\u0eb5\u0e99\u0e81\u0eb2\u0e99
-contact_details=\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0e81\u0eb2\u0e99\u0e95\u0eb4\u0e94\u0e95\u0ecd\u0ec8\u0e9e\u0ebb\u0ea7\u0e9e\u0eb1\u0e99
-please_enter_a_valid_date_iso=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ea7\u0eb1\u0e99\u0e97\u0eb5\u0ec8\u0ec3\u0eab\u0ec9\u0e96\u0eb7\u0e81\u0e95\u0ec9\u0ead\u0e87 (\u0e95\u0ebb\u0ea7\u0ea2\u0ec8\u0eb2\u0e87: 1990-01-01)
-please_enter_a_valid_digits=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ec3\u0eaa\u0ec8\u0ec1\u0e95\u0ec8\u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81
-please_enter_a_value_with_a_valid_expression=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ea1\u0eb9\u0e99\u0e84\u0ec8\u0eb2\u0e94\u0ec9\u0ea7\u0e8d\u0e81\u0eb2\u0e99\u0e82\u0eb0\u0eab\u0e8d\u0eb2\u0e8d
-first_character_must_be_alphabetical=\u0e95\u0ebb\u0ea7\u0e97\u0ecd\u0eb2\u0ead\u0eb4\u0e94\u0e88\u0eb0\u0e95\u0ec9\u0ead\u0e87\u0ec1\u0ea1\u0ec8\u0e99\u0e95\u0ebb\u0ea7\u0edc\u0eb1\u0e87\u0eaa\u0eb7
-please_enter_no_more_than_n_character=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ec3\u0eaa\u0ec8\u0e9a\u0ecd\u0ec8\u0ec3\u0eab\u0ec8\u0ec9\u0e81\u0eb2\u0e8d (0) \u0e95\u0ebb\u0ea7
-please_enter_a_value_between_n_character=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ea1\u0eb9\u0e99\u0e84\u0ec8\u0eb2\u0ec3\u0eaa\u0ec8 \u0ea5\u0eb0\u0eab\u0ea7\u0ec8\u0eb2\u0e87 (0) \u0ec1\u0ea5\u0eb0 (1) \u0ec0\u0e9b\u0eb1\u0e99\u0e95\u0ebb\u0ea7\u0edc\u0eb1\u0e87\u0eaa\u0eb7\u0e8d\u0eb2\u0ea7
-please_enter_a_value_less_than_or_equal_to_n=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ea1\u0eb9\u0e99\u0e84\u0ec8\u0eb2\u0ec3\u0eaa\u0ec8 \u0e95\u0ecd\u0ec8\u0eb2\u0e81\u0ea7\u0ec8\u0eb2\u0eab\u0ea5\u0eb7 \u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0e81\u0eb1\u0e9a (0)
-letters_or_punctuation_only_please=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ec3\u0eaa\u0ec8\u0ec1\u0e95\u0ec8\u0ec2\u0e95\u0edc\u0eb1\u0e87\u0eaa\u0eb7 \u0eab\u0ea5\u0eb7 \u0e88\u0ecd\u0ec9\u0eb2, \u0e88\u0eb8\u0e94 \u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0e99\u0eb1\u0ec9\u0e99
-please_enter_at_least_n_words=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ec3\u0eaa\u0ec8\u0ea2\u0ec8\u0eb2\u0e87\u0e95\u0ecd\u0ec8\u0eb2 (0) \u0e84\u0ecd\u0eb2
-available=\u0eab\u0eb2\u0ec4\u0e94\u0ec9
-select_in_group=\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0ec0\u0e9b\u0eb1\u0e99\u0e81\u0eb8\u0ec8\u0ea1
-move_selected=\u0e8d\u0ec9\u0eb2\u0e8d\u0e81\u0eb2\u0e99\u0ec0\u0ea5\u0eb7\u0ead\u0e81
-remove_selected=\u0ec0\u0ead\u0ebb\u0eb2\u0ead\u0eb1\u0e99\u0e97\u0eb5\u0ec8\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0ec4\u0ea7\u0ec9\u0e99\u0eb1\u0ec9\u0e99\u0ead\u0ead\u0e81
-move_down=\u0e8d\u0ec9\u0eb2\u0e8d\u0ea5\u0ebb\u0e87
-move_to_bottom=\u0e8d\u0ec9\u0eb2\u0e8d\u0ea5\u0ebb\u0e87\u0ec4\u0e9b\u0ea5\u0eb8\u0ec8\u0ea1
-no_of_pages=\u0e88\u0ecd\u0eb2\u0e99\u0ea7\u0e99\u0e82\u0ead\u0e87\u0edc\u0ec9\u0eb2\u0ec0\u0e88\u0ebb\u0ec9\u0eb1\u0ec9\u0ebd
-filter=\u0e95\u0ebb\u0ea7\u0e81\u0ead\u0e87
-clear=\u0e88\u0eb0\u0ec1\u0e88\u0ec9\u0e87\u0edd\u0ebb\u0e94\u0ec1\u0ea5\u0ec9\u0ea7
-find=\u0e8a\u0ead\u0e81\u0eab\u0eb2
-name=\u0e8a\u0eb7\u0ec8
-target=\u0ec0\u0e9b\u0ebb\u0ec9\u0eb2\u0edd\u0eb2\u0e8d
-data_sets=\u0e8a\u0eb8\u0e94\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-data_element_concepts=\u0ec1\u0e99\u0ea7\u0e84\u0ea7\u0eb2\u0ea1\u0e84\u0eb4\u0e94\u0e82\u0ead\u0e87\u0ead\u0ebb\u0e87\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-organisation_units=\u0eab\u0ebb\u0ea7\u0edc\u0ec8\u0ea7\u0e8d\u0e81\u0eb2\u0e99\u0e88\u0eb1\u0e94\u0e95\u0eb1\u0ec9\u0e87
-validation_rules=\u0eab\u0ea5\u0eb1\u0e81\u0e81\u0eb2\u0e99\u0e81\u0eb2\u0e99\u0ea2\u0eb1\u0ec9\u0e87\u0ea2\u0eb7\u0e99
-indicator_type=\u0e9b\u0eb0\u0ec0\u0e9e\u0e94\u0e95\u0ebb\u0ea7\u0e8a\u0eb5\u0ec9\u0ea7\u0eb1\u0e94
-aggregation_operator=\u0e81\u0eb2\u0e99\u0e9b\u0eb0\u0e95\u0eb4\u0e9a\u0eb1\u0e94\u0e87\u0eb2\u0e99\u0e81\u0eb2\u0e99\u0eaa\u0eb1\u0e87\u0ea5\u0ea7\u0ea1
-numerator_formula=\u0eaa\u0eb9\u0e94\u0e82\u0ead\u0e87\u0e95\u0ebb\u0ea7\u0e95\u0eb1\u0ec9\u0e87
-numerator_description=\u0e9e\u0eb1\u0e99\u0ea5\u0eb0\u0e99\u0eb2\u0ec0\u0e96\u0eb4\u0e87\u0e95\u0ebb\u0ea7\u0e95\u0eb1\u0ec9\u0e87
-expression_is_empty=\u0e9a\u0ecd\u0ec8\u0ea1\u0eb5\u0e81\u0eb2\u0e99\u0eaa\u0eb0\u0ec1\u0e94\u0e87\u0ead\u0ead\u0e81
-data_element_does_not_exist=\u0e9a\u0ecd\u0ec8\u0ea1\u0eb5\u0ead\u0ebb\u0e87\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-right_side_description=\u0e81\u0eb2\u0e99\u0e9e\u0eb1\u0e99\u0ea5\u0eb0\u0e99\u0eb2\u0e82\u0ead\u0e87\u0e9d\u0ec8\u0eb2\u0e8d\u0e82\u0ea7\u0eb2
-less_than_or_equal_to_symbol=<=
-greater_than=>
-constants=\u0e84\u0ec8\u0eb2\u0e84\u0ebb\u0e87\u0e97\u0eb5\u0ec8
-external_access=\u0e81\u0eb2\u0e99\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0ec0\u0e96\u0eb4\u0e87\u0e88\u0eb2\u0e81\u0e9e\u0eb2\u0e8d\u0e99\u0ead\u0e81(\u0ec2\u0e94\u0e8d\u0e9a\u0ecd\u0ec8\u0ec4\u0e94\u0ec9 login
-ajax_login_failed=Login \u0e9a\u0ecd\u0ec8\u0ec4\u0e94\u0ec9 \u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2 \u0e81\u0ea7\u0e94\u0e84\u0eb7\u0e99\u0ec0\u0e9a\u0eb7\u0ec8\u0e87\u0e8a\u0eb7\u0ec8\u0e9c\u0eb9\u0ec9\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9 \u0ec1\u0ea5\u0eb0 \u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99 \u0ec1\u0ea5\u0ec9\u0ea7 \u0e9e\u0eb0\u0e8d\u0eb2\u0e8d\u0eb2\u0ea1\u0ead\u0eb5\u0e81\u0ec0\u0e97\u0eb7\u0ec8\u0ead
-no_access=\u0e9a\u0ecd\u0ec8\u0ea1\u0eb5
-search_for_user_groups=\u0e84\u0ebb\u0ec9\u0e99\u0eab\u0eb2\u0e9c\u0eb9\u0ec9\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9\u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99\u0e81\u0eb8\u0ec8\u0ea1
-akros=Akros
-benin=\u0ec0\u0e9a\u0e99\u0eb5\u0e99
-botswana=\u0e9a\u0ead\u0eaa\u0ea7\u0eb2\u0e99\u0eb2
-colombia=\u0ec2\u0e84\u0ea5\u0eb5\u0ea1\u0ec0\u0e9a\u0e8d
-congo_brazzaville=\u0eaa\u0eb2\u0e97\u0eb2\u0ea5\u0eb0\u0e99\u0eb0\u0ea5\u0eb1\u0e94\u0e81\u0ebb\u0e87\u0ec2\u0e81
-east_africa_community=\u0e8a\u0eb8\u0ea1\u0e8a\u0ebb\u0e99\u0ead\u0e9f\u0eae\u0eb4\u0e81\u0e81\u0eb2\u0e95\u0eb2\u0ec0\u0ea7\u0eb1\u0e99\u0ead\u0ead\u0e81\u0e8a\u0ebd\u0e87\u0ec4\u0e95\u0ec9
-ecuador=\u0ec0\u0ead\u0e84\u0ebb\u0ea7\u0e94\u0ecd
-global_fund=\u0e81\u0ead\u0e87\u0e97\u0eb6\u0e99\u0ec2\u0ea5\u0e81
-guinea=Guinea
-irc=\u0e84\u0eb0\u0e99\u0eb0\u0e81\u0ecd\u0eb2\u0ea1\u0eb0\u0e81\u0eb2\u0e99\u0e8a\u0ec8\u0ea7\u0e8d\u0ec1\u0e81\u0ec9\u0ec4\u0e82\u0eaa\u0eb2\u0e81\u0ebb\u0e99
-liberia=\u0ea5\u0eb5\u0ec0\u0e9a\u0eb5\u0ec0\u0ea3\u0e8d
-namibia=\u0e99\u0eb2\u0ea1\u0eb5\u0ec0\u0e9a\u0e8d
-nepal=\u0ec0\u0e99\u0e9b\u0eb2\u0e99
-niger=\u0ec4\u0e99\u0ec0\u0e81\u0eb5
-nigeria=\u0ec4\u0e99\u0e88\u0eb5\u0ec0\u0ea3\u0e8d
-norway=\u0e99\u0ecd\u0ec0\u0ea7
-pepfar=PEPFAR
-philippines=\u0e9f\u0eb5\u0ea5\u0eb4\u0e9a\u0e9b\u0eb4\u0e99
-senegal=Senegal
-sierra_leone=Sierra Leone
-south_africa_department_of_health=South Africa Department of Health
-swaziland=\u0eaa\u0eb0\u0ea7\u0eb2\u0e8a\u0eb5\u0ec1\u0ea5\u0e99
-uganda=\u0ead\u0eb9\u0e81\u0eb2\u0e99\u0e94\u0eb2
-zambia=Zambia
-forgot_password=\u0ea5\u0eb7\u0ea1\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99
-wrong_username_or_password=\u0e97\u0eb1\u0e87\u0e8a\u0eb7\u0ec8\u0e9c\u0eb9\u0ec9\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9 \u0ec1\u0ea5\u0eb0 \u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99\u0e9a\u0ecd\u0ec8\u0e96\u0eb7\u0e81\u0e95\u0ec9\u0ead\u0e87
-recover_success_message=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e81\u0ea7\u0e94\u0e81\u0eb2\u0ec0\u0e9a\u0eb5\u0ec8\u0e87\u0e9a\u0eb1\u0e99\u0e8a\u0eb5\u0e9c\u0eb9\u0ec9\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9 email \u0e97\u0eb5\u0ec8\u0ec4\u0e94\u0ec9\u0ea5\u0ebb\u0e87\u0e97\u0eb0\u0e9a\u0ebd\u0e99\u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0e8a\u0eb7\u0ec8\u0e99\u0eb5\u0ec9. \u0e9e\u0ea7\u0e81\u0ec0\u0eae\u0ebb\u0eb2\u0ec4\u0e94\u0ec9\u0eaa\u0ebb\u0ec8\u0e87\u0e82\u0ecd\u0ec9\u0ec1\u0e99\u0eb0\u0e99\u0ecd\u0eb2\u0e81\u0ec8\u0ebd\u0ea7\u0e81\u0eb1\u0e9a\u0ea7\u0eb4\u0e97\u0eb5\u0eae\u0ebd\u0e81\u0e84\u0eb7\u0e99\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99
-recover_error_message=\u0e82\u0ecd\u0ec2\u0e97\u0e94\u0e9e\u0ea7\u0e81\u0ec0\u0eae\u0ebb\u0eb2\u0e9a\u0ecd\u0ec8\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0eae\u0ebd\u0e81\u0e84\u0eb7\u0e99\u0e9a\u0eb1\u0e99\u0e8a\u0eb5\u0e82\u0ead\u0e87\u0e97\u0ec8\u0eb2\u0e99\u0ec4\u0e94\u0ec9. \u0e8a\u0eb7\u0ec8\u0e82\u0ead\u0e87\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9\u0ead\u0eb2\u0e94\u0e88\u0eb0\u0e9a\u0ecd\u0ec8\u0e96\u0eb7\u0e81\u0e95\u0ec9\u0ead\u0e87, \u0e9a\u0eb1\u0e99\u0e8a\u0eb5\u0e82\u0ead\u0e87\u0e97\u0ec8\u0eb2\u0e99\u0ead\u0eb2\u0e94\u0e88\u0eb0\u0e9a\u0ecd\u0ec8\u0ead\u0eb2\u0e99\u0eb8\u0e8d\u0eb2\u0e94\u0ec3\u0eab\u0ec9\u0eae\u0ebd\u0e81\u0e84\u0eb7\u0e99 \u0eab\u0ea5\u0eb7 \u0e81\u0eb2\u0e99\u0e95\u0eb7\u0ec8\u0ea1 \u0e97\u0eb5\u0ec8\u0ea2\u0eb9\u0ec8 emai \u0e9a\u0ecd\u0ec8\u0e96\u0eb7\u0e81\u0e95\u0eb2\u0ea1\u0e9a\u0eb1\u0e99\u0e8a\u0eb5\u0e82\u0ead\u0e87\u0e97\u0ec8\u0eb2\u0e99
-offline_notification=\u0e97\u0ec8\u0eb2\u0e99\u0e9a\u0ecd\u0ec8\u0ec4\u0e94\u0ec9\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0ea1\u0e95\u0ecd\u0ec8\u0ead\u0eb4\u0e99\u0ec0\u0e95\u0eb5\u0ec1\u0e99\u0e94 \u0eaa\u0eb0\u0e99\u0eb1\u0ec9\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec1\u0ea1\u0ec8\u0e99\u0ec4\u0e94\u0ec9\u0eae\u0eb1\u0e81\u0eaa\u0eb2\u0ec3\u0ea7\u0ec9\u0ea2\u0eb9\u0ec8\u0e84\u0ead\u0ea1\u0e9e\u0eb5\u0ea7\u0ec0\u0e95\u0eb5\u0edc\u0ec8\u0ea7\u0e99\u0e99\u0eb5\u0ec9
-format.OnChange.endDate=\u0e9b\u0eb5-\u0ec0\u0e94\u0eb7\u0ead\u0e99-\u0ea1\u0eb7\u0ec9
-translation_translate=\u0ec1\u0e9b
-light_blue=\u0eaa\u0eb5\u0e9f\u0ec9\u0eb2\u0ead\u0ec8\u0ead\u0e99
-yes=\u0ec1\u0ea1\u0ec8\u0e99
-dhis-web-maintenance-mobile=\u0e81\u0eb2\u0e99\u0e81\u0ecd\u0eb2\u0e99\u0ebb\u0e94\u0e84\u0ec8\u0eb2\u0ec0\u0e84\u0eb7\u0ec8\u0ead\u0e99\u0e97\u0eb5\u0ec8
-true=Yes
-district_health_information_software=\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e82\u0ec8\u0eb2\u0ea7\u0eaa\u0eb2\u0e99\u0eaa\u0eb2\u0e97\u0eb2\u0ea5\u0eb0\u0e99\u0eb0\u0eaa\u0eb8\u0e81\u0ec0\u0ea1\u0eb7\u0ead\u0e87 2
-rename=\u0e9b\u0ec8\u0ebd\u0e99\u0e8a\u0eb7\u0ec8
-format.Weekly.endDate=
-enable_message_sms_notifications=\u0e82\u0ecd\u0ec9\u0e84\u0ea7\u0eb2\u0ea1 \u0ec1\u0ea1\u0ec8\u0e99\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0eaa\u0ebb\u0ec8\u0e87\u0e9c\u0ec8\u0eb2\u0e99 SMS \u0ec4\u0e94\u0ec9
-please_letters_numbers_spaces_or_some_special_chars_only=Only letters, numbers, spaces and the characters
-.,-,(,)=\u0ec1\u0ea1\u0ec8\u0e99\u0ead\u0eb2\u0e99\u0eb8\u0e8d\u0eb2\u0e94\u0ec3\u0eab\u0ec9
-error=\u0e9c\u0eb4\u0e94\u0e9e\u0eb2\u0e94
-locate_by_code=\u0ec3\u0eaa\u0ec8\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0ec2\u0e84\u0e94\u0ec3\u0ea7\u0ec9
-annualized=\u0ec0\u0e9b\u0eb1\u0e99\u0ec1\u0e95\u0ec8\u0ea5\u0eb0\u0e9b\u0eb5
-kenya=\u0ec0\u0e84\u0e99\u0ea2\u0eb2
-timor_leste=\u0e95\u0eb5\u0ea1\u0ecd\u0ec0\u0ea5\u0eb1\u0e94\u0eaa\u0eb0\u0ec0\u0e95
-move=\u0e8d\u0ec9\u0eb2\u0e8d
-format.Quarterly.endDate=MMM yyyy
-user_general_settings=\u0e81\u0eb2\u0e99\u0e95\u0eb1\u0ec9\u0e87\u0e84\u0ec8\u0eb2\u0ec2\u0e94\u0e8d\u0e97\u0ebb\u0ec8\u0ea7\u0ec4\u0e9b\u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0e9c\u0eb9\u0ec9\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9
-period_type=\u0e9b\u0eb0\u0ec0\u0e9e\u0e94\u0e82\u0ead\u0e87\u0ec4\u0ea5\u0e8d\u0eb0\u0ec0\u0ea7\u0ea5\u0eb2
-less_than=\u0edc\u0ec9\u0ead\u0e8d\u0e81\u0ea7\u0ec8\u0eb2
-an_exception_occured=\u0ec0\u0e81\u0eb5\u0e94\u0e82\u0eb7\u0ec9\u0e99\u0ec2\u0e94\u0e8d\u0e9a\u0eb1\u0e87\u0ec0\u0ead\u0eb5\u0e99
-caused_by=\u0e94\u0ec9\u0ea7\u0e8d\u0ec0\u0eab\u0e94
-about=\u0e81\u0ec8\u0ebd\u0ea7\u0e81\u0eb1\u0e9a
-access_denied=\u0e81\u0eb2\u0e99\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0eaa\u0eb9\u0ec8\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0e96\u0eb7\u0e81\u0e9b\u0eb0\u0e95\u0eb4\u0ec0\u0eaa\u0e94
-read_access_denied_message=\u0e97\u0ec8\u0eb2\u0e99\u0e9a\u0ecd\u0ec8\u0ea1\u0eb5\u0eaa\u0eb4\u0e94\u0e97\u0eb5\u0ec8\u0e88\u0eb0\u0ead\u0ec8\u0eb2\u0e99\u0eab\u0ebb\u0ea7\u0e82\u0ecd\u0ec9\u0e99\u0eb5\u0ec9
-maintenance=\u0e81\u0eb2\u0e99\u0e9a\u0ebb\u0ea7\u0ea5\u0eb0\u0e9a\u0eb1\u0e94\u0eae\u0eb1\u0e81\u0eaa\u0eb2
-specify_organisationunit=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e81\u0ecd\u0eb2\u0e99\u0ebb\u0e94\u0eab\u0ebb\u0ea7\u0edc\u0ec8\u0ea7\u0e8d\u0e81\u0eb2\u0e99\u0e88\u0eb1\u0e94\u0e95\u0eb1\u0ec9\u0e87\u0e9b\u0eb0\u0e95\u0eb4\u0e9a\u0eb1\u0e94
-cannot_clear_selected_orgunits=\u0e9a\u0ecd\u0ec8\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ea5\u0eb7\u0e9a\u0eab\u0ebb\u0ea7\u0edc\u0ec8\u0ea7\u0e8d\u0e81\u0eb2\u0e99\u0e88\u0eb1\u0e94\u0e95\u0eb1\u0ec9\u0e87
-dhis-web-dataentry=\u0e81\u0eb2\u0e99\u0e9b\u0ec9\u0ead\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-dhis-web-reporting=\u0ea5\u0eb2\u0e8d\u200b\u0e87\u0eb2\u0e99\u200b
-dhis-web-visualizer=\u0e81\u0eb2\u0e99\u0eaa\u0ec9\u0eb2\u0e87\u0eae\u0eb9\u0e9a\u0e9e\u0eb2\u0e9a\u0e88\u0eb2\u0e81\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-dhis-web-pivot=\u0e95\u0eb2\u0e95\u0eb0\u0ea5\u0eb2\u0e87\u0eaa\u0eb0\u0ec1\u0e94\u0e87\u0e9c\u0ebb\u0e99
-dhis-web-reports=\u0e9a\u0ebb\u0e94\u0ea5\u0eb2\u0e8d\u0e87\u0eb2\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-intro_dhis-web-maintenance-datadictionary=\u0eae\u0eb1\u0e81\u0eaa\u0eb2\u0ead\u0ebb\u0e87\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e82\u0ead\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99, \u0e94\u0eb1\u0e94\u0eaa\u0eb0\u0e99\u0eb5\u0edd\u0eb2\u0e8d, \u0ea7\u0eb1\u0e94\u0e88\u0eb0\u0e99\u0eb2\u0e99\u0eb8\u0e81\u0ebb\u0ea1\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99, \u0e9b\u0eb0\u0ec0\u0e9e\u0e94 \u0ec1\u0ea5\u0eb0 \u0e81\u0eb8\u0ec8\u0ea1
-intro_dhis-web-maintenance-dataadmin=\u0e95\u0eb2\u0e95\u0eb0\u0ea5\u0eb2\u0e87\u0eab\u0ea5\u0eb1\u0e81\u0e82\u0ead\u0e87\u0ec1\u0eab\u0ea5\u0ec8\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99, \u0e81\u0ea7\u0e94\u0e81\u0eb2\u0e84\u0ea7\u0eb2\u0ea1\u0edc\u0ec9\u0eb2\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0e96\u0eb7\u0e82\u0ead\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99, \u0ec0\u0e9a\u0eb5\u0ec8\u0e87 \u0eaa\u0eb0\u0e96\u0eb4\u0e95\u0eb4 \u0ec1\u0ea5\u0eb0 \u0ead\u0eb7\u0ec8\u0e99\u0ec6\u0ead\u0eb5\u0e81
-intro_dhis-web-maintenance-mobile=\u0eae\u0eb1\u0e81\u0eaa\u0eb2\u0e8a\u0eb8\u0e94\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 \u0ea5\u0ea7\u0ea1\u0e97\u0eb1\u0e87\u0e81\u0eb2\u0e99\u0e95\u0eb1\u0ec9\u0e87\u0e84\u0ec8\u0eb2 \u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0e81\u0eb2\u0e99\u0ea5\u0eb2\u0e8d\u0e87\u0eb2\u0e99\u0ec1\u0e9a\u0e9a\u0ec0\u0e84\u0eb7\u0ec8\u0ead\u0e99\u0e97\u0eb5\u0ec8 \u0ec1\u0ea5\u0eb0 \u0ec1\u0e9a\u0e9a SMS
-intro_dhis-web-importexport=\u0e81\u0eb2\u0e99\u0ec2\u0ead\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec0\u0e82\u0ebb\u0ec9\u0eb2 \u0ec1\u0ea5\u0eb0 \u0ead\u0ead\u0e81\u0e88\u0eb2\u0e81 DHIS \u0eab\u0ea5\u0eb7 \u0e9e\u0eb2\u0e81\u0eaa\u0ec8\u0ea7\u0e99\u0ead\u0eb7\u0ec8\u0e99 \u0ead\u0eb5\u0e87\u0e95\u0eb2\u0ea1\u0eae\u0eb9\u0e9a\u0ec1\u0e9a\u0e9a\u0e95\u0ec8\u0eb2\u0e87\u0ec6
-intro_dhis-web-visualizer=\u0eaa\u0ec9\u0eb2\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec3\u0eab\u0ec9\u0ec0\u0e9b\u0eb1\u0e99\u0eae\u0eb9\u0e9a\u0e9e\u0eb2\u0e8d \u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0ead\u0ebb\u0e87\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 \u0ec1\u0ea5\u0eb0 \u0e94\u0eb1\u0e94\u0eaa\u0eb0\u0e99\u0eb5\u0edd\u0eb2\u0e8d
-intro_dhis-web-spreadsheet-reporting=\u0eaa\u0ec9\u0eb2\u0e87 \u0ec1\u0ea5\u0eb0 \u0e99\u0ecd\u0eb2\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0e96\u0eb2\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e9a\u0ebb\u0e99\u0e9e\u0eb7\u0ec9\u0e99\u0e96\u0eb2\u0e99\u0e81\u0eb2\u0e99\u0e81\u0ecd\u0eb2\u0e99\u0ebb\u0e94\u0e81\u0ec8\u0ead\u0e99 \u0e95\u0eb2\u0e95\u0eb0\u0ea5\u0eb2\u0e87 Excel
-intro_supportive_software=\u0e97\u0ec8\u0eb2\u0e99\u0e88\u0eb0\u0ec0\u0eab\u0eb1\u0e99\u0e9e\u0eb2\u0e9a\u0ea5\u0ea7\u0ea1\u0e81\u0ec8\u0ebd\u0ea7\u0e81\u0eb1\u0e9a\u0e9c\u0ebb\u0e99\u0e9b\u0eb0\u0ec2\u0eab\u0e8d\u0e94\u0e82\u0ead\u0e87 software \u0e99\u0eb5\u0ec9 \u0ec0\u0e8a\u0eb1\u0ec8\u0e99\u0e97\u0ec8\u0eb2\u0e99\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ead\u0ead\u0e81\u0ec1\u0e9a\u0e9a\u0e9a\u0ebb\u0e94\u0ea5\u0eb2\u0e8d\u0e87\u0eb2\u0e99\u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0e9b\u0eb0\u0e8a\u0eb2\u0e81\u0ead\u0e99\u0ec0\u0e84\u0eb7\u0ec8\u0ead\u0e99\u0e97\u0eb5\u0ec8
-intro_system_overview=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e81\u0eb1\u0e9a\u0ec4\u0e9b\u0ec0\u0e9a\u0eb5\u0ec8\u0e87\u0edc\u0ec9\u0eb2\u0e9e\u0eb2\u0e9a\u0ea5\u0ea7\u0ea1\u0e82\u0ead\u0e87\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a \u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0e88\u0eb0 \u0eaa\u0eb2\u0ea1\u0eb2\u0e94 \u0eaa\u0ecd\u0eb2\u0ec0\u0ea5\u0eb1\u0e94\u0e97\u0eb8\u0e81 \u0ec2\u0ea1\u0e94\u0eb9\u0e99
-intro_settings=\u0e95\u0eb1\u0ec9\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0eaa\u0ec8\u0ea7\u0e99\u0e95\u0ebb\u0ea7 \u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0eaa\u0eb0\u0e94\u0ea7\u0e81\u0ec3\u0e99\u0e81\u0eb2\u0e99\u0eaa\u0ebb\u0e99\u0e97\u0eb0\u0e99\u0eb2 \u0ec1\u0ea5\u0eb0\u0e9b\u0ec8\u0ebd\u0e99, \u0eae\u0eb9\u0e9a\u0ec1\u0e9a\u0e9a \u0ec1\u0ea5\u0eb0 \u0e81\u0eb2\u0e99\u0e95\u0eb1\u0ec9\u0e87\u0e84\u0ec8\u0eb2 \u0ead\u0eb5\u0ec1\u0ea1\u0ea7\u0e95\u0ec8\u0eb2\u0e87\u0ec6
-intro_log_out=\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0e9a\u0ec8\u0ead\u0e99\u0e99\u0eb5\u0ec9 \u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0ead\u0ead\u0e81\u0e88\u0eb2\u0e81 \u0ea5\u0eb0\u0e9a\u0ebb\u0e9a \u0ec1\u0ea5\u0eb0 \u0ea2\u0eb8\u0e94\u0e81\u0eb2\u0e99\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0eaa\u0eb9\u0ec8\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0e9a\u0eb1\u0e99\u0e8a\u0eb5\u0e82\u0ead\u0e87\u0e9c\u0eb9\u0ec9\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2\u0ec3\u0e8a\u0ec9
-previous=\u0e81\u0ec8\u0ead\u0e99\u0edc\u0ec9\u0eb2\u0e99\u0eb5\u0ec9
-need_to_sync_notification=\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec4\u0e94\u0ec9\u0e9a\u0eb1\u0e99\u0e97\u0eb6\u0e81\u0ec4\u0ea7\u0ec9\u0ea2\u0eb9\u0ec8\u0ec3\u0e99\u0e84\u0ead\u0ea1\u0e9e\u0eb5\u0ea7\u0ec0\u0e95\u0eb5, \u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2 \u0ead\u0eb1\u0e9a\u0ec2\u0ea5\u0e94\u0ea1\u0eb2\u0ec3\u0eaa\u0ec8 server
-show_details=\u0ec0\u0e9a\u0eb5\u0ec8\u0e87\u0ea5\u0eb2\u0e8d\u0ea5\u0eb0\u0ead\u0ebd\u0e94
-date_selector=\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0ea7\u0eb1\u0e99\u0e97\u0eb5\u0ec8
-hide_menu=\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0e87 \u0ec0\u0ea1\u0e99\u0e8d\u0eb9
-entry=\u0e9b\u0ec9\u0ead\u0e99\u0ec0\u0e82\u0ebb\u0ec9\u0eb2
-comment=\u0e84\u0eb3\u0ec0\u0eab\u0eb1\u0e99
-save=\u0e9a\u0eb1\u0e99\u0e97\u0eb6\u0e81
-new=\u0eaa\u0ec9\u0eb2\u0e87\u0ec3\u0eab\u0ea1\u0ec8
-back=\u0e81\u0eb1\u0e9a\u0e84\u0eb7\u0e99
-cancel=Cancel
-add=Add
-password=\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99
-create=Create
-restore=\u0e81\u0eb9\u0ec9\u0e84\u0eb7\u0e99
-optional=\u0e97\u0eb2\u0e87\u0ec0\u0ea5\u0eb7\u0ead\u0e81
-Daily=\u0e97\u0eb8\u0e81\u0ec6\u0ea1\u0eb7\u0ec9
-SixMonthly=\u0ec1\u0e95\u0ec8\u0ea5\u0eb0 6 \u0ec0\u0e94\u0eb7\u0ead\u0e99
-format.Daily.startDate=\u0e9b\u0eb5-\u0ec0\u0e94\u0eb7\u0ead\u0e99-\u0ea1\u0eb7\u0ec9
-format.Yearly.startDate=\u0e9b\u0eb5
-format.Relative.endDate=yyyy-MM-dd
-format.FinancialApril.endDate=\u0ea1\u0eb7\u0ec9-\u0ec0\u0e94\u0eb7\u0ead\u0e99-\u0e9b\u0eb5
-format.FinancialOct.endDate=yyyy
-month.june=\u0ea1\u0eb5\u0e96\u0eb8\u0e99\u0eb2
-month.october=\u0ec0\u0e94\u0eb7\u0ead\u0e99\u0e95\u0eb8\u0ea5\u0eb2
-month.short.february=\u0e81\u0eb8\u0ea1\u0e9e\u0eb2
-month.short.april=\u0ec0\u0ea1\u0eaa\u0eb2
-month.short.july=\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94
-month.short.september=Sep
-month.short.october=Oct
-weekday.monday=\u0ea7\u0eb1\u0e99\u0e88\u0eb1\u0e99
-weekday.thursday=\u0ea7\u0eb1\u0e99\u0e9e\u0eb0\u0eab\u0eb1\u0e94
-weekday.sunday=\u0ea7\u0eb1\u0e99\u0ead\u0eb2\u0e97\u0eb4\u0e94
-weekday.short.wednesday=\u0ea7\u0eb1\u0e99\u0e9e\u0eb8\u0e94
-translation_details=\u0ea5\u0eb2\u0e8d\u0ea5\u0eb0\u0ead\u0ebd\u0e94
-translation_save=~\u0e9a\u0eb1\u0e99\u0e97\u0eb6\u0e81
-translation_label_region=\u0e9e\u0eb2\u0e81
-translation_locale_added=\u0e95\u0eb7\u0ec8\u0ea1\u0e97\u0eb5\u0ec8\u0e95\u0eb1\u0ec9\u0e87
-translation_reference=\u0e81\u0eb2\u0e99\u0ead\u0ec9\u0eb2\u0e87\u0ead\u0eb4\u0e87
-translation_duplicated_shortname_with=\u0e82\u0ecd\u0ead\u0eb2\u0ec4\u0e9e\u0e8a\u0eb7\u0ec8\u0eaa\u0eb1\u0ec9\u0e99\u0e82\u0ead\u0e87\u0e97\u0ec8\u0eb2\u0e99\u0e8a\u0ecd\u0ec9\u0eb2\u0e8a\u0ec9\u0ead\u0e99\u0e81\u0eb1\u0e9a
-user_agent=\u0ead\u0ebb\u0e87\u0e81\u0ead\u0e99\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9
-database_type=\u0e9b\u0eb0\u0ec0\u0e9e\u0e94\u0e82\u0ead\u0e87\u0e96\u0eb2\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-database_name=\u0e8a\u0eb7\u0ec8\u0e96\u0eb2\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-dhis2_online=\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0ea1\u0e95\u0ecd\u0ec8\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a DHIS 2
-error_message_stack_trace=\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e9a\u0ecd\u0ec8\u0e96\u0eb7\u0e81
-help=\u0e8a\u0ec8\u0ea7\u0e8d
-status=\u0eaa\u0eb0\u0e96\u0eb2\u0e99\u0eb0\u0e9e\u0eb2\u0e9a
-java_opts=\u0e96\u0eb2\u0e99 Java \u0e8a\u0ebb\u0ec8\u0eaa\u0e84\u0eb2\u0ea7
-java_tmp_dir=\u0e96\u0eb2\u0e99 Java \u0e8a\u0ebb\u0ec8\u0ea7\u0e84\u0eb2\u0ea7
-my_datamart=MyDatamart
-mobile_client=Mobile client
-mobile_client_description=Client for data capture on mobile devices
-system_overview=\u0e9e\u0eb2\u0e9a\u0ea5\u0ea7\u0ea1\u0e82\u0ead\u0e87\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a
-server_date=\u0ea7\u0eb1\u0e99\u0e97\u0eb5\u0e95\u0ebb\u0ea7\u0e9a\u0ecd\u0ea5\u0eb4\u0e81\u0eb2\u0e99
-profile_details=\u0ea5\u0eb2\u0e8d\u0ea5\u0eb0\u0ead\u0ebd\u0e94\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-nationality=Nationality
-update_user_profile_success=\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec4\u0e94\u0ec9\u0e9b\u0eb1\u0e9a\u0e9b\u0eb8\u0e87\u0ec1\u0ea5\u0ec9\u0ea7
-property_to_display_in_analysis_modules=\u0eaa\u0eb7\u0ec8\u0e87\u0e97\u0eb5\u0ec8\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0e99\u0ecd\u0eb2\u0eaa\u0eb0\u0ec0\u0edc\u0eb5 \u0ec3\u0e99\u0ec2\u0ea1\u0e94\u0eb9\u0e99\u0e82\u0ead\u0e87\u0e81\u0eb2\u0e99\u0ea7\u0eb4\u0ec4\u0e88
-enable_message_email_notifications=Enable message email notifications
-intro_user_message_settings=Customize the system with user specific settings for message email and sms notification.
-dashboard=\u0e95\u0eb2\u0edc\u0ec8\u0eb2\u0e87\u0eaa\u0eb1\u0e87\u0ea5\u0ea7\u0ea1\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e82\u0ec8\u0eb2\u0ea7\u0eaa\u0eb2\u0e99
-interpretations=\u0e81\u0eb2\u0e99\u0ec1\u0e9b
-cpu_cores=CPU cores
-yes_only=\u0ea1\u0eb5\u0ec1\u0e95\u0ec8\u0e96\u0eb7\u0e81\u0e95\u0ec9\u0ead\u0e87
-user_name=~\u0e8a\u0eb7\u0ec8\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9
-old_password=\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99~\u0ec0\u0e81\u0ebb\u0ec8\u0eb2
-new_password=\u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99\u0ec3\u0edd\u0ec8
-surname=\u0e99\u0eb2\u0ea1\u0eaa\u0eb0\u0e81\u0eb8\u0e99
-first_name=\u0e8a\u0eb7\u0ec8\u0ec1\u0e97\u0ec9
-username=\u0e8a\u0eb7\u0ec8\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9\u0e87\u0eb2\u0e99
-phone_number=\u0ec0\u0e9a\u0eb5\u0ec2\u0e97\u0ec2\u0ea1\u0e9a\u0eb2\u0e8d
-help_intro_text=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0ec0\u0ead\u0ebb\u0eb2\u0ea5\u0eb2\u0e8d\u0e81\u0eb2\u0e99\u0e95\u0ec8\u0eb2\u0e87\u0ec6\u0e88\u0eb2\u0e81 menu \u0ec4\u0e9b\u0e97\u0eb2\u0e87\u0e8a\u0ec9\u0eb2\u0e8d
-contact_person=\u0e9c\u0eb9\u0ec9\u0e9b\u0eb0\u0eaa\u0eb2\u0e99\u0e87\u0eb2\u0e99
-this_field_is_required=\u0ea2\u0eb9\u0ec8\u0e9a\u0ec8\u0ead\u0e99\u0e99\u0eb5\u0ec9\u0e95\u0ec9\u0ead\u0e87\u0ec4\u0e94\u0ec9\u0e95\u0eb7\u0ec8\u0ea1\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec3\u0eaa\u0ec8
-please_enter_a_valid_email_address=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2 \u0e95\u0eb7\u0ec8\u0ea1 \u0ec1\u0ea5\u0eb0 \u0ea2\u0eb1\u0ec9\u0e87\u0ea2\u0eb7\u0e99\u0e97\u0eb5\u0ec8\u0ea2\u0eb9\u0ec8 \u0ead\u0eb5\u0ec1\u0ea1\u0ea7 \u0e82\u0ead\u0e87\u0e97\u0ec8\u0eb2\u0e99
-please_enter_a_valid_date=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ec3\u0eaa\u0ec8 \u0ec1\u0ea5\u0eb0 \u0ea2\u0eb1\u0ec9\u0e87\u0ea2\u0eb7\u0e99\u0ea7\u0eb1\u0e99\u0e97\u0eb5
-digits_decimal_only_please=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ec1\u0e95\u0ec8\u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81. 3 \u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81 \u0e81\u0ead\u0ec8\u0e99\u0ec0\u0e84\u0eb7\u0ec8\u0ead\u0e87\u0edd\u0eb2\u0e8d\u0e88\u0ecd\u0ec9\u0eb2\u0e88\u0eb8\u0e94 \u0ec1\u0ea5\u0eb0 2 \u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81 \u0eab\u0ea5\u0eb1\u0e87\u0e88\u0ecd\u0ec9\u0eb2\u0e88\u0eb8\u0e94 \u0ec1\u0ea1\u0ec8\u0e99\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ec0\u0eae\u0eb1\u0e94\u0ec4\u0e94\u0ec9
-please_enter_betwwen_a_and_b_words=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ec3\u0eaa\u0ec8 \u0ea5\u0eb0\u0eab\u0ea7\u0ec8\u0eb2\u0e87\u0e84\u0ecd\u0eb2 {0} \u0ec1\u0ea5\u0eb0 {1}
-letters_only_please=\u0ea1\u0eb5\u0ec1\u0e95\u0ec8\u0e95\u0ebb\u0ea7\u0edc\u0eb1\u0e87\u0eaa\u0eb7\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0e99\u0eb1\u0ec9\u0e99
-please_enter_valid_phone_number=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e82\u0ebd\u0e99\u0ec2\u0e9a\u0ec2\u0e97\u0ea5\u0eb0\u0eaa\u0eb1\u0e9a\u0e97\u0eb5\u0ec8\u0eaa\u0eb2\u0ea1\u0e94\u0ec3\u0e8a\u0ec9\u0ec4\u0e94\u0ec9
-please_fill_out_at_least_one_of_these_fields=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ec3\u0eaa\u0ec8 \u0ea2\u0ec8\u0eb2\u0e87\u0e95\u0ecd\u0ec8\u0eb2 \u0e99\u0eb7\u0ec8\u0e87\u0ec3\u0e99\u0e9a\u0eb1\u0e99\u0e94\u0eb2 \u0e82\u0eb0\u0ec1\u0edc\u0e87\u0ea7\u0eb4\u0e8a\u0eb2\u0e95\u0ec8\u0eb2\u0e87\u0ec6
-please_select_at_least_one_option_for_these_fields=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0ea2\u0ec8\u0eb2\u0e87\u0e95\u0ecd\u0ec8\u0eb2 \u0e99\u0eb7\u0ec8\u0e87\u0e97\u0eb2\u0e87\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0e9a\u0eb1\u0e99\u0e94\u0eb2\u0e82\u0eb0\u0ec1\u0edc\u0e87\u0ea7\u0eb4\u0e8a\u0eb2\u0e95\u0ec8\u0eb2\u0e87\u0ec6
-please_unicode_chars_only=\u0ead\u0eb2\u0e99\u0eb8\u0e9a\u0eb2\u0e94\u0ec3\u0eab\u0ec9\u0ec3\u0eaa\u0ec8\u0ec4\u0e94\u0ec9\u0ec1\u0e95\u0ec8 \u0e95\u0ebb\u0ea7\u0edc\u0eb1\u0e87\u0eaa\u0eb7\u0e97\u0eb5\u0ec8\u0ea1\u0eb5 \u0ea2\u0eb9\u0e99\u0eb5 \u0ec2\u0e84\u0e94
-please_enter_valid_number=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81\u0e97\u0eb5\u0ec8\u0e96\u0eb7\u0e81\u0e95\u0ec9\u0ead\u0e87\u0ec3\u0eaa\u0ec8
-please_enter_valid_positive_integer=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0e95\u0ebb\u0ea7\u0ec0\u0ea5\u0e81\u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99\u0e9c\u0ebb\u0e99\u0ea5\u0ebb\u0e9a
-please_enter_name=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0e8a\u0eb7\u0ec8\u0ec3\u0eaa\u0ec8
-please_select_indicator=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0e95\u0ebb\u0ea7\u0e8a\u0eb5\u0ec9\u0ea7\u0eb1\u0e94
-success=\u0eaa\u0eb3\u0ec0\u0ea5\u0eb1\u0e94
-select_all=\u0ec0\u0ea5\u0eb7\u0ead\u200b\u0e81\u0e97\u0eb1\u0e87\u0edd\u0ebb\u0e94
-unselect_in_group=\u0e9a\u0ecd\u0ec8\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0ec0\u0e9b\u0eb1\u0e99\u0e81\u0eb8\u0ec8\u0ea1
-remove_all=\u0ea5\u0eb7\u0e9a\u0e96\u0eb5\u0ec9\u0ea1\u0edd\u0ebb\u0e94
-move_to_top=Move to top
-jump_to_page=Jump to page
-filter_by_name=Filter by name
-get_pdf=Get PDF
-no_item_to_export=There is no item to export
-short_name=Short name
-alternative_name=\u0e97\u0eb2\u0e87\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0e8a\u0eb7\u0ec8\u0ead\u0eb7\u0ec8\u0e99\u0ec6
-value_type=\u0e9b\u0eb0\u0ec0\u0e9e\u0e94\u0e82\u0ead\u0e87\u0ea1\u0eb9\u0e99\u0e84\u0ec8\u0eb2
-data_dictionary=\u0ea7\u0eb1\u0e94\u0e88\u0eb0\u0e99\u0eb2\u0e99\u0eb8\u0e81\u0ebb\u0ea1\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-indicators=\u0e94\u0eb1\u0e94\u0eaa\u0eb0\u0e99\u0eb5\u0edd\u0eb2\u0e8d
-data_element_groups=\u0ead\u0ebb\u0e87\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99\u0e81\u0eb8\u0ec8\u0ea1
-organisation_unit_hierarchy=\u0e82\u0eb1\u0ec9\u0e99\u0e95\u0ec8\u0eb2\u0e87\u0ec6\u0e82\u0ead\u0e87\u0eab\u0ebb\u0ea7\u0edc\u0ec8\u0ea7\u0e8d\u0e81\u0eb2\u0e99\u0e88\u0eb1\u0e94\u0e95\u0eb1\u0ec9\u0e87
-expression=\u0e81\u0eb2\u0e99\u0eaa\u0eb0\u0ec1\u0e94\u0e87\u0ead\u0ead\u0e81
-right_expression=\u0e81\u0eb2\u0e99\u0eaa\u0eb0\u0ec1\u0e94\u0e87\u0ead\u0ead\u0e81\u0e97\u0eb5\u0ec8\u0e96\u0eb7\u0e81\u0e95\u0ec9\u0ead\u0e87
-numerator=\u0e95\u0ebb\u0ea7\u0e95\u0eb1\u0ec9\u0e87
-denominator=\u0e95\u0ebb\u0ea7\u0eab\u0eb2\u0e99
-denominator_formula=\u0eaa\u0eb9\u0e94\u0e82\u0ead\u0e87\u0e95\u0ebb\u0ea7\u0eab\u0eb2\u0e99
-denominator_aggregation_operator=\u0e81\u0eb2\u0e99\u0e9b\u0eb0\u0e95\u0eb4\u0e9a\u0eb1\u0e94\u0e81\u0eb2\u0e99\u0eaa\u0eb1\u0e87\u0ea5\u0ea7\u0ea1\u0e95\u0ebb\u0ea7\u0eab\u0eb2\u0e99
-category_option_combo_does_not_exist=\u0e97\u0eb2\u0e87\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0eaa\u0ec8\u0ea7\u0e99\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e9a\u0ecd\u0ec8\u0ea1\u0eb5\u0ec4\u0e99\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a
-left_side_description=\u0e81\u0eb2\u0e99\u0e9e\u0eb1\u0e99\u0ea5\u0eb0\u0e99\u0eb2\u0e97\u0eb2\u0e87\u0e8a\u0ec9\u0eb2\u0e8d\u0ea1\u0eb7
-right_side_of_expression=Right side of Expression
-operator=Operator
-greater_than_symbol=>
-greater_than_or_equal_to_symbol=>=
-less_than_symbol=<
-less_than_or_equal_to=<=
-constant=Constant
-multiple_choice=Multiple Choice
-user_group_access=\u0e81\u0eb2\u0e99\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0ec0\u0e96\u0eb4\u0e87\u0e81\u0eb8\u0ec8\u0ea1\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9
-group_name=\u0e8a\u0eb7\u0ec8\u0e81\u0eb8\u0ec8\u0ea1
-sharing_settings=\u0e95\u0eb4\u0e94\u0e95\u0eb1\u0ec9\u0e87\u0e81\u0eb2\u0e99\u0e81\u0eb0\u0e88\u0eb2\u0e8d\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99
-read_write=\u0ead\u0ec8\u0eb2\u0e99 \u0ec1\u0ea5\u0eb0 \u0e82\u0ebd\u0e99
-can_edit_and_view=\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0e94\u0eb1\u0e94\u0ec1\u0e81\u0ec9\u0ec4\u0e94\u0ec9 \u0ec1\u0ea5\u0eb0 \u0ec0\u0e9a\u0eb5\u0ec8\u0e87
-can_view=\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ec0\u0e9a\u0eb5\u0ec8\u0e87\u0ec4\u0e94\u0ec9
-object_will_created_private=This object will be private to yourself
-algeria=Algeria
-armenia=Armenia
-bangladesh=Bangladesh
-bhutan=Bhutan
-burkina_faso_coat_of_arms=Burkina Faso Coat of Arms
-china=China
-congo_kinshasa=Democratic Republic of the Congo
-ethiopia=Ethiopia
-gambia=Gambia
-indonesia=Indonesia
-ivory_coast=Ivory Coast
-laos=Lao People's Democratic Republic
-mozambique=Mozambique
-nicaragua=Nicaragua
-psi=PSI
-republic_of_trinidad_and_tobago=Republic of Trinidad & Tobago
-sierra_leone_coat_of_arms=Sierra Leone Coat of Arms
-solomon_islands=Solomon Islands
-south_africa=South Africa
-tajikistan=Tajikistan
-togo=Togo
-who=WHO
-zimbabwe=Zimbabwe
-login=Login
-new_user_account_last_name=Last
-uploading_data_notification=Uploading locally stored data to the server
-details=\u0ea5\u0eb2\u0e8d\u0ea5\u0eb0\u0ead\u0ebd\u0e94
-month.january=\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99
-translation_select_locale=[ Select locale ]
-message_to_the_dhis2_development_team=\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0eaa\u0ecd\u0eb2\u0ea5\u0eb1\u0e9a\u0e97\u0eb4\u0ea1\u0e87\u0eb2\u0e99\u0e97\u0eb5\u0ec8\u0e9e\u0eb1\u0e94\u0e97\u0eb0\u0e99\u0eb2 \u0ea5\u0eb0\u0e9a\u0ebb\u0e9a DHIS 2
-intro=Intro
-education=Education
-general=\u0ec2\u0e94\u0e8d\u0e97\u0ebb\u0ec8\u0ea7\u0ec4\u0e9b
-average=\u0eaa\u0eb0\u0ec0\u0ea5\u0ec8\u0e8d
-please_enter_a_value_greater_than_or_equal_to=Please enter a value greater than or equal to {1}
-unselect_at_level=\u0e8d\u0ebb\u0e81\u0ec0\u0ea5\u0eb5\u0e81\u0e81\u0eb2\u0e99\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0ea5\u0eb0\u0e94\u0eb1\u0e9a\u0e82\u0eb1\u0ec9\u0e99
-tanzania=\u0e95\u0eb2\u0e99\u0e8a\u0eb2\u0ec0\u0e99\u0eb1\u0ebd
-intro_dhis-web-maintenance-user=\u0eae\u0eb1\u0e81\u0eaa\u0eb2\u0e9c\u0eb9\u0ec9\u0e8a\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9 \u0ec3\u0e99\u0ec1\u0e87\u0ec8\u0e82\u0ead\u0e87 \u0e81\u0eb2\u0e99\u0ead\u0eb2\u0e99\u0eb8\u0e8d\u0eb2\u0e94 \u0ec1\u0ea5\u0eb0 \u0ea5\u0eb0\u0eab\u0eb1\u0e94\u0e9c\u0ec8\u0eb2\u0e99, \u0edc\u0ec9\u0eb2\u0e97\u0eb5\u0ec8\u0e82\u0ead\u0e87\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9 \u0ec1\u0ea5\u0eb0 \u0ec0\u0e9b\u0eb1\u0e99\u0e81\u0eb8\u0ec8\u0ea1
-update_user=\u0e9b\u0eb1\u0e9a\u0e9b\u0eb8\u0e87\u0e84\u0eb7\u0e99\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9
-only_digits_are_not_allowed=\u0ea1\u0eb5\u0ec1\u0e95\u0ec8\u0ec2\u0e95\u0ec0\u0ea5\u0e81\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0e99\u0eb1\u0ec9\u0e99\u0e97\u0eb5\u0ec8\u0e9a\u0ecd\u0ec8\u0ead\u0eb2\u0e99\u0eb8\u0e8d\u0eb2\u0e94
-select_children=\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0e81\u0eb8\u0ec8\u0ea1\u0ec0\u0e94\u0eb1\u0e81
-format.Weekly.startDate=yyyy 'W' w
-format.Survey.endDate=
-not_set=\u0e9a\u0ecd\u0ec8\u0e97\u0eb1\u0e99\u0ec4\u0e94\u0ec9\u0e95\u0eb1\u0ec9\u0e87
-no=\u0e9a\u0ecd\u0ec8\u0ec1\u0ea1\u0ec8\u0e99
-please_enter_a_valid_number=Please enter a valid number.
-warning=\u0e81\u0eb2\u0e99\u0ec0\u0e95\u0eb7\u0ead\u0e99
-unselect_all=\u0e9a\u0ecd\u0ec8\u0ec0\u0ea5\u0eb7\u0ead\u0e81\u0e97\u0eb1\u0e87\u0edd\u0ebb\u0e94
-closed_date=\u0ea1\u0eb7\u0ec9\u0e9b\u0eb4\u0e94
-vanuatu=Vanuatu
-vietnam=Vietnam
-create_an_account=Create an account
-exception=\u0e8d\u0ebb\u0e81\u0ec0\u0ea7\u0eb1\u0ec9\u0e99
-delete_access_denied_message=\u0e97\u0ec8\u0eb2\u0e99\u0e9a\u0ecd\u0ec8\u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0ea5\u0eb7\u0e9a\u0eab\u0ebb\u0ea7\u0e82\u0ecd\u0ec9\u0e99\u0eb5\u0ec9
-dhis-web-mobile=Mobile (Smartphone)
-dhis-web-validationrule-local-in=\u0e81\u0eb2\u0e99\u0ea2\u0eb1\u0ec9\u0e87\u0ea2\u0eb7\u0e99\u0e81\u0eb2\u0e99\u0ea7\u0eb4\u0ec4\u0e88
-dhis-web-survey=\u0e81\u0eb2\u0e99\u0eaa\u0ecd\u0eb2\u0eab\u0ea5\u0ea7\u0e94-\u0ec0\u0e9b\u0ebb\u0ec9\u0eb2\u0edd\u0eb2\u0e8d
-intro_dhis-web-maintenance-organisationunit=Maintain organisation units and its hierarchy, groups and group sets.
-intro_dhis-web-mapping=\u0e82\u0ea1\u0eb9\u0e99\u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99\u0eae\u0eb9\u0e9a\u0e9e\u0eb2\u0e9a \u0ec1\u0ea5\u0eb0 \u0ec1\u0e9c\u0e99\u0e97\u0eb5\u0ec8 \u0ec2\u0e94\u0e8d\u0e99\u0ecd\u0eb2\u0ec3\u0e8a\u0ec9 \u0ec0\u0e84\u0eb7\u0ec8\u0ead\u0e87\u0edd\u0eb2\u0e8d \u0e97\u0eb5\u0ec8\u0e88\u0eb1\u0e94\u0ea7\u0eb2\u0e87\u0ec0\u0e9b\u0eb1\u0e99\u0eab\u0ea5\u0eb2\u0e8d\u0e8a\u0eb1\u0ec9\u0e99
-intro_profile=\u0e95\u0eb1\u0ec9\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0eaa\u0ec8\u0ea7\u0e99\u0e95\u0ebb\u0ea7\u0e82\u0ead\u0e87\u0e97\u0ec8\u0eb2\u0e99 \u0ec0\u0e8a\u0eb1\u0e99\u0e95\u0ebb\u0ea7\u0ea2\u0ec8\u0eb2\u0e87 \u0edc\u0ec9\u0eb2\u0e97\u0eb5\u0ec8\u0e95\u0ecd\u0eb2\u0ec1\u0edc\u0ec8\u0e87\u0edd \u0e9a\u0ec8\u0ead\u0e99\u0ec0\u0eae\u0eb1\u0e94\u0ea7\u0ebd\u0e81 \u0ec1\u0ea5\u0eb0 \u0ead\u0eb7\u0ec8\u0e99\u0ec6
-required=\u0e95\u0ec9\u0ead\u0e87\u0e81\u0eb2\u0e99
-update=Update
-delete=Delete
-OnChange=On-change
-Survey=Survey
-format.BiMonthly.startDate=MMM 'to '
-format.Quarterly.startDate=MMM 'to '
-month.short.may=\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2
-weekday.tuesday=Tuesday
-translation_label_name=Name
-translation_locale=Locale
-java_version=\u0e95\u0eb2\u0ea1\u0ea5\u0eb0\u0e9a\u0ebb\u0e9a\u0e82\u0ead\u0e87 Java
-report_designer=Report designer
-female=Female
-other=Other
-count=\u0e99\u0eb1\u0e9a
-int=\u0e88\u0eb3\u0e99\u0ea7\u0e99
-yes_no=Yes/No
-bool=Yes/No
-please_enter_a_valid_url=\u0e81\u0eb0\u0ea5\u0eb8\u0e99\u0eb2\u0e95\u0eb7\u0ec8\u0ea1\u0ec3\u0eaa\u0ec8 \u0ec1\u0ea5\u0eb0 \u0ea2\u0eb1\u0ec9\u0e99\u0ea2\u0eb7\u0e99 URL
-please_enter_n_words_or_less=Please enter {0} words or less.
-please_select_period=Please select period!
-move_all=Move all
-rows_in_page=No. of rows per page
-actual=Actual
-percent=Percent
-data_elements=Data elements
-organisation_unit_groups=Organisation unit groups
-users=Users
-expression_not_well_formed=Expression is not well-formed
-equal_to===
-no_constant_to_select=No constants to select
-cambodia=Cambodia
-fhi360=FHI360
-malawi=Malawi
-paraguay=Paraguay
-sri_lanka=Sri Lanka
-powered_by=Powered by
=== modified file 'dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/event-capture.appcache'
--- dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/event-capture.appcache 2014-04-14 06:37:04 +0000
+++ dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/event-capture.appcache 2014-05-12 09:56:39 +0000
@@ -2,9 +2,9 @@
CACHE:
../dhis-web-commons/javascripts/jQuery/jquery.min.js
-../dhis-web-commons/javascripts/jQuery/ui/jquery-ui-1.9.1.custom.min.js
+../dhis-web-commons/javascripts/jQuery/ui/jquery-ui.min.js
../dhis-web-commons/javascripts/jQuery/jquery.tmpl.js
-../dhis-web-commons/javascripts/jQuery/ui/css/redmond/jquery-ui-1.9.1.custom.css
+../dhis-web-commons/javascripts/jQuery/ui/css/redmond/jquery-ui.css
../dhis-web-commons/fonts/LiberationSans-Regular-webfont.eot
=== modified file 'dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/index.html'
--- dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/index.html 2014-04-20 16:30:35 +0000
+++ dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/index.html 2014-05-12 09:56:39 +0000
@@ -8,9 +8,9 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../dhis-web-commons/javascripts/jQuery/jquery.min.js"></script>
- <script type="text/javascript" src="../dhis-web-commons/javascripts/jQuery/ui/jquery-ui-1.9.1.custom.min.js"></script>
+ <script type="text/javascript" src="../dhis-web-commons/javascripts/jQuery/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../dhis-web-commons/javascripts/jQuery/jquery.tmpl.js"></script>
- <link rel="stylesheet" type="text/css" href="../dhis-web-commons/javascripts/jQuery/ui/css/redmond/jquery-ui-1.9.1.custom.css">
+ <link rel="stylesheet" type="text/css" href="../dhis-web-commons/javascripts/jQuery/ui/css/redmond/jquery-ui.css">
<script type="text/javascript" src="../dhis-web-commons/bootstrap/js/bootstrap.min.js"></script>
=== modified file 'dhis-2/dhis-web/dhis-web-event-reports/src/main/webapp/dhis-web-event-reports/app/scripts/app.js'
--- dhis-2/dhis-web/dhis-web-event-reports/src/main/webapp/dhis-web-event-reports/app/scripts/app.js 2014-05-01 17:07:09 +0000
+++ dhis-2/dhis-web/dhis-web-event-reports/src/main/webapp/dhis-web-event-reports/app/scripts/app.js 2014-05-12 09:56:39 +0000
@@ -6170,7 +6170,7 @@
iconCls: 'ns-menu-item-datasource',
handler: function() {
if (ns.core.init.contextPath && ns.app.paramString) {
- window.open(ns.core.init.contextPath + ns.core.web.analytics.getParamString(ns.app.layout, 'html'), '_blank');
+ window.open(ns.core.init.contextPath + ns.core.web.analytics.getParamString(ns.app.layout, 'html', true), '_blank');
}
}
},
@@ -6179,7 +6179,7 @@
iconCls: 'ns-menu-item-datasource',
handler: function() {
if (ns.core.init.contextPath && ns.app.paramString) {
- window.open(ns.core.init.contextPath + ns.core.web.analytics.getParamString(ns.app.layout, 'json'), '_blank');
+ window.open(ns.core.init.contextPath + ns.core.web.analytics.getParamString(ns.app.layout, 'json', true), '_blank');
}
}
},
@@ -6188,7 +6188,7 @@
iconCls: 'ns-menu-item-datasource',
handler: function() {
if (ns.core.init.contextPath && ns.app.paramString) {
- window.open(ns.core.init.contextPath + ns.core.web.analytics.getParamString(ns.app.layout, 'xml'), '_blank');
+ window.open(ns.core.init.contextPath + ns.core.web.analytics.getParamString(ns.app.layout, 'xml', true), '_blank');
}
}
},
@@ -6197,7 +6197,7 @@
iconCls: 'ns-menu-item-datasource',
handler: function() {
if (ns.core.init.contextPath && ns.app.paramString) {
- window.open(ns.core.init.contextPath + ns.core.web.analytics.getParamString(ns.app.layout, 'xls'), '_blank');
+ window.open(ns.core.init.contextPath + ns.core.web.analytics.getParamString(ns.app.layout, 'xls', true), '_blank');
}
}
},
@@ -6206,7 +6206,7 @@
iconCls: 'ns-menu-item-datasource',
handler: function() {
if (ns.core.init.contextPath && ns.app.paramString) {
- window.open(ns.core.init.contextPath + ns.core.web.analytics.getParamString(ns.app.layout, 'csv'), '_blank');
+ window.open(ns.core.init.contextPath + ns.core.web.analytics.getParamString(ns.app.layout, 'csv', true), '_blank');
}
}
}
@@ -6444,8 +6444,6 @@
}
});
-
-
getLayoutWindow = function(dataType) {
if (dataType === 'aggregated_values') {
return ns.app.aggregateLayoutWindow;
=== modified file 'dhis-2/dhis-web/dhis-web-event-reports/src/main/webapp/dhis-web-event-reports/app/scripts/core.js'
--- dhis-2/dhis-web/dhis-web-event-reports/src/main/webapp/dhis-web-event-reports/app/scripts/core.js 2014-05-01 11:03:40 +0000
+++ dhis-2/dhis-web/dhis-web-event-reports/src/main/webapp/dhis-web-event-reports/app/scripts/core.js 2014-05-12 09:56:39 +0000
@@ -1313,10 +1313,13 @@
}
// add span and children
- for (var i = 0; i < aaAllFloorObjects.length; i++) {
+ for (var i = 0, aAboveFloorObjects, doorIds, uniqueDoorIds; i < aaAllFloorObjects.length; i++) {
+ doorIds = [];
+
for (var j = 0, obj, doorCount = 0, oldestObj; j < aaAllFloorObjects[i].length; j++) {
obj = aaAllFloorObjects[i][j];
+ doorIds.push(obj.id);
if (doorCount === 0) {
@@ -1324,8 +1327,9 @@
obj[spanType] = aFloorSpan[i];
// children
- //obj.children = Ext.isDefined(aFloorSpan[i + 1]) ? aFloorSpan[i] / aFloorSpan[i + 1] : 0;
- obj.children = obj.leaf ? 0 : aFloorSpan[i];
+ if (obj.leaf) {
+ obj.children = 0;
+ }
// first sibling
obj.oldest = true;
@@ -1345,6 +1349,16 @@
doorCount = 0;
}
}
+
+ // set above floor door children to number of unique door ids on this floor
+ if (i > 0) {
+ aAboveFloorObjects = aaAllFloorObjects[i-1];
+ uniqueDoorIds = Ext.Array.unique(doorIds);
+
+ for (var j = 0; j < aAboveFloorObjects.length; j++) {
+ aAboveFloorObjects[j].children = uniqueDoorIds.length;
+ }
+ }
}
// add parents if more than 1 floor
@@ -1790,7 +1804,7 @@
// analytics
web.analytics = {};
- web.analytics.getParamString = function(view, format) {
+ web.analytics.getParamString = function(view, format, skipPaging) {
var paramString,
dimensions = Ext.Array.clean([].concat(view.columns || [], view.rows || [])),
ignoreKeys = ['longitude', 'latitude'],
@@ -1838,8 +1852,19 @@
for (var i = 0, dim; i < view.filters.length; i++) {
dim = view.filters[i];
- paramString += '&filter=' + dim.dimension;
- paramString += dim.filter ? ':' + encodeURIComponent(dim.filter) : '';
+ paramString += '&filter=' + dim.dimension;
+
+ if (dim.items) {
+ paramString += ':';
+
+ for (var i = 0; i < dim.items.length; i++) {
+ paramString += encodeURIComponent(dim.items[i].id);
+ paramString += i < dim.items.length - 1 ? ';' : '';
+ }
+ }
+ else {
+ paramString += dim.filter ? ':' + encodeURIComponent(dim.filter) : '';
+ }
}
}
@@ -1864,7 +1889,7 @@
}
// paging
- if (view.dataType === 'individual_cases' && view.paging) {
+ if (view.dataType === 'individual_cases' && view.paging && !skipPaging) {
paramString += view.paging.pageSize ? '&pageSize=' + view.paging.pageSize : '';
paramString += view.paging.page ? '&page=' + view.paging.page : '';
}
=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/AddRecipientAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/AddRecipientAction.java 2014-05-06 06:43:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/AddRecipientAction.java 2014-05-12 09:56:39 +0000
@@ -1,10 +1,36 @@
package org.hisp.dhis.light.message.action;
+/*
+ * Copyright (c) 2004-2014, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
import java.util.HashSet;
import java.util.Set;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hisp.dhis.user.User;
import org.hisp.dhis.user.UserService;
@@ -18,8 +44,6 @@
public class AddRecipientAction
implements Action
{
- private static final Log log = LogFactory.getLog( AddRecipientAction.class );
-
public AddRecipientAction()
{
}
=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/messaging/action/FindUserAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/messaging/action/FindUserAction.java 2014-05-06 06:43:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/messaging/action/FindUserAction.java 2014-05-12 09:56:39 +0000
@@ -32,8 +32,6 @@
import java.util.HashSet;
import java.util.Set;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hisp.dhis.user.User;
import org.hisp.dhis.user.UserService;
@@ -42,8 +40,6 @@
public class FindUserAction
implements Action
{
- private static final Log log = LogFactory.getLog( FindUserAction.class );
-
private static final String REDIRECT = "redirect";
private UserService userService;
=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/FindBeneficiarytAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/FindBeneficiarytAction.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/FindBeneficiarytAction.java 2014-05-12 09:56:39 +0000
@@ -28,11 +28,17 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-import java.util.Collection;
-import java.util.HashSet;
+
+import java.util.List;
import java.util.Set;
-import org.hisp.dhis.trackedentity.TrackedEntityInstance;
+import org.hisp.dhis.common.Grid;
+import org.hisp.dhis.common.OrganisationUnitSelectionMode;
+import org.hisp.dhis.common.QueryItem;
+import org.hisp.dhis.common.QueryOperator;
+import org.hisp.dhis.organisationunit.OrganisationUnitService;
+import org.hisp.dhis.trackedentity.TrackedEntityAttributeService;
+import org.hisp.dhis.trackedentity.TrackedEntityInstanceQueryParams;
import org.hisp.dhis.trackedentity.TrackedEntityInstanceService;
import org.hisp.dhis.trackedentityattributevalue.TrackedEntityAttributeValue;
@@ -54,32 +60,34 @@
this.patientService = patientService;
}
+ private OrganisationUnitService organisationUnitService;
+
+ public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
+ {
+ this.organisationUnitService = organisationUnitService;
+ }
+
+ private TrackedEntityAttributeService trackedEntityAttributeService;
+
+ public void setTrackedEntityAttributeService( TrackedEntityAttributeService trackedEntityAttributeService )
+ {
+ this.trackedEntityAttributeService = trackedEntityAttributeService;
+ }
+
// -------------------------------------------------------------------------
// Input & Output
// -------------------------------------------------------------------------
- private Collection<TrackedEntityInstance> patients;
-
- public Collection<TrackedEntityInstance> getPatients()
- {
- return patients;
- }
-
- public void setPatients( Collection<TrackedEntityInstance> patients )
- {
- this.patients = patients;
- }
-
- private Set<TrackedEntityAttributeValue> pavSet;
-
- public Set<TrackedEntityAttributeValue> getPavSet()
- {
- return pavSet;
- }
-
- public void setPavSet( Set<TrackedEntityAttributeValue> pavSet )
- {
- this.pavSet = pavSet;
+ private List<List<Object>> trackedEntityList;
+
+ public List<List<Object>> getTrackedEntityList()
+ {
+ return trackedEntityList;
+ }
+
+ public void setTrackedEntityList( List<List<Object>> trackedEntityList )
+ {
+ this.trackedEntityList = trackedEntityList;
}
private Set<TrackedEntityAttributeValue> patientAttributes;
@@ -130,16 +138,16 @@
this.patientAttributeId = patientAttributeId;
}
- private Integer patientId;
+ private String patientUID;
- public Integer getPatientId()
+ public String getPatientUID()
{
- return patientId;
+ return patientUID;
}
- public void setPatientId( Integer patientId )
+ public void setPatientUID( String patientUID )
{
- this.patientId = patientId;
+ this.patientUID = patientUID;
}
// Use in search related patient
@@ -172,21 +180,30 @@
public String execute()
throws Exception
{
-
- patients = patientService.searchTrackedEntityInstancesForMobile( keyword, organisationUnitId,
- patientAttributeId );
-
- pavSet = new HashSet<TrackedEntityAttributeValue>();
-
- for ( TrackedEntityInstance p : patients )
- {
- pavSet.addAll( p.getAttributeValues() );
- }
-
- if ( patients.size() == 1 )
- {
- TrackedEntityInstance patient = patients.iterator().next();
- patientId = patient.getId();
+ TrackedEntityInstanceQueryParams param = new TrackedEntityInstanceQueryParams();
+ QueryItem queryItem = new QueryItem(
+ trackedEntityAttributeService.getTrackedEntityAttribute( patientAttributeId ), QueryOperator.EQ, keyword,
+ false );
+
+ if ( organisationUnitId == null || organisationUnitId == 0 )
+ {
+ param.setOrganisationUnitMode( OrganisationUnitSelectionMode.ALL );
+ }
+ else
+ {
+ param.addOrganisationUnit( organisationUnitService.getOrganisationUnit( organisationUnitId ) );
+ }
+
+ param.addAttribute( queryItem );
+
+ Grid trackedEntityGrid = patientService.getTrackedEntityInstances( param );
+ trackedEntityList = trackedEntityGrid.getRows();
+
+
+ if ( trackedEntityList.size() == 1 )
+ {
+ List<Object> firstRow = trackedEntityList.iterator().next();
+ patientUID = firstRow.get( 0 ).toString();
return REDIRECT;
}
=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/GetPatientProgramListAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/GetPatientProgramListAction.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/GetPatientProgramListAction.java 2014-05-12 09:56:39 +0000
@@ -126,16 +126,16 @@
// Input & Output
// -------------------------------------------------------------------------
- private Integer patientId;
+ private String patientUID;
- public Integer getPatientId()
+ public String getPatientUID()
{
- return patientId;
+ return patientUID;
}
- public void setPatientId( Integer patientId )
+ public void setPatientUID( String patientUID )
{
- this.patientId = patientId;
+ this.patientUID = patientUID;
}
private Set<ProgramInstance> programInstances = new HashSet<ProgramInstance>();
@@ -249,7 +249,7 @@
programInstances.clear();
relatedPeople = new HashMap<Relationship, TrackedEntityInstance>();
- patient = patientService.getTrackedEntityInstance( patientId );
+ patient = patientService.getTrackedEntityInstance( patientUID );
Collection<Program> programByCurrentUser = programService.getProgramsByCurrentUser();
for ( ProgramInstance programInstance : patient.getProgramInstances() )
{
=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml 2014-05-06 06:43:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml 2014-05-12 09:56:39 +0000
@@ -245,6 +245,8 @@
class="org.hisp.dhis.light.namebaseddataentry.action.FindBeneficiarytAction"
scope="prototype">
<property name="patientService" ref="org.hisp.dhis.trackedentity.TrackedEntityInstanceService" />
+ <property name="organisationUnitService" ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+ <property name="trackedEntityAttributeService" ref="org.hisp.dhis.trackedentity.TrackedEntityAttributeService" />
</bean>
=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-light/src/main/resources/struts.xml 2014-05-06 06:43:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/resources/struts.xml 2014-05-12 09:56:39 +0000
@@ -200,7 +200,7 @@
<action name="findBeneficiary"
class="org.hisp.dhis.light.namebaseddataentry.action.FindBeneficiarytAction">
- <result name="redirect" type="redirect">showPatientProgramList.action?patientId=${patientId}
+ <result name="redirect" type="redirect">showPatientProgramList.action?patientUID=${patientUID}
</result>
<result name="success" type="velocity">/dhis-web-light/main.vm</result>
<param name="page">/dhis-web-light/namebased/beneficiaryList.vm</param>
=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/namebased/beneficiaryList.vm'
--- dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/namebased/beneficiaryList.vm 2014-03-07 08:27:33 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/namebased/beneficiaryList.vm 2014-05-12 09:56:39 +0000
@@ -2,14 +2,14 @@
<p>
<ul>
-#foreach( $pav in $pavSet )
- #if($pav.getAttribute().getDisplayInListNoProgram()== true)
-<li><a href="showPatientProgramList.action?patientId=$pav.getEntityInstance().getId()">$!encoder.htmlEncode( ${pav.value} )</a></li>
-#end
+#foreach( $row in $trackedEntityList )
+
+<li><a href="showPatientProgramList.action?patientUID=$row.get(0)">$!encoder.htmlEncode( ${row.get(5)} )</a></li>
+
#end
</ul>
</p>
-<p><strong>Total found: $patients.size()</strong></p>
+<p><strong>Total found: $trackedEntityList.size()</strong></p>
<div id="footer">
<h2>$i18n.getString( "navigate_to" )</h2>
<ul>
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunit/AddOrganisationUnitAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunit/AddOrganisationUnitAction.java 2014-05-05 08:08:38 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunit/AddOrganisationUnitAction.java 2014-05-12 09:56:39 +0000
@@ -28,13 +28,17 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-import com.opensymphony.xwork2.Action;
+import static org.hisp.dhis.system.util.TextUtils.nullIfEmpty;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+
import org.hisp.dhis.attribute.AttributeService;
import org.hisp.dhis.calendar.CalendarService;
import org.hisp.dhis.calendar.DateUnit;
import org.hisp.dhis.common.IdentifiableObjectManager;
import org.hisp.dhis.dataset.DataSetService;
-import org.hisp.dhis.i18n.I18nFormat;
import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.organisationunit.OrganisationUnitGroup;
import org.hisp.dhis.organisationunit.OrganisationUnitGroupService;
@@ -44,11 +48,7 @@
import org.hisp.dhis.system.util.ValidationUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-
-import static org.hisp.dhis.system.util.TextUtils.nullIfEmpty;
+import com.opensymphony.xwork2.Action;
/**
* @author Torgeir Lorange Ostby
@@ -60,13 +60,6 @@
// Dependencies
// -------------------------------------------------------------------------
- private I18nFormat format;
-
- public void setFormat( I18nFormat format )
- {
- this.format = format;
- }
-
private OrganisationUnitService organisationUnitService;
public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunit/UpdateOrganisationUnitAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunit/UpdateOrganisationUnitAction.java 2014-05-05 08:08:38 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunit/UpdateOrganisationUnitAction.java 2014-05-12 09:56:39 +0000
@@ -28,14 +28,22 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-import com.opensymphony.xwork2.Action;
+import static org.hisp.dhis.system.util.TextUtils.nullIfEmpty;
+import static org.hisp.dhis.system.util.ValidationUtils.coordinateIsValid;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
import org.hisp.dhis.attribute.AttributeService;
import org.hisp.dhis.calendar.CalendarService;
import org.hisp.dhis.calendar.DateUnit;
import org.hisp.dhis.common.IdentifiableObjectManager;
import org.hisp.dhis.dataset.DataSet;
import org.hisp.dhis.dataset.DataSetService;
-import org.hisp.dhis.i18n.I18nFormat;
import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.organisationunit.OrganisationUnitGroup;
import org.hisp.dhis.organisationunit.OrganisationUnitGroupService;
@@ -45,15 +53,7 @@
import org.hisp.dhis.system.util.ValidationUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.hisp.dhis.system.util.TextUtils.nullIfEmpty;
-import static org.hisp.dhis.system.util.ValidationUtils.coordinateIsValid;
+import com.opensymphony.xwork2.Action;
/**
* @author Torgeir Lorange Ostby
@@ -65,13 +65,6 @@
// Dependencies
// -------------------------------------------------------------------------
- private I18nFormat format;
-
- public void setFormat( I18nFormat format )
- {
- this.format = format;
- }
-
private OrganisationUnitService organisationUnitService;
public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/caseAggregationForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/caseAggregationForm.vm 2014-03-25 06:23:18 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/caseAggregationForm.vm 2014-05-12 09:56:39 +0000
@@ -114,7 +114,6 @@
<option value="[PSIC:*]">$i18n.getString( "completed" )</option>
<option value="[PS:*.COUNT]" name="multiProgram">$i18n.getString( "visit_selected_program_stage_x_th_time" )</option>
<option value="[PS:*] AND [PSP:DATE@executionDate#-DATE@dueDate#]" name="multiProgram">$i18n.getString( "report_date" ) - $i18n.getString( "due_date" )</option>
- <option value="[PS:*] AND [PC:DATE@executionDate#-DATE@birthDate#]" name="multiProgram">$i18n.getString( "age_at_visit_days_since_birth" )</option>
</select>
</select>
</td>
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/responseValidationCriteria.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/responseValidationCriteria.vm 2010-05-18 03:42:26 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/responseValidationCriteria.vm 2014-05-12 09:56:39 +0000
@@ -5,9 +5,4 @@
<description>$encoder.xmlEncode($validationCriteria.description )</description>
<property>$i18n.getString($validationCriteria.property)</property>
<operator>$validationCriteria.operator</operator>
- #if($validationCriteria.property == 'birthDate')
- <value>$format.formatDate($validationCriteria.value)</value>
- #else
- <value>$validationCriteria.value</value>
- #end
</validationCriteria>
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/app.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/app.js 2014-04-05 11:52:49 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/app.js 2014-05-12 09:56:39 +0000
@@ -1435,13 +1435,14 @@
text: GIS.i18n.labels,
iconCls: 'gis-menu-item-icon-labels',
handler: function() {
- if (layer.labelWindow) {
- layer.labelWindow.show();
- }
- else {
- layer.labelWindow = GIS.app.LabelWindow(layer);
- layer.labelWindow.show();
- }
+ var window = layer.labelWindow || (layer.labelWidow = GIS.app.LabelWindow(layer));
+
+ if (layer.id === 'boundary') {
+ window.updateLabels();
+ }
+ else {
+ window.show();
+ }
}
};
items.push(item);
@@ -2033,23 +2034,48 @@
}
});
- getLabelConfig = function() {
- return {
+ getLabelConfig = function(isLabel) {
+ var style = {
fontSize: fontSize.getValue(),
strong: strong.getValue(),
italic: italic.getValue(),
color: color.getValue()
- };
+ };
+
+ if (isLabel) {
+ style.label = '\${label}';
+ style.fontFamily = 'arial,sans-serif,ubuntu,consolas';
+ }
+
+ return style;
};
updateLabels = function() {
- if (layer.hasLabels) {
- layer.styleMap = GIS.core.StyleMap(layer.id, getLabelConfig());
-
- var loader = layer.core.getLoader();
- loader.hideMask = true;
- loader.loadLegend();
- }
+ var loader = layer.core.getLoader();
+ loader.hideMask = true;
+
+ if (layer.hasLabels) {
+ layer.hasLabels = false;
+
+ if (layer.id === 'boundary') {
+ layer.core.setFeatureLabelStyle(false);
+ }
+ else {
+ layer.styleMap = GIS.core.StyleMap(layer.id);
+ loader.loadLegend();
+ }
+ }
+ else {
+ layer.hasLabels = true;
+
+ if (layer.id === 'boundary') {
+ layer.core.setFeatureLabelStyle(true);
+ }
+ else {
+ layer.styleMap = GIS.core.StyleMap(layer.id, getLabelConfig(true));
+ loader.loadLegend();
+ }
+ }
};
window = Ext.create('Ext.window.Window', {
@@ -2059,6 +2085,7 @@
width: gis.conf.layout.tool.window_width,
resizable: false,
closeAction: 'hide',
+ updateLabels: updateLabels,
items: {
layout: 'fit',
cls: 'gis-container-inner',
@@ -2119,18 +2146,7 @@
xtype: 'button',
text: GIS.i18n.showhide,
handler: function() {
- if (layer.hasLabels) {
- layer.hasLabels = false;
- layer.styleMap = GIS.core.StyleMap(layer.id);
- }
- else {
- layer.hasLabels = true;
- layer.styleMap = GIS.core.StyleMap(layer.id, getLabelConfig());
- }
-
- var loader = layer.core.getLoader();
- loader.hideMask = true;
- loader.loadLegend();
+ updateLabels();
}
}
],
@@ -8114,6 +8130,7 @@
viewport.favoriteWindow.show();
}
});
+
if (gis.init.user.isAdmin) {
a.push({
text: GIS.i18n.legend,
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/core.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/core.js 2014-05-03 11:20:30 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/core.js 2014-05-12 09:56:39 +0000
@@ -185,9 +185,26 @@
selectHandlers,
dimConf = gis.conf.finals.dimension,
defaultHoverWindow,
- eventWindow;
+ eventWindow,
+ isBoundary = layer.id === 'boundary',
+ isEvent = layer.id === 'event';
defaultHoverSelect = function fn(feature) {
+ if (isBoundary) {
+ var style = layer.core.getDefaultFeatureStyle();
+
+ style.fillOpacity = 0.15;
+ style.strokeColor = feature.style.strokeColor;
+ style.strokeWidth = feature.style.strokeWidth;
+ style.label = feature.style.label;
+ style.fontFamily = feature.style.fontFamily;
+ style.fontWeight = feature.style.strokeWidth > 1 ? 'bold' : 'normal';
+ style.labelAlign = feature.style.labelAlign;
+ style.labelYOffset = feature.style.labelYOffset;
+
+ layer.drawFeature(feature, style);
+ }
+
if (defaultHoverWindow) {
defaultHoverWindow.destroy();
}
@@ -625,7 +642,7 @@
onClickSelect: defaultClickSelect
};
- if (layer.id === 'event') {
+ if (isEvent) {
options.onClickSelect = function fn(feature) {
var ignoreKeys = ['label', 'value', 'nameColumnMap', 'psi', 'ps', 'longitude', 'latitude', 'eventdate', 'ou', 'oucode', 'ouname'],
attributes = feature.attributes,
@@ -726,29 +743,24 @@
var defaults = {
fillOpacity: 1,
strokeColor: '#fff',
- strokeWidth: 1
+ strokeWidth: 1,
+ pointRadius: 5,
+ labelAlign: 'cr',
+ labelYOffset: 13
},
select = {
fillOpacity: 0.9,
strokeColor: '#fff',
strokeWidth: 1,
- cursor: 'pointer'
+ pointRadius: 5,
+ cursor: 'pointer',
+ labelAlign: 'cr',
+ labelYOffset: 13
};
- if (id === 'boundary') {
- defaults.fillOpacity = 0;
- defaults.strokeColor = '#000';
- defaults.strokeWidth = 1;
-
- select.fillColor = '#000';
- select.fillOpacity = 0.15;
- select.strokeColor = '#000';
- select.strokeWidth = 1;
- }
-
if (labelConfig) {
- defaults.label = '\${label}';
- defaults.fontFamily = 'arial,sans-serif,ubuntu,consolas';
+ defaults.label = labelConfig.label;
+ defaults.fontFamily = labelConfig.fontFamily;
defaults.fontSize = (labelConfig.fontSize || 13) + 'px';
defaults.fontWeight = labelConfig.strong ? 'bold' : 'normal';
defaults.fontStyle = labelConfig.italic ? 'italic' : 'normal';
@@ -1087,7 +1099,7 @@
}
// name-column map
- map = Ext.clone(r.metaData.names);
+ map = r.metaData.names;
for (var i = 0; i < r.headers.length; i++) {
map[r.headers[i].name] = r.headers[i].column;
@@ -1510,9 +1522,12 @@
scope: this,
disableCaching: false,
success: function(r) {
- var geojson = gis.util.geojson.decode(r),
+ var geojson = gis.util.geojson.decode(r, 'DESC'),
format = new OpenLayers.Format.GeoJSON(),
- features = gis.util.map.getTransformedFeatureArray(format.read(geojson));
+ features = gis.util.map.getTransformedFeatureArray(format.read(geojson)),
+ colors = ['black', 'blue', 'red', 'green', 'yellow'],
+ levels = [],
+ levelObjectMap = {};
if (!Ext.isArray(features)) {
olmap.mask.hide();
@@ -1526,6 +1541,35 @@
return;
}
+ // get levels, colors, map
+ for (var i = 0; i < features.length; i++) {
+ levels.push(parseFloat(features[i].attributes.level));
+ }
+
+ levels = Ext.Array.unique(levels).sort();
+
+ for (var i = 0; i < levels.length; i++) {
+ levelObjectMap[levels[i]] = {
+ strokeColor: colors[i]
+ };
+ }
+
+ // style
+ for (var i = 0, feature, obj, strokeWidth; i < features.length; i++) {
+ feature = features[i];
+ obj = levelObjectMap[feature.attributes.level];
+ strokeWidth = levels.length === 1 ? 1 : feature.attributes.level == 2 ? 2 : 1;
+
+ feature.style = {
+ strokeColor: obj.strokeColor || 'black',
+ strokeWidth: strokeWidth,
+ fillOpacity: 0,
+ pointRadius: 5,
+ labelAlign: 'cr',
+ labelYOffset: 13
+ };
+ }
+
layer.core.featureStore.loadFeatures(features.slice(0));
loadData(view, features);
@@ -1549,6 +1593,11 @@
layer.removeFeatures(layer.features);
layer.addFeatures(features);
+ // labels
+ if (layer.hasLabels) {
+ layer.core.setFeatureLabelStyle(true, true);
+ }
+
loadLegend(view);
};
@@ -2351,7 +2400,7 @@
util.geojson = {};
- util.geojson.decode = function(doc) {
+ util.geojson.decode = function(doc, levelOrder) {
var geojson = {};
geojson.type = 'FeatureCollection';
geojson.crs = {
@@ -2362,6 +2411,11 @@
};
geojson.features = [];
+ levelOrder = levelOrder || 'ASC';
+
+ // sort
+ doc.geojson = util.array.sort(doc.geojson, levelOrder, 'le');
+
for (var i = 0; i < doc.geojson.length; i++) {
geojson.features.push({
geometry: {
@@ -2918,6 +2972,8 @@
gis.olmap.addLayers(layers);
GIS.core.instances.push(gis);
+g = gis;
+b = gis.layer.boundary;
return gis;
};
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/core/GeoStat/all.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/core/GeoStat/all.js 2013-12-22 11:58:26 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/core/GeoStat/all.js 2014-05-12 09:56:39 +0000
@@ -405,6 +405,47 @@
return;
},
+ getDefaultFeatureStyle: function() {
+ return {
+ fillOpacity: 0,
+ fillColor: '#000',
+ strokeColor: '#000',
+ strokeWidth: 1,
+ pointRadius: 5,
+ cursor: 'pointer'
+ };
+ },
+
+ setFeatureStyle: function(style) {
+ for (var i = 0; i < this.layer.features.length; i++) {
+ this.layer.features[i].style = style;
+ }
+
+ this.layer.redraw();
+ },
+
+ setFeatureLabelStyle: function(isLabel, skipDraw) {
+ for (var i = 0, feature, style, label; i < this.layer.features.length; i++) {
+ feature = this.layer.features[i];
+ style = feature.style;
+
+ if (isLabel) {
+ style.label = feature.attributes.label;
+ style.fontColor = style.strokeColor;
+ style.fontWeight = style.strokeWidth > 1 ? 'bold' : 'normal';
+ style.labelAlign = 'cr';
+ style.labelYOffset = 13;
+ }
+ else {
+ style.label = null;
+ }
+ }
+
+ if (!skipDraw) {
+ this.layer.redraw();
+ }
+ },
+
updateOptions: function(newOptions) {
var oldOptions = OpenLayers.Util.extend({}, this.options);
this.addOptions(newOptions);
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/plugin.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/plugin.js 2014-05-04 10:49:11 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/plugin.js 2014-05-12 09:56:39 +0000
@@ -3153,7 +3153,6 @@
gis.olmap.addLayers(layers);
GIS.core.instances.push(gis);
-e = gis.layer.event;
return gis;
};
=== modified file 'dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/core.js'
--- dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/core.js 2014-05-01 10:38:21 +0000
+++ dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/core.js 2014-05-12 09:56:39 +0000
@@ -175,7 +175,7 @@
},
displayDensity: {
'compact': '3px',
- 'normal': '5px',
+ 'normal': '6px',
'comfortable': '10px',
},
fontSize: {
@@ -1445,10 +1445,13 @@
}
// add span and children
- for (var i = 0; i < aaAllFloorObjects.length; i++) {
+ for (var i = 0, aAboveFloorObjects, doorIds, uniqueDoorIds; i < aaAllFloorObjects.length; i++) {
+ doorIds = [];
+
for (var j = 0, obj, doorCount = 0, oldestObj; j < aaAllFloorObjects[i].length; j++) {
obj = aaAllFloorObjects[i][j];
+ doorIds.push(obj.id);
if (doorCount === 0) {
@@ -1456,7 +1459,9 @@
obj[spanType] = aFloorSpan[i];
// children
- obj.children = obj.leaf ? 0 : aFloorSpan[i];
+ if (obj.leaf) {
+ obj.children = 0;
+ }
// first sibling
obj.oldest = true;
@@ -1476,6 +1481,16 @@
doorCount = 0;
}
}
+
+ // set above floor door children to number of unique door ids on this floor
+ if (i > 0) {
+ aAboveFloorObjects = aaAllFloorObjects[i-1];
+ uniqueDoorIds = Ext.Array.unique(doorIds);
+
+ for (var j = 0; j < aAboveFloorObjects.length; j++) {
+ aAboveFloorObjects[j].children = uniqueDoorIds.length;
+ }
+ }
}
// add parents if more than 1 floor
@@ -1980,7 +1995,7 @@
displayDensity,
fontSize,
isNumeric = Ext.isObject(config) && Ext.isString(config.type) && config.type.substr(0,5) === 'value' && !config.empty,
- isValue = Ext.isObject(config) && Ext.isString(config.type) && config.type === 'value' && !config.empty,
+ isValue = isNumeric && config.type === 'value',
cls = '',
html = '';
@@ -1996,7 +2011,7 @@
tdCount = tdCount + 1;
// background color from legend set
- if (isNumeric && xLayout.legendSet) {
+ if (isValue && xLayout.legendSet) {
var value = parseFloat(config.value);
mapLegends = xLayout.legendSet.mapLegends;
@@ -2017,7 +2032,8 @@
cls += config.hidden ? ' td-hidden' : '';
cls += config.collapsed ? ' td-collapsed' : '';
cls += isValue ? ' pointer' : '';
- cls += bgColor ? ' legend' : (config.cls ? ' ' + config.cls : '');
+ //cls += bgColor ? ' legend' : (config.cls ? ' ' + config.cls : '');
+ cls += config.cls ? ' ' + config.cls : '';
// if sorting
if (Ext.isString(metaDataId)) {
@@ -2030,19 +2046,20 @@
}
html += '<td ' + (config.uuid ? ('id="' + config.uuid + '" ') : '');
- html += ' class="' + cls + '" ' + colSpan + rowSpan
+ html += ' class="' + cls + '" ' + colSpan + rowSpan;
- if (bgColor) {
- html += '>';
- html += '<div class="legendCt">';
- html += '<div class="number ' + config.cls + '" style="padding:' + displayDensity + '; padding-right:3px; font-size:' + fontSize + '">' + htmlValue + '</div>';
- html += '<div class="arrowCt ' + config.cls + '">';
- html += '<div class="arrow" style="border-bottom:8px solid transparent; border-right:8px solid ' + bgColor + '"> </div>';
- html += '</div></div></div></td>';
- }
- else {
- html += 'style="padding:' + displayDensity + '; font-size:' + fontSize + ';"' + '>' + htmlValue + '</td>';
- }
+ //if (bgColor && isValue) {
+ //html += 'style="color:' + bgColor + ';padding:' + displayDensity + '; font-size:' + fontSize + ';"' + '>' + htmlValue + '</td>';
+ //html += '>';
+ //html += '<div class="legendCt">';
+ //html += '<div class="number ' + config.cls + '" style="padding:' + displayDensity + '; padding-right:3px; font-size:' + fontSize + '">' + htmlValue + '</div>';
+ //html += '<div class="arrowCt ' + config.cls + '">';
+ //html += '<div class="arrow" style="border-bottom:8px solid transparent; border-right:8px solid ' + bgColor + '"> </div>';
+ //html += '</div></div></div></td>';
+ //}
+ //else {
+ html += 'style="' + (bgColor && isValue ? 'color:' + bgColor + '; ' : '') + 'padding:' + displayDensity + '; font-size:' + fontSize + ';"' + '>' + htmlValue + '</td>';
+ //}
return html;
};
=== modified file 'dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/plugin.js'
--- dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/plugin.js 2014-05-03 13:51:53 +0000
+++ dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/plugin.js 2014-05-12 09:56:39 +0000
@@ -1079,7 +1079,6 @@
getUpdatedAxis = function(axis) {
var dimension;
- axis = Ext.clone(axis);
for (var i = 0; i < axis.length; i++) {
if (axis[i].dimension === objectName) {
@@ -2693,6 +2692,7 @@
css += '.x-mask-msg { \n padding: 0; \n border: 0 none; \n background-image: none; \n background-color: transparent; \n } \n';
css += '.x-mask-msg div { \n background-position: 11px center; \n } \n';
css += '.x-mask-msg .x-mask-loading { \n border: 0 none; \n background-color: #000; \n color: #fff; \n border-radius: 2px; \n padding: 12px 14px 12px 30px; \n opacity: 0.65; \n } \n';
+ css += '.x-mask { opacity: 0 } \n';
css += '.pivot td.legend { \n padding: 0; \n } \n';
css += '.pivot div.legendCt { \n display: table; \n float: right; \n width: 100%; \n } \n';
@@ -2967,6 +2967,12 @@
config = web.pivot.getHtml(xLayout, xResponse, xColAxis, xRowAxis);
ns.app.centerRegion.update(config.html);
+ Ext.defer( function() {
+ Ext.get(ns.core.init.el).fadeIn({
+ duration: 400
+ });
+ }, 300 );
+
// after render
ns.app.layout = layout;
ns.app.xLayout = xLayout;
@@ -3028,6 +3034,8 @@
}
ns.core = PT.getCore(Ext.clone(init));
+ ns.core.init.el = config.el;
+ Ext.get(ns.core.init.el).setStyle('opacity', 0);
extendInstance(ns);
ns.app.viewport = createViewport();
=== modified file 'dhis-2/dhis-web/dhis-web-portal/india-pom.xml'
--- dhis-2/dhis-web/dhis-web-portal/india-pom.xml 2014-04-22 15:46:19 +0000
+++ dhis-2/dhis-web/dhis-web-portal/india-pom.xml 2014-05-12 09:56:39 +0000
@@ -2,21 +2,21 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
-
+
<parent>
<groupId>org.hisp.dhis</groupId>
<artifactId>dhis-web</artifactId>
<version>2.16-SNAPSHOT</version>
</parent>
-
+
<artifactId>dhis-web-india-portal</artifactId>
<packaging>war</packaging>
<name>DHIS Web Portal</name>
-
+
<build>
<finalName>dhis</finalName>
</build>
-
+
<dependencies>
<dependency>
@@ -28,6 +28,10 @@
<dependency>
<groupId>org.hisp.dhis</groupId>
+ <artifactId>dhis-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hisp.dhis</groupId>
<artifactId>dhis-web-commons</artifactId>
</dependency>
<dependency>
@@ -35,6 +39,10 @@
<artifactId>dhis-web-commons-resources</artifactId>
<type>war</type>
</dependency>
+ <dependency>
+ <groupId>org.hisp.dhis</groupId>
+ <artifactId>dhis-service-core</artifactId>
+ </dependency>
<!-- Web-API modules -->
@@ -176,26 +184,43 @@
<version>${project.version}</version>
<type>war</type>
</dependency>
-
-
- <!-- India modules -->
+ <dependency>
+ <groupId>org.hisp.dhis</groupId>
+ <artifactId>dhis-web-event-capture</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>org.hisp.dhis</groupId>
+ <artifactId>dhis-web-event-reports</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>org.hisp.dhis</groupId>
+ <artifactId>dhis-web-tracker-capture</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>org.hisp.dhis</groupId>
+ <artifactId>dhis-web-maintenance-appmanager</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ </dependency>
+
+
+ <!-- India Modules -->
+
<dependency>
<groupId>org.hisp.dhis</groupId>
- <artifactId>dhis-web-maintenance-ccem</artifactId>
- <version>${project.version}</version>
- <type>war</type>
- </dependency>
- <dependency>
- <groupId>org.hisp.dhis</groupId>
- <artifactId>dhis-web-coldchain</artifactId>
+ <artifactId>dhis-web-maintenance-pbf</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
</dependencies>
-
<properties>
<rootDir>../../</rootDir>
</properties>
-
</project>
=== modified file 'dhis-2/dhis-web/dhis-web-sms/src/main/java/org/hisp/dhis/sms/outcoming/SearchPatientAction.java'
--- dhis-2/dhis-web/dhis-web-sms/src/main/java/org/hisp/dhis/sms/outcoming/SearchPatientAction.java 2014-04-23 23:45:11 +0000
+++ dhis-2/dhis-web/dhis-web-sms/src/main/java/org/hisp/dhis/sms/outcoming/SearchPatientAction.java 2014-05-12 09:56:39 +0000
@@ -38,7 +38,6 @@
import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.ouwt.manager.OrganisationUnitSelectionManager;
import org.hisp.dhis.paging.ActionPagingSupport;
-import org.hisp.dhis.program.ProgramInstance;
import org.hisp.dhis.program.ProgramService;
import org.hisp.dhis.trackedentity.TrackedEntityInstance;
import org.hisp.dhis.trackedentity.TrackedEntityInstanceService;
@@ -55,7 +54,7 @@
private OrganisationUnitSelectionManager selectionManager;
@Autowired
- private TrackedEntityInstanceService patientService;
+ private TrackedEntityInstanceService trackedEntityInstanceService;
@Autowired
private ProgramService programService;
@@ -123,11 +122,12 @@
// List all patients
if ( listAll )
{
- total = patientService.countGetTrackedEntityInstancesByOrgUnit( organisationUnit );
+ //TODO re-implement using TrackedEntityInstanceService.getTrackedEntityInstances( TrackedEntityInstanceQueryParams )
+
+ //total = patientService.countGetTrackedEntityInstancesByOrgUnit( organisationUnit );
this.paging = createPaging( total );
- patients = new ArrayList<TrackedEntityInstance>( patientService.getTrackedEntityInstances( organisationUnit, paging.getStartPos(),
- paging.getPageSize() ) );
+ //patients = new ArrayList<TrackedEntityInstance>( patientService.getTrackedEntityInstances( organisationUnit, paging.getStartPos(), paging.getPageSize() ) );
}
// search patients
@@ -139,10 +139,12 @@
orgunits.add( organisationUnit );
}
- total = patientService.countSearchTrackedEntityInstances( searchTexts, orgunits, null, ProgramInstance.STATUS_ACTIVE );
+ //TODO re-implement using TrackedEntityInstanceService.getTrackedEntityInstances( TrackedEntityInstanceQueryParams )
+
+ //total = patientService.countSearchTrackedEntityInstances( searchTexts, orgunits, null, ProgramInstance.STATUS_ACTIVE );
this.paging = createPaging( total );
- patients = patientService.searchTrackedEntityInstances( searchTexts, orgunits, null, null, ProgramInstance.STATUS_ACTIVE,
- paging.getStartPos(), paging.getPageSize() );
+ //patients = patientService.searchTrackedEntityInstances( searchTexts, orgunits, null, null, ProgramInstance.STATUS_ACTIVE,
+ // paging.getStartPos(), paging.getPageSize() );
if ( !searchBySelectedOrgunit )
{
=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/i18n/en.json'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/i18n/en.json 2014-04-11 07:13:54 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/i18n/en.json 2014-05-12 09:56:39 +0000
@@ -61,5 +61,13 @@
"not_like": "NOT LIKE",
"move_to_selected": "Move to selected",
"move_all_to_selected": "Move all to selected",
- "more": "More"
+ "more": "More",
+ "profile": "Profile",
+ "applications": "Apps",
+ "more_applications": "More apps",
+ "settings": "Settings",
+ "account": "Account",
+ "help": "Help",
+ "log_out": "Log out",
+ "about_dhis2": "About DHIS 2"
}
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/index.html'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/index.html 2014-04-08 15:37:00 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/index.html 2014-05-12 09:56:39 +0000
@@ -9,8 +9,9 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../dhis-web-commons/javascripts/jQuery/jquery.min.js"></script>
- <script type="text/javascript" src="../dhis-web-commons/javascripts/jQuery/ui/jquery-ui-1.9.1.custom.min.js"></script>
- <link rel="stylesheet" type="text/css" href="../dhis-web-commons/javascripts/jQuery/ui/css/redmond/jquery-ui-1.9.1.custom.css">
+ <script type="text/javascript" src="../dhis-web-commons/javascripts/jQuery/ui/jquery-ui.min.js"></script>
+ <script type="text/javascript" src="../dhis-web-commons/javascripts/jQuery/jquery.tmpl.js"></script>
+ <link rel="stylesheet" type="text/css" href="../dhis-web-commons/javascripts/jQuery/ui/css/redmond/jquery-ui.css">
<script type="text/javascript" src="../dhis-web-commons/bootstrap/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="../dhis-web-commons/bootstrap/css/bootstrap.min.css">
@@ -58,11 +59,16 @@
<script type="text/javascript" src="scripts/services.js"></script>
<script type="text/javascript" src="scripts/filters.js"></script>
<script type="text/javascript" src="scripts/directives.js"></script>
- <script type="text/javascript" src="scripts/controllers.js"></script>
+ <script type="text/javascript" src="scripts/controllers.js"></script>
+
+ <!-- Menu scripts -->
+ <script type="text/javascript" src="../dhis-web-commons/javascripts/dhis2/dhis2.translate.js"></script>
+ <script type="text/javascript" src="../dhis-web-commons/javascripts/dhis2/dhis2.menu.js"></script>
<link type="text/css" rel="stylesheet" href="../dhis-web-commons/font-awesome/css/font-awesome.min.css"/>
<link type="text/css" rel="stylesheet" media="screen,print" href="../dhis-web-commons/css/light_blue/light_blue.css"/>
<link type="text/css" rel="stylesheet" media="screen,print" href="../dhis-web-commons/css/widgets.css"/>
+ <link type="text/css" rel="stylesheet" media="screen" href="../dhis-web-commons/css/menu.css">
<link type="text/css" rel="stylesheet" href="styles/style.css">
@@ -71,10 +77,81 @@
<div id="header" ng-controller="HeaderController">
<div class="container-heading">
<img ng-click="home()" id="headerBanner" src="../dhis-web-commons/css/light_blue/logo_banner.png" style="cursor:pointer" title="{{'dhis2_home'| translate}}">
- </div>
- <div id="headerMessage" class="bold"></div>
- </div>
+ </div>
+ <div id="headerMessage" class="bold"></div>
+
+ <!-- Menu html -->
+ <ul id="menuLinkArea">
+ <li id="profileDropDown_button">
+ <a id="profileMenuLink" class="menu-link drop-down-menu-link">
+ <i class="fa fa-user"></i>{{'profile'| translate}}
+ </a>
+ </li>
+ <li id="appsDropDown_button">
+ <a id="appsMenuLink" class="menu-link drop-down-menu-link">
+ <i class="fa fa-th"></i>{{'applications'| translate}}
+ </a>
+ </li>
+ </ul>
+
+ <div id="appsDropDown" class="menuDropDownArea app-menu-dropdown appsMenuLink_menu" >
+ <div class="caret-up-border"></div>
+ <div class="caret-up-background"></div>
+ <div class="menu-drop-down-wrap">
+ <div class="menu-drop-down-scroll">
+ <ul class="menuDropDownBox"><li class="menu-placeholder"><img src="../images/ajax-loader-bar.gif"></li></ul>
+ </div>
+ </div>
+ <div class="apps-menu-more"><a href="../dhis-web-commons-about/modules.action">{{'more_applications'| translate}}</a></div>
+ </div>
+
+ <div id="profileDropDown" class="menuDropDownArea app-menu-dropdown ui-helper-clearfix profileMenuLink_menu">
+ <div class="caret-up-border"></div>
+ <div class="caret-up-background"></div>
+ <ul class="menuDropDownBox">
+ <li>
+ <a class="app-menu-item" href="../dhis-web-commons-about/userSettings.action">
+ <img src="../icons/usersettings.png" alt="{{'settings'| translate}}">
+ <span>{{'settings'| translate}} </span>
+ </a>
+ </li>
+ <li>
+ <a class="app-menu-item" href="../dhis-web-commons-about/showUpdateUserProfileForm.action">
+ <img src="../icons/function-profile.png" alt="{{'profile'| translate}}">
+ <span>{{'settings'| translate}} </span>
+ </a>
+ </li>
+ <li>
+ <a class="app-menu-item" href="../dhis-web-commons-about/showUpdateUserAccountForm.action">
+ <img src="../icons/function-account.png" alt="{{'account' | translate}}">
+ <span>{{'account' | translate}} </span>
+ </a>
+ </li>
+ <li>
+ <a class="app-menu-item" href="../dhis-web-commons-about/help.action">
+ <img src="../icons/function-help-center.png" alt="{{'help' | translate}}">
+ <span>{{'help' | translate}} </span>
+ </a>
+ </li>
+ <li>
+ <a class="app-menu-item" href="../dhis-web-commons-security/logout.action">
+ <img src="../icons/function-log-out.png" alt="{{'log_out' | translate}}">
+ <span>{{'log_out' | translate}} </span>
+ </a>
+ </li>
+ <li>
+ <a class="app-menu-item" href="../dhis-web-commons-about/about.action">
+ <img src="../icons/function-about-dhis2.png" alt="{{'about_dhis2' | translate}}">
+ <span>{{'about_dhis2' | translate}} </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ <!-- /Menu html -->
+
+ </div>
<div class="container-1" data-ng-view=''></div>
+
</body>
</html>
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/app.js'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/app.js 2014-04-04 11:55:55 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/app.js 2014-05-12 09:56:39 +0000
@@ -21,7 +21,7 @@
delete $httpProvider.defaults.headers.common['X-Requested-With'];
$routeProvider.when('/', {
- templateUrl:'views/selection.html',
+ templateUrl:'views/home.html',
controller: 'SelectionController'
}).when('/dashboard',{
templateUrl:'views/dashboard.html',
=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js 2014-04-08 15:37:00 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js 2014-05-12 09:56:39 +0000
@@ -417,8 +417,7 @@
}
});
- $scope.programStages = [];
-
+ $scope.programStages = [];
angular.forEach($scope.selectedProgram.programStages, function(stage){
$scope.programStages.push(storage.get(stage.id));
});
@@ -433,6 +432,10 @@
});
}
};
+
+ $scope.enroll = function(){
+ console.log('Enrollment', $scope.selectedEntity, ' ', $scope.selectedProgram);
+ };
})
//Controller for the data entry section
=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/styles/style.css'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/styles/style.css 2014-04-08 15:37:00 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/styles/style.css 2014-05-12 09:56:39 +0000
@@ -318,7 +318,6 @@
.container-heading {
color: white;
- padding: 12px;
}
div.paging a.active
=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/tracker-capture-appcache'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/tracker-capture-appcache 2014-03-18 10:09:53 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/tracker-capture-appcache 2014-05-12 09:56:39 +0000
@@ -2,8 +2,8 @@
CACHE:
../dhis-web-commons/javascripts/jQuery/jquery.min.js
-../dhis-web-commons/javascripts/jQuery/ui/jquery-ui-1.9.1.custom.min.js
-../dhis-web-commons/javascripts/jQuery/ui/css/redmond/jquery-ui-1.9.1.custom.css
+../dhis-web-commons/javascripts/jQuery/ui/jquery-ui.min.js
+../dhis-web-commons/javascripts/jQuery/ui/css/redmond/jquery-ui.css
../dhis-web-commons/fonts/LiberationSans-Regular-webfont.eot
../dhis-web-commons/fonts/LiberationSans-Regular-webfont.woff
=== added file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/home.html'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/home.html 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/home.html 2014-05-12 09:56:39 +0000
@@ -0,0 +1,131 @@
+<script src="../dhis-web-commons/ouwt/ouwt.js"></script>
+<script src="scripts/tracker-capture.js"></script>
+
+<div id="leftBar">
+ <div id="orgUnitTree" style="margin-top:20px">
+ <ul>
+ </ul>
+ </div>
+ <img id="ouwt_loader" src="../images/ajax-loader-bar.gif"/>
+</div>
+<div class="page" id="mainPage">
+ <h1>
+ <span ng-show="!selectedProgram">
+ {{'search'| translate}} {{selectedProgram.trackedEntity.name}}
+ </span>
+ <span ng-show="selectedProgram">
+ {{'search_for'| translate}} {{selectedProgram.trackedEntity.name}}
+ </span>
+ <a href ng-click="getHelpContent()" title="{{'help'| translate}}"><i class="fa fa-question-circle"></i></a>
+ </h1>
+
+ <div class="row">
+ <input type="text" selected-org-unit ng-model="selectedOrgUnit.name" ng-hide=true>
+ <div class="input-group col-md-6">
+ <input type="text" class="form-control" ng-focus="hideSearch()">
+ <span class="input-group-btn">
+ <button class="btn btn-default" type="button" title="{{'more' | translate}}" ng-click="showSearch()"><i class="fa fa-caret-down"></i></button>
+ </span>
+ </div>
+ <div class="btn-group col-md-6">
+ <button type="button" class="btn btn-default">{{'search'| translate}}</button>
+ <button type="button" class="btn btn-default" ng-click="loadTrackedEntities()">{{'list_all_entities'| translate}}</button>
+ <button type="button" class="btn btn-default" ng-click="showRegisteration()">{{'add_new'| translate}}</button>
+ </div>
+ </div>
+ <div class="row" ng-show="showSearchDiv">
+ <div class="col-md-6">
+ <div ng-include="'views/search.html'" ng-controller='SearchController'></div>
+ </div>
+ </div>
+
+
+ <!-- entity grid begins -->
+ <div ng-show="trackedEntityList">
+ <div id="listDiv" ng-switch="trackedEntityList">
+ <div ng-switch-when=""></div>
+ <div ng-switch-default>
+ <h2>
+ {{selectedProgram.trackedEntity.name|| 'entity' | translate}} {{'list'| translate}}
+ </h2>
+ <div ng-switch="trackedEntityList.rows.length">
+ <div ng-switch-when="undefined">
+ <p>
+ {{'empty'| translate}} {{selectedProgram.trackedEntity.name|| 'entity' | translate}} {{'list'| translate}}
+ </p>
+ </div>
+ <div ng-switch-when="0">
+ <p>
+ {{'empty'| translate}} {{selectedProgram.trackedEntity.name|| 'entity' | translate}} {{'list'| translate}}
+ </p>
+ </div>
+ <div ng-switch-default>
+
+ <!-- entity begins -->
+ <table class="listTable dhis2-table-striped-border dhis2-table-hover">
+ <thead>
+ <tr>
+ <th ng-show="!gridColumn.hide"
+ class="max-column-width"
+ ng-repeat="gridColumn in gridColumns">
+
+ <!-- sort icon begins -->
+ <span ng-hide="gridColumn.showFilter" class="bold" ng-click="sortGrid(gridColumn)">
+ <i ng-show="sortHeader == gridColumn.id && !reverse" class="fa fa-sort-desc"></i>
+ <i ng-show="sortHeader == gridColumn.id && reverse" class="fa fa-sort-asc"></i>
+ {{gridColumn.name}}
+ </span>
+ <!-- sort icon ends -->
+
+ <!-- filter icon begins -->
+ <span class='pull-right'>
+ <span ng-show="gridColumn.type !== 'date'">
+ <a href ng-click="filterInGrid(gridColumn)" title="{{'filter'| translate}}"><span ng-class="{true: 'filter - without - content', false: 'filter - with - content'} [filterText[gridColumn.id] == undefined || filterText[gridColumn.id] == '']"><i class="fa fa-filter"></i></span></a>
+ </span>
+ <span ng-show="gridColumn.type === 'date'">
+ <a href ng-click="filterInGrid(gridColumn)" title="{{'filter'| translate}}"><span ng-class="{true: 'filter - without - content', false: 'filter - with - content'} [(filterText[gridColumn.id].start == 'undefined' || filterText[gridColumn.id].start == '') && (filterText[gridColumn.id].end == 'undefined' || filterText[gridColumn.id].end == '')]"><i class="fa fa-filter"></i></span></a>
+ </span>
+ </span>
+ <!-- filter icon ends -->
+
+ <!-- filter input field begins -->
+ <div ng-show="gridColumn.showFilter">
+ <span ng-show="gridColumn.type !== 'date'">
+ <input type="text" ng-model="filterText[gridColumn.id]" ng-blur="filterInGrid(gridColumn)">
+ </span>
+ <span ng-show="gridColumn.type === 'date'">
+ <input placeholder="{{'start_date'| translate}}" type="text" ng-model="filterText[gridColumn.id].start" data-ng-date readonly="readonly">
+ <span ng-hide="filterText[gridColumn.id].start == 'undefined' || filterText[gridColumn.id].start == ''">
+ <a href ng-click='removeStartFilterText(gridColumn.id)'><span class='black'><i class="fa fa-trash-o"></i></span></a>
Follow ups