Host from Windows

This commit is contained in:
Mike Phares 2024-06-17 17:11:36 -07:00
parent 6737ddfb59
commit da3e839a48
36 changed files with 1918 additions and 667 deletions

View File

@ -4,6 +4,7 @@ namespace OI.Metrology.Server.ApiControllers;
using OI.Metrology.Shared.DataModels; using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Models.Stateless; using OI.Metrology.Shared.Models.Stateless;
using System.Data;
using System.Text.Json; using System.Text.Json;
[Route("api/[controller]")] [Route("api/[controller]")]
@ -11,9 +12,13 @@ public class ExportController : Controller, IExportController<IActionResult>
{ {
private readonly IExportRepository _ExportRepository; private readonly IExportRepository _ExportRepository;
private readonly IMetrologyRepository _MetrologyRepository;
public ExportController(IExportRepository exportRepository) => public ExportController(IExportRepository exportRepository, IMetrologyRepository metrologyRepository)
{
_ExportRepository = exportRepository; _ExportRepository = exportRepository;
_MetrologyRepository = metrologyRepository;
}
private static string? GetJson(Stream stream) private static string? GetJson(Stream stream)
{ {
@ -79,4 +84,21 @@ public class ExportController : Controller, IExportController<IActionResult>
public IActionResult PostProcessDataStandardFormat() => public IActionResult PostProcessDataStandardFormat() =>
Content(_ExportRepository.GetProcessDataStandardFormat(GetHeaderCommon(Request.Body))); Content(_ExportRepository.GetProcessDataStandardFormat(GetHeaderCommon(Request.Body)));
[HttpGet]
[Route("{toolTypeId}/export")]
public IActionResult GetExportData(int toolTypeId, [FromQuery] string? datebegin, [FromQuery] string? dateend)
{
Result<DataTable> 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);
}
} }

View File

@ -66,23 +66,6 @@ public class ToolTypesController : Controller, IToolTypesController<IActionResul
return Content(json); return Content(json);
} }
[HttpGet]
[Route("{toolTypeId}/export")]
public IActionResult GetExportData(int toolTypeId, [FromQuery] string? datebegin, [FromQuery] string? dateend)
{
Shared.DataModels.Result<DataTable> 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] [HttpGet]
[Route("{toolTypeId}/{tabletype}/files/{attachmentId}/{filename}")] [Route("{toolTypeId}/{tabletype}/files/{attachmentId}/{filename}")]
public IActionResult GetAttachment(int toolTypeId, string tabletype, string attachmentId, string filename) public IActionResult GetAttachment(int toolTypeId, string tabletype, string attachmentId, string filename)

View File

@ -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<ExportController> 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<ToolType> 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();
}
}

View File

@ -2,7 +2,9 @@ using OI.Metrology.Server.Models;
using OI.Metrology.Shared.DataModels; using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Models; using OI.Metrology.Shared.Models;
using OI.Metrology.Shared.Models.Stateless; using OI.Metrology.Shared.Models.Stateless;
using System.Data;
using System.Globalization; using System.Globalization;
using System.Text;
using System.Text.Json; using System.Text.Json;
namespace OI.Metrology.Server.Repository; namespace OI.Metrology.Server.Repository;
@ -160,4 +162,86 @@ public class ExportRepository : IExportRepository
return result; return result;
} }
Result<DataTable> IExportRepository.GetExportData(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend)
{
Result<DataTable>? 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<DataTable> 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;
}
} }

View File

@ -3,7 +3,6 @@ using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Models.Stateless; using OI.Metrology.Shared.Models.Stateless;
using OI.Metrology.Shared.Services; using OI.Metrology.Shared.Services;
using System.Data; using System.Data;
using System.Text;
using System.Text.Json; using System.Text.Json;
namespace OI.Metrology.Server.Repository; namespace OI.Metrology.Server.Repository;
@ -237,96 +236,4 @@ public class ToolTypesRepository : IToolTypesRepository
return result; return result;
} }
Result<DataTable> IToolTypesRepository.GetExportData(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend)
{
Result<DataTable>? 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<Result<DataTable>>(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<DataTable> 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;
}
} }

View File

@ -1,96 +0,0 @@
@using OI.Metrology.Shared.ViewModels
@model OI.Metrology.Shared.ViewModels.Export
@{
ViewData["Title"] = "Export Data";
}
<style>
td {
padding-bottom: 2em;
padding-right: 1em;
}
</style>
<h3>Export Data</h3>
<hr />
<form asp-controller="Export" asp-action="ExportData" method="post" class="form-inline">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType" name="ToolType"></div>
@Html.ValidationMessage("ToolType", new { @class = "text-danger" })
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDateControl"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTimeControl"></div>
@Html.ValidationMessage("StartDate", new { @class = "text-danger" })
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDateControl"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTimeControl"></div>
@Html.ValidationMessage("EndDate", new { @class = "text-danger" })
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Export Data</button>
</div>
<div class="form-group">
@Html.ValidationMessage("Exception", new { @class = "text-danger" })
</div>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
</form>
<script>
$(document).ready(function () {
var apiUrl = "@ViewBag.ApiUrl";
$("#ToolType").igCombo({
dataSource: apiUrl + '/tooltypes',
responseDataKey: "Results",
textKey: "ToolTypeName",
valueKey: "ID",
mode: "dropdown",
width: 150
});
var startTime = new Date("@Model.StartTime.ToString("yyyy-MM-ddTHH:mm")");
$("#StartDateControl").igDatePicker({
dateInputFormat: "date",
value: startTime,
width: 125,
inputName: "StartDate",
});
$("#StartTimeControl").igTimePicker({
dateInputFormat: "time",
value: startTime,
width: 110,
inputName: "StartTime",
});
var endTime = new Date("@Model.EndTime.ToString("yyyy-MM-ddTHH:mm")");
$("#EndDateControl").igDatePicker({
dateInputFormat: "date",
value: endTime,
width: 125,
inputName: "EndDate",
});
$("#EndTimeControl").igTimePicker({
dateInputFormat: "time",
value: endTime,
width: 110,
inputName: "EndTime",
});
});
</script>

View File

@ -6,41 +6,41 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title> <title>@ViewBag.Title</title>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/modernizr-3.6.0-custom.js?no-cache=2024-06-14-16-48" <script src="https://oi-metrology-viewer-prod.mes.infineon.com/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<link href="https://metrology-viewer-prod.mes.infineon.com/styles/bootstrap.min.css?no-cache=2024-06-14-16-48" <link href="https://oi-metrology-viewer-prod.mes.infineon.com/styles/bootstrap.min.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<link <link
href="https://metrology-viewer-prod.mes.infineon.com/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-14-16-48" href="https://oi-metrology-viewer-prod.mes.infineon.com/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<link <link
href="https://metrology-viewer-prod.mes.infineon.com/igniteui/css/structure/infragistics.css?no-cache=2024-06-14-16-48" href="https://oi-metrology-viewer-prod.mes.infineon.com/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<link href="https://metrology-viewer-prod.mes.infineon.com/styles/site-server.css?no-cache=2024-06-14-16-48" <link href="https://oi-metrology-viewer-prod.mes.infineon.com/styles/site-server.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<link href="https://metrology-viewer-prod.mes.infineon.com/styles/index.css?no-cache=2024-06-14-16-48" <link href="https://oi-metrology-viewer-prod.mes.infineon.com/styles/index.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<script src="https://metrology-viewer-prod.mes.infineon.com/js/jquery-3.6.0.min.js?no-cache=2024-06-14-16-48" <script src="https://oi-metrology-viewer-prod.mes.infineon.com/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/jquery-ui.min.js?no-cache=2024-06-14-16-48" <script src="https://oi-metrology-viewer-prod.mes.infineon.com/js/jquery-ui.min.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script <script
src="https://metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.core.js?no-cache=2024-06-14-16-48" src="https://oi-metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script <script
src="https://metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.lob.js?no-cache=2024-06-14-16-48" src="https://oi-metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script <script
src="https://metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.dv.js?no-cache=2024-06-14-16-48" src="https://oi-metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/chart-4.3.0.min.js" type="module"></script> <script src="https://oi-metrology-viewer-prod.mes.infineon.com/js/chart-4.3.0.min.js" type="module"></script>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/common.js?no-cache=2024-06-14-16-48" <script src="https://oi-metrology-viewer-prod.mes.infineon.com/js/common.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/site-server.js?no-cache=2024-06-14-16-48" <script src="https://oi-metrology-viewer-prod.mes.infineon.com/js/site-server.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
</head> </head>
@ -63,8 +63,8 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<div class="navbar-brand"> <div class="navbar-brand">
<a href="https://metrology-viewer-prod.mes.infineon.com"><img <a href="https://oi-metrology-viewer-prod.mes.infineon.com"><img
src="https://metrology-viewer-prod.mes.infineon.com/images/IFX_LOGO_RGB.png" src="https://oi-metrology-viewer-prod.mes.infineon.com/images/IFX_LOGO_RGB.png"
height="20" /></a> height="20" /></a>
OI Metrology Viewer OI Metrology Viewer
</div> </div>
@ -99,9 +99,9 @@
<div id="MessageModal"></div> <div id="MessageModal"></div>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/bootstrap.min.js?no-cache=2024-06-14-16-48" <script src="https://oi-metrology-viewer-prod.mes.infineon.com/js/bootstrap.min.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/respond.min.js?no-cache=2024-06-14-16-48" <script src="https://oi-metrology-viewer-prod.mes.infineon.com/js/respond.min.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
@RenderSection("scripts", required: false) @RenderSection("scripts", required: false)
</body> </body>

