Add IndexOf property to WSRequest and Description classes; implement getValue function in recipes-and-patterns.js

This commit is contained in:
2025-09-22 16:46:33 -07:00
parent 2bda7012cd
commit 4bae2ddba4
3 changed files with 121 additions and 0 deletions

View File

@ -30,6 +30,7 @@ public class WSRequest
public string GradeRadialGradient { get; set; } public string GradeRadialGradient { get; set; }
public string GradeStdDev { get; set; } public string GradeStdDev { get; set; }
public int Id { get; set; } public int Id { get; set; }
public string IndexOf { get; set; }
public string Layer { get; set; } public string Layer { get; set; }
public string Lot { get; set; } public string Lot { get; set; }
public string Model { get; set; } public string Model { get; set; }
@ -96,6 +97,7 @@ public class WSRequest
GradeRadialGradient = x.GradeRadialGradient; GradeRadialGradient = x.GradeRadialGradient;
GradeStdDev = x.GradeStdDev; GradeStdDev = x.GradeStdDev;
Operator = logistics.MesEntity; // different name Operator = logistics.MesEntity; // different name
IndexOf = x.IndexOf;
Layer = x.Layer; Layer = x.Layer;
Lot = x.Lot; Lot = x.Lot;
Model = x.Model; Model = x.Model;

View File

@ -30,6 +30,7 @@ public class Description : IDescription, Shared.Properties.IDescription
[JsonPropertyName("PSN")] public string PSN { get; set; } [JsonPropertyName("PSN")] public string PSN { get; set; }
[JsonPropertyName("Reactor")] public string Reactor { get; set; } [JsonPropertyName("Reactor")] public string Reactor { get; set; }
[JsonPropertyName("Recipe")] public string Recipe { get; set; } [JsonPropertyName("Recipe")] public string Recipe { get; set; }
[JsonPropertyName("IndexOf")] public string IndexOf { get; set; }
// //
[JsonPropertyName("Area")] public string Area { get; set; } [JsonPropertyName("Area")] public string Area { get; set; }
[JsonPropertyName("Folder")] public string Folder { get; set; } [JsonPropertyName("Folder")] public string Folder { get; set; }

View File

@ -0,0 +1,118 @@
// Recipe 1 = Matched
// recipes-and-patterns.js under IndexOf
// RecipesAndPatternsMatch
// ($('dcp.HGCV1/csv/Index', 0) + 1) == $('dcp.HGCV1/csv/Count', 0)
// getValue('HGCV', $('dcp.HGCV1/csv/Count', 0), $('dcp.HGCV1/csv/SetupFile', ''), $('dcp.HGCV1/csv/Pattern', ''), getContextData('2', 'cds.NULL_DATA', ''));
function getValue(tool, patternSize, recipe, pattern, json) {
let result;
if (tool == undefined || tool.length === 0 || patternSize == undefined || patternSize.length === 0 || recipe == undefined || recipe.length === 0 || pattern == undefined || pattern.length === 0 || json == undefined || json.length === 0)
result = 'A) Invalid input!';
else {
let parsed;
try {
parsed = JSON.parse(json);
} catch (error) {
parsed = null;
}
if (parsed == null)
result = 'B) Invalid input!';
else if (parsed.rds == undefined || parsed.rds.prodSpec == undefined || parsed.rds.prodSpec.recipesAndPatterns == undefined)
result = 'C) No Spec!';
else {
let toolMatches = [];
for (let index = 0; index < parsed.rds.prodSpec.recipesAndPatterns.length; index++) {
if (parsed.rds.prodSpec.recipesAndPatterns[index].tool === tool) {
toolMatches.push(parsed.rds.prodSpec.recipesAndPatterns[index]);
}
}
if (toolMatches == null || toolMatches.length === 0)
result = 'Tool [' + tool + '] not found in OI API results!';
else {
let debug = '';
let matches = 0;
for (let index = 0; index < toolMatches.length; index++) {
debug += 'patternSize: ' + toolMatches[index].patternSize +
'; recipe: ' + toolMatches[index].recipe +
'; pattern: ' + toolMatches[index].pattern + ';~';
if (toolMatches[index].patternSize == patternSize &&
toolMatches[index].recipe.localeCompare(recipe, ['en-US'], { sensitivity: 'base' }) === 0 &&
toolMatches[index].pattern.localeCompare(pattern, ['en-US'], { sensitivity: 'base' }) === 0) {
matches++;
}
}
if (matches > 0)
result = '1';
else {
result = 'Value not matched~Run~patternSize: ' + patternSize + '; recipe: ' + recipe + '; pattern: ' + pattern + ';~API~' + debug;
}
}
}
}
return result;
}
getValue('HGCV', 9, '6IN4_10.SET', '6_9PLUS.PAT', '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"6IN4_10.SET","pattern":"6_9PLUS.PAT","patternSize":9,"tool":"HGCV"}]}}}');
let json;
let tool;
let recipe;
let pattern;
let patternSize;
tool = 'HGCV'
patternSize = 9;
recipe = '6IN4_10.SET';
pattern = '6_9PLUS.PAT';
json = '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"6IN4_10.SET","pattern":"6_9PLUS.PAT","patternSize":9,"tool":"HGCV"}]}}}';
const testA = getValue(tool, patternSize, recipe, pattern, json);
if (testA !== '1')
throw 'Test A failed: ' + testA;
tool = null;
const testB = getValue(tool, patternSize, recipe, pattern, json);
if (testB !== 'A) Invalid input!')
throw 'Test L failed: ' + testB;
tool = '';
const testC = getValue(tool, patternSize, recipe, pattern, json);
if (testC !== 'A) Invalid input!')
throw 'Test M failed: ' + testC;
patternSize = null;
const testD = getValue(tool, patternSize, recipe, pattern, json);
if (testD !== 'A) Invalid input!')
throw 'Test J failed: ' + testD;
patternSize = '';
const testE = getValue(tool, patternSize, recipe, pattern, json);
if (testE !== 'A) Invalid input!')
throw 'Test K failed: ' + testE;
recipe = null;
const testF = getValue(tool, patternSize, recipe, pattern, json);
if (testF !== 'A) Invalid input!')
throw 'Test F failed: ' + testF;
recipe = '';
const testG = getValue(tool, patternSize, recipe, pattern, json);
if (testG !== 'A) Invalid input!')
throw 'Test G failed: ' + testG;
pattern = null;
const testH = getValue(tool, patternSize, recipe, pattern, json);
if (testH !== 'A) Invalid input!')
throw 'Test H failed: ' + testH;
pattern = '';
const testI = getValue(tool, patternSize, recipe, pattern, json);
if (testI !== 'A) Invalid input!')
throw 'Test I failed: ' + testI;
json = '';
const testK = getValue(tool, patternSize, recipe, pattern, json);
if (testK !== 'A) Invalid input!')
throw 'Test B failed: ' + testK;
json = 'invalid';
const testL = getValue(tool, patternSize, recipe, pattern, json);
if (testL !== 'B) Invalid input!')
throw 'Test C failed: ' + testL;
json = '{"rds":{}}';
const testM = getValue(tool, patternSize, recipe, pattern, json);
if (testM !== 'C) No Spec!')
throw 'Test D failed: ' + testM;
json = '{"rds":{"prodSpec":{"recipesAndPatterns":[]}}}';
const testN = getValue(tool, patternSize, recipe, pattern, json);
if (testN !== 'Tool [HGCV] not found in OI API results!')
throw 'Test E failed: ' + testN;