update service generation + add vlc player (for local video) + show resource (image from service) + upload new resource
This commit is contained in:
parent
869c071de5
commit
fa378695f8
@ -33,7 +33,6 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
|
||||||
applicationId "be.mdlf.manager_app"
|
applicationId "be.mdlf.manager_app"
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 30
|
targetSdkVersion 30
|
||||||
|
|||||||
21
lib/Components/fetch_resource_icon.dart
Normal file
21
lib/Components/fetch_resource_icon.dart
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
|
||||||
|
IconData getResourceIcon(elementType) {
|
||||||
|
print(elementType);
|
||||||
|
switch(elementType) {
|
||||||
|
case ResourceType.image:
|
||||||
|
return Icons.image;
|
||||||
|
break;
|
||||||
|
case ResourceType.imageUrl:
|
||||||
|
return Icons.image_search; // art_track
|
||||||
|
break;
|
||||||
|
case ResourceType.video:
|
||||||
|
return Icons.slow_motion_video;
|
||||||
|
break;
|
||||||
|
case ResourceType.videoUrl:
|
||||||
|
return Icons.ondemand_video_sharp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return Icons.announcement;
|
||||||
|
}
|
||||||
739
lib/Components/vlc_viewer.dart
Normal file
739
lib/Components/vlc_viewer.dart
Normal file
@ -0,0 +1,739 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
import 'dart:convert';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:dart_vlc/dart_vlc.dart';
|
||||||
|
|
||||||
|
class DartVLC extends StatefulWidget {
|
||||||
|
final Media file;
|
||||||
|
const DartVLC({
|
||||||
|
Key key,
|
||||||
|
this.file,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
_DartVLCState createState() => _DartVLCState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _DartVLCState extends State<DartVLC> {
|
||||||
|
Player player = Player(
|
||||||
|
id: 0,
|
||||||
|
videoWidth: 480,
|
||||||
|
videoHeight: 360,
|
||||||
|
);
|
||||||
|
MediaType mediaType = MediaType.file;
|
||||||
|
CurrentState current = new CurrentState();
|
||||||
|
PositionState position = new PositionState();
|
||||||
|
PlaybackState playback = new PlaybackState();
|
||||||
|
GeneralState general = new GeneralState();
|
||||||
|
List<Media> medias = <Media>[];
|
||||||
|
List<Device> devices = <Device>[];
|
||||||
|
TextEditingController controller = new TextEditingController();
|
||||||
|
TextEditingController metasController = new TextEditingController();
|
||||||
|
Media metasMedia;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
if (this.mounted) {
|
||||||
|
this.medias.add(widget.file);
|
||||||
|
|
||||||
|
this.player.open(
|
||||||
|
new Playlist(
|
||||||
|
medias: this.medias,
|
||||||
|
playlistMode:
|
||||||
|
PlaylistMode.loop),
|
||||||
|
);
|
||||||
|
|
||||||
|
/*this.player.currentStream.listen((current) {
|
||||||
|
this.setState(() => this.current = current);
|
||||||
|
});
|
||||||
|
this.player.positionStream.listen((position) {
|
||||||
|
this.setState(() => this.position = position);
|
||||||
|
});
|
||||||
|
this.player.playbackStream.listen((playback) {
|
||||||
|
this.setState(() => this.playback = playback);
|
||||||
|
});
|
||||||
|
this.player.generateStream.listen((general) {
|
||||||
|
this.setState(() => this.general = general);
|
||||||
|
});*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> didChangeDependencies() async {
|
||||||
|
super.didChangeDependencies();
|
||||||
|
//this.devices = await Devices.all;
|
||||||
|
this.setState(() {});
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Video(
|
||||||
|
playerId: 0,
|
||||||
|
width: 640,
|
||||||
|
height: 480,
|
||||||
|
volumeThumbColor: Colors.blue,
|
||||||
|
volumeActiveColor: Colors.blue,
|
||||||
|
);
|
||||||
|
|
||||||
|
/*Scaffold(
|
||||||
|
body: ListView(
|
||||||
|
shrinkWrap: true,
|
||||||
|
padding: EdgeInsets.all(4.0),
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Card(
|
||||||
|
clipBehavior: Clip.antiAlias,
|
||||||
|
elevation: 2.0,
|
||||||
|
child: Video(
|
||||||
|
playerId: 0,
|
||||||
|
width: 640,
|
||||||
|
height: 480,
|
||||||
|
volumeThumbColor: Colors.blue,
|
||||||
|
volumeActiveColor: Colors.blue,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Card(
|
||||||
|
elevation: 2.0,
|
||||||
|
margin: EdgeInsets.all(10.0),
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.all(16.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Text('Playlist creation.'),
|
||||||
|
Divider(
|
||||||
|
height: 8.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: TextField(
|
||||||
|
controller: this.controller,
|
||||||
|
cursorWidth: 1.0,
|
||||||
|
autofocus: true,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
decoration: InputDecoration.collapsed(
|
||||||
|
hintStyle: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
hintText:
|
||||||
|
'Media resource location.',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: 152.0,
|
||||||
|
child: DropdownButton<MediaType>(
|
||||||
|
value: this.mediaType,
|
||||||
|
onChanged: (mediaType) => this
|
||||||
|
.setState(() =>
|
||||||
|
this.mediaType = mediaType),
|
||||||
|
items: [
|
||||||
|
DropdownMenuItem<MediaType>(
|
||||||
|
value: MediaType.file,
|
||||||
|
child: Text(
|
||||||
|
MediaType.file.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
DropdownMenuItem<MediaType>(
|
||||||
|
value: MediaType.network,
|
||||||
|
child: Text(
|
||||||
|
MediaType.network.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
DropdownMenuItem<MediaType>(
|
||||||
|
value: MediaType.asset,
|
||||||
|
child: Text(
|
||||||
|
MediaType.asset.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(left: 10.0),
|
||||||
|
child: ElevatedButton(
|
||||||
|
onPressed: () async {
|
||||||
|
if (this.mediaType ==
|
||||||
|
MediaType.file) {
|
||||||
|
this.medias.add(
|
||||||
|
await Media.file(new File(
|
||||||
|
controller.text)),
|
||||||
|
);
|
||||||
|
} else if (this.mediaType ==
|
||||||
|
MediaType.network) {
|
||||||
|
this.medias.add(
|
||||||
|
await Media.network(
|
||||||
|
controller.text),
|
||||||
|
);
|
||||||
|
} else if (this.mediaType ==
|
||||||
|
MediaType.asset) {
|
||||||
|
this.medias.add(
|
||||||
|
await Media.asset(
|
||||||
|
controller.text),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
this.setState(() {});
|
||||||
|
},
|
||||||
|
child: Text(
|
||||||
|
'Add',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
height: 12.0,
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
height: 8.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Text('Playlist'),
|
||||||
|
] +
|
||||||
|
this
|
||||||
|
.medias
|
||||||
|
.map(
|
||||||
|
(media) => ListTile(
|
||||||
|
title: Text(
|
||||||
|
media.resource,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
subtitle: Text(
|
||||||
|
media.mediaType.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.toList() +
|
||||||
|
<Widget>[
|
||||||
|
Divider(
|
||||||
|
height: 8.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed: () => this.setState(() {
|
||||||
|
this.player.open(
|
||||||
|
new Playlist(
|
||||||
|
medias: this.medias,
|
||||||
|
playlistMode:
|
||||||
|
PlaylistMode.loop),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
child: Text(
|
||||||
|
'Open',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 12.0),
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed: () => this.setState(() {
|
||||||
|
this.medias.clear();
|
||||||
|
}),
|
||||||
|
child: Text(
|
||||||
|
'Clear',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Card(
|
||||||
|
elevation: 2.0,
|
||||||
|
margin: EdgeInsets.all(4.0),
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.all(16.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text('Playback event listeners.'),
|
||||||
|
Divider(
|
||||||
|
height: 12.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
height: 12.0,
|
||||||
|
),
|
||||||
|
Text('Playback position.'),
|
||||||
|
Divider(
|
||||||
|
height: 8.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Slider(
|
||||||
|
min: 0,
|
||||||
|
max: this
|
||||||
|
.position
|
||||||
|
.duration
|
||||||
|
.inMilliseconds
|
||||||
|
.toDouble(),
|
||||||
|
value: this
|
||||||
|
.position
|
||||||
|
.position
|
||||||
|
.inMilliseconds
|
||||||
|
.toDouble(),
|
||||||
|
onChanged: (double position) {
|
||||||
|
this.player.seek(
|
||||||
|
Duration(
|
||||||
|
milliseconds: position.toInt()),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Text('Event streams.'),
|
||||||
|
Divider(
|
||||||
|
height: 8.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Table(
|
||||||
|
children: [
|
||||||
|
TableRow(children: [
|
||||||
|
Text('player.general.volume'),
|
||||||
|
Text('${this.general.volume}')
|
||||||
|
]),
|
||||||
|
TableRow(children: [
|
||||||
|
Text('player.general.rate'),
|
||||||
|
Text('${this.general.rate}')
|
||||||
|
]),
|
||||||
|
TableRow(children: [
|
||||||
|
Text('player.position.position'),
|
||||||
|
Text('${this.position.position}')
|
||||||
|
]),
|
||||||
|
TableRow(children: [
|
||||||
|
Text('player.position.duration'),
|
||||||
|
Text('${this.position.duration}')
|
||||||
|
]),
|
||||||
|
TableRow(children: [
|
||||||
|
Text('player.playback.isCompleted'),
|
||||||
|
Text('${this.playback.isCompleted}')
|
||||||
|
]),
|
||||||
|
TableRow(children: [
|
||||||
|
Text('player.playback.isPlaying'),
|
||||||
|
Text('${this.playback.isPlaying}')
|
||||||
|
]),
|
||||||
|
TableRow(children: [
|
||||||
|
Text('player.playback.isSeekable'),
|
||||||
|
Text('${this.playback.isSeekable}')
|
||||||
|
]),
|
||||||
|
TableRow(children: [
|
||||||
|
Text('player.current.index'),
|
||||||
|
Text('${this.current.index}')
|
||||||
|
]),
|
||||||
|
TableRow(children: [
|
||||||
|
Text('player.current.media'),
|
||||||
|
Text('${this.current.media}')
|
||||||
|
]),
|
||||||
|
TableRow(children: [
|
||||||
|
Text('player.current.medias'),
|
||||||
|
Text('${this.current.medias}')
|
||||||
|
]),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Card(
|
||||||
|
elevation: 2.0,
|
||||||
|
margin: EdgeInsets.all(4.0),
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.all(16.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text('Playback devices.'),
|
||||||
|
Divider(
|
||||||
|
height: 12.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
height: 12.0,
|
||||||
|
),
|
||||||
|
] +
|
||||||
|
this
|
||||||
|
.devices
|
||||||
|
.map(
|
||||||
|
(device) => new ListTile(
|
||||||
|
title: Text(
|
||||||
|
device.name,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
subtitle: Text(
|
||||||
|
device.id,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onTap: () =>
|
||||||
|
this.player.setDevice(device),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.toList(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Card(
|
||||||
|
elevation: 2.0,
|
||||||
|
margin: EdgeInsets.all(4.0),
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.all(16.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text('Metas parsing.'),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: TextField(
|
||||||
|
controller: this.metasController,
|
||||||
|
cursorWidth: 1.0,
|
||||||
|
autofocus: true,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
decoration: InputDecoration.collapsed(
|
||||||
|
hintStyle: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
hintText: 'Media resource location.',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: 152.0,
|
||||||
|
child: DropdownButton<MediaType>(
|
||||||
|
value: this.mediaType,
|
||||||
|
onChanged: (mediaType) => this.setState(
|
||||||
|
() => this.mediaType = mediaType),
|
||||||
|
items: [
|
||||||
|
DropdownMenuItem<MediaType>(
|
||||||
|
value: MediaType.file,
|
||||||
|
child: Text(
|
||||||
|
MediaType.file.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
DropdownMenuItem<MediaType>(
|
||||||
|
value: MediaType.network,
|
||||||
|
child: Text(
|
||||||
|
MediaType.network.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
DropdownMenuItem<MediaType>(
|
||||||
|
value: MediaType.asset,
|
||||||
|
child: Text(
|
||||||
|
MediaType.asset.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(left: 16.0),
|
||||||
|
child: ElevatedButton(
|
||||||
|
onPressed: () async {
|
||||||
|
if (this.mediaType == MediaType.file) {
|
||||||
|
this.metasMedia = await Media.file(
|
||||||
|
new File(
|
||||||
|
this.metasController.text),
|
||||||
|
parse: true);
|
||||||
|
} else if (this.mediaType ==
|
||||||
|
MediaType.network) {
|
||||||
|
this.metasMedia = await Media.network(
|
||||||
|
this.metasController.text,
|
||||||
|
parse: true);
|
||||||
|
} else if (this.mediaType ==
|
||||||
|
MediaType.asset) {
|
||||||
|
this.metasMedia = await Media.asset(
|
||||||
|
this.metasController.text,
|
||||||
|
parse: true);
|
||||||
|
}
|
||||||
|
this.setState(() {});
|
||||||
|
},
|
||||||
|
child: Text(
|
||||||
|
'Parse',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
height: 12.0,
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
height: 8.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
JsonEncoder.withIndent(' ')
|
||||||
|
.convert(this.metasMedia?.metas),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Card(
|
||||||
|
elevation: 2.0,
|
||||||
|
margin: EdgeInsets.all(4.0),
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.all(16.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text('Playback controls.'),
|
||||||
|
Divider(
|
||||||
|
height: 8.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed: () => this.player.play(),
|
||||||
|
child: Text(
|
||||||
|
'play',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 12.0),
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed: () => this.player.pause(),
|
||||||
|
child: Text(
|
||||||
|
'pause',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 12.0),
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed: () => this.player.playOrPause(),
|
||||||
|
child: Text(
|
||||||
|
'playOrPause',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 12.0),
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed: () => this.player.stop(),
|
||||||
|
child: Text(
|
||||||
|
'stop',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 12.0),
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed: () => this.player.next(),
|
||||||
|
child: Text(
|
||||||
|
'next',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 12.0),
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed: () => this.player.back(),
|
||||||
|
child: Text(
|
||||||
|
'back',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
height: 12.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
height: 12.0,
|
||||||
|
),
|
||||||
|
Text('Volume control.'),
|
||||||
|
Divider(
|
||||||
|
height: 8.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Slider(
|
||||||
|
min: 0.0,
|
||||||
|
max: 1.0,
|
||||||
|
value: this.player.general.volume ?? 0.5,
|
||||||
|
onChanged: (volume) {
|
||||||
|
this.player.setVolume(volume);
|
||||||
|
this.setState(() {});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Text('Playback rate control.'),
|
||||||
|
Divider(
|
||||||
|
height: 8.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Slider(
|
||||||
|
min: 0.5,
|
||||||
|
max: 1.5,
|
||||||
|
value: this.player.general.rate ?? 0.5,
|
||||||
|
onChanged: (rate) {
|
||||||
|
this.player.setRate(rate);
|
||||||
|
this.setState(() {});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Card(
|
||||||
|
elevation: 2.0,
|
||||||
|
margin: EdgeInsets.all(4.0),
|
||||||
|
child: Container(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(left: 16.0, top: 16.0),
|
||||||
|
alignment: Alignment.topLeft,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text('Playlist manipulation.'),
|
||||||
|
Divider(
|
||||||
|
height: 12.0,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
height: 12.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
height: 456.0,
|
||||||
|
child: ReorderableListView(
|
||||||
|
shrinkWrap: true,
|
||||||
|
onReorder:
|
||||||
|
(int initialIndex, int finalIndex) async {
|
||||||
|
/// 🙏🙏🙏
|
||||||
|
/// https://github.com/flutter/flutter/issues/24786
|
||||||
|
/// https://stackoverflow.com/a/54164333/12825435
|
||||||
|
if (finalIndex > this.current.medias.length)
|
||||||
|
finalIndex = this.current.medias.length;
|
||||||
|
if (initialIndex < finalIndex) finalIndex--;
|
||||||
|
|
||||||
|
await this
|
||||||
|
.player
|
||||||
|
.move(initialIndex, finalIndex);
|
||||||
|
this.setState(() {});
|
||||||
|
},
|
||||||
|
scrollDirection: Axis.vertical,
|
||||||
|
padding:
|
||||||
|
const EdgeInsets.symmetric(vertical: 8.0),
|
||||||
|
children: List.generate(
|
||||||
|
this.current.medias.length,
|
||||||
|
(int index) => new ListTile(
|
||||||
|
key: Key(index.toString()),
|
||||||
|
leading: Text(
|
||||||
|
index.toString(),
|
||||||
|
style: TextStyle(fontSize: 14.0),
|
||||||
|
),
|
||||||
|
title: Text(
|
||||||
|
this.current.medias[index].resource,
|
||||||
|
style: TextStyle(fontSize: 14.0),
|
||||||
|
),
|
||||||
|
subtitle: Text(
|
||||||
|
this
|
||||||
|
.current
|
||||||
|
.medias[index]
|
||||||
|
.mediaType
|
||||||
|
.toString(),
|
||||||
|
style: TextStyle(fontSize: 14.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
growable: true,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);*/
|
||||||
|
}
|
||||||
|
}
|
||||||
137
lib/Screens/Resources/new_resource_popup.dart
Normal file
137
lib/Screens/Resources/new_resource_popup.dart
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:manager_app/Screens/Resources/upload_image.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:manager_app/Components/message_notification.dart';
|
||||||
|
import 'package:manager_app/Components/rounded_button.dart';
|
||||||
|
import 'package:manager_app/Components/string_input_container.dart';
|
||||||
|
import 'package:manager_app/Models/managerContext.dart';
|
||||||
|
import 'package:manager_app/app_context.dart';
|
||||||
|
import 'package:manager_app/constants.dart';
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
|
||||||
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
|
void showNewResource(AppContext appContext, BuildContext context) {
|
||||||
|
ResourceDetailDTO resourceDetailDTO = new ResourceDetailDTO();
|
||||||
|
var fileName;
|
||||||
|
File fileToSend;
|
||||||
|
showDialog(
|
||||||
|
builder: (BuildContext context) => AlertDialog(
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(20.0))
|
||||||
|
),
|
||||||
|
content: Container(
|
||||||
|
width: 400,
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Text("Nouvelle ressource", style: new TextStyle(fontSize: 25, fontWeight: FontWeight.w400)),
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
StringContainer(
|
||||||
|
label: "Nom :",
|
||||||
|
initialValue: resourceDetailDTO.label,
|
||||||
|
onChanged: (value) {
|
||||||
|
resourceDetailDTO.label = value;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
if (fileName != null) new Text(fileName),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
UploadImageContainer(
|
||||||
|
onChanged: (File file) {
|
||||||
|
print("ONCHANGED image");
|
||||||
|
print(file.path);
|
||||||
|
fileToSend = file;
|
||||||
|
resourceDetailDTO.type = ResourceType.image;
|
||||||
|
}
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
actions: <Widget>[
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
children: [
|
||||||
|
Align(
|
||||||
|
alignment: AlignmentDirectional.bottomEnd,
|
||||||
|
child: Container(
|
||||||
|
width: 175,
|
||||||
|
height: 70,
|
||||||
|
child: RoundedButton(
|
||||||
|
text: "Annuler",
|
||||||
|
icon: Icons.undo,
|
||||||
|
color: kSecond,
|
||||||
|
press: () {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Align(
|
||||||
|
alignment: AlignmentDirectional.bottomEnd,
|
||||||
|
child: Container(
|
||||||
|
width: 150,
|
||||||
|
height: 70,
|
||||||
|
child: RoundedButton(
|
||||||
|
text: "Créer",
|
||||||
|
icon: Icons.check,
|
||||||
|
color: kPrimaryColor,
|
||||||
|
textColor: kWhite,
|
||||||
|
press: () {
|
||||||
|
create(resourceDetailDTO, fileToSend, appContext, context);
|
||||||
|
},
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
), context: context
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void create(ResourceDetailDTO resourceDetailDTO, File file, AppContext appContext, context) async {
|
||||||
|
if (resourceDetailDTO.label != null) {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
|
||||||
|
print(resourceDetailDTO.type);
|
||||||
|
if(resourceDetailDTO.type == ResourceType.image || resourceDetailDTO.type == ResourceType.video) {
|
||||||
|
var request = http.MultipartRequest('POST', Uri.parse(appContext.getContext().clientAPI.resourceApi.apiClient.basePath+"/api/Resource/upload"));
|
||||||
|
request.files.add(
|
||||||
|
await http.MultipartFile(
|
||||||
|
'picture',
|
||||||
|
file.readAsBytes().asStream(),
|
||||||
|
file.lengthSync(),
|
||||||
|
filename: file.path.toString().split("/").last
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Todo Add header with bearer token (get via managercontext - token value)
|
||||||
|
//request.headers.addEntries(newEntries)
|
||||||
|
|
||||||
|
request.fields['label'] = resourceDetailDTO.label;
|
||||||
|
request.fields['type'] = ResourceType.image.toString();
|
||||||
|
|
||||||
|
var res = await request.send();
|
||||||
|
|
||||||
|
print("RESULT");
|
||||||
|
print(res.statusCode);
|
||||||
|
// TODO add message if status code not ok
|
||||||
|
|
||||||
|
} else {
|
||||||
|
ResourceDetailDTO newResource = await appContext.getContext().clientAPI.resourceApi.resourceCreate(resourceDetailDTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
// To refresh only (UGLY COOOOODE)
|
||||||
|
ManagerAppContext managerAppContext = appContext.getContext();
|
||||||
|
appContext.setContext(managerAppContext);
|
||||||
|
|
||||||
|
showNotification(Colors.green, kWhite, 'La ressource a été créée avec succès', context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -1,124 +0,0 @@
|
|||||||
import 'package:file_picker/file_picker.dart';
|
|
||||||
import 'package:filepicker_windows/filepicker_windows.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:manager_app/Components/message_notification.dart';
|
|
||||||
import 'package:manager_app/Components/rounded_button.dart';
|
|
||||||
import 'package:manager_app/Components/string_input_container.dart';
|
|
||||||
import 'package:manager_app/Models/managerContext.dart';
|
|
||||||
import 'package:manager_app/app_context.dart';
|
|
||||||
import 'package:manager_app/constants.dart';
|
|
||||||
import 'package:managerapi/api.dart';
|
|
||||||
|
|
||||||
void showNewRessource(AppContext appContext, BuildContext context) {
|
|
||||||
RessourceDetailDTO ressourceDetailDTO = new RessourceDetailDTO();
|
|
||||||
dynamic url = null;
|
|
||||||
showDialog(
|
|
||||||
builder: (BuildContext context) => AlertDialog(
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(20.0))
|
|
||||||
),
|
|
||||||
content: SingleChildScrollView(
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Text("Nouvelle ressource", style: new TextStyle(fontSize: 25, fontWeight: FontWeight.w400)),
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
StringContainer(
|
|
||||||
label: "Nom :",
|
|
||||||
initialValue: ressourceDetailDTO.label,
|
|
||||||
onChanged: (value) {
|
|
||||||
ressourceDetailDTO.label = value;
|
|
||||||
},
|
|
||||||
),
|
|
||||||
if (url != null) Image.network(url)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
InkWell(
|
|
||||||
onTap: () async {
|
|
||||||
print("onTap upload");
|
|
||||||
final file = OpenFilePicker()
|
|
||||||
..filterSpecification = {
|
|
||||||
'Images (*.jpg; *.png)': '*.jpg;*.png',
|
|
||||||
'Video (*.mp4)': '*.mp4',
|
|
||||||
'All Files': '*.*'
|
|
||||||
}
|
|
||||||
..defaultFilterIndex = 0
|
|
||||||
..title = 'Sélectionner un fichier';
|
|
||||||
|
|
||||||
final result = file.getFile();
|
|
||||||
if (result != null) {
|
|
||||||
print(result.path);
|
|
||||||
print(result.uri);
|
|
||||||
|
|
||||||
// Read the file.
|
|
||||||
dynamic contents = await result.readAsBytes();
|
|
||||||
print(contents);
|
|
||||||
|
|
||||||
url = result.path;
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
child: Text("UPLOAD !"),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
actions: <Widget>[
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
||||||
children: [
|
|
||||||
Align(
|
|
||||||
alignment: AlignmentDirectional.bottomEnd,
|
|
||||||
child: Container(
|
|
||||||
width: 175,
|
|
||||||
height: 70,
|
|
||||||
child: RoundedButton(
|
|
||||||
text: "Annuler",
|
|
||||||
icon: Icons.undo,
|
|
||||||
color: kSecond,
|
|
||||||
press: () {
|
|
||||||
Navigator.of(context).pop();
|
|
||||||
},
|
|
||||||
fontSize: 20,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Align(
|
|
||||||
alignment: AlignmentDirectional.bottomEnd,
|
|
||||||
child: Container(
|
|
||||||
width: 150,
|
|
||||||
height: 70,
|
|
||||||
child: RoundedButton(
|
|
||||||
text: "Créer",
|
|
||||||
icon: Icons.check,
|
|
||||||
color: kPrimaryColor,
|
|
||||||
textColor: kWhite,
|
|
||||||
press: () {
|
|
||||||
create(ressourceDetailDTO, appContext, context);
|
|
||||||
},
|
|
||||||
fontSize: 20,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
), context: context
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
void create(RessourceDetailDTO ressourceDetailDTO, AppContext appContext, context) async {
|
|
||||||
if (ressourceDetailDTO.label != null) {
|
|
||||||
Navigator.of(context).pop();
|
|
||||||
|
|
||||||
RessourceDetailDTO newRessource = await appContext.getContext().clientAPI.ressourceApi.ressourceCreate(ressourceDetailDTO);
|
|
||||||
print("newRessource");
|
|
||||||
print(newRessource);
|
|
||||||
|
|
||||||
// To refresh only (UGLY COOOOODE)
|
|
||||||
ManagerAppContext managerAppContext = appContext.getContext();
|
|
||||||
appContext.setContext(managerAppContext);
|
|
||||||
|
|
||||||
showNotification(Colors.green, kWhite, 'La ressource a été créée avec succès', context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,8 +1,10 @@
|
|||||||
import 'package:auto_size_text/auto_size_text.dart';
|
import 'package:auto_size_text/auto_size_text.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:manager_app/Components/fetch_resource_icon.dart';
|
||||||
|
import 'package:manager_app/Components/fetch_section_icon.dart';
|
||||||
import 'package:manager_app/Models/managerContext.dart';
|
import 'package:manager_app/Models/managerContext.dart';
|
||||||
import 'package:manager_app/Screens/Resources/new_ressource_popup.dart';
|
import 'package:manager_app/Screens/Resources/new_resource_popup.dart';
|
||||||
import 'package:manager_app/Screens/Resources/show_ressource_popup.dart';
|
import 'package:manager_app/Screens/Resources/show_resource_popup.dart';
|
||||||
import 'package:manager_app/app_context.dart';
|
import 'package:manager_app/app_context.dart';
|
||||||
import 'package:manager_app/constants.dart';
|
import 'package:manager_app/constants.dart';
|
||||||
import 'package:managerapi/api.dart';
|
import 'package:managerapi/api.dart';
|
||||||
@ -29,8 +31,8 @@ class _ResourcesScreenState extends State<ResourcesScreen> {
|
|||||||
future: getResources(appContext),
|
future: getResources(appContext),
|
||||||
builder: (context, AsyncSnapshot<dynamic> snapshot) {
|
builder: (context, AsyncSnapshot<dynamic> snapshot) {
|
||||||
if (snapshot.connectionState == ConnectionState.done) {
|
if (snapshot.connectionState == ConnectionState.done) {
|
||||||
var tempOutput = new List<RessourceDTO>.from(snapshot.data);
|
var tempOutput = new List<ResourceDTO>.from(snapshot.data);
|
||||||
tempOutput.add(RessourceDTO(id: null));
|
tempOutput.add(ResourceDTO(id: null));
|
||||||
return bodyGrid(tempOutput, size, appContext);
|
return bodyGrid(tempOutput, size, appContext);
|
||||||
} else if (snapshot.connectionState == ConnectionState.none) {
|
} else if (snapshot.connectionState == ConnectionState.none) {
|
||||||
return Text("No data");
|
return Text("No data");
|
||||||
@ -47,16 +49,16 @@ class _ResourcesScreenState extends State<ResourcesScreen> {
|
|||||||
Widget bodyGrid(data, Size size, AppContext appContext) {
|
Widget bodyGrid(data, Size size, AppContext appContext) {
|
||||||
return GridView.builder(
|
return GridView.builder(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 8),
|
gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 6),
|
||||||
itemCount: data.length,
|
itemCount: data.length,
|
||||||
itemBuilder: (BuildContext context, int index) {
|
itemBuilder: (BuildContext context, int index) {
|
||||||
return // User Picture
|
return // User Picture
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (data[index].id == null) {
|
if (data[index].id == null) {
|
||||||
showNewRessource(appContext, context);
|
showNewResource(appContext, context);
|
||||||
} else {
|
} else {
|
||||||
showRessource(data[index], appContext, context);
|
showResource(data[index], appContext, context, size);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
@ -65,7 +67,7 @@ class _ResourcesScreenState extends State<ResourcesScreen> {
|
|||||||
margin: EdgeInsets.symmetric(vertical: 15, horizontal: 15),
|
margin: EdgeInsets.symmetric(vertical: 15, horizontal: 15),
|
||||||
child: Align(
|
child: Align(
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
child: getElement(data[index], size)
|
child: getElement(data[index], size, appContext)
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@ -73,26 +75,35 @@ class _ResourcesScreenState extends State<ResourcesScreen> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
getElement(RessourceDTO ressource, Size size) {
|
getElement(ResourceDTO resource, Size size, AppContext appContext) {
|
||||||
if (ressource.id != null) {
|
if (resource.id != null) {
|
||||||
return Column(
|
return Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.center,
|
||||||
child: AutoSizeText(
|
child: AutoSizeText(
|
||||||
ressource.label,
|
resource.label == null ? "" : resource.label,
|
||||||
style: new TextStyle(fontSize: 25),
|
style: new TextStyle(fontSize: 20),
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
Container(
|
||||||
|
height: size.height *0.08,
|
||||||
|
child: Center(
|
||||||
|
child: Image.network(
|
||||||
|
appContext.getContext().clientAPI.resourceApi.apiClient.basePath+"/api/Resource/"+ resource.id,
|
||||||
|
fit:BoxFit.fill
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomRight,
|
alignment: Alignment.bottomRight,
|
||||||
child: AutoSizeText(
|
child: Icon(
|
||||||
ressource.type.toString(),
|
getResourceIcon(resource.type),
|
||||||
style: new TextStyle(fontSize: 18, fontFamily: ""),
|
color: kPrimaryColor,
|
||||||
maxLines: 1,
|
size: 25,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -107,9 +118,9 @@ class _ResourcesScreenState extends State<ResourcesScreen> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boxDecoration(RessourceDTO ressourceDTO) {
|
boxDecoration(ResourceDTO resourceDTO) {
|
||||||
return BoxDecoration(
|
return BoxDecoration(
|
||||||
color: ressourceDTO.id == null ? Colors.lightGreen : kTextLightColor,
|
color: resourceDTO.id == null ? Colors.lightGreen : kTextLightColor,
|
||||||
shape: BoxShape.rectangle,
|
shape: BoxShape.rectangle,
|
||||||
borderRadius: BorderRadius.circular(25.0),
|
borderRadius: BorderRadius.circular(25.0),
|
||||||
boxShadow: [
|
boxShadow: [
|
||||||
@ -123,11 +134,8 @@ boxDecoration(RessourceDTO ressourceDTO) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<List<RessourceDTO>> getResources(dynamic appContext) async {
|
Future<List<ResourceDTO>> getResources(dynamic appContext) async {
|
||||||
List<RessourceDTO> ressources = await appContext.getContext().clientAPI.ressourceApi.ressourceGet();
|
List<ResourceDTO> resources = await appContext.getContext().clientAPI.resourceApi.resourceGet();
|
||||||
print("number of ressources " + ressources.length.toString());
|
print(resources);
|
||||||
ressources.forEach((element) {
|
return resources;
|
||||||
print(element);
|
|
||||||
});
|
|
||||||
return ressources;
|
|
||||||
}
|
}
|
||||||
|
|||||||
106
lib/Screens/Resources/show_resource_popup.dart
Normal file
106
lib/Screens/Resources/show_resource_popup.dart
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:manager_app/Components/confirmation_dialog.dart';
|
||||||
|
import 'package:manager_app/Components/message_notification.dart';
|
||||||
|
import 'package:manager_app/Components/rounded_button.dart';
|
||||||
|
import 'package:manager_app/Models/managerContext.dart';
|
||||||
|
import 'package:manager_app/app_context.dart';
|
||||||
|
import 'package:manager_app/constants.dart';
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
|
void showResource(ResourceDTO resourceDTO,AppContext appContext, BuildContext context, Size size) {
|
||||||
|
showDialog(
|
||||||
|
builder: (BuildContext context) => AlertDialog(
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(20.0))
|
||||||
|
),
|
||||||
|
content: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Text(
|
||||||
|
resourceDTO.label == null ? "" : resourceDTO.label,
|
||||||
|
style: new TextStyle(fontSize: 25, fontWeight: FontWeight.w400)),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
height: size.height *0.6,
|
||||||
|
child: Center(
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(30),
|
||||||
|
border: Border.all(width: 3, color: kSecond)
|
||||||
|
),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(10.0),
|
||||||
|
child: Image.network(
|
||||||
|
appContext.getContext().clientAPI.resourceApi.apiClient.basePath+"/api/Resource/"+ resourceDTO.id,
|
||||||
|
fit:BoxFit.scaleDown
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
actions: <Widget>[
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
children: [
|
||||||
|
Align(
|
||||||
|
alignment: AlignmentDirectional.bottomEnd,
|
||||||
|
child: Container(
|
||||||
|
width: 175,
|
||||||
|
height: 70,
|
||||||
|
child: RoundedButton(
|
||||||
|
text: "Retour",
|
||||||
|
icon: Icons.undo,
|
||||||
|
color: kSecond,
|
||||||
|
press: () {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Align(
|
||||||
|
alignment: AlignmentDirectional.bottomEnd,
|
||||||
|
child: Container(
|
||||||
|
width: 200,
|
||||||
|
height: 70,
|
||||||
|
child: RoundedButton(
|
||||||
|
text: "Supprimer",
|
||||||
|
icon: Icons.delete,
|
||||||
|
color: kPrimaryColor,
|
||||||
|
textColor: kWhite,
|
||||||
|
press: () {
|
||||||
|
delete(resourceDTO, appContext, context);
|
||||||
|
},
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
), context: context
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> delete(ResourceDTO resourceDTO, AppContext appContext, context) async {
|
||||||
|
showConfirmationDialog(
|
||||||
|
"Êtes-vous sûr de vouloir supprimer cette ressource ?",
|
||||||
|
() {},
|
||||||
|
() async {
|
||||||
|
await appContext.getContext().clientAPI.resourceApi.resourceDelete(resourceDTO.id);
|
||||||
|
// just to refresh
|
||||||
|
ManagerAppContext managerAppContext = appContext.getContext();
|
||||||
|
appContext.setContext(managerAppContext);
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
|
||||||
|
showNotification(Colors.green, kWhite, 'La ressource a été supprimée avec succès', context);
|
||||||
|
},
|
||||||
|
context
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -1,81 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:manager_app/Components/rounded_button.dart';
|
|
||||||
import 'package:manager_app/app_context.dart';
|
|
||||||
import 'package:manager_app/constants.dart';
|
|
||||||
import 'package:managerapi/api.dart';
|
|
||||||
import 'package:intl/intl.dart';
|
|
||||||
|
|
||||||
void showRessource(RessourceDTO ressourceDTO,AppContext appContext, BuildContext context) {
|
|
||||||
showDialog(
|
|
||||||
builder: (BuildContext context) => AlertDialog(
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(20.0))
|
|
||||||
),
|
|
||||||
content: SingleChildScrollView(
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Text(ressourceDTO.label, style: new TextStyle(fontSize: 25, fontWeight: FontWeight.w400)),
|
|
||||||
Text('TODO CHARGE IMAGE'),
|
|
||||||
Text("TODO SHOW IMAGE OR VIDEO")
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
actions: <Widget>[
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
||||||
children: [
|
|
||||||
Align(
|
|
||||||
alignment: AlignmentDirectional.bottomEnd,
|
|
||||||
child: Container(
|
|
||||||
width: 175,
|
|
||||||
height: 70,
|
|
||||||
child: RoundedButton(
|
|
||||||
text: "Retour",
|
|
||||||
icon: Icons.undo,
|
|
||||||
color: kSecond,
|
|
||||||
press: () {
|
|
||||||
Navigator.of(context).pop();
|
|
||||||
},
|
|
||||||
fontSize: 20,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Align(
|
|
||||||
alignment: AlignmentDirectional.bottomEnd,
|
|
||||||
child: Container(
|
|
||||||
width: 200,
|
|
||||||
height: 70,
|
|
||||||
child: RoundedButton(
|
|
||||||
text: "Supprimer",
|
|
||||||
icon: Icons.delete,
|
|
||||||
color: kPrimaryColor,
|
|
||||||
textColor: kWhite,
|
|
||||||
press: () {
|
|
||||||
delete(ressourceDTO, appContext, context);
|
|
||||||
},
|
|
||||||
fontSize: 20,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
), context: context
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
void delete(RessourceDTO ressourceDTO, AppContext appContext, context) async {
|
|
||||||
if (ressourceDTO.label != null) {
|
|
||||||
Navigator.of(context).pop();
|
|
||||||
|
|
||||||
//RessourceDetailDTO newRessource = await appContext.getContext().clientAPI.ressourceApi.ressourceCreate(ressourceDetailDTO);
|
|
||||||
print("TODO DELETE");
|
|
||||||
/*print(newRessource);
|
|
||||||
|
|
||||||
// To refresh only (UGLY COOOOODE)
|
|
||||||
ManagerAppContext managerAppContext = appContext.getContext();
|
|
||||||
appContext.setContext(managerAppContext);
|
|
||||||
|
|
||||||
showNotification(Colors.green, kWhite, 'La ressource a été créée avec succès', context);*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
170
lib/Screens/Resources/upload_image.dart
Normal file
170
lib/Screens/Resources/upload_image.dart
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
import 'dart:convert';
|
||||||
|
import 'package:dart_vlc/dart_vlc.dart';
|
||||||
|
import 'package:manager_app/Components/vlc_viewer.dart';
|
||||||
|
import 'package:manager_app/constants.dart';
|
||||||
|
import 'package:path/path.dart';
|
||||||
|
import 'package:async/async.dart';
|
||||||
|
import 'package:http/http.dart' as http;
|
||||||
|
import 'package:filepicker_windows/filepicker_windows.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class UploadImageContainer extends StatefulWidget {
|
||||||
|
final ValueChanged<File> onChanged;
|
||||||
|
const UploadImageContainer({
|
||||||
|
Key key,
|
||||||
|
this.onChanged,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
_UploadImageContainerState createState() => _UploadImageContainerState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _UploadImageContainerState extends State<UploadImageContainer> with SingleTickerProviderStateMixin {
|
||||||
|
var filePath;
|
||||||
|
File fileToShow;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
width: 500,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
if (fileToShow == null) InkWell(
|
||||||
|
onTap: () async {
|
||||||
|
filePicker();
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: kPrimaryColor,
|
||||||
|
borderRadius: BorderRadius.circular(15)
|
||||||
|
),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 25.0, right: 25.0, top: 15.0, bottom: 15.0),
|
||||||
|
child: Text(
|
||||||
|
"Ajouter un fichier",
|
||||||
|
style: new TextStyle(color: kWhite),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (fileToShow != null)
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.all(8.0),
|
||||||
|
child: Card(
|
||||||
|
color: kBackgroundColor,
|
||||||
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(8.0))),
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () async {
|
||||||
|
filePicker();
|
||||||
|
},
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
|
children: <Widget>[
|
||||||
|
ClipRRect(
|
||||||
|
borderRadius: BorderRadius.only(
|
||||||
|
topLeft: Radius.circular(8.0),
|
||||||
|
topRight: Radius.circular(8.0),
|
||||||
|
),
|
||||||
|
child: showFile()
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
title: Text(getFileName(filePath)),
|
||||||
|
subtitle: Text(filePath),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
String getFileName(filePath) {
|
||||||
|
return (filePath.toString().split('\\').last);
|
||||||
|
}
|
||||||
|
|
||||||
|
void filePicker() {
|
||||||
|
final file = OpenFilePicker()
|
||||||
|
..filterSpecification = {
|
||||||
|
'Images (*.jpg; *.png)': '*.jpg;*.png',
|
||||||
|
'Video (*.mp4)': '*.mp4',
|
||||||
|
'All Files': '*.*'
|
||||||
|
}
|
||||||
|
..defaultFilterIndex = 0
|
||||||
|
..title = 'Sélectionner un fichier';
|
||||||
|
|
||||||
|
final result = file.getFile();
|
||||||
|
|
||||||
|
if (result != null) {
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
filePath = result.path;
|
||||||
|
fileToShow = result;
|
||||||
|
widget.onChanged(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
showFile() {
|
||||||
|
if (getFileName(filePath).contains(".mp4")) {
|
||||||
|
|
||||||
|
return FutureBuilder(
|
||||||
|
future: loadFile(fileToShow),
|
||||||
|
builder: (context, AsyncSnapshot<dynamic> snapshot) {
|
||||||
|
if (snapshot.connectionState == ConnectionState.done) {
|
||||||
|
return Container(
|
||||||
|
height: 300,
|
||||||
|
child: DartVLC(file: snapshot.data)
|
||||||
|
);
|
||||||
|
} else if (snapshot.connectionState == ConnectionState.none) {
|
||||||
|
return Text("No data");
|
||||||
|
} else {
|
||||||
|
return Center(child: Container(height: 200, child: Text('LOADING TODO FRAISE')));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*await Media.file(widget.file)*/
|
||||||
|
} else {
|
||||||
|
return Image.file(
|
||||||
|
fileToShow,
|
||||||
|
height: 200,
|
||||||
|
fit:BoxFit.scaleDown
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loadFile(File fileToShow) async {
|
||||||
|
return await Media.file(fileToShow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Upload(File imageFile) async {
|
||||||
|
var stream = new http.ByteStream(DelegatingStream.typed(imageFile.openRead()));
|
||||||
|
var length = await imageFile.length();
|
||||||
|
|
||||||
|
var uri = Uri.parse("upload URL TEST");
|
||||||
|
|
||||||
|
var request = new http.MultipartRequest("POST", uri);
|
||||||
|
var multipartFile = new http.MultipartFile('file', stream, length,
|
||||||
|
filename: basename(imageFile.path));
|
||||||
|
//contentType: new MediaType('image', 'png'));
|
||||||
|
|
||||||
|
request.files.add(multipartFile);
|
||||||
|
var response = await request.send();
|
||||||
|
print(response.statusCode);
|
||||||
|
response.stream.transform(utf8.decoder).listen((value) {
|
||||||
|
print(value);
|
||||||
|
});
|
||||||
|
}
|
||||||
@ -84,9 +84,9 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||||||
SectionDTO section = await clientAPI.sectionApi.sectionGetDetail("60916249494b9eaf283b44f7");
|
SectionDTO section = await clientAPI.sectionApi.sectionGetDetail("60916249494b9eaf283b44f7");
|
||||||
print(section);
|
print(section);
|
||||||
|
|
||||||
List<RessourceDTO> ressources = await clientAPI.ressourceApi.ressourceGet();
|
List<ResourceDTO> resources = await clientAPI.resourceApi.resourceGet();
|
||||||
print("number of ressources " + ressources.length.toString());
|
print("number of resources " + resources.length.toString());
|
||||||
ressources.forEach((element) {
|
resources.forEach((element) {
|
||||||
print(element);
|
print(element);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -17,8 +17,8 @@ class Client {
|
|||||||
SectionApi _sectionApi;
|
SectionApi _sectionApi;
|
||||||
SectionApi get sectionApi => _sectionApi;
|
SectionApi get sectionApi => _sectionApi;
|
||||||
|
|
||||||
RessourceApi _ressourceApi;
|
ResourceApi _resourceApi;
|
||||||
RessourceApi get ressourceApi => _ressourceApi;
|
ResourceApi get resourceApi => _resourceApi;
|
||||||
|
|
||||||
DeviceApi _deviceApi;
|
DeviceApi _deviceApi;
|
||||||
DeviceApi get deviceApi => _deviceApi;
|
DeviceApi get deviceApi => _deviceApi;
|
||||||
@ -26,12 +26,12 @@ class Client {
|
|||||||
Client() {
|
Client() {
|
||||||
_apiClient = ApiClient(
|
_apiClient = ApiClient(
|
||||||
basePath: "http://192.168.31.96");
|
basePath: "http://192.168.31.96");
|
||||||
//basePath: "http://localhost:25049");
|
//basePath: "https://localhost:44339");
|
||||||
_authenticationApi = AuthenticationApi(_apiClient);
|
_authenticationApi = AuthenticationApi(_apiClient);
|
||||||
_userApi = UserApi(_apiClient);
|
_userApi = UserApi(_apiClient);
|
||||||
_configurationApi = ConfigurationApi(_apiClient);
|
_configurationApi = ConfigurationApi(_apiClient);
|
||||||
_sectionApi = SectionApi(_apiClient);
|
_sectionApi = SectionApi(_apiClient);
|
||||||
_ressourceApi = RessourceApi(_apiClient);
|
_resourceApi = ResourceApi(_apiClient);
|
||||||
_deviceApi = DeviceApi(_apiClient);
|
_deviceApi = DeviceApi(_apiClient);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6,6 +6,10 @@
|
|||||||
|
|
||||||
#include "generated_plugin_registrant.h"
|
#include "generated_plugin_registrant.h"
|
||||||
|
|
||||||
|
#include <dart_vlc/dart_vlc_plugin.h>
|
||||||
|
|
||||||
void fl_register_plugins(FlPluginRegistry* registry) {
|
void fl_register_plugins(FlPluginRegistry* registry) {
|
||||||
|
g_autoptr(FlPluginRegistrar) dart_vlc_registrar =
|
||||||
|
fl_plugin_registry_get_registrar_for_plugin(registry, "DartVlcPlugin");
|
||||||
|
dart_vlc_plugin_register_with_registrar(dart_vlc_registrar);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
list(APPEND FLUTTER_PLUGIN_LIST
|
list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
|
dart_vlc
|
||||||
)
|
)
|
||||||
|
|
||||||
set(PLUGIN_BUNDLED_LIBRARIES)
|
set(PLUGIN_BUNDLED_LIBRARIES)
|
||||||
|
|||||||
@ -7,6 +7,8 @@
|
|||||||
import FlutterMacOS
|
import FlutterMacOS
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
|
import path_provider_macos
|
||||||
|
|
||||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
|
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,10 +9,10 @@ doc/DeviceDTO.md
|
|||||||
doc/DeviceDetailDTO.md
|
doc/DeviceDetailDTO.md
|
||||||
doc/DeviceDetailDTOAllOf.md
|
doc/DeviceDetailDTOAllOf.md
|
||||||
doc/LoginDTO.md
|
doc/LoginDTO.md
|
||||||
doc/RessourceApi.md
|
doc/ResourceApi.md
|
||||||
doc/RessourceDTO.md
|
doc/ResourceDTO.md
|
||||||
doc/RessourceDetailDTO.md
|
doc/ResourceDetailDTO.md
|
||||||
doc/RessourceType.md
|
doc/ResourceType.md
|
||||||
doc/SectionApi.md
|
doc/SectionApi.md
|
||||||
doc/SectionDTO.md
|
doc/SectionDTO.md
|
||||||
doc/SectionType.md
|
doc/SectionType.md
|
||||||
@ -26,7 +26,7 @@ lib/api.dart
|
|||||||
lib/api/authentication_api.dart
|
lib/api/authentication_api.dart
|
||||||
lib/api/configuration_api.dart
|
lib/api/configuration_api.dart
|
||||||
lib/api/device_api.dart
|
lib/api/device_api.dart
|
||||||
lib/api/ressource_api.dart
|
lib/api/resource_api.dart
|
||||||
lib/api/section_api.dart
|
lib/api/section_api.dart
|
||||||
lib/api/user_api.dart
|
lib/api/user_api.dart
|
||||||
lib/api_client.dart
|
lib/api_client.dart
|
||||||
@ -42,9 +42,9 @@ lib/model/device_detail_dto.dart
|
|||||||
lib/model/device_detail_dto_all_of.dart
|
lib/model/device_detail_dto_all_of.dart
|
||||||
lib/model/device_dto.dart
|
lib/model/device_dto.dart
|
||||||
lib/model/login_dto.dart
|
lib/model/login_dto.dart
|
||||||
lib/model/ressource_detail_dto.dart
|
lib/model/resource_detail_dto.dart
|
||||||
lib/model/ressource_dto.dart
|
lib/model/resource_dto.dart
|
||||||
lib/model/ressource_type.dart
|
lib/model/resource_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
|
||||||
@ -52,4 +52,4 @@ 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
|
test/resource_type_test.dart
|
||||||
|
|||||||
@ -76,12 +76,13 @@ Class | Method | HTTP request | Description
|
|||||||
*DeviceApi* | [**deviceGet**](doc\/DeviceApi.md#deviceget) | **GET** /api/Device |
|
*DeviceApi* | [**deviceGet**](doc\/DeviceApi.md#deviceget) | **GET** /api/Device |
|
||||||
*DeviceApi* | [**deviceGetDetail**](doc\/DeviceApi.md#devicegetdetail) | **GET** /api/Device/{id}/detail |
|
*DeviceApi* | [**deviceGetDetail**](doc\/DeviceApi.md#devicegetdetail) | **GET** /api/Device/{id}/detail |
|
||||||
*DeviceApi* | [**deviceUpdate**](doc\/DeviceApi.md#deviceupdate) | **PUT** /api/Device |
|
*DeviceApi* | [**deviceUpdate**](doc\/DeviceApi.md#deviceupdate) | **PUT** /api/Device |
|
||||||
*RessourceApi* | [**ressourceCreate**](doc\/RessourceApi.md#ressourcecreate) | **POST** /api/Ressource |
|
*ResourceApi* | [**resourceCreate**](doc\/ResourceApi.md#resourcecreate) | **POST** /api/Resource |
|
||||||
*RessourceApi* | [**ressourceDelete**](doc\/RessourceApi.md#ressourcedelete) | **DELETE** /api/Ressource/{id} |
|
*ResourceApi* | [**resourceDelete**](doc\/ResourceApi.md#resourcedelete) | **DELETE** /api/Resource/{id} |
|
||||||
*RessourceApi* | [**ressourceGet**](doc\/RessourceApi.md#ressourceget) | **GET** /api/Ressource |
|
*ResourceApi* | [**resourceGet**](doc\/ResourceApi.md#resourceget) | **GET** /api/Resource |
|
||||||
*RessourceApi* | [**ressourceGetDetail**](doc\/RessourceApi.md#ressourcegetdetail) | **GET** /api/Ressource/{id}/detail |
|
*ResourceApi* | [**resourceGetDetail**](doc\/ResourceApi.md#resourcegetdetail) | **GET** /api/Resource/{id}/detail |
|
||||||
*RessourceApi* | [**ressourceShow**](doc\/RessourceApi.md#ressourceshow) | **GET** /api/Ressource/{id} |
|
*ResourceApi* | [**resourceShow**](doc\/ResourceApi.md#resourceshow) | **GET** /api/Resource/{id} |
|
||||||
*RessourceApi* | [**ressourceUpdate**](doc\/RessourceApi.md#ressourceupdate) | **PUT** /api/Ressource |
|
*ResourceApi* | [**resourceUpdate**](doc\/ResourceApi.md#resourceupdate) | **PUT** /api/Resource |
|
||||||
|
*ResourceApi* | [**resourceUpload**](doc\/ResourceApi.md#resourceupload) | **POST** /api/Resource/upload |
|
||||||
*SectionApi* | [**sectionCreate**](doc\/SectionApi.md#sectioncreate) | **POST** /api/Section |
|
*SectionApi* | [**sectionCreate**](doc\/SectionApi.md#sectioncreate) | **POST** /api/Section |
|
||||||
*SectionApi* | [**sectionDelete**](doc\/SectionApi.md#sectiondelete) | **DELETE** /api/Section/{id} |
|
*SectionApi* | [**sectionDelete**](doc\/SectionApi.md#sectiondelete) | **DELETE** /api/Section/{id} |
|
||||||
*SectionApi* | [**sectionDeleteAllForConfiguration**](doc\/SectionApi.md#sectiondeleteallforconfiguration) | **DELETE** /api/Section/configuration/{id} |
|
*SectionApi* | [**sectionDeleteAllForConfiguration**](doc\/SectionApi.md#sectiondeleteallforconfiguration) | **DELETE** /api/Section/configuration/{id} |
|
||||||
@ -104,9 +105,9 @@ Class | Method | HTTP request | Description
|
|||||||
- [DeviceDetailDTO](doc\/DeviceDetailDTO.md)
|
- [DeviceDetailDTO](doc\/DeviceDetailDTO.md)
|
||||||
- [DeviceDetailDTOAllOf](doc\/DeviceDetailDTOAllOf.md)
|
- [DeviceDetailDTOAllOf](doc\/DeviceDetailDTOAllOf.md)
|
||||||
- [LoginDTO](doc\/LoginDTO.md)
|
- [LoginDTO](doc\/LoginDTO.md)
|
||||||
- [RessourceDTO](doc\/RessourceDTO.md)
|
- [ResourceDTO](doc\/ResourceDTO.md)
|
||||||
- [RessourceDetailDTO](doc\/RessourceDetailDTO.md)
|
- [ResourceDetailDTO](doc\/ResourceDetailDTO.md)
|
||||||
- [RessourceType](doc\/RessourceType.md)
|
- [ResourceType](doc\/ResourceType.md)
|
||||||
- [SectionDTO](doc\/SectionDTO.md)
|
- [SectionDTO](doc\/SectionDTO.md)
|
||||||
- [SectionType](doc\/SectionType.md)
|
- [SectionType](doc\/SectionType.md)
|
||||||
- [TokenDTO](doc\/TokenDTO.md)
|
- [TokenDTO](doc\/TokenDTO.md)
|
||||||
|
|||||||
319
manager_api/doc/ResourceApi.md
Normal file
319
manager_api/doc/ResourceApi.md
Normal file
@ -0,0 +1,319 @@
|
|||||||
|
# managerapi.api.ResourceApi
|
||||||
|
|
||||||
|
## Load the API package
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
All URIs are relative to *http://192.168.31.96*
|
||||||
|
|
||||||
|
Method | HTTP request | Description
|
||||||
|
------------- | ------------- | -------------
|
||||||
|
[**resourceCreate**](ResourceApi.md#resourcecreate) | **POST** /api/Resource |
|
||||||
|
[**resourceDelete**](ResourceApi.md#resourcedelete) | **DELETE** /api/Resource/{id} |
|
||||||
|
[**resourceGet**](ResourceApi.md#resourceget) | **GET** /api/Resource |
|
||||||
|
[**resourceGetDetail**](ResourceApi.md#resourcegetdetail) | **GET** /api/Resource/{id}/detail |
|
||||||
|
[**resourceShow**](ResourceApi.md#resourceshow) | **GET** /api/Resource/{id} |
|
||||||
|
[**resourceUpdate**](ResourceApi.md#resourceupdate) | **PUT** /api/Resource |
|
||||||
|
[**resourceUpload**](ResourceApi.md#resourceupload) | **POST** /api/Resource/upload |
|
||||||
|
|
||||||
|
|
||||||
|
# **resourceCreate**
|
||||||
|
> ResourceDetailDTO resourceCreate(resourceDetailDTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
// TODO Configure OAuth2 access token for authorization: bearer
|
||||||
|
//defaultApiClient.getAuthentication<OAuth>('bearer').accessToken = 'YOUR_ACCESS_TOKEN';
|
||||||
|
|
||||||
|
final api_instance = ResourceApi();
|
||||||
|
final resourceDetailDTO = ResourceDetailDTO(); // ResourceDetailDTO |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.resourceCreate(resourceDetailDTO);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ResourceApi->resourceCreate: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**resourceDetailDTO** | [**ResourceDetailDTO**](ResourceDetailDTO.md)| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**ResourceDetailDTO**](ResourceDetailDTO.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[bearer](../README.md#bearer)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **resourceDelete**
|
||||||
|
> String resourceDelete(id)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
// TODO Configure OAuth2 access token for authorization: bearer
|
||||||
|
//defaultApiClient.getAuthentication<OAuth>('bearer').accessToken = 'YOUR_ACCESS_TOKEN';
|
||||||
|
|
||||||
|
final api_instance = ResourceApi();
|
||||||
|
final id = id_example; // String |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.resourceDelete(id);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ResourceApi->resourceDelete: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**id** | **String**| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
**String**
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[bearer](../README.md#bearer)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **resourceGet**
|
||||||
|
> List<ResourceDTO> resourceGet()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
// TODO Configure OAuth2 access token for authorization: bearer
|
||||||
|
//defaultApiClient.getAuthentication<OAuth>('bearer').accessToken = 'YOUR_ACCESS_TOKEN';
|
||||||
|
|
||||||
|
final api_instance = ResourceApi();
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.resourceGet();
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ResourceApi->resourceGet: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
This endpoint does not need any parameter.
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**List<ResourceDTO>**](ResourceDTO.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[bearer](../README.md#bearer)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **resourceGetDetail**
|
||||||
|
> ResourceDetailDTO resourceGetDetail(id)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
// TODO Configure OAuth2 access token for authorization: bearer
|
||||||
|
//defaultApiClient.getAuthentication<OAuth>('bearer').accessToken = 'YOUR_ACCESS_TOKEN';
|
||||||
|
|
||||||
|
final api_instance = ResourceApi();
|
||||||
|
final id = id_example; // String |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.resourceGetDetail(id);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ResourceApi->resourceGetDetail: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**id** | **String**| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**ResourceDetailDTO**](ResourceDetailDTO.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[bearer](../README.md#bearer)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **resourceShow**
|
||||||
|
> MultipartFile resourceShow(id)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
// TODO Configure OAuth2 access token for authorization: bearer
|
||||||
|
//defaultApiClient.getAuthentication<OAuth>('bearer').accessToken = 'YOUR_ACCESS_TOKEN';
|
||||||
|
|
||||||
|
final api_instance = ResourceApi();
|
||||||
|
final id = id_example; // String |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.resourceShow(id);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ResourceApi->resourceShow: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**id** | **String**| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**MultipartFile**](MultipartFile.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[bearer](../README.md#bearer)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/octet-stream, application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **resourceUpdate**
|
||||||
|
> ResourceDetailDTO resourceUpdate(resourceDetailDTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
// TODO Configure OAuth2 access token for authorization: bearer
|
||||||
|
//defaultApiClient.getAuthentication<OAuth>('bearer').accessToken = 'YOUR_ACCESS_TOKEN';
|
||||||
|
|
||||||
|
final api_instance = ResourceApi();
|
||||||
|
final resourceDetailDTO = ResourceDetailDTO(); // ResourceDetailDTO |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.resourceUpdate(resourceDetailDTO);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ResourceApi->resourceUpdate: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**resourceDetailDTO** | [**ResourceDetailDTO**](ResourceDetailDTO.md)| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**ResourceDetailDTO**](ResourceDetailDTO.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[bearer](../README.md#bearer)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **resourceUpload**
|
||||||
|
> String resourceUpload(label, type)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
// TODO Configure OAuth2 access token for authorization: bearer
|
||||||
|
//defaultApiClient.getAuthentication<OAuth>('bearer').accessToken = 'YOUR_ACCESS_TOKEN';
|
||||||
|
|
||||||
|
final api_instance = ResourceApi();
|
||||||
|
final label = label_example; // String |
|
||||||
|
final type = type_example; // String |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.resourceUpload(label, type);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ResourceApi->resourceUpload: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**label** | **String**| | [optional]
|
||||||
|
**type** | **String**| | [optional]
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
**String**
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[bearer](../README.md#bearer)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: multipart/form-data
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
17
manager_api/doc/ResourceDTO.md
Normal file
17
manager_api/doc/ResourceDTO.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# managerapi.model.ResourceDTO
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**id** | **String** | | [optional]
|
||||||
|
**type** | [**ResourceType**](ResourceType.md) | | [optional]
|
||||||
|
**label** | **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)
|
||||||
|
|
||||||
|
|
||||||
19
manager_api/doc/ResourceDetailDTO.md
Normal file
19
manager_api/doc/ResourceDetailDTO.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# managerapi.model.ResourceDetailDTO
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**id** | **String** | | [optional]
|
||||||
|
**type** | [**ResourceType**](ResourceType.md) | | [optional]
|
||||||
|
**label** | **String** | | [optional]
|
||||||
|
**dateCreation** | [**DateTime**](DateTime.md) | | [optional]
|
||||||
|
**data** | **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)
|
||||||
|
|
||||||
|
|
||||||
14
manager_api/doc/ResourceType.md
Normal file
14
manager_api/doc/ResourceType.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# managerapi.model.ResourceType
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:managerapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ part 'auth/http_bearer_auth.dart';
|
|||||||
part 'api/authentication_api.dart';
|
part 'api/authentication_api.dart';
|
||||||
part 'api/configuration_api.dart';
|
part 'api/configuration_api.dart';
|
||||||
part 'api/device_api.dart';
|
part 'api/device_api.dart';
|
||||||
part 'api/ressource_api.dart';
|
part 'api/resource_api.dart';
|
||||||
part 'api/section_api.dart';
|
part 'api/section_api.dart';
|
||||||
part 'api/user_api.dart';
|
part 'api/user_api.dart';
|
||||||
|
|
||||||
@ -39,9 +39,9 @@ part 'model/device_dto.dart';
|
|||||||
part 'model/device_detail_dto.dart';
|
part 'model/device_detail_dto.dart';
|
||||||
part 'model/device_detail_dto_all_of.dart';
|
part 'model/device_detail_dto_all_of.dart';
|
||||||
part 'model/login_dto.dart';
|
part 'model/login_dto.dart';
|
||||||
part 'model/ressource_dto.dart';
|
part 'model/resource_dto.dart';
|
||||||
part 'model/ressource_detail_dto.dart';
|
part 'model/resource_detail_dto.dart';
|
||||||
part 'model/ressource_type.dart';
|
part 'model/resource_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';
|
||||||
|
|||||||
467
manager_api/lib/api/resource_api.dart
Normal file
467
manager_api/lib/api/resource_api.dart
Normal file
@ -0,0 +1,467 @@
|
|||||||
|
//
|
||||||
|
// 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 ResourceApi {
|
||||||
|
ResourceApi([ApiClient apiClient]) : apiClient = apiClient ?? defaultApiClient;
|
||||||
|
|
||||||
|
final ApiClient apiClient;
|
||||||
|
|
||||||
|
/// Performs an HTTP 'POST /api/Resource' operation and returns the [Response].
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [ResourceDetailDTO] resourceDetailDTO (required):
|
||||||
|
Future<Response> resourceCreateWithHttpInfo(ResourceDetailDTO resourceDetailDTO) async {
|
||||||
|
// Verify required params are set.
|
||||||
|
if (resourceDetailDTO == null) {
|
||||||
|
throw ApiException(HttpStatus.badRequest, 'Missing required param: resourceDetailDTO');
|
||||||
|
}
|
||||||
|
|
||||||
|
final path = r'/api/Resource';
|
||||||
|
|
||||||
|
Object postBody = resourceDetailDTO;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
final contentTypes = <String>['application/json'];
|
||||||
|
final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null;
|
||||||
|
final authNames = <String>['bearer'];
|
||||||
|
|
||||||
|
if (
|
||||||
|
nullableContentType != null &&
|
||||||
|
nullableContentType.toLowerCase().startsWith('multipart/form-data')
|
||||||
|
) {
|
||||||
|
bool hasFields = false;
|
||||||
|
final mp = MultipartRequest(null, null);
|
||||||
|
if (hasFields) {
|
||||||
|
postBody = mp;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
return await apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'POST',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
nullableContentType,
|
||||||
|
authNames,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [ResourceDetailDTO] resourceDetailDTO (required):
|
||||||
|
Future<ResourceDetailDTO> resourceCreate(ResourceDetailDTO resourceDetailDTO) async {
|
||||||
|
final response = await resourceCreateWithHttpInfo(resourceDetailDTO);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body != null && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return apiClient.deserialize(_decodeBodyBytes(response), 'ResourceDetailDTO') as ResourceDetailDTO;
|
||||||
|
}
|
||||||
|
return Future<ResourceDetailDTO>.value(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Performs an HTTP 'DELETE /api/Resource/{id}' operation and returns the [Response].
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
Future<Response> resourceDeleteWithHttpInfo(String id) async {
|
||||||
|
// Verify required params are set.
|
||||||
|
if (id == null) {
|
||||||
|
throw ApiException(HttpStatus.badRequest, 'Missing required param: id');
|
||||||
|
}
|
||||||
|
|
||||||
|
final path = r'/api/Resource/{id}'
|
||||||
|
.replaceAll('{' + 'id' + '}', id.toString());
|
||||||
|
|
||||||
|
Object postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
final contentTypes = <String>[];
|
||||||
|
final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null;
|
||||||
|
final authNames = <String>['bearer'];
|
||||||
|
|
||||||
|
if (
|
||||||
|
nullableContentType != null &&
|
||||||
|
nullableContentType.toLowerCase().startsWith('multipart/form-data')
|
||||||
|
) {
|
||||||
|
bool hasFields = false;
|
||||||
|
final mp = MultipartRequest(null, null);
|
||||||
|
if (hasFields) {
|
||||||
|
postBody = mp;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
return await apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'DELETE',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
nullableContentType,
|
||||||
|
authNames,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
Future<String> resourceDelete(String id) async {
|
||||||
|
final response = await resourceDeleteWithHttpInfo(id);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body != null && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return apiClient.deserialize(_decodeBodyBytes(response), 'String') as String;
|
||||||
|
}
|
||||||
|
return Future<String>.value(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Performs an HTTP 'GET /api/Resource' operation and returns the [Response].
|
||||||
|
Future<Response> resourceGetWithHttpInfo() async {
|
||||||
|
final path = r'/api/Resource';
|
||||||
|
|
||||||
|
Object postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
final contentTypes = <String>[];
|
||||||
|
final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null;
|
||||||
|
final authNames = <String>['bearer'];
|
||||||
|
|
||||||
|
if (
|
||||||
|
nullableContentType != null &&
|
||||||
|
nullableContentType.toLowerCase().startsWith('multipart/form-data')
|
||||||
|
) {
|
||||||
|
bool hasFields = false;
|
||||||
|
final mp = MultipartRequest(null, null);
|
||||||
|
if (hasFields) {
|
||||||
|
postBody = mp;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
return await apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
nullableContentType,
|
||||||
|
authNames,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<ResourceDTO>> resourceGet() async {
|
||||||
|
final response = await resourceGetWithHttpInfo();
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body != null && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return (apiClient.deserialize(_decodeBodyBytes(response), 'List<ResourceDTO>') as List)
|
||||||
|
.cast<ResourceDTO>()
|
||||||
|
.toList(growable: false);
|
||||||
|
}
|
||||||
|
return Future<List<ResourceDTO>>.value(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Performs an HTTP 'GET /api/Resource/{id}/detail' operation and returns the [Response].
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
Future<Response> resourceGetDetailWithHttpInfo(String id) async {
|
||||||
|
// Verify required params are set.
|
||||||
|
if (id == null) {
|
||||||
|
throw ApiException(HttpStatus.badRequest, 'Missing required param: id');
|
||||||
|
}
|
||||||
|
|
||||||
|
final path = r'/api/Resource/{id}/detail'
|
||||||
|
.replaceAll('{' + 'id' + '}', id.toString());
|
||||||
|
|
||||||
|
Object postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
final contentTypes = <String>[];
|
||||||
|
final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null;
|
||||||
|
final authNames = <String>['bearer'];
|
||||||
|
|
||||||
|
if (
|
||||||
|
nullableContentType != null &&
|
||||||
|
nullableContentType.toLowerCase().startsWith('multipart/form-data')
|
||||||
|
) {
|
||||||
|
bool hasFields = false;
|
||||||
|
final mp = MultipartRequest(null, null);
|
||||||
|
if (hasFields) {
|
||||||
|
postBody = mp;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
return await apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
nullableContentType,
|
||||||
|
authNames,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
Future<ResourceDetailDTO> resourceGetDetail(String id) async {
|
||||||
|
final response = await resourceGetDetailWithHttpInfo(id);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body != null && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return apiClient.deserialize(_decodeBodyBytes(response), 'ResourceDetailDTO') as ResourceDetailDTO;
|
||||||
|
}
|
||||||
|
return Future<ResourceDetailDTO>.value(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Performs an HTTP 'GET /api/Resource/{id}' operation and returns the [Response].
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
Future<Response> resourceShowWithHttpInfo(String id) async {
|
||||||
|
// Verify required params are set.
|
||||||
|
if (id == null) {
|
||||||
|
throw ApiException(HttpStatus.badRequest, 'Missing required param: id');
|
||||||
|
}
|
||||||
|
|
||||||
|
final path = r'/api/Resource/{id}'
|
||||||
|
.replaceAll('{' + 'id' + '}', id.toString());
|
||||||
|
|
||||||
|
Object postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
final contentTypes = <String>[];
|
||||||
|
final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null;
|
||||||
|
final authNames = <String>['bearer'];
|
||||||
|
|
||||||
|
if (
|
||||||
|
nullableContentType != null &&
|
||||||
|
nullableContentType.toLowerCase().startsWith('multipart/form-data')
|
||||||
|
) {
|
||||||
|
bool hasFields = false;
|
||||||
|
final mp = MultipartRequest(null, null);
|
||||||
|
if (hasFields) {
|
||||||
|
postBody = mp;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
return await apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
nullableContentType,
|
||||||
|
authNames,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
Future<MultipartFile> resourceShow(String id) async {
|
||||||
|
final response = await resourceShowWithHttpInfo(id);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body != null && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return apiClient.deserialize(_decodeBodyBytes(response), 'MultipartFile') as MultipartFile;
|
||||||
|
}
|
||||||
|
return Future<MultipartFile>.value(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Performs an HTTP 'PUT /api/Resource' operation and returns the [Response].
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [ResourceDetailDTO] resourceDetailDTO (required):
|
||||||
|
Future<Response> resourceUpdateWithHttpInfo(ResourceDetailDTO resourceDetailDTO) async {
|
||||||
|
// Verify required params are set.
|
||||||
|
if (resourceDetailDTO == null) {
|
||||||
|
throw ApiException(HttpStatus.badRequest, 'Missing required param: resourceDetailDTO');
|
||||||
|
}
|
||||||
|
|
||||||
|
final path = r'/api/Resource';
|
||||||
|
|
||||||
|
Object postBody = resourceDetailDTO;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
final contentTypes = <String>['application/json'];
|
||||||
|
final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null;
|
||||||
|
final authNames = <String>['bearer'];
|
||||||
|
|
||||||
|
if (
|
||||||
|
nullableContentType != null &&
|
||||||
|
nullableContentType.toLowerCase().startsWith('multipart/form-data')
|
||||||
|
) {
|
||||||
|
bool hasFields = false;
|
||||||
|
final mp = MultipartRequest(null, null);
|
||||||
|
if (hasFields) {
|
||||||
|
postBody = mp;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
return await apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'PUT',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
nullableContentType,
|
||||||
|
authNames,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [ResourceDetailDTO] resourceDetailDTO (required):
|
||||||
|
Future<ResourceDetailDTO> resourceUpdate(ResourceDetailDTO resourceDetailDTO) async {
|
||||||
|
final response = await resourceUpdateWithHttpInfo(resourceDetailDTO);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body != null && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return apiClient.deserialize(_decodeBodyBytes(response), 'ResourceDetailDTO') as ResourceDetailDTO;
|
||||||
|
}
|
||||||
|
return Future<ResourceDetailDTO>.value(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Performs an HTTP 'POST /api/Resource/upload' operation and returns the [Response].
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] label:
|
||||||
|
///
|
||||||
|
/// * [String] type:
|
||||||
|
Future<Response> resourceUploadWithHttpInfo({ String label, String type }) async {
|
||||||
|
// Verify required params are set.
|
||||||
|
|
||||||
|
final path = r'/api/Resource/upload';
|
||||||
|
|
||||||
|
Object postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
final contentTypes = <String>['multipart/form-data'];
|
||||||
|
final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null;
|
||||||
|
final authNames = <String>['bearer'];
|
||||||
|
|
||||||
|
if (
|
||||||
|
nullableContentType != null &&
|
||||||
|
nullableContentType.toLowerCase().startsWith('multipart/form-data')
|
||||||
|
) {
|
||||||
|
bool hasFields = false;
|
||||||
|
final mp = MultipartRequest(null, null);
|
||||||
|
if (label != null) {
|
||||||
|
hasFields = true;
|
||||||
|
mp.fields[r'label'] = parameterToString(label);
|
||||||
|
}
|
||||||
|
if (type != null) {
|
||||||
|
hasFields = true;
|
||||||
|
mp.fields[r'type'] = parameterToString(type);
|
||||||
|
}
|
||||||
|
if (hasFields) {
|
||||||
|
postBody = mp;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (label != null) {
|
||||||
|
formParams[r'label'] = parameterToString(label);
|
||||||
|
}
|
||||||
|
if (type != null) {
|
||||||
|
formParams[r'type'] = parameterToString(type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return await apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'POST',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
nullableContentType,
|
||||||
|
authNames,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] label:
|
||||||
|
///
|
||||||
|
/// * [String] type:
|
||||||
|
Future<String> resourceUpload({ String label, String type }) async {
|
||||||
|
final response = await resourceUploadWithHttpInfo( label: label, type: type );
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body != null && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return apiClient.deserialize(_decodeBodyBytes(response), 'String') as String;
|
||||||
|
}
|
||||||
|
return Future<String>.value(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -166,12 +166,12 @@ class ApiClient {
|
|||||||
return DeviceDetailDTOAllOf.fromJson(value);
|
return DeviceDetailDTOAllOf.fromJson(value);
|
||||||
case 'LoginDTO':
|
case 'LoginDTO':
|
||||||
return LoginDTO.fromJson(value);
|
return LoginDTO.fromJson(value);
|
||||||
case 'RessourceDTO':
|
case 'ResourceDTO':
|
||||||
return RessourceDTO.fromJson(value);
|
return ResourceDTO.fromJson(value);
|
||||||
case 'RessourceDetailDTO':
|
case 'ResourceDetailDTO':
|
||||||
return RessourceDetailDTO.fromJson(value);
|
return ResourceDetailDTO.fromJson(value);
|
||||||
case 'RessourceType':
|
case 'ResourceType':
|
||||||
return RessourceTypeTypeTransformer().decode(value);
|
return ResourceTypeTypeTransformer().decode(value);
|
||||||
|
|
||||||
case 'SectionDTO':
|
case 'SectionDTO':
|
||||||
return SectionDTO.fromJson(value);
|
return SectionDTO.fromJson(value);
|
||||||
|
|||||||
@ -58,8 +58,8 @@ String parameterToString(dynamic value) {
|
|||||||
if (value is DateTime) {
|
if (value is DateTime) {
|
||||||
return value.toUtc().toIso8601String();
|
return value.toUtc().toIso8601String();
|
||||||
}
|
}
|
||||||
if (value is RessourceType) {
|
if (value is ResourceType) {
|
||||||
return RessourceTypeTypeTransformer().encode(value).toString();
|
return ResourceTypeTypeTransformer().encode(value).toString();
|
||||||
}
|
}
|
||||||
if (value is SectionType) {
|
if (value is SectionType) {
|
||||||
return SectionTypeTypeTransformer().encode(value).toString();
|
return SectionTypeTypeTransformer().encode(value).toString();
|
||||||
|
|||||||
109
manager_api/lib/model/resource_detail_dto.dart
Normal file
109
manager_api/lib/model/resource_detail_dto.dart
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
//
|
||||||
|
// 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 ResourceDetailDTO {
|
||||||
|
/// Returns a new [ResourceDetailDTO] instance.
|
||||||
|
ResourceDetailDTO({
|
||||||
|
this.id,
|
||||||
|
this.type,
|
||||||
|
this.label,
|
||||||
|
this.dateCreation,
|
||||||
|
this.data,
|
||||||
|
});
|
||||||
|
|
||||||
|
String id;
|
||||||
|
|
||||||
|
ResourceType type;
|
||||||
|
|
||||||
|
String label;
|
||||||
|
|
||||||
|
DateTime dateCreation;
|
||||||
|
|
||||||
|
String data;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) => identical(this, other) || other is ResourceDetailDTO &&
|
||||||
|
other.id == id &&
|
||||||
|
other.type == type &&
|
||||||
|
other.label == label &&
|
||||||
|
other.dateCreation == dateCreation &&
|
||||||
|
other.data == data;
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode =>
|
||||||
|
(id == null ? 0 : id.hashCode) +
|
||||||
|
(type == null ? 0 : type.hashCode) +
|
||||||
|
(label == null ? 0 : label.hashCode) +
|
||||||
|
(dateCreation == null ? 0 : dateCreation.hashCode) +
|
||||||
|
(data == null ? 0 : data.hashCode);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => 'ResourceDetailDTO[id=$id, type=$type, label=$label, dateCreation=$dateCreation, data=$data]';
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final json = <String, dynamic>{};
|
||||||
|
if (id != null) {
|
||||||
|
json[r'id'] = id;
|
||||||
|
}
|
||||||
|
if (type != null) {
|
||||||
|
json[r'type'] = type;
|
||||||
|
}
|
||||||
|
if (label != null) {
|
||||||
|
json[r'label'] = label;
|
||||||
|
}
|
||||||
|
if (dateCreation != null) {
|
||||||
|
json[r'dateCreation'] = dateCreation.toUtc().toIso8601String();
|
||||||
|
}
|
||||||
|
if (data != null) {
|
||||||
|
json[r'data'] = data;
|
||||||
|
}
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns a new [ResourceDetailDTO] instance and imports its values from
|
||||||
|
/// [json] if it's non-null, null if [json] is null.
|
||||||
|
static ResourceDetailDTO fromJson(Map<String, dynamic> json) => json == null
|
||||||
|
? null
|
||||||
|
: ResourceDetailDTO(
|
||||||
|
id: json[r'id'],
|
||||||
|
type: ResourceType.fromJson(json[r'type']),
|
||||||
|
label: json[r'label'],
|
||||||
|
dateCreation: json[r'dateCreation'] == null
|
||||||
|
? null
|
||||||
|
: DateTime.parse(json[r'dateCreation']),
|
||||||
|
data: json[r'data'],
|
||||||
|
);
|
||||||
|
|
||||||
|
static List<ResourceDetailDTO> listFromJson(List<dynamic> json, {bool emptyIsNull, bool growable,}) =>
|
||||||
|
json == null || json.isEmpty
|
||||||
|
? true == emptyIsNull ? null : <ResourceDetailDTO>[]
|
||||||
|
: json.map((v) => ResourceDetailDTO.fromJson(v)).toList(growable: true == growable);
|
||||||
|
|
||||||
|
static Map<String, ResourceDetailDTO> mapFromJson(Map<String, dynamic> json) {
|
||||||
|
final map = <String, ResourceDetailDTO>{};
|
||||||
|
if (json != null && json.isNotEmpty) {
|
||||||
|
json.forEach((String key, dynamic v) => map[key] = ResourceDetailDTO.fromJson(v));
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
// maps a json object with a list of ResourceDetailDTO-objects as value to a dart map
|
||||||
|
static Map<String, List<ResourceDetailDTO>> mapListFromJson(Map<String, dynamic> json, {bool emptyIsNull, bool growable,}) {
|
||||||
|
final map = <String, List<ResourceDetailDTO>>{};
|
||||||
|
if (json != null && json.isNotEmpty) {
|
||||||
|
json.forEach((String key, dynamic v) {
|
||||||
|
map[key] = ResourceDetailDTO.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
89
manager_api/lib/model/resource_dto.dart
Normal file
89
manager_api/lib/model/resource_dto.dart
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
//
|
||||||
|
// 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 ResourceDTO {
|
||||||
|
/// Returns a new [ResourceDTO] instance.
|
||||||
|
ResourceDTO({
|
||||||
|
this.id,
|
||||||
|
this.type,
|
||||||
|
this.label,
|
||||||
|
});
|
||||||
|
|
||||||
|
String id;
|
||||||
|
|
||||||
|
ResourceType type;
|
||||||
|
|
||||||
|
String label;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) => identical(this, other) || other is ResourceDTO &&
|
||||||
|
other.id == id &&
|
||||||
|
other.type == type &&
|
||||||
|
other.label == label;
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode =>
|
||||||
|
(id == null ? 0 : id.hashCode) +
|
||||||
|
(type == null ? 0 : type.hashCode) +
|
||||||
|
(label == null ? 0 : label.hashCode);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => 'ResourceDTO[id=$id, type=$type, label=$label]';
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final json = <String, dynamic>{};
|
||||||
|
if (id != null) {
|
||||||
|
json[r'id'] = id;
|
||||||
|
}
|
||||||
|
if (type != null) {
|
||||||
|
json[r'type'] = type;
|
||||||
|
}
|
||||||
|
if (label != null) {
|
||||||
|
json[r'label'] = label;
|
||||||
|
}
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns a new [ResourceDTO] instance and imports its values from
|
||||||
|
/// [json] if it's non-null, null if [json] is null.
|
||||||
|
static ResourceDTO fromJson(Map<String, dynamic> json) => json == null
|
||||||
|
? null
|
||||||
|
: ResourceDTO(
|
||||||
|
id: json[r'id'],
|
||||||
|
type: ResourceType.fromJson(json[r'type']),
|
||||||
|
label: json[r'label'],
|
||||||
|
);
|
||||||
|
|
||||||
|
static List<ResourceDTO> listFromJson(List<dynamic> json, {bool emptyIsNull, bool growable,}) =>
|
||||||
|
json == null || json.isEmpty
|
||||||
|
? true == emptyIsNull ? null : <ResourceDTO>[]
|
||||||
|
: json.map((v) => ResourceDTO.fromJson(v)).toList(growable: true == growable);
|
||||||
|
|
||||||
|
static Map<String, ResourceDTO> mapFromJson(Map<String, dynamic> json) {
|
||||||
|
final map = <String, ResourceDTO>{};
|
||||||
|
if (json != null && json.isNotEmpty) {
|
||||||
|
json.forEach((String key, dynamic v) => map[key] = ResourceDTO.fromJson(v));
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
// maps a json object with a list of ResourceDTO-objects as value to a dart map
|
||||||
|
static Map<String, List<ResourceDTO>> mapListFromJson(Map<String, dynamic> json, {bool emptyIsNull, bool growable,}) {
|
||||||
|
final map = <String, List<ResourceDTO>>{};
|
||||||
|
if (json != null && json.isNotEmpty) {
|
||||||
|
json.forEach((String key, dynamic v) {
|
||||||
|
map[key] = ResourceDTO.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
82
manager_api/lib/model/resource_type.dart
Normal file
82
manager_api/lib/model/resource_type.dart
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
//
|
||||||
|
// 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 ResourceType {
|
||||||
|
/// Instantiate a new enum with the provided [value].
|
||||||
|
const ResourceType._(this.value);
|
||||||
|
|
||||||
|
/// The underlying value of this enum member.
|
||||||
|
final String value;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => value;
|
||||||
|
|
||||||
|
String toJson() => value;
|
||||||
|
|
||||||
|
static const image = ResourceType._(r'Image');
|
||||||
|
static const video = ResourceType._(r'Video');
|
||||||
|
static const imageUrl = ResourceType._(r'ImageUrl');
|
||||||
|
static const videoUrl = ResourceType._(r'VideoUrl');
|
||||||
|
|
||||||
|
/// List of all possible values in this [enum][ResourceType].
|
||||||
|
static const values = <ResourceType>[
|
||||||
|
image,
|
||||||
|
video,
|
||||||
|
imageUrl,
|
||||||
|
videoUrl,
|
||||||
|
];
|
||||||
|
|
||||||
|
static ResourceType fromJson(dynamic value) =>
|
||||||
|
ResourceTypeTypeTransformer().decode(value);
|
||||||
|
|
||||||
|
static List<ResourceType> listFromJson(List<dynamic> json, {bool emptyIsNull, bool growable,}) =>
|
||||||
|
json == null || json.isEmpty
|
||||||
|
? true == emptyIsNull ? null : <ResourceType>[]
|
||||||
|
: json
|
||||||
|
.map((value) => ResourceType.fromJson(value))
|
||||||
|
.toList(growable: true == growable);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Transformation class that can [encode] an instance of [ResourceType] to String,
|
||||||
|
/// and [decode] dynamic data back to [ResourceType].
|
||||||
|
class ResourceTypeTypeTransformer {
|
||||||
|
const ResourceTypeTypeTransformer._();
|
||||||
|
|
||||||
|
factory ResourceTypeTypeTransformer() => _instance ??= ResourceTypeTypeTransformer._();
|
||||||
|
|
||||||
|
String encode(ResourceType data) => data.value;
|
||||||
|
|
||||||
|
/// Decodes a [dynamic value][data] to a ResourceType.
|
||||||
|
///
|
||||||
|
/// If [allowNull] is true and the [dynamic value][data] cannot be decoded successfully,
|
||||||
|
/// then null is returned. However, if [allowNull] is false and the [dynamic value][data]
|
||||||
|
/// cannot be decoded successfully, then an [UnimplementedError] is thrown.
|
||||||
|
///
|
||||||
|
/// The [allowNull] is very handy when an API changes and a new enum value is added or removed,
|
||||||
|
/// and users are still using an old app with the old code.
|
||||||
|
ResourceType decode(dynamic data, {bool allowNull}) {
|
||||||
|
switch (data) {
|
||||||
|
case r'Image': return ResourceType.image;
|
||||||
|
case r'Video': return ResourceType.video;
|
||||||
|
case r'ImageUrl': return ResourceType.imageUrl;
|
||||||
|
case r'VideoUrl': return ResourceType.videoUrl;
|
||||||
|
default:
|
||||||
|
if (allowNull == false) {
|
||||||
|
throw ArgumentError('Unknown enum value to decode: $data');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Singleton [ResourceTypeTypeTransformer] instance.
|
||||||
|
static ResourceTypeTypeTransformer _instance;
|
||||||
|
}
|
||||||
@ -350,11 +350,11 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
security:
|
security:
|
||||||
- bearer: []
|
- bearer: []
|
||||||
/api/Ressource:
|
/api/Resource:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- Ressource
|
- Resource
|
||||||
operationId: Ressource_Get
|
operationId: Resource_Get
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: ''
|
description: ''
|
||||||
@ -363,7 +363,7 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/RessourceDTO'
|
$ref: '#/components/schemas/ResourceDTO'
|
||||||
'500':
|
'500':
|
||||||
description: ''
|
description: ''
|
||||||
content:
|
content:
|
||||||
@ -374,14 +374,14 @@ paths:
|
|||||||
- bearer: []
|
- bearer: []
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
- Ressource
|
- Resource
|
||||||
operationId: Ressource_Create
|
operationId: Resource_Create
|
||||||
requestBody:
|
requestBody:
|
||||||
x-name: newRessource
|
x-name: newResource
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/RessourceDetailDTO'
|
$ref: '#/components/schemas/ResourceDetailDTO'
|
||||||
required: true
|
required: true
|
||||||
x-position: 1
|
x-position: 1
|
||||||
responses:
|
responses:
|
||||||
@ -390,7 +390,7 @@ paths:
|
|||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/RessourceDetailDTO'
|
$ref: '#/components/schemas/ResourceDetailDTO'
|
||||||
'400':
|
'400':
|
||||||
description: ''
|
description: ''
|
||||||
content:
|
content:
|
||||||
@ -413,14 +413,14 @@ paths:
|
|||||||
- bearer: []
|
- bearer: []
|
||||||
put:
|
put:
|
||||||
tags:
|
tags:
|
||||||
- Ressource
|
- Resource
|
||||||
operationId: Ressource_Update
|
operationId: Resource_Update
|
||||||
requestBody:
|
requestBody:
|
||||||
x-name: updatedRessource
|
x-name: updatedResource
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/RessourceDetailDTO'
|
$ref: '#/components/schemas/ResourceDetailDTO'
|
||||||
required: true
|
required: true
|
||||||
x-position: 1
|
x-position: 1
|
||||||
responses:
|
responses:
|
||||||
@ -429,7 +429,7 @@ paths:
|
|||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/RessourceDetailDTO'
|
$ref: '#/components/schemas/ResourceDetailDTO'
|
||||||
'400':
|
'400':
|
||||||
description: ''
|
description: ''
|
||||||
content:
|
content:
|
||||||
@ -450,11 +450,11 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
security:
|
security:
|
||||||
- bearer: []
|
- bearer: []
|
||||||
'/api/Ressource/{id}/detail':
|
'/api/Resource/{id}/detail':
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- Ressource
|
- Resource
|
||||||
operationId: Ressource_GetDetail
|
operationId: Resource_GetDetail
|
||||||
parameters:
|
parameters:
|
||||||
- name: id
|
- name: id
|
||||||
in: path
|
in: path
|
||||||
@ -469,7 +469,7 @@ paths:
|
|||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/RessourceDetailDTO'
|
$ref: '#/components/schemas/ResourceDetailDTO'
|
||||||
'404':
|
'404':
|
||||||
description: ''
|
description: ''
|
||||||
content:
|
content:
|
||||||
@ -482,11 +482,11 @@ paths:
|
|||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
'/api/Ressource/{id}':
|
'/api/Resource/{id}':
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- Ressource
|
- Resource
|
||||||
operationId: Ressource_Show
|
operationId: Resource_Show
|
||||||
parameters:
|
parameters:
|
||||||
- name: id
|
- name: id
|
||||||
in: path
|
in: path
|
||||||
@ -517,8 +517,8 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
delete:
|
delete:
|
||||||
tags:
|
tags:
|
||||||
- Ressource
|
- Resource
|
||||||
operationId: Ressource_Delete
|
operationId: Resource_Delete
|
||||||
parameters:
|
parameters:
|
||||||
- name: id
|
- name: id
|
||||||
in: path
|
in: path
|
||||||
@ -554,6 +554,41 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
security:
|
security:
|
||||||
- bearer: []
|
- bearer: []
|
||||||
|
/api/Resource/upload:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- Resource
|
||||||
|
operationId: Resource_Upload
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
multipart/form-data:
|
||||||
|
schema:
|
||||||
|
properties:
|
||||||
|
label:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: ''
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
'404':
|
||||||
|
description: ''
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
'500':
|
||||||
|
description: ''
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
/api/Section:
|
/api/Section:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
@ -1146,7 +1181,7 @@ components:
|
|||||||
lastBatteryLevel:
|
lastBatteryLevel:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
RessourceDTO:
|
ResourceDTO:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
properties:
|
properties:
|
||||||
@ -1154,11 +1189,11 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
type:
|
type:
|
||||||
$ref: '#/components/schemas/RessourceType'
|
$ref: '#/components/schemas/ResourceType'
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
RessourceType:
|
ResourceType:
|
||||||
type: string
|
type: string
|
||||||
description: ''
|
description: ''
|
||||||
x-enumNames:
|
x-enumNames:
|
||||||
@ -1171,7 +1206,7 @@ components:
|
|||||||
- Video
|
- Video
|
||||||
- ImageUrl
|
- ImageUrl
|
||||||
- VideoUrl
|
- VideoUrl
|
||||||
RessourceDetailDTO:
|
ResourceDetailDTO:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
properties:
|
properties:
|
||||||
@ -1179,7 +1214,7 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
type:
|
type:
|
||||||
$ref: '#/components/schemas/RessourceType'
|
$ref: '#/components/schemas/ResourceType'
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
@ -1343,8 +1378,8 @@ tags:
|
|||||||
description: Configuration management
|
description: Configuration management
|
||||||
- name: Device
|
- name: Device
|
||||||
description: Device management
|
description: Device management
|
||||||
- name: Ressource
|
- name: Resource
|
||||||
description: Ressource management
|
description: Resource management
|
||||||
- name: Section
|
- name: Section
|
||||||
description: Section management
|
description: Section management
|
||||||
- name: User
|
- name: User
|
||||||
|
|||||||
55
manager_api/test/resource_api_test.dart
Normal file
55
manager_api/test/resource_api_test.dart
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
//
|
||||||
|
// 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 ResourceApi
|
||||||
|
void main() {
|
||||||
|
final instance = ResourceApi();
|
||||||
|
|
||||||
|
group('tests for ResourceApi', () {
|
||||||
|
//Future<ResourceDetailDTO> resourceCreate(ResourceDetailDTO resourceDetailDTO) async
|
||||||
|
test('test resourceCreate', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
//Future<String> resourceDelete(String id) async
|
||||||
|
test('test resourceDelete', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
//Future<List<ResourceDTO>> resourceGet() async
|
||||||
|
test('test resourceGet', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
//Future<ResourceDetailDTO> resourceGetDetail(String id) async
|
||||||
|
test('test resourceGetDetail', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
//Future<MultipartFile> resourceShow(String id) async
|
||||||
|
test('test resourceShow', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
//Future<ResourceDetailDTO> resourceUpdate(ResourceDetailDTO resourceDetailDTO) async
|
||||||
|
test('test resourceUpdate', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
//Future<String> resourceUpload(ResourceDetailDTO resourceDetailDTO) async
|
||||||
|
test('test resourceUpload', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
46
manager_api/test/resource_detail_dto_test.dart
Normal file
46
manager_api/test/resource_detail_dto_test.dart
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
//
|
||||||
|
// 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 ResourceDetailDTO
|
||||||
|
void main() {
|
||||||
|
final instance = ResourceDetailDTO();
|
||||||
|
|
||||||
|
group('test ResourceDetailDTO', () {
|
||||||
|
// String id
|
||||||
|
test('to test the property `id`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
// RessourceType type
|
||||||
|
test('to test the property `type`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
// String label
|
||||||
|
test('to test the property `label`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
// DateTime dateCreation
|
||||||
|
test('to test the property `dateCreation`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
// String data
|
||||||
|
test('to test the property `data`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
36
manager_api/test/resource_dto_test.dart
Normal file
36
manager_api/test/resource_dto_test.dart
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
//
|
||||||
|
// 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 ResourceDTO
|
||||||
|
void main() {
|
||||||
|
final instance = ResourceDTO();
|
||||||
|
|
||||||
|
group('test ResourceDTO', () {
|
||||||
|
// String id
|
||||||
|
test('to test the property `id`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
// RessourceType type
|
||||||
|
test('to test the property `type`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
// String label
|
||||||
|
test('to test the property `label`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
20
manager_api/test/resource_type_test.dart
Normal file
20
manager_api/test/resource_type_test.dart
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
//
|
||||||
|
// 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 ResourceType
|
||||||
|
void main() {
|
||||||
|
|
||||||
|
group('test ResourceType', () {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
108
pubspec.lock
108
pubspec.lock
@ -8,6 +8,13 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.5.0"
|
version: "2.5.0"
|
||||||
|
audio_video_progress_bar:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: audio_video_progress_bar
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "0.3.2"
|
||||||
auto_size_text:
|
auto_size_text:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -64,6 +71,13 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.3"
|
version: "1.0.3"
|
||||||
|
dart_vlc:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: dart_vlc
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "0.0.6"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -78,13 +92,13 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
file_picker:
|
file:
|
||||||
dependency: "direct main"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file_picker
|
name: file
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "6.1.0"
|
||||||
filepicker_windows:
|
filepicker_windows:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -104,13 +118,6 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.0"
|
version: "0.4.0"
|
||||||
flutter_plugin_android_lifecycle:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: flutter_plugin_android_lifecycle
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.1"
|
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -198,6 +205,41 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.0"
|
version: "1.8.0"
|
||||||
|
path_provider:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: path_provider
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
|
path_provider_linux:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: path_provider_linux
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
|
path_provider_macos:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: path_provider_macos
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
|
path_provider_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: path_provider_platform_interface
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
|
path_provider_windows:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: path_provider_windows
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
pedantic:
|
pedantic:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -205,6 +247,13 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.11.0"
|
version: "1.11.0"
|
||||||
|
platform:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: platform
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.0"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -212,6 +261,13 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "2.0.0"
|
||||||
|
process:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: process
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "4.2.1"
|
||||||
provider:
|
provider:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -287,6 +343,27 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
|
video_player:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: video_player
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.1"
|
||||||
|
video_player_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: video_player_platform_interface
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "4.1.0"
|
||||||
|
video_player_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: video_player_web
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
win32:
|
win32:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -294,6 +371,13 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.5"
|
version: "2.0.5"
|
||||||
|
xdg_directories:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: xdg_directories
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "0.2.0"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.12.0 <3.0.0"
|
dart: ">=2.12.0 <3.0.0"
|
||||||
flutter: ">=1.20.0"
|
flutter: ">=2.0.0"
|
||||||
|
|||||||
@ -33,6 +33,8 @@ dependencies:
|
|||||||
convert: ^3.0.0
|
convert: ^3.0.0
|
||||||
collection: any
|
collection: any
|
||||||
filepicker_windows: ^2.0.0
|
filepicker_windows: ^2.0.0
|
||||||
|
dart_vlc: ^0.0.6
|
||||||
|
video_player: ^2.1.1
|
||||||
managerapi:
|
managerapi:
|
||||||
path: manager_api
|
path: manager_api
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,9 @@
|
|||||||
|
|
||||||
#include "generated_plugin_registrant.h"
|
#include "generated_plugin_registrant.h"
|
||||||
|
|
||||||
|
#include <dart_vlc/dart_vlc_plugin.h>
|
||||||
|
|
||||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||||
|
DartVlcPluginRegisterWithRegistrar(
|
||||||
|
registry->GetRegistrarForPlugin("DartVlcPlugin"));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
list(APPEND FLUTTER_PLUGIN_LIST
|
list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
|
dart_vlc
|
||||||
)
|
)
|
||||||
|
|
||||||
set(PLUGIN_BUNDLED_LIBRARIES)
|
set(PLUGIN_BUNDLED_LIBRARIES)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user