View File

@ -6,41 +6,41 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Run Information</title> <title>Run Information</title>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/modernizr-3.6.0-custom.js?no-cache=2024-06-14-15-53" <script src="https://metrology-viewer-prod.mes.infineon.com/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<link href="https://metrology-viewer-prod.mes.infineon.com/styles/bootstrap.min.css?no-cache=2024-06-14-15-53" <link href="https://metrology-viewer-prod.mes.infineon.com/styles/bootstrap.min.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<link <link
href="https://metrology-viewer-prod.mes.infineon.com/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-14-15-53" href="https://metrology-viewer-prod.mes.infineon.com/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<link <link
href="https://metrology-viewer-prod.mes.infineon.com/igniteui/css/structure/infragistics.css?no-cache=2024-06-14-15-53" href="https://metrology-viewer-prod.mes.infineon.com/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<link href="https://metrology-viewer-prod.mes.infineon.com/styles/site-server.css?no-cache=2024-06-14-15-53" <link href="https://metrology-viewer-prod.mes.infineon.com/styles/site-server.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<link href="https://metrology-viewer-prod.mes.infineon.com/styles/index.css?no-cache=2024-06-14-15-53" <link href="https://metrology-viewer-prod.mes.infineon.com/styles/index.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<script src="https://metrology-viewer-prod.mes.infineon.com/js/jquery-3.6.0.min.js?no-cache=2024-06-14-15-53" <script src="https://metrology-viewer-prod.mes.infineon.com/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/jquery-ui.min.js?no-cache=2024-06-14-15-53" <script src="https://metrology-viewer-prod.mes.infineon.com/js/jquery-ui.min.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script <script
src="https://metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.core.js?no-cache=2024-06-14-15-53" src="https://metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script <script
src="https://metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.lob.js?no-cache=2024-06-14-15-53" src="https://metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script <script
src="https://metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.dv.js?no-cache=2024-06-14-15-53" src="https://metrology-viewer-prod.mes.infineon.com/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/chart-4.3.0.min.js" type="module"></script> <script src="https://metrology-viewer-prod.mes.infineon.com/js/chart-4.3.0.min.js" type="module"></script>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/common.js?no-cache=2024-06-14-15-53" <script src="https://metrology-viewer-prod.mes.infineon.com/js/common.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/site-server.js?no-cache=2024-06-14-15-53" <script src="https://metrology-viewer-prod.mes.infineon.com/js/site-server.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
</head> </head>
@ -54,7 +54,8 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<div class="navbar-brand"> <div class="navbar-brand">
<a href="https://metrology-viewer-prod.mes.infineon.com"><img src="images/IFX_LOGO_RGB.png" <a href="https://metrology-viewer-prod.mes.infineon.com"><img
src="https://metrology-viewer-prod.mes.infineon.com/images/IFX_LOGO_RGB.png"
height="20" /></a> height="20" /></a>
OI Metrology Viewer OI Metrology Viewer
</div> </div>
@ -171,11 +172,11 @@
<div id="MessageModal"></div> <div id="MessageModal"></div>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/bootstrap.min.js?no-cache=2024-06-14-15-53" <script src="https://metrology-viewer-prod.mes.infineon.com/js/bootstrap.min.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/respond.min.js?no-cache=2024-06-14-15-53" <script src="https://metrology-viewer-prod.mes.infineon.com/js/respond.min.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
<script src="https://metrology-viewer-prod.mes.infineon.com/js/index.js?no-cache=2024-06-14-15-53" <script src="https://metrology-viewer-prod.mes.infineon.com/js/index.js?no-cache=2024-06-17-17-10"
type="text/javascript"></script> type="text/javascript"></script>
</body> </body>

View File

@ -1,4 +1,5 @@
using OI.Metrology.Shared.DataModels; using OI.Metrology.Shared.DataModels;
using System.Data;
namespace OI.Metrology.Shared.Models.Stateless; namespace OI.Metrology.Shared.Models.Stateless;
@ -9,5 +10,7 @@ public interface IExportRepository
Result<HeaderCommon[]> GetHeaders(HeaderCommon headerCommon); Result<HeaderCommon[]> GetHeaders(HeaderCommon headerCommon);
Result<HeaderCommon[]> GetLogistics(HeaderCommon headerCommon); Result<HeaderCommon[]> GetLogistics(HeaderCommon headerCommon);
string GetProcessDataStandardFormat(HeaderCommon headerCommon); string GetProcessDataStandardFormat(HeaderCommon headerCommon);
string GetCSVExport(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend);
Result<DataTable> GetExportData(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend);
} }

View File

@ -10,10 +10,8 @@ public interface IToolTypesRepository
Result<ToolTypeNameId[]> Index(IMetrologyRepository metrologyRepository); Result<ToolTypeNameId[]> Index(IMetrologyRepository metrologyRepository);
Result<DataTable> GetData(IMetrologyRepository metrologyRepository, int id, long headerid); Result<DataTable> GetData(IMetrologyRepository metrologyRepository, int id, long headerid);
Result<ColumnValue[]> GetHeaderFields(IMetrologyRepository metrologyRepository, int id, long headerid); Result<ColumnValue[]> GetHeaderFields(IMetrologyRepository metrologyRepository, int id, long headerid);
byte[] GetCSVExport(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend);
Result<HeaderCommon[]> GetHeaderTitles(IMetrologyRepository metrologyRepository, int id, int? page, int? pagesize); Result<HeaderCommon[]> GetHeaderTitles(IMetrologyRepository metrologyRepository, int id, int? page, int? pagesize);
Result<ToolTypeMetadataResult> GetToolTypeMetadata(IMetrologyRepository metrologyRepository, int id, string sortby = ""); Result<ToolTypeMetadataResult> GetToolTypeMetadata(IMetrologyRepository metrologyRepository, int id, string sortby = "");
Result<DataTable> GetExportData(IMetrologyRepository metrologyRepository, int toolTypeId, string? datebegin, string? dateend);
string? OIExport(IMetrologyRepository metrologyRepository, IAttachmentsService attachmentsService, int toolTypeId, long headerid); string? OIExport(IMetrologyRepository metrologyRepository, IAttachmentsService attachmentsService, int toolTypeId, long headerid);
Result<DataTable> GetHeaders(IMetrologyRepository metrologyRepository, int id, string? datebegin, string? dateend, int? page, int? pagesize, long? headerid); Result<DataTable> 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); (string?, string?, Stream?) GetAttachment(IMetrologyRepository metrologyRepository, IAttachmentsService attachmentsService, int toolTypeId, string tabletype, string attachmentId, string filename);

