date-picker: add timestamp format

pull/9514/head
wacky6.AriesMBP 2018-01-17 18:46:18 +08:00 committed by 杨奕
parent fa643a55b0
commit 1f58f4f8d5
2 changed files with 74 additions and 2 deletions

View File

@ -122,9 +122,11 @@ const HAVE_TRIGGER_TYPES = [
'datetimerange'
];
const DATE_FORMATTER = function(value, format) {
if (format === 'timestamp') return value.getTime();
return formatDate(value, format);
};
const DATE_PARSER = function(text, format) {
if (format === 'timestamp') return new Date(Number(text));
return parseDate(text, format);
};
const RANGE_FORMATTER = function(value, format) {
@ -133,7 +135,7 @@ const RANGE_FORMATTER = function(value, format) {
const end = value[1];
if (start && end) {
return [formatDate(start, format), formatDate(end, format)];
return [DATE_FORMATTER(start, format), DATE_FORMATTER(end, format)];
}
}
return '';
@ -146,7 +148,7 @@ const RANGE_PARSER = function(array, format, separator) {
const range1 = array[0];
const range2 = array[1];
return [parseDate(range1, format), parseDate(range2, format)];
return [DATE_PARSER(range1, format), DATE_PARSER(range2, format)];
}
return [];
};

View File

@ -500,6 +500,76 @@ describe('DatePicker', () => {
}, DELAY);
}, DELAY);
});
it('is timestamp', done => {
vm = createVue({
template: `
<el-date-picker
ref="compo"
v-model="value"
type="date"
format="yyyy-MM-dd"
value-format="timestamp" />`,
data() {
return {
value: Date.now()
};
}
}, true);
const input = vm.$refs.compo.$el.querySelector('input');
input.focus();
setTimeout(_ => {
// check timestamp is parsed internally
expect(vm.$refs.compo.parsedValue.getTime()).to.equal(vm.value);
input.value = '2000-10-01';
triggerEvent(input, 'input');
keyDown(input, ENTER);
setTimeout(_ => {
expect(vm.value).to.equal(new Date(2000, 9, 1).getTime());
done();
}, DELAY);
}, DELAY);
});
it('works for daterange, is timestamp', done => {
vm = createVue({
template: `
<el-date-picker
ref="compo"
v-model="value"
type="daterange"
format="yyyy-MM-dd"
value-format="timestamp" />`,
data() {
return {
value: [Date.now(), Date.now() + 86400 * 1000]
};
}
}, true);
const inputs = vm.$refs.compo.$el.querySelectorAll('input');
inputs[0].focus();
setTimeout(_ => {
// check timestamp is parsed internally
expect(vm.$refs.compo.parsedValue[0].getTime()).to.equal(vm.value[0]);
expect(vm.$refs.compo.parsedValue[1].getTime()).to.equal(vm.value[1]);
inputs[0].value = '2000-10-01';
triggerEvent(inputs[0], 'input');
keyDown(inputs[0], TAB);
setTimeout(_ => {
inputs[1].focus();
inputs[1].value = '2000-10-02';
triggerEvent(inputs[1], 'input');
keyDown(inputs[0], ENTER);
setTimeout(_ => {
expect(vm.value).to.eql([
new Date(2000, 9, 1).getTime(),
new Date(2000, 9, 2).getTime()
]);
done();
}, DELAY);
}, DELAY);
}, DELAY);
});
});
describe('default value', done => {