Add filter type in resource screen
This commit is contained in:
parent
019402b4c0
commit
b5387880b1
@ -219,7 +219,7 @@ class _ConfigurationDetailScreenState extends State<ConfigurationDetailScreen> {
|
||||
child: Icon(
|
||||
getSectionIcon(element.type),
|
||||
color: kPrimaryColor,
|
||||
size: 30.0,
|
||||
size: 25,
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import 'package:auto_size_text/auto_size_text.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:manager_app/Components/fetch_resource_icon.dart';
|
||||
import 'package:manager_app/Components/multi_select_container.dart';
|
||||
import 'package:manager_app/Components/string_input_container.dart';
|
||||
import 'package:manager_app/Screens/Resources/new_resource_popup.dart';
|
||||
import 'package:manager_app/Screens/Resources/show_resource_popup.dart';
|
||||
@ -23,12 +24,15 @@ class ResourceBodyGrid extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _ResourceBodyGridState extends State<ResourceBodyGrid> {
|
||||
String filter;
|
||||
List<String> filterType;
|
||||
String filterSearch = '';
|
||||
List<String> selectedTypes;
|
||||
List<ResourceDTO> resourcesToShow;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
resourcesToShow = widget.resources;
|
||||
filterType = [resource_types[0], resource_types[1], resource_types[2], resource_types[3]];
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@ -52,7 +56,23 @@ class _ResourceBodyGridState extends State<ResourceBodyGrid> {
|
||||
label: "Recherche:",
|
||||
onChanged: (String value) {
|
||||
setState(() {
|
||||
resourcesToShow = value.isEmpty ? widget.resources: widget.resources.where((ResourceDTO resource) => resource.label.toUpperCase().contains(value.toUpperCase())).toList();
|
||||
filterSearch = value;
|
||||
filterResource();
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: MultiSelectContainer(
|
||||
label: "Type :",
|
||||
initialValue: filterType,
|
||||
values: resource_types,
|
||||
isMultiple: true,
|
||||
onChanged: (result) {
|
||||
setState(() {
|
||||
selectedTypes = result;
|
||||
filterResource();
|
||||
});
|
||||
},
|
||||
),
|
||||
@ -151,6 +171,35 @@ class _ResourceBodyGridState extends State<ResourceBodyGrid> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void filterResource() {
|
||||
resourcesToShow = filterSearch.isEmpty ? widget.resources: widget.resources.where((ResourceDTO resource) => resource.label.toUpperCase().contains(filterSearch.toUpperCase())).toList();
|
||||
|
||||
resource_types.forEach((type) {
|
||||
switch(type) {
|
||||
case "image":
|
||||
if (!selectedTypes.contains(type)) {
|
||||
resourcesToShow = resourcesToShow.where((resource) => resource.type != ResourceType.image).toList();
|
||||
}
|
||||
break;
|
||||
case "image url":
|
||||
if (!selectedTypes.contains(type)) {
|
||||
resourcesToShow = resourcesToShow.where((resource) => resource.type != ResourceType.imageUrl).toList();
|
||||
}
|
||||
break;
|
||||
case "video":
|
||||
if (!selectedTypes.contains(type)) {
|
||||
resourcesToShow = resourcesToShow.where((resource) => resource.type != ResourceType.video).toList();
|
||||
}
|
||||
break;
|
||||
case "video url":
|
||||
if (!selectedTypes.contains(type)) {
|
||||
resourcesToShow = resourcesToShow.where((resource) => resource.type != ResourceType.videoUrl).toList();
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
boxDecoration(dynamic resourceDetailDTO, appContext) {
|
||||
|
||||
@ -15,6 +15,7 @@ const kBlack = Color(0xFF000000);
|
||||
const List<String> section_types = ["Map", "Slider", "Video", "Web", "Menu"];
|
||||
const List<String> map_types = ["none", "normal", "satellite", "terrain", "hybrid"];
|
||||
const List<String> languages = ["FR", "NL", "EN", "DE"];
|
||||
const List<String> resource_types = ["image", "image url", "video", "video url"];
|
||||
|
||||
/*
|
||||
const kTextStyle = TextStyle(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user