Added DatePicker.minDate and DatePicker.maxDate.

This commit is contained in:
Rossen Hristov
2015-03-18 13:00:20 +02:00
parent 6b2623d1d5
commit 2adac392af
8 changed files with 127 additions and 1 deletions

View File

@ -12,6 +12,14 @@ export function getNativeDay(datePicker: datePickerModule.DatePicker): number {
return datePicker.android.getDayOfMonth();
}
export function getNativeMaxDate(datePicker: datePickerModule.DatePicker): Date {
return new Date(datePicker.android.getMaxDate());
}
export function getNativeMinDate(datePicker: datePickerModule.DatePicker): Date {
return new Date(datePicker.android.getMinDate());
}
export function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void {
datePicker.android.updateDate(value, datePicker.android.getMonth(), datePicker.android.getDayOfMonth());
}

View File

@ -4,6 +4,8 @@ import datePickerModule = require("ui/date-picker");
export declare function getNativeYear(datePicker: datePickerModule.DatePicker): number;
export declare function getNativeMonth(datePicker: datePickerModule.DatePicker): number;
export declare function getNativeDay(datePicker: datePickerModule.DatePicker): number;
export declare function getNativeMaxDate(datePicker: datePickerModule.DatePicker): Date;
export declare function getNativeMinDate(datePicker: datePickerModule.DatePicker): Date;
export declare function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void;
export declare function setNativeMonth(datePicker: datePickerModule.DatePicker, value: number): void;

View File

@ -12,6 +12,14 @@ export function getNativeDay(datePicker: datePickerModule.DatePicker): number {
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date).day;
}
export function getNativeMaxDate(datePicker: datePickerModule.DatePicker): Date {
return new Date(1000* NSDate.dateWithTimeIntervalSinceDate(0, datePicker.ios.maximumDate).timeIntervalSince1970);
}
export function getNativeMinDate(datePicker: datePickerModule.DatePicker): Date {
return new Date(1000* NSDate.dateWithTimeIntervalSinceDate(0, datePicker.ios.minimumDate).timeIntervalSince1970);
}
export function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void {
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date);
comps.year = value;

View File

