From 05369f46ef7e3dcf9bb65b8c83701d870d60af58 Mon Sep 17 00:00:00 2001 From: Pranav C Balan Date: Sat, 12 Jun 2021 19:47:38 +0530 Subject: [PATCH] feat: Add hasMany UI cell Signed-off-by: Pranav C Balan --- README.md | 5 + .../spreadsheet/editColumn/editColumn.vue | 6 +- .../editColumn/linkedToAnotherOptions.vue | 262 +++++++++------- .../spreadsheet/editableCell/hasManyCell.vue | 288 ++++++++++++++++++ .../project/spreadsheet/helpers/uiTypes.js | 8 +- .../project/spreadsheet/rowsXcDataTable.vue | 1 + .../project/spreadsheet/views/xcGridView.vue | 47 ++- .../src/lib/noco/common/BaseApiBuilder.ts | 17 +- .../src/lib/noco/common/XcMigrationSource.ts | 5 +- .../nocodb/src/lib/noco/gql/GqlApiBuilder.ts | 85 ++---- .../src/lib/noco/migrations/nc_002_add_m2m.ts | 43 +++ 11 files changed, 569 insertions(+), 198 deletions(-) create mode 100644 packages/nc-gui/components/project/spreadsheet/editableCell/hasManyCell.vue create mode 100644 packages/nocodb/src/lib/noco/migrations/nc_002_add_m2m.ts diff --git a/README.md b/README.md index ea7f6cee6d..4bd04df0f4 100644 --- a/README.md +++ b/README.md @@ -244,6 +244,9 @@ Our mission is to provide the most powerful no-code interface for databases whic * Create a new relation - Create foreign key in child table - Update metadata + - GUI + - + * Existing - We need to show existing relation - Update metadata @@ -259,4 +262,6 @@ Our mission is to provide the most powerful no-code interface for databases whic * Pagination * Remove child + + diff --git a/packages/nc-gui/components/project/spreadsheet/editColumn/editColumn.vue b/packages/nc-gui/components/project/spreadsheet/editColumn/editColumn.vue index fbdd61bf36..c58fc3631a 100644 --- a/packages/nc-gui/components/project/spreadsheet/editColumn/editColumn.vue +++ b/packages/nc-gui/components/project/spreadsheet/editColumn/editColumn.vue @@ -319,7 +319,6 @@ export default { value: Boolean }, data: () => ({ - valid: false, relationDeleteDlg: false, newColumn: {}, uiTypes, @@ -495,10 +494,7 @@ export default { }, computed: { isEditDisabled() { - return this.editColumn && this.isSQLite && !this.relation; - }, - isSQLite() { - return this.sqlUi === SqliteUi + return this.editColumn && this.sqlUi === SqliteUi; }, dataTypes() { return this.sqlUi.getDataTypeListForUiType(this.newColumn) diff --git a/packages/nc-gui/components/project/spreadsheet/editColumn/linkedToAnotherOptions.vue b/packages/nc-gui/components/project/spreadsheet/editColumn/linkedToAnotherOptions.vue index b0d8c0c578..5a37e78d14 100644 --- a/packages/nc-gui/components/project/spreadsheet/editColumn/linkedToAnotherOptions.vue +++ b/packages/nc-gui/components/project/spreadsheet/editColumn/linkedToAnotherOptions.vue @@ -1,101 +1,111 @@ diff --git a/packages/nc-gui/components/project/spreadsheet/editableCell/hasManyCell.vue b/packages/nc-gui/components/project/spreadsheet/editableCell/hasManyCell.vue new file mode 100644 index 0000000000..96b748d507 --- /dev/null +++ b/packages/nc-gui/components/project/spreadsheet/editableCell/hasManyCell.vue @@ -0,0 +1,288 @@ + + + + + + diff --git a/packages/nc-gui/components/project/spreadsheet/helpers/uiTypes.js b/packages/nc-gui/components/project/spreadsheet/helpers/uiTypes.js index 310e48f056..2676e473db 100644 --- a/packages/nc-gui/components/project/spreadsheet/helpers/uiTypes.js +++ b/packages/nc-gui/components/project/spreadsheet/helpers/uiTypes.js @@ -43,10 +43,10 @@ const uiTypes = [ name: 'ForeignKey', icon: 'mdi-link-variant', }, - // { - // name: 'LinkToAnotherRecord', - // icon: 'mdi-link-variant', - // }, + { + name: 'LinkToAnotherRecord', + icon: 'mdi-link-variant', + }, { name: 'SingleLineText', icon: 'mdi-format-color-text', diff --git a/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue b/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue index 6e132bf9f3..be804a3615 100644 --- a/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue +++ b/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue @@ -174,6 +174,7 @@ @addNewRelationTab="addNewRelationTab" @expandRow="expandRow" @onRelationDelete="loadMeta" + @loadTableData="loadTableData" >