dartrosa_collect 0.1.1
dartrosa_collect: ^0.1.1 copied to clipboard
ODK Collect form-filling services for DartRosa: audit log, fast external itemsets, last-saved instance and edited-submission finalization.
dartrosa_collect #
ODK Collect's form-filling services for DartRosa, ported from ODK Collect:
- Audit log (
meta/auditwithodk:location-*,odk:track-changes,odk:identify-user,odk:track-changes-reasons):FormAudit,AuditEventLogger,AuditEventCsvWriter. - Fast external itemsets (
itemsets.csvwith a select'squeryattribute):FastExternalItemsetsPlugin. - Last-saved instance (
jr://instance/last-saved):LastSavedover aLastSavedStore. - Edited submissions:
EditedFormFinalizationProcessorandInstanceEditmovemeta/instanceIDtometa/deprecatedID. collectFormConfigwires all of these into aDartRosaConfigthe way Collect'sFormLoaderTaskdoes.
Storage and platform services are interfaces the app implements;
in-memory implementations are included. Pure Dart (no dart:io).
Install #
dart pub add dartrosa_collect
Example #
import 'package:dartrosa/dartrosa.dart';
import 'package:dartrosa_collect/dartrosa_collect.dart';
Future<void> main() async {
final lastSaved = LastSaved(InMemoryLastSavedStore(), 'visit-v1');
final config = collectFormConfig(
media: MapResourceResolver(const {}), // the form's media files
lastSaved: lastSaved,
);
final session = (await FormDefinition.parse(
xform,
config: config,
)).createSession();
// ... answer questions ...
final submission = (session.finalize() as FinalizeSuccess).submission;
await lastSaved.instanceSaved(session); // pre-fills the next instance
// Editing a finalized submission gives it a new instanceID.
final edit = (await FormDefinition.parse(
xform,
config: config,
)).createSession(existingInstance: submission.xml);
const InstanceEdit(editOf: 1).markSession(edit);
print((edit.finalize() as FinalizeSuccess).submission.xml); // deprecatedID
}
See example/example.dart for the complete program.
Documentation #
- API reference
- Documentation index
- Save and resume drafts
- Use CSV data and entities
- Getting started
- Plugins and extension points
- Compatibility matrix
- Migrating from JavaRosa
License #
Apache License 2.0 (see LICENSE). Ports classes of ODK Collect (Apache-2.0); see the licensing notes.