187 lines
5.6 KiB
JavaScript
187 lines
5.6 KiB
JavaScript
"use strict";
|
|
|
|
// $('dcp.CDE4/csv/Avg', '') == '' ? '' : (parseFloat($('dcp.CDE4/csv/Dev', '0')) / parseFloat($('dcp.CDE4/csv/Avg', '0'))).toFixed(2) + '%'
|
|
|
|
// getValue($('dcp.CDE4/csv/Avg', ''), $('dcp.CDE4/csv/Dev', '0'), $('dcp.CDE4/csv/Avg', '0'));
|
|
|
|
function roundNumber(number, digits) {
|
|
let result;
|
|
const multiple = Math.pow(10, digits);
|
|
result = Math.round(number * multiple) / multiple;
|
|
return result;
|
|
}
|
|
|
|
function getValue(avgRaw, devZeroDefault, avgZeroDefault) {
|
|
let result;
|
|
if (avgRaw == '')
|
|
result = '';
|
|
else {
|
|
let raw = parseFloat(devZeroDefault) / parseFloat(avgZeroDefault);
|
|
result = roundNumber(raw, 2);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
const dev = 0.383;
|
|
const avg = 33.5810;
|
|
const value = getValue(avg, dev);
|
|
console.log("value: " + value);
|
|
|
|
// getValue(self, self.length, $('dcp.CDE4/csv/MesEntity', ''), $('dcp.CDE4/csv/Title', ''), $('dcp.CDE4/csv/Recipe', ''), getContextData('2', 'cds.PROCESS_JOBID', ''));
|
|
|
|
function tryParseInt(str, defaultValue) {
|
|
const parsedValue = parseInt(str);
|
|
return isNaN(parsedValue) ? defaultValue : parsedValue;
|
|
}
|
|
|
|
function getReactorAndRDS(defaultReactor, defaultRDS, text, formattedText, segments) {
|
|
let result = {};
|
|
let rds;
|
|
let reactor;
|
|
let rdsValue;
|
|
if (text == null || text.length === 0 || segments.length === 0 || formattedText == null || formattedText.length === 0)
|
|
reactor = defaultReactor;
|
|
else
|
|
reactor = segments[0];
|
|
if (segments.length <= 1 || !tryParseInt(segments[1], false) || rdsValue < 99)
|
|
rds = defaultRDS;
|
|
else
|
|
rds = segments[1];
|
|
if (reactor.length > 3) {
|
|
rds = reactor;
|
|
reactor = defaultReactor;
|
|
}
|
|
result = { reactor: reactor, rds: rds };
|
|
return result;
|
|
}
|
|
|
|
function getLayerAndPSN(defaultLayer, defaultPSN, segments) {
|
|
let result = {};
|
|
let psn;
|
|
let layer;
|
|
if (segments.length <= 2) {
|
|
psn = defaultPSN;
|
|
layer = defaultLayer;
|
|
}
|
|
else {
|
|
let segmentsB = segments[2].split('.');
|
|
psn = segmentsB[0];
|
|
if (segmentsB.length <= 1)
|
|
layer = defaultLayer;
|
|
else {
|
|
layer = segmentsB[1];
|
|
if (layer.length > 1 && layer[0] === '0')
|
|
layer = layer.substring(1);
|
|
}
|
|
}
|
|
result = { layer: layer, psn: psn };
|
|
return result;
|
|
}
|
|
|
|
function getZone(segments) {
|
|
let result = '';
|
|
if (segments.length <= 3)
|
|
result = '';
|
|
else {
|
|
result = segments[3];
|
|
if (result.length > 1 && result[0] === '0')
|
|
result = result.substring(1);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function getArray(text) {
|
|
let result = {};
|
|
let lot = '';
|
|
let psn = '';
|
|
let rds = '';
|
|
let zone = '';
|
|
let layer = '';
|
|
let reactor = '';
|
|
let employee = '';
|
|
let defaultPSN = '';
|
|
let defaultRDS = '';
|
|
let defaultZone = '';
|
|
let defaultLayer = '';
|
|
let defaultReactor = '';
|
|
let defaultEmployee = '';
|
|
const processOnly = /^[a-zA-z]{2,3}/;
|
|
const processOnlyB = /^[a-zA-z][0-9]{2,4}$/;
|
|
const normal = /^[0-9]{2}[.][0-9]{1}[.]?[0-9]{0,1}/;
|
|
const fileSystemSafe = /[\\,\/,\:,\*,\?,\"",\<,\>,\|]/;
|
|
if (text.match(processOnlyB)) {
|
|
lot = text.toUpperCase();
|
|
psn = defaultPSN;
|
|
rds = defaultRDS;
|
|
zone = defaultZone;
|
|
layer = defaultLayer;
|
|
reactor = defaultReactor;
|
|
employee = defaultEmployee;
|
|
}
|
|
else if (text == null || text.length === 0 || (text.length == 2 && text.match(processOnly))) {
|
|
lot = text;
|
|
employee = lot;
|
|
psn = defaultPSN;
|
|
rds = defaultRDS;
|
|
zone = defaultZone;
|
|
layer = defaultLayer;
|
|
reactor = defaultReactor;
|
|
}
|
|
else if (text.match(normal)) {
|
|
let segments = text.split('.');
|
|
lot = text;
|
|
psn = defaultPSN;
|
|
rds = defaultRDS;
|
|
layer = segments[1];
|
|
reactor = segments[0];
|
|
employee = defaultEmployee;
|
|
if (segments.length <= 2)
|
|
zone = defaultZone;
|
|
else
|
|
zone = segments[2];
|
|
}
|
|
else {
|
|
lot = text.replace(fileSystemSafe, "_").split('\r')[0].split('\n')[0];
|
|
if (lot.length > 2 && lot[0] == '1' && (lot[1] == 'T' || lot[1] == 't'))
|
|
lot = lot.substring(2);
|
|
let segments = lot.split('-');
|
|
let reactorAndRDS = getReactorAndRDS(defaultReactor, defaultRDS, text, lot, segments);
|
|
reactor = reactorAndRDS.reactor;
|
|
rds = reactorAndRDS.rds;
|
|
let layerAndPSN = getLayerAndPSN(defaultLayer, defaultPSN, segments);
|
|
layer = layerAndPSN.layer;
|
|
psn = layerAndPSN.psn;
|
|
zone = getZone(segments);
|
|
if (segments.length <= 4)
|
|
employee = defaultEmployee;
|
|
else
|
|
employee = segments[4];
|
|
}
|
|
result = { rds: rds, psn: psn, reactor: reactor, layer: layer, zone: zone, employee: employee, lot: lot };
|
|
return result;
|
|
};
|
|
|
|
function getValueReactor(value, length, mesEntity, title, recipe, processJobId) {
|
|
if (recipe.toUpperCase() === 'RLOW_STD')
|
|
return mesEntity;
|
|
else if (recipe.toUpperCase() === 'RMID_STD')
|
|
return mesEntity;
|
|
else if (recipe.toUpperCase() === 'RHI_STD')
|
|
return mesEntity;
|
|
else if (recipe.toUpperCase() === 'THINSPC')
|
|
return mesEntity;
|
|
else if (length === 0 && processJobId == 0)
|
|
return getArray(title).reactor;
|
|
else if (length === 0)
|
|
return processJobId;
|
|
else
|
|
return value;
|
|
}
|
|
|
|
const self = '';
|
|
const mesEntity = 'CDE4';
|
|
const title = '75-663192-5281.1';
|
|
const recipe = '8IN_INF';
|
|
const processJobId = '0';
|
|
const valueReactor = getValueReactor(self, self.length, mesEntity, title, recipe, processJobId);
|
|
console.log("value: " + valueReactor); |