Browse Source

Merge pull request #159 from henninghall/locale-dateformat-refactor

Refactor date format and locale
master
Henning Hall 5 years ago
committed by GitHub
parent
commit
281b46f063
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 2012 additions and 1913 deletions
  1. +1
    -1
      android/src/main/java/com/henninghall/date_picker/DateBoundary.java
  2. +5
    -19
      android/src/main/java/com/henninghall/date_picker/EmptyWheelUpdater.java
  3. +49
    -0
      android/src/main/java/com/henninghall/date_picker/LocaleUtils.java
  4. +35
    -59
      android/src/main/java/com/henninghall/date_picker/PickerView.java
  5. +10
    -1
      android/src/main/java/com/henninghall/date_picker/Style.java
  6. +34
    -23
      android/src/main/java/com/henninghall/date_picker/Utils.java
  7. +9
    -3
      android/src/main/java/com/henninghall/date_picker/WheelChangeListenerImpl.java
  8. +109
    -0
      android/src/main/java/com/henninghall/date_picker/WheelOrder.java
  9. +0
    -40
      android/src/main/java/com/henninghall/date_picker/WheelOrderUpdater.java
  10. +5
    -0
      android/src/main/java/com/henninghall/date_picker/WheelType.java
  11. +6
    -12
      android/src/main/java/com/henninghall/date_picker/wheels/AmPmWheel.java
  12. +16
    -14
      android/src/main/java/com/henninghall/date_picker/wheels/DateWheel.java
  13. +36
    -38
      android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java
  14. +8
    -7
      android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java
  15. +7
    -8
      android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java
  16. +11
    -27
      android/src/main/java/com/henninghall/date_picker/wheels/MonthWheel.java
  17. +44
    -20
      android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java
  18. +14
    -10
      android/src/main/java/com/henninghall/date_picker/wheels/YearWheel.java
  19. +6
    -1
      examples/advanced/.watchmanconfig
  20. +1
    -0
      examples/advanced/android/settings.gradle
  21. +5
    -0
      examples/advanced/index.android.js
  22. +0
    -1
      examples/advanced/ios/Podfile
  23. +9
    -3
      examples/advanced/ios/Podfile.lock
  24. +27
    -26
      examples/advanced/package.json
  25. +1565
    -1600
      examples/advanced/yarn.lock

+ 1
- 1
android/src/main/java/com/henninghall/date_picker/DateBoundary.java View File

