From c36e8826a77c14b1831f5c26aa5838013c903cb9 Mon Sep 17 00:00:00 2001 From: Sara <sarasdj@stud.ntnu.no> Date: Thu, 4 Apr 2024 11:39:33 +0200 Subject: [PATCH] add: searching function with fuzzy, not tested --- app/lib/pages/default_page.dart | 23 +++++++++++++++++- app/pubspec.lock | 16 ++++++++++++ app/pubspec.yaml | 3 ++- .../__pycache__/add_new_lake.cpython-311.pyc | Bin 0 -> 6156 bytes .../lake_relations/all_system_relations.txt | 2 ++ 5 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 server/map_handler/__pycache__/add_new_lake.cpython-311.pyc create mode 100644 server/map_handler/lake_relations/all_system_relations.txt diff --git a/app/lib/pages/default_page.dart b/app/lib/pages/default_page.dart index 7d4830e9..150adf27 100644 --- a/app/lib/pages/default_page.dart +++ b/app/lib/pages/default_page.dart @@ -1,6 +1,7 @@ import 'dart:async'; -import 'package:flutter/material.dart'; import 'dart:typed_data'; +import 'package:fuzzy/fuzzy.dart'; +import 'package:flutter/material.dart'; import '../consts.dart'; import 'loading_page.dart'; @@ -25,6 +26,26 @@ class _DefaultPageState extends State<DefaultPage> { late Future<List<Measurement>> markerListFuture; late Future<Uint8List> relationFuture; + late List<String> testSearchNames = [ + "Mjøsa", + "Bogstadsvannet", + "Einavatnet", + "Femsjøen", + "Femunden", + "Fjellsjøen", + "Gjende", + "Gjersjøen" + ]; + // Searching function for lake names using Fuzzy library + List<String> searchLakeNames(String query) { + final options = FuzzyOptions(threshold: 0.3, findAllMatches: true); + final matcher = Fuzzy(testSearchNames, options: options); + final results = matcher.search(query); + + // Extracting lake names from the results and casting them to strings + return results.map((result) => result.item as String).toList(); + } + @override void initState() { super.initState(); diff --git a/app/pubspec.lock b/app/pubspec.lock index 1e772894..73538620 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -120,6 +120,14 @@ packages: description: flutter source: sdk version: "0.0.0" + fuzzy: + dependency: "direct main" + description: + name: fuzzy + sha256: af5fbd36f2f8de0663a5b562ef5ca209aea957e81a2f0e97f97475cfbed044ec + url: "https://pub.dev" + source: hosted + version: "0.5.1" google_fonts: dependency: "direct main" description: @@ -453,6 +461,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + stringr: + dependency: transitive + description: + name: stringr + sha256: "2846b6811c3cbb34c8937a35e623986e3fbf7203b3bb33ffe7f80e496ea3eff2" + url: "https://pub.dev" + source: hosted + version: "1.0.0" syncfusion_flutter_core: dependency: "direct main" description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 34233214..c87dfe46 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -16,9 +16,10 @@ dependencies: fl_chart: ^0.20.0-nullsafety1 # Charts and diagrams google_fonts: any # Fonts syncfusion_flutter_maps: ^20.4.41 # Choropleth map_handler - syncfusion_flutter_core: any # Choropleth shape selection + syncfusion_flutter_core: any # Choropleth shape selection path_provider: ^2.0.8 shared_preferences: any # Persistent data storage + fuzzy: any # Search algorithm dev_dependencies: flutter_test: diff --git a/server/map_handler/__pycache__/add_new_lake.cpython-311.pyc b/server/map_handler/__pycache__/add_new_lake.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ebfb30e892fc06a0ebe716236c82ae01c6ae030 GIT binary patch literal 6156 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 literal 0 HcmV?d00001 diff --git a/server/map_handler/lake_relations/all_system_relations.txt b/server/map_handler/lake_relations/all_system_relations.txt new file mode 100644 index 00000000..6a20bd4a --- /dev/null +++ b/server/map_handler/lake_relations/all_system_relations.txt @@ -0,0 +1,2 @@ +Mjøsa - mjosa +TestLake - testlake \ No newline at end of file -- GitLab