Cost of Delay 1.122

This commit is contained in:
Mike Phares 2025-04-14 12:55:28 -07:00
parent 906868540b
commit 3e8f5931e2
28 changed files with 17480 additions and 184 deletions

View File

@ -7,3 +7,15 @@ Accept: application/json
Authorization: Basic {{pat}} Authorization: Basic {{pat}}
### ###
GET {{host}}/tfs/FactoryIntegration/_apis/wit/workitems/{{ids}}/updates
Accept: application/json
Authorization: Basic {{pat}}
### Iterations
GET {{host}}/tfs/FactoryIntegration/ART%20SPS/cea9f426-6fb1-4d65-93d5-dbf471056212/_apis/work/teamsettings/iterations?
Accept: application/json
Authorization: Basic {{pat}}
###

View File

@ -4,7 +4,7 @@
"name": ".NET Core Attach", "name": ".NET Core Attach",
"type": "coreclr", "type": "coreclr",
"request": "attach", "request": "attach",
"processId": 23840 "processId": 22868
} }
] ]
} }

View File

@ -1,4 +1,4 @@
@host = http://localhost:8071/ @host = http://localhost:8071
GET {{host}}/api/v1/ado GET {{host}}/api/v1/ado
Accept: application/json Accept: application/json

View File

@ -1,6 +1,20 @@
@host = https://eaf-dev.mes.infineon.com @host = https://eaf-dev.mes.infineon.com
@page = api/v1/ado/ @page = api/v1/ado/
###
GET {{host}}/api/v1/ado?id=null&machineId=na&page=business&sessionId=035f3090-2e4d-4b2e-a254-081561c0d438&site=MES&time=1744652058982&username=anonymous&value=null
# https://eaf-dev.mes.infineon.com/api/v1/ado/?id=null&
# machineId=na&
# page=business&
# sessionId=035f3090-2e4d-4b2e-a254-081561c0d438&
# site=MES&
# time=1744652058982&
# username=anonymous&
# value=null
###
POST {{host}}/{{page}}/ POST {{host}}/{{page}}/
Accept: application/json Accept: application/json
@ -13,19 +27,5 @@ Accept: application/json
"username": "phares", "username": "phares",
"value": "3" "value": "3"
} }
###
GET {{host}}/{{page}}/
Accept: application/json
{
"id": 109736,
"machineId": "",
"page": "risk",
"site": "MES",
"time": 1744335005066,
"username": "phares",
"value": "2"
}
### ###

View File

@ -32,12 +32,9 @@ public class ProcessData : IProcessData
public ProcessData(IFileRead fileRead, Logistics logistics, string targetFileLocation, string url, ReadOnlyCollection<string> workItemTypes, List<FileInfo> fileInfoCollection) public ProcessData(IFileRead fileRead, Logistics logistics, string targetFileLocation, string url, ReadOnlyCollection<string> workItemTypes, List<FileInfo> fileInfoCollection)
{ {
if (fileRead.IsEAFHosted)
{
}
_Details = new List<object>(); _Details = new List<object>();
_Log = LogManager.GetLogger(typeof(ProcessData)); _Log = LogManager.GetLogger(typeof(ProcessData));
if (fileRead.IsEAFHosted)
WriteFiles(fileRead, logistics, url, workItemTypes, targetFileLocation, fileInfoCollection); WriteFiles(fileRead, logistics, url, workItemTypes, targetFileLocation, fileInfoCollection);
} }

View File

@ -191,8 +191,13 @@ public class Aggregation
internal static ReadOnlyDictionary<int, Aggregation> GetKeyValuePairs(Settings settings, Notification notification) internal static ReadOnlyDictionary<int, Aggregation> GetKeyValuePairs(Settings settings, Notification notification)
{ {
ReadOnlyDictionary<int, Aggregation> results; ReadOnlyDictionary<int, Aggregation> results;
Dictionary<int, List<Notification>> keyValuePairs = new() { { int.Parse(notification.Id), new Notification[] { notification }.ToList() } }; if (string.IsNullOrEmpty(notification.Id) || !int.TryParse(notification.Id, out int id))
results = new(new Dictionary<int, Aggregation>());
else
{
Dictionary<int, List<Notification>> keyValuePairs = new() { { id, new Notification[] { notification }.ToList() } };
results = GetKeyValuePairs(settings, keyValuePairs); results = GetKeyValuePairs(settings, keyValuePairs);
}
return results; return results;
} }

