Skip to content

Commit

Permalink
Merge pull request #48 from atsign-foundation/feat/edit_receivers
Browse files Browse the repository at this point in the history
feat: edit receivers
  • Loading branch information
nickelskevin authored Oct 4, 2022
2 parents 7a4f321 + 7effbd6 commit 406bf10
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 63 deletions.
27 changes: 18 additions & 9 deletions flutter/iot_receiver/lib/forms/receiver_form.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ import 'package:auto_size_text/auto_size_text.dart';

// Some Form templates to reuse in New and Edit for devices

FormBuilderDropdown receiverDeviceSelector(BuildContext context, items) {
FormBuilderDropdown receiverDeviceSelector(BuildContext context, items,
{dynamic initialValue}
) {
return FormBuilderDropdown(
name: "device_selector",
items: items,
initialValue: initialValue,
decoration: const InputDecoration(
// labelText: 'Select Device',
// labelStyle: TextStyle(fontWeight: FontWeight.bold),
Expand All @@ -18,9 +21,10 @@ FormBuilderDropdown receiverDeviceSelector(BuildContext context, items) {
}

FormBuilderTextField receiverAtsignForm(
BuildContext context, String initialValue) {
BuildContext context, {String? initialValue}
) {
return FormBuilderTextField(
initialValue: initialValue.toString(),
initialValue: initialValue?.toString(),
name: '@receiver',
decoration: const InputDecoration(
labelText: 'Receiver\'s atSign',
Expand All @@ -33,9 +37,10 @@ FormBuilderTextField receiverAtsignForm(
}

FormBuilderTextField receiverShortnameForm(
BuildContext context, String initialValue) {
BuildContext context, {String? initialValue}
) {
return FormBuilderTextField(
initialValue: initialValue.toString(),
initialValue: initialValue?.toString(),
name: 'shortName',
decoration: const InputDecoration(
labelText: 'Patient ID',
Expand All @@ -47,22 +52,26 @@ FormBuilderTextField receiverShortnameForm(
style: const TextStyle(fontSize: 20, letterSpacing: 5));
}

FormBuilderCheckbox sendHRForm(BuildContext context, String initialValue) {
FormBuilderCheckbox sendHRForm(BuildContext context,
{bool? initialValue}
) {
return FormBuilderCheckbox(
name: 'sendHR',
title: const Text('Send Heart Rate',
style: TextStyle(fontWeight: FontWeight.bold)),
initialValue: false,
initialValue: initialValue ?? false,
tristate: false,
);
}

FormBuilderCheckbox sendO2Form(BuildContext context, String initialValue) {
FormBuilderCheckbox sendO2Form(BuildContext context,
{bool? initialValue}
) {
return FormBuilderCheckbox(
name: 'sendO2',
title: const Text('Send Oxygen Saturation',
style: TextStyle(fontWeight: FontWeight.bold)),
initialValue: false,
initialValue: initialValue ?? false,
tristate: false,
);
}
Expand Down
102 changes: 55 additions & 47 deletions flutter/iot_receiver/lib/screens/receivers_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -64,54 +64,62 @@ class _ReceiversScreenState extends State<ReceiversScreen> {
padding: EdgeInsets.only(right: 16),
child: Icon(Icons.delete),
));
return Dismissible(
key: Key(receiver.receiverAtsign),
background: Container(
color: Colors.red,
child: align,
),
confirmDismiss: (direction) async {
if (direction == DismissDirection.startToEnd) {
return false;
} else {
bool delete = true;
final snackbarController =
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
'Delete ${receiver.receiverAtsign} ?'),
action: SnackBarAction(
label: 'Cancel',
onPressed: () => delete = false),
),
);
await snackbarController.closed;
return delete;
}
},
onDismissed: (_) async {
hrO2ReceiverList.remove(receiver);
await _hrO2DataService.deleteReceiver(receiver);
setState(() {});
return GestureDetector(
onTap: () async{
await Navigator.push(
context,
MaterialPageRoute(builder: (context) => NewHrO2Receiver(hrO2Receiver: receiver,)),
);
},
child: ListTile(
shape: RoundedRectangleBorder(
side: const BorderSide(
color: Colors.blue, width: 1),
borderRadius: BorderRadius.circular(10)),
title:
Text(hrO2ReceiverList[index].receiverAtsign),
subtitle: Text((hrO2ReceiverList[index].sendHR
? "sending heart rate"
: "") +
(hrO2ReceiverList[index].sendHR &&
hrO2ReceiverList[index].sendO2
? ", and "
: "") +
(hrO2ReceiverList[index].sendO2
? "sending o2 saturation"
: "")),
// trailing: const Icon(Icons.navigate_next),
child: Dismissible(
key: Key(receiver.receiverAtsign),
background: Container(
color: Colors.red,
child: align,
),
confirmDismiss: (direction) async {
if (direction == DismissDirection.startToEnd) {
return false;
} else {
bool delete = true;
final snackbarController =
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
'Delete ${receiver.receiverAtsign} ?'),
action: SnackBarAction(
label: 'Cancel',
onPressed: () => delete = false),
),
);
await snackbarController.closed;
return delete;
}
},
onDismissed: (_) async {
hrO2ReceiverList.remove(receiver);
await _hrO2DataService.deleteReceiver(receiver);
setState(() {});
},
child: ListTile(
shape: RoundedRectangleBorder(
side: const BorderSide(
color: Colors.blue, width: 1),
borderRadius: BorderRadius.circular(10)),
title:
Text(hrO2ReceiverList[index].receiverAtsign),
subtitle: Text((hrO2ReceiverList[index].sendHR
? "sending heart rate"
: "") +
(hrO2ReceiverList[index].sendHR &&
hrO2ReceiverList[index].sendO2
? ", and "
: "") +
(hrO2ReceiverList[index].sendO2
? "sending o2 saturation"
: "")),
// trailing: const Icon(Icons.navigate_next),
),
),
);
}),
Expand Down
2 changes: 1 addition & 1 deletion flutter/iot_receiver/lib/services/hro2_data_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ class Hro2DataService {
HrO2Receiver rec = HrO2Receiver.fromJson(atKeyString);
if (rec.receiverAtsign == hrO2Receiver.receiverAtsign) {
_logger.info('deleteReceiver deleting ${hrO2Receiver.receiverAtsign}\'s entry');
delete(key);
await delete(key);
}
}
return true;
Expand Down
15 changes: 9 additions & 6 deletions flutter/iot_receiver/lib/widgets/new_receiver_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ import 'package:iot_receiver/services/hro2_data_service.dart';
import 'package:new_gradient_app_bar/new_gradient_app_bar.dart';

class NewHrO2Receiver extends StatefulWidget {
const NewHrO2Receiver({Key? key}) : super(key: key);
final HrO2Receiver? hrO2Receiver;
const NewHrO2Receiver({Key? key, this.hrO2Receiver}) : super(key: key);
static const String id = '/new_receiver';

@override
Expand Down Expand Up @@ -104,15 +105,17 @@ class _NewHrO2ReceiverState extends State<NewHrO2Receiver> {
value: device,
child: Text(device.deviceAtsign),
))
.toList());
.toList(),
initialValue: widget.hrO2Receiver?.hrO2Device,
);
} else {
return const Text("loading");
}
})),
receiverShortnameForm(context, ''),
receiverAtsignForm(context, ''),
sendHRForm(context, ''),
sendO2Form(context, ''),
receiverShortnameForm(context, initialValue: widget.hrO2Receiver?.receiverShortname),
receiverAtsignForm(context, initialValue: widget.hrO2Receiver?.receiverAtsign),
sendHRForm(context, initialValue: widget.hrO2Receiver?.sendHR),
sendO2Form(context, initialValue: widget.hrO2Receiver?.sendO2),
Row(
children: <Widget>[
const SizedBox(width: 20),
Expand Down

0 comments on commit 406bf10

Please sign in to comment.