Browse Source

Merge pull request #2192 from nocodb/fix/1048-mariadb-datetime-issue

fix: ignore timezone mysql and rely on project info for checking data…
pull/2205/head
աɨռɢӄաօռɢ 3 years ago committed by GitHub
parent
commit
f0da3bdb40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      packages/nc-gui/components/project/spreadsheet/components/editableCell/DateTimePickerCell.vue
  2. 12
      packages/nc-gui/components/project/spreadsheet/components/editableCell/TimePickerCell.vue
  3. 3
      packages/nc-gui/store/project.js

6
packages/nc-gui/components/project/spreadsheet/components/editableCell/DateTimePickerCell.vue

@ -32,17 +32,19 @@ export default {
value: [String, Date, Number], ignoreFocus: Boolean value: [String, Date, Number], ignoreFocus: Boolean
}, },
computed: { computed: {
isMysql() {
return ['mysql', 'mysql2'].indexOf(this.$store.getters['project/GtrClientType'])
},
localState: { localState: {
get() { get() {
if (!this.value) { if (!this.value) {
return this.value return this.value
} }
return (/^\d+$/.test(this.value) ? dayjs(+this.value) : dayjs(this.value)) return (/^\d+$/.test(this.value) ? dayjs(+this.value) : dayjs(this.value))
.format('YYYY-MM-DD HH:mm') .format('YYYY-MM-DD HH:mm')
}, },
set(value) { set(value) {
if (this.$parent.sqlUi.name === 'MysqlUi') { if (this.isMysql) {
this.$emit('input', value && dayjs(value).format('YYYY-MM-DD HH:mm:ss')) this.$emit('input', value && dayjs(value).format('YYYY-MM-DD HH:mm:ss'))
} else { } else {
this.$emit('input', value && dayjs(value).format('YYYY-MM-DD HH:mm:ssZ')) this.$emit('input', value && dayjs(value).format('YYYY-MM-DD HH:mm:ssZ'))

12
packages/nc-gui/components/project/spreadsheet/components/editableCell/TimePickerCell.vue

@ -15,6 +15,7 @@
<script> <script>
import dayjs from 'dayjs' import dayjs from 'dayjs'
import { MysqlUi } from 'nocodb-sdk'
export default { export default {
name: 'TimePickerCell', name: 'TimePickerCell',
@ -22,6 +23,9 @@ export default {
value: [String, Date] value: [String, Date]
}, },
computed: { computed: {
isMysql() {
return ['mysql', 'mysql2'].indexOf(this.$store.getters['project/GtrClientType'])
},
localState: { localState: {
get() { get() {
if (!this.value) { if (!this.value) {
@ -41,7 +45,13 @@ export default {
}, },
set(val) { set(val) {
const dateTime = dayjs(`1999-01-01 ${val}:00`) const dateTime = dayjs(`1999-01-01 ${val}:00`)
if (dateTime.isValid()) { this.$emit('input', dateTime.format('YYYY-MM-DD HH:mm:ssZ')) } if (dateTime.isValid()) {
if (this.isMysql) {
this.$emit('input', dateTime.format('YYYY-MM-DD HH:mm:ss'))
} else {
this.$emit('input', dateTime.format('YYYY-MM-DD HH:mm:ssZ'))
}
}
} }
}, },

3
packages/nc-gui/store/project.js

@ -200,6 +200,9 @@ export const getters = {
GtrProjectPrefix(state) { GtrProjectPrefix(state) {
return state.project && state.project.prefix return state.project && state.project.prefix
}, },
GtrClientType(state) {
return state.project && state.project.bases && state.project.bases[0]&& state.project.bases[0].type
},
GtrApiEnvironment(state) { GtrApiEnvironment(state) {
const projJson = state.unserializedList && state.unserializedList[0] ? state.unserializedList[0].projectJson : null const projJson = state.unserializedList && state.unserializedList[0] ? state.unserializedList[0].projectJson : null

Loading…
Cancel
Save