EquipmentDetailShell.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using System.Linq;
  3. using Comal.Classes;
  4. using Xamarin.Forms;
  5. using InABox.Core;
  6. namespace comal.timesheets
  7. {
  8. public class EquipmentDetailShell : DetailShell<EquipmentDetailModel, Equipment>
  9. {
  10. static EquipmentDetailShell()
  11. {
  12. Columns
  13. .Map(nameof(ID), x => x.ID)
  14. .Map(nameof(Code), x => x.Code)
  15. .Map(nameof(Description), x => x.Description)
  16. .Map(nameof(Notes), x => x.Notes)
  17. .Map(nameof(GroupID), x => x.GroupLink.ID)
  18. .Map(nameof(GroupName), x => x.GroupLink.Description)
  19. .Map(nameof(ThumbnailID), x => x.GroupLink.Thumbnail.ID)
  20. .Map(nameof(_specificationSheetID), x => x.SpecificationSheet.ID)
  21. .Map(nameof(BatteryDouble), x => x.TrackerLink.BatteryLevel)
  22. .Map(nameof(LastUpdate), x => x.TrackerLink.Location.Timestamp)
  23. .Map(nameof(Latitude), x => x.TrackerLink.Location.Latitude)
  24. .Map(nameof(Longitude), x => x.TrackerLink.Location.Longitude)
  25. .Map(nameof(DigitalKey), x => x.DigitalKey.ID);
  26. }
  27. public Guid ID => Get<Guid>();
  28. public string Code => Get<String>();
  29. public string Description => Get<String>();
  30. public string Notes => Get<String>();
  31. public Guid GroupID => Get<Guid>();
  32. public string GroupName => Get<String>();
  33. public Guid ThumbnailID => Get<Guid>();
  34. public ImageSource Thumbnail => Parent.GetImage(ThumbnailID);
  35. private Guid _specificationSheetID => Get<Guid>();
  36. public ImageSource SpecificationSheet => Parent.GetImage(_specificationSheetID);
  37. public double BatteryDouble => Get<double>();
  38. public DateTime LastUpdate => Get<DateTime>();
  39. public double Latitude => Get<double>();
  40. public double Longitude => Get<double>();
  41. public Guid DigitalKey => Get<Guid>();
  42. public double ColumnWidth => Parent.HasImages() ? 55 : 0;
  43. public string Battery => $"Battery {BatteryDouble:F2}";
  44. public string BatteryLastUpdate => $"Last Update: {LastUpdate:dd MMM yy}";
  45. public Color LastUpdateColour => LastUpdate < DateTime.Today.AddMonths(-1)
  46. ? Color.FromHex("#f08080")
  47. : LastUpdate < DateTime.Today.AddDays(-14)
  48. ? Color.FromHex("#ffef00")
  49. : Color.LightGreen;
  50. public double BatteryRowHeight => BatteryDouble > 0 ? 25 : 0;
  51. public Color BatteryColour => BatteryDouble <= 40D
  52. ? Color.FromHex("#f08080")
  53. : BatteryDouble > 40D && BatteryDouble <= 70D
  54. ? Color.FromHex("#ffef00")
  55. : Color.LightGreen;
  56. public EquipmentKanbanShell[] OpenKanbans => Parent.Kanbans.Where(x => x.Completed.IsEmpty()).ToArray();
  57. public int ClosedKanbanCount => Parent.Kanbans.Count(x => !x.Completed.IsEmpty());
  58. public bool KanbansVisible => Parent.Kanbans.Any();
  59. public int DocumentCount => Parent.Documents.Count;
  60. public bool DocumentsVisible => (SpecificationSheet != null) || Parent.Documents.Any();
  61. }
  62. }