From da3e839a48594347ab1528b06ad56a286783230d Mon Sep 17 00:00:00 2001 From: Mike Phares Date: Mon, 17 Jun 2024 17:11:36 -0700 Subject: [PATCH] Host from Windows --- Server/ApiControllers/ExportController.cs | 24 ++- Server/ApiControllers/ToolTypesController.cs | 17 -- Server/Controllers/ExportController.cs | 160 ------------------ Server/Repositories/ExportRepository.cs | 84 +++++++++ Server/Repositories/ToolTypesRepository.cs | 93 ---------- Server/Views/Export/Index.cshtml | 96 ----------- Server/Views/Shared/_Layout.cshtml | 36 ++-- Server/wwwroot/index.html | 35 ++-- Shared/Models/Stateless/IExportRepository.cs | 3 + .../Models/Stateless/IToolTypesRepository.cs | 2 - Static/.vscode/tasks.json | 28 +++ Static/AwaitingDispo/index.html | 158 +++++++++++++++++ Static/Export/index.html | 158 +++++++++++++++++ Static/Metrology/AwaitingDispo/index.html | 158 +++++++++++++++++ Static/Metrology/Export/index.html | 158 +++++++++++++++++ Static/Metrology/RunHeaders/index.html | 158 +++++++++++++++++ Static/Metrology/RunInfo/index.html | 158 +++++++++++++++++ Static/Metrology/index.html | 158 +++++++++++++++++ Static/RunHeaders/index.html | 158 +++++++++++++++++ Static/RunInfo/index.html | 158 +++++++++++++++++ Static/awaiting-disposition.html | 42 ++--- Static/export.html | 93 ++++++++++ Static/index.html | 44 ++--- Static/js/FileSaver.min.js | 3 + Static/js/awaiting-disposition.js | 2 +- Static/js/export.js | 88 ++++++++++ Static/js/index.js | 2 +- Static/js/run-headers.js | 2 +- Static/js/site-server.js | 43 +---- Static/run-headers.html | 42 ++--- Static/styles/export.css | 4 + Static/wafer-counter.html | 8 +- Tests/.vscode/settings.json | 5 +- Tests/UnitTestExportController.cs | 58 +++++++ Tests/UnitTestToolTypesController.cs | 30 ---- Tests/UnitTestWaferCounterController.cs | 119 ------------- 36 files changed, 1918 insertions(+), 667 deletions(-) delete mode 100644 Server/Controllers/ExportController.cs delete mode 100644 Server/Views/Export/Index.cshtml create mode 100644 Static/.vscode/tasks.json create mode 100644 Static/AwaitingDispo/index.html create mode 100644 Static/Export/index.html create mode 100644 Static/Metrology/AwaitingDispo/index.html create mode 100644 Static/Metrology/Export/index.html create mode 100644 Static/Metrology/RunHeaders/index.html create mode 100644 Static/Metrology/RunInfo/index.html create mode 100644 Static/Metrology/index.html create mode 100644 Static/RunHeaders/index.html create mode 100644 Static/RunInfo/index.html create mode 100644 Static/export.html create mode 100644 Static/js/FileSaver.min.js create mode 100644 Static/js/export.js create mode 100644 Static/styles/export.css delete mode 100644 Tests/UnitTestWaferCounterController.cs diff --git a/Server/ApiControllers/ExportController.cs b/Server/ApiControllers/ExportController.cs index 9a678cf..f63ab16 100644 --- a/Server/ApiControllers/ExportController.cs +++ b/Server/ApiControllers/ExportController.cs @@ -4,6 +4,7 @@ namespace OI.Metrology.Server.ApiControllers; using OI.Metrology.Shared.DataModels; using OI.Metrology.Shared.Models.Stateless; +using System.Data; using System.Text.Json; [Route("api/[controller]")] @@ -11,9 +12,13 @@ public class ExportController : Controller, IExportController { private readonly IExportRepository _ExportRepository; + private readonly IMetrologyRepository _MetrologyRepository; - public ExportController(IExportRepository exportRepository) => + public ExportController(IExportRepository exportRepository, IMetrologyRepository metrologyRepository) + { _ExportRepository = exportRepository; + _MetrologyRepository = metrologyRepository; + } private static string? GetJson(Stream stream) { @@ -79,4 +84,21 @@ public class ExportController : Controller, IExportController public IActionResult PostProcessDataStandardFormat() => Content(_ExportRepository.GetProcessDataStandardFormat(GetHeaderCommon(Request.Body))); + [HttpGet] + [Route("{toolTypeId}/export")] + public IActionResult GetExportData(int toolTypeId, [FromQuery] string? datebegin, [FromQuery] string? dateend) + { + Result r = _ExportRepository.GetExportData(_MetrologyRepository, toolTypeId, datebegin, dateend); + string json = Newtonsoft.Json.JsonConvert.SerializeObject(r); + return Content(json); + } + + [HttpGet] + [Route("{toolTypeId}/csv")] + public IActionResult GetCSVExport(int toolTypeId, [FromQuery] string? datebegin, [FromQuery] string? dateend, [FromQuery] string? filename) + { + string r = _ExportRepository.GetCSVExport(_MetrologyRepository, toolTypeId, datebegin, dateend); + return File(r, "application/octet-stream", filename); + } + } \ No newline at end of file diff --git a/Server/ApiControllers/ToolTypesController.cs b/Server/ApiControllers/ToolTypesController.cs index a477214..ebe7819 100644 --- a/Server/ApiControllers/ToolTypesController.cs +++ b/Server/ApiControllers/ToolTypesController.cs @@ -66,23 +66,6 @@ public class ToolTypesController : Controller, IToolTypesController r = _ToolTypesRepository.GetExportData(_MetrologyRepo, toolTypeId, datebegin, dateend); - string json = JsonConvert.SerializeObject(r); - return Content(json); - } - - [HttpGet] - [Route("{toolTypeId}/csv")] - public IActionResult GetCSVExport(int toolTypeId, [FromQuery] string? datebegin, [FromQuery] string? dateend, [FromQuery] string? filename) - { - byte[] r = _ToolTypesRepository.GetCSVExport(_MetrologyRepo, toolTypeId, datebegin, dateend); - return File(r, "application/octet-stream", filename); - } - [HttpGet] [Route("{toolTypeId}/{tabletype}/files/{attachmentId}/{filename}")] public IActionResult GetAttachment(int toolTypeId, string tabletype, string attachmentId, string filename) diff --git a/Server/Controllers/ExportController.cs b/Server/Controllers/ExportController.cs deleted file mode 100644 index 856404d..0000000 --- a/Server/Controllers/ExportController.cs +++ /dev/null @@ -1,160 +0,0 @@ -using Infineon.Monitoring.MonA; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Filters; -using OI.Metrology.Server.Models; -using OI.Metrology.Shared.DataModels; -using OI.Metrology.Shared.Models.Stateless; -using OI.Metrology.Shared.ViewModels; -using System.Text; - -namespace OI.Metrology.Server.Controllers; - -public class ExportController : Controller -{ - - private readonly ILogger _Logger; - private readonly AppSettings _AppSettings; - private readonly bool _IsTestDatabase; - private readonly IMetrologyRepository _MetrologyRepository; - - public ExportController(AppSettings appSettings, ILogger logger, IMetrologyRepository metrologyRepository) - { - _Logger = logger; - _AppSettings = appSettings; - _MetrologyRepository = metrologyRepository; - _IsTestDatabase = appSettings.ConnectionString.Contains("test", StringComparison.InvariantCultureIgnoreCase); - } - - public override void OnActionExecuted(ActionExecutedContext context) - { - base.OnActionExecuted(context); - ViewBag.IsTestDatabase = _IsTestDatabase; - } - - private string GetApiUrl() => string.IsNullOrEmpty(_AppSettings.ApiUrl) ? Url.Content("~/") : _AppSettings.ApiUrl[0] == '~' ? Url.Content(_AppSettings.ApiUrl) : _AppSettings.ApiUrl; - - [HttpGet] - [Route("/Export")] - public ActionResult Index() - { - Export model = new() - { - StartTime = DateTime.Now.AddMonths(-1), - EndTime = DateTime.Now - }; - MonIn monIn = MonIn.GetInstance(); - _ = monIn.SendStatus(_AppSettings.MonASite, _AppSettings.MonAResource, "Heartbeat", State.Up); - ViewBag.ApiUrl = GetApiUrl(); - return View(model); - } - - [HttpPost] - [Route("/ExportData")] - public ActionResult ExportData(Export model) - { - ToolType? toolType = null; - if (string.IsNullOrEmpty(model.ToolType)) - ModelState.AddModelError("Exception", "Invalid selection"); - else - { - if (model.StartTime > model.EndTime) - ModelState.AddModelError("EndTime", "End time must be after start time"); - IEnumerable toolTypes = _MetrologyRepository.GetToolTypes(); - toolType = toolTypes.Where(tt => tt.ID.ToString() == model.ToolType).SingleOrDefault(); - if (toolType is null) - ModelState.AddModelError("ToolType", "Invalid selection"); - else if (string.IsNullOrWhiteSpace(toolType.ExportSPName)) - ModelState.AddModelError("ToolType", "Tool type is not exportable"); - } - if (ModelState.IsValid) - { - try - { - DateTime startDT = model.StartDate.Date.Add(model.StartTime.TimeOfDay); - DateTime endDT = model.EndDate.Date.Add(model.EndTime.TimeOfDay); - - return DoCSVExport(toolType?.ToolTypeName, toolType?.ExportSPName, startDT, endDT); - } - catch (Exception ex) - { - ModelState.AddModelError("Exception", "Error exporting data"); - ModelState.AddModelError("Exception", ex.Message); - string errorMessage = $"Error exporting: {ex}"; - _Logger.LogError(message: errorMessage); - MonIn monIn = MonIn.GetInstance(); - _ = monIn.SendStatus(_AppSettings.MonASite, _AppSettings.MonAResource, "Heartbeat", State.Warning); - } - } - ViewBag.ApiUrl = GetApiUrl(); - return View("Index", model); - } - - protected ActionResult DoCSVExport(string? toolTypeName, string? spName, DateTime startTime, DateTime endTime) - { - string fileName = string.Format("Export_{0}_{1:yyyyMMddHHmm}_to_{2:yyyyMMddHHmm}.csv", toolTypeName, startTime, endTime); - StringBuilder sb = new(); - if (spName is null) - throw new NullReferenceException(nameof(spName)); - System.Data.DataTable dt = _MetrologyRepository.ExportData(spName, startTime, endTime); - _ = sb.AppendLine(GetColumnHeaders(dt)); - foreach (System.Data.DataRow dr in dt.Rows) - _ = sb.AppendLine(GetRowData(dr)); - byte[] contents = Encoding.UTF8.GetBytes(sb.ToString()); - return File(contents, "application/octet-stream", fileName); - } - - protected static string GetRowData(System.Data.DataRow dr) - { - StringBuilder r = new(); - for (int i = 0; i < dr.Table.Columns.Count; i++) - { - if (i > 0) - _ = r.Append(','); - object v = dr[i]; - if (!Convert.IsDBNull(v)) - { - string? c = Convert.ToString(v); - if (c is not null) - _ = r.Append(FormatForCSV(c)); - } - } - return r.ToString(); - } - - protected static string GetColumnHeaders(System.Data.DataTable dt) - { - StringBuilder r = new(); - for (int i = 0; i < dt.Columns.Count; i++) - { - if (i > 0) - _ = r.Append(','); - - _ = r.Append(FormatForCSV(dt.Columns[i].ColumnName.TrimEnd('_'))); - } - return r.ToString(); - } - - protected static string FormatForCSV(string v) - { - bool doubleQuoted = false; - StringBuilder r = new(v.Length + 2); - if (v.StartsWith(' ') || v.EndsWith(' ') || v.Contains(',') || v.Contains('"')) - { - _ = r.Append('"'); - doubleQuoted = true; - } - foreach (char c in v) - { - _ = c switch - { - '\r' or '\n' => r.Append(' '), - '"' => r.Append("\"\""), - _ => r.Append(c), - }; - } - if (doubleQuoted) - _ = r.Append('"'); - return r.ToString(); - } - -} \ No newline at end of file diff --git a/Server/Repositories/ExportRepository.cs b/Server/Repositories/ExportRepository.cs index 4b5c444..ad6eb62 100644 --- a/Server/Repositories/ExportRepository.cs +++ b/Server/Repositories/ExportRepository.cs @@ -2,7 +2,9 @@ using OI.Metrology.Server.Models; using OI.Metrology.Shared.DataModels; using OI.Metrology.Shared.Models; using OI.Metrology.Shared.Models.Stateless; +using System.Data; using System.Globalization; +using System.Text; using System.Text.Json; namespace OI.Metrology.Server.Repository; @@ -160,4 +162,86 @@ public class ExportRepository : IExportRepository return result; } + Result IExportRepository.GetExportData(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend) + { + Result? r; + DateTime dateEnd = dateend is null ? DateTime.Now : DateTime.Parse(dateend); + DateTime dateBegin = datebegin is null ? dateEnd.AddMonths(-1) : DateTime.Parse(datebegin); + ToolType tt = metrologyRepository.GetToolTypeByID(toolTypeId); + if (string.IsNullOrEmpty(tt.ExportSPName)) + throw new NullReferenceException(nameof(tt.ExportSPName)); + DataTable dataTable = metrologyRepository.ExportData(tt.ExportSPName, dateBegin, dateEnd); + r = new() + { + Results = dataTable, + TotalRows = dataTable.Rows.Count, + }; + return r; + } + + protected static string FormatForCSV(string v) + { + StringBuilder result = new(v.Length + 2); + bool doubleQuoted = false; + if (v.StartsWith(' ') || v.EndsWith(' ') || v.Contains(',') || v.Contains('"')) + { + _ = result.Append('"'); + doubleQuoted = true; + } + foreach (char c in v) + { + _ = c switch + { + '\r' or '\n' => result.Append(' '), + '"' => result.Append("\"\""), + _ => result.Append(c), + }; + } + if (doubleQuoted) + _ = result.Append('"'); + return result.ToString(); + } + + protected static string GetColumnHeaders(DataTable dataTable) + { + StringBuilder result = new(); + for (int i = 0; i < dataTable.Columns.Count; i++) + { + if (i > 0) + _ = result.Append(','); + _ = result.Append(FormatForCSV(dataTable.Columns[i].ColumnName.TrimEnd('_'))); + } + return result.ToString(); + } + + protected static string GetRowData(DataRow dr) + { + StringBuilder result = new(); + for (int i = 0; i < dr.Table.Columns.Count; i++) + { + if (i > 0) + _ = result.Append(','); + object v = dr[i]; + if (v is not null && !Convert.IsDBNull(v)) + _ = result.Append(FormatForCSV(string.Concat(Convert.ToString(v)))); + } + return result.ToString(); + } + + string IExportRepository.GetCSVExport(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend) + { + string results; + Result result; + IExportRepository repository = this; + result = repository.GetExportData(metrologyRepository, toolTypeId, datebegin, dateend); + if (result.Results is null) + throw new NullReferenceException(nameof(result.Results)); + StringBuilder stringBuilder = new(); + _ = stringBuilder.AppendLine(GetColumnHeaders(result.Results)); + foreach (DataRow dr in result.Results.Rows) + _ = stringBuilder.AppendLine(GetRowData(dr)); + results = stringBuilder.ToString(); + return results; + } + } \ No newline at end of file diff --git a/Server/Repositories/ToolTypesRepository.cs b/Server/Repositories/ToolTypesRepository.cs index 0ded8db..0720ef5 100644 --- a/Server/Repositories/ToolTypesRepository.cs +++ b/Server/Repositories/ToolTypesRepository.cs @@ -3,7 +3,6 @@ using OI.Metrology.Shared.DataModels; using OI.Metrology.Shared.Models.Stateless; using OI.Metrology.Shared.Services; using System.Data; -using System.Text; using System.Text.Json; namespace OI.Metrology.Server.Repository; @@ -237,96 +236,4 @@ public class ToolTypesRepository : IToolTypesRepository return result; } - Result IToolTypesRepository.GetExportData(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend) - { - Result? r; - if (!string.IsNullOrEmpty(_MockRoot)) - { - string json = File.ReadAllText(Path.Combine(string.Concat(AppContext.BaseDirectory, _MockRoot), $"{_RepositoryName}-{nameof(IToolTypesRepository.GetExportData)}.json")); - r = Newtonsoft.Json.JsonConvert.DeserializeObject>(json); - if (r is null) - throw new NullReferenceException(nameof(r)); - } - else - { - DateTime dateEnd = dateend is null ? DateTime.Now : DateTime.Parse(dateend); - DateTime dateBegin = datebegin is null ? dateEnd.AddMonths(-1) : DateTime.Parse(datebegin); - ToolType tt = metrologyRepository.GetToolTypeByID(toolTypeId); - if (string.IsNullOrEmpty(tt.ExportSPName)) - throw new NullReferenceException(nameof(tt.ExportSPName)); - DataTable dataTable = metrologyRepository.ExportData(tt.ExportSPName, dateBegin, dateEnd); - r = new() - { - Results = dataTable, - TotalRows = dataTable.Rows.Count, - }; - } - return r; - } - - protected static string FormatForCSV(string v) - { - StringBuilder result = new(v.Length + 2); - bool doubleQuoted = false; - if (v.StartsWith(' ') || v.EndsWith(' ') || v.Contains(',') || v.Contains('"')) - { - _ = result.Append('"'); - doubleQuoted = true; - } - foreach (char c in v) - { - _ = c switch - { - '\r' or '\n' => result.Append(' '), - '"' => result.Append("\"\""), - _ => result.Append(c), - }; - } - if (doubleQuoted) - _ = result.Append('"'); - return result.ToString(); - } - - protected static string GetColumnHeaders(DataTable dataTable) - { - StringBuilder result = new(); - for (int i = 0; i < dataTable.Columns.Count; i++) - { - if (i > 0) - _ = result.Append(','); - _ = result.Append(FormatForCSV(dataTable.Columns[i].ColumnName.TrimEnd('_'))); - } - return result.ToString(); - } - - protected static string GetRowData(DataRow dr) - { - StringBuilder result = new(); - for (int i = 0; i < dr.Table.Columns.Count; i++) - { - if (i > 0) - _ = result.Append(','); - object v = dr[i]; - if (v is not null && !Convert.IsDBNull(v)) - _ = result.Append(FormatForCSV(string.Concat(Convert.ToString(v)))); - } - return result.ToString(); - } - - byte[] IToolTypesRepository.GetCSVExport(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend) - { - byte[] results; - Result result; - IToolTypesRepository repository = this; - result = repository.GetExportData(metrologyRepository, toolTypeId, datebegin, dateend); - if (result.Results is null) - throw new NullReferenceException(nameof(result.Results)); - StringBuilder stringBuilder = new(); - _ = stringBuilder.AppendLine(GetColumnHeaders(result.Results)); - foreach (DataRow dr in result.Results.Rows) - _ = stringBuilder.AppendLine(GetRowData(dr)); - results = Encoding.UTF8.GetBytes(stringBuilder.ToString()); - return results; - } - } \ No newline at end of file diff --git a/Server/Views/Export/Index.cshtml b/Server/Views/Export/Index.cshtml deleted file mode 100644 index 1dd8b82..0000000 --- a/Server/Views/Export/Index.cshtml +++ /dev/null @@ -1,96 +0,0 @@ -@using OI.Metrology.Shared.ViewModels -@model OI.Metrology.Shared.ViewModels.Export -@{ - ViewData["Title"] = "Export Data"; -} - - - -

