diff --git a/cicm_web/Areas/Admin/Controllers/MachinePhotosController.cs b/cicm_web/Areas/Admin/Controllers/MachinePhotosController.cs index 92d7bf3a..fd467670 100644 --- a/cicm_web/Areas/Admin/Controllers/MachinePhotosController.cs +++ b/cicm_web/Areas/Admin/Controllers/MachinePhotosController.cs @@ -19,7 +19,6 @@ using SixLabors.ImageSharp.MetaData; using SixLabors.ImageSharp.MetaData.Profiles.Exif; using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.Primitives; -using SixLabors.ImageSharp.Processing; using SkiaSharp; namespace cicm_web.Areas.Admin.Controllers @@ -28,15 +27,16 @@ namespace cicm_web.Areas.Admin.Controllers [Authorize] public class MachinePhotosController : Controller { - readonly cicmContext _context; - readonly IHostingEnvironment hostingEnvironment; + readonly cicmContext _context; + readonly IHostingEnvironment hostingEnvironment; readonly UserManager userManager; - public MachinePhotosController(cicmContext context, IHostingEnvironment hostingEnvironment, UserManager userManager) + public MachinePhotosController(cicmContext context, IHostingEnvironment hostingEnvironment, + UserManager userManager) { - _context = context; + _context = context; this.hostingEnvironment = hostingEnvironment; - this.userManager = userManager; + this.userManager = userManager; } // GET: MachinePhotos @@ -62,7 +62,50 @@ namespace cicm_web.Areas.Admin.Controllers { if(id == null) return NotFound(); - MachinePhoto machinePhoto = await _context.MachinePhotos.FirstOrDefaultAsync(m => m.Id == id); + MachinePhotoDetailsViewModel machinePhoto = await _context + .MachinePhotos + .Select(m => new MachinePhotoDetailsViewModel + { + Id = m.Id, + CameraManufacturer = m.CameraManufacturer, + CameraModel = m.CameraModel, + ColorSpace = m.ColorSpace, + Comments = m.Comments, + Contrast = m.Contrast, + CreationDate = m.CreationDate, + DigitalZoomRatio = m.DigitalZoomRatio, + ExifVersion = m.ExifVersion, + Exposure = m.Exposure, + ExposureProgram = m.ExposureProgram, + Flash = m.Flash, + Focal = m.Focal, + FocalLength = m.FocalLength, + FocalLengthEquivalent = + m.FocalLengthEquivalent, + HorizontalResolution = + m.HorizontalResolution, + IsoRating = m.IsoRating, + Lens = m.Lens, + LightSource = m.LightSource, + MeteringMode = m.MeteringMode, + ResolutionUnit = m.ResolutionUnit, + Orientation = m.Orientation, + Saturation = m.Saturation, + SceneCaptureType = m.SceneCaptureType, + SensingMethod = m.SensingMethod, + Sharpness = m.Sharpness, + SoftwareUsed = m.SoftwareUsed, + SubjectDistanceRange = + m.SubjectDistanceRange, + UploadDate = m.UploadDate, + VerticalResolution = m.VerticalResolution, + WhiteBalance = m.WhiteBalance, + License = m.License.Name, + UploadUser = m.User.UserName, + Machine = + $"{m.Machine.Company.Name} {m.Machine.Name}", + MachineId = m.Machine.Id + }).FirstOrDefaultAsync(m => m.Id == id); if(machinePhoto == null) return NotFound(); return View(machinePhoto); @@ -151,7 +194,9 @@ namespace cicm_web.Areas.Admin.Controllers photo.Contrast = (Contrast)exif.Value; break; case ExifTag.DateTimeDigitized: - photo.CreationDate = DateTime.ParseExact(exif.Value.ToString(), "yyyy:MM:dd HH:mm:ss", CultureInfo.InvariantCulture); + photo.CreationDate = + DateTime.ParseExact(exif.Value.ToString(), "yyyy:MM:dd HH:mm:ss", + CultureInfo.InvariantCulture); break; case ExifTag.DigitalZoomRatio: photo.DigitalZoomRatio = ((Rational)exif.Value).ToDouble(); @@ -189,7 +234,7 @@ namespace cicm_web.Areas.Admin.Controllers photo.HorizontalResolution = ((Rational)exif.Value).ToDouble(); break; case ExifTag.ISOSpeedRatings: - photo.IsoRating =(ushort) exif.Value; + photo.IsoRating = (ushort)exif.Value; break; case ExifTag.LensModel: photo.Lens = exif.Value as string; @@ -225,7 +270,7 @@ namespace cicm_web.Areas.Admin.Controllers photo.VerticalResolution = ((Rational)exif.Value).ToDouble(); break; case ExifTag.WhiteBalance: - photo.WhiteBalance =(WhiteBalance) exif.Value; + photo.WhiteBalance = (WhiteBalance)exif.Value; break; default: image.MetaData.ExifProfile.RemoveValue(exif.Tag); @@ -234,31 +279,34 @@ namespace cicm_web.Areas.Admin.Controllers if(!Directory.Exists(Path.Combine(hostingEnvironment.WebRootPath, "assets", "photos"))) Directory.CreateDirectory(Path.Combine(hostingEnvironment.WebRootPath, "assets", "photos")); - if(!Directory.Exists(Path.Combine(hostingEnvironment.WebRootPath, "assets", "photos", "machines"))) + if(!Directory.Exists(Path.Combine(hostingEnvironment.WebRootPath, "assets", "photos", "machines"))) Directory.CreateDirectory(Path.Combine(hostingEnvironment.WebRootPath, "assets", "photos", "machines")); - if(!Directory.Exists(Path.Combine(hostingEnvironment.WebRootPath, "assets", "photos", "machines", "thumbs"))) - Directory.CreateDirectory(Path.Combine(hostingEnvironment.WebRootPath, "assets", "photos", "machines", "thumbs")); + if(!Directory.Exists(Path.Combine(hostingEnvironment.WebRootPath, "assets", "photos", "machines", "thumbs")) + ) + Directory.CreateDirectory(Path.Combine(hostingEnvironment.WebRootPath, "assets", "photos", "machines", + "thumbs")); - var outJpeg = Path.Combine(hostingEnvironment.WebRootPath, "assets", "photos", "machines", - newId + ".jpg"); - - using(var jpegStream = new FileStream(outJpeg, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None)) - { - image.SaveAsJpeg(jpegStream); - } + string outJpeg = Path.Combine(hostingEnvironment.WebRootPath, "assets", "photos", "machines", + newId + ".jpg"); + + using(FileStream jpegStream = + new FileStream(outJpeg, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None)) + image.SaveAsJpeg(jpegStream); int imgMax = Math.Max(image.Width, image.Height); - int width = image.Width; - int height= image.Height; - + int width = image.Width; + int height = image.Height; + image.Dispose(); - + SKBitmap skBitmap = SKBitmap.Decode(outJpeg); foreach(string format in new[] {"jpg", "webp"}) { - if(!Directory.Exists(Path.Combine(hostingEnvironment.WebRootPath, "assets/photos/machines/thumbs", format))) ; - Directory.CreateDirectory(Path.Combine(hostingEnvironment.WebRootPath, "assets/photos/machines/thumbs", format)); + if(!Directory.Exists(Path.Combine(hostingEnvironment.WebRootPath, "assets/photos/machines/thumbs", + format))) ; + Directory.CreateDirectory(Path.Combine(hostingEnvironment.WebRootPath, "assets/photos/machines/thumbs", + format)); SKEncodedImageFormat skFormat; switch(format) @@ -273,24 +321,25 @@ namespace cicm_web.Areas.Admin.Controllers foreach(int multiplier in new[] {1, 2, 3}) { - if(!Directory.Exists(Path.Combine(hostingEnvironment.WebRootPath, "assets/photos/machines/thumbs", format, - $"{multiplier}x"))) ; - Directory.CreateDirectory(Path.Combine(hostingEnvironment.WebRootPath, "assets/photos/machines/thumbs", format, - $"{multiplier}x")); + if(!Directory.Exists(Path.Combine(hostingEnvironment.WebRootPath, "assets/photos/machines/thumbs", + format, $"{multiplier}x"))) ; + Directory.CreateDirectory(Path.Combine(hostingEnvironment.WebRootPath, + "assets/photos/machines/thumbs", format, $"{multiplier}x")); - string resized = Path.Combine(hostingEnvironment.WebRootPath, "assets/photos/machines/thumbs", format, $"{multiplier}x", - newId + $".{format}"); + string resized = Path.Combine(hostingEnvironment.WebRootPath, "assets/photos/machines/thumbs", + format, $"{multiplier}x", newId + $".{format}"); if(System.IO.File.Exists(resized)) continue; - float canvasMin = 256 * multiplier; - - float scale = canvasMin / imgMax; + float canvasMin = 256 * multiplier; + + float scale = canvasMin / imgMax; // Do not enlarge images - if(scale > 1) { scale = 1; } - - var skResized = skBitmap.Resize(new SKImageInfo((int)(width * scale), (int)(height * scale)), SKFilterQuality.High); + if(scale > 1) scale = 1; + + SKBitmap skResized = skBitmap.Resize(new SKImageInfo((int)(width * scale), (int)(height * scale)), + SKFilterQuality.High); SKImage skImage = SKImage.FromBitmap(skResized); SKData data = skImage.Encode(skFormat, 100); FileStream outfs = new FileStream(resized, FileMode.CreateNew); @@ -303,13 +352,16 @@ namespace cicm_web.Areas.Admin.Controllers Directory.CreateDirectory(Path.Combine(hostingEnvironment.ContentRootPath, "originals", "photos")); if(!Directory.Exists(Path.Combine(hostingEnvironment.ContentRootPath, "originals", "photos"))) Directory.CreateDirectory(Path.Combine(hostingEnvironment.ContentRootPath, "originals", "photos")); - if(!Directory.Exists(Path.Combine(hostingEnvironment.ContentRootPath, "originals", "photos", "machines"))) - Directory.CreateDirectory(Path.Combine(hostingEnvironment.ContentRootPath, "originals", "photos", "machines")); + if(!Directory.Exists(Path.Combine(hostingEnvironment.ContentRootPath, "originals", "photos", "machines"))) + Directory.CreateDirectory(Path.Combine(hostingEnvironment.ContentRootPath, "originals", "photos", + "machines")); - System.IO.File.Move(tmpFile, Path.Combine(hostingEnvironment.ContentRootPath, "originals", "photos", "machines", newId + extension)); + System.IO.File.Move(tmpFile, + Path.Combine(hostingEnvironment.ContentRootPath, "originals", "photos", "machines", + newId + extension)); - photo.Id = newId; - photo.User = await userManager.GetUserAsync(HttpContext.User); + photo.Id = newId; + photo.User = await userManager.GetUserAsync(HttpContext.User); photo.License = await _context.Licenses.FindAsync(machinePhoto.LicenseId); photo.Machine = await _context.Machines.FindAsync(machinePhoto.MachineId); diff --git a/cicm_web/Areas/Admin/Models/MachinePhotoDetailsViewModel.cs b/cicm_web/Areas/Admin/Models/MachinePhotoDetailsViewModel.cs new file mode 100644 index 00000000..02f89233 --- /dev/null +++ b/cicm_web/Areas/Admin/Models/MachinePhotoDetailsViewModel.cs @@ -0,0 +1,75 @@ +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using Cicm.Database; + +namespace cicm_web.Areas.Admin.Models +{ + public class MachinePhotoDetailsViewModel : BaseViewModel + { + public string Author { get; set; } + [DisplayName("Camera manufacturer")] + public string CameraManufacturer { get; set; } + [DisplayName("Camera model")] + public string CameraModel { get; set; } + [DisplayName("Color space")] + public ColorSpace? ColorSpace { get; set; } + [DisplayName("User comments")] + public string Comments { get; set; } + public Contrast? Contrast { get; set; } + [DisplayName("Date and time of digitizing")] + public DateTime? CreationDate { get; set; } + [DisplayName("Digital zoom ratio")] + public double? DigitalZoomRatio { get; set; } + [DisplayName("Exif version")] + public string ExifVersion { get; set; } + [DisplayName("Exposure time")] + public string Exposure { get; set; } + [DisplayName("Exposure mode")] + public ExposureMode? ExposureMethod { get; set; } + [DisplayName("Exposure Program")] + public ExposureProgram? ExposureProgram { get; set; } + public Flash? Flash { get; set; } + [DisplayName("F-number")] + public double? Focal { get; set; } + [DisplayName("Lens focal length")] + public double? FocalLength { get; set; } + [DisplayName("Focal length in 35 mm film")] + public ushort? FocalLengthEquivalent { get; set; } + [DisplayName("Horizontal resolution")] + public double? HorizontalResolution { get; set; } + [DisplayName("ISO speed rating")] + public ushort? IsoRating { get; set; } + [DisplayName("Lens used")] + public string Lens { get; set; } + [DisplayName("Light source")] + public LightSource? LightSource { get; set; } + [DisplayName("Metering mode")] + public MeteringMode? MeteringMode { get; set; } + [DisplayName("Resolution unit")] + public ResolutionUnit? ResolutionUnit { get; set; } + public Orientation? Orientation { get; set; } + public Saturation? Saturation { get; set; } + [DisplayName("Scene capture type")] + public SceneCaptureType? SceneCaptureType { get; set; } + [DisplayName("Sensing method")] + public SensingMethod? SensingMethod { get; set; } + public string Sharpness { get; set; } + [DisplayName("Software used")] + public string SoftwareUsed { get; set; } + [DisplayName("Subject distance range")] + public SubjectDistanceRange? SubjectDistanceRange { get; set; } + [Timestamp] + [DisplayName("Uploaded on")] + public DateTime UploadDate { get; set; } + [DisplayName("Vertical resolution")] + public double? VerticalResolution { get; set; } + [DisplayName("White balance")] + public WhiteBalance? WhiteBalance { get; set; } + public string License { get; set; } + [DisplayName("Uploaded by")] + public string UploadUser { get; set; } + public string Machine { get; set; } + public int MachineId { get; set; } + } +} \ No newline at end of file diff --git a/cicm_web/Areas/Admin/Views/MachinePhotos/Details.cshtml b/cicm_web/Areas/Admin/Views/MachinePhotos/Details.cshtml index 0d9242e3..f1b9dab4 100644 --- a/cicm_web/Areas/Admin/Views/MachinePhotos/Details.cshtml +++ b/cicm_web/Areas/Admin/Views/MachinePhotos/Details.cshtml @@ -1,4 +1,4 @@ -@model Cicm.Database.Models.MachinePhoto +@model cicm_web.Areas.Admin.Models.MachinePhotoDetailsViewModel @{ ViewData["Title"] = "Details"; @@ -7,219 +7,326 @@

Details

-

MachinePhoto

+

Machine photo


-
- @Html.DisplayNameFor(model => model.Author) -
-
- @Html.DisplayFor(model => model.Author) -
-
- @Html.DisplayNameFor(model => model.CameraManufacturer) -
-
- @Html.DisplayFor(model => model.CameraManufacturer) -
-
- @Html.DisplayNameFor(model => model.CameraModel) -
-
- @Html.DisplayFor(model => model.CameraModel) -
-
- @Html.DisplayNameFor(model => model.ColorSpace) -
-
- @Html.DisplayFor(model => model.ColorSpace) -
-
- @Html.DisplayNameFor(model => model.Comments) -
-
- @Html.DisplayFor(model => model.Comments) -
-
- @Html.DisplayNameFor(model => model.Contrast) -
-
- @Html.DisplayFor(model => model.Contrast) -
-
- @Html.DisplayNameFor(model => model.CreationDate) -
-
- @Html.DisplayFor(model => model.CreationDate) -
-
- @Html.DisplayNameFor(model => model.DigitalZoomRatio) -
-
- @Html.DisplayFor(model => model.DigitalZoomRatio) -
-
- @Html.DisplayNameFor(model => model.ExifVersion) -
-
- @Html.DisplayFor(model => model.ExifVersion) -
-
- @Html.DisplayNameFor(model => model.Exposure) -
-
- @Html.DisplayFor(model => model.Exposure) -
-
- @Html.DisplayNameFor(model => model.ExposureMethod) -
-
- @Html.DisplayFor(model => model.ExposureMethod) -
-
- @Html.DisplayNameFor(model => model.ExposureProgram) -
-
- @Html.DisplayFor(model => model.ExposureProgram) -
-
- @Html.DisplayNameFor(model => model.Flash) -
-
- @Html.DisplayFor(model => model.Flash) -
-
- @Html.DisplayNameFor(model => model.Focal) -
-
- @Html.DisplayFor(model => model.Focal) -
-
- @Html.DisplayNameFor(model => model.FocalLength) -
-
- @Html.DisplayFor(model => model.FocalLength) -
-
- @Html.DisplayNameFor(model => model.FocalLengthEquivalent) -
-
- @Html.DisplayFor(model => model.FocalLengthEquivalent) -
-
- @Html.DisplayNameFor(model => model.HorizontalResolution) -
-
- @Html.DisplayFor(model => model.HorizontalResolution) -
-
- @Html.DisplayNameFor(model => model.IsoRating) -
-
- @Html.DisplayFor(model => model.IsoRating) -
-
- @Html.DisplayNameFor(model => model.Lens) -
-
- @Html.DisplayFor(model => model.Lens) -
-
- @Html.DisplayNameFor(model => model.License) -
-
- @Html.DisplayFor(model => model.License) -
-
- @Html.DisplayNameFor(model => model.LightSource) -
-
- @Html.DisplayFor(model => model.LightSource) -
-
- @Html.DisplayNameFor(model => model.MeteringMode) -
-
- @Html.DisplayFor(model => model.MeteringMode) -
-
- @Html.DisplayNameFor(model => model.Orientation) -
-
- @Html.DisplayFor(model => model.Orientation) -
-
- @Html.DisplayNameFor(model => model.PixelComposition) -
-
- @Html.DisplayFor(model => model.PixelComposition) -
-
- @Html.DisplayNameFor(model => model.Saturation) -
-
- @Html.DisplayFor(model => model.Saturation) -
-
- @Html.DisplayNameFor(model => model.SceneCaptureType) -
-
- @Html.DisplayFor(model => model.SceneCaptureType) -
-
- @Html.DisplayNameFor(model => model.SceneControl) -
-
- @Html.DisplayFor(model => model.SceneControl) -
-
- @Html.DisplayNameFor(model => model.SensingMethod) -
-
- @Html.DisplayFor(model => model.SensingMethod) -
-
- @Html.DisplayNameFor(model => model.Sharpness) -
-
- @Html.DisplayFor(model => model.Sharpness) -
-
- @Html.DisplayNameFor(model => model.SoftwareUsed) -
-
- @Html.DisplayFor(model => model.SoftwareUsed) -
-
- @Html.DisplayNameFor(model => model.SubjectDistanceRange) -
-
- @Html.DisplayFor(model => model.SubjectDistanceRange) -
-
- @Html.DisplayNameFor(model => model.UploadDate) -
-
- @Html.DisplayFor(model => model.UploadDate) -
-
- @Html.DisplayNameFor(model => model.VerticalResolution) -
-
- @Html.DisplayFor(model => model.VerticalResolution) -
-
- @Html.DisplayNameFor(model => model.WhiteBalance) -
-
- @Html.DisplayFor(model => model.WhiteBalance) -
+
+ @Html.DisplayNameFor(model => model.UploadUser) +
+
+ @Html.DisplayFor(model => model.UploadUser) +
+
+ @Html.DisplayNameFor(model => model.UploadDate) +
+
+ @Html.DisplayFor(model => model.UploadDate) +
+
+ @Html.DisplayNameFor(model => model.License) +
+
+ @Html.DisplayFor(model => model.License) +
+
+ @Html.DisplayNameFor(model => model.Machine) +
+
+ @Html.DisplayFor(model => model.Machine) +
-
+
+ asp-route-id="@Model.Id" + class="btn btn-primary"> Edit - | - Back to List + + + Back to List + +
+
+ +@if(Model.Author != null) +{ +
+ @Html.DisplayNameFor(model => model.Author) +
+
+ @Html.DisplayFor(model => model.Author) +
+} +@if(Model.CameraManufacturer != null) +{ +
+ @Html.DisplayNameFor(model => model.CameraManufacturer) +
+
+ @Html.DisplayFor(model => model.CameraManufacturer) +
+} +@if(Model.CameraModel != null) +{ +
+ @Html.DisplayNameFor(model => model.CameraModel) +
+
+ @Html.DisplayFor(model => model.CameraModel) +
+} +@if(Model.ColorSpace != null) +{ +
+ @Html.DisplayNameFor(model => model.ColorSpace) +
+
+ @Html.DisplayFor(model => model.ColorSpace) +
+} +@if(Model.Comments != null) +{ +
+ @Html.DisplayNameFor(model => model.Comments) +
+
+ @Html.DisplayFor(model => model.Comments) +
+} +@if(Model.Contrast != null) +{ +
+ @Html.DisplayNameFor(model => model.Contrast) +
+
+ @Html.DisplayFor(model => model.Contrast) +
+} +@if(Model.CreationDate != null) +{ +
+ @Html.DisplayNameFor(model => model.CreationDate) +
+
+ @Html.DisplayFor(model => model.CreationDate) +
+} +@if(Model.DigitalZoomRatio != null) +{ +
+ @Html.DisplayNameFor(model => model.DigitalZoomRatio) +
+
+ @Html.DisplayFor(model => model.DigitalZoomRatio) +
+} +@if(Model.ExifVersion != null) +{ +
+ @Html.DisplayNameFor(model => model.ExifVersion) +
+
+ @Html.DisplayFor(model => model.ExifVersion) +
+} +@if(Model.Exposure != null) +{ +
+ @Html.DisplayNameFor(model => model.Exposure) +
+
+ @Html.DisplayFor(model => model.Exposure) +
+} +@if(Model.ExposureMethod != null) +{ +
+ @Html.DisplayNameFor(model => model.ExposureMethod) +
+
+ @Html.DisplayFor(model => model.ExposureMethod) +
+} +@if(Model.ExposureProgram != null) +{ +
+ @Html.DisplayNameFor(model => model.ExposureProgram) +
+
+ @Html.DisplayFor(model => model.ExposureProgram) +
+} +@if(Model.Flash != null) +{ +
+ @Html.DisplayNameFor(model => model.Flash) +
+
+ @Html.DisplayFor(model => model.Flash) +
+} +@if(Model.Focal != null) +{ +
+ @Html.DisplayNameFor(model => model.Focal) +
+
+ @Html.DisplayFor(model => model.Focal) +
+} +@if(Model.FocalLength != null) +{ +
+ @Html.DisplayNameFor(model => model.FocalLength) +
+
+ @Html.DisplayFor(model => model.FocalLength) +
+} +@if(Model.FocalLengthEquivalent != null) +{ +
+ @Html.DisplayNameFor(model => model.FocalLengthEquivalent) +
+
+ @Html.DisplayFor(model => model.FocalLengthEquivalent) +
+} +@if(Model.HorizontalResolution != null) +{ +
+ @Html.DisplayNameFor(model => model.HorizontalResolution) +
+
+ @Html.DisplayFor(model => model.HorizontalResolution) +
+} +@if(Model.IsoRating != null) +{ +
+ @Html.DisplayNameFor(model => model.IsoRating) +
+
+ @Html.DisplayFor(model => model.IsoRating) +
+} +@if(Model.Lens != null) +{ +
+ @Html.DisplayNameFor(model => model.Lens) +
+
+ @Html.DisplayFor(model => model.Lens) +
+} +@if(Model.LightSource != null) +{ +
+ @Html.DisplayNameFor(model => model.LightSource) +
+
+ @Html.DisplayFor(model => model.LightSource) +
+} +@if(Model.MeteringMode != null) +{ +
+ @Html.DisplayNameFor(model => model.MeteringMode) +
+
+ @Html.DisplayFor(model => model.MeteringMode) +
+} +@if(Model.ResolutionUnit != null) +{ +
+ @Html.DisplayNameFor(model => model.ResolutionUnit) +
+
+ @Html.DisplayFor(model => model.ResolutionUnit) +
+} +@if(Model.Orientation != null) +{ +
+ @Html.DisplayNameFor(model => model.Orientation) +
+
+ @Html.DisplayFor(model => model.Orientation) +
+} +@if(Model.Saturation != null) +{ +
+ @Html.DisplayNameFor(model => model.Saturation) +
+
+ @Html.DisplayFor(model => model.Saturation) +
+} +@if(Model.SceneCaptureType != null) +{ +
+ @Html.DisplayNameFor(model => model.SceneCaptureType) +
+
+ @Html.DisplayFor(model => model.SceneCaptureType) +
+} +@if(Model.SensingMethod != null) +{ +
+ @Html.DisplayNameFor(model => model.SensingMethod) +
+
+ @Html.DisplayFor(model => model.SensingMethod) +
+} +@if(Model.Sharpness != null) +{ +
+ @Html.DisplayNameFor(model => model.Sharpness) +
+
+ @Html.DisplayFor(model => model.Sharpness) +
+} +@if(Model.SoftwareUsed != null) +{ +
+ @Html.DisplayNameFor(model => model.SoftwareUsed) +
+
+ @Html.DisplayFor(model => model.SoftwareUsed) +
+} +@if(Model.SubjectDistanceRange != null) +{ +
+ @Html.DisplayNameFor(model => model.SubjectDistanceRange) +
+
+ @Html.DisplayFor(model => model.SubjectDistanceRange) +
+} +@if(Model.VerticalResolution != null) +{ +
+ @Html.DisplayNameFor(model => model.VerticalResolution) +
+
+ @Html.DisplayFor(model => model.VerticalResolution) +
+} +@if(Model.WhiteBalance != null) +{ +
+ @Html.DisplayNameFor(model => model.WhiteBalance) +
+
+ @Html.DisplayFor(model => model.WhiteBalance) +
+} +
\ No newline at end of file diff --git a/cicm_web/cicm_web.csproj b/cicm_web/cicm_web.csproj index 517ae19d..fd43ea03 100644 --- a/cicm_web/cicm_web.csproj +++ b/cicm_web/cicm_web.csproj @@ -2,7 +2,7 @@ netcoreapp2.2 - 3.0.99.629 + 3.0.99.631 Canary Islands Computer Museum Copyright © 2003-2018 Natalia Portillo Canary Islands Computer Museum Website