diff --git a/Tests/Controller/Elements/ItemsTest.cs b/Tests/Controller/Elements/ItemsTest.cs
index 8b3b861..cc24ed6 100755
--- a/Tests/Controller/Elements/ItemsTest.cs
+++ b/Tests/Controller/Elements/ItemsTest.cs
@@ -24,6 +24,7 @@ using Microsoft.Office.Interop.Word;
using zaaReloaded2.LabModel;
using zaaReloaded2.Formatter;
using zaa = zaaReloaded2.Controller.Elements;
+using System.Text.RegularExpressions;
namespace Tests.Controller.Elements
{
@@ -62,8 +63,10 @@ namespace Tests.Controller.Elements
_formatter.Settings.Elements.Add(new zaa.Items("Na, K, Cl"));
_formatter.Run();
string expected = (
- TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00)) +
- "Na 133, K 6 (5)\r\r").Replace(Environment.NewLine, "\r");
+ StripMarkup(
+ TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00)) +
+ "Na 133, K 6 (5)\r\r").Replace(Environment.NewLine, "\r")
+ );
Assert.AreEqual(expected, _document.Range().Text);
}
@@ -82,8 +85,10 @@ namespace Tests.Controller.Elements
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, K, Cl"));
_formatter.Run();
string expected = (
- TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00)) +
- "Klinische Chemie: Na 133, K 6 (5)\r\r").Replace(Environment.NewLine, "\r");
+ StripMarkup(
+ TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00)) +
+ "Klinische Chemie: Na 133, K 6 (5)\r\r").Replace(Environment.NewLine, "\r")
+ );
Assert.AreEqual(expected, _document.Range().Text);
}
@@ -120,7 +125,9 @@ namespace Tests.Controller.Elements
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, *"));
_formatter.Run();
string expected = (
- TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00)) +
+ StripMarkup(
+ TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00))
+ ) +
"Klinische Chemie: Na 133, Cl 110, K 6\r\r").Replace(Environment.NewLine, "\r");
Assert.AreEqual(expected, _document.Range().Text);
}
@@ -142,7 +149,9 @@ namespace Tests.Controller.Elements
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, SU-*"));
_formatter.Run();
string expected = (
- TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00)) +
+ StripMarkup(
+ TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00))
+ )+
"Klinische Chemie: Na 133, SU-Protein 2,8\r\r").Replace(Environment.NewLine, "\r");
Assert.AreEqual(expected, _document.Range().Text);
}
@@ -164,10 +173,19 @@ namespace Tests.Controller.Elements
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, SU-*, *"));
_formatter.Run();
string expected = (
- TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00)) +
+ StripMarkup(
+ TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00))
+ ) +
"Klinische Chemie: Na 133, SU-Protein 2,8, Cl 110, U-Na 99\r\r")
.Replace(Environment.NewLine, "\r");
Assert.AreEqual(expected, _document.Range().Text);
}
+
+ static string StripMarkup(string s)
+ {
+ return _markupStripper.Replace(s, string.Empty);
+ }
+
+ static readonly Regex _markupStripper = new Regex(@"?b>");
}
}
diff --git a/Tests/Formatter/DocumentWriterTest.cs b/Tests/Formatter/DocumentWriterTest.cs
index f3e201e..74d3075 100755
--- a/Tests/Formatter/DocumentWriterTest.cs
+++ b/Tests/Formatter/DocumentWriterTest.cs
@@ -21,6 +21,7 @@ using System.Linq;
using System.Text;
using NUnit.Framework;
using zaaReloaded2.Formatter;
+using Microsoft.Office.Interop.Word;
namespace Tests.Formatter
{
@@ -95,5 +96,13 @@ namespace Tests.Formatter
Assert.IsFalse(_docWriter.HasBufferedText);
Assert.AreEqual(String.Empty, _docWriter.ToString());
}
+
+ [Test]
+ public void TextMarkup()
+ {
+ _docWriter.Document = new Document();
+ _docWriter.WriteLine("This is not bold. This is bold!");
+ _docWriter.Flush();
+ }
}
}
diff --git a/Tests/ViewModels/SettingsRepositoryViewModelTest.cs b/Tests/ViewModels/SettingsRepositoryViewModelTest.cs
index ff434a1..afa5ddc 100755
--- a/Tests/ViewModels/SettingsRepositoryViewModelTest.cs
+++ b/Tests/ViewModels/SettingsRepositoryViewModelTest.cs
@@ -65,7 +65,12 @@ namespace Tests.ViewModels
Assert.AreNotSame(orig, copy);
Assert.AreNotSame(orig.RevealModelObject(), copy.RevealModelObject());
- Assert.AreEqual(String.Format("Kopie von {0}", orig.Name), copy.Name);
+ Assert.AreEqual(
+ String.Format(
+ "Kopie von {0}",
+ orig.Name.Replace(" (eingebaut)", String.Empty)
+ ),
+ copy.Name);
Assert.IsTrue(copy.IsSelected);
}
}
diff --git a/zaaReloaded2/Formatter/DocumentWriter.cs b/zaaReloaded2/Formatter/DocumentWriter.cs
index 2c11113..e373553 100755
--- a/zaaReloaded2/Formatter/DocumentWriter.cs
+++ b/zaaReloaded2/Formatter/DocumentWriter.cs
@@ -20,6 +20,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Word;
+using System.Text.RegularExpressions;
namespace zaaReloaded2.Formatter
{
@@ -59,6 +60,20 @@ namespace zaaReloaded2.Formatter
///
public string ParagraphStyle { get; set; }
+ ///
+ /// Returns text without markup from the buffer.
+ ///
+ public string Text
+ {
+ get
+ {
+ if (!HasBufferedText)
+ throw new InvalidOperationException("This DocumentWriter does not have any text.");
+
+ return _markupRegex.Replace(_buffer.ToString(), String.Empty);
+ }
+ }
+
#endregion
#region Constructors
@@ -126,7 +141,7 @@ namespace zaaReloaded2.Formatter
{
s.set_Style(ParagraphStyle);
}
- s.Range.Text = _buffer.ToString();
+ MarkupToDocument(_buffer.ToString());
}
if (Parent != null)
{
@@ -166,9 +181,40 @@ namespace zaaReloaded2.Formatter
#endregion
+ #region Private methods
+
+ ///
+ /// Parses a string containing markup (e.g., "<b>", "</b>")
+ /// and writes formatted text to the current Document.
+ ///
+ ///
+ void MarkupToDocument(string text)
+ {
+ string[] substrings = _markupRegex.Split(text);
+ foreach (string substring in substrings)
+ {
+ switch (substring)
+ {
+ case "":
+ Document.ActiveWindow.Selection.Font.Bold = 1;
+ break;
+ case "":
+ Document.ActiveWindow.Selection.Font.Bold = 0;
+ break;
+ default:
+ Document.ActiveWindow.Selection.TypeText(substring);
+ break;
+ }
+ }
+ }
+
+ #endregion
+
#region Fields
StringBuilder _buffer;
+ // Put pattern in parentheses so they will not be discarded by Regex.Split
+ static readonly Regex _markupRegex = new Regex(@"(?b>)");
#endregion
}
diff --git a/zaaReloaded2/Formatter/ItemFormatter.cs b/zaaReloaded2/Formatter/ItemFormatter.cs
index 17d0bf3..5e198c9 100755
--- a/zaaReloaded2/Formatter/ItemFormatter.cs
+++ b/zaaReloaded2/Formatter/ItemFormatter.cs
@@ -153,15 +153,20 @@ namespace zaaReloaded2.Formatter
string name = IncludeMaterial ? LabItem.QualifiedName : LabItem.Name;
- // Insert the formatted text into the document.
- formatter.Write(
+ string output =
String.Format(
"{0} {1}{2}{3}",
name,
value,
unit,
reference
- ));
+ );
+ if (!LabItem.IsNormal)
+ {
+ output = String.Format("{0}", output);
+ }
+
+ formatter.Write(output);
HasBeenUsed = true;
}
diff --git a/zaaReloaded2/Formatter/TimePointFormatter.cs b/zaaReloaded2/Formatter/TimePointFormatter.cs
index da8b41e..bcdc801 100755
--- a/zaaReloaded2/Formatter/TimePointFormatter.cs
+++ b/zaaReloaded2/Formatter/TimePointFormatter.cs
@@ -68,7 +68,7 @@ namespace zaaReloaded2.Formatter
static string FormatHeader(string text)
{
- return String.Format("{0}Laborwerte vom {1}:{2}",
+ return String.Format("{0}Laborwerte vom {1}:{2}",
Environment.NewLine,
text,
Environment.NewLine
diff --git a/zaaReloaded2/LabModel/LabItem.cs b/zaaReloaded2/LabModel/LabItem.cs
index 3fc6c7e..4ada2c5 100755
--- a/zaaReloaded2/LabModel/LabItem.cs
+++ b/zaaReloaded2/LabModel/LabItem.cs
@@ -123,7 +123,8 @@ namespace zaaReloaded2.LabModel
public bool HasUpperLimit { get; protected set; }
///
- /// Is true if is normal.
+ /// Is true if is normal. Returns true
+ /// if no limits and no normal value are known.
///
public bool IsNormal
{
@@ -147,7 +148,7 @@ namespace zaaReloaded2.LabModel
}
else
{
- return (Value == Normal);
+ return String.IsNullOrEmpty(Normal) || (Value == Normal);
}
}
}
diff --git a/zaaReloaded2/ViewModels/SettingsViewModel.cs b/zaaReloaded2/ViewModels/SettingsViewModel.cs
index db33e3f..05af8a2 100755
--- a/zaaReloaded2/ViewModels/SettingsViewModel.cs
+++ b/zaaReloaded2/ViewModels/SettingsViewModel.cs
@@ -347,7 +347,7 @@ namespace zaaReloaded2.ViewModels
picker.ElementChosenMessage.Sent += (sender, args) =>
{
ElementViewModel newVM = args.Content.ViewModel as ElementViewModel;
- if (IsTopLevelElement())
+ if (LastSelectedElement == null || IsTopLevelElement())
{
AddElementViewModel(newVM);
}