View File

@ -19,23 +19,20 @@ public class FileRead : Shared.FileRead, IFileRead
{ {
private readonly Timer _Timer; private readonly Timer _Timer;
internal static ILog Log => _Log; internal static ILog? Log { get; private set; }
internal static Settings Settings => _Settings; internal static Settings? Settings { get; private set; }
internal static Dictionary<int, WorkItem> WorkItems => _WorkItems; internal static Dictionary<int, WorkItem>? WorkItems { get; private set; }
#pragma warning disable IDE0032, CS8618 internal static Dictionary<string, Queue<KeyValuePair<string, WorkItem>>>? Queue { get; private set; }
private static new ILog _Log;
private static Settings _Settings;
private static Dictionary<int, WorkItem> _WorkItems;
#pragma warning restore IDE0032, CS8618
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) : public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null) base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
{ {
_WorkItems = new(); Queue = new();
WorkItems = new();
_MinFileLength = 10; _MinFileLength = 10;
_Logistics = new(this); _Logistics = new(this);
_NullData = string.Empty; _NullData = string.Empty;
_Log = LogManager.GetLogger(typeof(FileRead)); Log = LogManager.GetLogger(typeof(FileRead));
if (_FileParameter is null) if (_FileParameter is null)
throw new Exception(cellInstanceConnectionName); throw new Exception(cellInstanceConnectionName);
if (_ModelObjectParameterDefinitions is null) if (_ModelObjectParameterDefinitions is null)
@ -45,7 +42,7 @@ public class FileRead : Shared.FileRead, IFileRead
if (_IsEAFHosted) if (_IsEAFHosted)
NestExistingFiles(_FileConnectorConfiguration); NestExistingFiles(_FileConnectorConfiguration);
string parentDirectory = Path.GetDirectoryName(_FileConnectorConfiguration.TargetFileLocation) ?? throw new Exception(); string parentDirectory = Path.GetDirectoryName(_FileConnectorConfiguration.TargetFileLocation) ?? throw new Exception();
_Settings = new(digits: 5, Settings = new(digits: 5,
parentDirectory: parentDirectory, parentDirectory: parentDirectory,
priorities: 3, priorities: 3,
priorityGroups: 9, priorityGroups: 9,
@ -151,10 +148,14 @@ public class FileRead : Shared.FileRead, IFileRead
{ {
try try
{ {
if (Settings is null)
throw new NullReferenceException(nameof(Settings));
if (WorkItems is null)
throw new NullReferenceException(nameof(WorkItems));
_Log.Info($"Enter-{nameof(WeightedShortestJobFirstModule.PopulatedWorkItemsAndGetJson)}"); _Log.Info($"Enter-{nameof(WeightedShortestJobFirstModule.PopulatedWorkItemsAndGetJson)}");
string? json = WeightedShortestJobFirstModule.PopulatedWorkItemsAndGetJson(_Settings); string? json = WeightedShortestJobFirstModule.PopulatedWorkItemsAndGetJson(Settings, WorkItems);
if (!string.IsNullOrEmpty(json)) if (!string.IsNullOrEmpty(json))
WeightedShortestJobFirstModule.WriteJson(json); WeightedShortestJobFirstModule.WriteJson(Settings, json);
_Log.Info($"End-{nameof(WeightedShortestJobFirstModule.PopulatedWorkItemsAndGetJson)}"); _Log.Info($"End-{nameof(WeightedShortestJobFirstModule.PopulatedWorkItemsAndGetJson)}");
} }
catch (Exception exception) catch (Exception exception)

View File

@ -1,3 +1,5 @@
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.Priority; namespace Adaptation.FileHandlers.Priority;
@ -9,11 +11,12 @@ public class Notification
[JsonConstructor] [JsonConstructor]
public Notification(int? fibonacci, public Notification(int? fibonacci,
string id, string? id,
int? inverse, int? inverse,
string? machineId, string? machineId,
string page, string page,
string? site, string? site,
string? sessionId,
string time, string time,
string? username, string? username,
string? value) string? value)
@ -25,21 +28,69 @@ public class Notification
MachineId = machineId; MachineId = machineId;
Page = page; Page = page;
Site = site is not null ? site : "MES"; Site = site is not null ? site : "MES";
SessionId = sessionId;
Time = time; Time = time;
Username = username; Username = username;
Value = value; Value = value;
} }
[JsonPropertyName("id")] public string Id { get; } [JsonPropertyName("id")] public string? Id { get; }
[JsonPropertyName("fibonacci")] public int? Fibonacci { get; } [JsonPropertyName("fibonacci")] public int? Fibonacci { get; }
[JsonPropertyName("inverse")] public int? Inverse { get; } [JsonPropertyName("inverse")] public int? Inverse { get; }
[JsonPropertyName("machineId")] public string? MachineId { get; } [JsonPropertyName("machineId")] public string? MachineId { get; }
[JsonPropertyName("page")] public string Page { get; } [JsonPropertyName("page")] public string Page { get; }
[JsonPropertyName("site")] public string? Site { get; } [JsonPropertyName("site")] public string? Site { get; }
[JsonPropertyName("sessionId")] public string? SessionId { get; }
[JsonPropertyName("time")] public string Time { get; } [JsonPropertyName("time")] public string Time { get; }
[JsonPropertyName("username")] public string? Username { get; } [JsonPropertyName("username")] public string? Username { get; }
[JsonPropertyName("value")] public string? Value { get; } [JsonPropertyName("value")] public string? Value { get; }
internal static Notification Get(Dictionary<string, string?> keyValuePairs)
{
Notification results;
string? id;
string? fibonacci;
string? inverse;
string? machineId;
string? page;
string? site;
string? sessionId;
string? username;
string? time;
string? value;
if (!keyValuePairs.TryGetValue(nameof(id), out id))
id = null;
if (!keyValuePairs.TryGetValue(nameof(fibonacci), out fibonacci))
fibonacci = null;
if (!keyValuePairs.TryGetValue(nameof(inverse), out inverse))
inverse = null;
if (!keyValuePairs.TryGetValue(nameof(machineId), out machineId))
machineId = null;
if (!keyValuePairs.TryGetValue(nameof(page), out page))
throw new Exception();
if (!keyValuePairs.TryGetValue(nameof(site), out site))
site = null;
if (!keyValuePairs.TryGetValue(nameof(sessionId), out sessionId))
sessionId = null;
if (!keyValuePairs.TryGetValue(nameof(username), out username))
username = null;
if (!keyValuePairs.TryGetValue(nameof(time), out time))
throw new Exception();
if (!keyValuePairs.TryGetValue(nameof(value), out value))
value = null;
results = new(fibonacci: fibonacci is null ? null : int.Parse(fibonacci),
id: id,
inverse: inverse is null ? null : int.Parse(inverse),
machineId: machineId,
page: page ?? throw new Exception(),
site: site,
sessionId: sessionId,
time: time ?? throw new Exception(),
username: username,
value: value);
return results;
}
internal static int? GetInverse(string? value) => internal static int? GetInverse(string? value) =>
value switch value switch
{ {

View File

@ -21,9 +21,23 @@ public class WeightedShortestJobFirstModule : NancyModule
{ {
Get("/api/v1/ado/", _ => Get("/api/v1/ado/", _ =>
{ {
string json;
ILog log = LogManager.GetLogger(typeof(WeightedShortestJobFirstModule)); ILog log = LogManager.GetLogger(typeof(WeightedShortestJobFirstModule));
log.Info($"{nameof(Get)}"); log.Info($"Enter-{nameof(GetKeyValuePairs)}");
return "Hello"; try
{
string query = Request.Url.Query;
IDictionary<string, IEnumerable<string>> collection = Nancy.Helpers.HttpUtility.ParseQueryString(query).ToDictionary();
KeyValuePair<string, WorkItem>? workItem = GetWorkItem(collection);
json = workItem is null ? string.Empty : JsonSerializer.Serialize(workItem, KeyValuePairStringWorkItemSourceGenerationContext.Default.KeyValuePairStringWorkItem);
}
catch (Exception ex)
{
log.Fatal($"Exception-{nameof(GetKeyValuePairs)}{Environment.NewLine}{ex.Message}{Environment.NewLine}{Environment.NewLine}{ex.StackTrace}");
throw;
}
log.Info($"Return-{nameof(GetKeyValuePairs)}");
return json;
}); });
base.Post("/api/v1/ado/", _ => base.Post("/api/v1/ado/", _ =>
{ {
@ -47,30 +61,107 @@ public class WeightedShortestJobFirstModule : NancyModule
}); });
} }
private static Dictionary<string, string?> GetKeyValuePairs(IDictionary<string, IEnumerable<string>> collection)
{
Dictionary<string, string?> results = new();
string[] array;
foreach (KeyValuePair<string, IEnumerable<string>> keyValuePair in collection)
{
array = keyValuePair.Value.ToArray();
if (array.Length != 1)
continue;
if (array.Length == 1 && array[0] == "null")
results.Add(keyValuePair.Key, null);
else
results.Add(keyValuePair.Key, array[0]);
}
return results;
}
internal static Notification GetNotification(string body, Dictionary<string, object> keyValuePairs) internal static Notification GetNotification(string body, Dictionary<string, object> keyValuePairs)
{ {
Notification result;
if (FileRead.Queue is null)
throw new NullReferenceException(nameof(FileRead.Queue));
if (FileRead.Settings is null)
throw new NullReferenceException(nameof(FileRead.Settings));
if (FileRead.WorkItems is null)
throw new NullReferenceException(nameof(FileRead.WorkItems));
string? json; string? json;
Notification notification;
if (!string.IsNullOrEmpty(body) && body[0] == '{') if (!string.IsNullOrEmpty(body) && body[0] == '{')
{ {
File.WriteAllText(".json", body); File.WriteAllText(".json", body);
notification = JsonSerializer.Deserialize(body, NotificationSourceGenerationContext.Default.Notification) ?? throw new NullReferenceException(); result = JsonSerializer.Deserialize(body, NotificationSourceGenerationContext.Default.Notification) ?? throw new NullReferenceException();
} }
else else
{ {
json = JsonSerializer.Serialize(keyValuePairs); json = JsonSerializer.Serialize(keyValuePairs);
File.WriteAllText(".json", json); File.WriteAllText(".json", json);
notification = JsonSerializer.Deserialize(json, NotificationSourceGenerationContext.Default.Notification) ?? throw new NullReferenceException(); result = JsonSerializer.Deserialize(json, NotificationSourceGenerationContext.Default.Notification) ?? throw new NullReferenceException();
} }
FileWriteAllText(FileRead.Settings, notification); if (!string.IsNullOrEmpty(result.Id))
json = PopulatedWorkItemsAndGetJson(FileRead.Settings); FileWriteAllText(FileRead.Settings, result);
json = PopulatedWorkItemsAndGetJson(FileRead.Settings, FileRead.WorkItems);
if (!string.IsNullOrEmpty(json)) if (!string.IsNullOrEmpty(json))
WriteJson(json); WriteJson(FileRead.Settings, json);
return notification; if (!string.IsNullOrEmpty(result.SessionId))
{
string key = GetKey(result);
Queue<KeyValuePair<string, WorkItem>>? queue;
lock (FileRead.Queue)
{
if (!FileRead.Queue.TryGetValue(key, out queue))
{
FileRead.Queue.Add(key, new());
if (!FileRead.Queue.TryGetValue(key, out queue))
throw new Exception();
} }
}
WorkItem? workItem = GetWorkItem(FileRead.WorkItems, result);
if (workItem is not null)
{
lock (FileRead.Queue)
{
foreach (KeyValuePair<string, Queue<KeyValuePair<string, WorkItem>>> keyValuePair in FileRead.Queue)
keyValuePair.Value.Enqueue(new(result.Page, workItem));
}
}
}
return result;
}
internal static KeyValuePair<string, WorkItem>? GetWorkItem(IDictionary<string, IEnumerable<string>> collection)
{
KeyValuePair<string, WorkItem>? result;
Dictionary<string, string?> keyValuePairs = GetKeyValuePairs(collection);
Notification notification = Notification.Get(keyValuePairs);
if (FileRead.Queue is null)
result = null;
else
{
Queue<KeyValuePair<string, WorkItem>>? queue;
string key = GetKey(notification);
lock (FileRead.Queue)
{
if (!FileRead.Queue.TryGetValue(key, out queue))
{
FileRead.Queue.Add(key, new());
if (!FileRead.Queue.TryGetValue(key, out queue))
throw new Exception();
}
result = queue.Count == 0 ? null : queue.Dequeue();
}
}
return result;
}
private static string GetKey(Notification notification) =>
$"{notification.SessionId}-{notification.MachineId}-{notification.Username}";
private static void FileWriteAllText(Settings settings, Notification notification) private static void FileWriteAllText(Settings settings, Notification notification)
{ {
if (string.IsNullOrEmpty(notification.Id))
throw new NullReferenceException(nameof(notification.Id));
string json = JsonSerializer.Serialize(notification, NotificationSourceGenerationContext.Default.Notification); string json = JsonSerializer.Serialize(notification, NotificationSourceGenerationContext.Default.Notification);
string directory = Path.Combine(settings.SourceFileLocation, notification.Page, notification.Id.ToString()); string directory = Path.Combine(settings.SourceFileLocation, notification.Page, notification.Id.ToString());
if (!Directory.Exists(directory)) if (!Directory.Exists(directory))
@ -79,14 +170,14 @@ public class WeightedShortestJobFirstModule : NancyModule
File.WriteAllText(checkFile, json); File.WriteAllText(checkFile, json);
} }
internal static string? PopulatedWorkItemsAndGetJson(Settings settings) internal static string? PopulatedWorkItemsAndGetJson(Settings settings, Dictionary<int, WorkItem> workItems)
{ {
string? result = null; string? result = null;
ReadOnlyDictionary<int, WorkItem?> workItems = WorkItem.GetKeyValuePairs(settings); ReadOnlyDictionary<int, WorkItem?> keyValuePairs = WorkItem.GetKeyValuePairs(settings);
int useCount = (from l in workItems where l.Value.CostOfDelay is not null select true).Count(); int useCount = (from l in keyValuePairs where l.Value.CostOfDelay is not null select true).Count();
double prioritySize = useCount / settings.Priorities; double prioritySize = useCount / settings.Priorities;
double priorityGroupSize = useCount / settings.PriorityGroups; double priorityGroupSize = useCount / settings.PriorityGroups;
WorkItem[] sorted = (from l in workItems WorkItem[] sorted = (from l in keyValuePairs
where l.Value is not null where l.Value is not null
orderby l.Value.Site is not null, orderby l.Value.Site is not null,
l.Value.Site descending, l.Value.Site descending,
@ -96,7 +187,7 @@ public class WeightedShortestJobFirstModule : NancyModule
l.Value.BusinessValue?.FibonacciAverage descending, l.Value.BusinessValue?.FibonacciAverage descending,
l.Key l.Key
select l.Value).ToArray(); select l.Value).ToArray();
lock (FileRead.WorkItems) lock (workItems)
{ {
int j = 0; int j = 0;
WorkItem w; WorkItem w;
@ -105,8 +196,8 @@ public class WeightedShortestJobFirstModule : NancyModule
int? sortBeforeId; int? sortBeforeId;
WorkItem workItem; WorkItem workItem;
int? sortPriority; int? sortPriority;
workItems.Clear();
int? sortPriorityGroup; int? sortPriorityGroup;
FileRead.WorkItems.Clear();
for (int i = 0; i < sorted.Length; i++) for (int i = 0; i < sorted.Length; i++)
{ {
w = sorted[i]; w = sorted[i];
@ -130,18 +221,34 @@ public class WeightedShortestJobFirstModule : NancyModule
sortPriorityGroup = settings.PriorityGroups; sortPriorityGroup = settings.PriorityGroups;
} }
workItem = WorkItem.GetWorkItem(w, i, sortBeforeId, sortPriority, sortPriorityGroup); workItem = WorkItem.GetWorkItem(w, i, sortBeforeId, sortPriority, sortPriorityGroup);
FileRead.WorkItems.Add(workItem.Id, workItem); workItems.Add(workItem.Id, workItem);
lastId = w.Id; lastId = w.Id;
} }
result = JsonSerializer.Serialize(FileRead.WorkItems, WorkItemDictionarySourceGenerationContext.Default.DictionaryInt32WorkItem); result = JsonSerializer.Serialize(workItems, WorkItemDictionarySourceGenerationContext.Default.DictionaryInt32WorkItem);
} }
return result; return result;
} }
internal static void WriteJson(string json) private static WorkItem? GetWorkItem(Dictionary<int, WorkItem> workItems, Notification notification)
{ {
string jsonFile = Path.Combine(FileRead.Settings.ParentDirectory, "{}.json"); WorkItem? result;
string jsonFileWith = Path.Combine(FileRead.Settings.ParentDirectory, "{[]}.json"); if (string.IsNullOrEmpty(notification.Id) || !int.TryParse(notification.Id, out int id))
result = null;
else
{
lock (workItems)
{
if (!workItems.TryGetValue(id, out result))
throw new Exception();
}
}
return result;
}
internal static void WriteJson(Settings settings, string json)
{
string jsonFile = Path.Combine(settings.ParentDirectory, "{}.json");
string jsonFileWith = Path.Combine(settings.ParentDirectory, "{[]}.json");
string jsonOld = File.Exists(jsonFileWith) ? File.ReadAllText(jsonFileWith) : string.Empty; string jsonOld = File.Exists(jsonFileWith) ? File.ReadAllText(jsonFileWith) : string.Empty;
if (json != jsonOld) if (json != jsonOld)
{ {

View File

@ -203,3 +203,9 @@ public class WorkItem
internal partial class WorkItemDictionarySourceGenerationContext : JsonSerializerContext internal partial class WorkItemDictionarySourceGenerationContext : JsonSerializerContext
{ {
} }
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(KeyValuePair<string, WorkItem>))]
internal partial class KeyValuePairStringWorkItemSourceGenerationContext : JsonSerializerContext
{
}

View File

@ -143,13 +143,17 @@ public class FileRead : Shared.FileRead, IFileRead
private static void MoveMatchingFile(string jobIdDirectory, string matchDirectory) private static void MoveMatchingFile(string jobIdDirectory, string matchDirectory)
{ {
string checkFile; string checkFile;
string jobIdDirectoryFileName;
string matchDirectoryFileName;
string[] jobIdDirectoryFiles = Directory.GetFiles(jobIdDirectory, "*", SearchOption.TopDirectoryOnly); string[] jobIdDirectoryFiles = Directory.GetFiles(jobIdDirectory, "*", SearchOption.TopDirectoryOnly);
string[] matchDirectoryFiles = Directory.GetFiles(matchDirectory, "*", SearchOption.TopDirectoryOnly); string[] matchDirectoryFiles = Directory.GetFiles(matchDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string jobIdDirectoryFile in jobIdDirectoryFiles) foreach (string jobIdDirectoryFile in jobIdDirectoryFiles)
{ {
jobIdDirectoryFileName = Path.GetFileName(jobIdDirectoryFile);
foreach (string matchDirectoryFile in matchDirectoryFiles) foreach (string matchDirectoryFile in matchDirectoryFiles)
{ {
if (jobIdDirectoryFile.StartsWith(matchDirectoryFile)) matchDirectoryFileName = Path.GetFileName(matchDirectoryFile);
if (jobIdDirectoryFileName.StartsWith(matchDirectoryFileName))
{ {
checkFile = Path.Combine(matchDirectory, Path.GetFileName(matchDirectoryFile)); checkFile = Path.Combine(matchDirectory, Path.GetFileName(matchDirectoryFile));
if (File.Exists(checkFile)) if (File.Exists(checkFile))

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - 122508 - Feature iteration should be set to max of children</title> <title>Infineon - 122508 - Feature iteration should be set to max of children</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/122508.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/122508.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/122508.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/122508.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -56,7 +56,7 @@
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/check-122508.json?v=2025-04-10-15-59"); initIndex("/markdown/check-122508.json?v=2025-04-14-08-10");
}); });
</script> </script>

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - 122514 - Features and children must have a Tag</title> <title>Infineon - 122514 - Features and children must have a Tag</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/122514.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/122514.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/122514.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/122514.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -56,7 +56,7 @@
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/check-122514.json?v=2025-04-10-15-59"); initIndex("/markdown/check-122514.json?v=2025-04-14-08-10");
}); });
</script> </script>

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - 122517 - Feature start date should be min activated date of children</title> <title>Infineon - 122517 - Feature start date should be min activated date of children</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/122517.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/122517.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/122517.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/122517.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -56,7 +56,7 @@
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/check-122517.json?v=2025-04-10-15-59"); initIndex("/markdown/check-122517.json?v=2025-04-14-08-10");
}); });
</script> </script>

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - 123066 - When children of a Feature are not New Feature must also not be New</title> <title>Infineon - 123066 - When children of a Feature are not New Feature must also not be New</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/123066.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/123066.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/123066.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/123066.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -56,7 +56,7 @@
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/check-123066.json?v=2025-04-10-15-59"); initIndex("/markdown/check-123066.json?v=2025-04-14-08-10");
}); });
</script> </script>

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - 123067 - WIP</title> <title>Infineon - 123067 - WIP</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/123067.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/123067.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/123067.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/123067.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -56,7 +56,7 @@
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/check-123067.json?v=2025-04-10-15-59"); initIndex("/markdown/check-123067.json?v=2025-04-14-08-10");
}); });
</script> </script>

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - 126169 - Children of a Feature should have the same priority</title> <title>Infineon - 126169 - Children of a Feature should have the same priority</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/126169.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/126169.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/126169.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/126169.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -56,7 +56,7 @@
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/check-126169.json?v=2025-04-10-15-59"); initIndex("/markdown/check-126169.json?v=2025-04-14-08-10");
}); });
</script> </script>

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - Business Value</title> <title>Infineon - Business Value</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/business.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/business.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/business.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/business.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -59,7 +59,7 @@ What is the relative value to the Customer or business?
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-10-15-59", "https://eaf-dev.mes.infineon.com/api/v1/ado/", "business", "Value", "Business Value", "/markdown/PI5-Results/business.json?v=2025-04-10-15-59"); initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-14-08-10", "https://eaf-dev.mes.infineon.com/api/v1/ado/", "business", "Value", "Business Value", "/markdown/PI5-Results/business.json?v=2025-04-14-08-10");
}); });
</script> </script>