28
Static/.vscode/tasks.json vendored Normal file
View File

@ -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"
],
}
]
}

View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Run Information</title>
<script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/index.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer
</div>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="/index.html" class="alert-info">Run Information</a></li>
<li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul>
<p class="navbar-text navbar-right">
&nbsp;
</p>
</div>
</div>
</div>
<div class="container-fluid body-content">
<h4>Run Information</h4>
<form class="form-inline mb-4">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDate"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTime"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDate"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTime"></div>
</div>&nbsp;&nbsp;
<div class="form-group">
<input class="btn btn-primary" type="button" value="Load Headers" id="LoadHeadersButton" />
</div>&nbsp;&nbsp;
<div class="form-group">
<label class="form-check-label" for="chkAutoRefresh">
Auto-Refresh
</label>
<input class="form-check-input" type="checkbox" id="chkAutoRefresh">
</div>
<div class="form-group">
<label class="form-check-label" for="chkCopyOnGet">
Copy-On-Get
</label>
<input class="form-check-input" type="checkbox" id="chkCopyOnGet">
</div>
</form>
<div style="height: 300px;" id="HeaderGridDiv">
<span id="ToolTypeID" hidden></span>
<table id="HeaderGrid"></table>
</div>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-xs-1">
<input type="button" class="btn" id="GetDataButton" value="Get Data" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ReviewButton" value="Review" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="RecipeParametersButton" value="Parameters" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ViewButton" value="View" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="PinButton" value="Pin" disabled />
</div>
</div>
<div id="DetailsDiv" hidden>
<span id="HeaderId" hidden></span>
<span id="HeaderAttachmentId" hidden></span>
<div style="padding-bottom: 20px;" id="DetailsGridDiv">
<table id="DetailsGrid"></table>
</div>
<div id="ExportDiv" style="margin-top: 10px;" hidden>
<input type="button" value="Send to OpenInsight" id="OIExportButton" />
<span id="OIExportResult" style="margin-left: 10px; font-weight: bold; color: #366b02;"></span>
</div>
<p style="margin-top: 20px;">
<iframe id="DataAttachmentFrame" style="height:900px; border-width:thin; margin-right: 10px;"
hidden></iframe>
<iframe id="HeaderAttachmentFrame" style="height:900px; border-width:thin;" hidden></iframe>
&nbsp;
<div id="DataAttachmentDiv" hidden>
<canvas id="DataAttachmentCanvas"></canvas>
</div>
<div id="HeaderAttachmentDiv" hidden>
<canvas id="HeaderAttachmentCanvas"></canvas>
</div>
</p>
</div>
<hr />
<footer>
<p>&copy; 2024 - Infineon Technologies</p>
</footer>
</div>
<div id="MessageModal"></div>
<script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/index.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body>
</html>

158
Static/Export/index.html Normal file
View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Run Information</title>
<script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/index.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer
</div>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="/index.html" class="alert-info">Run Information</a></li>
<li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul>
<p class="navbar-text navbar-right">
&nbsp;
</p>
</div>
</div>
</div>
<div class="container-fluid body-content">
<h4>Run Information</h4>
<form class="form-inline mb-4">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDate"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTime"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDate"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTime"></div>
</div>&nbsp;&nbsp;
<div class="form-group">
<input class="btn btn-primary" type="button" value="Load Headers" id="LoadHeadersButton" />
</div>&nbsp;&nbsp;
<div class="form-group">
<label class="form-check-label" for="chkAutoRefresh">
Auto-Refresh
</label>
<input class="form-check-input" type="checkbox" id="chkAutoRefresh">
</div>
<div class="form-group">
<label class="form-check-label" for="chkCopyOnGet">
Copy-On-Get
</label>
<input class="form-check-input" type="checkbox" id="chkCopyOnGet">
</div>
</form>
<div style="height: 300px;" id="HeaderGridDiv">
<span id="ToolTypeID" hidden></span>
<table id="HeaderGrid"></table>
</div>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-xs-1">
<input type="button" class="btn" id="GetDataButton" value="Get Data" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ReviewButton" value="Review" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="RecipeParametersButton" value="Parameters" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ViewButton" value="View" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="PinButton" value="Pin" disabled />
</div>
</div>
<div id="DetailsDiv" hidden>
<span id="HeaderId" hidden></span>
<span id="HeaderAttachmentId" hidden></span>
<div style="padding-bottom: 20px;" id="DetailsGridDiv">
<table id="DetailsGrid"></table>
</div>
<div id="ExportDiv" style="margin-top: 10px;" hidden>
<input type="button" value="Send to OpenInsight" id="OIExportButton" />
<span id="OIExportResult" style="margin-left: 10px; font-weight: bold; color: #366b02;"></span>
</div>
<p style="margin-top: 20px;">
<iframe id="DataAttachmentFrame" style="height:900px; border-width:thin; margin-right: 10px;"
hidden></iframe>
<iframe id="HeaderAttachmentFrame" style="height:900px; border-width:thin;" hidden></iframe>
&nbsp;
<div id="DataAttachmentDiv" hidden>
<canvas id="DataAttachmentCanvas"></canvas>
</div>
<div id="HeaderAttachmentDiv" hidden>
<canvas id="HeaderAttachmentCanvas"></canvas>
</div>
</p>
</div>
<hr />
<footer>
<p>&copy; 2024 - Infineon Technologies</p>
</footer>
</div>
<div id="MessageModal"></div>
<script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/index.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body>
</html>

View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Run Information</title>
<script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/index.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer
</div>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="/index.html" class="alert-info">Run Information</a></li>
<li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul>
<p class="navbar-text navbar-right">
&nbsp;
</p>
</div>
</div>
</div>
<div class="container-fluid body-content">
<h4>Run Information</h4>
<form class="form-inline mb-4">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDate"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTime"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDate"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTime"></div>
</div>&nbsp;&nbsp;
<div class="form-group">
<input class="btn btn-primary" type="button" value="Load Headers" id="LoadHeadersButton" />
</div>&nbsp;&nbsp;
<div class="form-group">
<label class="form-check-label" for="chkAutoRefresh">
Auto-Refresh
</label>
<input class="form-check-input" type="checkbox" id="chkAutoRefresh">
</div>
<div class="form-group">
<label class="form-check-label" for="chkCopyOnGet">
Copy-On-Get
</label>
<input class="form-check-input" type="checkbox" id="chkCopyOnGet">
</div>
</form>
<div style="height: 300px;" id="HeaderGridDiv">
<span id="ToolTypeID" hidden></span>
<table id="HeaderGrid"></table>
</div>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-xs-1">
<input type="button" class="btn" id="GetDataButton" value="Get Data" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ReviewButton" value="Review" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="RecipeParametersButton" value="Parameters" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ViewButton" value="View" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="PinButton" value="Pin" disabled />
</div>
</div>
<div id="DetailsDiv" hidden>
<span id="HeaderId" hidden></span>
<span id="HeaderAttachmentId" hidden></span>
<div style="padding-bottom: 20px;" id="DetailsGridDiv">
<table id="DetailsGrid"></table>
</div>
<div id="ExportDiv" style="margin-top: 10px;" hidden>
<input type="button" value="Send to OpenInsight" id="OIExportButton" />
<span id="OIExportResult" style="margin-left: 10px; font-weight: bold; color: #366b02;"></span>
</div>
<p style="margin-top: 20px;">
<iframe id="DataAttachmentFrame" style="height:900px; border-width:thin; margin-right: 10px;"
hidden></iframe>
<iframe id="HeaderAttachmentFrame" style="height:900px; border-width:thin;" hidden></iframe>
&nbsp;
<div id="DataAttachmentDiv" hidden>
<canvas id="DataAttachmentCanvas"></canvas>
</div>
<div id="HeaderAttachmentDiv" hidden>
<canvas id="HeaderAttachmentCanvas"></canvas>
</div>
</p>
</div>
<hr />
<footer>
<p>&copy; 2024 - Infineon Technologies</p>
</footer>
</div>
<div id="MessageModal"></div>
<script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/index.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body>
</html>

