feat: Ajout de l'exportation des événements au format CSV avec filtres personnalisables
This commit is contained in:
7
em2rp/lib/utils/web_download.dart
Normal file
7
em2rp/lib/utils/web_download.dart
Normal file
@@ -0,0 +1,7 @@
|
||||
/// Fichier d'export conditionnel pour le téléchargement web
|
||||
/// Utilise l'implémentation web sur le web, et le stub sur les autres plateformes
|
||||
library;
|
||||
|
||||
export 'web_download_stub.dart'
|
||||
if (dart.library.js_interop) 'web_download_web.dart';
|
||||
|
||||
6
em2rp/lib/utils/web_download_stub.dart
Normal file
6
em2rp/lib/utils/web_download_stub.dart
Normal file
@@ -0,0 +1,6 @@
|
||||
/// Stub pour le téléchargement web
|
||||
/// Utilisé sur les plateformes non-web (mobile, desktop)
|
||||
void downloadFile(String content, String fileName) {
|
||||
throw UnsupportedError('Le téléchargement web n\'est pas supporté sur cette plateforme');
|
||||
}
|
||||
|
||||
29
em2rp/lib/utils/web_download_web.dart
Normal file
29
em2rp/lib/utils/web_download_web.dart
Normal file
@@ -0,0 +1,29 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:js_interop';
|
||||
import 'dart:typed_data';
|
||||
import 'package:web/web.dart' as web;
|
||||
|
||||
/// Implémentation web du téléchargement de fichier
|
||||
void downloadFile(String content, String fileName) {
|
||||
final bytes = Uint8List.fromList(utf8.encode(content));
|
||||
|
||||
// Créer un Blob avec les données
|
||||
final blob = web.Blob(
|
||||
[bytes.toJS].toJS,
|
||||
web.BlobPropertyBag(type: 'text/csv;charset=utf-8'),
|
||||
);
|
||||
|
||||
// Créer une URL pour le blob
|
||||
final url = web.URL.createObjectURL(blob);
|
||||
|
||||
// Créer un lien de téléchargement et le cliquer
|
||||
final anchor = web.document.createElement('a') as web.HTMLAnchorElement;
|
||||
anchor.href = url;
|
||||
anchor.download = fileName;
|
||||
anchor.click();
|
||||
|
||||
// Nettoyer l'URL
|
||||
web.URL.revokeObjectURL(url);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user