Host from Windows
This commit is contained in:
@ -4,6 +4,7 @@ namespace OI.Metrology.Server.ApiControllers;
|
||||
|
||||
using OI.Metrology.Shared.DataModels;
|
||||
using OI.Metrology.Shared.Models.Stateless;
|
||||
using System.Data;
|
||||
using System.Text.Json;
|
||||
|
||||
[Route("api/[controller]")]
|
||||
@ -11,9 +12,13 @@ public class ExportController : Controller, IExportController<IActionResult>
|
||||
{
|
||||
|
||||
private readonly IExportRepository _ExportRepository;
|
||||
private readonly IMetrologyRepository _MetrologyRepository;
|
||||
|
||||
public ExportController(IExportRepository exportRepository) =>
|
||||
public ExportController(IExportRepository exportRepository, IMetrologyRepository metrologyRepository)
|
||||
{
|
||||
_ExportRepository = exportRepository;
|
||||
_MetrologyRepository = metrologyRepository;
|
||||
}
|
||||
|
||||
private static string? GetJson(Stream stream)
|
||||
{
|
||||
@ -79,4 +84,21 @@ public class ExportController : Controller, IExportController<IActionResult>
|
||||
public IActionResult PostProcessDataStandardFormat() =>
|
||||
Content(_ExportRepository.GetProcessDataStandardFormat(GetHeaderCommon(Request.Body)));
|
||||
|
||||
[HttpGet]
|
||||
[Route("{toolTypeId}/export")]
|
||||
public IActionResult GetExportData(int toolTypeId, [FromQuery] string? datebegin, [FromQuery] string? dateend)
|
||||
{
|
||||
Result<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);
|
||||
}
|
||||
|
||||
}
|
@ -66,23 +66,6 @@ public class ToolTypesController : Controller, IToolTypesController<IActionResul
|
||||
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]
|
||||
[Route("{toolTypeId}/{tabletype}/files/{attachmentId}/{filename}")]
|
||||
public IActionResult GetAttachment(int toolTypeId, string tabletype, string attachmentId, string filename)
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
@ -2,7 +2,9 @@ using OI.Metrology.Server.Models;
|
||||
using OI.Metrology.Shared.DataModels;
|
||||
using OI.Metrology.Shared.Models;
|
||||
using OI.Metrology.Shared.Models.Stateless;
|
||||
using System.Data;
|
||||
using System.Globalization;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace OI.Metrology.Server.Repository;
|
||||
@ -160,4 +162,86 @@ public class ExportRepository : IExportRepository
|
||||
return result;
|
||||
}
|
||||
|
||||
Result<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;
|
||||
}
|
||||
|
||||
}
|
@ -3,7 +3,6 @@ using OI.Metrology.Shared.DataModels;
|
||||
using OI.Metrology.Shared.Models.Stateless;
|
||||
using OI.Metrology.Shared.Services;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace OI.Metrology.Server.Repository;
|
||||
@ -237,96 +236,4 @@ public class ToolTypesRepository : IToolTypesRepository
|
||||
return result;
|
||||
}
|
||||
|
||||
Result<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;
|
||||
}
|
||||
|
||||
}
|
@ -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>
|
@ -6,41 +6,41 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<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>
|
||||
|
||||
<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" />
|
||||
<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" />
|
||||
<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" />
|
||||
<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" />
|
||||
<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" />
|
||||
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
|
||||
<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>
|
||||
<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>
|
||||
</head>
|
||||
|
||||
@ -63,8 +63,8 @@
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<div class="navbar-brand">
|
||||
<a href="https://metrology-viewer-prod.mes.infineon.com"><img
|
||||
src="https://metrology-viewer-prod.mes.infineon.com/images/IFX_LOGO_RGB.png"
|
||||
<a href="https://oi-metrology-viewer-prod.mes.infineon.com"><img
|
||||
src="https://oi-metrology-viewer-prod.mes.infineon.com/images/IFX_LOGO_RGB.png"
|
||||
height="20" /></a>
|
||||
OI Metrology Viewer
|
||||
</div>
|
||||
@ -99,9 +99,9 @@
|
||||
|
||||
<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>
|
||||
<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>
|
||||
@RenderSection("scripts", required: false)
|
||||
</body>
|
||||
|
@ -6,41 +6,41 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<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>
|
||||
|
||||
<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" />
|
||||
<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" />
|
||||
<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" />
|
||||
<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" />
|
||||
<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" />
|
||||
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
|
||||
<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>
|
||||
<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>
|
||||
</head>
|
||||
|
||||
@ -54,7 +54,8 @@
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<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>
|
||||
OI Metrology Viewer
|
||||
</div>
|
||||
@ -171,11 +172,11 @@
|
||||
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</body>
|
||||
|
||||
|
Reference in New Issue
Block a user