IDEMPIERE-5681 - Improve Date Picker by "Ago" option (#1792)
* IDEMPIERE-5681 - Improve Date Picker by "Ago" option * IDEMPIERE-5681 - improve code readability - added javadoc, modified method names * IDEMPIERE-5681 - fix wrong comment
This commit is contained in:
parent
23713f6461
commit
6a94b815cd
|
@ -0,0 +1,38 @@
|
||||||
|
-- IDEMPIERE-5681
|
||||||
|
SELECT register_migration_script('202304201135_IDEMPIERE-5681.sql') FROM dual;
|
||||||
|
|
||||||
|
SET SQLBLANKLINES ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:35:56 AM CEST
|
||||||
|
UPDATE AD_Ref_List SET Value='09',Updated=TO_TIMESTAMP('2023-04-20 11:35:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200568
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:36:02 AM CEST
|
||||||
|
UPDATE AD_Ref_List SET Value='08',Updated=TO_TIMESTAMP('2023-04-20 11:36:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200567
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:36:06 AM CEST
|
||||||
|
UPDATE AD_Ref_List SET Value='07',Updated=TO_TIMESTAMP('2023-04-20 11:36:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200566
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:36:10 AM CEST
|
||||||
|
UPDATE AD_Ref_List SET Value='06',Updated=TO_TIMESTAMP('2023-04-20 11:36:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200565
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:36:31 AM CEST
|
||||||
|
UPDATE AD_Ref_List SET Value='05',Updated=TO_TIMESTAMP('2023-04-20 11:36:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200564
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:36:41 AM CEST
|
||||||
|
INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200635,'Ago',200217,'04',0,0,'Y',TO_TIMESTAMP('2023-04-20 11:36:41','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-04-20 11:36:41','YYYY-MM-DD HH24:MI:SS'),100,'D','f6f26e66-3b5e-4d01-a675-74a82dc0bf8c')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 12:02:28 PM CEST
|
||||||
|
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','{0} {1,choice,1#{1}|1<{1}s} Ago',0,0,'Y',TO_TIMESTAMP('2023-04-20 12:02:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-04-20 12:02:28','YYYY-MM-DD HH24:MI:SS'),100,200834,'DatePickerAgo','D','ff71fce9-778d-4ce8-81bc-b6720527b05f')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 12:09:09 PM CEST
|
||||||
|
UPDATE AD_Message SET MsgText='{0} {1}{0,choice,1#|1<s} Ago',Updated=TO_TIMESTAMP('2023-04-20 12:09:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200834
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
-- IDEMPIERE-5681
|
||||||
|
SELECT register_migration_script('202304201135_IDEMPIERE-5681.sql') FROM dual;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:35:56 AM CEST
|
||||||
|
UPDATE AD_Ref_List SET Value='09',Updated=TO_TIMESTAMP('2023-04-20 11:35:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200568
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:36:02 AM CEST
|
||||||
|
UPDATE AD_Ref_List SET Value='08',Updated=TO_TIMESTAMP('2023-04-20 11:36:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200567
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:36:06 AM CEST
|
||||||
|
UPDATE AD_Ref_List SET Value='07',Updated=TO_TIMESTAMP('2023-04-20 11:36:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200566
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:36:10 AM CEST
|
||||||
|
UPDATE AD_Ref_List SET Value='06',Updated=TO_TIMESTAMP('2023-04-20 11:36:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200565
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:36:31 AM CEST
|
||||||
|
UPDATE AD_Ref_List SET Value='05',Updated=TO_TIMESTAMP('2023-04-20 11:36:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200564
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 11:36:41 AM CEST
|
||||||
|
INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200635,'Ago',200217,'04',0,0,'Y',TO_TIMESTAMP('2023-04-20 11:36:41','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-04-20 11:36:41','YYYY-MM-DD HH24:MI:SS'),100,'D','f6f26e66-3b5e-4d01-a675-74a82dc0bf8c')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 12:02:28 PM CEST
|
||||||
|
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','{0} {1,choice,1#{1}|1<{1}s} Ago',0,0,'Y',TO_TIMESTAMP('2023-04-20 12:02:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-04-20 12:02:28','YYYY-MM-DD HH24:MI:SS'),100,200834,'DatePickerAgo','D','ff71fce9-778d-4ce8-81bc-b6720527b05f')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 20, 2023, 12:09:09 PM CEST
|
||||||
|
UPDATE AD_Message SET MsgText='{0} {1}{0,choice,1#|1<s} Ago',Updated=TO_TIMESTAMP('2023-04-20 12:09:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200834
|
||||||
|
;
|
||||||
|
|
|
@ -89,12 +89,14 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
private static final String DATESELECTIONMODE_PREVIOUS = "01";
|
private static final String DATESELECTIONMODE_PREVIOUS = "01";
|
||||||
private static final String DATESELECTIONMODE_NEXT = "02";
|
private static final String DATESELECTIONMODE_NEXT = "02";
|
||||||
private static final String DATESELECTIONMODE_CURRENT = "03";
|
private static final String DATESELECTIONMODE_CURRENT = "03";
|
||||||
private static final String DATESELECTIONMODE_BEFORE = "04";
|
private static final String DATESELECTIONMODE_AGO = "04";
|
||||||
private static final String DATESELECTIONMODE_AFTER = "05";
|
private static final String DATESELECTIONMODE_BEFORE = "05";
|
||||||
private static final String DATESELECTIONMODE_ON = "06";
|
private static final String DATESELECTIONMODE_AFTER = "06";
|
||||||
private static final String DATESELECTIONMODE_BETWEEN = "07";
|
private static final String DATESELECTIONMODE_ON = "07";
|
||||||
private static final String DATESELECTIONMODE_QUICK = "08";
|
private static final String DATESELECTIONMODE_BETWEEN = "08";
|
||||||
|
private static final String DATESELECTIONMODE_QUICK = "09";
|
||||||
|
|
||||||
|
/** UI elements */
|
||||||
private Button okBtn;
|
private Button okBtn;
|
||||||
private Combobox modeCombobox;
|
private Combobox modeCombobox;
|
||||||
private Spinner numberBox;
|
private Spinner numberBox;
|
||||||
|
@ -147,6 +149,9 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize elements
|
||||||
|
*/
|
||||||
private void init() {
|
private void init() {
|
||||||
|
|
||||||
editor.addValueChangeListener(this);
|
editor.addValueChangeListener(this);
|
||||||
|
@ -301,8 +306,14 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
dateTo = dates[1];
|
dateTo = dates[1];
|
||||||
}
|
}
|
||||||
updateUI();
|
updateUI();
|
||||||
}
|
} // init
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set picker selection
|
||||||
|
* @param mode
|
||||||
|
* @param unit
|
||||||
|
* @param offset
|
||||||
|
*/
|
||||||
private void setPickerSelection(String mode, String unit, int offset) {
|
private void setPickerSelection(String mode, String unit, int offset) {
|
||||||
for(Comboitem item : modeCombobox.getItems()) {
|
for(Comboitem item : modeCombobox.getItems()) {
|
||||||
if(item.getValue().equals(mode))
|
if(item.getValue().equals(mode))
|
||||||
|
@ -316,8 +327,11 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
numberBox.setValue(numBoxValue);
|
numberBox.setValue(numBoxValue);
|
||||||
|
|
||||||
setDateTextBoxAndDisplayValue();
|
setDateTextBoxAndDisplayValue();
|
||||||
}
|
} // setPickerSelection
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update popup UI
|
||||||
|
*/
|
||||||
private void updateUI() {
|
private void updateUI() {
|
||||||
|
|
||||||
String selectedMode = modeCombobox.getSelectedItem().getValue().toString();
|
String selectedMode = modeCombobox.getSelectedItem().getValue().toString();
|
||||||
|
@ -365,6 +379,7 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
break;
|
break;
|
||||||
case DATESELECTIONMODE_NEXT:
|
case DATESELECTIONMODE_NEXT:
|
||||||
case DATESELECTIONMODE_PREVIOUS:
|
case DATESELECTIONMODE_PREVIOUS:
|
||||||
|
case DATESELECTIONMODE_AGO:
|
||||||
tabbox.setVisible(false);
|
tabbox.setVisible(false);
|
||||||
numberBox.setVisible(true);
|
numberBox.setVisible(true);
|
||||||
unitCombobox.setVisible(true);
|
unitCombobox.setVisible(true);
|
||||||
|
@ -383,7 +398,7 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
} // updateUI
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEvent(Event event) throws Exception {
|
public void onEvent(Event event) throws Exception {
|
||||||
|
@ -408,25 +423,32 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
if(!Util.isEmpty(dateTextBox.getValue()) || !event.getTarget().equals(dateTextBox)) {
|
if(!Util.isEmpty(dateTextBox.getValue()) || !event.getTarget().equals(dateTextBox)) {
|
||||||
setDateTextBoxAndDisplayValue();
|
setDateTextBoxAndDisplayValue();
|
||||||
}
|
}
|
||||||
}
|
} // onEvent
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the values of the DateTextBox in the popup and the DisplayValue for Text and Range Picker
|
||||||
|
*/
|
||||||
private void setDateTextBoxAndDisplayValue() {
|
private void setDateTextBoxAndDisplayValue() {
|
||||||
displayValue = "";
|
displayValue = "";
|
||||||
String dateTextBoxValue = getDateTextBoxValue();
|
String dateTextBoxValue = parseDateTextBoxValue();
|
||||||
dateTextBox.setValue(dateTextBoxValue);
|
dateTextBox.setValue(dateTextBoxValue);
|
||||||
|
|
||||||
if(Util.isEmpty(displayValue))
|
if(Util.isEmpty(displayValue))
|
||||||
displayValue = dateTextBoxValue;
|
displayValue = dateTextBoxValue;
|
||||||
}
|
} // setDateTextBoxAndDisplayValue
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return date range text, for e.g "01/01/2023 - 01/31/2023"
|
* @return date range text, for e.g "01/01/2023 - 01/31/2023"
|
||||||
*/
|
*/
|
||||||
public String getDateRangeText() {
|
public String getDateRangeText() {
|
||||||
return dateTextBox.getValue();
|
return dateTextBox.getValue();
|
||||||
}
|
} // getDateRangeText
|
||||||
|
|
||||||
private String getDateTextBoxValue() {
|
/**
|
||||||
|
* Parse the value shown in DateTextBox, set dateFrom and dateTo values
|
||||||
|
* @return String value shown in DateTextBox
|
||||||
|
*/
|
||||||
|
private String parseDateTextBoxValue() {
|
||||||
String returnVal = "";
|
String returnVal = "";
|
||||||
Date[] dates;
|
Date[] dates;
|
||||||
|
|
||||||
|
@ -434,10 +456,11 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
case DATESELECTIONMODE_PREVIOUS:
|
case DATESELECTIONMODE_PREVIOUS:
|
||||||
case DATESELECTIONMODE_NEXT:
|
case DATESELECTIONMODE_NEXT:
|
||||||
case DATESELECTIONMODE_CURRENT:
|
case DATESELECTIONMODE_CURRENT:
|
||||||
|
case DATESELECTIONMODE_AGO:
|
||||||
case DATESELECTIONMODE_BEFORE:
|
case DATESELECTIONMODE_BEFORE:
|
||||||
case DATESELECTIONMODE_AFTER:
|
case DATESELECTIONMODE_AFTER:
|
||||||
case DATESELECTIONMODE_ON:
|
case DATESELECTIONMODE_ON:
|
||||||
returnVal = getIntervalHumanReadable();
|
returnVal = getIntervalAsString();
|
||||||
break;
|
break;
|
||||||
case DATESELECTIONMODE_BETWEEN:
|
case DATESELECTIONMODE_BETWEEN:
|
||||||
returnVal = DisplayType.getDateFormat().format(cal.getValue()) + " - " + DisplayType.getDateFormat().format(cal2.getValue());
|
returnVal = DisplayType.getDateFormat().format(cal.getValue()) + " - " + DisplayType.getDateFormat().format(cal2.getValue());
|
||||||
|
@ -465,8 +488,11 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
throw new AdempiereException("InvalidDateSelectionMode");
|
throw new AdempiereException("InvalidDateSelectionMode");
|
||||||
}
|
}
|
||||||
return returnVal;
|
return returnVal;
|
||||||
}
|
} // parseDateTextBoxValue
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the picker selection based on the default date values set with auto-detection
|
||||||
|
*/
|
||||||
private void loadPickerSelection() {
|
private void loadPickerSelection() {
|
||||||
|
|
||||||
String detectedMode = null;
|
String detectedMode = null;
|
||||||
|
@ -505,8 +531,11 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
numberBox.setValue(numBoxValue);
|
numberBox.setValue(numBoxValue);
|
||||||
updateCal1AndCal2();
|
updateCal1AndCal2();
|
||||||
setDateTextBoxAndDisplayValue();
|
setDateTextBoxAndDisplayValue();
|
||||||
}
|
} // loadPickerSelection
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the picker calendars with current values
|
||||||
|
*/
|
||||||
private void updateCal1AndCal2() {
|
private void updateCal1AndCal2() {
|
||||||
if(dateFrom == null) {
|
if(dateFrom == null) {
|
||||||
cal.setValue(dateTo);
|
cal.setValue(dateTo);
|
||||||
|
@ -520,8 +549,13 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
cal.setValue(dateFrom);
|
cal.setValue(dateFrom);
|
||||||
cal2.setValue(dateTo);
|
cal2.setValue(dateTo);
|
||||||
}
|
}
|
||||||
}
|
} // updateCal1AndCal2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-detect the date selection mode based on the default date values set
|
||||||
|
* @param today
|
||||||
|
* @return String date selection mode (value)
|
||||||
|
*/
|
||||||
private String autodetectMode(Timestamp today) {
|
private String autodetectMode(Timestamp today) {
|
||||||
Date d1 = dateFrom;
|
Date d1 = dateFrom;
|
||||||
Date d2 = dateTo;
|
Date d2 = dateTo;
|
||||||
|
@ -550,8 +584,14 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return DATESELECTIONMODE_BETWEEN;
|
return DATESELECTIONMODE_BETWEEN;
|
||||||
}
|
} // autodetectMode
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-detect the time unit based on the default date values set, and correct the detected mode if necessary
|
||||||
|
* @param today
|
||||||
|
* @param predictedMode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
private String[] autodetectUnitAndCorrectMode(Timestamp today, String predictedMode) {
|
private String[] autodetectUnitAndCorrectMode(Timestamp today, String predictedMode) {
|
||||||
// use case: modes Before, After, On - unit is not needed
|
// use case: modes Before, After, On - unit is not needed
|
||||||
Date d1 = dateFrom;
|
Date d1 = dateFrom;
|
||||||
|
@ -638,8 +678,14 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
}
|
}
|
||||||
|
|
||||||
return new String[] {detectedUnit, correctedMode};
|
return new String[] {detectedUnit, correctedMode};
|
||||||
}
|
} // autodetectUnitAndCorrectMode
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-detect the time offset based on the default date values set
|
||||||
|
* @param mode
|
||||||
|
* @param unit
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
private int autodetectOffset(String mode, String unit) {
|
private int autodetectOffset(String mode, String unit) {
|
||||||
Date date = dateFrom;
|
Date date = dateFrom;
|
||||||
Date date2 = dateTo;
|
Date date2 = dateTo;
|
||||||
|
@ -664,9 +710,13 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
if(mode.equalsIgnoreCase(DATESELECTIONMODE_PREVIOUS))
|
if(mode.equalsIgnoreCase(DATESELECTIONMODE_PREVIOUS))
|
||||||
diff = -diff;
|
diff = -diff;
|
||||||
return (int) diff;
|
return (int) diff;
|
||||||
}
|
} // autodetectOffset
|
||||||
|
|
||||||
private String getIntervalHumanReadable() {
|
/**
|
||||||
|
* Get the currently selected date interval
|
||||||
|
* @return String dates separated by " - "
|
||||||
|
*/
|
||||||
|
private String getIntervalAsString() {
|
||||||
|
|
||||||
Timestamp ts = new Timestamp(cal.getValue().getTime());
|
Timestamp ts = new Timestamp(cal.getValue().getTime());
|
||||||
String mode = modeCombobox.getSelectedItem().getValue().toString();
|
String mode = modeCombobox.getSelectedItem().getValue().toString();
|
||||||
|
@ -703,11 +753,14 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
return displayValue;
|
return displayValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mode.equalsIgnoreCase(DATESELECTIONMODE_PREVIOUS))
|
if(mode.equalsIgnoreCase(DATESELECTIONMODE_PREVIOUS)
|
||||||
|
|| mode.equalsIgnoreCase(DATESELECTIONMODE_AGO))
|
||||||
numBoxValue = -numBoxValue;
|
numBoxValue = -numBoxValue;
|
||||||
|
|
||||||
if(mode.equalsIgnoreCase(DATESELECTIONMODE_CURRENT))
|
if(mode.equalsIgnoreCase(DATESELECTIONMODE_CURRENT))
|
||||||
dates = getInterval(unit, 0);
|
dates = getInterval(unit, 0);
|
||||||
|
else if(mode.equalsIgnoreCase(DATESELECTIONMODE_AGO))
|
||||||
|
dates = getInterval(unit, unit, numBoxValue.intValue(), false, false, null);
|
||||||
else
|
else
|
||||||
dates = getInterval(unit, numBoxValue.intValue());
|
dates = getInterval(unit, numBoxValue.intValue());
|
||||||
|
|
||||||
|
@ -719,12 +772,29 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
|
|
||||||
displayValue = datesToHumanReadable(mode, unit, numBoxValue);
|
displayValue = datesToHumanReadable(mode, unit, numBoxValue);
|
||||||
return DisplayType.getDateFormat().format(dateFrom) + " - " + DisplayType.getDateFormat().format(dateTo);
|
return DisplayType.getDateFormat().format(dateFrom) + " - " + DisplayType.getDateFormat().format(dateTo);
|
||||||
}
|
} // getIntervalAsString
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls {@link #getInterval(String, String, int, boolean, boolean, Date) getInterval} method
|
||||||
|
* @param timeUnit
|
||||||
|
* @param offset
|
||||||
|
* @return array of dates: {DateFrom, DateTo}
|
||||||
|
*/
|
||||||
private Date[] getInterval(String timeUnit, int offset) {
|
private Date[] getInterval(String timeUnit, int offset) {
|
||||||
return getInterval(timeUnit, null, offset, false, false, null);
|
return getInterval(timeUnit, null, offset, false, false, null);
|
||||||
}
|
} // getInterval
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate time interval based on the selected parameters.
|
||||||
|
* @param timeUnit - used with the offset parameter to set an exact date-time (e.g. current date-time 1 year ago)
|
||||||
|
* @param timeUnitForRange - after an exact date-time is set with timeUnit and offset, timeUnitForRange defines what time
|
||||||
|
* range should be defined around the exact date-time ((e.g. current day/week/month/year 1 year ago))
|
||||||
|
* @param offset - used with the timeUnit parameter to set an exact date-time (e.g. current date-time 1 year ago)
|
||||||
|
* @param isToDate - if false, set date from and to to the beginning and end of the given time interval
|
||||||
|
* @param includeThis - if true, it will include the current date (e.g. return from the beginning of last month until today/until end of last month)
|
||||||
|
* @param dateFrom - define date from (default now)
|
||||||
|
* @return array of dates: {DateFrom, DateTo}
|
||||||
|
*/
|
||||||
private Date[] getInterval(String timeUnit, String timeUnitForRange, int offset, boolean isToDate, boolean includeThis, Date dateFrom) {
|
private Date[] getInterval(String timeUnit, String timeUnitForRange, int offset, boolean isToDate, boolean includeThis, Date dateFrom) {
|
||||||
|
|
||||||
if(dateFrom == null)
|
if(dateFrom == null)
|
||||||
|
@ -840,17 +910,35 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
Date date2 = cal2.getTime();
|
Date date2 = cal2.getTime();
|
||||||
|
|
||||||
return new Date[] {date1, date2};
|
return new Date[] {date1, date2};
|
||||||
}
|
} // getInterval
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert dates to human readable form (e.g. Last Month)
|
||||||
|
* @param mode
|
||||||
|
* @param unit
|
||||||
|
* @param offset
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
private String datesToHumanReadable(String mode, String unit, Integer offset) {
|
private String datesToHumanReadable(String mode, String unit, Integer offset) {
|
||||||
String msgVal = "";
|
|
||||||
String modeVal = "";
|
|
||||||
|
|
||||||
if(offset < 0)
|
if(offset < 0)
|
||||||
offset = -offset;
|
offset = -offset;
|
||||||
if(mode.equalsIgnoreCase(DATESELECTIONMODE_CURRENT))
|
if(mode.equalsIgnoreCase(DATESELECTIONMODE_CURRENT))
|
||||||
offset = -1;
|
offset = -1;
|
||||||
|
|
||||||
|
String unitVal = "";
|
||||||
|
|
||||||
|
for(Comboitem item : unitCombobox.getItems()) {
|
||||||
|
if(item.getValue().equals(unit))
|
||||||
|
unitVal = item.getLabel();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(DATESELECTIONMODE_AGO.equals(mode))
|
||||||
|
return Msg.getMsg(Env.getCtx(), "DatePickerAgo", new Object[] {offset, unitVal});
|
||||||
|
|
||||||
|
String msgVal = "";
|
||||||
|
String modeVal = "";
|
||||||
|
|
||||||
switch (unit) {
|
switch (unit) {
|
||||||
case MChart.TIMEUNIT_Day:
|
case MChart.TIMEUNIT_Day:
|
||||||
msgVal = "DatePickerDay";
|
msgVal = "DatePickerDay";
|
||||||
|
@ -875,8 +963,14 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
modeVal = item.getLabel();
|
modeVal = item.getLabel();
|
||||||
}
|
}
|
||||||
return Msg.getMsg(Env.getCtx(), msgVal, new Object[]{modeVal, offset});
|
return Msg.getMsg(Env.getCtx(), msgVal, new Object[]{modeVal, offset});
|
||||||
}
|
} // datesToHumanReadable
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set time on dateFrom: 00:00:00; on dateTo: 23:59:99
|
||||||
|
* @param dateFrom
|
||||||
|
* @param dateTo
|
||||||
|
* @return date array {dateFrom, dateTo}
|
||||||
|
*/
|
||||||
private Date[] setTimesOnDates(Date dateFrom, Date dateTo) {
|
private Date[] setTimesOnDates(Date dateFrom, Date dateTo) {
|
||||||
Calendar cal = Calendar.getInstance(Env.getLocale(Env.getCtx()));
|
Calendar cal = Calendar.getInstance(Env.getLocale(Env.getCtx()));
|
||||||
if(dateFrom != null) {
|
if(dateFrom != null) {
|
||||||
|
@ -898,16 +992,28 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
dateTo = new Timestamp(cal.getTime().getTime());
|
dateTo = new Timestamp(cal.getTime().getTime());
|
||||||
}
|
}
|
||||||
return new Date[] {dateFrom, dateTo};
|
return new Date[] {dateFrom, dateTo};
|
||||||
}
|
} // setTimesOnDates
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a ListItem for Quick mode
|
||||||
|
* @param value
|
||||||
|
* @param timeUnit
|
||||||
|
* @param offset
|
||||||
|
* @param dateFrom
|
||||||
|
* @return ListItem
|
||||||
|
*/
|
||||||
private ListItem createItem(String value, String timeUnit, int offset, Date dateFrom) {
|
private ListItem createItem(String value, String timeUnit, int offset, Date dateFrom) {
|
||||||
ListItem item = new ListItem(value, value);
|
ListItem item = new ListItem(value, value);
|
||||||
item.setAttribute("Offset", offset);
|
item.setAttribute("Offset", offset);
|
||||||
item.setAttribute("TimeUnit", timeUnit);
|
item.setAttribute("TimeUnit", timeUnit);
|
||||||
item.setAttribute("DateFrom", dateFrom);
|
item.setAttribute("DateFrom", dateFrom);
|
||||||
return item;
|
return item;
|
||||||
}
|
} // createItem
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize Quick mode content
|
||||||
|
* @return Div
|
||||||
|
*/
|
||||||
private Div getQuickModeContent() {
|
private Div getQuickModeContent() {
|
||||||
|
|
||||||
Calendar cNow = Calendar.getInstance(Env.getLocale(Env.getCtx()));
|
Calendar cNow = Calendar.getInstance(Env.getLocale(Env.getCtx()));
|
||||||
|
@ -1015,7 +1121,7 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
div.appendChild(wrapperDiv2);
|
div.appendChild(wrapperDiv2);
|
||||||
|
|
||||||
return div;
|
return div;
|
||||||
}
|
} // getQuickModeContent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Display Value
|
* Get Display Value
|
||||||
|
@ -1023,37 +1129,34 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
*/
|
*/
|
||||||
public String getDisplayValue() {
|
public String getDisplayValue() {
|
||||||
return this.displayValue;
|
return this.displayValue;
|
||||||
}
|
} // getDisplayValue
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add value change listener
|
* Add value change listener
|
||||||
* @param listener
|
* @param listener
|
||||||
*/
|
*/
|
||||||
public void addValueChangeListener(ValueChangeListener listener)
|
public void addValueChangeListener(ValueChangeListener listener) {
|
||||||
{
|
|
||||||
if (listener == null)
|
if (listener == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!listeners.contains(listener))
|
if (!listeners.contains(listener))
|
||||||
listeners.add(listener);
|
listeners.add(listener);
|
||||||
}
|
} // addValueChangeListener
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove value change listener
|
* Remove value change listener
|
||||||
* @param listener
|
* @param listener
|
||||||
* @return true if the class had the specified listener
|
* @return true if the class had the specified listener
|
||||||
*/
|
*/
|
||||||
public boolean removeValuechangeListener(ValueChangeListener listener)
|
public boolean removeValuechangeListener(ValueChangeListener listener) {
|
||||||
{
|
|
||||||
return listeners.remove(listener);
|
return listeners.remove(listener);
|
||||||
}
|
} // removeValuechangeListener
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fire value change event
|
* Fire value change event
|
||||||
* @param event
|
* @param event
|
||||||
*/
|
*/
|
||||||
protected void fireValueChange(ValueChangeEvent event)
|
protected void fireValueChange(ValueChangeEvent event) {
|
||||||
{
|
|
||||||
//copy to array to avoid concurrent modification exception
|
//copy to array to avoid concurrent modification exception
|
||||||
ValueChangeListener[] vcl = new ValueChangeListener[listeners.size()];
|
ValueChangeListener[] vcl = new ValueChangeListener[listeners.size()];
|
||||||
listeners.toArray(vcl);
|
listeners.toArray(vcl);
|
||||||
|
@ -1061,7 +1164,7 @@ public class DateRangePicker extends Popup implements EventListener<Event>, Valu
|
||||||
{
|
{
|
||||||
listener.valueChange(event);
|
listener.valueChange(event);
|
||||||
}
|
}
|
||||||
}
|
} // fireValueChange
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void valueChange(ValueChangeEvent evt) {
|
public void valueChange(ValueChangeEvent evt) {
|
||||||
|
|
Loading…
Reference in New Issue