feat(grid): add copy selected rows as TSV
This commit is contained in:
parent
2eed0aa66c
commit
0e474cecd4
|
|
@ -6116,6 +6116,7 @@ const {
|
|||
copySelectionJson,
|
||||
copySelectionSqlInList,
|
||||
copySelectedRowsTsv,
|
||||
copySelectedRowsTsvWithHeaders,
|
||||
copyColumnNames,
|
||||
exportCsv,
|
||||
exportCurrentPageCsv,
|
||||
|
|
@ -8245,6 +8246,11 @@ function copySubmenu(): ContextMenuItem {
|
|||
items.push({ label: t("grid.copyCell"), action: copyCell });
|
||||
}
|
||||
items.push({ label: labels.row, action: copyRow });
|
||||
if (hasRowSelection.value && selectedRowCount.value > 0) {
|
||||
const singleRowSelected = selectedRowCount.value === 1;
|
||||
items.push({ label: singleRowSelected ? t("grid.copySelectedRowTsv") : t("grid.copySelectedRowsTsv", { count: selectedRowCount.value }), action: copySelectedRowsTsv });
|
||||
items.push({ label: singleRowSelected ? t("grid.copySelectedRowTsvWithHeaders") : t("grid.copySelectedRowsTsvWithHeaders", { count: selectedRowCount.value }), action: copySelectedRowsTsvWithHeaders });
|
||||
}
|
||||
if (isMultiRow.value) {
|
||||
items.push({ label: labels.insertMerged, action: () => copyRowAsInsert("merged"), disabled: !canCopyPreparedInsert(false, "merged") });
|
||||
items.push({ label: labels.insertRowByRow, action: () => copyRowAsInsert("row-by-row"), disabled: !canCopyPreparedInsert(false, "row-by-row") });
|
||||
|
|
|
|||
|
|
@ -453,6 +453,13 @@ export function useDataGridExport(options: UseDataGridExportOptions) {
|
|||
await copyText(formatSelectionAsTsv({ columns: columns.value, rows }));
|
||||
}
|
||||
|
||||
async function copySelectedRowsTsvWithHeaders() {
|
||||
if (!hasRowSelection.value || selectedRowIds.value.size === 0) return;
|
||||
const rows = displayItems.value.filter((item) => selectedRowIds.value.has(item.id) && !item.isDraft).map((item) => item.data);
|
||||
if (rows.length === 0) return;
|
||||
await copyText(formatSelectionAsTsv({ columns: columns.value, rows }, true));
|
||||
}
|
||||
|
||||
async function copyColumnNames() {
|
||||
if (columns.value.length === 0) return;
|
||||
await copyText(columns.value.join("\t"));
|
||||
|
|
@ -1112,6 +1119,7 @@ export function useDataGridExport(options: UseDataGridExportOptions) {
|
|||
copySelectionJson,
|
||||
copySelectionSqlInList,
|
||||
copySelectedRowsTsv,
|
||||
copySelectedRowsTsvWithHeaders,
|
||||
copyColumnNames,
|
||||
exportCsv,
|
||||
exportCurrentPageCsv,
|
||||
|
|
|
|||
|
|
@ -852,6 +852,10 @@ export default {
|
|||
cloneRows: "Clone {count} as New Rows",
|
||||
restoreRows: "Restore {count} Rows",
|
||||
copyRows: "Copy {count} Rows (JSON)",
|
||||
copySelectedRowsTsv: "Copy {count} Rows (TSV)",
|
||||
copySelectedRowsTsvWithHeaders: "Copy {count} Rows with Headers (TSV)",
|
||||
copySelectedRowTsv: "Copy 1 Row (TSV)",
|
||||
copySelectedRowTsvWithHeaders: "Copy 1 Row with Headers (TSV)",
|
||||
copyColumnsJson: "Copy {count} Columns (JSON)",
|
||||
copyRowsInsert: "Copy {count} Rows as INSERT",
|
||||
copyRowsInsertMerged: "Copy {count} Rows as INSERT (Merged)",
|
||||
|
|
|
|||
|
|
@ -796,6 +796,10 @@ export default withEnglishFallback({
|
|||
cloneRows: "Clonar {count} como filas nuevas",
|
||||
restoreRows: "Restaurar {count} filas",
|
||||
copyRows: "Copiar {count} filas (JSON)",
|
||||
copySelectedRowsTsv: "Copiar {count} filas (TSV)",
|
||||
copySelectedRowsTsvWithHeaders: "Copiar {count} filas con encabezados (TSV)",
|
||||
copySelectedRowTsv: "Copiar 1 fila (TSV)",
|
||||
copySelectedRowTsvWithHeaders: "Copiar 1 fila con encabezados (TSV)",
|
||||
copyColumnsJson: "Copiar {count} columnas (JSON)",
|
||||
copyRowsInsert: "Copiar {count} filas como INSERT",
|
||||
copyRowsInsertMerged: "Copiar {count} filas como INSERT (combinado)",
|
||||
|
|
|
|||
|
|
@ -794,6 +794,10 @@ export default withEnglishFallback({
|
|||
cloneRows: "Clona {count} come Nuove Righe",
|
||||
restoreRows: "Ripristina {count} Righe",
|
||||
copyRows: "Copia {count} Righe (JSON)",
|
||||
copySelectedRowsTsv: "Copia {count} Righe (TSV)",
|
||||
copySelectedRowsTsvWithHeaders: "Copia {count} Righe con Intestazioni (TSV)",
|
||||
copySelectedRowTsv: "Copia 1 Riga (TSV)",
|
||||
copySelectedRowTsvWithHeaders: "Copia 1 Riga con Intestazioni (TSV)",
|
||||
copyColumnsJson: "Copia {count} Colonne (JSON)",
|
||||
copyRowsInsert: "Copia {count} Righe come INSERT",
|
||||
copyRowsInsertMerged: "Copia {count} Righe come INSERT (unito)",
|
||||
|
|
|
|||
|
|
@ -790,6 +790,10 @@ export default withEnglishFallback({
|
|||
cloneRows: "{count}行を新しい行として複製",
|
||||
restoreRows: "{count}行を復元",
|
||||
copyRows: "{count}行をコピー (JSON)",
|
||||
copySelectedRowsTsv: "{count}行をコピー (TSV)",
|
||||
copySelectedRowsTsvWithHeaders: "{count}行をヘッダー付きでコピー (TSV)",
|
||||
copySelectedRowTsv: "1行をコピー (TSV)",
|
||||
copySelectedRowTsvWithHeaders: "1行をヘッダー付きでコピー (TSV)",
|
||||
copyColumnsJson: "{count}列をコピー (JSON)",
|
||||
copyRowsInsert: "{count}行をINSERTとしてコピー",
|
||||
copyRowsInsertMerged: "{count}行をINSERTとしてコピー(まとめて)",
|
||||
|
|
|
|||
|
|
@ -795,6 +795,10 @@ export default withEnglishFallback({
|
|||
cloneRows: "Clonar {count} como Novas Linhas",
|
||||
restoreRows: "Restaurar {count} Linhas",
|
||||
copyRows: "Copiar {count} Linhas (JSON)",
|
||||
copySelectedRowsTsv: "Copiar {count} Linhas (TSV)",
|
||||
copySelectedRowsTsvWithHeaders: "Copiar {count} Linhas com Cabeçalhos (TSV)",
|
||||
copySelectedRowTsv: "Copiar 1 Linha (TSV)",
|
||||
copySelectedRowTsvWithHeaders: "Copiar 1 Linha com Cabeçalhos (TSV)",
|
||||
copyColumnsJson: "Copiar {count} Colunas (JSON)",
|
||||
copyRowsInsert: "Copiar {count} Linhas como INSERT",
|
||||
copyRowsInsertMerged: "Copiar {count} Linhas como INSERT (mesclado)",
|
||||
|
|
|
|||
|
|
@ -854,6 +854,10 @@ export default withEnglishFallback({
|
|||
cloneRows: "克隆 {count} 行为新行",
|
||||
restoreRows: "恢复 {count} 行",
|
||||
copyRows: "复制 {count} 行 (JSON)",
|
||||
copySelectedRowsTsv: "复制 {count} 行 (TSV)",
|
||||
copySelectedRowsTsvWithHeaders: "复制 {count} 行含表头 (TSV)",
|
||||
copySelectedRowTsv: "复制 1 行 (TSV)",
|
||||
copySelectedRowTsvWithHeaders: "复制 1 行含表头 (TSV)",
|
||||
copyColumnsJson: "复制 {count} 列 (JSON)",
|
||||
copyRowsInsert: "复制 {count} 行为 INSERT",
|
||||
copyRowsInsertMerged: "复制 {count} 行为 INSERT(合并)",
|
||||
|
|
|
|||
|
|
@ -795,6 +795,10 @@ export default withEnglishFallback({
|
|||
cloneRows: "複製 {count} 筆為新資料",
|
||||
restoreRows: "復原 {count} 筆",
|
||||
copyRows: "複製 {count} 筆 (JSON)",
|
||||
copySelectedRowsTsv: "複製 {count} 筆 (TSV)",
|
||||
copySelectedRowsTsvWithHeaders: "複製 {count} 筆含表頭 (TSV)",
|
||||
copySelectedRowTsv: "複製 1 筆 (TSV)",
|
||||
copySelectedRowTsvWithHeaders: "複製 1 筆含表頭 (TSV)",
|
||||
copyColumnsJson: "複製 {count} 欄 (JSON)",
|
||||
copyRowsInsert: "複製 {count} 筆為 INSERT",
|
||||
copyRowsInsertMerged: "複製 {count} 筆為 INSERT(合併)",
|
||||
|
|
|
|||
Loading…
Reference in New Issue