Update categorie (id for filter and update)
This commit is contained in:
parent
c2972b11ea
commit
785301d908
@ -27,7 +27,7 @@ class _DropDownInputContainerCategoriesState extends State<DropDownInputContaine
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
if(widget.initialValue != null) {
|
if(widget.initialValue != null) {
|
||||||
selectedCategorieDTO = widget.categories.firstWhere((element) => element.order == widget.initialValue!.order);
|
selectedCategorieDTO = widget.categories.firstWhere((element) => element.id == widget.initialValue!.id);
|
||||||
}
|
}
|
||||||
List<TranslationDTO> label = [];
|
List<TranslationDTO> label = [];
|
||||||
label.add(TranslationDTO(language: "FR", value: "Aucune catégorie"));
|
label.add(TranslationDTO(language: "FR", value: "Aucune catégorie"));
|
||||||
|
|||||||
@ -23,9 +23,12 @@ class CategoryInputContainer extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _CategoryInputContainerState extends State<CategoryInputContainer> {
|
class _CategoryInputContainerState extends State<CategoryInputContainer> {
|
||||||
|
late List<CategorieDTO> middleCategories;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
middleCategories = widget.initialValue;
|
||||||
|
print("initStateinitStateinitState");
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,10 +50,18 @@ class _CategoryInputContainerState extends State<CategoryInputContainer> {
|
|||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
List<CategorieDTO> newValues = <CategorieDTO>[];
|
List<CategorieDTO> newValues = <CategorieDTO>[];
|
||||||
List<CategorieDTO> initials = widget.initialValue;
|
|
||||||
showCreateOrUpdateCategories("Catégories", initials, newValues, (value) {
|
print("HERE COMES THE FUCKKKERS");
|
||||||
|
print(middleCategories);
|
||||||
|
|
||||||
|
showCreateOrUpdateCategories("Catégories", middleCategories, newValues, (value) {
|
||||||
|
print("RESULT HERERERER");
|
||||||
|
print(value);
|
||||||
|
setState(() {
|
||||||
widget.onChanged(value);
|
widget.onChanged(value);
|
||||||
|
middleCategories = value;
|
||||||
widget.initialValue = value;
|
widget.initialValue = value;
|
||||||
|
});
|
||||||
}, context);
|
}, context);
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
@ -78,7 +89,7 @@ class _CategoryInputContainerState extends State<CategoryInputContainer> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
showCreateOrUpdateCategories(String modalLabel, List<CategorieDTO> values, List<CategorieDTO> newValues, Function onGetResult, BuildContext context) {
|
showCreateOrUpdateCategories(String modalLabel, List<CategorieDTO> initials, List<CategorieDTO> newValues, Function onGetResult, BuildContext context) {
|
||||||
showDialog(
|
showDialog(
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
Size size = MediaQuery.of(context).size;
|
Size size = MediaQuery.of(context).size;
|
||||||
@ -95,9 +106,10 @@ showCreateOrUpdateCategories(String modalLabel, List<CategorieDTO> values, List<
|
|||||||
),
|
),
|
||||||
height: size.height * 0.7,
|
height: size.height * 0.7,
|
||||||
width: size.width * 0.65,
|
width: size.width * 0.65,
|
||||||
child: CategoryList(categories: values, onChanged: (result) {
|
child: CategoryList(categories: initials, onChanged: (result) {
|
||||||
|
print("ON CHANGZED HERE");
|
||||||
newValues = result;
|
newValues = result;
|
||||||
onGetResult(result);
|
//onGetResult(result);
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
@ -113,7 +125,9 @@ showCreateOrUpdateCategories(String modalLabel, List<CategorieDTO> values, List<
|
|||||||
icon: Icons.undo,
|
icon: Icons.undo,
|
||||||
color: kSecond,
|
color: kSecond,
|
||||||
press: () {
|
press: () {
|
||||||
onGetResult(values);
|
onGetResult(initials);
|
||||||
|
print("INITALASSS");
|
||||||
|
print(initials);
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
},
|
},
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
@ -132,6 +146,7 @@ showCreateOrUpdateCategories(String modalLabel, List<CategorieDTO> values, List<
|
|||||||
if (!deepEq(values, newValues)) {
|
if (!deepEq(values, newValues)) {
|
||||||
onGetResult(newValues);
|
onGetResult(newValues);
|
||||||
}*/
|
}*/
|
||||||
|
onGetResult(newValues);
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
},
|
},
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
|
|||||||
@ -22,12 +22,47 @@ class CategoryList extends StatefulWidget {
|
|||||||
|
|
||||||
class _CategoryListState extends State<CategoryList> {
|
class _CategoryListState extends State<CategoryList> {
|
||||||
late List<CategorieDTO> categoriesMiddle;
|
late List<CategorieDTO> categoriesMiddle;
|
||||||
|
late int currentIndex;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
print("INISTASTETETTETET CATEGORY LIIST");
|
||||||
super.initState();
|
super.initState();
|
||||||
categoriesMiddle = new List<CategorieDTO>.from(widget.categories);
|
categoriesMiddle = new List<CategorieDTO>.from(widget.categories);
|
||||||
categoriesMiddle.sort((a, b) => a.order!.compareTo(b.order!));
|
categoriesMiddle.sort((a, b) => a.order!.compareTo(b.order!));
|
||||||
|
|
||||||
|
currentIndex = getNextAvailableIndex(categoriesMiddle);
|
||||||
|
assignIdsToNull(categoriesMiddle);
|
||||||
|
print(currentIndex);
|
||||||
|
print(categoriesMiddle);
|
||||||
|
}
|
||||||
|
|
||||||
|
int getNextAvailableIndex(List<CategorieDTO> categoriesMiddle) {
|
||||||
|
List<int> existingIds = [];
|
||||||
|
|
||||||
|
for (var categorie in categoriesMiddle) {
|
||||||
|
if (categorie.id != null) {
|
||||||
|
existingIds.add(categorie.id!);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
existingIds.sort();
|
||||||
|
|
||||||
|
if (existingIds.isEmpty) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return existingIds.last + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void assignIdsToNull(List<CategorieDTO> categoriesMiddle) {
|
||||||
|
int nextIndex = getNextAvailableIndex(categoriesMiddle);
|
||||||
|
|
||||||
|
for (var categorie in categoriesMiddle) {
|
||||||
|
if (categorie.id == null) {
|
||||||
|
categorie.id = nextIndex;
|
||||||
|
nextIndex++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _resetOrder() {
|
void _resetOrder() {
|
||||||
@ -94,7 +129,7 @@ class _CategoryListState extends State<CategoryList> {
|
|||||||
onTap: () async {
|
onTap: () async {
|
||||||
CategorieDTO newCategory = CategorieDTO(order: null);
|
CategorieDTO newCategory = CategorieDTO(order: null);
|
||||||
|
|
||||||
var result = await showNewOrUpdateCategory(newCategory, appContext, context, "Création catégorie");
|
var result = await showNewOrUpdateCategory(newCategory, appContext, context, "Création catégorie", currentIndex);
|
||||||
if (result != null)
|
if (result != null)
|
||||||
{
|
{
|
||||||
setState(() {
|
setState(() {
|
||||||
@ -168,7 +203,7 @@ class _CategoryListState extends State<CategoryList> {
|
|||||||
message: "Modifier",
|
message: "Modifier",
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
var result = await showNewOrUpdateCategory(category, appContext, context, "Modification catégorie");
|
var result = await showNewOrUpdateCategory(category, appContext, context, "Modification catégorie", currentIndex);
|
||||||
if (result != null)
|
if (result != null)
|
||||||
{
|
{
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
import 'package:diacritic/diacritic.dart';
|
import 'package:diacritic/diacritic.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
|
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
|
||||||
import 'package:manager_app/Components/category_input_container.dart';
|
import 'package:manager_app/Components/multi_select_dropdown_language_container.dart';
|
||||||
|
import 'package:manager_app/Screens/Configurations/Section/SubSection/Map/category_input_container.dart';
|
||||||
import 'package:manager_app/Components/dropDown_input_container.dart';
|
import 'package:manager_app/Components/dropDown_input_container.dart';
|
||||||
import 'package:manager_app/Components/fetch_section_icon.dart';
|
import 'package:manager_app/Components/fetch_section_icon.dart';
|
||||||
import 'package:manager_app/Components/resource_input_container.dart';
|
import 'package:manager_app/Components/resource_input_container.dart';
|
||||||
@ -54,6 +55,24 @@ class _MapConfigState extends State<MapConfig> {
|
|||||||
|
|
||||||
selectedCategories = mapDTO.categories!.map((categorie) => categorie.label!.firstWhere((element) => element.language == 'FR').value!).toList();
|
selectedCategories = mapDTO.categories!.map((categorie) => categorie.label!.firstWhere((element) => element.language == 'FR').value!).toList();
|
||||||
|
|
||||||
|
pointsToShow.forEach((pts) {
|
||||||
|
if(pts.categorieId == null && pts.categorie != null && mapDTO.categories!.any((e) => e.order == pts.categorie!.order)) {
|
||||||
|
print("SET CATEGORIE ID FOR CAT");
|
||||||
|
print(pts.categorie);
|
||||||
|
var testCat = mapDTO.categories!.where((c) => c.label![0].value == pts.categorie!.label![0].value);
|
||||||
|
if(testCat.isNotEmpty) {
|
||||||
|
pts.categorieId = testCat.first.id;
|
||||||
|
pts.categorie!.id = testCat.first.id;
|
||||||
|
} else {
|
||||||
|
pts.categorie = null; // Categorie no more existing so we can reset cat
|
||||||
|
}
|
||||||
|
|
||||||
|
print(pts.categorieId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
print(pointsToShow);
|
||||||
|
|
||||||
if(mapDTO.mapType != null) {
|
if(mapDTO.mapType != null) {
|
||||||
switch(mapDTO.mapType!.value) {
|
switch(mapDTO.mapType!.value) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -219,7 +238,43 @@ class _MapConfigState extends State<MapConfig> {
|
|||||||
color: kPrimaryColor,
|
color: kPrimaryColor,
|
||||||
onChanged: (List<CategorieDTO>? value) {
|
onChanged: (List<CategorieDTO>? value) {
|
||||||
if(value != null) {
|
if(value != null) {
|
||||||
|
//print("COUCOU CategoryInputContainerCategoryInputContainerCategoryInputContainer");
|
||||||
|
//print(value);
|
||||||
mapDTO.categories = value;
|
mapDTO.categories = value;
|
||||||
|
|
||||||
|
//update point's category
|
||||||
|
if(mapDTO.points != null) {
|
||||||
|
mapDTO.points!.forEach((p) {
|
||||||
|
// Check if category still exist - Delete
|
||||||
|
if(p.categorieId != null && !mapDTO.categories!.map((c) => c.id).any((e) => e != null && e == p.categorieId))
|
||||||
|
{
|
||||||
|
print("DELETE CAT REF");
|
||||||
|
print(p.categorieId);
|
||||||
|
print(p.categorie);
|
||||||
|
// delete cat ref from point
|
||||||
|
p.categorieId = null;
|
||||||
|
p.categorie = null;
|
||||||
|
}
|
||||||
|
// update point category - Update
|
||||||
|
if(p.categorieId != null && mapDTO.categories!.map((c) => c.id).any((e) => e != null && e == p.categorieId))
|
||||||
|
{
|
||||||
|
var categorie = mapDTO.categories!.firstWhere((c) => c.id == p.categorieId);
|
||||||
|
p.categorie = categorie;
|
||||||
|
print("UPDATE CAT REF");
|
||||||
|
}
|
||||||
|
|
||||||
|
print(p);
|
||||||
|
if(p.categorieId == null && p.categorie != null && p.categorie!.label != null)
|
||||||
|
{
|
||||||
|
// need to update with label
|
||||||
|
var categorie = mapDTO.categories!.firstWhere((c) => c.label![0].value == p.categorie!.label![0].value);
|
||||||
|
//p.categorie = categorie;
|
||||||
|
p.categorieId = categorie.id;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/*print("mapDTO.points");
|
||||||
|
print(mapDTO.points);*/
|
||||||
widget.onChanged(jsonEncode(mapDTO).toString());
|
widget.onChanged(jsonEncode(mapDTO).toString());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -289,7 +344,8 @@ class _MapConfigState extends State<MapConfig> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
)),
|
)
|
||||||
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
top: 0,
|
top: 0,
|
||||||
right: 150,
|
right: 150,
|
||||||
@ -322,6 +378,13 @@ class _MapConfigState extends State<MapConfig> {
|
|||||||
setState(() {
|
setState(() {
|
||||||
mapDTO.points!.add(geoPoint);
|
mapDTO.points!.add(geoPoint);
|
||||||
mapDTO.points!.sort((a, b) => a.title!.firstWhere((t) => t.language == 'FR').value!.toLowerCase().compareTo(b.title!.firstWhere((t) => t.language == 'FR').value!.toLowerCase()));
|
mapDTO.points!.sort((a, b) => a.title!.firstWhere((t) => t.language == 'FR').value!.toLowerCase().compareTo(b.title!.firstWhere((t) => t.language == 'FR').value!.toLowerCase()));
|
||||||
|
|
||||||
|
if(selectedCategories == null || selectedCategories!.length == 0) {
|
||||||
|
pointsToShow = mapDTO.points!.where((point) => point.categorie == null).toList();
|
||||||
|
} else {
|
||||||
|
pointsToShow = mapDTO.points!.where((point) => selectedCategories!.any((tps) => point.categorie == null || point.categorie?.label?.firstWhere((lab) => lab.language == 'FR').value == tps)).toList();
|
||||||
|
}
|
||||||
|
|
||||||
widget.onChanged(jsonEncode(mapDTO).toString());
|
widget.onChanged(jsonEncode(mapDTO).toString());
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -419,8 +482,12 @@ class _MapConfigState extends State<MapConfig> {
|
|||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
setState(() {
|
setState(() {
|
||||||
mapDTO.points!.removeAt(index);
|
var pointToRemove = pointsToShow[index];
|
||||||
|
mapDTO.points = mapDTO.points!.where((p) => p.longitude != pointToRemove.longitude || p.latitude != p.latitude).toList();
|
||||||
|
|
||||||
|
pointsToShow.removeAt(index);
|
||||||
});
|
});
|
||||||
|
|
||||||
widget.onChanged(jsonEncode(mapDTO).toString());
|
widget.onChanged(jsonEncode(mapDTO).toString());
|
||||||
},
|
},
|
||||||
child: Icon(
|
child: Icon(
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import 'package:manager_app/app_context.dart';
|
|||||||
import 'package:manager_app/constants.dart';
|
import 'package:manager_app/constants.dart';
|
||||||
import 'package:manager_api_new/api.dart';
|
import 'package:manager_api_new/api.dart';
|
||||||
|
|
||||||
Future<CategorieDTO?> showNewOrUpdateCategory(CategorieDTO? inputCategorieDTO, AppContext appContext, BuildContext context, String text) async {
|
Future<CategorieDTO?> showNewOrUpdateCategory(CategorieDTO? inputCategorieDTO, AppContext appContext, BuildContext context, String text, int currentIndex) async {
|
||||||
CategorieDTO categorieDTO = new CategorieDTO();
|
CategorieDTO categorieDTO = new CategorieDTO();
|
||||||
|
|
||||||
if (inputCategorieDTO != null) {
|
if (inputCategorieDTO != null) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user