Skip to content

Commit

Permalink
feat(UI): context option to copy cell or row value
Browse files Browse the repository at this point in the history
  • Loading branch information
Fabio286 committed Jun 30, 2021
1 parent a69bdeb commit d868c77
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 1 deletion.
18 changes: 18 additions & 0 deletions src/renderer/components/WorkspaceQueryTable.vue
Expand Up @@ -12,6 +12,8 @@
:selected-rows="selectedRows"
@show-delete-modal="showDeleteConfirmModal"
@set-null="setNull"
@copy-cell="copyCell"
@copy-row="copyRow"
@close-context="closeContext"
/>
<ul v-if="resultsWithRows.length > 1" class="tab tab-block result-tabs">
Expand Down Expand Up @@ -385,6 +387,22 @@ export default {
};
this.$emit('update-field', params);
},
copyCell () {
const row = this.localResults.find(row => this.selectedRows.includes(row._id));
const cellName = Object.keys(row).find(prop => [
this.selectedCell.field,
`${this.fields[0].table}.${this.selectedCell.field}`,
`${this.fields[0].tableAlias}.${this.selectedCell.field}`
].includes(prop));
const valueToCopy = row[cellName];
navigator.clipboard.writeText(valueToCopy);
},
copyRow () {
const row = this.localResults.find(row => this.selectedRows.includes(row._id));
const rowToCopy = JSON.parse(JSON.stringify(row));
delete rowToCopy._id;
navigator.clipboard.writeText(JSON.stringify(rowToCopy));
},
applyUpdate (params) {
const { primary, id, field, table, content } = params;
Expand Down
32 changes: 32 additions & 0 deletions src/renderer/components/WorkspaceQueryTableContext.vue
Expand Up @@ -3,6 +3,30 @@
:context-event="contextEvent"
@close-context="closeContext"
>
<div v-if="selectedRows.length === 1" class="context-element">
<span class="d-flex"><i class="mdi mdi-18px mdi-content-copy text-light pr-1" /> {{ $t('word.copy') }}</span>
<i class="mdi mdi-18px mdi-chevron-right text-light pl-1" />
<div class="context-submenu">
<div
v-if="selectedRows.length === 1"
class="context-element"
@click="copyCell"
>
<span class="d-flex">
<i class="mdi mdi-18px mdi-numeric-0 mdi-rotate-90 text-light pr-1" /> {{ $tc('word.cell', 1) }}
</span>
</div>
<div
v-if="selectedRows.length === 1"
class="context-element"
@click="copyRow"
>
<span class="d-flex">
<i class="mdi mdi-18px mdi-table-row text-light pr-1" /> {{ $tc('word.row', 1) }}
</span>
</div>
</div>
</div>
<div
v-if="selectedRows.length === 1"
class="context-element"
Expand Down Expand Up @@ -44,6 +68,14 @@ export default {
setNull () {
this.$emit('set-null');
this.closeContext();
},
copyCell () {
this.$emit('copy-cell');
this.closeContext();
},
copyRow () {
this.$emit('copy-row');
this.closeContext();
}
}
};
Expand Down
4 changes: 3 additions & 1 deletion src/renderer/i18n/en-US.js
Expand Up @@ -109,7 +109,9 @@ module.exports = {
structure: 'Structure',
small: 'Small',
medium: 'Medium',
large: 'Large'
large: 'Large',
row: 'Row | Rows',
cell: 'Cell | Cells'
},
message: {
appWelcome: 'Welcome to Antares SQL Client!',
Expand Down

0 comments on commit d868c77

Please sign in to comment.