@ -5,7 +5,7 @@ import java.util.Calendar;
public class DateBoundary { public class DateBoundary {
private Calendar date; private Calendar date;
public DateBoundary(PickerView pickerView, String date) {
DateBoundary(PickerView pickerView, String date) {
if(date == null) return; if(date == null) return;
Calendar cal = Utils.isoToCalendar(date, pickerView.timeZone); Calendar cal = Utils.isoToCalendar(date, pickerView.timeZone);
this.date = Utils.getTruncatedCalendarOrNull(cal); this.date = Utils.getTruncatedCalendarOrNull(cal);

+ 5
- 19
android/src/main/java/com/henninghall/date_picker/EmptyWheelUpdater.java View File

@ -8,12 +8,6 @@ public class EmptyWheelUpdater {
private final PickerView pickerView; private final PickerView pickerView;
private final HashMap<Integer, NumberPickerView> views; private final HashMap<Integer, NumberPickerView> views;
private int[] ids = {
R.id.empty1,
R.id.empty2,
R.id.empty3
};
EmptyWheelUpdater(PickerView pickerView) { EmptyWheelUpdater(PickerView pickerView) {
this.pickerView = pickerView; this.pickerView = pickerView;
this.views = getViews(); this.views = getViews();
@ -21,32 +15,24 @@ public class EmptyWheelUpdater {
private HashMap<Integer, NumberPickerView> getViews() { private HashMap<Integer, NumberPickerView> getViews() {
HashMap<Integer, NumberPickerView> views = new HashMap<>(); HashMap<Integer, NumberPickerView> views = new HashMap<>();
for (int id: ids) {
for (int id: Utils.emptyWheelIds) {
NumberPickerView view = (NumberPickerView) pickerView.findViewById(id); NumberPickerView view = (NumberPickerView) pickerView.findViewById(id);
views.put(id, view); views.put(id, view);
} }
return views; return views;
} }
void update(Mode mode) {
void update() {
hideAll(); hideAll();
int numberOfVisibleWheels = pickerView.getVisibleWheels().size(); int numberOfVisibleWheels = pickerView.getVisibleWheels().size();
int emptyViewsToAdd = numberOfVisibleWheels - 1;
int numberOfPickerWheelsBeforeMode = getNumberOfPickerWheelsBeforeMode(mode);
int emptyViewsToAdd = numberOfVisibleWheels + 1;
for (int i = 0; i < emptyViewsToAdd; i++) { for (int i = 0; i < emptyViewsToAdd; i++) {
int index = numberOfPickerWheelsBeforeMode + 1 + i * 2;
pickerView.wheelsWrapper.addView(views.get(ids[i]), index);
int index = i * 2;
pickerView.wheelsWrapper.addView(views.get(Utils.emptyWheelIds[i]), index);
} }
} }
private int getNumberOfPickerWheelsBeforeMode(Mode mode) {
if(mode == Mode.date) return 1;
if(mode == Mode.datetime) return 4;
if(mode == Mode.time) return 5;
return 0;
}
private void hideAll() { private void hideAll() {
for (NumberPickerView view: views.values()) { for (NumberPickerView view: views.values()) {
pickerView.wheelsWrapper.removeView(view); pickerView.wheelsWrapper.removeView(view);

+ 49
- 0
android/src/main/java/com/henninghall/date_picker/LocaleUtils.java View File

@ -0,0 +1,49 @@
package com.henninghall.date_picker;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Locale;
public class LocaleUtils {
private static ArrayList<String> getFullPatternPieces(Locale locale){
return Utils.splitOnSpace(getDatePattern(locale));
}
/**
@return Full pattern including special char. Example: Year pattern char be "y" for most
locales but "y년" for korean.
*/
public static String getPatternIncluding(String format, Locale locale) {
for (String piece: getFullPatternPieces(locale)){
if(piece.contains(format)) {
return piece;
}
}
return null;
}
public static int getFullPatternPos(String format, Locale locale) {
ArrayList<String> pieces = getFullPatternPieces(locale);
for (String piece: pieces){
if(piece.contains(format)) {
return pieces.indexOf(piece);
}
}
return -1;
}
public static String getDatePattern(Locale locale){
DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, locale);
return ((SimpleDateFormat)df).toLocalizedPattern().replace(",", "");
}
static String getDateTimePattern(Locale locale){
DateFormat format = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locale);
return ((SimpleDateFormat)format).toLocalizedPattern().replace(",", "");
}
}

+ 35
- 59
android/src/main/java/com/henninghall/date_picker/PickerView.java View File

@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collection; import java.util.Collection;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.TimeZone; import java.util.TimeZone;
@ -33,11 +34,10 @@ import cn.carbswang.android.numberpickerview.library.NumberPickerView;
public class PickerView extends RelativeLayout { public class PickerView extends RelativeLayout {
public LinearLayout wheelsWrapper; public LinearLayout wheelsWrapper;
public SimpleDateFormat dateFormat;
private HourWheel hourWheel;
private DayWheel dayWheel;
public HourWheel hourWheel;
public DayWheel dayWheel;
public MinutesWheel minutesWheel; public MinutesWheel minutesWheel;
private AmPmWheel ampmWheel;
public AmPmWheel ampmWheel;
public int minuteInterval = 1; public int minuteInterval = 1;
public Locale locale; public Locale locale;
public Mode mode; public Mode mode;
@ -45,8 +45,8 @@ public class PickerView extends RelativeLayout {
public DateWheel dateWheel; public DateWheel dateWheel;
public MonthWheel monthWheel; public MonthWheel monthWheel;
public YearWheel yearWheel; public YearWheel yearWheel;
private WheelOrderUpdater wheelOrderUpdater;
private EmptyWheelUpdater emptyWheelUpdater;
private WheelOrder wheelOrder;
EmptyWheelUpdater emptyWheelUpdater;
public boolean requireDisplayValueUpdate = true; public boolean requireDisplayValueUpdate = true;
public TimeZone timeZone = TimeZone.getDefault(); public TimeZone timeZone = TimeZone.getDefault();
private DateBoundary minDate; private DateBoundary minDate;
@ -57,15 +57,13 @@ public class PickerView extends RelativeLayout {
super(DatePickerManager.context); super(DatePickerManager.context);
View rootView = inflate(getContext(), R.layout.datepicker_view, this); View rootView = inflate(getContext(), R.layout.datepicker_view, this);
this.style = new Style(this);
this.wheelOrderUpdater = new WheelOrderUpdater(this);
this.emptyWheelUpdater = new EmptyWheelUpdater(this);
style = new Style(this);
locale = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? Locale.forLanguageTag("en") : Locale.getDefault();
wheelsWrapper = (LinearLayout) rootView.findViewById(R.id.wheelsWrapper); wheelsWrapper = (LinearLayout) rootView.findViewById(R.id.wheelsWrapper);
wheelsWrapper.setWillNotDraw(false); wheelsWrapper.setWillNotDraw(false);
locale = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? Locale.forLanguageTag("en") : Locale.getDefault();
yearWheel = new YearWheel( this, R.id.year); yearWheel = new YearWheel( this, R.id.year);
monthWheel = new MonthWheel( this, R.id.month); monthWheel = new MonthWheel( this, R.id.month);
dateWheel = new DateWheel( this, R.id.date); dateWheel = new DateWheel( this, R.id.date);
@ -74,7 +72,9 @@ public class PickerView extends RelativeLayout {
ampmWheel = new AmPmWheel(this, R.id.ampm); ampmWheel = new AmPmWheel(this, R.id.ampm);
hourWheel = new HourWheel(this, R.id.hour); hourWheel = new HourWheel(this, R.id.hour);
setDateFormat();
emptyWheelUpdater = new EmptyWheelUpdater(this);
wheelOrder = new WheelOrder(this);
changeAmPmWhenPassingMidnightOrNoon(); changeAmPmWhenPassingMidnightOrNoon();
} }
@ -116,14 +116,11 @@ public class PickerView extends RelativeLayout {
public void setDate(String isoDate) { public void setDate(String isoDate) {
Calendar cal = Utils.isoToCalendar(isoDate, timeZone); Calendar cal = Utils.isoToCalendar(isoDate, timeZone);
applyOnAllWheels(new SetDate(cal)); applyOnAllWheels(new SetDate(cal));
update2DigitYearStart(cal);
} }
public void setLocale(Locale locale) { public void setLocale(Locale locale) {
this.locale = locale; this.locale = locale;
setDateFormat();
wheelOrderUpdater.update(locale, mode);
emptyWheelUpdater.update(mode);
wheelOrder.update(locale);
requireDisplayValueUpdate = true; requireDisplayValueUpdate = true;
} }
@ -133,7 +130,7 @@ public class PickerView extends RelativeLayout {
} }
// Rounding cal to closest minute interval // Rounding cal to closest minute interval
public Calendar getInitialDate() {
public Calendar getInitialDate() {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
if(minuteInterval <= 1) return cal; if(minuteInterval <= 1) return cal;
int exactMinute = Integer.valueOf(minutesWheel.format.format(cal.getTime())); int exactMinute = Integer.valueOf(minutesWheel.format.format(cal.getTime()));
@ -146,23 +143,27 @@ public class PickerView extends RelativeLayout {
return (Calendar) cal.clone(); return (Calendar) cal.clone();
} }
private String getDateFormatTemplate() {
String dateTemplate = (mode == Mode.date)
? (yearWheel.getFormatTemplate() + " "
+ monthWheel.getFormatTemplate() + " "
+ dateWheel.getFormatTemplate())
: dayWheel.getFormatTemplate();
return dateTemplate + " "
+ hourWheel.getFormatTemplate() + " "
+ minutesWheel.getFormatTemplate()
+ ampmWheel.getFormatTemplate();
private String getDateFormatPattern(){
if(mode == Mode.date){
return wheelOrder.getVisibleWheel(0).getFormatPattern() + " "
+ wheelOrder.getVisibleWheel(1).getFormatPattern() + " "
+ wheelOrder.getVisibleWheel(2).getFormatPattern();
}
return dayWheel.getFormatPattern();
}
private String getFormatPattern() {
return this.getDateFormatPattern() + " "
+ hourWheel.getFormatPattern() + " "
+ minutesWheel.getFormatPattern()
+ ampmWheel.getFormatPattern();
} }
public String getDateString() { public String getDateString() {
String dateString= (mode == Mode.date)
? (yearWheel.getValue() + " "
+ monthWheel.getValue() + " "
+ dateWheel.getValue())
String dateString = (mode == Mode.date)
? wheelOrder.getVisibleWheel(0).getValue() + " "
+ wheelOrder.getVisibleWheel(1).getValue() + " "
+ wheelOrder.getVisibleWheel(2).getValue()
: dayWheel.getValue(); : dayWheel.getValue();
return dateString return dateString
+ " " + hourWheel.getValue() + " " + hourWheel.getValue()
@ -172,10 +173,8 @@ public class PickerView extends RelativeLayout {
public void setMode(Mode mode) { public void setMode(Mode mode) {
this.mode = mode; this.mode = mode;
setDateFormat();
applyOnAllWheels(new UpdateVisibility()); applyOnAllWheels(new UpdateVisibility());
wheelOrderUpdater.update(locale, mode);
emptyWheelUpdater.update(mode);
wheelOrder.update(locale);
requireDisplayValueUpdate = true; requireDisplayValueUpdate = true;
} }
@ -229,31 +228,8 @@ public class PickerView extends RelativeLayout {
return maxDate.get(); return maxDate.get();
} }
public void setDateFormat(){
dateFormat = new SimpleDateFormat(getDateFormatTemplate(), Locale.US);
protected SimpleDateFormat getDateFormat() {
return new SimpleDateFormat(getFormatPattern(), locale);
} }
public void update2DigitYearStart(Calendar selectedDate){
Calendar cal = (Calendar) selectedDate.clone();
cal.add(Calendar.YEAR, -50); // subtract 50 years to hit the middle of the century
dateFormat.set2DigitYearStart(cal.getTime());
}
public void setShownCountOnEmptyWheels(int shownCount) {
int[] ids = {
R.id.emptyStart,
R.id.empty1,
R.id.empty2,
R.id.empty3,
R.id.emptyEnd
};
for (int id : ids) {
NumberPickerView view = (NumberPickerView) findViewById(id);
if(view != null) view.setShownCount(shownCount);
}
}
} }

+ 10
- 1
android/src/main/java/com/henninghall/date_picker/Style.java View File

@ -8,6 +8,8 @@ import android.widget.ImageView;
import com.henninghall.date_picker.wheelFunctions.SetShowCount; import com.henninghall.date_picker.wheelFunctions.SetShowCount;
import com.henninghall.date_picker.wheelFunctions.TextColor; import com.henninghall.date_picker.wheelFunctions.TextColor;
import cn.carbswang.android.numberpickerview.library.NumberPickerView;
class Style { class Style {
private static int DP_PER_SHOW_SHOW_COUNT = 35; private static int DP_PER_SHOW_SHOW_COUNT = 35;
@ -44,7 +46,14 @@ class Style {
int showCount = height / DP_PER_SHOW_SHOW_COUNT; int showCount = height / DP_PER_SHOW_SHOW_COUNT;
int oddShowCount = showCount % 2 == 0 ? showCount + 1 : showCount; int oddShowCount = showCount % 2 == 0 ? showCount + 1 : showCount;
pickerView.applyOnAllWheels(new SetShowCount(oddShowCount)); pickerView.applyOnAllWheels(new SetShowCount(oddShowCount));
pickerView.setShownCountOnEmptyWheels(oddShowCount);
setShownCountOnEmptyWheels(oddShowCount);
}
private void setShownCountOnEmptyWheels(int shownCount) {
for (int id : Utils.emptyWheelIds) {
NumberPickerView view = (NumberPickerView) pickerView.findViewById(id);
if(view != null) view.setShownCount(shownCount);
}
} }
private boolean validColor(String color){ private boolean validColor(String color){

+ 34
- 23
android/src/main/java/com/henninghall/date_picker/Utils.java View File

@ -1,26 +1,28 @@
package com.henninghall.date_picker; package com.henninghall.date_picker;
import android.content.Context;
import android.content.res.Resources;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import net.time4j.PrettyTime; import net.time4j.PrettyTime;
import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Collections;
import java.util.Locale; import java.util.Locale;
import java.util.TimeZone; import java.util.TimeZone;
public class Utils { public class Utils {
public static int[] emptyWheelIds = {
R.id.emptyStart,
R.id.empty1,
R.id.empty2,
R.id.empty3,
R.id.emptyEnd
};
public static String printToday(Locale locale) { public static String printToday(Locale locale) {
return PrettyTime.of(locale).printToday(); return PrettyTime.of(locale).printToday();
} }
@ -41,15 +43,6 @@ public class Utils {
return getIsoUTCFormat().format(date.getTime()); return getIsoUTCFormat().format(date.getTime());
} }
public static boolean monthNameBeforeMonthDate(Locale locale){
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
GregorianCalendar calendar = new GregorianCalendar();
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.MONTH, 2);
String string = df.format(calendar.getTime());
return !string.startsWith("1") && !string.startsWith("01");
}
public static boolean isToday(Calendar cal){ public static boolean isToday(Calendar cal){
return DateUtils.isToday(cal.getTimeInMillis()); return DateUtils.isToday(cal.getTimeInMillis());
} }
@ -69,12 +62,30 @@ public class Utils {
return format; return format;
} }
public static float dpToPixels(int dp, Context context){
return TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
dp,
context.getResources().getDisplayMetrics()
);
public static ArrayList<String> splitOnSpace(String value){
String[] array = value.split(" ");
ArrayList<String> arrayList = new ArrayList<>();
Collections.addAll(arrayList, array);
return arrayList;
}
public static String capitalize(String s){
return s.substring(0, 1).toUpperCase() + s.substring(1);
} }
public static WheelType patternCharToWheelType(char patternChar) throws Exception {
switch (patternChar){
case 'y': return WheelType.YEAR;
case 'M': return WheelType.MONTH;
case 'd': return WheelType.DATE;
case 'h':
case 'H':
return WheelType.HOUR;
case 'm': return WheelType.MINUTE;
case 'a': return WheelType.AM_PM;
default: throw new Exception("Invalid pattern char: " + patternChar);
}
}
} }

+ 9
- 3
android/src/main/java/com/henninghall/date_picker/WheelChangeListenerImpl.java View File

@ -6,14 +6,17 @@ import com.facebook.react.uimanager.events.RCTEventEmitter;
import com.henninghall.date_picker.wheelFunctions.AnimateToDate; import com.henninghall.date_picker.wheelFunctions.AnimateToDate;
import com.henninghall.date_picker.wheels.Wheel; import com.henninghall.date_picker.wheels.Wheel;
import java.text.DateFormat;
import java.text.FieldPosition;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone; import java.util.TimeZone;
public class WheelChangeListenerImpl implements WheelChangeListener { public class WheelChangeListenerImpl implements WheelChangeListener {
private final PickerView pickerView; private final PickerView pickerView;
public WheelChangeListenerImpl(PickerView pickerView) { public WheelChangeListenerImpl(PickerView pickerView) {
@ -24,13 +27,16 @@ public class WheelChangeListenerImpl implements WheelChangeListener {
public void onChange(Wheel picker) { public void onChange(Wheel picker) {
WritableMap event = Arguments.createMap(); WritableMap event = Arguments.createMap();
TimeZone timeZone = pickerView.timeZone; TimeZone timeZone = pickerView.timeZone;
SimpleDateFormat dateFormat = pickerView.dateFormat;
SimpleDateFormat dateFormat = pickerView.getDateFormat();
Calendar minDate = pickerView.getMinimumDate(); Calendar minDate = pickerView.getMinimumDate();
Calendar maxDate = pickerView.getMaximumDate(); Calendar maxDate = pickerView.getMaximumDate();
try { try {
dateFormat.setTimeZone(timeZone); dateFormat.setTimeZone(timeZone);
Calendar date = Calendar.getInstance(timeZone); Calendar date = Calendar.getInstance(timeZone);
date.setTime(dateFormat.parse(this.pickerView.getDateString()));
String toParse = this.pickerView.getDateString();
Date newDate = dateFormat.parse(toParse);
date.setTime(newDate);
if (minDate != null && date.before(minDate)) pickerView.applyOnVisibleWheels( if (minDate != null && date.before(minDate)) pickerView.applyOnVisibleWheels(
new AnimateToDate(minDate) new AnimateToDate(minDate)

+ 109
- 0
android/src/main/java/com/henninghall/date_picker/WheelOrder.java View File

@ -0,0 +1,109 @@
package com.henninghall.date_picker;
import com.henninghall.date_picker.wheels.Wheel;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Locale;
public class WheelOrder
{
private final HashMap<WheelType, Wheel> wheelPerWheelType;
private PickerView pickerView;
private ArrayList<WheelType> orderedWheels;
WheelOrder(final PickerView view) {
this.pickerView = view;
this.wheelPerWheelType = new HashMap<WheelType, Wheel>() {{
put(WheelType.DAY, pickerView.dayWheel);
put(WheelType.YEAR, pickerView.yearWheel);
put(WheelType.MONTH, pickerView.monthWheel);
put(WheelType.DATE, pickerView.dateWheel);
put(WheelType.HOUR, pickerView.hourWheel);
put(WheelType.MINUTE, pickerView.minutesWheel);
put(WheelType.AM_PM, pickerView.ampmWheel);
}};
}
private void updateValueWheels(final Locale locale) {
try {
this.orderedWheels = getOrderedWheels(locale);
pickerView.wheelsWrapper.removeAllViews();
for (int i = 0; i < wheelPerWheelType.size(); i++) {
Wheel w = getWheels(i);
if(w.visible()) {
pickerView.wheelsWrapper.addView(w.picker);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
void update(final Locale locale) {
updateValueWheels(locale);
pickerView.emptyWheelUpdater.update();
}
private Wheel getWheels(int index){
return wheelPerWheelType.get(orderedWheels.get(index));
}
Wheel getVisibleWheel(int index){
return getVisibleWheels().get(index);
}
private ArrayList<Wheel> getVisibleWheels() {
ArrayList<Wheel> visibleOrderedWheels = new ArrayList<>();
for (WheelType wheelType : orderedWheels){
Wheel wheel = wheelPerWheelType.get(wheelType);
if(wheel.visible()) {
visibleOrderedWheels.add(wheel);
}
}
return visibleOrderedWheels;
}
private ArrayList<WheelType> getOrderedWheels(Locale locale) throws Exception {
String dateTimePattern = LocaleUtils.getDateTimePattern(locale);
ArrayList<WheelType> unorderedTypes = new ArrayList(Arrays.asList(WheelType.values()));
ArrayList<WheelType> orderedWheels = new ArrayList<>();
// Always put day wheel first
unorderedTypes.remove(WheelType.DAY);
orderedWheels.add(WheelType.DAY);
for (char ch : dateTimePattern.toCharArray()){
try {
WheelType wheelType = Utils.patternCharToWheelType(ch);
if (unorderedTypes.contains(wheelType)) {
unorderedTypes.remove(wheelType);
orderedWheels.add(wheelType);
}
} catch (Exception e) {
// ignore unknown pattern chars that not correspond to any wheel type
}
}
// If AM/PM wheel remains it means that the locale does not have AM/PM by default and it
// should be put last.
if(unorderedTypes.contains(WheelType.AM_PM)){
unorderedTypes.remove(WheelType.AM_PM);
orderedWheels.add(WheelType.AM_PM);
}
if(!unorderedTypes.isEmpty()) {
throw new Exception(unorderedTypes.size() + " wheel types cannot be ordered. Wheel type 0: " + unorderedTypes.get(0));
}
return orderedWheels;
}
}

+ 0
- 40
android/src/main/java/com/henninghall/date_picker/WheelOrderUpdater.java View File

@ -1,40 +0,0 @@
package com.henninghall.date_picker;
import com.henninghall.date_picker.wheels.Wheel;
import com.henninghall.date_picker.wheels.YearWheel;
import java.util.ArrayList;
import java.util.Locale;
public class WheelOrderUpdater
{
private final PickerView pickerView;
WheelOrderUpdater(final PickerView v) {
this.pickerView = v;
}
public void update(final Locale locale, final Mode mode) {
if (mode != Mode.date) return;
final ArrayList<Wheel> wheelOrder = this.localeToWheelOrder(locale);
pickerView.wheelsWrapper.removeView(wheelOrder.get(0).picker);
pickerView.wheelsWrapper.removeView(wheelOrder.get(1).picker);
pickerView.wheelsWrapper.addView(wheelOrder.get(0).picker, 1); // 0 and 2 are emptyWheels
pickerView.wheelsWrapper.addView(wheelOrder.get(1).picker, 2); // 0 and 2 are emptyWheels
}
private ArrayList<Wheel> localeToWheelOrder(final Locale locale) {
final ArrayList<Wheel> wheelList = new ArrayList<Wheel>();
if (Utils.monthNameBeforeMonthDate(locale)) {
wheelList.add(this.pickerView.monthWheel);
wheelList.add(this.pickerView.dateWheel);
}
else {
wheelList.add(this.pickerView.dateWheel);
wheelList.add(this.pickerView.monthWheel);
}
return wheelList;
}
}

+ 5
- 0
android/src/main/java/com/henninghall/date_picker/WheelType.java View File

@ -0,0 +1,5 @@
package com.henninghall.date_picker;
public enum WheelType {
DAY, DATE, MONTH, YEAR, HOUR, MINUTE, AM_PM
}

+ 6
- 12
android/src/main/java/com/henninghall/date_picker/wheels/AmPmWheel.java View File

@ -5,8 +5,8 @@ import android.graphics.Paint;
import com.henninghall.date_picker.Mode; import com.henninghall.date_picker.Mode;
import com.henninghall.date_picker.PickerView; import com.henninghall.date_picker.PickerView;
import com.henninghall.date_picker.Settings; import com.henninghall.date_picker.Settings;
import com.henninghall.date_picker.WheelPosition;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
@ -17,22 +17,16 @@ public class AmPmWheel extends Wheel {
} }
@Override @Override
void init() {
Calendar cal = pickerView.getInitialDate();
public ArrayList<String> getValues() {
Calendar cal = Calendar.getInstance();
ArrayList<String> values = new ArrayList<>();
cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.HOUR_OF_DAY, 0);
displayValues.add(displayFormat.format(cal.getTime()));
values.add(format.format(cal.getTime())); values.add(format.format(cal.getTime()));
cal.add(Calendar.HOUR_OF_DAY, 12); cal.add(Calendar.HOUR_OF_DAY, 12);
displayValues.add(displayFormat.format(cal.getTime()));
values.add(format.format(cal.getTime())); values.add(format.format(cal.getTime()));
picker.setDisplayedValues(displayValues.toArray(new String[0]));
picker.setMinValue(0);
picker.setMaxValue(1);
return values;
} }
@Override @Override
@ -41,7 +35,7 @@ public class AmPmWheel extends Wheel {
} }
@Override @Override
public String getFormatTemplate() {
public String getFormatPattern() {
return Settings.usesAmPm() ? " a " : ""; return Settings.usesAmPm() ? " a " : "";
} }

+ 16
- 14
android/src/main/java/com/henninghall/date_picker/wheels/DateWheel.java View File

@ -1,7 +1,10 @@
package com.henninghall.date_picker.wheels; package com.henninghall.date_picker.wheels;
import android.graphics.Paint; import android.graphics.Paint;
import android.text.format.DateUtils;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import com.henninghall.date_picker.*; import com.henninghall.date_picker.*;
@ -10,32 +13,31 @@ public class DateWheel extends Wheel
public DateWheel(final PickerView pickerView, final int id) { public DateWheel(final PickerView pickerView, final int id) {
super(pickerView, id); super(pickerView, id);
} }
@Override @Override
void init() {
public ArrayList<String> getValues() {
Calendar cal = Calendar.getInstance();
ArrayList<String> values = new ArrayList<>();
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DATE, 0);
final int maxDate = 31; final int maxDate = 31;
final int minDate = 1; final int minDate = 1;
final Calendar cal = this.pickerView.getInitialDate();
final String initialDate = this.format.format(cal.getTime());
for (int i = minDate; i <= maxDate; ++i) { for (int i = minDate; i <= maxDate; ++i) {
final int currentDate = (Integer.valueOf(initialDate) + i) % maxDate + 1;
final String currentDateString = String.valueOf(currentDate);
this.values.add(currentDateString);
this.displayValues.add(currentDateString);
values.add(getLocaleString(cal));
cal.add(Calendar.DATE, 1);
} }
this.picker.setDisplayedValues((String[])this.displayValues.toArray(new String[0]));
this.picker.setMinValue(0);
this.picker.setMaxValue(maxDate - minDate);
return values;
} }
@Override @Override
public boolean visible() { public boolean visible() {
return this.pickerView.mode == Mode.date; return this.pickerView.mode == Mode.date;
} }
@Override @Override
public String getFormatTemplate() {
return "d";
public String getFormatPattern() {
return LocaleUtils.getPatternIncluding("d", pickerView.locale);
} }
@Override @Override

+ 36
- 38
android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java View File

@ -1,38 +1,41 @@
package com.henninghall.date_picker.wheels; package com.henninghall.date_picker.wheels;
import android.graphics.Paint; import android.graphics.Paint;
import android.text.TextUtils;
import com.henninghall.date_picker.LocaleUtils;
import com.henninghall.date_picker.Mode; import com.henninghall.date_picker.Mode;
import com.henninghall.date_picker.PickerView; import com.henninghall.date_picker.PickerView;
import com.henninghall.date_picker.Utils; import com.henninghall.date_picker.Utils;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
public class DayWheel extends Wheel { public class DayWheel extends Wheel {
private String todayValue;
public DayWheel(PickerView pickerView, int id) { public DayWheel(PickerView pickerView, int id) {
super(pickerView, id); super(pickerView, id);
} }
private static int defaultNumberOfDays = Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_YEAR); private static int defaultNumberOfDays = Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_YEAR);
@Override @Override
void init() {
public ArrayList<String> getValues() {
ArrayList<String> values = new ArrayList<>();
Calendar cal = getStartCal(); Calendar cal = getStartCal();
Calendar endCal = getEndCal(); Calendar endCal = getEndCal();
while (!cal.after(endCal)){ while (!cal.after(endCal)){
values.add(getValueFormat(cal));
displayValues.add(getDisplayValue(cal));
String value = getValueFormat(cal);
values.add(value);
if(Utils.isToday(cal)) todayValue = value;
cal.add(Calendar.DATE, 1); cal.add(Calendar.DATE, 1);
} }
picker.setMaxValue(0);
picker.setDisplayedValues(displayValues.toArray(new String[0]));
picker.setMinValue(0);
picker.setMaxValue(displayValues.size() - 1);
return values;
} }
private Calendar getStartCal(){ private Calendar getStartCal(){
@ -79,48 +82,29 @@ public class DayWheel extends Wheel {
cal.set(Calendar.MILLISECOND, 0); cal.set(Calendar.MILLISECOND, 0);
} }
private boolean isSameDay(Calendar c1, Calendar c2) {
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy", pickerView.locale);
return (sdf.format(c1.getTime()).equals(sdf.format(c2.getTime())));
}
private String getDisplayValue(Calendar cal){
return Utils.isToday(cal) ? getTodayString() : getDateString(cal);
}
private String getValueFormat(Calendar cal){ private String getValueFormat(Calendar cal){
return format.format(cal.getTime()); return format.format(cal.getTime());
} }
private String getDateString(Calendar cal){
return displayFormat.format(cal.getTime()).substring(3);
}
private String getTodayString(){
String todayString = Utils.printToday(pickerView.locale);
return capitalize(todayString);
@Override
public boolean visible() {
return pickerView.mode == Mode.datetime;
} }
private String capitalize(String s){
return s.substring(0, 1).toUpperCase() + s.substring(1);
}
@Override @Override
public boolean visible() {
return pickerView.mode == Mode.datetime;
public String getFormatPattern() {
return LocaleUtils.getDatePattern(pickerView.locale)
.replace("EEEE", "EEE")
.replace("MMMM", "MMM");
} }
@Override @Override
public String getFormatTemplate() {
String locale = pickerView.locale.getLanguage();
if(locale.equals("ko"))
return "yy MMM d일 (EEE)";
if(locale.equals("ja") || locale.contains("zh"))
return "yy MMMd日 EEE";
if(Utils.monthNameBeforeMonthDate(pickerView.locale)){
return "yy EEE MMM d";
public String toDisplayValue(String value) {
if (value.equals(todayValue)) {
return toTodayString(value);
} }
else return "yy EEE d MMM";
return removeYear(value);
} }
@Override @Override
@ -128,4 +112,18 @@ public class DayWheel extends Wheel {
return Paint.Align.RIGHT; return Paint.Align.RIGHT;
} }
private String toTodayString(String value) {
String todayString = Utils.printToday(pickerView.locale);
boolean shouldBeCapitalized = Character.isUpperCase(value.charAt(0));
return shouldBeCapitalized
? Utils.capitalize(todayString)
: todayString;
}
private String removeYear(String value) {
ArrayList<String> pieces = Utils.splitOnSpace(value);
pieces.remove(LocaleUtils.getFullPatternPos("y", pickerView.locale));
return TextUtils.join(" ", pieces);
}
} }

+ 8
- 7
android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java View File

@ -5,6 +5,8 @@ import android.graphics.Paint;
import com.henninghall.date_picker.Mode; import com.henninghall.date_picker.Mode;
import com.henninghall.date_picker.PickerView; import com.henninghall.date_picker.PickerView;
import com.henninghall.date_picker.Settings; import com.henninghall.date_picker.Settings;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
public class HourWheel extends Wheel { public class HourWheel extends Wheel {
@ -13,19 +15,18 @@ public class HourWheel extends Wheel {
super(pickerView, id); super(pickerView, id);
} }
@Override @Override
void init() {
public ArrayList<String> getValues() {
Calendar cal = Calendar.getInstance();
ArrayList<String> values = new ArrayList<>();
int numberOfHours = Settings.usesAmPm() ? 12 : 24; int numberOfHours = Settings.usesAmPm() ? 12 : 24;
Calendar cal = pickerView.getInitialDate();
for(int i=0; i<numberOfHours; i++) { for(int i=0; i<numberOfHours; i++) {
values.add(format.format(cal.getTime())); values.add(format.format(cal.getTime()));
displayValues.add(format.format(cal.getTime()));
cal.add(Calendar.HOUR_OF_DAY, 1); cal.add(Calendar.HOUR_OF_DAY, 1);
} }
picker.setDisplayedValues(values.toArray(new String[0]),true);
picker.setMinValue(0);
picker.setMaxValue(numberOfHours - 1);
return values;
} }
@Override @Override
@ -34,7 +35,7 @@ public class HourWheel extends Wheel {
} }
@Override @Override
public String getFormatTemplate() {
public String getFormatPattern() {
return Settings.usesAmPm() ? "h": "HH"; return Settings.usesAmPm() ? "h": "HH";
} }

+ 7
- 8
android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java View File

@ -6,6 +6,7 @@ import com.henninghall.date_picker.Mode;
import com.henninghall.date_picker.PickerView; import com.henninghall.date_picker.PickerView;
import com.henninghall.date_picker.Settings; import com.henninghall.date_picker.Settings;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
public class MinutesWheel extends Wheel { public class MinutesWheel extends Wheel {
@ -15,19 +16,17 @@ public class MinutesWheel extends Wheel {
} }
@Override @Override
void init() {
Calendar cal = pickerView.getInitialDate();
public ArrayList<String> getValues() {
Calendar cal = Calendar.getInstance();
ArrayList<String> values = new ArrayList<>();
cal.set(Calendar.MINUTE, 0);
for(int i=0; i<60; i = i + pickerView.minuteInterval) { for(int i=0; i<60; i = i + pickerView.minuteInterval) {
values.add(format.format(cal.getTime())); values.add(format.format(cal.getTime()));
displayValues.add(format.format(cal.getTime()));
cal.add(Calendar.MINUTE, pickerView.minuteInterval); cal.add(Calendar.MINUTE, pickerView.minuteInterval);
} }
picker.setMinValue(0);
picker.setMaxValue(0);
picker.setDisplayedValues(values.toArray(new String[0]));
picker.setMaxValue(displayValues.size() - 1);
return values;
} }
@Override @Override
@ -36,7 +35,7 @@ public class MinutesWheel extends Wheel {
} }
@Override @Override
public String getFormatTemplate() {
public String getFormatPattern() {
return "mm"; return "mm";
} }

+ 11
- 27
android/src/main/java/com/henninghall/date_picker/wheels/MonthWheel.java View File

@ -2,7 +2,6 @@ package com.henninghall.date_picker.wheels;
import android.graphics.Paint; import android.graphics.Paint;
import java.text.*;
import java.util.*; import java.util.*;
import com.henninghall.date_picker.*; import com.henninghall.date_picker.*;
@ -11,20 +10,19 @@ public class MonthWheel extends Wheel
public MonthWheel(final PickerView pickerView, final int id) { public MonthWheel(final PickerView pickerView, final int id) {
super(pickerView, id); super(pickerView, id);
} }
@Override @Override
void init() {
final int min = 0;
final int max = 11;
final Calendar cal = this.pickerView.getInitialDate();
for (int i = min; i <= max; ++i) {
this.values.add(getUsString(cal));
this.displayValues.add(getLocaleString(cal));
public ArrayList<String> getValues() {
ArrayList<String> values = new ArrayList<>();
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, 0);
for (int i = 0; i <= 11; ++i) {
values.add(getLocaleString(cal));
cal.add(Calendar.MONTH, 1); cal.add(Calendar.MONTH, 1);
} }
this.picker.setDisplayedValues(this.displayValues.toArray(new String[0]));
this.picker.setMinValue(min);
this.picker.setMaxValue(max);
return values;
} }
@Override @Override
@ -33,7 +31,7 @@ public class MonthWheel extends Wheel
} }
@Override @Override
public String getFormatTemplate() {
public String getFormatPattern() {
return "LLLL"; return "LLLL";
} }
@ -42,19 +40,5 @@ public class MonthWheel extends Wheel
return Paint.Align.LEFT; return Paint.Align.LEFT;
} }
private String getUsString(Calendar cal) {
return getString(cal, Locale.US);
}
private String getLocaleString(Calendar cal) {
return getString(cal, this.pickerView.locale);
}
private String getString(Calendar cal, Locale locale){
return getFormat(locale).format(cal.getTime());
}
private SimpleDateFormat getFormat(Locale locale) {
return new SimpleDateFormat(this.getFormatTemplate(), locale);
}
} }

+ 44
- 20
android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java View File

@ -6,35 +6,38 @@ import android.view.View;
import cn.carbswang.android.numberpickerview.library.NumberPickerView; import cn.carbswang.android.numberpickerview.library.NumberPickerView;
import com.henninghall.date_picker.PickerView; import com.henninghall.date_picker.PickerView;
import org.apache.commons.lang3.LocaleUtils;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Locale;
public abstract class Wheel { public abstract class Wheel {
private final Wheel self; private final Wheel self;
public final int id; public final int id;
public PickerView pickerView; public PickerView pickerView;
private String userSetValue;
private Calendar userSetValue;
abstract void init();
public abstract boolean visible(); public abstract boolean visible();
public abstract Paint.Align getTextAlign(); public abstract Paint.Align getTextAlign();
public abstract String getFormatTemplate();
public abstract String getFormatPattern();
public abstract ArrayList<String> getValues();
public String toDisplayValue(String value) {
return value;
}
ArrayList<String> values;
ArrayList<String> displayValues;
ArrayList<String> values = new ArrayList<>();
public NumberPickerView picker; public NumberPickerView picker;
public SimpleDateFormat format; public SimpleDateFormat format;
SimpleDateFormat displayFormat;
public Wheel(final PickerView pickerView, final int id) { public Wheel(final PickerView pickerView, final int id) {
this.id = id; this.id = id;
this.self = this; this.self = this;
this.pickerView = pickerView; this.pickerView = pickerView;
this.picker = (NumberPickerView) pickerView.findViewById(id); this.picker = (NumberPickerView) pickerView.findViewById(id);
this.format = new SimpleDateFormat(getFormatPattern(), pickerView.locale);
picker.setTextAlign(getTextAlign()); picker.setTextAlign(getTextAlign());
clearValues();
picker.setOnValueChangedListener(new NumberPickerView.OnValueChangeListener() { picker.setOnValueChangedListener(new NumberPickerView.OnValueChangeListener() {
@Override @Override
public void onValueChange(NumberPickerView picker, int oldVal, int newVal) { public void onValueChange(NumberPickerView picker, int oldVal, int newVal) {
@ -43,14 +46,7 @@ public abstract class Wheel {
}); });
} }
private void clearValues(){
this.displayFormat = new SimpleDateFormat(getFormatTemplate(), pickerView.locale);
this.format = new SimpleDateFormat(getFormatTemplate(), LocaleUtils.toLocale("en_US"));
this.values = new ArrayList<>();
this.displayValues= new ArrayList<>();
}
public int getIndexOfDate(Calendar date){
private int getIndexOfDate(Calendar date){
format.setTimeZone(pickerView.timeZone); format.setTimeZone(pickerView.timeZone);
return values.indexOf(format.format(date.getTime())); return values.indexOf(format.format(date.getTime()));
} }
@ -60,11 +56,11 @@ public abstract class Wheel {
} }
public String getValue() { public String getValue() {
if(!visible()) return userSetValue;
if(!visible()) return format.format(userSetValue.getTime());
return getValueAtIndex(getIndex()); return getValueAtIndex(getIndex());
} }
public int getIndex() {
private int getIndex() {
return picker.getValue(); return picker.getValue();
} }
@ -74,7 +70,7 @@ public abstract class Wheel {
public void setValue(Calendar date) { public void setValue(Calendar date) {
format.setTimeZone(pickerView.timeZone); format.setTimeZone(pickerView.timeZone);
this.userSetValue = format.format(date.getTime());
this.userSetValue = date;
int index = getIndexOfDate(date); int index = getIndexOfDate(date);
if(index > -1) { if(index > -1) {
@ -85,14 +81,42 @@ public abstract class Wheel {
} }
public void refresh() { public void refresh() {
this.format = new SimpleDateFormat(getFormatPattern(), pickerView.locale);
if (!this.visible()) return; if (!this.visible()) return;
clearValues();
init(); init();
} }
private String[] getDisplayValues(ArrayList<String> values){
ArrayList<String> displayValues = new ArrayList<>();
for (String value: values) {
displayValues.add(this.toDisplayValue(value));
}
return displayValues.toArray(new String[0]);
}
private void init(){
picker.setMinValue(0);
picker.setMaxValue(0);
values = getValues();
picker.setDisplayedValues(getDisplayValues(values));
picker.setMaxValue(values.size() -1);
}
public void updateVisibility(){ public void updateVisibility(){
int visibility = visible() ? View.VISIBLE: View.GONE; int visibility = visible() ? View.VISIBLE: View.GONE;
picker.setVisibility(visibility); picker.setVisibility(visibility);
} }
private SimpleDateFormat getFormat(Locale locale) {
return new SimpleDateFormat(this.getFormatPattern(), locale);
}
String getLocaleString(Calendar cal) {
return getString(cal, this.pickerView.locale);
}
private String getString(Calendar cal, Locale locale){
return getFormat(locale).format(cal.getTime());
}
} }

+ 14
- 10
android/src/main/java/com/henninghall/date_picker/wheels/YearWheel.java View File

@ -2,9 +2,11 @@ package com.henninghall.date_picker.wheels;
import android.graphics.Paint; import android.graphics.Paint;
import com.henninghall.date_picker.LocaleUtils;
import com.henninghall.date_picker.Mode; import com.henninghall.date_picker.Mode;
import com.henninghall.date_picker.PickerView; import com.henninghall.date_picker.PickerView;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
public class YearWheel extends Wheel public class YearWheel extends Wheel
@ -19,20 +21,22 @@ public class YearWheel extends Wheel
} }
@Override @Override
void init() {
public ArrayList<String> getValues() {
ArrayList<String> values = new ArrayList<>();
Calendar cal = Calendar.getInstance();
final int startYear = getStartYear(); final int startYear = getStartYear();
final int endYear = getEndYear() ;
final int endYear = getEndYear();
int max = endYear - startYear; int max = endYear - startYear;
cal.set(Calendar.YEAR, startYear);
for (int i = 0; i <= max; ++i) { for (int i = 0; i <= max; ++i) {
values.add(String.valueOf(startYear + i));
displayValues.add(String.valueOf(startYear + i));
values.add(getLocaleString(cal));
cal.add(Calendar.YEAR, 1);
} }
picker.setMaxValue(0);
picker.setDisplayedValues(displayValues.toArray(new String[0]));
picker.setMinValue(0);
picker.setMaxValue(max);
return values;
} }
private int getEndYear() { private int getEndYear() {
@ -60,8 +64,8 @@ public class YearWheel extends Wheel
} }
@Override @Override
public String getFormatTemplate() {
return "y";
public String getFormatPattern() {
return LocaleUtils.getPatternIncluding("y", pickerView.locale);
} }
} }

+ 6
- 1
examples/advanced/.watchmanconfig View File

@ -1 +1,6 @@
{}
{
"ignore_dirs": [
".git",
"node_modules"
]
}

+ 1
- 0
examples/advanced/android/settings.gradle View File

@ -1,3 +1,4 @@
rootProject.name = 'rn602' rootProject.name = 'rn602'
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
project(':react-native-date-picker').projectDir = new File(rootProject.projectDir, '../../../android')
include ':app' include ':app'

+ 5
- 0
examples/advanced/index.android.js View File

@ -0,0 +1,5 @@
import { AppRegistry } from 'react-native'
import App from './src/App'
import { name as appName } from './app.json'
AppRegistry.registerComponent(appName, () => App)

+ 0
- 1
examples/advanced/ios/Podfile View File

@ -17,7 +17,6 @@ target 'rn602' do
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text' pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration' pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
pod 'React-RCTWebSocket', :path => '../node_modules/react-native/Libraries/WebSocket' pod 'React-RCTWebSocket', :path => '../node_modules/react-native/Libraries/WebSocket'
pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact' pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi' pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor' pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'

+ 9
- 3
examples/advanced/ios/Podfile.lock View File

@ -57,6 +57,8 @@ PODS:
- React-cxxreact (= 0.60.3) - React-cxxreact (= 0.60.3)
- React-jsi (= 0.60.3) - React-jsi (= 0.60.3)
- React-jsinspector (0.60.3) - React-jsinspector (0.60.3)
- react-native-date-picker (2.7.4):
- React
- React-RCTActionSheet (0.60.3): - React-RCTActionSheet (0.60.3):
- React-Core (= 0.60.3) - React-Core (= 0.60.3)
- React-RCTAnimation (0.60.3): - React-RCTAnimation (0.60.3):
@ -95,6 +97,7 @@ DEPENDENCIES:
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
- react-native-date-picker (from `../node_modules/react-native-date-picker`)
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
@ -108,7 +111,7 @@ DEPENDENCIES:
- yoga (from `../node_modules/react-native/ReactCommon/yoga`) - yoga (from `../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS: SPEC REPOS:
https://github.com/cocoapods/specs.git:
https://github.com/CocoaPods/Specs.git:
- boost-for-react-native - boost-for-react-native
EXTERNAL SOURCES: EXTERNAL SOURCES:
@ -134,6 +137,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/jsiexecutor" :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
React-jsinspector: React-jsinspector:
:path: "../node_modules/react-native/ReactCommon/jsinspector" :path: "../node_modules/react-native/ReactCommon/jsinspector"
react-native-date-picker:
:path: "../node_modules/react-native-date-picker"
React-RCTActionSheet: React-RCTActionSheet:
:path: "../node_modules/react-native/Libraries/ActionSheetIOS" :path: "../node_modules/react-native/Libraries/ActionSheetIOS"
React-RCTAnimation: React-RCTAnimation:
@ -170,6 +175,7 @@ SPEC CHECKSUMS:
React-jsi: c2b6e57836bcae2677a036384111dc2c58e94369 React-jsi: c2b6e57836bcae2677a036384111dc2c58e94369
React-jsiexecutor: d9023c5c199114d2b6f38ec861a4d923c73d0735 React-jsiexecutor: d9023c5c199114d2b6f38ec861a4d923c73d0735
React-jsinspector: 817b64f3c8a807f09d78620f4f505868d89b26f3 React-jsinspector: 817b64f3c8a807f09d78620f4f505868d89b26f3
react-native-date-picker: 9606a515f5b79db23f552ecb65ca9203e04c6f22
React-RCTActionSheet: 9c42321fd5652515d706dd722c5a10b1970d7ec8 React-RCTActionSheet: 9c42321fd5652515d706dd722c5a10b1970d7ec8
React-RCTAnimation: fabb087dde8964c9a835a7fabd0e7e5701787913 React-RCTAnimation: fabb087dde8964c9a835a7fabd0e7e5701787913
React-RCTBlob: 93f34281d9c9c9e216b25824309eed9fe22a5d41 React-RCTBlob: 93f34281d9c9c9e216b25824309eed9fe22a5d41
@ -182,6 +188,6 @@ SPEC CHECKSUMS:
React-RCTWebSocket: 69d8565d66043f244b4129f3d7154c5689fb7d3e React-RCTWebSocket: 69d8565d66043f244b4129f3d7154c5689fb7d3e
yoga: 843fe25849b56131275bf3e5da2c468e96f68aff yoga: 843fe25849b56131275bf3e5da2c468e96f68aff
PODFILE CHECKSUM: 90ebcccb1d96dad2ba49b779ee5aa4e5a38065db
PODFILE CHECKSUM: cfa79c36c6126c429e0b57b924c3b791f75678dd
COCOAPODS: 1.6.1
COCOAPODS: 1.8.4

+ 27
- 26
examples/advanced/package.json View File

@ -1,28 +1,29 @@
{ {
"name": "rn602",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "react-native start",
"test": "jest",
"lint": "eslint ."
},
"dependencies": {
"react": "16.8.6",
"react-native": "0.60.3",
"react-native-date-picker": "^2.6.1"
},
"devDependencies": {
"@babel/core": "^7.5.4",
"@babel/runtime": "^7.5.4",
"@react-native-community/eslint-config": "^0.0.5",
"babel-jest": "^24.8.0",
"eslint": "^6.0.1",
"jest": "^24.8.0",
"metro-react-native-babel-preset": "^0.55.0",
"react-test-renderer": "16.8.6"
},
"jest": {
"preset": "react-native"
}
"name": "rn602",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "react-native start",
"test": "jest",
"lint": "eslint .",
"postinstall": "rm -rf node_modules/react-native-date-picker/examples*"
},
"dependencies": {
"react": "16.8.6",
"react-native": "0.60.3",
"react-native-date-picker": "../../"
},
"devDependencies": {
"@babel/core": "^7.5.4",
"@babel/runtime": "^7.8.3",
"@react-native-community/eslint-config": "^0.0.5",
"babel-jest": "^24.8.0",
"eslint": "^6.0.1",
"jest": "^24.8.0",
"metro-react-native-babel-preset": "^0.55.0",
"react-test-renderer": "16.8.6"
},
"jest": {
"preset": "react-native"
}
} }

+ 1565
- 1600
examples/advanced/yarn.lock
File diff suppressed because it is too large
View File


Loading…
Cancel
Save