Export Data

- -
- -
-
- -
- @Html.ValidationMessage("ToolType", new { @class = "text-danger" }) -
-
- -
-
- @Html.ValidationMessage("StartDate", new { @class = "text-danger" }) -
-
- -
-
- @Html.ValidationMessage("EndDate", new { @class = "text-danger" }) -
-
- -
- -
- @Html.ValidationMessage("Exception", new { @class = "text-danger" }) -
-
- -
- - \ No newline at end of file diff --git a/Server/Views/Shared/_Layout.cshtml b/Server/Views/Shared/_Layout.cshtml index 06da336..061b927 100644 --- a/Server/Views/Shared/_Layout.cshtml +++ b/Server/Views/Shared/_Layout.cshtml @@ -6,41 +6,41 @@ @ViewBag.Title - - - - - - - + - - @@ -63,8 +63,8 @@ @@ -99,9 +99,9 @@
- - @RenderSection("scripts", required: false) diff --git a/Server/wwwroot/index.html b/Server/wwwroot/index.html index a9f88d5..6c3658b 100644 --- a/Server/wwwroot/index.html +++ b/Server/wwwroot/index.html @@ -6,41 +6,41 @@ Run Information - - - - - - - - @@ -54,7 +54,8 @@ @@ -171,11 +172,11 @@
- - - diff --git a/Shared/Models/Stateless/IExportRepository.cs b/Shared/Models/Stateless/IExportRepository.cs index 3df9436..6b58691 100644 --- a/Shared/Models/Stateless/IExportRepository.cs +++ b/Shared/Models/Stateless/IExportRepository.cs @@ -1,4 +1,5 @@ using OI.Metrology.Shared.DataModels; +using System.Data; namespace OI.Metrology.Shared.Models.Stateless; @@ -9,5 +10,7 @@ public interface IExportRepository Result GetHeaders(HeaderCommon headerCommon); Result GetLogistics(HeaderCommon headerCommon); string GetProcessDataStandardFormat(HeaderCommon headerCommon); + string GetCSVExport(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend); + Result GetExportData(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend); } \ No newline at end of file diff --git a/Shared/Models/Stateless/IToolTypesRepository.cs b/Shared/Models/Stateless/IToolTypesRepository.cs index df91cb6..505d473 100644 --- a/Shared/Models/Stateless/IToolTypesRepository.cs +++ b/Shared/Models/Stateless/IToolTypesRepository.cs @@ -10,10 +10,8 @@ public interface IToolTypesRepository Result Index(IMetrologyRepository metrologyRepository); Result GetData(IMetrologyRepository metrologyRepository, int id, long headerid); Result GetHeaderFields(IMetrologyRepository metrologyRepository, int id, long headerid); - byte[] GetCSVExport(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend); Result GetHeaderTitles(IMetrologyRepository metrologyRepository, int id, int? page, int? pagesize); Result GetToolTypeMetadata(IMetrologyRepository metrologyRepository, int id, string sortby = ""); - Result GetExportData(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend); string? OIExport(IMetrologyRepository metrologyRepository, IAttachmentsService attachmentsService, int toolTypeId, long headerid); Result GetHeaders(IMetrologyRepository metrologyRepository, int id, string? datebegin, string? dateend, int? page, int? pagesize, long? headerid); (string?, string?, Stream?) GetAttachment(IMetrologyRepository metrologyRepository, IAttachmentsService attachmentsService, int toolTypeId, string tabletype, string attachmentId, string filename); diff --git a/Static/.vscode/tasks.json b/Static/.vscode/tasks.json new file mode 100644 index 0000000..c3ef00e --- /dev/null +++ b/Static/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "shell", + "label": "MakeDirctory", + "command": "mkdir", + "args": [ + "D:\\web-sites\\OI-Metrology\\pp-6737ddfb-_______-OI-Metrology-Release" + ], + }, + { + "type": "shell", + "label": "CopySite", + "command": "robocopy", + "args": [ + "L:\\DevOps\\Mesa_FI\\OI-Metrology\\Static", + "D:\\web-sites\\OI-Metrology\\pp-6737ddfb-_______-OI-Metrology-Release\\Static", + "/E", + "/MT:6", + "/NFL", + "/NDL", + "/NJH", + "/NJS" + ], + } + ] +} \ No newline at end of file diff --git a/Static/AwaitingDispo/index.html b/Static/AwaitingDispo/index.html new file mode 100644 index 0000000..d20de07 --- /dev/null +++ b/Static/AwaitingDispo/index.html @@ -0,0 +1,158 @@ + + + + + + + Run Information + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Run Information

