DFLayoutMultiImageProperties.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using Newtonsoft.Json.Linq;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. namespace InABox.Core
  6. {
  7. public class DFLayoutMultiImageProperties : DFLayoutFieldProperties<List<Guid>?, DFLayoutEmbeddedMediaValues>
  8. {
  9. [EditorSequence(-995)] [NullEditor] public override List<Guid>? Default { get; set; } = new List<Guid>();
  10. [EditorSequence(100)]
  11. [CheckBoxEditor]
  12. public bool DisableLibrary { get; set; } = false;
  13. public override string FormatValue(DFLayoutEmbeddedMediaValues value)
  14. {
  15. return value.Present ? "Yes" : "";
  16. }
  17. public override DFLayoutEmbeddedMediaValues DeserializeValue(DFLoadStorageEntry entry)
  18. {
  19. var value = new DFLayoutEmbeddedMediaValues();
  20. value.Deserialize(entry);
  21. return value;
  22. }
  23. public override void SerializeValue(DFSaveStorageEntry entry, DFLayoutEmbeddedMediaValues value)
  24. {
  25. value.Serialize(entry);
  26. }
  27. public override List<Guid> GetValue(DFLayoutEmbeddedMediaValues value)
  28. {
  29. return value.Select(x => x.ID).ToList();
  30. }
  31. public override IEnumerable<CoreColumn> GetDisplayColumns()
  32. {
  33. yield return new CoreColumn { ColumnName = Code, DataType = typeof(List<byte[]>) };
  34. yield return new CoreColumn { ColumnName = $"{Code}.IDs", DataType = typeof(List<Guid>) };
  35. yield return new CoreColumn { ColumnName = $"{Code}.Thumbnails", DataType = typeof(List<byte[]>) };
  36. }
  37. public override IEnumerable<KeyValuePair<string, object?>> GetDisplayValues(DFLayoutEmbeddedMediaValues value)
  38. {
  39. yield return new KeyValuePair<string, object?>(Code, value.Select(x => DigitalFormDocumentFactory.LoadDocument(x.ID)).ToList());
  40. yield return new KeyValuePair<string, object?>($"{Code}.IDs", value.Select(x => x.ID).ToList());
  41. yield return new KeyValuePair<string, object?>($"{Code}.Thumbnails", value.Select(x => x.Thumbnail).ToList());
  42. }
  43. protected override void LoadProperties()
  44. {
  45. base.LoadProperties();
  46. DisableLibrary = GetProperty("DisableLibrary", false);
  47. }
  48. protected override void SaveProperties()
  49. {
  50. base.SaveProperties();
  51. SetProperty("DisableLibrary", DisableLibrary);
  52. }
  53. }
  54. }