View File

@ -9,8 +9,7 @@
<link href="/styles/cod.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/cod.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/scripts/jquery-1.6.4.min.js"></script> <script src="/js/scripts/jquery-1.6.4.min.js"></script>
<script src="/js/scripts/jquery.signalR-2.4.3.min.js"></script> <script src="/js/scripts/jquery.signalR-2.4.3.min.js"></script>
<script src="/signalr/hubs"></script> <script src="/js/cod-1-122-0.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/cod-b.js?v=2025-04-10-15-59" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -56,14 +55,15 @@
$(document).ready(function () { $(document).ready(function () {
const fromHtml = true; const fromHtml = true;
const machineId = 'na'; const machineId = 'na';
const username = 'cbecker1'; const username = 'anonymous';
const baseUri = 'https://eaf-dev.mes.infineon.com'; const baseUri = 'https://eaf-dev.mes.infineon.com';
const apiUrl = 'https://eaf-dev.mes.infineon.com/api/v1/ado/'; const apiUrl = 'https://eaf-dev.mes.infineon.com/api/v1/ado/';
const windowLocationHRef = window.location.href; const windowLocationHRef = window.location.href;
const signalRUrl = baseUri + '/signalr'; const signalRUrl = baseUri + '/signalr';
const workItems = { const workItems = {
a: baseUri + '/markdown/bugs-features-with-parents.json?v=2025-04-10-15-59', a: baseUri + '/markdown/bugs-features-with-parents.json?v=2025-04-14-08-10',
b: baseUri + '/markdown/{[]}.json?v=2025-04-10-15-59' b: baseUri + '/markdown/{[]}.json?v=2025-04-14-08-10',
timeout: 3000,
}; };
const b = { const b = {
page: 'business', page: 'business',

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - Effort</title> <title>Infineon - Effort</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/effort.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/effort.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/effort.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/effort.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -55,7 +55,7 @@
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-10-15-59", "https://eaf-dev.mes.infineon.com/api/v1/ado/", "effort", "Effort", "Effort", "/markdown/PI5-Results/effort.json?v=2025-04-10-15-59"); initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-14-08-10", "https://eaf-dev.mes.infineon.com/api/v1/ado/", "effort", "Effort", "Effort", "/markdown/PI5-Results/effort.json?v=2025-04-14-08-10");
}); });
</script> </script>

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - Risk Reduction and/or Opportunity Enablement</title> <title>Infineon - Risk Reduction and/or Opportunity Enablement</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/risk.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/risk.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/risk.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/risk.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -59,7 +59,7 @@ What else does this do for our business?
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-10-15-59", "https://eaf-dev.mes.infineon.com/api/v1/ado/", "risk", "Risk", "Risk Reduction and/or Opportunity Enablement", "/markdown/PI5-Results/risk.json?v=2025-04-10-15-59"); initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-14-08-10", "https://eaf-dev.mes.infineon.com/api/v1/ado/", "risk", "Risk", "Risk Reduction and/or Opportunity Enablement", "/markdown/PI5-Results/risk.json?v=2025-04-14-08-10");
}); });
</script> </script>

