Skip to content
Snippets Groups Projects
viewevents.dart 7.79 KiB
Newer Older
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'datamodel.dart';
import 'package:http/http.dart' as http;

Future<bool> syncEvents() async {
  final EventStoreInstance events = EventStoreInstance();

  String base_url = 'https://sandbox.sensor.awi.de/rest/sensors/events/putEvent/';
  String url = '';

  debugPrint('Number of Events: ' + events.events.length.toString());
  debugPrint('Pending Events:');
  var index = 0;
  for (var event in events.events){
    if (event.status == 'PENDING') {
      debugPrint('Idx: ' + index.toString() + ' ' + event.toSensorJson().toString());
      index++;

      url = base_url + event.id.toString() + '?createVersion=false';
      debugPrint('XXX ' + Uri.parse(url).toString());
      final response = await http.put(Uri.parse(url),


        headers: {
          "Content-Type": "application/json",
          "Cookie": "x-auth-token=72d9d4d20a33f87edca7e1ba01ce8db8"
        },
        body: event.toSensorJson().toString(),
        encoding: Encoding.getByName("utf-8"),
      );

      if (response.statusCode == 200) {
        debugPrint('put success');

        debugPrint(response.body.toString());
        debugPrint(response.headers.toString());
        debugPrint(response.headers['set-cookie']);


      } else {
        debugPrint('Header: ' + response.headers.toString());
        debugPrint('Body: ' + response.body.toString());
        debugPrint('StatusCode: ' + response.statusCode.toString());
        throw Exception('Failed to put.');

class ViewEvents extends StatelessWidget {
Maximilian Betz's avatar
Maximilian Betz committed
  const ViewEvents({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    // Get singleton to access locally stored events:
    final EventStoreInstance events = EventStoreInstance();
    return Scaffold(
      appBar: AppBar(
        title: const Text("View Added Events"),
      ),
      body: SingleChildScrollView(
        scrollDirection: Axis.horizontal,
        child: SingleChildScrollView(
          scrollDirection: Axis.vertical,
          child: DataTable(
            columns: const <DataColumn>[
              DataColumn(
                label: Text(
                  'Id',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
              DataColumn(
                label: Text(
                  'URN',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
              DataColumn(
                label: Text(
                  'Label',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
              DataColumn(
                label: Text(
                  'Type',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
              DataColumn(
                label: Text(
                  'Description',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
              DataColumn(
                label: Text(
                  'StartDate',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
              DataColumn(
                label: Text(
                  'EndDate',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
              DataColumn(
                label: Text(
                  'Latitude',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
              DataColumn(
                label: Text(
                  'Longitude',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
              DataColumn(
                label: Text(
                  'Elevation',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
              DataColumn(
                label: Text(
                  'Status',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
            ],
            rows: <DataRow>[
              for (var event in events.events)
                DataRow(
                  cells: <DataCell>[
                    DataCell(Text(event.id.toString())),
                    DataCell(Text(event.urn)),
                    DataCell(
                      TextFormField(
                        readOnly: true,
                        initialValue: event.label,
                        onFieldSubmitted: (val) {
                          event.label = val; //Update Database
                        },
                      ),
                    ),
                    DataCell(Text(event.type)),
                    DataCell(
                      TextFormField(
                        readOnly: true,
                        initialValue: event.description,
                        onFieldSubmitted: (val) {
                          event.description = val; //Update Database
                        },
                      ),
                    ),
                    DataCell(Text(event.startDate)),
                    DataCell(Text(event.endDate)),
                      TextFormField(
                        readOnly: true,
                        initialValue: event.latitude,
                        onFieldSubmitted: (val) {
                          event.latitude = val; //Update Database
                        },
                      ),
                    ),
                    DataCell(
                      TextFormField(
                        readOnly: true,
                        initialValue: event.longitude,
                        onFieldSubmitted: (val) {
                          event.longitude = val; //Update Database
                        },
                      ),
                    ),
                    DataCell(
                      TextFormField(
                        readOnly: true,
                        initialValue: event.elevation,
                        onFieldSubmitted: (val) {
                          event.elevation = val; //Update Database
                        },
                      ),
                    ),
                    DataCell(
                      TextFormField(
                        readOnly: true,
                        initialValue: event.status,
                        onFieldSubmitted: (val) {
                          event.status = val; //Update Database
                        },
      bottomNavigationBar: Row(
        mainAxisAlignment: MainAxisAlignment.end,
        children: [
          FloatingActionButton.extended(
            heroTag: null,
            tooltip: 'Upload Events',
            icon: null,
            label: const Text('Sync'),
            onPressed: () {
              //showDialog(
              //  context: context,
              //  builder: (BuildContext context) => _buildPopupDialog(context),
              //);
Widget _buildPopupDialog(BuildContext context) {
  return AlertDialog(
    title: const Text('Popup example'),
    content: Column(
      mainAxisSize: MainAxisSize.min,
      crossAxisAlignment: CrossAxisAlignment.start,
      children: const <Widget>[
        Text("Hello"),
      ],
    ),
    actions: <Widget>[
      FlatButton(
        onPressed: () {
          Navigator.of(context).pop();
        },
        textColor: Theme.of(context).primaryColor,
        child: const Text('Close'),
      ),
    ],
  );
}
//TODO: allow editing fields here. Check validation of input value!