Skip to content

Commit d714a39

Browse files
committed
Fixed loading places without time
1 parent f3989f7 commit d714a39

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed

ConverterLibrary/XmlReader.cs

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,15 @@ public override string ToString() {
3434
}
3535

3636
//Time
37-
public DateTime ReturnDate() {
37+
public DateTime? ReturnDate() {
3838
DateTime tempDate = new DateTime();
3939
if (type == TimelineItemType.activity)
4040
tempDate = activity.startTime;
41-
else
41+
else {
42+
if (!place.startTime.HasValue)
43+
return null;
4244
tempDate = place.startTime.Value;
45+
}
4346
return new DateTime(tempDate.Year, tempDate.Month, tempDate.Day, 12, 0, 0, tempDate.Kind);
4447
}
4548

@@ -315,10 +318,14 @@ void GetPlace(GpxTools.Gpx.GpxWayPoint waypoint) {
315318
if (waypoint.Links.Count > 0)
316319
link = waypoint.Links[0].Href;
317320
// If previous is place
318-
if (timelineItems.Count >= 1 && timelineItems.Last().type == XmlTimeline.TimelineItemType.place)
319-
timelineItems.Last().place.endTime = startTime;
320-
//if (timelineItems.Count >= 1 && timelineItems.Last().type == XmlTimeline.TimelineItemType.activity)
321-
// startTime = timelineItems.Last().activity.endTime;
321+
if (timelineItems.Count >= 1 && timelineItems.Last().type == XmlTimeline.TimelineItemType.place) {
322+
if (!timelineItems.Last().place.endTime.HasValue && startTime.HasValue)
323+
timelineItems.Last().place.endTime = startTime;
324+
else {
325+
startTime = timelineItems.Last().place.startTime;
326+
}
327+
} else if (timelineItems.Count >= 1 && timelineItems.Last().type == XmlTimeline.TimelineItemType.activity && !startTime.HasValue)
328+
startTime = timelineItems.Last().activity.endTime;
322329
timelineItems.Add(new XmlTimeline.TimelineItem(new XmlTimeline.Place(location, name, startTime, ele, link)));
323330
}
324331
void GetMove(GpxTools.Gpx.GpxTrack track) {
@@ -353,19 +360,33 @@ void AddTimeToPreviousPlace(XmlTimeline.Activity activity) {
353360
if (timelineItems.Count >= 1) {
354361
if (timelineItems.Last().type == XmlTimeline.TimelineItemType.place)
355362
timelineItems.Last().place.endTime = activity.startTime;
363+
if (timelineItems.Count >= 2)
364+
if (timelineItems[timelineItems.Count - 2].type == XmlTimeline.TimelineItemType.place && !timelineItems[timelineItems.Count - 2].place.endTime.HasValue)
365+
timelineItems[timelineItems.Count - 2].place.endTime = activity.startTime;
356366
}
357367
}
358368

359369
// End calculations
360370
void SetStartEnd() {
361371
if (timelineItems.First().type == XmlTimeline.TimelineItemType.place && !timelineItems.First().place.startTime.HasValue) {
362-
DateTime time = timelineItems.First().place.endTime.Value;
372+
DateTime time = new DateTime();
373+
if (timelineItems.First().place.endTime.HasValue)
374+
time = timelineItems.First().place.endTime.Value;
375+
else if (timelineItems[1].type == XmlTimeline.TimelineItemType.place && timelineItems[1].place.startTime.HasValue)
376+
time = timelineItems[1].place.startTime.Value;
377+
else if (timelineItems[1].type == XmlTimeline.TimelineItemType.activity)
378+
time = timelineItems[1].activity.startTime;
363379
DateTime newTime = new DateTime(time.Year, time.Month, time.Day, 0, 0, 0, time.Kind);
364380
timelineItems.First().place.startTime = newTime;
365381
}
366-
367382
if (timelineItems.Last().type == XmlTimeline.TimelineItemType.place && !timelineItems.Last().place.endTime.HasValue) {
368-
DateTime time = timelineItems.Last().place.startTime.Value;
383+
DateTime time = new DateTime();
384+
if (timelineItems.Last().place.startTime.HasValue)
385+
time = timelineItems.Last().place.startTime.Value;
386+
else if (timelineItems[timelineItems.Count - 2].type == XmlTimeline.TimelineItemType.place && timelineItems[timelineItems.Count - 2].place.endTime.HasValue)
387+
time = timelineItems[timelineItems.Count - 2].place.endTime.Value;
388+
else if (timelineItems[timelineItems.Count - 2].type == XmlTimeline.TimelineItemType.activity)
389+
time = timelineItems[timelineItems.Count - 2].activity.endTime;
369390
DateTime newTime = new DateTime(time.Year, time.Month, time.Day, 23, 59, 59, time.Kind);
370391
timelineItems.Last().place.endTime = newTime;
371392
}
@@ -437,7 +458,9 @@ public static List<XmlReader> Split(XmlReader xml) {
437458
currentDate = item.ReturnDate();
438459
}
439460

440-
if (currentDate == item.ReturnDate()) {
461+
if (item.ReturnDate() == null) {
462+
463+
} if (currentDate == item.ReturnDate()) {
441464
tempList.Add(item);
442465
lastItem = item;
443466
} else {

0 commit comments

Comments
 (0)