+ +
+
+ +
+
+
+ +
+
+
+
+ +
+
+
   +
+ +
   +
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+

© 2024 - Infineon Technologies

+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/Static/Export/index.html b/Static/Export/index.html new file mode 100644 index 0000000..d20de07 --- /dev/null +++ b/Static/Export/index.html @@ -0,0 +1,158 @@ + + + + + + + Run Information + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Run Information

+ +
+
+ +
+
+
+ +
+
+
+
+ +
+
+
   +
+ +
   +
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+

© 2024 - Infineon Technologies

+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/Static/Metrology/AwaitingDispo/index.html b/Static/Metrology/AwaitingDispo/index.html new file mode 100644 index 0000000..d20de07 --- /dev/null +++ b/Static/Metrology/AwaitingDispo/index.html @@ -0,0 +1,158 @@ + + + + + + + Run Information + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Run Information

+ +
+
+ +
+
+
+ +
+
+
+
+ +
+
+
   +
+ +
   +
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+

© 2024 - Infineon Technologies

+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/Static/Metrology/Export/index.html b/Static/Metrology/Export/index.html new file mode 100644 index 0000000..d20de07 --- /dev/null +++ b/Static/Metrology/Export/index.html @@ -0,0 +1,158 @@ + + + + + + + Run Information + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Run Information