View File

@ -21,7 +21,7 @@
<script src="/js/scripts/jquery-1.6.4.min.js"></script> <script src="/js/scripts/jquery-1.6.4.min.js"></script>
<script src="/js/scripts/jquery.signalR-2.4.3.min.js"></script> <script src="/js/scripts/jquery.signalR-2.4.3.min.js"></script>
<script src="/signalr/hubs"></script> <script src="/signalr/hubs"></script>
<script src="/js/simple.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/simple.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script> <script>

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - Time Criticality</title> <title>Infineon - Time Criticality</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/time.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/time.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/time.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/time.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -59,7 +59,7 @@ How does user/business value decay over time?
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-10-15-59", "https://eaf-dev.mes.infineon.com/api/v1/ado/", "time", "Critical", "Time Criticality", "/markdown/PI5-Results/time.json?v=2025-04-10-15-59"); initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-14-08-10", "https://eaf-dev.mes.infineon.com/api/v1/ado/", "time", "Critical", "Time Criticality", "/markdown/PI5-Results/time.json?v=2025-04-14-08-10");
}); });
</script> </script>

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - User Stor(ies) with parents</title> <title>Infineon - User Stor(ies) with parents</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/with-parents.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/with-parents.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/with-parents.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/with-parents.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -55,7 +55,7 @@
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/bugs-user-stories-with-parents.json?v=2025-04-10-15-59"); initIndex("/markdown/bugs-user-stories-with-parents.json?v=2025-04-14-08-10");
}); });
</script> </script>

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - Result of Weightest Shortest Job First calculation (see @SCALE formula)</title> <title>Infineon - Result of Weightest Shortest Job First calculation (see @SCALE formula)</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/wsjf.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/wsjf.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/wsjf-b.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/wsjf-b.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -55,7 +55,7 @@
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-10-15-59", "https://eaf-dev.mes.infineon.com/api/v1/ado/"); initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-14-08-10", "https://eaf-dev.mes.infineon.com/api/v1/ado/");
}); });
</script> </script>