View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Run Information</title>
<script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/index.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer
</div>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="/index.html" class="alert-info">Run Information</a></li>
<li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul>
<p class="navbar-text navbar-right">
&nbsp;
</p>
</div>
</div>
</div>
<div class="container-fluid body-content">
<h4>Run Information</h4>
<form class="form-inline mb-4">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDate"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTime"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDate"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTime"></div>
</div>&nbsp;&nbsp;
<div class="form-group">
<input class="btn btn-primary" type="button" value="Load Headers" id="LoadHeadersButton" />
</div>&nbsp;&nbsp;
<div class="form-group">
<label class="form-check-label" for="chkAutoRefresh">
Auto-Refresh
</label>
<input class="form-check-input" type="checkbox" id="chkAutoRefresh">
</div>
<div class="form-group">
<label class="form-check-label" for="chkCopyOnGet">
Copy-On-Get
</label>
<input class="form-check-input" type="checkbox" id="chkCopyOnGet">
</div>
</form>
<div style="height: 300px;" id="HeaderGridDiv">
<span id="ToolTypeID" hidden></span>
<table id="HeaderGrid"></table>
</div>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-xs-1">
<input type="button" class="btn" id="GetDataButton" value="Get Data" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ReviewButton" value="Review" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="RecipeParametersButton" value="Parameters" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ViewButton" value="View" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="PinButton" value="Pin" disabled />
</div>
</div>
<div id="DetailsDiv" hidden>
<span id="HeaderId" hidden></span>
<span id="HeaderAttachmentId" hidden></span>
<div style="padding-bottom: 20px;" id="DetailsGridDiv">
<table id="DetailsGrid"></table>
</div>
<div id="ExportDiv" style="margin-top: 10px;" hidden>
<input type="button" value="Send to OpenInsight" id="OIExportButton" />
<span id="OIExportResult" style="margin-left: 10px; font-weight: bold; color: #366b02;"></span>
</div>
<p style="margin-top: 20px;">
<iframe id="DataAttachmentFrame" style="height:900px; border-width:thin; margin-right: 10px;"
hidden></iframe>
<iframe id="HeaderAttachmentFrame" style="height:900px; border-width:thin;" hidden></iframe>
&nbsp;
<div id="DataAttachmentDiv" hidden>
<canvas id="DataAttachmentCanvas"></canvas>
</div>
<div id="HeaderAttachmentDiv" hidden>
<canvas id="HeaderAttachmentCanvas"></canvas>
</div>
</p>
</div>
<hr />
<footer>
<p>&copy; 2024 - Infineon Technologies</p>
</footer>
</div>
<div id="MessageModal"></div>
<script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/index.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body>
</html>

View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Run Information</title>
<script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/index.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer
</div>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="/index.html" class="alert-info">Run Information</a></li>
<li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul>
<p class="navbar-text navbar-right">
&nbsp;
</p>
</div>
</div>
</div>
<div class="container-fluid body-content">
<h4>Run Information</h4>
<form class="form-inline mb-4">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDate"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTime"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDate"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTime"></div>
</div>&nbsp;&nbsp;
<div class="form-group">
<input class="btn btn-primary" type="button" value="Load Headers" id="LoadHeadersButton" />
</div>&nbsp;&nbsp;
<div class="form-group">
<label class="form-check-label" for="chkAutoRefresh">
Auto-Refresh
</label>
<input class="form-check-input" type="checkbox" id="chkAutoRefresh">
</div>
<div class="form-group">
<label class="form-check-label" for="chkCopyOnGet">
Copy-On-Get
</label>
<input class="form-check-input" type="checkbox" id="chkCopyOnGet">
</div>
</form>
<div style="height: 300px;" id="HeaderGridDiv">
<span id="ToolTypeID" hidden></span>
<table id="HeaderGrid"></table>
</div>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-xs-1">
<input type="button" class="btn" id="GetDataButton" value="Get Data" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ReviewButton" value="Review" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="RecipeParametersButton" value="Parameters" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ViewButton" value="View" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="PinButton" value="Pin" disabled />
</div>
</div>
<div id="DetailsDiv" hidden>
<span id="HeaderId" hidden></span>
<span id="HeaderAttachmentId" hidden></span>
<div style="padding-bottom: 20px;" id="DetailsGridDiv">
<table id="DetailsGrid"></table>
</div>
<div id="ExportDiv" style="margin-top: 10px;" hidden>
<input type="button" value="Send to OpenInsight" id="OIExportButton" />
<span id="OIExportResult" style="margin-left: 10px; font-weight: bold; color: #366b02;"></span>
</div>
<p style="margin-top: 20px;">
<iframe id="DataAttachmentFrame" style="height:900px; border-width:thin; margin-right: 10px;"
hidden></iframe>
<iframe id="HeaderAttachmentFrame" style="height:900px; border-width:thin;" hidden></iframe>
&nbsp;
<div id="DataAttachmentDiv" hidden>
<canvas id="DataAttachmentCanvas"></canvas>
</div>
<div id="HeaderAttachmentDiv" hidden>
<canvas id="HeaderAttachmentCanvas"></canvas>
</div>
</p>
</div>
<hr />
<footer>
<p>&copy; 2024 - Infineon Technologies</p>
</footer>
</div>
<div id="MessageModal"></div>
<script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/index.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body>
</html>

View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Run Information</title>
<script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/index.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer
</div>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="/index.html" class="alert-info">Run Information</a></li>
<li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul>
<p class="navbar-text navbar-right">
&nbsp;
</p>
</div>
</div>
</div>
<div class="container-fluid body-content">
<h4>Run Information</h4>
<form class="form-inline mb-4">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDate"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTime"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDate"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTime"></div>
</div>&nbsp;&nbsp;
<div class="form-group">
<input class="btn btn-primary" type="button" value="Load Headers" id="LoadHeadersButton" />
</div>&nbsp;&nbsp;
<div class="form-group">
<label class="form-check-label" for="chkAutoRefresh">
Auto-Refresh
</label>
<input class="form-check-input" type="checkbox" id="chkAutoRefresh">
</div>
<div class="form-group">
<label class="form-check-label" for="chkCopyOnGet">
Copy-On-Get
</label>
<input class="form-check-input" type="checkbox" id="chkCopyOnGet">
</div>
</form>
<div style="height: 300px;" id="HeaderGridDiv">
<span id="ToolTypeID" hidden></span>
<table id="HeaderGrid"></table>
</div>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-xs-1">
<input type="button" class="btn" id="GetDataButton" value="Get Data" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ReviewButton" value="Review" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="RecipeParametersButton" value="Parameters" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ViewButton" value="View" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="PinButton" value="Pin" disabled />
</div>
</div>
<div id="DetailsDiv" hidden>
<span id="HeaderId" hidden></span>
<span id="HeaderAttachmentId" hidden></span>
<div style="padding-bottom: 20px;" id="DetailsGridDiv">
<table id="DetailsGrid"></table>
</div>
<div id="ExportDiv" style="margin-top: 10px;" hidden>
<input type="button" value="Send to OpenInsight" id="OIExportButton" />
<span id="OIExportResult" style="margin-left: 10px; font-weight: bold; color: #366b02;"></span>
</div>
<p style="margin-top: 20px;">
<iframe id="DataAttachmentFrame" style="height:900px; border-width:thin; margin-right: 10px;"
hidden></iframe>
<iframe id="HeaderAttachmentFrame" style="height:900px; border-width:thin;" hidden></iframe>
&nbsp;
<div id="DataAttachmentDiv" hidden>
<canvas id="DataAttachmentCanvas"></canvas>
</div>
<div id="HeaderAttachmentDiv" hidden>
<canvas id="HeaderAttachmentCanvas"></canvas>
</div>
</p>
</div>
<hr />
<footer>
<p>&copy; 2024 - Infineon Technologies</p>
</footer>
</div>
<div id="MessageModal"></div>
<script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/index.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body>
</html>

