624 lines
50 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Station Config</title>
<link rel="stylesheet" href="/backend/handsontable/handsontable/dist/handsontable.full.min.css">
<script src="/backend/handsontable/handsontable/dist/handsontable.full.min.js"></script>
<style>
/* ===== BASE THEME (wie Workbench / HMI) ===== */
:root{
--bg:#0b1020;
--card:rgba(255,255,255,0.08);
--border:rgba(255,255,255,0.14);
--text:rgba(255,255,255,0.92);
--muted:rgba(255,255,255,0.6);
--accent:#4f7cff;
--shadow:0 16px 60px rgba(0,0,0,.4);
--radius:20px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
margin:0;
padding:16px;
font-family:-apple-system,system-ui,Segoe UI,Roboto;
background:
radial-gradient(900px 600px at 20% 10%, rgba(79,124,255,.35), transparent 60%),
var(--bg);
color:var(--text);
}
/* ===== LAYOUT ===== */
.app{
max-width:1600px;
margin:0 auto;
height:100%;
display:grid;
grid-template-rows:auto 1fr;
gap:16px;
}
.panel{
background:linear-gradient(180deg,var(--card),rgba(255,255,255,.04));
border:1px solid var(--border);
border-radius:var(--radius);
box-shadow:var(--shadow);
overflow:hidden;
}
.header{
padding:14px 18px;
display:flex;
align-items:center;
justify-content:space-between;
border-bottom:1px solid var(--border);
}
.header h1{
margin:0;
font-size:18px;
}
.header span{
color:var(--muted);
font-size:14px;
}
/* ===== CONTENT ===== */
.content{
padding:16px;
height:100%;
display:flex;
flex-direction:column;
gap:12px;
}
/* ===== BUTTONS ===== */
button{
padding:10px 18px;
border-radius:14px;
border:0;
background:var(--accent);
color:white;
font-size:14px;
cursor:pointer;
}
button:hover{
filter:brightness(1.1);
}
/* ===== HANDSONTABLE INTEGRATION ===== */
#hot{
flex:1;
overflow:hidden;
border-radius:14px;
border:1px solid var(--border);
}
.handsontable{
background:transparent;
}
.ht_master .wtHolder{
background:transparent;
}
</style>
</head>
<body>
<main class="app">
<!-- HEADER -->
<section class="panel">
<div class="header">
<h1>
Station Config
<span>Station <strong id="stationNumberDisplay"></strong></span>
</h1>
<button onclick="setConfig()">Speichern</button>
</div>
</section>
<!-- CONTENT -->
<section class="panel content">
<div id="hot"></div>
</section>
</main>
<script>
/*
0) Globale Variablen für Ihre URL, stationNumber, persID etc.
Normalerweise aus sessionStorage geholt, hier fallback-Dummy
*/
const urlParams = new URLSearchParams(window.location.search);
const url = sessionStorage.getItem("url") || "http://localhost:8080";
const stationNumber = urlParams.get("station");
const persID = sessionStorage.getItem("persID") || "-1";
const script = document.createElement('script');
document.getElementById("stationNumberDisplay").textContent = stationNumber;
/*
1) Lokale Demo-Daten (myDataRaw)
code_nr, description, code_wert, changedby, timestamp, used
*/
const myDataRaw = [
{ code_nr: 4010, description: "BDE THRESHOLD", code_wert: "1", changedby: "", timestamp: "2018-11-29 13:19:26", used: "NOT_USED" },
{ code_nr: 4012, description: "Do TR to RM booking only when previous workstep has enough PASS(TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "2018-11-28 09:36:39", used: "NOT_USED" },
{ code_nr: 8100, description: "Check recipes (0, 1, 10)", code_wert: "10", changedby: "", timestamp: "2020-03-11 10:38:44", used: "NOT_USED" },
{ code_nr: 8200, description: "Active Recipe necessary for upload result data (J/N)", code_wert: "N", changedby: "", timestamp: "2021-02-08 15:50:49", used: "NOT_USED" },
{ code_nr: 13200, description: "KAP_TYP_M reference", code_wert: "7", changedby: "", timestamp: "2018-01-15 12:22:04", used: "NOT_USED" },
{ code_nr: 13400, description: "Allow merge multipanel scrap (TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "2023-06-19 14:29:43", used: "NOT_USED" },
{ code_nr: 13410, description: "Override scrap on same workstep (TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "2022-01-19 13:24:19", used: "NOT_USED" },
{ code_nr: 18200, description: "Allow bookings for SerialNumbers that are already set to scrap (off|check|checkAll|-1= Use PlantConfig 18200)", code_wert: "-1", changedby: "", timestamp: "2022-01-19 13:24:11", used: "NOT_USED" },
{ code_nr: 20000, description: "MDE Prod time calculation with station snr booking (0) or with condition (1)", code_wert: "1", changedby: "", timestamp: "2020-07-17 13:20:54", used: "NOT_USED" },
{ code_nr: 20001, description: "MDE OEE calculation with Yield (0) or with FPY (1)", code_wert: "1", changedby: "", timestamp: "2020-07-17 13:20:54", used: "NOT_USED" },
{ code_nr: 20002, description: "MDE NEE calculation with Yield (0) or with FPY (1)", code_wert: "1", changedby: "", timestamp: "2020-07-17 13:20:54", used: "NOT_USED" },
{ code_nr: 20003, description: "MDE Placing performance calculation with component (0) or with unit (1)", code_wert: "1", changedby: "", timestamp: "2020-07-17 13:20:54", used: "NOT_USED" },
{ code_nr: 20004, description: "MDE MTBF calculation with operational time (0) or with uptime (1)", code_wert: "1", changedby: "", timestamp: "2020-07-17 13:20:54", used: "NOT_USED" },
{ code_nr: 20013, description: "MDE OEE calculation with total availability (0) or with organizatonal (1) or with technical (2) or with system-related (3)", code_wert: "0", changedby: "", timestamp: "2020-07-17 13:20:54", used: "NOT_USED" },
{ code_nr: 20014, description: "Cycle time calculation with time range (0) or with productive time acc. to shift timetable (1)", code_wert: "0", changedby: "", timestamp: "2020-07-17 13:20:53", used: "NOT_USED" },
{ code_nr: 21001, description: "SNR_MAT_ID of active shipping lot of this station", code_wert: "481927", changedby: "", timestamp: "2024-08-15 16:04:11", used: "NOT_USED" },
{ code_nr: 21016, description: "Suppress ERP-Feedback Lot Create/Complete/Reopen/Finish (TX: 830,831,832,833) (TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "2018-03-15 13:03:43", used: "NOT_USED" },
{ code_nr: 25010, description: "EWAPI: getBomItems suppress BomItems with 0 Quantity in Grouped Mode:2 (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "2018-03-07 14:34:37", used: "NOT_USED" },
{ code_nr: 800, description: "SMS_MOBIL_PHONE_NR", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 1000, description: "Flag PASS", code_wert: "10001", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 1001, description: "Flag REWORK", code_wert: "10002", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 1002, description: "Flag SCRAP", code_wert: "10003", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 1010, description: "Failure record type", code_wert: "11001", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 1011, description: "Channel number", code_wert: "12001", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 1100, description: "Supplier type", code_wert: "H", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 1101, description: "Failure type category", code_wert: "F", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 1102, description: "Failure reason category", code_wert: "U", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 1103, description: "Keyboard type", code_wert: "T", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 1104, description: "State type", code_wert: "Z", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 2000, description: "Digitizer type", code_wert: "DCP1724", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 2001, description: "X-REF1", code_wert: "001 X-REF1:", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 2002, description: "Y-REF1", code_wert: "002 Y-REF1:", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 2003, description: "X-REF2", code_wert: "003 X-REF2:", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 2004, description: "Y-REF2", code_wert: "004 Y-REF2:", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 4001, description: "RETURN_RJOU_THRESHOLD", code_wert: "7", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 4011, description: "Account TR-BDE conforming to shift(TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 4015, description: "Workorder time", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 4016, description: "QM-Analyses: Use RM-Good-Bookings (TRUE/FALSE) (Default: TR-bookings are used)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 5001, description: "Password Scrap", code_wert: "11018010", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 6000, description: "SCANNER-BARCODE", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 6001, description: "SCANNER-BOARD-SNR", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7003, description: "UTILS_PART_DNC_SCHEMA", code_wert: "10714", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7004, description: "UTILS_PART_FILE_ID_SCHEMA", code_wert: "10614", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7005, description: "Target directory Schema", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7006, description: "UTILS_PART_DNC_LAYOUT", code_wert: "10713", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7007, description: "UTILS_PART_FILE_ID_LAYOUT", code_wert: "10613", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7008, description: "Target directory Layout", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7010, description: "Target directory CDB_DATA LAYOUT", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7011, description: "PR Open 2nd view in Layouter(TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7012, description: "PR File extension for 2nd viewer file", code_wert: "two", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7013, description: "Paternoster active (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7020, description: "Source directory Layout", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7021, description: "Source directory Viewer", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7022, description: "Target directory Viewer", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7023, description: "Call Layout", code_wert: "layout.exe", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7024, description: "Call Viewer", code_wert: "image.exe", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7025, description: "Start Layouter automatically (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7026, description: "BOM Check in PR automatically (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7027, description: "BOM check with status (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7028, description: "BOM check with quantity (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7029, description: "SETUP Tear down locked reels automatically (TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7033, description: "CopyViewerData (TRUE/FALSE) [TRUE]=Copy, [FALSE] do not copy", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7100, description: "Layouter class", code_wert: "PRLayouter", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7101, description: "Layout active (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7102, description: "Viewer active (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7103, description: "Digitizer active (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7104, description: "OPMA_KAP active (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7105, description: "OPMA_MAGRP active (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7106, description: "Number of opm uploads the server should cache for station", code_wert: "100", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7107, description: "Reset OPM-A Kap Cache on product change (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7108, description: "Reset OPM-A Kap Cache on workorder change (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7109, description: "Reset OPM-A Kap Cache on shift change (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7110, description: "Cycle time active (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7120, description: "(PR) Workstep query serial no (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7125, description: "PR Tester dialog always active (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7126, description: "PR Setup dialog always active (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7127, description: "Register active PR workorder (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7128, description: "PR Panel Flag N Snr Register single (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7129, description: "PR Check always serial number state (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7130, description: "PR Merge to next level (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7131, description: "PR Merge with equal serial no (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7132, description: "Activated only if BOM-Check ok (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7133, description: "Default Position Pattern", code_wert: "Pos_", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7134, description: "Check expiration (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7135, description: "Enable multiple positions for same part (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7136, description: "Enable create container in setup dialog (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7137, description: "Print label config file", code_wert: "Label.cfg", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7138, description: "Print label output", code_wert: "Label.txt", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7139, description: "Maximum number of repairs", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7140, description: "Repair counting for all uploads (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7141, description: "Exceeding repairs procedure (0, 1, 2)", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7150, description: "Panel-related setup (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7160, description: "PR Setup Station Activate Work Order (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7200, description: "ICT Failure type", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7201, description: "FailureCode for checkSerialUnitState book fail", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7202, description: "TR Automatic upload state of previous work step (FALSE/L/W)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7203, description: "API Check all previous steps concerning uploaded state (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7204, description: "API Test Retry counter for CheckState (J/N/D)", code_wert: "N", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7205, description: "API_GETSNRBYSNRREF_SINGLE_ERROR (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7206, description: "API_Check_merge_to_BOM (TRUE/FALSE) TRUE=check BOM Qty", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7207, description: "API_UNMERGEPARTS deactivate (M)aster, (S)lave or (N)othing", code_wert: "N", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7208, description: "API_IGNORE_SNR_UNIQUE_FOR_MERGE (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7209, description: "Loop counter only for active error codes (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7210, description: "CHECK_ANOMALY_FOR_RESULT_DATA (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7211, description: "CHECK_ANOMALY_ERROR_CODE (Errorcode for attributive error)", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7212, description: "CHECK_ANOMALY_FAILCODE (Failcode for measurecode_wert)", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7213, description: "CHECK_ANOMALY_RESET_TIME (ResetTime in sec)", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7214, description: "CHECK_ANOMALIE_FOR_2ND_UPLOAD_INFLUENCE_code_wertS", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7215, description: "CHECK_ANOMALIE_FOR_2ND_UPLOAD_CHANGE_MODEL", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7216, description: "CHECK_ANOMALIE_PSEUDO_ERROR_CODE", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7217, description: "Check the Batch Quantity in API-Call verifyMerge (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7218, description: "CODE_API_CHECK_MERGED_PARTS_COMPLETE (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7219, description: "API Check merge to BOM with client version (TRUE/FALSE) TRUE=check BOM Qty", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7220, description: "Report Merge to ERP-System (TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7221, description: "PR_UNMERGE_EXTENSION free Text(WO actual WorkOrder)", code_wert: "WO", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7222, description: "SWITCH_SERIALNO_AFTER_MERGE (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7223, description: "Enable check for consecutive fault (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7224, description: "Cancel Upload on station locked (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7225, description: "Add Time[min] for Messages :mdcUploadStationCondition endDate = (startDate + X)", code_wert: "5", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7226, description: "Check code: 16000 to resolve the state of the serial number (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7227, description: "Tranfer MDC station conditions to ERP (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7228, description: "Max. quantity off registered batches at station", code_wert: "1", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7230, description: "Correction factor for cycle time", code_wert: "1.0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7250, description: "SPA_FUNCTION_AVAILABLE", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7251, description: "SPA_RESET_TIME (in seconds)", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7252, description: "SPA_SET_REWORK_ON_CP_ERROR", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7253, description: "SPA_REWORK_ON_CPK_ERROR", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7254, description: "SPA_ASSIGN_CP_ERROR_CODE", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7255, description: "SPA_ASSIGN_CP_PSEUDO_ERROR_CODE", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7256, description: "SPA_ASSIGN_CPK_ERROR_CODE", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7257, description: "SPA_ASSIGN_CPK_PSEUDO_ERROR_CODE", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7258, description: "API_ANOMALY_CHECK_RETURN_ENABLED", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7260, description: "CHECK_ORDER_NET_FOR_MERGE", code_wert: "-1", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7320, description: "Refer to Serial no (S), Position (P) or both (-)", code_wert: "-", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7400, description: "upload->update single mat qty (FALSE, TRUE, KONSI)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7401, description: "upload->update mat qty for all bookings (FALSE, TRUE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7402, description: "update mat qty: 0 = as 7401, 1 = first PASS, 2 = each PASS, 3 = first PASS/SCRAP, 4 = each PASS/SCRAP", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7450, description: "default cost center number used for material booking", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7510, description: "Serialnumber-Generation: Fix part for station", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7666, description: "Derivation Manufacturing type", code_wert: "8888", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 7777, description: "Product types of external charges", code_wert: "9999", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8000, description: "Account state in config management (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8101, description: "Check recipes for trUploadStationResult compatible to trUploadResultDataAndRecipe by configuration parameter 8100 (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8110, description: "Check Recipe of completeness (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8300, description: "Register user required for upload (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8310, description: "API processLayer is workplan Avo or Workstep (L/A/W)", code_wert: "L", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8320, description: "Keep selected process layer in Shipping-Module (TRUE/FALSE)", code_wert: "N", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8400, description: "Equipment-Bookings during API-Upload (TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8401, description: "AssetEquipment-Bookings during API-Upload (TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8402, description: "Cavity-Bookings during API-Upload (TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8410, description: "Allow multiple equipment setup on same station (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8411, description: "Amount of multiple equipment setup on same station", code_wert: "2", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8500, description: "Transfer completed batches to ERP", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8510, description: "Transfer serials to ERP: 0 = all, 1 = first PASS, 2 = all PASS, 3 = first PASS/SCRAP, 4 = all PASS/SCRAP", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 8610, description: "API-getBinInfo LocationNo Mode (0=OLD, 1=ONLY NUMBER, 2=COMPLETE PATH)", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 9011, description: "API-getRecipeDataStrictObjectTypeValidation Mode (0=compatible mode, 1=strict mode)", code_wert: "1", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 10000, description: "FAILDAT_Z1800", code_wert: "11002", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 10001, description: "FAILDAT_Z8000", code_wert: "11003", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 10002, description: "FAILDAT_SPEA", code_wert: "11004", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 10003, description: "FAILDAT_GENRAD", code_wert: "11005", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 11000, description: "PSEUDO_COMPTYPE_FAILICT", code_wert: "10298", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 12000, description: "CONFIG_NO_COMPTYPE", code_wert: "10203", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13000, description: "TESTSTEP_MODE (OBJECT_ID, OBJECT_ID&STK_VERS, LP_ID)", code_wert: "OBJECT_ID", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13010, description: "CHECK_ONLY_PREVIOUS_LOOP_COUNTER (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13011, description: "CHECK_OWN_STATUS_ON_FIRST_WS (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13020, description: "WO_CHECK_NEEDS_RECIPE", code_wert: "N", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13021, description: "WO_CHECK_NEEDS_CUSTOMER", code_wert: "N", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13100, description: "Skip BOM-Check (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13110, description: "Activate setup immediately (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13111, description: "SETUP_ACTIVATION_ON_LAST_USED_WORKORDER (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13120, description: "Line based setup activation (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13125, description: "Open msl package while setup on smt line automatically (false/activation/setup)", code_wert: "false", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13130, description: "Refill only same parts at the same setup position (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13140, description: "Type for reading setup-data sequences: A = all, F = first, L = last", code_wert: "A", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13145, description: "BOM Check with additional components (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13150, description: "BOM Check for all boards of multi panels (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13161, description: "SMT wait for bomCheck timeout in sec", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13162, description: "SMT wait for bomCheck interval in ms", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13163, description: "SMT wait for bomCheck mode(0=off, 1=all machines in one ws, 2=check previous ws)", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13170, description: "SMT book omitted serials (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13300, description: "Always check actual production order (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13301, description: "enable ProductionOrder-State check (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13302, description: "Finish production order when qty reached (0-No, 1-all..., 2-last..., 3-first workstep)", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13310, description: "Always check actual other orders than production order (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13311, description: "enable Order-State check for other orders than ProductionOrder (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13312, description: "Finish other orders than production order when qty reached (0-No, 1-all..., 2-last..., 3-first workstep)", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13420, description: "Allow changing serialNumber state to OK (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 13600, description: "API: attribGetAttributecode_werts -> enable complete check (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 14000, description: "Activate OpmMd (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15000, description: "Limit Residual time share of Overhead Costs in Percent", code_wert: "50", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15001, description: "Storage assignment barcode", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15002, description: "Auto. shift to stock(15001) while setup (0=off, 1=to machine, 2=to machine and back to default)", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15003, description: "Store in transaction type while setup", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15004, description: "Store in transaction type while tear down", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15100, description: "ONLY_MATLABEL_SETUP (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15200, description: "Create new failure type from measuring result (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15201, description: "Level of new failure type (0, 1, 2)", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15210, description: "Use intervention limit from previous recipe(R), station(K) default code_werts(D)", code_wert: "D", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15211, description: "Intervention limit Ok (in percent, 0 - 100)", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15212, description: "Intervention limit scrap (in percent, >=100)", code_wert: "100", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15220, description: "Update recipe-teststeps on upload if measurement-type changes (0 Dont compare measurement-type, 1 Only changes to DYNAMIC...,2 Any change)", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15250, description: "generate pseudo errors for measure code_werts with these failcodes(sep. by [;] )", code_wert: "-2147483648", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15260, description: "no OPM data for measure code_werts with these failcodes(sep. by [;] )", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15270, description: "Size of the returned array size for api functions", code_wert: "1000", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15280, description: "Lock station exclusive (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 15300, description: "API queryTestData: Fetch data uploaded with -1, (TRUE, FALSE(default)).", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 16000, description: "Rep- or Diag place: Terminate workstep (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 16001, description: "Ignore booking of repair/diag station when not allowed to close work step (Y/N/A)", code_wert: "Y", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 16100, description: "Uploads from this station are Testplan-relevant and count for SampleCaches (TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 18000, description: "ERP line number for confirmation", code_wert: "-", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 18500, description: "All Atribute get APIs will use equal(0) or like (1) in case of search condition", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 18510, description: "Attribute-Search: Treat empty string as wildcard (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 20011, description: "Calculation method (0) overall performance (1) weighted average", code_wert: "1", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 21002, description: "object_id of default Lot-Product for Lot in Lot", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 21003, description: "object_id of default Lot-Part for serial in Lot", code_wert: "0", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 21004, description: "Default Customer", code_wert: "-1", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 21005, description: "SHIPPING: No automatic serial check for addSnrTOLot (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 21010, description: "Suppress ERP-Feedback Sno <-> Lot (TX: 810,811) (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 21012, description: "Suppress ERP-Feedback Lot <-> Lot (TX: 820,821,822,823) (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 21020, description: "Lock handling for shipping (I = ignore, F = forbidden, L = locked only)", code_wert: "I", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 22000, description: "Automatic depaneling of multipanels (FALSE/TRUE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 25001, description: "Fix API mdataGetBomData: switch off processbased (FALSE/TRUE)", code_wert: "TRUE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 25002, description: "IMSAPI: trAssignSerialNumberMergeAndUploadState -> book scrap (FALSE/TRUE)", code_wert: "TRUE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 25003, description: "API: verifyMergeBySnrRef fix errorcode -2 when not finished (FALSE/TRUE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 25004, description: "API: Allow booking on merged(inactive) serial no (FALSE/TRUE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 25020, description: "IMSAPI: Set mdataGetBomData() compatible to 8.52.00 changes (TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 25030, description: "IMSAPI: Correct trCheckSerialNumberState() in case of scrap and open work steps in multi panel (TRUE/FALSE)", code_wert: "TRUE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 25040, description: "IMSAPI: Set trGetSerialNumberUploadInfo() compatible to 8.50.01 (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 25050, description: "Leave packaging information to manufacturing serial number when add to change order (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 25100, description: "IMSAPI: Send new created material bin immediately to ERP (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 26002, description: "PFDC booking : User authentication required", code_wert: "TRUE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 27000, description: "Transfer Equipment usage for PFDC Booking to ERP", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 28001, description: "Publish and subscribe messages for workorders", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 28002, description: "Pub/Sub-Messaging for EQUIPMENT (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 28003, description: "Pub/Sub-Messaging for MATERIAL SETUP (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 28004, description: "Pub/Sub Messaging for STATION MEASUREMENT (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 28005, description: "Pub/Sub Messaging for SERIAL NUMBER MEASUREMENT (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 28006, description: "Pub/Sub Messaging for SERIAL NUMBER FAILURE (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 28007, description: "Pub/Sub Messaging for STATION CONDITION (TRUE/FALSE)", code_wert: "FALSE", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" },
{ code_nr: 30000, description: "Line attribute", code_wert: "", changedby: "", timestamp: "1970-01-01 01:00:00", used: "NOT_USED" }
];
/*
2) Vorverarbeitung (Transformation):
- "TRUE"/"FALSE" => boolean
- "USED"/"NOT_USED" => boolean
*/
function transformData(rawArray) {
return rawArray.map(obj => {
const newObj = { ...obj };
// used: "USED" => true, "NOT_USED" => false
newObj.used = (obj.used === "USED");
// code_wert: "TRUE" => true, "FALSE" => false
if (obj.code_wert === "TRUE") {
newObj.code_wert = true;
} else if (obj.code_wert === "FALSE") {
newObj.code_wert = false;
}
return newObj;
});
}
/*
3) Custom Renderer: boolean => Checkbox, sonst => Text
*/
function booleanOrTextRenderer(hotInstance, td, row, col, prop, value, cellProperties) {
if (typeof value === "boolean") {
// Standard-CheckboxRenderer => klickbare Checkbox
Handsontable.renderers.CheckboxRenderer.apply(this, arguments);
} else {
// Andernfalls normaler Text
Handsontable.renderers.TextRenderer.apply(this, arguments);
}
}
/*
4) Handsontable initialisieren
*/
let hot;
document.addEventListener('DOMContentLoaded', function() {
const container = document.getElementById('hot');
// Start mit transformierten localData
const transformedData = transformData(myDataRaw);
hot = new Handsontable(container, {
data: transformedData,
rowHeaders: true,
colHeaders: [
"code_nr",
"Description",
"code_wert",
"Change by",
"Changed Date",
"used (checkbox)"
],
columns: [
{
data: "code_nr",
type: "numeric",
readOnly: true
},
{
data: "description",
type: "text",
readOnly: true
},
{
data: "code_wert",
renderer: booleanOrTextRenderer
},
{
data: "changedby",
type: "text",
readOnly: true
},
{
data: "timestamp",
type: "text",
readOnly: true
},
{
data: "used",
renderer: booleanOrTextRenderer
}
],
licenseKey: "non-commercial-and-evaluation"
});
});
/*
5a) getConfig() =>
Lädt vom Server (z.B. '/backend/api/getStationConfig') und merged
*/
function getConfig() {
fetch(url + '/backend/api/getStationConfig', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ station: stationNumber })
})
.then(response => {
if (!response.ok) {
throw new Error(`Server error: ${response.status}`);
}
return response.json();
})
.then(data => {
if (!data || data.length === 0) {
alert("Keine Daten zum Importieren.");
return;
}
// Merge mit myDataRaw:
// Für jedes Item in 'data' => passendes localItem
data.forEach(apiItem => {
const localItem = myDataRaw.find(x => x.code_nr === apiItem.code_nr);
if (localItem) {
// Felder anpassen
localItem.code_wert = apiItem.code_wert;
localItem.used = "USED";
localItem.timestamp = formatTimestampToYMDHMS(apiItem.timestamp);
localItem.changedby = apiItem.changedby;
} else {
// optional: Neu hinzufügen
// myDataRaw.push(apiItem);
}
});
// Neu transformieren & in Handsontable laden
const newData = transformData(myDataRaw);
hot.loadData(newData);
//alert("Daten gemerged & aktualisiert!");
})
.catch(err => {
console.error("Fehler bei getStationConfig:", err);
alert("Fehler beim Laden der Daten!");
});
}
7
function formatTimestampToYMDHMS(timestampNumber) {
const dateObj = new Date(timestampNumber); // ms seit 1970
const yyyy = dateObj.getFullYear();
const MM = String(dateObj.getMonth() + 1).padStart(2, "0"); // Monat 1-based
const dd = String(dateObj.getDate()).padStart(2, "0");
const HH = String(dateObj.getHours()).padStart(2, "0");
const mm = String(dateObj.getMinutes()).padStart(2, "0");
const ss = String(dateObj.getSeconds()).padStart(2, "0");
// z.B. "2021-02-08 15:50:49"
return `${yyyy}-${MM}-${dd} ${HH}:${mm}:${ss}`;
}
/*
5b) setConfig() =>
Liest nur used==true aus der Tabelle,
wandelt true => "USED" etc.
=> sendet an '/backend/api/setStationConfig'
*/
function setConfig() {
// 1) Daten aus Handsontable
const allRows = hot.getSourceData();
// 2) Filtern: Nur used === true
const usedRows = allRows.filter(row => row.used === true);
// 3) "used" => "USED" und ggf. Felder leeren
const finalData = usedRows.map(item => {
// Neues Objekt aus dem Original (damit wir nicht direkt in allRows schreiben)
const newObj = { ...item };
// used = "USED"
newObj.used = "USED";
if (typeof newObj.code_wert === "boolean") {
// true => "true", false => "false"
newObj.code_wert = newObj.code_wert ? "true" : "false";
}
// Wenn gewünscht: Andere Felder leeren
// newObj.code_nr = "";
// newObj.description = "";
// newObj.code_wert = "";
// newObj.changedby = "";
// newObj.timestamp = "";
return newObj;
});
if (finalData.length === 0) {
alert("Keine Zeilen mit 'used' = true gefunden!");
return;
}
// 4) fetch an /backend/api/setStationConfig
fetch(url + "/backend/api/setStationConfig", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
station: stationNumber,
persID: persID,
data: finalData
})
})
.then(response => {
if (!response.ok) {
throw new Error("Server error: " + response.status);
}
return response.json();
})
.then(result => {
alert("Save successfully!");
console.log("SetStationConfig result:", result);
})
.catch(err => {
console.error("Fehler bei setStationConfig:", err);
alert("Fehler beim Speichern.");
});
}
getConfig();
</script>
</body>
</html>