+ +
+
+ +
+
+
+ +
+
+
+
+ +
+
+
   +
+ +
   +
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+

© 2024 - Infineon Technologies

+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/Static/Metrology/RunHeaders/index.html b/Static/Metrology/RunHeaders/index.html new file mode 100644 index 0000000..d20de07 --- /dev/null +++ b/Static/Metrology/RunHeaders/index.html @@ -0,0 +1,158 @@ + + + + + + + Run Information + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Run Information

+ +
+
+ +
+
+
+ +
+
+
+
+ +
+
+
   +
+ +
   +
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+

© 2024 - Infineon Technologies

+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/Static/Metrology/RunInfo/index.html b/Static/Metrology/RunInfo/index.html new file mode 100644 index 0000000..d20de07 --- /dev/null +++ b/Static/Metrology/RunInfo/index.html @@ -0,0 +1,158 @@ + + + + + + + Run Information + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Run Information

+ +
+
+ +
+
+
+ +
+
+
+
+ +
+
+
   +
+ +
   +
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+

© 2024 - Infineon Technologies

+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/Static/Metrology/index.html b/Static/Metrology/index.html new file mode 100644 index 0000000..d20de07 --- /dev/null +++ b/Static/Metrology/index.html @@ -0,0 +1,158 @@ + + + + + + + Run Information + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Run Information