158
Static/Metrology/index.html Normal file
View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Run Information</title>
<script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/index.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer
</div>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="/index.html" class="alert-info">Run Information</a></li>
<li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul>
<p class="navbar-text navbar-right">
&nbsp;
</p>
</div>
</div>
</div>
<div class="container-fluid body-content">
<h4>Run Information</h4>
<form class="form-inline mb-4">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDate"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTime"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDate"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTime"></div>
</div>&nbsp;&nbsp;
<div class="form-group">
<input class="btn btn-primary" type="button" value="Load Headers" id="LoadHeadersButton" />
</div>&nbsp;&nbsp;
<div class="form-group">
<label class="form-check-label" for="chkAutoRefresh">
Auto-Refresh
</label>
<input class="form-check-input" type="checkbox" id="chkAutoRefresh">
</div>
<div class="form-group">
<label class="form-check-label" for="chkCopyOnGet">
Copy-On-Get
</label>
<input class="form-check-input" type="checkbox" id="chkCopyOnGet">
</div>
</form>
<div style="height: 300px;" id="HeaderGridDiv">
<span id="ToolTypeID" hidden></span>
<table id="HeaderGrid"></table>
</div>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-xs-1">
<input type="button" class="btn" id="GetDataButton" value="Get Data" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ReviewButton" value="Review" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="RecipeParametersButton" value="Parameters" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ViewButton" value="View" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="PinButton" value="Pin" disabled />
</div>
</div>
<div id="DetailsDiv" hidden>
<span id="HeaderId" hidden></span>
<span id="HeaderAttachmentId" hidden></span>
<div style="padding-bottom: 20px;" id="DetailsGridDiv">
<table id="DetailsGrid"></table>
</div>
<div id="ExportDiv" style="margin-top: 10px;" hidden>
<input type="button" value="Send to OpenInsight" id="OIExportButton" />
<span id="OIExportResult" style="margin-left: 10px; font-weight: bold; color: #366b02;"></span>
</div>
<p style="margin-top: 20px;">
<iframe id="DataAttachmentFrame" style="height:900px; border-width:thin; margin-right: 10px;"
hidden></iframe>
<iframe id="HeaderAttachmentFrame" style="height:900px; border-width:thin;" hidden></iframe>
&nbsp;
<div id="DataAttachmentDiv" hidden>
<canvas id="DataAttachmentCanvas"></canvas>
</div>
<div id="HeaderAttachmentDiv" hidden>
<canvas id="HeaderAttachmentCanvas"></canvas>
</div>
</p>
</div>
<hr />
<footer>
<p>&copy; 2024 - Infineon Technologies</p>
</footer>
</div>
<div id="MessageModal"></div>
<script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/index.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body>
</html>

View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Run Information</title>
<script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/index.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer
</div>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="/index.html" class="alert-info">Run Information</a></li>
<li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul>
<p class="navbar-text navbar-right">
&nbsp;
</p>
</div>
</div>
</div>
<div class="container-fluid body-content">
<h4>Run Information</h4>
<form class="form-inline mb-4">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDate"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTime"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDate"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTime"></div>
</div>&nbsp;&nbsp;
<div class="form-group">
<input class="btn btn-primary" type="button" value="Load Headers" id="LoadHeadersButton" />
</div>&nbsp;&nbsp;
<div class="form-group">
<label class="form-check-label" for="chkAutoRefresh">
Auto-Refresh
</label>
<input class="form-check-input" type="checkbox" id="chkAutoRefresh">
</div>
<div class="form-group">
<label class="form-check-label" for="chkCopyOnGet">
Copy-On-Get
</label>
<input class="form-check-input" type="checkbox" id="chkCopyOnGet">
</div>
</form>
<div style="height: 300px;" id="HeaderGridDiv">
<span id="ToolTypeID" hidden></span>
<table id="HeaderGrid"></table>
</div>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-xs-1">
<input type="button" class="btn" id="GetDataButton" value="Get Data" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ReviewButton" value="Review" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="RecipeParametersButton" value="Parameters" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ViewButton" value="View" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="PinButton" value="Pin" disabled />
</div>
</div>
<div id="DetailsDiv" hidden>
<span id="HeaderId" hidden></span>
<span id="HeaderAttachmentId" hidden></span>
<div style="padding-bottom: 20px;" id="DetailsGridDiv">
<table id="DetailsGrid"></table>
</div>
<div id="ExportDiv" style="margin-top: 10px;" hidden>
<input type="button" value="Send to OpenInsight" id="OIExportButton" />
<span id="OIExportResult" style="margin-left: 10px; font-weight: bold; color: #366b02;"></span>
</div>
<p style="margin-top: 20px;">
<iframe id="DataAttachmentFrame" style="height:900px; border-width:thin; margin-right: 10px;"
hidden></iframe>
<iframe id="HeaderAttachmentFrame" style="height:900px; border-width:thin;" hidden></iframe>
&nbsp;
<div id="DataAttachmentDiv" hidden>
<canvas id="DataAttachmentCanvas"></canvas>
</div>
<div id="HeaderAttachmentDiv" hidden>
<canvas id="HeaderAttachmentCanvas"></canvas>
</div>
</p>
</div>
<hr />
<footer>
<p>&copy; 2024 - Infineon Technologies</p>
</footer>
</div>
<div id="MessageModal"></div>
<script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/index.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body>
</html>

158
Static/RunInfo/index.html Normal file
View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Run Information</title>
<script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/index.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer
</div>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="/index.html" class="alert-info">Run Information</a></li>
<li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul>
<p class="navbar-text navbar-right">
&nbsp;
</p>
</div>
</div>
</div>
<div class="container-fluid body-content">
<h4>Run Information</h4>
<form class="form-inline mb-4">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDate"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTime"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDate"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTime"></div>
</div>&nbsp;&nbsp;
<div class="form-group">
<input class="btn btn-primary" type="button" value="Load Headers" id="LoadHeadersButton" />
</div>&nbsp;&nbsp;
<div class="form-group">
<label class="form-check-label" for="chkAutoRefresh">
Auto-Refresh
</label>
<input class="form-check-input" type="checkbox" id="chkAutoRefresh">
</div>
<div class="form-group">
<label class="form-check-label" for="chkCopyOnGet">
Copy-On-Get
</label>
<input class="form-check-input" type="checkbox" id="chkCopyOnGet">
</div>
</form>
<div style="height: 300px;" id="HeaderGridDiv">
<span id="ToolTypeID" hidden></span>
<table id="HeaderGrid"></table>
</div>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-xs-1">
<input type="button" class="btn" id="GetDataButton" value="Get Data" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ReviewButton" value="Review" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="RecipeParametersButton" value="Parameters" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="ViewButton" value="View" disabled />
</div>
<div class="col-xs-1">
<input type="button" class="btn" id="PinButton" value="Pin" disabled />
</div>
</div>
<div id="DetailsDiv" hidden>
<span id="HeaderId" hidden></span>
<span id="HeaderAttachmentId" hidden></span>
<div style="padding-bottom: 20px;" id="DetailsGridDiv">
<table id="DetailsGrid"></table>
</div>
<div id="ExportDiv" style="margin-top: 10px;" hidden>
<input type="button" value="Send to OpenInsight" id="OIExportButton" />
<span id="OIExportResult" style="margin-left: 10px; font-weight: bold; color: #366b02;"></span>
</div>
<p style="margin-top: 20px;">
<iframe id="DataAttachmentFrame" style="height:900px; border-width:thin; margin-right: 10px;"
hidden></iframe>
<iframe id="HeaderAttachmentFrame" style="height:900px; border-width:thin;" hidden></iframe>
&nbsp;
<div id="DataAttachmentDiv" hidden>
<canvas id="DataAttachmentCanvas"></canvas>
</div>
<div id="HeaderAttachmentDiv" hidden>
<canvas id="HeaderAttachmentCanvas"></canvas>
</div>
</p>
</div>
<hr />
<footer>
<p>&copy; 2024 - Infineon Technologies</p>
</footer>
</div>
<div id="MessageModal"></div>
<script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/index.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body>
</html>

