Skip to content
Snippets Groups Projects
main.dart 11.1 KiB
Newer Older
Maximilian Betz's avatar
Maximilian Betz committed
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'data_model.dart';
class EventStoreInstance extends EventStoreBase {
  static final EventStoreInstance _instance = EventStoreInstance._internal();

  factory EventStoreInstance() {
  EventStoreInstance._internal() {
Maximilian Betz's avatar
Maximilian Betz committed
void main() {
  //Add some dummy events to eventstore
  EventStoreInstance events = EventStoreInstance();
  events.store.add(Event.fromJson({
    'id': 8311,
    'urn': 'station:neumayer_iii:awi_snow_sampler_1',
    'label': 'SML_KO21_SC01',
    'type': 'Deployment',
    'description': 'Remi tool Tag1 1 Traverse',
    'status': 'PENDING'
  }));
  events.store.add(Event.fromJson({
    'id': 8311,
    'urn': 'station:neumayer_iii:awi_snow_sampler_1',
    'label': 'SML_KO21_SC01',
    'type': 'Deployment',
    'description': 'Remi tool Tag1 1 Traverse',
    'status': 'PENDING'
  }));
  events.store.add(Event.fromJson({
    'id': 8311,
    'urn': 'station:neumayer_iii:awi_snow_sampler_1',
    'label': 'SML_KO21_SC01',
    'type': 'Deployment',
    'description': 'Remi tool Tag1 1 Traverse',
    'status': 'PENDING'
  }));
  events.store.add(Event.fromJson({
    'id': 8311,
    'urn': 'station:neumayer_iii:awi_snow_sampler_1',
    'label': 'SML_KO21_SC01',
    'type': 'Deployment',
    'description': 'Remi tool Tag1 1 Traverse',
    'status': 'PENDING'
  }));
Maximilian Betz's avatar
Maximilian Betz committed
  runApp(MaterialApp(
    title: 'Mobile Event Log',
    theme: ThemeData(
      primarySwatch: Colors.blue,
    ),
    initialRoute: '/',
    routes: {
      '/': (context) => Overview(),
      '/second': (context) => AddEvent(),
      '/third': (context) => ViewEvents(),
      '/forth': (context) => Configuration(),
    },
  ));
}

class Overview extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Mobile Event Log')),
      body: Center(
          child: Column(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        children: <Widget>[
          ElevatedButton(
            child: const Text('Add Event'),
            onPressed: () {
              Navigator.pushNamed(context, '/second');
            },
          ),
          ElevatedButton(
            child: const Text('View Added Events'),
            onPressed: () {
              Navigator.pushNamed(context, '/third');
            },
          ),
          ElevatedButton(
            child: const Text('Configuration'),
            onPressed: () {
              Navigator.pushNamed(context, '/forth');
            },
          ),
        ],
      )),
    );
  }
}

class AddEvent extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("Add Event")),
      body:
          Column(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: <Widget>[
                TextFormField(
                  decoration: InputDecoration(
                      labelText: 'Label'
                  ),
                ),
                DropdownButtonFormField(
                    decoration: InputDecoration(
                      labelText: 'Event Type',
                    ),
                    items: [
                      DropdownMenuItem(
                        child: Text('Calibration'),
                        value: 'Calibration',
                      ),
                      DropdownMenuItem(
                        child: Text('Information'),
                        value: 'Information',
                      )
                    ],
                    onChanged: (value) {

                    }
                ),
                DropdownButtonFormField(
                  decoration: InputDecoration(
                    labelText: 'URN',
                  ),
                    items: [
                      DropdownMenuItem(
                          child: Text('ADCP'),
                          value: 'ADCP',
                      ),
                      DropdownMenuItem(
                          child: Text('EM712'),
                          value: 'EM712',
                      )
                    ],
                    onChanged: (value) {

                    }
                ),
                TextFormField(
                  decoration: InputDecoration(
                      labelText: 'Description'
                  ),
                ),
                TextFormField(
                  decoration: InputDecoration(
                      labelText: 'Latitude'
                  ),
                ),
                TextFormField(
                  decoration: InputDecoration(
                      labelText: 'Longitude'
                  ),
                ),
                TextFormField(
                  decoration: InputDecoration(
                      labelText: 'Elevation'
                  ),
                )
              ]),
