Add TranslationDTO from service generation + MultiInputModal (translations)
This commit is contained in:
parent
6e2dac52d1
commit
69664c4bec
73
lib/Components/multi_input_modal.dart
Normal file
73
lib/Components/multi_input_modal.dart
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:manager_app/Components/rounded_button.dart';
|
||||||
|
import 'package:manager_app/Components/string_input_container.dart';
|
||||||
|
import 'package:manager_app/constants.dart';
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
|
||||||
|
showMultiStringInput (List<TranslationDTO> values, ValueChanged<List<TranslationDTO>> onChanged, BuildContext context) { /*Function onSelect,*/
|
||||||
|
List<TranslationDTO> newValues = new List<TranslationDTO>();
|
||||||
|
newValues = values;
|
||||||
|
showDialog(
|
||||||
|
builder: (BuildContext context) => AlertDialog(
|
||||||
|
content: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
children: showValues(newValues),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
actions: <Widget>[
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: 180,
|
||||||
|
height: 70,
|
||||||
|
child: RoundedButton(
|
||||||
|
text: "Annuler",
|
||||||
|
icon: Icons.undo,
|
||||||
|
color: kSecond,
|
||||||
|
press: () {
|
||||||
|
onChanged(values);
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: 180,
|
||||||
|
height: 70,
|
||||||
|
child: RoundedButton(
|
||||||
|
text: "Valider",
|
||||||
|
icon: Icons.check,
|
||||||
|
color: kPrimaryColor,
|
||||||
|
textColor: kWhite,
|
||||||
|
press: () {
|
||||||
|
onChanged(newValues);
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
), context: context
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
showValues(List<TranslationDTO> newValues) {
|
||||||
|
List<Widget> valuesToShow = new List<Widget>();
|
||||||
|
newValues.forEach((newValue) {
|
||||||
|
valuesToShow.add(
|
||||||
|
new StringContainer(
|
||||||
|
color: Colors.lightBlue,
|
||||||
|
label: newValue.language,
|
||||||
|
initialValue: newValue.value,
|
||||||
|
onChanged: (String value) {
|
||||||
|
newValue.value = value;
|
||||||
|
},
|
||||||
|
));
|
||||||
|
});
|
||||||
|
return valuesToShow;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
61
lib/Components/multi_string_input_container.dart
Normal file
61
lib/Components/multi_string_input_container.dart
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
import 'package:auto_size_text/auto_size_text.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:manager_app/Components/multi_input_modal.dart';
|
||||||
|
import 'package:manager_app/Components/rounded_input_field.dart';
|
||||||
|
import 'package:manager_app/constants.dart';
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
|
||||||
|
class MultiStringContainer extends StatelessWidget {
|
||||||
|
final Color color;
|
||||||
|
final String label;
|
||||||
|
final List<TranslationDTO> initialValue;
|
||||||
|
final ValueChanged<List<TranslationDTO>> onChanged;
|
||||||
|
const MultiStringContainer({
|
||||||
|
Key key,
|
||||||
|
this.color = kSecond,
|
||||||
|
this.label,
|
||||||
|
this.initialValue,
|
||||||
|
this.onChanged,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
Size size = MediaQuery.of(context).size;
|
||||||
|
return Container(
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Align(
|
||||||
|
alignment: AlignmentDirectional.centerStart,
|
||||||
|
child: Text(label, style: TextStyle(fontSize: 25, fontWeight: FontWeight.w300))
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(10.0),
|
||||||
|
child: Container(
|
||||||
|
width: size.width *0.15,
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () {
|
||||||
|
showMultiStringInput(initialValue, onChanged, context);
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: color,
|
||||||
|
borderRadius: BorderRadius.circular(50),
|
||||||
|
),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 5, right: 5, top: 15, bottom: 15),
|
||||||
|
child: Center(
|
||||||
|
child: AutoSizeText(
|
||||||
|
"Changer les traductions",
|
||||||
|
maxLines: 2,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:manager_app/Components/confirmation_dialog.dart';
|
import 'package:manager_app/Components/confirmation_dialog.dart';
|
||||||
import 'package:manager_app/Components/fetch_section_icon.dart';
|
import 'package:manager_app/Components/fetch_section_icon.dart';
|
||||||
import 'package:manager_app/Components/multi_select_container.dart';
|
import 'package:manager_app/Components/multi_select_container.dart';
|
||||||
|
import 'package:manager_app/Components/multi_string_input_container.dart';
|
||||||
import 'package:manager_app/Components/rounded_button.dart';
|
import 'package:manager_app/Components/rounded_button.dart';
|
||||||
import 'package:manager_app/Components/string_input_container.dart';
|
import 'package:manager_app/Components/string_input_container.dart';
|
||||||
import 'package:manager_app/Models/managerContext.dart';
|
import 'package:manager_app/Models/managerContext.dart';
|
||||||
@ -151,20 +152,20 @@ class _SectionDetailScreenState extends State<SectionDetailScreen> {
|
|||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
StringContainer(
|
MultiStringContainer(
|
||||||
label: "Titre :",
|
label: "Titre :",
|
||||||
initialValue: sectionDTO.title,
|
initialValue: sectionDTO.title,
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
sectionDTO.title = value;
|
sectionDTO.title = value;
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
StringContainer(
|
MultiStringContainer(
|
||||||
label: "Description :",
|
label: "Description :",
|
||||||
initialValue: sectionDTO.description,
|
initialValue: sectionDTO.description,
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
sectionDTO.description = value;
|
sectionDTO.description = value;
|
||||||
},
|
},
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
|||||||
@ -17,6 +17,7 @@ doc/SectionApi.md
|
|||||||
doc/SectionDTO.md
|
doc/SectionDTO.md
|
||||||
doc/SectionType.md
|
doc/SectionType.md
|
||||||
doc/TokenDTO.md
|
doc/TokenDTO.md
|
||||||
|
doc/TranslationDTO.md
|
||||||
doc/User.md
|
doc/User.md
|
||||||
doc/UserApi.md
|
doc/UserApi.md
|
||||||
doc/UserDetailDTO.md
|
doc/UserDetailDTO.md
|
||||||
@ -47,6 +48,8 @@ lib/model/ressource_type.dart
|
|||||||
lib/model/section_dto.dart
|
lib/model/section_dto.dart
|
||||||
lib/model/section_type.dart
|
lib/model/section_type.dart
|
||||||
lib/model/token_dto.dart
|
lib/model/token_dto.dart
|
||||||
|
lib/model/translation_dto.dart
|
||||||
lib/model/user.dart
|
lib/model/user.dart
|
||||||
lib/model/user_detail_dto.dart
|
lib/model/user_detail_dto.dart
|
||||||
pubspec.yaml
|
pubspec.yaml
|
||||||
|
test/translation_dto_test.dart
|
||||||
|
|||||||
@ -110,6 +110,7 @@ Class | Method | HTTP request | Description
|
|||||||
- [SectionDTO](doc\/SectionDTO.md)
|
- [SectionDTO](doc\/SectionDTO.md)
|
||||||
- [SectionType](doc\/SectionType.md)
|
- [SectionType](doc\/SectionType.md)
|
||||||
- [TokenDTO](doc\/TokenDTO.md)
|
- [TokenDTO](doc\/TokenDTO.md)
|
||||||
|
- [TranslationDTO](doc\/TranslationDTO.md)
|
||||||
- [User](doc\/User.md)
|
- [User](doc\/User.md)
|
||||||
- [UserDetailDTO](doc\/UserDetailDTO.md)
|
- [UserDetailDTO](doc\/UserDetailDTO.md)
|
||||||
|
|
||||||
|
|||||||
@ -10,8 +10,8 @@ Name | Type | Description | Notes
|
|||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
**id** | **String** | | [optional]
|
**id** | **String** | | [optional]
|
||||||
**label** | **String** | | [optional]
|
**label** | **String** | | [optional]
|
||||||
**title** | **String** | | [optional]
|
**title** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
|
||||||
**description** | **String** | | [optional]
|
**description** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
|
||||||
**imageId** | **String** | | [optional]
|
**imageId** | **String** | | [optional]
|
||||||
**configurationId** | **String** | | [optional]
|
**configurationId** | **String** | | [optional]
|
||||||
**isSubSection** | **bool** | | [optional]
|
**isSubSection** | **bool** | | [optional]
|
||||||
|
|||||||
16
manager_api/doc/TranslationDTO.md
Normal file
16
manager_api/doc/TranslationDTO.md
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# managerapi.model.TranslationDTO
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**language** | **String** | | [optional]
|
||||||
|
**value** | **String** | | [optional]
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
@ -45,6 +45,7 @@ part 'model/ressource_type.dart';
|
|||||||
part 'model/section_dto.dart';
|
part 'model/section_dto.dart';
|
||||||
part 'model/section_type.dart';
|
part 'model/section_type.dart';
|
||||||
part 'model/token_dto.dart';
|
part 'model/token_dto.dart';
|
||||||
|
part 'model/translation_dto.dart';
|
||||||
part 'model/user.dart';
|
part 'model/user.dart';
|
||||||
part 'model/user_detail_dto.dart';
|
part 'model/user_detail_dto.dart';
|
||||||
|
|
||||||
|
|||||||
@ -180,6 +180,8 @@ class ApiClient {
|
|||||||
|
|
||||||
case 'TokenDTO':
|
case 'TokenDTO':
|
||||||
return TokenDTO.fromJson(value);
|
return TokenDTO.fromJson(value);
|
||||||
|
case 'TranslationDTO':
|
||||||
|
return TranslationDTO.fromJson(value);
|
||||||
case 'User':
|
case 'User':
|
||||||
return User.fromJson(value);
|
return User.fromJson(value);
|
||||||
case 'UserDetailDTO':
|
case 'UserDetailDTO':
|
||||||
|
|||||||
@ -29,9 +29,9 @@ class SectionDTO {
|
|||||||
|
|
||||||
String label;
|
String label;
|
||||||
|
|
||||||
String title;
|
List<TranslationDTO> title;
|
||||||
|
|
||||||
String description;
|
List<TranslationDTO> description;
|
||||||
|
|
||||||
String imageId;
|
String imageId;
|
||||||
|
|
||||||
@ -123,8 +123,8 @@ class SectionDTO {
|
|||||||
: SectionDTO(
|
: SectionDTO(
|
||||||
id: json[r'id'],
|
id: json[r'id'],
|
||||||
label: json[r'label'],
|
label: json[r'label'],
|
||||||
title: json[r'title'],
|
title: TranslationDTO.listFromJson(json[r'title']),
|
||||||
description: json[r'description'],
|
description: TranslationDTO.listFromJson(json[r'description']),
|
||||||
imageId: json[r'imageId'],
|
imageId: json[r'imageId'],
|
||||||
configurationId: json[r'configurationId'],
|
configurationId: json[r'configurationId'],
|
||||||
isSubSection: json[r'isSubSection'],
|
isSubSection: json[r'isSubSection'],
|
||||||
|
|||||||
80
manager_api/lib/model/translation_dto.dart
Normal file
80
manager_api/lib/model/translation_dto.dart
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
//
|
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY!
|
||||||
|
//
|
||||||
|
// @dart=2.0
|
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import
|
||||||
|
// ignore_for_file: always_put_required_named_parameters_first
|
||||||
|
// ignore_for_file: lines_longer_than_80_chars
|
||||||
|
|
||||||
|
part of openapi.api;
|
||||||
|
|
||||||
|
class TranslationDTO {
|
||||||
|
/// Returns a new [TranslationDTO] instance.
|
||||||
|
TranslationDTO({
|
||||||
|
this.language,
|
||||||
|
this.value,
|
||||||
|
});
|
||||||
|
|
||||||
|
String language;
|
||||||
|
|
||||||
|
String value;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) => identical(this, other) || other is TranslationDTO &&
|
||||||
|
other.language == language &&
|
||||||
|
other.value == value;
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode =>
|
||||||
|
(language == null ? 0 : language.hashCode) +
|
||||||
|
(value == null ? 0 : value.hashCode);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => 'TranslationDTO[language=$language, value=$value]';
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final json = <String, dynamic>{};
|
||||||
|
if (language != null) {
|
||||||
|
json[r'language'] = language;
|
||||||
|
}
|
||||||
|
if (value != null) {
|
||||||
|
json[r'value'] = value;
|
||||||
|
}
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns a new [TranslationDTO] instance and imports its values from
|
||||||
|
/// [json] if it's non-null, null if [json] is null.
|
||||||
|
static TranslationDTO fromJson(Map<String, dynamic> json) => json == null
|
||||||
|
? null
|
||||||
|
: TranslationDTO(
|
||||||
|
language: json[r'language'],
|
||||||
|
value: json[r'value'],
|
||||||
|
);
|
||||||
|
|
||||||
|
static List<TranslationDTO> listFromJson(List<dynamic> json, {bool emptyIsNull, bool growable,}) =>
|
||||||
|
json == null || json.isEmpty
|
||||||
|
? true == emptyIsNull ? null : <TranslationDTO>[]
|
||||||
|
: json.map((v) => TranslationDTO.fromJson(v)).toList(growable: true == growable);
|
||||||
|
|
||||||
|
static Map<String, TranslationDTO> mapFromJson(Map<String, dynamic> json) {
|
||||||
|
final map = <String, TranslationDTO>{};
|
||||||
|
if (json != null && json.isNotEmpty) {
|
||||||
|
json.forEach((String key, dynamic v) => map[key] = TranslationDTO.fromJson(v));
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
// maps a json object with a list of TranslationDTO-objects as value to a dart map
|
||||||
|
static Map<String, List<TranslationDTO>> mapListFromJson(Map<String, dynamic> json, {bool emptyIsNull, bool growable,}) {
|
||||||
|
final map = <String, List<TranslationDTO>>{};
|
||||||
|
if (json != null && json.isNotEmpty) {
|
||||||
|
json.forEach((String key, dynamic v) {
|
||||||
|
map[key] = TranslationDTO.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -1200,11 +1200,15 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
title:
|
title:
|
||||||
type: string
|
type: array
|
||||||
nullable: true
|
nullable: true
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/TranslationDTO'
|
||||||
description:
|
description:
|
||||||
type: string
|
type: array
|
||||||
nullable: true
|
nullable: true
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/TranslationDTO'
|
||||||
imageId:
|
imageId:
|
||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
@ -1224,6 +1228,16 @@ components:
|
|||||||
dateCreation:
|
dateCreation:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
|
TranslationDTO:
|
||||||
|
type: object
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
language:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
value:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
SectionType:
|
SectionType:
|
||||||
type: string
|
type: string
|
||||||
description: ''
|
description: ''
|
||||||
|
|||||||
31
manager_api/test/translation_dto_test.dart
Normal file
31
manager_api/test/translation_dto_test.dart
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
//
|
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY!
|
||||||
|
//
|
||||||
|
// @dart=2.0
|
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import
|
||||||
|
// ignore_for_file: always_put_required_named_parameters_first
|
||||||
|
// ignore_for_file: lines_longer_than_80_chars
|
||||||
|
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
import 'package:test/test.dart';
|
||||||
|
|
||||||
|
// tests for TranslationDTO
|
||||||
|
void main() {
|
||||||
|
final instance = TranslationDTO();
|
||||||
|
|
||||||
|
group('test TranslationDTO', () {
|
||||||
|
// String language
|
||||||
|
test('to test the property `language`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
// String value
|
||||||
|
test('to test the property `value`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user