diff --git a/.github/workflows/release-nocodb.yml b/.github/workflows/release-nocodb.yml index 03d07a6c52..e1e2dc1238 100644 --- a/.github/workflows/release-nocodb.yml +++ b/.github/workflows/release-nocodb.yml @@ -61,23 +61,9 @@ jobs: tag: ${{ needs.process-input.outputs.target_tag }} targetEnv: ${{ github.event.inputs.targetEnv || 'PROD' }} - # Close all issues with target tags 'Fixed' & 'Resolved' - close-fixed-issues: - needs: [pr-to-master, process-input] - uses: ./.github/workflows/release-close-issue.yml - with: - issue_label: 'Status: Fixed' - version: ${{ needs.process-input.outputs.target_tag }} - close-resolved-issues: - needs: [close-fixed-issues, process-input] - uses: ./.github/workflows/release-close-issue.yml - with: - issue_label: 'Status: Resolved' - version: ${{ needs.process-input.outputs.target_tag }} - # Build, install, publish frontend and backend to npm release-npm: - needs: [close-resolved-issues, process-input] + needs: [pr-to-master, process-input] uses: ./.github/workflows/release-npm.yml with: tag: ${{ needs.process-input.outputs.target_tag }} @@ -105,6 +91,21 @@ jobs: DOCKERHUB_USERNAME: "${{ secrets.DOCKERHUB_USERNAME }}" DOCKERHUB_TOKEN: "${{ secrets.DOCKERHUB_TOKEN }}" + # Close all issues with target tags 'Fixed' & 'Resolved' + close-fixed-issues: + needs: [release-docker, process-input] + uses: ./.github/workflows/release-close-issue.yml + with: + issue_label: 'Status: Fixed' + version: ${{ needs.process-input.outputs.target_tag }} + + close-resolved-issues: + needs: [close-fixed-issues, process-input] + uses: ./.github/workflows/release-close-issue.yml + with: + issue_label: 'Status: Resolved' + version: ${{ needs.process-input.outputs.target_tag }} + # Publish Docs publish-docs: needs: release-docker diff --git a/packages/nc-gui/components/project/spreadsheet/components/ColumnFilter.vue b/packages/nc-gui/components/project/spreadsheet/components/ColumnFilter.vue index ccc07cd61b..f5b4007fa1 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/ColumnFilter.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/ColumnFilter.vue @@ -92,36 +92,16 @@ - - - - + /> + import { getUIDTIcon, UITypes } from '~/components/project/spreadsheet/helpers/uiTypes' +import FieldListAutoCompleteDropdown from '~/components/project/spreadsheet/components/FieldListAutoCompleteDropdown' export default { name: 'ColumnFilter', + components: { + FieldListAutoCompleteDropdown + }, props: { fieldList: [Array], meta: Object, diff --git a/packages/nc-gui/components/project/spreadsheet/components/FieldListAutoCompleteDropdown.vue b/packages/nc-gui/components/project/spreadsheet/components/FieldListAutoCompleteDropdown.vue new file mode 100644 index 0000000000..27a3617d6e --- /dev/null +++ b/packages/nc-gui/components/project/spreadsheet/components/FieldListAutoCompleteDropdown.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/packages/nc-gui/components/project/spreadsheet/components/FieldsMenu.vue b/packages/nc-gui/components/project/spreadsheet/components/FieldsMenu.vue index 1000966558..f8636657f0 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/FieldsMenu.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/FieldsMenu.vue @@ -96,53 +96,57 @@ --> - - + + @@ -459,7 +463,7 @@ export default { 'order', (this.fields[event.moved.newIndex - 1].order + this.fields[event.moved.newIndex + 1].order) / - 2 + 2 ) } this.saveOrUpdate( @@ -504,4 +508,10 @@ export default { .drag-icon { cursor: all-scroll; /*cursor: grab;*/ } + +.nc-fields-list { + height: auto; + max-height: 500px; + overflow-y: auto; +} diff --git a/packages/nc-gui/components/project/spreadsheet/components/MoreActions.vue b/packages/nc-gui/components/project/spreadsheet/components/MoreActions.vue index a65c83876e..9f1ee53d40 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/MoreActions.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/MoreActions.vue @@ -311,6 +311,8 @@ export default { } } else if (v.uidt === UITypes.Number) { if (input == '') { input = null } + } else if (v.uidt === UITypes.SingleSelect || v.uidt === UITypes.MultiSelect) { + if (input == '') { input = null } } res[col.destCn] = input } diff --git a/packages/nc-gui/components/project/spreadsheet/components/SortListMenu.vue b/packages/nc-gui/components/project/spreadsheet/components/SortListMenu.vue index 3931fc72f5..2a7777eb39 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/SortListMenu.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/SortListMenu.vue @@ -41,37 +41,14 @@ mdi-close-box - - - - + /> import { RelationTypes, UITypes } from 'nocodb-sdk' import { getUIDTIcon } from '~/components/project/spreadsheet/helpers/uiTypes' +import FieldListAutoCompleteDropdown from '~/components/project/spreadsheet/components/FieldListAutoCompleteDropdown' export default { name: 'SortListMenu', + components: { FieldListAutoCompleteDropdown }, props: { fieldList: Array, value: [Array, Object], diff --git a/packages/nc-gui/components/project/spreadsheet/components/editableCell/DateTimePickerCell.vue b/packages/nc-gui/components/project/spreadsheet/components/editableCell/DateTimePickerCell.vue index 4e9d631689..07abd59972 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/editableCell/DateTimePickerCell.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/editableCell/DateTimePickerCell.vue @@ -32,17 +32,19 @@ export default { value: [String, Date, Number], ignoreFocus: Boolean }, computed: { + isMysql() { + return ['mysql', 'mysql2'].indexOf(this.$store.getters['project/GtrClientType']) + }, localState: { get() { if (!this.value) { return this.value } - return (/^\d+$/.test(this.value) ? dayjs(+this.value) : dayjs(this.value)) .format('YYYY-MM-DD HH:mm') }, set(value) { - if (this.$parent.sqlUi.name === 'MysqlUi') { + if (this.isMysql) { this.$emit('input', value && dayjs(value).format('YYYY-MM-DD HH:mm:ss')) } else { this.$emit('input', value && dayjs(value).format('YYYY-MM-DD HH:mm:ssZ')) diff --git a/packages/nc-gui/components/project/spreadsheet/components/editableCell/EditableAttachmentCell.vue b/packages/nc-gui/components/project/spreadsheet/components/editableCell/EditableAttachmentCell.vue index 05dd6c2cb6..d98e2b4758 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/editableCell/EditableAttachmentCell.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/editableCell/EditableAttachmentCell.vue @@ -62,7 +62,11 @@ -
+
mdi-loading mdi-spin @@ -76,9 +80,15 @@ > mdi-plus - Attachment + + Attachment - + mdi-plus
@@ -110,6 +120,8 @@ Attach File + +
@@ -261,7 +273,8 @@ export default { showImage: false, selectedImage: null, dragOver: false, - localFilesState: [] + localFilesState: [], + urlString: '' }), watch: { value(val, prev) { @@ -286,6 +299,18 @@ export default { mounted() { }, methods: { + async uploadByUrl() { + const data = await this.$api.storage.uploadByUrl( + { + path: ['noco', this.projectName, this.meta.title, this.column.title].join('/') + }, + [{ + url: this.urlString + }] + ) + + this.localState.push(...data) + }, openUrl(url, target) { window.open(url, target) }, diff --git a/packages/nc-gui/components/project/spreadsheet/components/editableCell/TimePickerCell.vue b/packages/nc-gui/components/project/spreadsheet/components/editableCell/TimePickerCell.vue index 92dbe8d1b6..cdaa9605c6 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/editableCell/TimePickerCell.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/editableCell/TimePickerCell.vue @@ -15,6 +15,7 @@