View File

@ -6,24 +6,24 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Awaiting Disposition</title> <title>Awaiting Disposition</title>
<script src="js/modernizr-3.6.0-custom.js?no-cache=2024-06-14-15-41" type="text/javascript"></script> <script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="styles/bootstrap.min.css?no-cache=2024-06-14-15-41" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-14-15-41" <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<link href="igniteui/css/structure/infragistics.css?no-cache=2024-06-14-15-41" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="styles/site-server.css?no-cache=2024-06-14-15-41" rel="stylesheet" /> <link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="js/jquery-3.6.0.min.js?no-cache=2024-06-14-15-41" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/jquery-ui.min.js?no-cache=2024-06-14-15-41" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="igniteui/js/infragistics.core.js?no-cache=2024-06-14-15-41" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="igniteui/js/infragistics.lob.js?no-cache=2024-06-14-15-41" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="igniteui/js/infragistics.dv.js?no-cache=2024-06-14-15-41" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/chart-4.3.0.min.js" type="module"></script> <script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="js/common.js?no-cache=2024-06-14-15-41" type="text/javascript"></script> <script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/site-server.js?no-cache=2024-06-14-15-41" type="text/javascript"></script> <script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -36,16 +36,16 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<div class="navbar-brand"> <div class="navbar-brand">
<a href="/"><img src="images/IFX_LOGO_RGB.png" height="20" /></a> <a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer OI Metrology Viewer
</div> </div>
</div> </div>
<div class="navbar-collapse collapse"> <div class="navbar-collapse collapse">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li><a href="awaiting-disposition.html" class="alert-info">Awaiting Disposition</a></li> <li><a href="/awaiting-disposition.html" class="alert-info">Awaiting Disposition</a></li>
<li><a href="index.html">Run Information</a></li> <li><a href="/index.html">Run Information</a></li>
<li><a href="run-headers.html">Run Headers</a></li> <li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="https://oi-metrology-viewer-prod.mes.infineon.com/Export" target="_blank">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
@ -77,9 +77,9 @@
<div id="MessageModal"></div> <div id="MessageModal"></div>
<script src="js/bootstrap.min.js?no-cache=2024-06-14-15-41" type="text/javascript"></script> <script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/respond.min.js?no-cache=2024-06-14-15-41" type="text/javascript"></script> <script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/awaiting-disposition.js?no-cache=2024-06-14-15-41" type="text/javascript"></script> <script src="/js/awaiting-disposition.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body> </body>
</html> </html>

93
Static/export.html Normal file
View File

@ -0,0 +1,93 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Export Data</title>
<script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="/styles/export.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer
</div>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="/index.html">Run Information</a></li>
<li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="/export.html" class="alert-info">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul>
<p class="navbar-text navbar-right">
&nbsp;
</p>
</div>
</div>
</div>
<div class="container-fluid body-content">
<h3>Export Data</h3>
<hr />
<form class="form-inline">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType" name="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDate"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTime"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDate"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTime"></div>
</div>
<div class="form-group">
<button type="button" id="ExportButton" class="btn btn-primary">Export Data</button>
</div>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
</form>
</div>
<div id="MessageModal"></div>
<script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/export.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="/js/FileSaver.min.js" type="text/javascript"></script>
</body>
</html>

View File

@ -6,25 +6,25 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Run Information</title> <title>Run Information</title>
<script src="js/modernizr-3.6.0-custom.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="styles/bootstrap.min.css?no-cache=2024-06-14-16-48" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-14-16-48" <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<link href="igniteui/css/structure/infragistics.css?no-cache=2024-06-14-16-48" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="styles/site-server.css?no-cache=2024-06-14-16-48" rel="stylesheet" /> <link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="styles/index.css?no-cache=2024-06-14-16-48" rel="stylesheet" /> <link href="/styles/index.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="js/jquery-3.6.0.min.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/jquery-ui.min.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="igniteui/js/infragistics.core.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="igniteui/js/infragistics.lob.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="igniteui/js/infragistics.dv.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/chart-4.3.0.min.js" type="module"></script> <script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="js/common.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/site-server.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -37,16 +37,16 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<div class="navbar-brand"> <div class="navbar-brand">
<a href="/"><img src="images/IFX_LOGO_RGB.png" height="20" /></a> <a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer OI Metrology Viewer
</div> </div>
</div> </div>
<div class="navbar-collapse collapse"> <div class="navbar-collapse collapse">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li><a href="awaiting-disposition.html">Awaiting Disposition</a></li> <li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="index.html" class="alert-info">Run Information</a></li> <li><a href="/index.html" class="alert-info">Run Information</a></li>
<li><a href="run-headers.html">Run Headers</a></li> <li><a href="/run-headers.html">Run Headers</a></li>
<li><a href="https://oi-metrology-viewer-prod.mes.infineon.com/Export" target="_blank">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
@ -150,9 +150,9 @@
<div id="MessageModal"></div> <div id="MessageModal"></div>
<script src="js/bootstrap.min.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/respond.min.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/index.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/index.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body> </body>
</html> </html>

3
Static/js/FileSaver.min.js vendored Normal file
View File

@ -0,0 +1,3 @@
(function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){"use strict";function b(a,b){return"undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Depricated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open("GET",b),e.responseType="blob",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error("could not download file")},e.send()}function d(a){var b=new XMLHttpRequest;return b.open("HEAD",a,!1),b.send(),200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=f.saveAs||"object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open("","_blank"),e&&(e.document.title=e.document.body.innerText="downloading..."),"string"==typeof a)return c(a,b,d);var g="application/octet-stream"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\/[\d]+/.test(navigator.userAgent);if((i||g&&h)&&"object"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}};f.saveAs=a.saveAs=a,"undefined"!=typeof module&&(module.exports=a)});
//# sourceMappingURL=FileSaver.min.js.map

View File

@ -1,5 +1,5 @@
$(document).ready(function () { $(document).ready(function () {
initAwaitingDisposition("https://oi-metrology-viewer-prod.mes.infineon.com/api", "https://metrology-viewer-prod.mes.infineon.com"); initAwaitingDisposition("https://oi-metrology-viewer-prod.mes.infineon.com:4433/api", "https://oi-metrology-viewer-prod.mes.infineon.com");
}); });

88
Static/js/export.js Normal file
View File

