Team:Potsdam Bioware/Software

From 2011.igem.org

(Difference between revisions)
(BioLog App)
(BioLog App)
Line 72: Line 72:
the user but is not interruptible. It is possible that a timer expires,
the user but is not interruptible. It is possible that a timer expires,
in that case it counts the elapsed time since expiration.
in that case it counts the elapsed time since expiration.
 +
 +
 +
== Code ==
 +
 +
About BioLog
 +
 +
The BioLog App was invented in order to help Biologists and other people in the lab to reduce errors when following procedures or protocols while at the same time allowing to do annotations.
 +
 +
General Description
 +
 +
The XML format (Extensible Markup Language, en.wikipedia.org/wiki/Xml) was chosen because it is very common in the computer science world, it is versatile and a wide variety of editors support it with syntax highlighting. It can be used to describe documents and data structures and here we use it for the latter, although the result is a document.
 +
 +
Used XML Version, file type, header and footer data
 +
 +
We decided to use XML in a variant that is known in the apple world (and beyond) as property lists (.plist). Following this decision, we use xml version 1.0 and encoding UTF-8, which is not only common for apple plist files, but very popular for other XML documents as well.
 +
The files carry a .plist ending.
 +
The plist header currently consists of these three lines:
 +
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 +
<plist version="1.0">
 +
 +
The footer consists of one line, matching the <plist …> above:
 +
 +
</plist>
 +
 +
Supported data types
 +
 +
Our plist supports Boolean, Data, Date, Number and String as data type for a single data item. For data collections, we have Array and Dictionary.
 +
 +
Used keywords
 +
 +
The plist structure uses the following keywords for describing their data types:
 +
- String a string is surrounded by <string> and </string> and consists of all bytes between them.
 +
- Integer a number stored between the integer keywords.
 +
- Dictionary
 +
 +
A dictionary is described using the dict start and end keywords, e.g.:
 +
<dict>
 +
...content in between...
 +
</dict>
 +
 +
A dictionary content consists of key-value pair combinations. To retrieve the value, you need the key, which is guarded by the keywords <key> and </key>. Since the type of the value can be different, the next data type following the key is the value. An entry for a title text would thus look like this example:
 +
<key>Title</key>
 +
<string>Pride and Prejudice</string>
 +
- Array
 +
 +
All keywords that are between the array start and end keywords are counted as array elements.
 +
 +
 +
Root Object
 +
We always start with a root object of type Dictionary named "Root" that has at least one key-value pair in its dictionary
 +
 +
Content of the root object
 +
The Root object always has an array object named "Content".
 +
 +
The Content Array
 +
This is the main item for carrying the data
== Download ==
== Download ==
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Revision as of 13:13, 15 September 2011

Contents

Software

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.


BioLog App

Features:

Protocol list

This view contains two separated lists. The first list contains all current running protocols (which are displayed in the tab view). On click of one of the items you can jump directly to the tab in the tab view containing the protocol. The second list contains all protocols available on the device. This list can be extended with content downloaded from a server. Every item from the second list can be choosed as a new active protocol. This protocol will be added as a tab to the tab view.

Tab view

In this view all list views containing the current running protocols are accessible through separateed tabs. Each tab represents one active protocol. In contrast from most other Android applications the tab bar is placed at the bottom of the display. This has two main reasons: on the one hand it is easyer to rech the tabs when working with only one hand, on the other hand the handling of the app should be the same on iOS and Android because on iOS the tab bar is also placed at the bottom.

Progress report view

This view contains several informations abaut the current status of a protocol. Beside some informations about the current state it contains a history with detailed informations about actions has that has taken place within the protocol. This data in addition with meta data will be stored in a copy of the processed protocol. This view is available for all active and recently active protocols.

Protocol view

Every active protocol content is displayed within a list view. The subitems of the protocol are displayed as a section within the main list view. In turn a section is also handled as a list containing the elements from the subitems of the protocol. To build the protocol view some special views are used to display its content e.g. tables or steps of a procedure. The type and content of every item in a view / section is determinded by the underlying Property List (short PList). To make the content exchangeable between iOS and Android the data is described using an XML file.

Selecting entries

Every list item in the protocol view can be selected for further modification.

Commenting

A comment can be stored within every item of a protocol list. First you need to select this item and then push the menu button to gain access to the comment function. When you are done writing, the comment will be attached as a sub element of the selected item. Once a comment was written the text can be edited and removed.

Timer

A timer can occur when it is required by a step in the protocol. The timer can be presetted or not. The timer can be started and stopped by the user but is not interruptible. It is possible that a timer expires, in that case it counts the elapsed time since expiration.


Code

About BioLog

The BioLog App was invented in order to help Biologists and other people in the lab to reduce errors when following procedures or protocols while at the same time allowing to do annotations.

General Description

The XML format (Extensible Markup Language, en.wikipedia.org/wiki/Xml) was chosen because it is very common in the computer science world, it is versatile and a wide variety of editors support it with syntax highlighting. It can be used to describe documents and data structures and here we use it for the latter, although the result is a document.

Used XML Version, file type, header and footer data

We decided to use XML in a variant that is known in the apple world (and beyond) as property lists (.plist). Following this decision, we use xml version 1.0 and encoding UTF-8, which is not only common for apple plist files, but very popular for other XML documents as well. The files carry a .plist ending. The plist header currently consists of these three lines:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">

The footer consists of one line, matching the <plist …> above:

</plist>

Supported data types

Our plist supports Boolean, Data, Date, Number and String as data type for a single data item. For data collections, we have Array and Dictionary.

Used keywords

The plist structure uses the following keywords for describing their data types: - String a string is surrounded by <string> and </string> and consists of all bytes between them. - Integer a number stored between the integer keywords. - Dictionary

A dictionary is described using the dict start and end keywords, e.g.: <dict> ...content in between... </dict>

A dictionary content consists of key-value pair combinations. To retrieve the value, you need the key, which is guarded by the keywords <key> and </key>. Since the type of the value can be different, the next data type following the key is the value. An entry for a title text would thus look like this example: <key>Title</key> <string>Pride and Prejudice</string> - Array

All keywords that are between the array start and end keywords are counted as array elements.


Root Object We always start with a root object of type Dictionary named "Root" that has at least one key-value pair in its dictionary

Content of the root object The Root object always has an array object named "Content".

The Content Array This is the main item for carrying the data

Download

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.