Characterization Data with Static Site

This commit is contained in:
2024-09-23 10:27:36 -07:00
parent 4c2bef71ec
commit 018382e218
11 changed files with 273 additions and 130 deletions

View File

@ -1,3 +1,4 @@
using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Models;
using OI.Metrology.Shared.Models.Stateless;
using OI.Metrology.Wafer.Counter.Models;
@ -82,7 +83,7 @@ public class FileShareRepository : IFileShareRepository
return result;
}
List<NginxFileSystemSortable> IFileShareRepository.GetNginxFileSystemSortableCollection(HttpClient httpClient, Uri uri, string? endsWith)
ReadOnlyCollection<NginxFileSystemSortable> IFileShareRepository.GetNginxFileSystemSortableCollection(HttpClient httpClient, Uri uri, string? endsWith)
{
List<NginxFileSystemSortable> results = new();
Task<HttpResponseMessage> httpResponseMessage = httpClient.GetAsync(uri);
@ -101,12 +102,12 @@ public class FileShareRepository : IFileShareRepository
results.Add(nginxFileSystemSortable);
}
}
return results;
return new(results);
}
private static ReadOnlyCollection<string> GetValidDirectories(string equipmentDirectory, DateTime startDateTime, DateTime endDateTime)
{
List<string> results = [equipmentDirectory];
List<string> results = [];
DateTime dateTime;
string weekOfYear;
Calendar calendar = new CultureInfo("en-US").Calendar;
@ -121,27 +122,37 @@ public class FileShareRepository : IFileShareRepository
return new(results);
}
private static ReadOnlyCollection<FileInfo> GetCollection(CharacterizationParameters characterizationParameters, string searchPattern, DateTime startDateTime, DateTime endDateTime, ReadOnlyCollection<string> validDirectories)
private static ReadOnlyCollection<string> GetFiles(CharacterizationParameters characterizationParameters, string equipmentDirectory, string searchPattern, DateTime startDateTime, DateTime endDateTime, ReadOnlyCollection<string> validDirectories)
{
FileInfo[] results;
List<string> results = [];
string[] directories;
List<FileInfo> collection = [];
string startDateTimeTicks = startDateTime.Ticks.ToString();
string delta = (endDateTime.Ticks - startDateTime.Ticks).ToString();
string ticksSearchPattern = $"{startDateTime.Ticks.ToString()[..(startDateTimeTicks.Length - delta.Length + 1)]}*";
bool check = characterizationParameters.SearchPattern is null || searchPattern == characterizationParameters.SearchPattern;
if (check)
results.AddRange(Directory.GetFiles(equipmentDirectory, searchPattern, SearchOption.AllDirectories));
foreach (string validDirectory in validDirectories)
{
if (string.IsNullOrEmpty(validDirectory) || !Directory.Exists(validDirectory))
continue;
if (characterizationParameters.SearchPattern is null || searchPattern == characterizationParameters.SearchPattern)
collection.AddRange(Directory.GetFiles(validDirectory, searchPattern, SearchOption.AllDirectories).Select(l => new FileInfo(l)));
if (check)
results.AddRange(Directory.GetFiles(validDirectory, searchPattern, SearchOption.AllDirectories));
else
{
directories = Directory.GetDirectories(validDirectory, ticksSearchPattern, SearchOption.AllDirectories);
foreach (string directory in directories)
collection.AddRange(Directory.GetFiles(directory, searchPattern, SearchOption.TopDirectoryOnly).Select(l => new FileInfo(l)));
results.AddRange(Directory.GetFiles(directory, searchPattern, SearchOption.TopDirectoryOnly));
}
}
return new(results);
}
private static ReadOnlyCollection<FileInfo> GetCollection(CharacterizationParameters characterizationParameters, string equipmentDirectory, string searchPattern, DateTime startDateTime, DateTime endDateTime, ReadOnlyCollection<string> validDirectories)
{
FileInfo[] results;
ReadOnlyCollection<string> files = GetFiles(characterizationParameters, equipmentDirectory, searchPattern, startDateTime, endDateTime, validDirectories);
FileInfo[] collection = files.Select(l => new FileInfo(l)).ToArray();
results = (from l in collection where l.LastWriteTime >= startDateTime && l.LastWriteTime <= endDateTime orderby l.LastWriteTime descending select l).ToArray();
return new(results);
}
@ -193,7 +204,7 @@ public class FileShareRepository : IFileShareRepository
DateTime endDateTime = characterizationParameters.EndTime is null ? DateTime.Now : DateTime.Parse(characterizationParameters.EndTime).ToLocalTime();
DateTime startDateTime = characterizationParameters.StartTime is null ? DateTime.Now.AddHours(-6) : DateTime.Parse(characterizationParameters.StartTime).ToLocalTime();
ReadOnlyCollection<string> validDirectories = GetValidDirectories(equipmentDirectory, startDateTime, endDateTime);
ReadOnlyCollection<FileInfo> collection = GetCollection(characterizationParameters, searchPattern, startDateTime, endDateTime, validDirectories);
ReadOnlyCollection<FileInfo> collection = GetCollection(characterizationParameters, equipmentDirectory, searchPattern, startDateTime, endDateTime, validDirectories);
foreach (FileInfo fileInfo in collection)
{
if (string.IsNullOrEmpty(fileInfo.DirectoryName))
@ -218,7 +229,7 @@ public class FileShareRepository : IFileShareRepository
return new(results);
}
List<CharacterizationInfo> IFileShareRepository.GetArchiveData(CharacterizationParameters characterizationParameters)
ReadOnlyCollection<CharacterizationInfo> IFileShareRepository.GetArchiveData(CharacterizationParameters characterizationParameters)
{
List<CharacterizationInfo> results = [];
string searchPattern;
@ -240,4 +251,23 @@ public class FileShareRepository : IFileShareRepository
return new(results);
}
ReadOnlyCollection<ToolTypeNameId> IFileShareRepository.GetEquipmentIds()
{
List<ToolTypeNameId> results = [];
string directoryName;
ToolTypeNameId toolTypeNameId;
string archiveDirectory = Path.Combine(_AppSettings.EcCharacterizationSi, "Archive");
string[] directories = Directory.GetDirectories(archiveDirectory, "*", SearchOption.TopDirectoryOnly);
string[] fileNames = Directory.GetFiles(archiveDirectory, "*.json", SearchOption.TopDirectoryOnly).Select(l => Path.GetFileNameWithoutExtension(l)).ToArray();
for (int i = 0; i < directories.Length; i++)
{
directoryName = Path.GetFileName(directories[i]);
if (!fileNames.Contains(directoryName))
continue;
toolTypeNameId = new() { ID = i, ToolTypeName = directoryName };
results.Add(toolTypeNameId);
}
return new(results);
}
}