@ -0,0 +1,88 @@
var _apiUrl = null;
var _StaticUrl = null;
function getParams() {
var endDate = $("#EndDate").igDatePicker("value");
var endTime = $("#EndTime").igTimePicker("value");
var startDate = $("#StartDate").igDatePicker("value");
var startTime = $("#StartTime").igTimePicker("value");
var result = {
datebegin: new Date(
startDate.getFullYear(), startDate.getMonth(), startDate.getDate(),
startTime.getHours(), startTime.getMinutes(), startTime.getSeconds()).toISOString(),
dateend: new Date(
endDate.getFullYear(), endDate.getMonth(), endDate.getDate(),
endTime.getHours(), endTime.getMinutes(), endTime.getSeconds()).toISOString(),
}
return result;
}
function postExport() {
parms = getParams();
var toolTypeID = $("#ToolType").igCombo("value");
var url = _apiUrl + "/Export/" + toolTypeID + "/csv";
// var url = _apiUrl + "/ToolTypes/" + toolTypeID + "/csv";
$.get(url, parms, function (data) {
var blob = new Blob([data], {
type: "text/plain;charset=utf-8",
});
parms = getParams();
var toolType = $("#ToolType").igCombo("text");
saveAs(blob, "Export_" + toolType + "_" + parms.datebegin + "_to_" + parms.dateend + ".csv");
}).fail(function () {
ShowErrorMessage("Error");
});
}
function initExport(apiUrl, staticUrl, startTimeValue, endTimeValue) {
_apiUrl = apiUrl;
_StaticUrl = staticUrl;
var endTime = new Date(endTimeValue);
var startTime = new Date(startTimeValue);
$.getJSON(_apiUrl + '/tooltypes', function (data) {
$("#ToolType").igCombo({
dataSource: data,
responseDataKey: "Results",
textKey: "ToolTypeName",
valueKey: "ID",
mode: "dropdown",
width: 150
});
});
$("#StartDate").igDatePicker({
dateInputFormat: "date",
value: startTime,
width: 125,
inputName: "StartDate",
});
$("#StartTime").igTimePicker({
dateInputFormat: "time",
value: startTime,
width: 110,
inputName: "StartTime",
});
$("#EndDate").igDatePicker({
dateInputFormat: "date",
value: endTime,
width: 125,
inputName: "EndDate",
});
$("#EndTime").igTimePicker({
dateInputFormat: "time",
value: endTime,
width: 110,
inputName: "EndTime",
});
$("#ExportButton").click(postExport);
};
$(document).ready(function () {
var endTimeValue = Date.now();
var startTimeValue = new Date();
// startTimeValue.setDate(startTimeValue.getDate() - 1);
startTimeValue.setMonth(startTimeValue.getMonth() - 1);
initExport("https://oi-metrology-viewer-prod.mes.infineon.com:4433/api", "https://oi-metrology-viewer-prod.mes.infineon.com", startTimeValue, endTimeValue);
});
// string fileName = string.Format("Export_{0}_{1:yyyyMMddHHmm}_to_{2:yyyyMMddHHmm}.csv", export.ToolType, export.StartTime, export.EndTime);

View File

@ -5,6 +5,6 @@ $(document).ready(function () {
const urlParams = new URLSearchParams(queryString); const urlParams = new URLSearchParams(queryString);
const initialHeaderId = urlParams.get('headerid'); const initialHeaderId = urlParams.get('headerid');
const initialToolTypeID = urlParams.get('tooltypeid'); const initialToolTypeID = urlParams.get('tooltypeid');
initRunInfo("https://oi-metrology-viewer-prod.mes.infineon.com/api", "https://metrology-viewer-prod.mes.infineon.com", initialToolTypeID, initialHeaderId, initialHeaderAttachmentId); initRunInfo("https://oi-metrology-viewer-prod.mes.infineon.com:4433/api", "https://oi-metrology-viewer-prod.mes.infineon.com", initialToolTypeID, initialHeaderId, initialHeaderAttachmentId);
}); });

View File

@ -1,5 +1,5 @@
$(document).ready(function () { $(document).ready(function () {
initRunHeaders("https://oi-metrology-viewer-prod.mes.infineon.com/api", "https://metrology-viewer-prod.mes.infineon.com"); initRunHeaders("https://oi-metrology-viewer-prod.mes.infineon.com:4433/api", "https://oi-metrology-viewer-prod.mes.infineon.com");
}); });

View File

@ -58,47 +58,6 @@ function initAwaitingDisposition(apiUrl, staticUrl) {
$("#grid").on("dblclick", "tr", loadRunInfoAwaitingDisposition); $("#grid").on("dblclick", "tr", loadRunInfoAwaitingDisposition);
}; };
function initExport(apiUrl, staticUrl, startTimeValue, endTimeValue) {
_apiUrl = apiUrl;
_StaticUrl = staticUrl;
var endTime = new Date(endTimeValue);
var startTime = new Date(startTimeValue);
$.getJSON(_apiUrl + '/tooltypes', function (data) {
$("#ToolType").igCombo({
dataSource: data,
responseDataKey: "Results",
textKey: "ToolTypeName",
valueKey: "ID",
mode: "dropdown",
width: 150
});
});
$("#StartDateControl").igDatePicker({
dateInputFormat: "date",
value: startTime,
width: 125,
inputName: "StartDate",
});
$("#StartTimeControl").igTimePicker({
dateInputFormat: "time",
value: startTime,
width: 110,
inputName: "StartTime",
});
$("#EndDateControl").igDatePicker({
dateInputFormat: "date",
value: endTime,
width: 125,
inputName: "EndDate",
});
$("#EndTimeControl").igTimePicker({
dateInputFormat: "time",
value: endTime,
width: 110,
inputName: "EndTime",
});
};
function loadHeaderGridRunHeaders() { function loadHeaderGridRunHeaders() {
var toolTypeID = -1; // $("#ToolType").igCombo("value"); var toolTypeID = -1; // $("#ToolType").igCombo("value");
var gridCreated = $("#HeaderGrid").data("igGrid"); var gridCreated = $("#HeaderGrid").data("igGrid");
@ -853,7 +812,7 @@ function recipeParametersButtonRunInfo() {
var gridCreated = $("#ModalBodyGrid").data("igGrid"); var gridCreated = $("#ModalBodyGrid").data("igGrid");
if (gridCreated) if (gridCreated)
$("#ModalBodyGrid").igGrid("destroy"); $("#ModalBodyGrid").igGrid("destroy");
$.getJSON('https://oi-prod-ec-api.mes.infineon.com/api/oiWizard/materials/rds/' + jsonObject.RDS, function (data) { $.getJSON('https://oi-prod-ec-api.mes.infineon.com:4433/api/oiWizard/materials/rds/' + jsonObject.RDS, function (data) {
$("#RecipeParametersButton").prop("disabled", false); $("#RecipeParametersButton").prop("disabled", false);
var text = ""; var text = "";
var seperator = '\t'; var seperator = '\t';

View File

@ -6,25 +6,25 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Run Headers</title> <title>Run Headers</title>
<script src="js/modernizr-3.6.0-custom.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/modernizr-3.6.0-custom.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<link href="styles/bootstrap.min.css?no-cache=2024-06-14-16-48" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-14-16-48" <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?no-cache=2024-06-17-17-10"
rel="stylesheet" /> rel="stylesheet" />
<link href="igniteui/css/structure/infragistics.css?no-cache=2024-06-14-16-48" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="styles/site-server.css?no-cache=2024-06-14-16-48" rel="stylesheet" /> <link href="/styles/site-server.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<link href="styles/run-headers.css?no-cache=2024-06-14-16-48" rel="stylesheet" /> <link href="/styles/run-headers.css?no-cache=2024-06-17-17-10" rel="stylesheet" />
<script src="js/jquery-3.6.0.min.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/jquery-ui.min.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="igniteui/js/infragistics.core.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="igniteui/js/infragistics.lob.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="igniteui/js/infragistics.dv.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/chart-4.3.0.min.js" type="module"></script> <script src="/js/chart-4.3.0.min.js" type="module"></script>
<script src="js/common.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/common.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/site-server.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/site-server.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -37,15 +37,15 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<div class="navbar-brand"> <div class="navbar-brand">
<a href="/"><img src="images/IFX_LOGO_RGB.png" height="20" /></a> <a href="/"><img src="/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer OI Metrology Viewer
</div> </div>
</div> </div>
<div class="navbar-collapse collapse"> <div class="navbar-collapse collapse">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li><a href="awaiting-disposition.html">Awaiting Disposition</a></li> <li><a href="/awaiting-disposition.html">Awaiting Disposition</a></li>
<li><a href="index.html">Run Information</a></li> <li><a href="/index.html">Run Information</a></li>
<li><a href="run-headers.html" class="alert-info">Run Headers</a></li> <li><a href="/run-headers.html" class="alert-info">Run Headers</a></li>
<li><a href="https://oi-metrology-viewer-prod.mes.infineon.com/Export" target="_blank">Export</a></li> <li><a href="https://oi-metrology-viewer-prod.mes.infineon.com/Export" target="_blank">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
</ul> </ul>
@ -87,9 +87,9 @@
<div id="MessageModal"></div> <div id="MessageModal"></div>
<script src="js/bootstrap.min.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/bootstrap.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/respond.min.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/respond.min.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
<script src="js/run-headers.js?no-cache=2024-06-14-16-48" type="text/javascript"></script> <script src="/js/run-headers.js?no-cache=2024-06-17-17-10" type="text/javascript"></script>
</body> </body>
</html> </html>

4
Static/styles/export.css Normal file
View File

@ -0,0 +1,4 @@
td {
padding-bottom: 2em;
padding-right: 1em;
}

View File

@ -6,12 +6,12 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Wafer Counter</title> <title>Wafer Counter</title>
<script src="js/jquery-3.6.0.min.js?v=2024-03-13_13-22" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2024-03-13_13-22" type="text/javascript"></script>
<script src="js/wafer-counter.js?v=2024-03-13_13-22" type="text/javascript"></script> <script src="/js/wafer-counter.js?v=2024-03-13_13-22" type="text/javascript"></script>
<script src="js/common.js?v=2024-03-13_13-22" type="text/javascript"></script> <script src="/js/common.js?v=2024-03-13_13-22" type="text/javascript"></script>
<script type="module" <script type="module"
src="package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js"></script> src="/package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js"></script>
<style> <style>
body { body {

View File

@ -1,3 +1,6 @@
{ {
"coverage-gutters.coverageBaseDir": "../.vscode/TestResults/**" "coverage-gutters.coverageBaseDir": "../.vscode/TestResults/**",
"cSpell.words": [
"datebegin"
]
} }

View File

@ -3,6 +3,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using OI.Metrology.Shared.DataModels; using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Models.Stateless; using OI.Metrology.Shared.Models.Stateless;
using System.Data;
using System.Text; using System.Text;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
@ -202,4 +203,61 @@ public class UnitTestExportController
NonThrowTryCatch(); NonThrowTryCatch();
} }
[Ignore]
[TestMethod]
public void GetExportData()
{
_Logger?.LogInformation("Starting Web Application");
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>();
Assert.IsTrue(metrologyRepository is not null);
Result<DataTable>? result = exportRepository?.GetExportData(metrologyRepository, toolTypeId: 1, datebegin: null, dateend: null);
Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
}
[Ignore]
[TestMethod]
public async Task GetExportDataApi()
{
HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application");
Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/export?datebegin=&dateend=");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetExportData)}.json"), json);
Result<DataTable>? result = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json);
Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
}
[Ignore]
[TestMethod]
public void GetCSVExport()
{
_Logger?.LogInformation("Starting Web Application");
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>();
Assert.IsTrue(metrologyRepository is not null);
string? result = exportRepository?.GetCSVExport(metrologyRepository, toolTypeId: 1, datebegin: null, dateend: null);
Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
}
// [Ignore]
[TestMethod]
public async Task GetCSVExportDat()
{
HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application");
Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/1/csv?datebegin=&dateend=");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetCSVExport)}.csv"), result);
Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
}
} }

