aboutsummaryrefslogtreecommitdiff
path: root/frontend/lib/models/benchmark/task_info.dart
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/lib/models/benchmark/task_info.dart')
-rw-r--r--frontend/lib/models/benchmark/task_info.dart71
1 files changed, 71 insertions, 0 deletions
diff --git a/frontend/lib/models/benchmark/task_info.dart b/frontend/lib/models/benchmark/task_info.dart
new file mode 100644
index 000000000..a79e8d500
--- /dev/null
+++ b/frontend/lib/models/benchmark/task_info.dart
@@ -0,0 +1,71 @@
+// TODO: Remove the ability to have null values when benchmark implementation is complete
+import 'dart:convert';
+
+/// TaskInfo holds information related to a specific benchmark task.
+///
+/// The class encapsulates various attributes of a task, such as the path to the data file,
+/// whether the task is a regression task, the categories it falls under, and specific task details
+/// like the task description, expected answer, and so on.
+class TaskInfo {
+ /// The path to the data file associated with the task.
+ /// This is typically a JSON file containing the dataset or resources needed for the task.
+ final String dataPath;
+
+ /// A boolean indicating whether the task is a regression task.
+ final bool isRegression;
+
+ /// A list of categories to which the task belongs.
+ final List<String> category;
+
+ /// The specific task that needs to be performed.
+ final String task;
+
+ /// The expected answer for the task.
+ final String answer;
+
+ /// A description providing details about the task.
+ final String description;
+
+ /// Constructs a new TaskInfo instance.
+ ///
+ /// [dataPath]: The path to the data file for the task.
+ /// [isRegression]: A boolean indicating if the task is a regression task.
+ /// [category]: A list of categories to which the task belongs.
+ /// [task]: The specific task to be performed.
+ /// [answer]: The expected answer for the task.
+ /// [description]: A description of the task.
+ TaskInfo({
+ required this.dataPath,
+ required this.isRegression,
+ required this.category,
+ required this.task,
+ required this.answer,
+ required this.description,
+ });
+
+ /// Creates a TaskInfo instance from a map.
+ ///
+ /// [json]: A map containing key-value pairs corresponding to TaskInfo fields.
+ ///
+ /// Returns a new TaskInfo populated with values from the map.
+ factory TaskInfo.fromJson(Map<String, dynamic> json) => TaskInfo(
+ dataPath: json['data_path'] ?? 'placeholder',
+ isRegression: json['is_regression'] ?? false,
+ category: List<String>.from(json['category']),
+ task: json['task'] ?? 'placeholder',
+ answer: json['answer'] ?? 'placeholder',
+ description: json['description'] ?? 'placeholder',
+ );
+
+ /// Converts the TaskInfo instance to a map.
+ ///
+ /// Returns a map containing key-value pairs corresponding to TaskInfo fields.
+ Map<String, dynamic> toJson() => {
+ 'data_path': dataPath,
+ 'is_regression': isRegression,
+ 'category': jsonEncode(category),
+ 'task': task,
+ 'answer': answer,
+ 'description': description,
+ };
+}