+ +
+
+ +
+
+
+ +
+
+
+
+ +
+
+
   +
+ +
   +
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+

© 2024 - Infineon Technologies

+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/Static/RunHeaders/index.html b/Static/RunHeaders/index.html new file mode 100644 index 0000000..d20de07 --- /dev/null +++ b/Static/RunHeaders/index.html @@ -0,0 +1,158 @@ + + + + + + + Run Information + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Run Information

+ +
+
+ +
+
+
+ +
+
+
+
+ +
+
+
   +
+ +
   +
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+

© 2024 - Infineon Technologies

+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/Static/RunInfo/index.html b/Static/RunInfo/index.html new file mode 100644 index 0000000..d20de07 --- /dev/null +++ b/Static/RunInfo/index.html @@ -0,0 +1,158 @@ + + + + + + + Run Information + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Run Information

+ +
+
+ +
+
+
+ +
+
+
+
+ +
+
+
   +
+ +
   +
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+

© 2024 - Infineon Technologies

+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/Static/awaiting-disposition.html b/Static/awaiting-disposition.html index 4a6201d..889e8e7 100644 --- a/Static/awaiting-disposition.html +++ b/Static/awaiting-disposition.html @@ -6,24 +6,24 @@ Awaiting Disposition - + - - + - - + + - - - - - + + + + + - + - - + + @@ -36,16 +36,16 @@