Maximilian Betz's avatar
Maximilian Betz committed
      bottomNavigationBar: Row(
        mainAxisAlignment: MainAxisAlignment.end,
        children: const [
          FloatingActionButton(
            heroTag: null,
            onPressed: null,
            tooltip: 'Add Event locally',
            child: Icon(Icons.add),
          )
        ],
      ),
    );
  }
}

class ViewEvents extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // Get singleton to access locally stored events:
    final EventStoreInstance events = EventStoreInstance();
Maximilian Betz's avatar
Maximilian Betz committed
    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(
                  'Status',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
            ],
            rows: <DataRow>[
              for (var event in events.store)
                DataRow(
                  cells: <DataCell>[
                    DataCell(Text(event.id.toString())),
                    DataCell(Text(event.urn)),
                    DataCell(
                      TextFormField(
                        initialValue: event.label,
                        onFieldSubmitted: (val) {
                          event.label = val; //Update Database
                        },
                      ),
                    ),
                    DataCell(Text(event.type)),
                    DataCell(
                      TextFormField(
                        initialValue: event.description,
                        onFieldSubmitted: (val) {
                          event.description = val; //Update Database
                        },
                      ),
                    ),
                    DataCell(
                      DropdownButtonFormField(
                        //value: Text('abe'),
                        items: <DropdownMenuItem>[
                          DropdownMenuItem(
                            child: Text('abs'),
                            value: Text('1'),
                          ),
                          DropdownMenuItem(
                            child: Text('abc'),
                            value: Text('1'),
                          ),
                        ],
                        onChanged: null,
                      ),
                    ),
                  ],
                ),
Maximilian Betz's avatar
Maximilian Betz committed
        ),
      ),
    );
  }
}

class Configuration extends StatefulWidget {
  @override
  State<Configuration> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<Configuration> {
  int _counter = 0;
  int _factor = 1;

  String selectedValue = '1';
  var available_items = [
    '1',
    '10',
    '100',
  ];

  late Future<String> eventTypes;

  @override
  void initState() {
    super.initState();
  }

  void _incrementCounter() {
    setState(() {
      _counter = _counter + _factor;
    });
  }

  void _decrementCounter() {
    setState(() {
      _counter = _counter - _factor;
    });
  }

  void _resetCounter() {
    setState(() {
      _counter = 0;
    });
  }

  void _getCollections() {
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Configuration'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline2,
            ),
            DropdownButton(
              value: selectedValue,
              icon: const Icon(Icons.keyboard_arrow_down),
              items: available_items.map((String available_items) {
                return DropdownMenuItem(
                  value: available_items,
                  child: Text(available_items),
                );
              }).toList(),
              onChanged: (String? newValue) {
                setState(() {
                  selectedValue = newValue!;
                  _factor = int.parse(selectedValue);
                });
              },
            ),
            Text('blabla'),
          ],
        ),
      ),
      bottomNavigationBar: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          FloatingActionButton(
            heroTag: null,
            onPressed: _incrementCounter,
            tooltip: 'Increment',
            child: const Icon(Icons.add),
          ),
          FloatingActionButton(
            heroTag: null,
            onPressed: _decrementCounter,
            tooltip: 'Decrement',
            child: const Text('-'),
          ),
          FloatingActionButton(
            heroTag: null,
            onPressed: _resetCounter,
            tooltip: 'Reset to 0',
            child: const Icon(Icons.delete),
          ),
          FloatingActionButton(
            heroTag: null,
            onPressed: _getCollections,
            tooltip: 'Reset to 0',
            child: const Text('Update'),
          ),
        ],
      ),
    );
  }
}