mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 03:31:45 +08:00
minuteInterval added
This commit is contained in:
@ -58,12 +58,21 @@ if (platform.device.os === platform.platformNames.ios) {
|
||||
}
|
||||
}
|
||||
|
||||
export function test_WhenCreated_MinuteIntervalIs1() {
|
||||
helper.buildUIAndRunTest(_createTimePicker(), function (views: Array<viewModule.View>) {
|
||||
var timePicker = <timePickerModule.TimePicker>views[0];
|
||||
var actualValue = timePicker.minuteInterval;
|
||||
var expectedValue = 1;
|
||||
TKUnit.assertEqual(actualValue, expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
export function test_WhenCreated_HourIsCurrentHour() {
|
||||
helper.buildUIAndRunTest(_createTimePicker(), function (views: Array<viewModule.View>) {
|
||||
var timePicker = <timePickerModule.TimePicker>views[0];
|
||||
var actualValue = timePicker.hour;
|
||||
var expectedValue = timePickerTestsNative.getNativeHour(timePicker);
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
TKUnit.assertEqual(actualValue, expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
@ -72,7 +81,7 @@ export function test_WhenCreated_MinHourIs0() {
|
||||
var timePicker = <timePickerModule.TimePicker>views[0];
|
||||
var actualValue = timePicker.minHour;
|
||||
var expectedValue = 0;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
TKUnit.assertEqual(actualValue, expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
@ -81,7 +90,7 @@ export function test_WhenCreated_MaxHourIs23() {
|
||||
var timePicker = <timePickerModule.TimePicker>views[0];
|
||||
var actualValue = timePicker.maxHour;
|
||||
var expectedValue = 23;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
TKUnit.assertEqual(actualValue, expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
@ -90,7 +99,7 @@ export function test_WhenCreated_MinuteIsCurrentMinute() {
|
||||
var timePicker = <timePickerModule.TimePicker>views[0];
|
||||
var actualValue = timePicker.minute;
|
||||
var expectedValue = timePickerTestsNative.getNativeMinute(timePicker);
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
TKUnit.assertEqual(actualValue, expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
@ -99,7 +108,7 @@ export function test_WhenCreated_MinMinuteIs0() {
|
||||
var timePicker = <timePickerModule.TimePicker>views[0];
|
||||
var actualValue = timePicker.minMinute;
|
||||
var expectedValue = 0;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
TKUnit.assertEqual(actualValue, expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
@ -108,7 +117,34 @@ export function test_WhenCreated_MaxMinuteIs59() {
|
||||
var timePicker = <timePickerModule.TimePicker>views[0];
|
||||
var actualValue = timePicker.maxMinute;
|
||||
var expectedValue = 59;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
TKUnit.assertEqual(actualValue, expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
export function testMinuteIntervalThrowExceptionWhenLessThan1() {
|
||||
helper.buildUIAndRunTest(_createTimePicker(), function (views: Array<viewModule.View>) {
|
||||
var timePicker = <timePickerModule.TimePicker>views[0];
|
||||
TKUnit.assertThrows(function () {
|
||||
timePicker.minuteInterval = 0;
|
||||
}, "Setting minuteInterval property to a value less than 1 should throw.");
|
||||
});
|
||||
}
|
||||
|
||||
export function testMinuteIntervalThrowExceptionWhenGreaterThan30() {
|
||||
helper.buildUIAndRunTest(_createTimePicker(), function (views: Array<viewModule.View>) {
|
||||
var timePicker = <timePickerModule.TimePicker>views[0];
|
||||
TKUnit.assertThrows(function () {
|
||||
timePicker.minuteInterval = 31;
|
||||
}, "Setting minuteInterval property to a value greater than 30 should throw.");
|
||||
});
|
||||
}
|
||||
|
||||
export function testMinuteIntervalThrowExceptionWhenNotFold60() {
|
||||
helper.buildUIAndRunTest(_createTimePicker(), function (views: Array<viewModule.View>) {
|
||||
var timePicker = <timePickerModule.TimePicker>views[0];
|
||||
TKUnit.assertThrows(function () {
|
||||
timePicker.minuteInterval = 7;
|
||||
}, "Setting minuteInterval property to a value not fold 60 should throw.");
|
||||
});
|
||||
}
|
||||
|
||||
@ -214,7 +250,7 @@ export function testHourFromLocalToNative() {
|
||||
var expectedValue = 13;
|
||||
timePicker.hour = expectedValue;
|
||||
var actualValue = timePickerTestsNative.getNativeHour(timePicker);
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
TKUnit.assertEqual(actualValue, expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
@ -224,7 +260,7 @@ export function testMinuteFromLocalToNative() {
|
||||
var expectedValue = 59;
|
||||
timePicker.minute = expectedValue;
|
||||
var actualValue = timePickerTestsNative.getNativeMinute(timePicker);
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
TKUnit.assertEqual(actualValue, expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
@ -234,7 +270,7 @@ export function testHourFromNativeToLocal() {
|
||||
var expectedValue = 14;
|
||||
timePickerTestsNative.setNativeHour(timePicker, expectedValue);
|
||||
var actualValue = timePicker.hour;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
TKUnit.assertEqual(actualValue, expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
@ -244,7 +280,7 @@ export function testMinuteFromNativeToLocal() {
|
||||
var expectedValue = 33;
|
||||
timePickerTestsNative.setNativeMinute(timePicker, expectedValue);
|
||||
var actualValue = timePicker.minute;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
TKUnit.assertEqual(actualValue, expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,10 @@ function isMinuteValid(value: number): boolean {
|
||||
return types.isNumber(value) && value >= 0 && value <= 59;
|
||||
}
|
||||
|
||||
function isMinuteIntervalValid(value: number): boolean {
|
||||
return types.isNumber(value) && value >= 1 && value <= 30 && 60 % value === 0;
|
||||
}
|
||||
|
||||
export interface Time {
|
||||
hour: number;
|
||||
minute: number;
|
||||
@ -33,7 +37,17 @@ export function isValidTime(picker: definition.TimePicker): boolean {
|
||||
return isGreaterThanMinTime(picker) && isLessThanMaxTime(picker);
|
||||
}
|
||||
|
||||
export function getValidTime(picker: definition.TimePicker, hour?: number, minute?: number): Time {
|
||||
export function getValidTime(picker: definition.TimePicker, hour: number, minute: number): Time {
|
||||
if (picker.minuteInterval > 1) {
|
||||
let minuteFloor = minute - (minute % picker.minuteInterval);
|
||||
minute = minuteFloor + (minute === minuteFloor + 1 ? picker.minuteInterval : 0);
|
||||
|
||||
if (minute === 60) {
|
||||
hour++;
|
||||
minute = 0;
|
||||
}
|
||||
}
|
||||
|
||||
let time = { hour: hour, minute: minute };
|
||||
|
||||
if (!isGreaterThanMinTime(picker, hour, minute)) {
|
||||
@ -119,6 +133,12 @@ function onMaxHourPropertyChanged(data: dependencyObservable.PropertyChangeData)
|
||||
}
|
||||
}
|
||||
|
||||
function onMinuteIntervalPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <definition.TimePicker>data.object;
|
||||
|
||||
picker._setNativeMinuteIntervalTime();
|
||||
}
|
||||
|
||||
export class TimePicker extends view.View implements definition.TimePicker {
|
||||
public static hourProperty = new dependencyObservable.Property("hour", "TimePicker",
|
||||
new proxy.PropertyMetadata(0, dependencyObservable.PropertyMetadataSettings.None, onHourPropertyChanged, isHourValid));
|
||||
@ -138,6 +158,9 @@ export class TimePicker extends view.View implements definition.TimePicker {
|
||||
public static maxMinuteProperty = new dependencyObservable.Property("maxMinute", "TimePicker",
|
||||
new proxy.PropertyMetadata(59, dependencyObservable.PropertyMetadataSettings.None, onMaxMinutePropertyChanged, isMinuteValid));
|
||||
|
||||
public static minuteIntervalProperty = new dependencyObservable.Property("minuteInterval", "TimePicker",
|
||||
new proxy.PropertyMetadata(1, dependencyObservable.PropertyMetadataSettings.None, onMinuteIntervalPropertyChanged, isMinuteIntervalValid));
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
@ -156,6 +179,13 @@ export class TimePicker extends view.View implements definition.TimePicker {
|
||||
this._setValue(TimePicker.minuteProperty, value);
|
||||
}
|
||||
|
||||
get minuteInterval(): number {
|
||||
return this._getValue(TimePicker.minuteIntervalProperty);
|
||||
}
|
||||
set minuteInterval(value: number) {
|
||||
this._setValue(TimePicker.minuteIntervalProperty, value);
|
||||
}
|
||||
|
||||
get maxHour(): number {
|
||||
return this._getValue(TimePicker.maxHourProperty);
|
||||
}
|
||||
@ -195,4 +225,8 @@ export class TimePicker extends view.View implements definition.TimePicker {
|
||||
public _setNativeMaxTime() {
|
||||
//
|
||||
}
|
||||
|
||||
public _setNativeMinuteIntervalTime() {
|
||||
//
|
||||
}
|
||||
}
|
8
ui/time-picker/time-picker.d.ts
vendored
8
ui/time-picker/time-picker.d.ts
vendored
@ -54,8 +54,16 @@ declare module "ui/time-picker" {
|
||||
*/
|
||||
minMinute: number;
|
||||
|
||||
/**
|
||||
* Gets or sets the minute interval.
|
||||
*/
|
||||
minuteInterval: number;
|
||||
|
||||
//@private
|
||||
_setNativeTime(): void;
|
||||
_setNativeMinTime(): void;
|
||||
_setNativeMaxTime(): void;
|
||||
_setNativeMinuteIntervalTime(): void;
|
||||
//@endprivate
|
||||
}
|
||||
}
|
||||
|
@ -55,6 +55,12 @@ export class TimePicker extends common.TimePicker {
|
||||
this.ios.maximumDate = getDate(this.maxHour, this.maxMinute);
|
||||
}
|
||||
}
|
||||
|
||||
public _setNativeMinuteIntervalTime() {
|
||||
if (this.ios) {
|
||||
this.ios.minuteInterval = this.minuteInterval;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class UITimePickerChangeHandlerImpl extends NSObject {
|
||||
|
Reference in New Issue
Block a user