This commit is contained in:
parent
a55977830f
commit
03fa90bd71
|
@ -7,6 +7,10 @@ https://github.com/josdejong/jsoneditor
|
|||
|
||||
- Implemented option `timestampFormat` which allows customizing the formatting
|
||||
of timestamp tags. See also option `timestampTag`. Thanks @smallp.
|
||||
- Reverted the heuristics introduced in `v7.3.0` to check whether some field
|
||||
contains a timestamp based on the field name, because they can give wrong
|
||||
timestamps in case of values in seconds instead of the assumed milliseconds
|
||||
(see #847, #856).
|
||||
|
||||
|
||||
## 2019-12-08, version 7.5.0
|
||||
|
|
|
@ -472,10 +472,8 @@ Constructs a new JSONEditor.
|
|||
|
||||
If `true` (default), a tag with the date/time of a timestamp is displayed
|
||||
right from values containing a timestamp. By default, a value is
|
||||
considered a timestamp when it is (a) an integer number with a value larger
|
||||
than Jan 1th 2000, `946684800000`, or (b) it's field name contains any of the
|
||||
following strings (case insensitive): `'date'`, `'time'`, `'created'`,
|
||||
`'updated'`, `'deleted'`.
|
||||
considered a timestamp when it is an integer number with a value larger
|
||||
than Jan 1th 2000, `946684800000`.
|
||||
|
||||
When `timestampTag` a is a function, a timestamp tag will be displayed when
|
||||
this function returns `true`. The function is invoked with an object as first
|
||||
|
@ -490,7 +488,8 @@ Constructs a new JSONEditor.
|
|||
```
|
||||
|
||||
Whether a value is a timestamp can be determined implicitly based on
|
||||
the `value`, or explicitly based on `field` or `path`.
|
||||
the `value`, or explicitly based on `field` or `path`. You can for example
|
||||
test whether a field name contains a string like: `'date'` or `'time'`.
|
||||
|
||||
Example:
|
||||
|
||||
|
|
|
@ -1355,38 +1355,18 @@ export function parseString (str) {
|
|||
return str
|
||||
}
|
||||
|
||||
const TIMESTAMP_FIELDS = [
|
||||
'DATE',
|
||||
'TIME',
|
||||
'CREATED',
|
||||
'UPDATED',
|
||||
'DELETED'
|
||||
]
|
||||
|
||||
/**
|
||||
* Test whether some field contains a timestamp. This is based
|
||||
* on the number being large has a naming like "date" or "time"
|
||||
* Test whether some field contains a timestamp in milliseconds after the year 2000.
|
||||
* @param {string} field
|
||||
* @param {number} value
|
||||
* @return {boolean}
|
||||
*/
|
||||
export function isTimestamp (field, value) {
|
||||
if (typeof value === 'number' &&
|
||||
return typeof value === 'number' &&
|
||||
value > YEAR_2000 &&
|
||||
isFinite(value) &&
|
||||
Math.floor(value) === value &&
|
||||
!isNaN(new Date(value).valueOf())
|
||||
) {
|
||||
return true
|
||||
}
|
||||
|
||||
if (typeof field === 'string') {
|
||||
const fieldUpper = field.toUpperCase()
|
||||
|
||||
return TIMESTAMP_FIELDS.some(search => fieldUpper.indexOf(search) !== -1)
|
||||
}
|
||||
|
||||
return false
|
||||
!isNaN(new Date(value).valueOf());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -509,14 +509,6 @@ describe('util', () => {
|
|||
it('should test whether a field is a timestamp', () => {
|
||||
assert.strictEqual(isTimestamp('foo', 1574809200000), true)
|
||||
assert.strictEqual(isTimestamp('foo', 1574809200000.2), false)
|
||||
assert.strictEqual(isTimestamp('dateCreated', 0), true)
|
||||
assert.strictEqual(isTimestamp('updatedAt', 0), true)
|
||||
assert.strictEqual(isTimestamp('deletedAt', 0), true)
|
||||
assert.strictEqual(isTimestamp('DATE', 0), true)
|
||||
assert.strictEqual(isTimestamp('TIMESTAMP', 0), true)
|
||||
assert.strictEqual(isTimestamp('timestamp', 0), true)
|
||||
assert.strictEqual(isTimestamp('hello', 0), false)
|
||||
assert.strictEqual(isTimestamp('TIM', 0), false)
|
||||
})
|
||||
|
||||
// TODO: thoroughly test all util methods
|
||||
|
|
Loading…
Reference in New Issue