From adc4282d8ad75fd7dc14229785c3cb19da4bafcd Mon Sep 17 00:00:00 2001 From: Pranav C Balan Date: Sun, 13 Jun 2021 18:38:19 +0530 Subject: [PATCH] feat: Add child edit option Signed-off-by: Pranav C Balan --- .../spreadsheet/components/expandedForm.vue | 12 +- .../spreadsheet/components/virtualCell.vue | 73 ++++++++++++ .../belogsToCell.vue | 27 +++-- .../hasManyCell.vue | 64 ++++++++-- .../manyToManyCell.vue} | 93 +++++++++++++-- .../project/spreadsheet/mixins/spreadsheet.js | 18 ++- .../project/spreadsheet/rowsXcDataTable.vue | 8 +- .../project/spreadsheet/views/xcGridView.vue | 112 +++++------------- .../src/lib/noco/common/BaseApiBuilder.ts | 7 +- .../sqlMgr/code/models/xc/ModelXcMetaMysql.ts | 11 ++ 10 files changed, 295 insertions(+), 130 deletions(-) create mode 100644 packages/nc-gui/components/project/spreadsheet/components/virtualCell.vue rename packages/nc-gui/components/project/spreadsheet/components/{editableCell => virtualCell}/belogsToCell.vue (92%) rename packages/nc-gui/components/project/spreadsheet/components/{editableCell => virtualCell}/hasManyCell.vue (83%) rename packages/nc-gui/components/project/spreadsheet/components/{editableCell/manyToMany.vue => virtualCell/manyToManyCell.vue} (71%) diff --git a/packages/nc-gui/components/project/spreadsheet/components/expandedForm.vue b/packages/nc-gui/components/project/spreadsheet/components/expandedForm.vue index 738341aa8a..e8531287c3 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/expandedForm.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/expandedForm.vue @@ -2,7 +2,9 @@
-
{{ table }} : {{ localState[primaryValueColumn] }}
+
+ mdi-table-arrow-right + {{ table }} : {{ localState[primaryValueColumn] }}
@@ -186,9 +188,13 @@ export default { hasMany: Object, belongsTo: Object, isNew: Boolean, - oldRow: Object + oldRow: Object, + iconColor:{ + type:String, + default: 'primary' + } }, - name: "expandedForm", + name: "expanded-form", data: () => ({ showborder: false, loadingLogs: true, diff --git a/packages/nc-gui/components/project/spreadsheet/components/virtualCell.vue b/packages/nc-gui/components/project/spreadsheet/components/virtualCell.vue new file mode 100644 index 0000000000..0b34d10d25 --- /dev/null +++ b/packages/nc-gui/components/project/spreadsheet/components/virtualCell.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/packages/nc-gui/components/project/spreadsheet/components/editableCell/belogsToCell.vue b/packages/nc-gui/components/project/spreadsheet/components/virtualCell/belogsToCell.vue similarity index 92% rename from packages/nc-gui/components/project/spreadsheet/components/editableCell/belogsToCell.vue rename to packages/nc-gui/components/project/spreadsheet/components/virtualCell/belogsToCell.vue index bc713a43c6..d792c805c0 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/editableCell/belogsToCell.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/virtualCell/belogsToCell.vue @@ -2,14 +2,17 @@
-
- mdi-plus +
+ {{ + value ? 'mdi-pencil' : 'mdi-plus' + }} +
@@ -53,8 +56,6 @@ - -
@@ -73,6 +74,8 @@ export default { nodes: [Object], row: [Object], api: [Object, Function], + sqlUi: [Object, Function], + active: Boolean }, data: () => ({ newRecordModal: false, @@ -89,7 +92,7 @@ export default { async showParentListModal() { this.parentListModal = true; await this.getParentMeta(); - const pid = this.meta.columns.filter((c) => c.pk).map(c => this.row[c._cn]).join(','); + const pid = this.meta.columns.filter((c) => c.pk).map(c => this.row[c._cn]).join('___'); const _cn = this.parentMeta.columns.find(c => c.cn === this.hm.cn)._cn; this.childList = await this.parentApi.paginatedList({ where: `(${_cn},eq,${pid})` @@ -103,7 +106,7 @@ export default { if (act === 'hideDialog') { this.dialogShow = false; } else { - const id = this.parentMeta.columns.filter((c) => c.pk).map(c => child[c._cn]).join(','); + const id = this.parentMeta.columns.filter((c) => c.pk).map(c => child[c._cn]).join('___'); await this.parentApi.delete(id) this.showParentListModal(); this.dialogShow = false; @@ -129,8 +132,8 @@ export default { this.list = await this.parentApi.paginatedList({}) }, async addParentToChild(parent) { - const pid = this.parentMeta.columns.filter((c) => c.pk).map(c => parent[c._cn]).join(','); - const id = this.meta.columns.filter((c) => c.pk).map(c => this.row[c._cn]).join(','); + const pid = this.parentMeta.columns.filter((c) => c.pk).map(c => parent[c._cn]).join('___'); + const id = this.meta.columns.filter((c) => c.pk).map(c => this.row[c._cn]).join('___'); const _cn = this.meta.columns.find(c => c.cn === this.bt.cn)._cn; await this.api.update(id, { @@ -204,11 +207,11 @@ export default { } .hm-items { - min-width: 200px; - max-width: 400px; + //min-width: 200px; + //max-width: 400px; flex-wrap: wrap; row-gap: 3px; - gap:3px; + gap: 3px; margin: 3px auto; } diff --git a/packages/nc-gui/components/project/spreadsheet/components/editableCell/hasManyCell.vue b/packages/nc-gui/components/project/spreadsheet/components/virtualCell/hasManyCell.vue similarity index 83% rename from packages/nc-gui/components/project/spreadsheet/components/editableCell/hasManyCell.vue rename to packages/nc-gui/components/project/spreadsheet/components/virtualCell/hasManyCell.vue index 96b748d507..bfd60e1d5a 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/editableCell/hasManyCell.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/virtualCell/hasManyCell.vue @@ -5,12 +5,12 @@ + :color="colors[i%colors.length]" :key="i"> {{ v }}
-
+
mdi-plus mdi-arrow-expand
@@ -68,12 +68,13 @@ class="ma-2 child-list-modal child-card" outlined :key="i" + @click="editChild(ch)" > mdi-delete-outline @@ -104,24 +105,55 @@ > + + + +