@ -31,6 +31,8 @@ export var test_DummyForCodeSnippet = function () {
datePicker.year = 1980;
datePicker.month = 2;
datePicker.day = 9;
datePicker.minDate = new Date(1975, 0, 29);
datePicker.maxDate = new Date(2045, 4, 12);
// ```
// </snippet>
});
@ -93,6 +95,26 @@ export var testDayFromLocalToNative = function () {
});
}
export var testMaxDateFromLocalToNative = function () {
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
var datePicker = <datePickerModule.DatePicker>views[0];
var expectedValue = new Date(1980, 1, 9);
datePicker.maxDate = expectedValue;
var actualValue = datePickerTestsNative.getNativeMaxDate(datePicker);
TKUnit.assert(actualValue.getTime() === expectedValue.getTime(), "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
export var testMinDateFromLocalToNative = function () {
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
var datePicker = <datePickerModule.DatePicker>views[0];
var expectedValue = new Date(1980, 1, 9);
datePicker.minDate = expectedValue;
var actualValue = datePickerTestsNative.getNativeMinDate(datePicker);
TKUnit.assert(actualValue.getTime() === expectedValue.getTime(), "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
export var testYearFromNativeToLocal = function () {
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
var datePicker = <datePickerModule.DatePicker>views[0];
@ -121,4 +143,21 @@ export var testDayFromNativeToLocal = function () {
var actualValue = datePicker.day;
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
}
//export var testWTF = function () {
// var picker = new UIDatePicker();
// picker.datePickerMode = UIDatePickerMode.UIDatePickerModeDate;
// var jsDate = new Date(1980, 1, 9);
// var nsDate = NSDate.dateWithTimeIntervalSince1970(jsDate.getTime() / 1000);
// console.log("nsDate: " + nsDate);
// console.log("nsDate.timeIntervalSince1970: " + nsDate.timeIntervalSince1970);
// console.log("------------------");
// picker.maximumDate = nsDate;
// console.log("------------------");
// console.log("(picker.ios.maximumDate === nsDate): " + (picker.maximumDate === nsDate));
// console.log("nsDate: " + nsDate);
// console.log("nsDate.timeIntervalSince1970: " + nsDate.timeIntervalSince1970);
// console.log("picker.ios.maximumDate: " + picker.maximumDate);
// console.log("picker.ios.maximumDate.timeIntervalSince1970: " + picker.maximumDate.timeIntervalSince1970);
//}

View File

@ -7,6 +7,8 @@ export class DatePicker extends view.View implements definition.DatePicker {
public static yearProperty = new dependencyObservable.Property("year", "DatePicker", new proxy.PropertyMetadata(undefined));
public static monthProperty = new dependencyObservable.Property("month", "DatePicker", new proxy.PropertyMetadata(undefined));
public static dayProperty = new dependencyObservable.Property("day", "DatePicker", new proxy.PropertyMetadata(undefined));
public static maxDateProperty = new dependencyObservable.Property("maxDate", "DatePicker", new proxy.PropertyMetadata(undefined));
public static minDateProperty = new dependencyObservable.Property("minDate", "DatePicker", new proxy.PropertyMetadata(undefined));
constructor() {
super();
@ -32,4 +34,18 @@ export class DatePicker extends view.View implements definition.DatePicker {
set day(value: number) {
this._setValue(DatePicker.dayProperty, value);
}
get maxDate(): Date {
return this._getValue(DatePicker.maxDateProperty);
}
set maxDate(value: Date) {
this._setValue(DatePicker.maxDateProperty, value);
}
get minDate(): Date {
return this._getValue(DatePicker.minDateProperty);
}
set minDate(value: Date) {
this._setValue(DatePicker.minDateProperty, value);
}
}

View File

@ -32,6 +32,28 @@ function onDayPropertyChanged(data: dependencyObservable.PropertyChangeData) {
(<proxy.PropertyMetadata>common.DatePicker.dayProperty.metadata).onSetNativeValue = onDayPropertyChanged;
function onMaxDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
var picker = <DatePicker>data.object;
var newValue = (<Date>data.newValue).getTime();
if (picker.android && picker.android.getMaxDate() !== newValue) {
picker.android.setMaxDate(newValue);
}
}
(<proxy.PropertyMetadata>common.DatePicker.maxDateProperty.metadata).onSetNativeValue = onMaxDatePropertyChanged;
function onMinDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
var picker = <DatePicker>data.object;
var newValue = (<Date>data.newValue).getTime();
if (picker.android && picker.android.getMinDate() !== newValue) {
picker.android.setMinDate(newValue);
}
}
(<proxy.PropertyMetadata>common.DatePicker.minDateProperty.metadata).onSetNativeValue = onMinDatePropertyChanged;
// merge the exports of the common file with the exports of this file
declare var exports;
require("utils/module-merge").merge(common, exports);

View File

@ -39,5 +39,15 @@ declare module "ui/date-picker" {
* Gets or sets the day. The days start from 1.
*/
day: number;
/**
* Gets or sets the max date.
*/
maxDate: Date;
/**
* Gets or sets the min date.
*/
minDate: Date;
}
}

View File

@ -38,6 +38,27 @@ function onDayPropertyChanged(data: dependencyObservable.PropertyChangeData) {
(<proxy.PropertyMetadata>common.DatePicker.dayProperty.metadata).onSetNativeValue = onDayPropertyChanged;
function onMaxDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
var picker = <DatePicker>data.object;
if (picker.ios) {
var nsDate = NSDate.dateWithTimeIntervalSince1970((<Date>data.newValue).getTime() / 1000);
picker.ios.maximumDate = nsDate;
}
}
(<proxy.PropertyMetadata>common.DatePicker.maxDateProperty.metadata).onSetNativeValue = onMaxDatePropertyChanged;
function onMinDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
var picker = <DatePicker>data.object;
if (picker.ios) {
picker.ios.minimumDate = NSDate.dateWithTimeIntervalSince1970((<Date>data.newValue).getTime() / 1000);
}
}
(<proxy.PropertyMetadata>common.DatePicker.minDateProperty.metadata).onSetNativeValue = onMinDatePropertyChanged;
// merge the exports of the common file with the exports of this file
declare var exports;
require("utils/module-merge").merge(common, exports);