Skip to content

Commit 1d01bae

Browse files
committed
feat:新增数据热力图功能
1 parent eacb7e4 commit 1d01bae

13 files changed

Lines changed: 990 additions & 2 deletions

File tree

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "youran-toolbox",
33
"private": true,
4-
"version": "0.0.7",
4+
"version": "0.0.8",
55
"type": "module",
66
"scripts": {
77
"dev": "vite dev",
@@ -41,6 +41,7 @@
4141
"clsx": "^2.1.1",
4242
"diff": "^8.0.3",
4343
"file-saver": "^2.0.5",
44+
"html-to-image": "^1.11.13",
4445
"jsqr": "^1.4.0",
4546
"lucide-svelte": "^0.563.0",
4647
"pdf-lib": "^1.17.1",

src/lib/i18n/locales/de-DE.json

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
"rename": {
2323
"title": "Stapel-Umbenennung",
2424
"desc": "Dateien mit Index, Datum, Text umbenennen"
25+
},
26+
"heatmap": {
27+
"title": "Daten-Heatmap",
28+
"desc": "Excel-Daten einfügen und Heatmap automatisch generieren"
2529
}
2630
},
2731
"classify": {
@@ -85,6 +89,46 @@
8589
"detailLabel": "Details:",
8690
"success": "Erfolg"
8791
},
92+
"heatmap": {
93+
"inputData": "Dateneingabe",
94+
"inputHint": "Kopieren Sie Daten aus Excel und fügen Sie sie hier ein. Tab-getrennt. 1. Zeile = Spaltenbeschriftungen (Y-Achse), 1. Spalte = Zeilenbeschriftungen (X-Achse)",
95+
"inputPlaceholder": "Excel-Daten hier einfügen...",
96+
"parseError": "Ungültiges Format. Mindestens 2 Zeilen und 2 Spalten mit Tab-getrennten Daten erforderlich",
97+
"colorScheme": "Farbschema",
98+
"color": {
99+
"purple": "Lila",
100+
"blue": "Blau",
101+
"green": "Grün",
102+
"red": "Rot",
103+
"orange": "Orange",
104+
"teal": "Blaugrün",
105+
"pink": "Rosa",
106+
"indigo": "Indigo",
107+
"amber": "Bernstein",
108+
"cyan": "Cyan"
109+
},
110+
"cellWidth": "Zellenbreite",
111+
"cellHeight": "Zellenhöhe",
112+
"cellGap": "Zellenabstand",
113+
"xLabelAngle": "X-Achsen-Winkel",
114+
"chartTitle": "Diagrammtitel",
115+
"swapAxis": "XY-Achsen",
116+
"swapAxisBtn": "Tauschen",
117+
"titlePlaceholder": "Titel eingeben (optional)",
118+
"xAxisTitleLabel": "X-Achsen-Titel",
119+
"xAxisTitlePlaceholder": "z.B. Kategorie",
120+
"yAxisTitleLabel": "Y-Achsen-Titel",
121+
"yAxisTitlePlaceholder": "z.B. Abteilung",
122+
"legendTitleLabel": "Legendentitel",
123+
"legendTitlePlaceholder": "z.B. Prozent",
124+
"clear": "Löschen",
125+
"export": "Bild exportieren",
126+
"exportPadding": "Bildabstand",
127+
"exportScale": "Export-Skalierung",
128+
"exportScaleHint": "Höhere Skalierung bedeutet schärfere Bilder, aber größere Dateien. 1x Originalgröße, 2x allgemeine Nutzung, 3x hochwertige Drucke",
129+
"exportSuccess": "Heatmap exportiert",
130+
"customColor": "Benutzerdefinierte Farbe"
131+
},
88132
"rename": {
89133
"selectHint": "Klicken Sie, um Dateien auszuwählen",
90134
"selectFiles": "Auswählen",

src/lib/i18n/locales/en.json

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@
3434
"textDiff": {
3535
"title": "Text Diff",
3636
"desc": "Compare differences between two texts"
37+
},
38+
"heatmap": {
39+
"title": "Data Heatmap",
40+
"desc": "Paste Excel data to generate heatmap"
3741
}
3842
},
3943
"classify": {
@@ -399,5 +403,45 @@
399403
"unchanged": "unchanged",
400404
"swapped": "Texts swapped",
401405
"copied": "Diff result copied"
406+
},
407+
"heatmap": {
408+
"inputData": "Data Input",
409+
"inputHint": "Copy data from Excel and paste here. Tab-separated. First row = column labels (Y-axis), first column = row labels (X-axis)",
410+
"inputPlaceholder": "Paste Excel data here...",
411+
"parseError": "Invalid format. Need at least 2 rows and 2 columns of tab-separated data",
412+
"colorScheme": "Color Scheme",
413+
"color": {
414+
"purple": "Purple",
415+
"blue": "Blue",
416+
"green": "Green",
417+
"red": "Red",
418+
"orange": "Orange",
419+
"teal": "Teal",
420+
"pink": "Pink",
421+
"indigo": "Indigo",
422+
"amber": "Amber",
423+
"cyan": "Cyan"
424+
},
425+
"cellWidth": "Cell Width",
426+
"cellHeight": "Cell Height",
427+
"cellGap": "Cell Gap",
428+
"xLabelAngle": "X Label Angle",
429+
"chartTitle": "Chart Title",
430+
"swapAxis": "XY Axis",
431+
"swapAxisBtn": "Swap",
432+
"titlePlaceholder": "Enter title (optional)",
433+
"xAxisTitleLabel": "X-Axis Title",
434+
"xAxisTitlePlaceholder": "e.g. Category",
435+
"yAxisTitleLabel": "Y-Axis Title",
436+
"yAxisTitlePlaceholder": "e.g. Department",
437+
"legendTitleLabel": "Legend Title",
438+
"legendTitlePlaceholder": "e.g. Percentage",
439+
"clear": "Clear",
440+
"export": "Export Image",
441+
"exportPadding": "Image Padding",
442+
"exportScale": "Export Scale",
443+
"exportScaleHint": "Higher scale means clearer image but larger file size. 1x is original size, 2x for general use, 3x for high-quality printing",
444+
"exportSuccess": "Heatmap exported",
445+
"customColor": "Custom Color"
402446
}
403447
}

