feat: copy table button

This commit is contained in:
2025-11-05 00:14:46 +01:00
parent d6ab2ff68b
commit 040ebaf6f8
3 changed files with 25 additions and 4 deletions
+1 -1
View File
@@ -10,7 +10,7 @@
- [x] Empty project from template
- [x] Configuration
- [x] Generate table
- [ ] Copy table option
- [x] Copy table option
- [x] Save last state in cookies
- [ ] Other format: raw text
- [ ] Other format: SVG
+9 -2
View File
@@ -95,7 +95,7 @@
</table>
<template v-if="table.length">
<h2>Output Table</h2>
<table class="output">
<table id="output" class="output">
<colgroup>
<col style="width: 25%">
<col>
@@ -104,9 +104,16 @@
<td v-for="item in row">{{item}}</td>
</tr>
</table>
<br>
<p>
<button @click="copyTable">
<i icon="table"></i>&nbsp;
<span v-if="copyTableOverride">{{copyTableOverride}}</span>
<span v-else>Copy table</span>
</button>
</p>
</template>
<h2 v-else>Add more vegetables !</h2>
<br />
<small class="footer">
<i icon="at-sign"></i>&nbsp;<a href="https://github.com/klemek" target="_blank">klemek</a>
-
+15 -1
View File
@@ -231,6 +231,7 @@ const app = createApp({
mix: 25,
},
table: [],
copyTableOverride: null,
};
},
computed: {
@@ -333,6 +334,7 @@ const app = createApp({
}
},
generateData() {
this.table.splice(0, this.table.length);
if (this.candidates.length <= 2) {
return;
}
@@ -360,9 +362,21 @@ const app = createApp({
table[table.length - 1][1] = "🥗 SALAD 🥗";
}
this.table.splice(0, this.table.length);
this.table.push(...table);
},
async copyTable() {
const csvTable = this.table.map((row) => row.join("\t")).join("\n");
try {
await navigator.clipboard.writeText(csvTable);
this.copyTableOverride = "Table Copied";
} catch (error) {
console.error(error.message);
this.copyTableOverride = "Error";
}
setTimeout(() => {
this.copyTableOverride = null;
}, 1000);
},
},
});