View File

@ -221,36 +221,6 @@ public class UnitTestToolTypesController
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName); _Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
} }
[Ignore]
[TestMethod]
public void GetExportData()
{
_Logger?.LogInformation("Starting Web Application");
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>();
Assert.IsTrue(metrologyRepository is not null);
Result<DataTable>? result = toolTypesRepository?.GetExportData(metrologyRepository, toolTypeId: 1, datebegin: null, dateend: null);
Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
}
[Ignore]
[TestMethod]
public async Task GetExportDataApi()
{
HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application");
Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/export");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetExportData)}.json"), json);
Result<DataTable>? result = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json);
Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
}
[Ignore] [Ignore]
[TestMethod] [TestMethod]
public void GetAttachment() public void GetAttachment()

View File

@ -1,119 +0,0 @@
using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Models.Stateless;
namespace OI.Metrology.Tests;
[TestClass]
public class UnitTestWaferCounterController
{
#pragma warning disable CS8618
private static ILogger? _Logger;
private static string _ControllerName;
private static TestContext _TestContext;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore
[ClassInitialize]
public static void ClassInitAsync(TestContext testContext)
{
_TestContext = testContext;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
_ControllerName = nameof(Server.ApiControllers.WaferCounterController)[..^10];
}
private static void NonThrowTryCatch()
{
try
{ throw new Exception(); }
catch (Exception) { }
}
[TestMethod]
public void TestControllerName()
{
_Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IWaferCounterController<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
NonThrowTryCatch();
}
[TestMethod]
public void GetSlotMap()
{
_Logger?.LogInformation("Starting Web Application");
string? result;
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IWaferCounterRepository? waferCounterRepository = serviceProvider?.GetRequiredService<IWaferCounterRepository>();
result = waferCounterRepository?.GetSlotMap("T00", "P0000000");
Assert.AreEqual("0000000000000000000000000", result);
result = waferCounterRepository?.GetSlotMap("T25", "P1FFFFFF");
Assert.AreEqual("1111111111111111111111111", result);
result = waferCounterRepository?.GetSlotMap("T12", "P0AAAAAA");
Assert.AreEqual("0101010101010101010101010", result);
result = waferCounterRepository?.GetSlotMap("T13", "P1555555");
Assert.AreEqual("1010101010101010101010101", result);
result = waferCounterRepository?.GetSlotMap("T20", "P0EFFFF8");
Assert.AreEqual("0111011111111111111111000", result);
result = waferCounterRepository?.GetSlotMap("T20", "P07FFFF8");
Assert.AreEqual("0011111111111111111111000", result);
result = waferCounterRepository?.GetSlotMap("T20", "P17FFFF0");
Assert.AreEqual("1011111111111111111110000", result);
result = waferCounterRepository?.GetSlotMap("T03", "P1002002");
Assert.AreEqual("1000000000010000000000010", result);
result = waferCounterRepository?.GetSlotMap("T02", "P1000002");
Assert.AreEqual("1000000000000000000000010", result);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
NonThrowTryCatch();
}
[Ignore]
[TestMethod]
public void GetLastQuantityAndSlotMap()
{
WaferCounter? result;
_Logger?.LogInformation("Starting Web Application");
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IWaferCounterRepository? waferCounterRepository = serviceProvider?.GetRequiredService<IWaferCounterRepository>();
result = waferCounterRepository?.GetLastQuantityAndSlotMap("EPP-East", "6INCH");
Assert.IsNotNull(result);
result = waferCounterRepository?.GetLastQuantityAndSlotMap("EPP-East", "8INCH");
Assert.IsNotNull(result);
result = waferCounterRepository?.GetLastQuantityAndSlotMap("EPP-West", "6INCH");
Assert.IsNotNull(result);
result = waferCounterRepository?.GetLastQuantityAndSlotMap("EPP-West", "8INCH");
Assert.IsNotNull(result);
result = waferCounterRepository?.GetLastQuantityAndSlotMap("FQA", "6INCH");
Assert.IsNotNull(result);
result = waferCounterRepository?.GetLastQuantityAndSlotMap("FQA", "8INCH");
Assert.IsNotNull(result);
result = waferCounterRepository?.GetLastQuantityAndSlotMap("MU", "6INCH");
Assert.IsNotNull(result);
result = waferCounterRepository?.GetLastQuantityAndSlotMap("MU", "8INCH");
Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
NonThrowTryCatch();
}
[Ignore]
[TestMethod]
public async Task GetLastQuantityAndSlotMapApi()
{
HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application");
Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/8INCH/last-quantity-and-slot-map/?area=EPP-East");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetLastQuantityAndSlotMap)}.json"), json);
Assert.IsNotNull(json);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
NonThrowTryCatch();
}
}