View File

@ -6,15 +6,15 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<title>Infineon - Result of Weightest Shortest Job First calculation (see @SCALE formula)</title> <title>Infineon - Result of Weightest Shortest Job First calculation (see @SCALE formula)</title>
<link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/bootstrap.min.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/themes/bootstrap3/default/infragistics.theme.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/igniteui/css/structure/infragistics.css?v=2025-04-10-15-59" rel="stylesheet" /> <link href="/igniteui/css/structure/infragistics.css?v=2025-04-14-08-10" rel="stylesheet" />
<link href="/styles/wsjf.css?no-cache=2024-10-04-08-34" rel="stylesheet" /> <link href="/styles/wsjf.css?no-cache=2024-10-04-08-34" rel="stylesheet" />
<script src="/js/jquery-3.6.0.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-3.6.0.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/jquery-ui.min.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/js/wsjf.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/js/wsjf.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.core.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.core.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.lob.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.lob.js?v=2025-04-14-08-10" type="text/javascript"></script>
<script src="/igniteui/js/infragistics.dv.js?v=2025-04-10-15-59" type="text/javascript"></script> <script src="/igniteui/js/infragistics.dv.js?v=2025-04-14-08-10" type="text/javascript"></script>
</head> </head>
<body> <body>
@ -55,7 +55,7 @@
<script> <script>
$(document).ready(function () { $(document).ready(function () {
initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-10-15-59", "https://eaf-dev.mes.infineon.com/api/v1/ado/"); initIndex("/markdown/bugs-features-with-parents.json?v=2025-04-14-08-10", "https://eaf-dev.mes.infineon.com/api/v1/ado/");
}); });
</script> </script>

File diff suppressed because one or more lines are too long

View File

@ -17062,8 +17062,8 @@ if (typeof document == 'undefined') {
const apiUrl = "https://eaf-dev.mes.infineon.com/api/v1/ado/"; const apiUrl = "https://eaf-dev.mes.infineon.com/api/v1/ado/";
const windowLocationHRef = "https://eaf-dev.mes.infineon.com/html/cod.html?site=MES"; const windowLocationHRef = "https://eaf-dev.mes.infineon.com/html/cod.html?site=MES";
const workItems = { const workItems = {
a: "https://eaf-dev.mes.infineon.com/markdown/bugs-features-with-parents.json?v=2025-04-10-15-59", a: "https://eaf-dev.mes.infineon.com/markdown/bugs-features-with-parents.json?v=2025-04-14-08-10",
b: "https://eaf-dev.mes.infineon.com/markdown/{}.json?v=2025-04-10-15-59" b: "https://eaf-dev.mes.infineon.com/markdown/{}.json?v=2025-04-14-08-10"
}; };
const b = { const b = {
page: "business", page: "business",