src/lib/i18n/locales/es-ES.json

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
"rename": {
2323
"title": "Renombrar Lote",
2424
"desc": "Renombrar archivos con índice, fecha, texto personalizado"
25+
},
26+
"heatmap": {
27+
"title": "Mapa de calor",
28+
"desc": "Pegue datos de Excel para generar un mapa de calor"
2529
}
2630
},
2731
"classify": {
@@ -85,6 +89,46 @@
8589
"detailLabel": "Detalles:",
8690
"success": "Éxito"
8791
},
92+
"heatmap": {
93+
"inputData": "Entrada de datos",
94+
"inputHint": "Copie datos desde Excel y péguelos aquí. Separados por tabulación. 1.ª fila = etiquetas de columnas (eje Y), 1.ª columna = etiquetas de filas (eje X)",
95+
"inputPlaceholder": "Pegue datos de Excel aquí...",
96+
"parseError": "Formato inválido. Se necesitan al menos 2 filas y 2 columnas de datos separados por tabulación",
97+
"colorScheme": "Esquema de colores",
98+
"color": {
99+
"purple": "Púrpura",
100+
"blue": "Azul",
101+
"green": "Verde",
102+
"red": "Rojo",
103+
"orange": "Naranja",
104+
"teal": "Verde azulado",
105+
"pink": "Rosa",
106+
"indigo": "Índigo",
107+
"amber": "Ámbar",
108+
"cyan": "Cian"
109+
},
110+
"cellWidth": "Ancho de celda",
111+
"cellHeight": "Altura de celda",
112+
"cellGap": "Espacio entre celdas",
113+
"xLabelAngle": "Ángulo eje X",
114+
"chartTitle": "Título del gráfico",
115+
"swapAxis": "Ejes XY",
116+
"swapAxisBtn": "Intercambiar",
117+
"titlePlaceholder": "Ingrese el título (opcional)",
118+
"xAxisTitleLabel": "Título eje X",
119+
"xAxisTitlePlaceholder": "ej: Categoría",
120+
"yAxisTitleLabel": "Título eje Y",
121+
"yAxisTitlePlaceholder": "ej: Departamento",
122+
"legendTitleLabel": "Título de leyenda",
123+
"legendTitlePlaceholder": "ej: Porcentaje",
124+
"clear": "Borrar",
125+
"export": "Exportar imagen",
126+
"exportPadding": "Margen de imagen",
127+
"exportScale": "Escala de exportación",
128+
"exportScaleHint": "Mayor escala significa imagen más nítida pero archivo más grande. 1x tamaño original, 2x uso general, 3x impresión de alta calidad",
129+
"exportSuccess": "Mapa de calor exportado",
130+
"customColor": "Color personalizado"
131+
},
88132
"rename": {
89133
"selectHint": "Haz clic para seleccionar archivos",
90134
"selectFiles": "Seleccionar",

src/lib/i18n/locales/fr-FR.json

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
"rename": {
2323
"title": "Renommer par lot",
2424
"desc": "Renommer fichiers avec index, date, texte personnalisé"
25+
},
26+
"heatmap": {
27+
"title": "Carte thermique",
28+
"desc": "Collez des données Excel pour générer une carte thermique"
2529
}
2630
},
2731
"classify": {
@@ -85,6 +89,46 @@
8589
"detailLabel": "Détails:",
8690
"success": "Succès"
8791
},
92+
"heatmap": {
93+
"inputData": "Saisie des données",
94+
"inputHint": "Copiez les données depuis Excel et collez-les ici. Séparées par tabulation. 1re ligne = étiquettes de colonnes (axe Y), 1re colonne = étiquettes de lignes (axe X)",
95+
"inputPlaceholder": "Collez les données Excel ici...",
96+
"parseError": "Format invalide. Il faut au moins 2 lignes et 2 colonnes de données séparées par tabulation",
97+
"colorScheme": "Palette de couleurs",
98+
"color": {
99+
"purple": "Violet",
100+
"blue": "Bleu",
101+
"green": "Vert",
102+
"red": "Rouge",
103+
"orange": "Orange",
104+
"teal": "Sarcelle",
105+
"pink": "Rose",
106+
"indigo": "Indigo",
107+
"amber": "Ambre",
108+
"cyan": "Cyan"
109+
},
110+
"cellWidth": "Largeur de cellule",
111+
"cellHeight": "Hauteur de cellule",
112+
"cellGap": "Espacement",
113+
"xLabelAngle": "Angle axe X",
114+
"chartTitle": "Titre du graphique",
115+
"swapAxis": "Axes XY",
116+
"swapAxisBtn": "Permuter",
117+
"titlePlaceholder": "Entrez le titre (optionnel)",
118+
"xAxisTitleLabel": "Titre axe X",
119+
"xAxisTitlePlaceholder": "ex : Catégorie",
120+
"yAxisTitleLabel": "Titre axe Y",
121+
"yAxisTitlePlaceholder": "ex : Service",
122+
"legendTitleLabel": "Titre de la légende",
123+
"legendTitlePlaceholder": "ex : Pourcentage",
124+
"clear": "Effacer",
125+
"export": "Exporter l'image",
126+
"exportPadding": "Marge de l'image",
127+
"exportScale": "Échelle d'export",
128+
"exportScaleHint": "Plus l'échelle est grande, plus l'image est nette mais le fichier est volumineux. 1x taille originale, 2x usage général, 3x impression haute qualité",
129+
"exportSuccess": "Carte thermique exportée",
130+
"customColor": "Couleur personnalisée"
131+
},
88132
"rename": {
89133
"selectHint": "Cliquez pour sélectionner des fichiers",
90134
"selectFiles": "Sélectionner",

src/lib/i18n/locales/it-IT.json

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
"rename": {
2323
"title": "Rinomina batch",
2424
"desc": "Rinomina file con indice, data, testo personalizzato"
25+
},
26+
"heatmap": {
27+
"title": "Mappa di calore",
28+
"desc": "Incolla i dati Excel per generare una mappa di calore"
2529
}
2630
},
2731
"classify": {
@@ -85,6 +89,46 @@
8589
"detailLabel": "Dettagli:",
8690
"success": "Successo"
8791
},
92+
"heatmap": {
93+
"inputData": "Inserimento dati",
94+
"inputHint": "Copia i dati da Excel e incollali qui. Separati da tabulazione. 1ª riga = etichette colonne (asse Y), 1ª colonna = etichette righe (asse X)",
95+
"inputPlaceholder": "Incolla i dati Excel qui...",
96+
"parseError": "Formato non valido. Servono almeno 2 righe e 2 colonne di dati separati da tabulazione",
97+
"colorScheme": "Schema colori",
98+
"color": {
99+
"purple": "Viola",
100+
"blue": "Blu",
101+
"green": "Verde",
102+
"red": "Rosso",
103+
"orange": "Arancione",
104+
"teal": "Verde acqua",
105+
"pink": "Rosa",
106+
"indigo": "Indaco",
107+
"amber": "Ambra",
108+
"cyan": "Ciano"
109+
},
110+
"cellWidth": "Larghezza cella",
111+
"cellHeight": "Altezza cella",
112+
"cellGap": "Spaziatura celle",
113+
"xLabelAngle": "Angolo asse X",
114+
"chartTitle": "Titolo grafico",
115+
"swapAxis": "Assi XY",
116+
"swapAxisBtn": "Scambia",
117+
"titlePlaceholder": "Inserisci titolo (opzionale)",
118+
"xAxisTitleLabel": "Titolo asse X",
119+
"xAxisTitlePlaceholder": "es: Categoria",
120+
"yAxisTitleLabel": "Titolo asse Y",
121+
"yAxisTitlePlaceholder": "es: Reparto",
122+
"legendTitleLabel": "Titolo legenda",
123+
"legendTitlePlaceholder": "es: Percentuale",
124+
"clear": "Cancella",
125+
"export": "Esporta immagine",
126+
"exportPadding": "Margine immagine",
127+
"exportScale": "Scala di esportazione",
128+
"exportScaleHint": "Scala maggiore significa immagine più nitida ma file più grande. 1x dimensione originale, 2x uso generale, 3x stampa di alta qualità",
129+
"exportSuccess": "Mappa di calore esportata",
130+
"customColor": "Colore personalizzato"
131+
},
88132
"rename": {
89133
"selectHint": "Clicca per selezionare file",
90134
"selectFiles": "Seleziona",

src/lib/i18n/locales/ja-JP.json

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
"rename": {
2323
"title": "一括リネーム",
2424
"desc": "連番、日付、カスタムテキストでファイル名を変更"
25+
},
26+
"heatmap": {
27+
"title": "データヒートマップ",
28+
"desc": "Excel データを貼り付けてヒートマップを自動生成"
2529
}
2630
},
2731
"classify": {
@@ -85,6 +89,46 @@
8589
"detailLabel": "詳細:",
8690
"success": "成功"
8791
},
92+
"heatmap": {
93+
"inputData": "データ入力",
94+
"inputHint": "Excel からデータをコピーして貼り付けてください。Tab 区切り。1 行目 = 列ラベル(Y 軸)、1 列目 = 行ラベル(X 軸)",
95+
"inputPlaceholder": "Excel データを貼り付けてください...",
96+
"parseError": "データ形式が正しくありません。少なくとも 2 行 2 列の Tab 区切りデータが必要です",
97+
"colorScheme": "カラースキーム",
98+
"color": {
99+
"purple": "パープル",
100+
"blue": "ブルー",
101+
"green": "グリーン",
102+
"red": "レッド",
103+
"orange": "オレンジ",
104+
"teal": "ティール",
105+
"pink": "ピンク",
106+
"indigo": "インディゴ",
107+
"amber": "アンバー",
108+
"cyan": "シアン"
109+
},
110+
"cellWidth": "セル幅",
111+
"cellHeight": "セルの高さ",
112+
"cellGap": "セル間隔",
113+
"xLabelAngle": "X 軸角度",
114+
"chartTitle": "チャートタイトル",
115+
"swapAxis": "XY 軸",
116+
"swapAxisBtn": "切替",
117+
"titlePlaceholder": "タイトルを入力(任意)",
118+
"xAxisTitleLabel": "X 軸タイトル",
119+
"xAxisTitlePlaceholder": "例:カテゴリ",
120+
"yAxisTitleLabel": "Y 軸タイトル",
121+
"yAxisTitlePlaceholder": "例:部門",
122+
"legendTitleLabel": "凡例タイトル",
123+
"legendTitlePlaceholder": "例:パーセント",
124+
"clear": "クリア",
125+
"export": "画像をエクスポート",
126+
"exportPadding": "画像の余白",
127+
"exportScale": "エクスポート倍率",
128+
"exportScaleHint": "倍率が高いほど画像が鮮明になりますが、ファイルサイズも大きくなります。1x は原寸、2x は通常使用、3x は高品質印刷向け",
129+
"exportSuccess": "ヒートマップをエクスポートしました",
130+
"customColor": "カスタムカラー"
131+
},
88132
"rename": {
89133
"selectHint": "クリックしてファイルを選択",
90134
"selectFiles": "ファイル選択",

0 commit comments

Comments
 (0)