docs/site/Rockwell/Optix/DotNet/tpdAlarmManager/index.html

429 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
<link rel="canonical" href="/Rockwell/Optix/DotNet/tpdAlarmManager/">
<meta property="og:title" content="tpdAlarmManager | docmd">
<meta property="og:description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
<meta property="og:url" content="/Rockwell/Optix/DotNet/tpdAlarmManager/">
<meta property="og:site_name" content="docmd">
<meta property="og:image" content="/assets/images/docmd-preview.png">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="tpdAlarmManager | docmd">
<meta name="twitter:description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
<meta name="twitter:image" content="/assets/images/docmd-preview.png">
<title>tpdAlarmManager : docmd</title>
<link rel="shortcut icon" href="../../../assets/favicon.ico" type="image/x-icon">
<script>// Source file from the docmd project — https://github.com/mgks/docmd
/*
* Initialize the theme from localStorage
*/
(function() {
try {
const storedTheme = localStorage.getItem('docmd-theme');
if (storedTheme) {
document.documentElement.setAttribute('data-theme', storedTheme);
// Also update highlight CSS link to match the stored theme
const highlightThemeLink = document.getElementById('highlight-theme');
if (highlightThemeLink) {
const baseHref = highlightThemeLink.getAttribute('data-base-href');
if (baseHref) {
const newHref = baseHref + `docmd-highlight-${storedTheme}.css`;
highlightThemeLink.setAttribute('href', newHref);
}
}
}
} catch (e) {
console.error('Error applying theme from localStorage', e);
}
})();</script>
<link rel="stylesheet" href="../../../assets/css/docmd-main.css">
<link rel="stylesheet" id="highlight-theme" href="../../../assets/css/docmd-highlight-light.css" data-base-href="../../../assets/css/">
<link rel="stylesheet" href="../../../assets/css/docmd-theme-sky.css">
<!-- Google Analytics GA4 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8QVBDQ4KM1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8QVBDQ4KM1');
</script>
</head>
<body class="sidebar-collapsible"
data-theme="light" data-default-collapsed="false"
data-copy-code-enabled="true">
<aside class="sidebar">
<div class="sidebar-header">
<a href="/" class="logo-link">
<img src="../../../assets/images/docmd-logo-light.png" alt="docmd logo" class="logo-light" >
<img src="../../../assets/images/docmd-logo-dark.png" alt="docmd logo" class="logo-dark" >
</a>
</div>
<nav class="sidebar-nav" aria-label="Main navigation">
<ul>
<li class="" >
<a href="../../../" class="" >
<svg class="lucide-icon icon-home" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8" />
<path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
</svg>
<span class="nav-item-title">Welcome</span>
</a>
</li>
<li class="collapsible" data-nav-id="#">
<a href="#" class="" >
<svg class="lucide-icon icon-rocket" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z" />
<path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z" />
<path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0" />
<path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5" />
</svg>
<span class="nav-item-title">Getting Started</span>
<svg class="lucide-icon icon-chevron-right collapse-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="m9 18 6-6-6-6" />
</svg>
</a>
<ul class="submenu">
<li class="" >
<a href="https://docmd.mgks.dev" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-scroll" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M19 17V5a2 2 0 0 0-2-2H4" />
<path d="M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3" />
</svg>
<span class="nav-item-title">Documentation</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://docmd.mgks.dev/getting-started/installation" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-download" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 15V3" />
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
<path d="m7 10 5 5 5-5" />
</svg>
<span class="nav-item-title">Installation</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://docmd.mgks.dev/getting-started/basic-usage" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-play" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z" />
</svg>
<span class="nav-item-title">Basic Usage</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://docmd.mgks.dev/content" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-layout-template" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect width="18" height="7" x="3" y="3" rx="1" />
<rect width="9" height="7" x="3" y="14" rx="1" />
<rect width="5" height="7" x="16" y="14" rx="1" />
</svg>
<span class="nav-item-title">Content</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
</ul>
</li>
<li class="" >
<a href="https://github.com/mgks/docmd" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-github" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4" />
<path d="M9 18c-4.51 2-5-2-7-2" />
</svg>
<span class="nav-item-title">GitHub</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://github.com/sponsors/mgks" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-heart" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5" />
</svg>
<span class="nav-item-title">Support the Project</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
</ul>
</nav>
</aside>
<div class="main-content-wrapper">
<div class="page-header">
<div class="header-left">
<button id="sidebar-toggle-button" class="sidebar-toggle-button" aria-label="Toggle Sidebar">
<svg class="lucide-icon icon-panel-left-close" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect width="18" height="18" x="3" y="3" rx="2" />
<path d="M9 3v18" />
<path d="m16 15-3-3 3-3" />
</svg>
</button>
<h1>tpdAlarmManager</h1>
</div>
<div class="header-right">
<button id="theme-toggle-button" aria-label="Toggle theme" class="theme-toggle-button theme-toggle-header">
<svg class="lucide-icon icon-sun icon-sun" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="4" />
<path d="M12 2v2" />
<path d="M12 20v2" />
<path d="m4.93 4.93 1.41 1.41" />
<path d="m17.66 17.66 1.41 1.41" />
<path d="M2 12h2" />
<path d="M20 12h2" />
<path d="m6.34 17.66-1.41 1.41" />
<path d="m19.07 4.93-1.41 1.41" />
</svg>
<svg class="lucide-icon icon-moon icon-moon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401" />
</svg>
</button>
</div>
</div>
<main class="content-area">
<div class="content-layout">
<div class="main-content">
<h1 id="tpdalarmmanager">⚙️ tpdAlarmManager</h1>
<p>La classe <strong>tpdAlarmManager</strong> è una NetLogic che si occupa di importare traduzioni e allarmi da file Excel (<code>.xlsx</code>) presenti in una cartella specificata.</p>
<p>Questo componente automatizza il caricamento di dizionari di allarmi, facilitando lintegrazione e la gestione centralizzata dei dati di allarme nel progetto.</p>
<hr>
<h2 id="panoramica-generale">🚦 Panoramica generale</h2>
<p>Il metodo principale della classe è:</p>
<ul>
<li><code>ImportTranslationsAndAlarms()</code>: Importa i file Excel di allarmi e traduzioni dalla cartella configurata, permette allutente di selezionare quali dizionari caricare, quindi importa i dati allinterno del progetto HMI.</li>
</ul>
<hr>
<h2 id="funzionamento-principale">🛠️ Funzionamento principale</h2>
<table>
<thead>
<tr>
<th>Metodo</th>
<th>Descrizione</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ImportTranslationsAndAlarms()</code></td>
<td>Esegue la scansione della cartella degli allarmi, filtra i file <code>.xlsx</code>, mostra una selezione allutente e importa i dizionari scelti.</td>
</tr>
</tbody>
</table>
<hr>
<h2 id="flusso-di-lavoro-del-metodo-importtranslationsandalarms">🔄 Flusso di lavoro del metodo ImportTranslationsAndAlarms</h2>
<ol><li>Recupera il percorso completo della cartella allarmi tramite la variabile <code>AlarmFolder</code>.</li>
<li>Controlla che la cartella esista; altrimenti lancia uneccezione con messaggio in dialetto veneto.</li>
<li>Cerca tutti i file <code>.xlsx</code> nella cartella specificata.</li>
<li>Crea un dizionario che mappa il nome del file (senza estensione) al percorso completo.</li>
<li>Invoca uno script che presenta una lista di opzioni allutente per selezionare i dizionari da importare.</li>
<li>Per ogni dizionario selezionato, richiama <code>Owner.ImportAlarmsInsideOwner</code> per importare i dati nel progetto.</li>
</ol>
<hr>
<h2 id="dettagli-importanti">💡 Dettagli importanti</h2>
<ul>
<li>La funzione utilizza un metodo di utilità <code>Utils.GetFullPath()</code> per risolvere il percorso della cartella allarmi.</li>
<li>Viene utilizzata una cartella temporanea tramite <code>Utils.GetTempFolder()</code> per eventuali operazioni intermedie.</li>
<li>Lutente interagisce con uno script generato dinamicamente per scegliere i file da importare, tramite <code>ConsoleLauncher.Launch</code>.</li>
<li>I nomi dei file senza estensione sono usati come chiavi per la selezione.</li>
<li>Leccezione lanciata in caso di cartella inesistente ha un tono molto colloquiale e colorito (dialetto veneto).</li>
<li>È presente un codice commentato per una versione parallela di importazione (con <code>Parallel.ForEach</code>) che potrebbe essere abilitata per migliorare performance.</li>
</ul>
<hr>
<h2 id="metodi-principali">🧰 Metodi principali</h2>
<table>
<thead>
<tr>
<th>Metodo</th>
<th>Descrizione</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ImportTranslationsAndAlarms()</code></td>
<td>Metodo esportato che gestisce il processo completo di importazione degli allarmi e traduzioni da file Excel.</td>
</tr>
</tbody>
</table>
<hr>
<h1 id="in-depth-funzioni-di-tpdalarmmanager">🔍 In Depth: Funzioni di tpdAlarmManager</h1>
<hr>
<h3 id="importtranslationsandalarms"><code>ImportTranslationsAndAlarms()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Metodo che esegue limportazione di dizionari di allarmi e traduzioni da file <code>.xlsx</code> presenti in una cartella specificata nel progetto.<br>
Permette la selezione interattiva dei file da importare e li carica nel progetto tramite chiamata a <code>Owner.ImportAlarmsInsideOwner</code>.</p>
</blockquote>
<blockquote>
<p><strong>Dettagli tecnici:</strong></p>
<ul>
<li>Risolve il percorso della cartella allarmi.</li>
<li>Controlla lesistenza della cartella (eccezione in caso negativo).</li>
<li>Recupera i file Excel <code>.xlsx</code>.</li>
<li>Presenta allutente un menu di selezione.</li>
<li>Importa i dizionari selezionati.</li>
</ul>
</blockquote>
<blockquote>
<p><strong>Eccezione:</strong><br>
Lancia uneccezione se la cartella degli allarmi non esiste, con messaggio in dialetto veneto.</p>
</blockquote>
<blockquote>
<p><strong>Esempio duso:</strong></p>
<pre class="hljs"><code>alarmManager.ImportTranslationsAndAlarms();
</code></pre>
</blockquote>
<hr>
</div>
<!-- DEBUG: {"headingsLength":8} -->
<!-- TOC sidebar -->
<div class="toc-sidebar">
<div class="toc-container">
<h2 class="toc-title">On This Page</h2>
<ul class="toc-list">
<li class="toc-item toc-level-2">
<a href="#panoramica-generale" class="toc-link">🚦 Panoramica generale</a>
</li>
<li class="toc-item toc-level-2">
<a href="#funzionamento-principale" class="toc-link">🛠️ Funzionamento principale</a>
</li>
<li class="toc-item toc-level-2">
<a href="#flusso-di-lavoro-del-metodo-importtranslationsandalarms" class="toc-link">🔄 Flusso di lavoro del metodo ImportTranslationsAndAlarms</a>
</li>
<li class="toc-item toc-level-2">
<a href="#dettagli-importanti" class="toc-link">💡 Dettagli importanti</a>
</li>
<li class="toc-item toc-level-2">
<a href="#metodi-principali" class="toc-link">🧰 Metodi principali</a>
</li>
<li class="toc-item toc-level-3">
<a href="#importtranslationsandalarms" class="toc-link">ImportTranslationsAndAlarms()</a>
</li>
</ul>
</div>
</div>
</div>
</main>
<footer class="page-footer">
<div class="footer-content">
<div class="user-footer">
© 2025 Project.
</div>
<div class="branding-footer">
Build with <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"></path><path d="M12 5 9.04 7.96a2.17 2.17 0 0 0 0 3.08c.82.82 2.13.85 3 .07l2.07-1.9a2.82 2.82 0 0 1 3.79 0l2.96 2.66"></path><path d="m18 15-2-2"></path><path d="m15 18-2-2"></path></svg> <a href="https://docmd.mgks.dev" target="_blank" rel="noopener">docmd.</a>
</div>
</div>
</footer>
</div>
<script src="../../../assets/js/docmd-main.js"></script>
<script src="../../../assets/js/docmd-image-lightbox.js"></script>
</body>
</html>