Created
July 21, 2025 21:51
-
-
Save jeremiahfish/84c17b35ca2ed7640019b03c6e902c8d to your computer and use it in GitHub Desktop.
4-20ma Calc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, shrink-to-fit=no"> | |
<title>CTi 4-20mA Calculator</title> | |
<!-- PWA Meta Tags --> | |
<meta name="apple-mobile-web-app-capable" content="yes"> | |
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> | |
<meta name="apple-mobile-web-app-title" content="4-20mA Calc"> | |
<meta name="theme-color" content="#facc15"> | |
<meta name="description" content="Professional 4-20mA loop calculator with gas sensor presets"> | |
<!-- Web App Manifest --> | |
<link rel="manifest" href="manifest.json"> | |
<link rel="apple-touch-icon" href="data:image/png;base64,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"> | |
<link rel="icon" href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiByeD0iMjEiIGZpbGw9InVybCgjcGFpbnQwX3JhZGlhbF8xMDRfMykiLz4KPHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSI5OSIgaGVpZ2h0PSI5OSIgcng9IjIwLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS1vcGFjaXR5PSIwLjExIiBzdHlsZT0ibWl4LWJsZW5kLW1vZGU6bHVtaW5vc2l0eSIvPgo8ZyBmaWx0ZXI9InVybCgjZmlsdGVyMF9kXzEwNF8zKSI+CjxwYXRoIGQ9Ik04Ni40NDQ1IDQwLjI3OThMODkuMjQ1MiAzMi4wMzU1TDc5LjQyMTUgMzJMNzYuNjM0OCA0MC4yNzk4SDg2LjQ0NDVaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXJfMTA0XzMpIi8+CjxwYXRoIGQ9Ik03Ni4xNjY1IDQxLjY3MjhMNjguNzE3NCA2My43OTVINzguNDU5MUw4NS45NzE1IDQxLjY3MjhINzYuMTY2NVoiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl8xMDRfMykiLz4KPHBhdGggZD0iTTQyLjAyMzYgNTUuNjIxNkgyNy43ODhDMjYuNTk2MSA1NS42MjE2IDI1LjUxMTggNTUuNDYzMSAyNC41NCA1NS4xNDYyQzIzLjU2ODIgNTQuODI5MyAyMi43Mjc1IDU0LjM4NDcgMjIuMDIyNiA1My44MTQ3QzIxLjMxNzcgNTMuMjQ0NyAyMC43Njc0IDUyLjU1NDIgMjAuMzc2NCA1MS43NDc3QzE5Ljk4MjkgNTAuOTQxMiAxOS43ODg2IDUwLjA0NDkgMTkuNzg4NiA0OS4wNjM0QzE5Ljc4ODYgNDcuNzk1OCAyMC4wNzE5IDQ2LjYzMjIgMjAuNjM2MyA0NS41NzAzQzIxLjIwMDcgNDQuNTA4NSAyMS45Njg4IDQzLjU4MTQgMjIuOTQyOSA0Mi43ODkxQzIzLjkxNDggNDEuOTk2OCAyNS4wNTI5IDQxLjM3OTYgMjYuMzU0OSA0MC45MzQ5QzI3LjY1NjkgNDAuNDkyNyAyOS4wMjkyIDQwLjI3MDQgMzAuNDcxNyA0MC4yNzA0SDQzLjA1MTdMNDUuODM2IDMyLjAwOTVMMzEuOTMwNiAzMkwzMS4zNTkyIDMyLjAwOTVDMjguNTYwOCAzMi4wNjE1IDI1LjkwOTkgMzIuNDg5NiAyMy40MTM2IDMzLjMwNTVDMjAuNzQ2NCAzNC4xNzgyIDE4LjQyNTcgMzUuMzk2MSAxNi40NDkyIDM2Ljk2NDFDMTQuNDcyOCAzOC41MzIxIDEyLjkwMzggNDAuNDA5OSAxMS43NDIzIDQyLjU5NzVDMTAuNTgwOCA0NC43ODUyIDEwIDQ3LjE3NjIgMTAgNDkuNzc1M0MxMCA1MS43NzE0IDEwLjM5MTEgNTMuNjI1NSAxMS4xNzU2IDU1LjMzNTRDMTEuOTYwMSA1Ny4wNDUzIDEzLjA2NTQgNTguNTI4MSAxNC40OTM4IDU5Ljc3OTJDMTUuOTIgNjEuMDMwMyAxNy42NDU5IDYyLjAxMTggMTkuNjcxNSA2Mi43MjZDMjEuNjk0OCA2My40Mzc5IDIzLjkzMTIgNjMuNzk1IDI2LjM3ODMgNjMuNzk1SDM5LjI3NDRMNDIuMDI2IDU1LjYxOTJMNDIuMDIzNiA1NS42MjE2WiIgZmlsbD0idXJsKCNwYWludDNfbGluZWFyXzEwNF8zKSIvPgo8cGF0aCBkPSJNNDcuMjkyNiAzMi4wMjZMNDQuNTA4MiA0MC4yNzA0SDU3LjM1NzVMNDcuMzgzOSA2OS43MzU5SDU2Ljc4MTRMNjYuODAxOCA0MC4yNzA0SDc1LjE1MjZMNzcuOTM2OSAzMi4wMTY2TDQ3LjI5MjYgMzIuMDI2WiIgZmlsbD0idXJsKCNwYWludDRfbGluZWFyXzEwNF8zKSIvPgo8L2c+CjxkZWZzPgo8ZmlsdGVyIGlkPSJmaWx0ZXIwX2RfMTA0XzMiIHg9IjkiIHk9IjMyIiB3aWR0aD0iODEuMjQ1MiIgaGVpZ2h0PSIzOS43MzU5IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPgo8ZmVPZmZzZXQgZHk9IjEiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMC41Ii8+CjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9Im91dCIvPgo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4yNSAwIi8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0iZWZmZWN0MV9kcm9wU2hhZG93XzEwNF8zIi8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iZWZmZWN0MV9kcm9wU2hhZG93XzEwNF8zIiByZXN1bHQ9InNoYXBlIi8+CjwvZmlsdGVyPgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50MF9yYWRpYWxfMTA0XzMiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDkuMTIyOCAxMS4zMjA4KSByb3RhdGUoODkuNDMzMykgc2NhbGUoODguNjgzNiAxMTAuNjEpIj4KPHN0b3Agb2Zmc2V0PSIwLjI1NTIwOCIgc3RvcC1jb2xvcj0iIzI1NzNCRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwQjU5QTIiLz4KPC9yYWRpYWxHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDFfbGluZWFyXzEwNF8zIiB4MT0iODIuOTQiIHkxPSIzMiIgeDI9IjgyLjk0IiB5Mj0iNDAuMjc5OCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRjVGNUY1Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0U2RTZFNiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfMTA0XzMiIHgxPSI3Ny4zNDQ0IiB5MT0iNDEuNjcyOCIgeDI9Ijc3LjM0NDQiIHkyPSI2My43OTUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0Y1RjVGNSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFNkU2RTYiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDNfbGluZWFyXzEwNF8zIiB4MT0iMjcuOTE4IiB5MT0iMzIiIHgyPSIyNy45MTgiIHkyPSI2My43OTUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0Y1RjVGNSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFNkU2RTYiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDRfbGluZWFyXzEwNF8zIiB4MT0iNjEuMjIyNiIgeTE9IjMyLjAxNjYiIHgyPSI2MS4yMjI2IiB5Mj0iNjkuNzM1OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRjVGNUY1Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0U2RTZFNiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo="> | |
<style> | |
* { | |
margin: 0; | |
padding: 0; | |
box-sizing: border-box; | |
} | |
body { | |
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; | |
background: linear-gradient(135deg, #d1d5db 0%, #e5e7eb 50%, #d1d5db 100%); | |
min-height: 100vh; | |
padding: 24px; | |
touch-action: manipulation; | |
-webkit-touch-callout: none; | |
-webkit-user-select: none; | |
-khtml-user-select: none; | |
-moz-user-select: none; | |
-ms-user-select: none; | |
user-select: none; | |
/* Prevent zoom on iOS */ | |
-webkit-text-size-adjust: 100%; | |
-ms-text-size-adjust: 100%; | |
text-size-adjust: 100%; | |
zoom: 1; | |
} | |
@font-face { | |
font-family: 'Segment'; | |
src: url('seg.otf') format('opentype'); | |
} | |
.container { | |
max-width: 384px; | |
margin: 0 auto; | |
position: relative; | |
} | |
/* Preset Overlay */ | |
.preset-overlay { | |
position: fixed; | |
top: 0; | |
left: 0; | |
right: 0; | |
bottom: 0; | |
background: rgba(0, 0, 0, 0.5); | |
z-index: 50; | |
display: none; | |
align-items: center; | |
justify-content: center; | |
padding: 16px; | |
} | |
.preset-modal { | |
background: white; | |
border-radius: 8px; | |
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); | |
max-width: 384px; | |
width: 100%; | |
max-height: 80vh; | |
overflow: hidden; | |
} | |
.preset-header { | |
background: #facc15; | |
padding: 16px; | |
border-bottom: 1px solid #e5e7eb; | |
} | |
.preset-header h3 { | |
font-weight: bold; | |
color: black; | |
text-align: center; | |
} | |
.preset-list { | |
overflow-y: auto; | |
max-height: 60vh; | |
padding: 8px; | |
} | |
.preset-item { | |
text-align: left; | |
padding: 8px 12px; | |
border: none; | |
background: none; | |
width: 100%; | |
border-bottom: 1px solid #f3f4f6; | |
cursor: pointer; | |
transition: background-color 0.2s; | |
} | |
.preset-item:hover { | |
background: #f3f4f6; | |
} | |
.preset-row { | |
display: flex; | |
align-items: center; | |
gap: 12px; | |
} | |
.preset-sensor { | |
font-family: monospace; | |
font-weight: bold; | |
font-size: 13px; | |
color: black; | |
flex-shrink: 0; | |
min-width: 100px; | |
} | |
.preset-details { | |
display: flex; | |
align-items: center; | |
justify-content: flex-end; | |
gap: 8px; | |
flex-grow: 1; | |
font-size: 11px; | |
color: #6b7280; | |
} | |
.preset-range { | |
color: #6b7280; | |
} | |
.preset-uom { | |
color: #9ca3af; | |
font-size: 10px; | |
} | |
.gas-group { | |
margin-bottom: 8px; | |
} | |
.gas-group-header { | |
background: #f3f4f6; | |
color: #374151; | |
font-weight: bold; | |
font-size: 12px; | |
padding: 6px 12px; | |
border-bottom: 1px solid #e5e7eb; | |
text-transform: uppercase; | |
letter-spacing: 0.5px; | |
} | |
.gas-group:last-child { | |
margin-bottom: 0; | |
} | |
.preset-footer { | |
padding: 16px; | |
border-top: 1px solid #e5e7eb; | |
background: #f9fafb; | |
} | |
.close-btn { | |
width: 100%; | |
background: #4b5563; | |
color: white; | |
border: none; | |
padding: 8px 16px; | |
border-radius: 4px; | |
cursor: pointer; | |
font-weight: 500; | |
} | |
.close-btn:hover { | |
background: #374151; | |
} | |
/* Main Device */ | |
.fluke-body { | |
background: linear-gradient(135deg, rgba(255,255,255,0.2) 0%, transparent 50%), linear-gradient(to bottom, #eece2b, #facc15, #eab308); | |
border-radius: 24px 24px 0 0; | |
padding: 24px; | |
box-shadow: 0 20px 40px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.3), inset 0 -1px 0 rgba(0,0,0,0.2); | |
border: 4px solid #111827; | |
position: relative; | |
} | |
/* LCD Bezel */ | |
.lcd-bezel { | |
background: linear-gradient(to bottom, #1f2937, #111827); | |
border-radius: 12px; | |
padding: 16px; | |
margin-bottom: 24px; | |
box-shadow: inset 0 4px 8px rgba(0,0,0,0.6), 0 2px 4px rgba(0,0,0,0.3); | |
border: 2px solid #000; | |
} | |
/* Modern LCD Screen */ | |
.lcd-screen { | |
background: linear-gradient(to bottom, #e6eff8, #dae1f0); | |
border-radius: 8px; | |
padding: 14px 24px; | |
position: relative; | |
overflow: hidden; | |
min-height: 220px; | |
border: 2px solid #d1d5db; | |
box-shadow: inset 0 2px 4px rgba(0,0,0,0.1), 0 1px 2px rgba(255,255,255,0.8); | |
} | |
.lcd-content { | |
position: relative; | |
z-index: 10; | |
} | |
.header-bar { | |
display: flex; | |
justify-content: space-between; | |
align-items: center; | |
font-size: 14px; | |
padding: 8px 16px; | |
border-radius: 2px; | |
background: #374151; | |
color: white; | |
font-weight: 500; | |
margin-bottom: 16px; | |
} | |
.main-reading { | |
text-align: center; | |
padding: 10px 0; | |
} | |
.reading-value { | |
font-size: 64px; | |
font-weight: bold; | |
font-family: 'Segment', monospace; | |
letter-spacing: 2px; | |
color: black; | |
margin-bottom: 8px; | |
} | |
.percentage { | |
font-size: 18px; | |
color: #6b7280; | |
font-weight: 500; | |
} | |
.scale-container { | |
padding: 0 8px; | |
margin-bottom: 16px; | |
} | |
.scale-labels { | |
display: flex; | |
justify-content: space-between; | |
font-size: 14px; | |
margin-bottom: 8px; | |
color: #6b7280; | |
font-weight: 500; | |
} | |
.progress-bar { | |
width: 100%; | |
height: 8px; | |
border-radius: 0px; | |
background: #e5e7eb; | |
border: 1px solid #d1d5db; | |
position: relative; | |
overflow: hidden; | |
} | |
.progress-fill { | |
height: 100%; | |
border-radius: 0px; | |
background: #9ca3af; | |
transition: width 0.7s ease; | |
width: 0%; | |
-webkit-mask-image: repeating-linear-gradient(to right, black 0, black 5px, transparent 5px, transparent 6px); | |
mask-image: repeating-linear-gradient(to right, black 0, black 5px, transparent 5px, transparent 6px); | |
} | |
.range-display { | |
text-align: center; | |
font-size: 14px; | |
padding: 1px 8px 4px 8px; | |
border-radius: 2px; | |
background: #7f81870b; | |
border: 1px solid #d1d5db; | |
color: #374151; | |
font-weight: 500; | |
display: none; | |
} | |
.power-off { | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
height: 100%; | |
text-align: center; | |
} | |
.power-off-text { | |
font-size: 32px; | |
font-family: monospace; | |
color: #9ca3af; | |
font-weight: bold; | |
} | |
.power-off-label { | |
font-size: 14px; | |
margin-top: 8px; | |
font-weight: 500; | |
color: #6b7280; | |
} | |
.lcd-reflection { | |
position: absolute; | |
top: 0; | |
left: 0; | |
right: 0; | |
bottom: 0; | |
background: linear-gradient(45deg, transparent 30%, rgba(255,255,255,0.3) 50%, transparent 70%); | |
opacity: 0.2; | |
pointer-events: none; | |
} | |
/* Buttons */ | |
.button-row { | |
display: grid; | |
grid-template-columns: 1fr 1fr 1fr; | |
gap: 12px; | |
margin-bottom: 0px; | |
} | |
.btn { | |
height: 42px; | |
font-weight: bold; | |
font-size: 14px; | |
border: 2px solid #111827; | |
border-radius: 4px; | |
cursor: pointer; | |
transition: all 0.15s; | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
gap: 4px; | |
touch-action: manipulation; | |
} | |
.btn:active { | |
box-shadow: inset 0 4px 8px rgba(0,0,0,0.4); | |
transform: translateY(1px); | |
} | |
.btn.power { | |
background: linear-gradient(to bottom, #ef4444, #dc2626); | |
color: white; | |
box-shadow: 0 6px 12px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.2); | |
} | |
.btn.power.off { | |
background: linear-gradient(to bottom, #22c55e, #16a34a); | |
} | |
.btn.power:hover { | |
background: linear-gradient(to bottom, #dc2626, #b91c1c); | |
} | |
.btn.power.off:hover { | |
background: linear-gradient(to bottom, #16a34a, #15803d); | |
} | |
.btn.clear, .btn.preset-btn { | |
background: linear-gradient(to bottom, #4b5563, #1f2937); | |
color: #facc15; | |
box-shadow: 0 6px 12px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.1); | |
} | |
.btn.clear:hover, .btn.preset-btn:hover { | |
background: linear-gradient(to bottom, #6b7280, #374151); | |
} | |
.btn.test { | |
background: linear-gradient(to bottom, #3b82f6, #1d4ed8); | |
color: white; | |
box-shadow: 0 6px 12px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.2); | |
} | |
.btn.test:hover { | |
background: linear-gradient(to bottom, #2563eb, #1e40af); | |
} | |
/* Lower Case */ | |
.lower-case { | |
background: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, transparent 50%), linear-gradient(to bottom, #374151, #1f2937, #111827); | |
border-radius: 0 0 24px 24px; | |
padding: 24px; | |
box-shadow: 0 20px 40px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.1); | |
border: 4px solid #111827; | |
border-top: none; | |
position: relative; | |
} | |
.input-group { | |
margin-bottom: 16px; | |
} | |
.input-row { | |
display: grid; | |
grid-template-columns: 1fr 1fr; | |
gap: 16px; | |
} | |
.input-label { | |
display: block; | |
color: #facc15; | |
font-size: 14px; | |
font-weight: bold; | |
margin-bottom: 8px; | |
letter-spacing: 1px; | |
text-shadow: 0 1px 2px rgba(0,0,0,0.5); | |
text-align: center; | |
} | |
.input-label.secondary { | |
color: #d1d5db; | |
font-size: 12px; | |
text-align: center; | |
} | |
.input-label.tertiary { | |
color: #9ca3af; | |
text-align: center; | |
} | |
.input-field { | |
height: 64px; | |
font-size: 20px; | |
text-align: center; | |
font-family: monospace; | |
letter-spacing: 1px; | |
background: linear-gradient(to bottom, #000, #1f2937); | |
border: 2px solid #facc15; | |
color: #facc15; | |
border-radius: 4px; | |
box-shadow: inset 0 2px 4px rgba(0,0,0,0.6), 0 1px 0 rgba(255,255,255,0.1); | |
transition: all 0.2s; | |
width: 100%; | |
touch-action: manipulation; | |
/* Prevent iOS zoom */ | |
-webkit-text-size-adjust: 100%; | |
text-size-adjust: 100%; | |
transform: scale(1); | |
transform-origin: center; | |
} | |
.input-field.small { | |
height: 48px; | |
font-size: 14px; | |
border: 1px solid #6b7280; | |
color: #d1d5db; | |
} | |
.input-field.tertiary { | |
border: 1px solid #4b5563; | |
color: #9ca3af; | |
} | |
.input-field:focus { | |
outline: none; | |
border-color: #fde047; | |
box-shadow: inset 0 2px 4px rgba(0,0,0,0.6), 0 0 0 4px rgba(253, 224, 71, 0.2); | |
} | |
.input-field:disabled { | |
opacity: 0.5; | |
cursor: not-allowed; | |
} | |
/* Hide default browser stepper controls */ | |
.input-field::-webkit-outer-spin-button, | |
.input-field::-webkit-inner-spin-button { | |
-webkit-appearance: none; | |
margin: 0; | |
} | |
.input-field[type=number] { | |
-moz-appearance: textfield; | |
} | |
.input-wrapper { | |
position: relative; | |
display: flex; | |
align-items: center; | |
gap: 8px; | |
} | |
.stepper-btn { | |
width: 48px; | |
height: 64px; | |
font-size: 24px; | |
font-weight: bold; | |
border: 2px solid #facc15; | |
border-radius: 4px; | |
cursor: pointer; | |
transition: all 0.15s; | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
background: linear-gradient(to bottom, #4b5563, #1f2937); | |
color: #facc15; | |
box-shadow: 0 6px 12px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.1); | |
user-select: none; | |
touch-action: manipulation; | |
} | |
.stepper-btn.small { | |
height: 48px; | |
font-size: 18px; | |
border: 1px solid #6b7280; | |
color: #d1d5db; | |
} | |
.stepper-btn:hover { | |
background: linear-gradient(to bottom, #6b7280, #374151); | |
} | |
.stepper-btn:active { | |
box-shadow: inset 0 4px 8px rgba(0,0,0,0.4); | |
transform: translateY(1px); | |
} | |
.stepper-btn:disabled { | |
opacity: 0.5; | |
cursor: not-allowed; | |
} | |
.input-wrapper .input-field { | |
flex: 1; | |
} | |
.input-wrapper.small .stepper-btn { | |
width: 40px; | |
height: 48px; | |
font-size: 18px; | |
} | |
.info-panel { | |
margin-top: 24px; | |
padding-top: 16px; | |
border-top: 1px solid #4b5563; | |
background: linear-gradient(to right, transparent, rgba(55, 65, 81, 0.3), transparent); | |
border-radius: 4px; | |
padding: 8px; | |
} | |
.info-text { | |
text-align: center; | |
font-size: 11px; | |
color: #9ca3af; | |
font-family: monospace; | |
letter-spacing: 0px; | |
} | |
.hidden { | |
display: none !important; | |
} | |
/* Help Modal Styles */ | |
.help-modal { | |
position: fixed; | |
top: 0px; | |
left: 0px; | |
right: 0px; | |
bottom: 0px; | |
background: rgba(0,0,0,0.5); | |
z-index: 9999999; | |
transition: all 0.2s ease; | |
pointer-events: none; | |
opacity: 0; | |
visibility: hidden; | |
} | |
.help-modal.show { | |
opacity: 1; | |
visibility: visible; | |
pointer-events: auto; | |
} | |
.help-msgbox { | |
position: absolute; | |
top: 0; | |
bottom: 0; | |
left: 0; | |
right: 0; | |
width: 90%; | |
max-width: 600px; | |
margin: auto; | |
pointer-events: auto; | |
font-size: 18px; | |
line-height: 1.5; | |
} | |
.help-msgbox-inner { | |
position: relative; | |
top: 10%; | |
background: white; | |
border-radius: 5px; | |
padding: 30px; | |
box-shadow: 0 19px 38px rgba(0,0,0,0.20), 0 15px 19px rgba(0,0,0,0.22); | |
} | |
.help-modal h1 { | |
font-size: 21px; | |
font-weight: 700; | |
margin-bottom: 20px; | |
color: #115EA3; | |
} | |
.help-modal .button { | |
background: #115EA3; | |
color: white; | |
border: none; | |
padding: 10px 20px; | |
border-radius: 4px; | |
cursor: pointer; | |
font-size: 16px; | |
font-weight: 500; | |
} | |
.help-modal .button:hover { | |
background: #0d4a7a; | |
} | |
</style> | |
</head> | |
<body> | |
<div class="container"> | |
<!-- Help Modal --> | |
<div id="help-modal" class="help-modal" onclick="closeHelp()"> | |
<div class="help-msgbox"> | |
<div class="help-msgbox-inner" style="line-height: 1.5;" onclick="event.stopPropagation()"> | |
<h1>Conversions</h1> | |
<b>Convert 40/200mV to Unit of Measure:</b><br> | |
<svg style="margin-top: 10px; margin-left: 17px;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="258.301213pt" height="13.522849pt" viewBox="-.504138 -.301849 258.301213 13.522849"> | |
<defs> | |
<path id="g2-40" d="M3.88543 2.905106C3.88543 2.86924 3.88543 2.84533 3.682192 2.642092C2.486675 1.43462 1.817186-.537983 1.817186-2.976837C1.817186-5.296139 2.379078-7.292653 3.765878-8.703362C3.88543-8.810959 3.88543-8.834869 3.88543-8.870735C3.88543-8.942466 3.825654-8.966376 3.777833-8.966376C3.622416-8.966376 2.642092-8.105604 2.056289-6.933998C1.446575-5.726526 1.171606-4.447323 1.171606-2.976837C1.171606-1.912827 1.338979-.490162 1.960648 .789041C2.666002 2.223661 3.646326 3.000747 3.777833 3.000747C3.825654 3.000747 3.88543 2.976837 3.88543 2.905106Z"></path> | |
<path id="g2-41" d="M3.371357-2.976837C3.371357-3.88543 3.251806-5.36787 2.582316-6.75467C1.876961-8.18929 .896638-8.966376 .765131-8.966376C.71731-8.966376 .657534-8.942466 .657534-8.870735C.657534-8.834869 .657534-8.810959 .860772-8.607721C2.056289-7.400249 2.725778-5.427646 2.725778-2.988792C2.725778-.669489 2.163885 1.327024 .777086 2.737733C.657534 2.84533 .657534 2.86924 .657534 2.905106C.657534 2.976837 .71731 3.000747 .765131 3.000747C.920548 3.000747 1.900872 2.139975 2.486675 .968369C3.096389-.251059 3.371357-1.542217 3.371357-2.976837Z"></path> | |
<path id="g2-43" d="M4.770112-2.761644H8.069738C8.237111-2.761644 8.452304-2.761644 8.452304-2.976837C8.452304-3.203985 8.249066-3.203985 8.069738-3.203985H4.770112V-6.503611C4.770112-6.670984 4.770112-6.886177 4.554919-6.886177C4.327771-6.886177 4.327771-6.682939 4.327771-6.503611V-3.203985H1.028144C.860772-3.203985 .645579-3.203985 .645579-2.988792C.645579-2.761644 .848817-2.761644 1.028144-2.761644H4.327771V.537983C4.327771 .705355 4.327771 .920548 4.542964 .920548C4.770112 .920548 4.770112 .71731 4.770112 .537983V-2.761644Z"></path> | |
<path id="g2-48" d="M5.355915-3.825654C5.355915-4.817933 5.296139-5.786301 4.865753-6.694894C4.375592-7.687173 3.514819-7.950187 2.929016-7.950187C2.235616-7.950187 1.3868-7.603487 .944458-6.611208C.609714-5.858032 .490162-5.116812 .490162-3.825654C.490162-2.666002 .573848-1.793275 1.004234-.944458C1.470486-.035866 2.295392 .251059 2.917061 .251059C3.957161 .251059 4.554919-.37061 4.901619-1.06401C5.332005-1.960648 5.355915-3.132254 5.355915-3.825654ZM2.917061 .011955C2.534496 .011955 1.75741-.203238 1.530262-1.506351C1.398755-2.223661 1.398755-3.132254 1.398755-3.969116C1.398755-4.94944 1.398755-5.834122 1.590037-6.539477C1.793275-7.340473 2.402989-7.711083 2.917061-7.711083C3.371357-7.711083 4.064757-7.436115 4.291905-6.40797C4.447323-5.726526 4.447323-4.782067 4.447323-3.969116C4.447323-3.16812 4.447323-2.259527 4.315816-1.530262C4.088667-.215193 3.335492 .011955 2.917061 .011955Z"></path> | |
<path id="g2-49" d="M3.443088-7.663263C3.443088-7.938232 3.443088-7.950187 3.203985-7.950187C2.917061-7.627397 2.319303-7.185056 1.08792-7.185056V-6.838356C1.362889-6.838356 1.960648-6.838356 2.618182-7.149191V-.920548C2.618182-.490162 2.582316-.3467 1.530262-.3467H1.159651V0C1.482441-.02391 2.642092-.02391 3.036613-.02391S4.578829-.02391 4.901619 0V-.3467H4.531009C3.478954-.3467 3.443088-.490162 3.443088-.920548V-7.663263Z"></path> | |
<path id="g2-52" d="M4.315816-7.782814C4.315816-8.009963 4.315816-8.069738 4.148443-8.069738C4.052802-8.069738 4.016936-8.069738 3.921295-7.926276L.32279-2.343213V-1.996513H3.466999V-.908593C3.466999-.466252 3.443088-.3467 2.570361-.3467H2.331258V0C2.606227-.02391 3.550685-.02391 3.88543-.02391S5.176588-.02391 5.451557 0V-.3467H5.212453C4.351681-.3467 4.315816-.466252 4.315816-.908593V-1.996513H5.523288V-2.343213H4.315816V-7.782814ZM3.526775-6.850311V-2.343213H.621669L3.526775-6.850311Z"></path> | |
<path id="g2-54" d="M1.470486-4.160399C1.470486-7.185056 2.940971-7.663263 3.58655-7.663263C4.016936-7.663263 4.447323-7.531756 4.674471-7.173101C4.531009-7.173101 4.076712-7.173101 4.076712-6.682939C4.076712-6.419925 4.25604-6.192777 4.566874-6.192777C4.865753-6.192777 5.068991-6.372105 5.068991-6.718804C5.068991-7.340473 4.614695-7.950187 3.574595-7.950187C2.068244-7.950187 .490162-6.40797 .490162-3.777833C.490162-.490162 1.924782 .251059 2.940971 .251059C4.244085 .251059 5.355915-.884682 5.355915-2.438854C5.355915-4.028892 4.244085-5.092902 3.048568-5.092902C1.984558-5.092902 1.590037-4.172354 1.470486-3.837609V-4.160399ZM2.940971-.071731C2.187796-.071731 1.829141-.74122 1.721544-.992279C1.613948-1.303113 1.494396-1.888917 1.494396-2.725778C1.494396-3.670237 1.924782-4.853798 3.000747-4.853798C3.658281-4.853798 4.004981-4.411457 4.184309-4.004981C4.375592-3.56264 4.375592-2.964882 4.375592-2.450809C4.375592-1.841096 4.375592-1.303113 4.148443-.848817C3.849564-.274969 3.419178-.071731 2.940971-.071731Z"></path> | |
<path id="g2-61" d="M8.069738-3.873474C8.237111-3.873474 8.452304-3.873474 8.452304-4.088667C8.452304-4.315816 8.249066-4.315816 8.069738-4.315816H1.028144C.860772-4.315816 .645579-4.315816 .645579-4.100623C.645579-3.873474 .848817-3.873474 1.028144-3.873474H8.069738ZM8.069738-1.649813C8.237111-1.649813 8.452304-1.649813 8.452304-1.865006C8.452304-2.092154 8.249066-2.092154 8.069738-2.092154H1.028144C.860772-2.092154 .645579-2.092154 .645579-1.876961C.645579-1.649813 .848817-1.649813 1.028144-1.649813H8.069738Z"></path> | |
<path id="g0-0" d="M7.878456-2.749689C8.081694-2.749689 8.296887-2.749689 8.296887-2.988792S8.081694-3.227895 7.878456-3.227895H1.41071C1.207472-3.227895 .992279-3.227895 .992279-2.988792S1.207472-2.749689 1.41071-2.749689H7.878456Z"></path> | |
<path id="g0-3" d="M3.287671-5.104857C3.299626-5.272229 3.299626-5.559153 2.988792-5.559153C2.797509-5.559153 2.642092-5.403736 2.677958-5.248319V-5.092902L2.84533-3.239851L1.315068-4.351681C1.207472-4.411457 1.183562-4.435367 1.099875-4.435367C.932503-4.435367 .777086-4.267995 .777086-4.100623C.777086-3.90934 .896638-3.861519 1.016189-3.801743L2.713823-2.988792L1.06401-2.187796C.872727-2.092154 .777086-2.044334 .777086-1.865006S.932503-1.530262 1.099875-1.530262C1.183562-1.530262 1.207472-1.530262 1.506351-1.75741L2.84533-2.725778L2.666002-.71731C2.666002-.466252 2.881196-.406476 2.976837-.406476C3.120299-.406476 3.299626-.490162 3.299626-.71731L3.120299-2.725778L4.65056-1.613948C4.758157-1.554172 4.782067-1.530262 4.865753-1.530262C5.033126-1.530262 5.188543-1.697634 5.188543-1.865006C5.188543-2.044334 5.080946-2.10411 4.937484-2.175841C4.220174-2.534496 4.196264-2.534496 3.251806-2.976837L4.901619-3.777833C5.092902-3.873474 5.188543-3.921295 5.188543-4.100623S5.033126-4.435367 4.865753-4.435367C4.782067-4.435367 4.758157-4.435367 4.459278-4.208219L3.120299-3.239851L3.287671-5.104857Z"></path> | |
<path id="g1-61" d="M5.128767-8.524035C5.128767-8.53599 5.200498-8.715318 5.200498-8.739228C5.200498-8.88269 5.080946-8.966376 4.985305-8.966376C4.925529-8.966376 4.817933-8.966376 4.722291-8.703362L.71731 2.546451C.71731 2.558406 .645579 2.737733 .645579 2.761644C.645579 2.905106 .765131 2.988792 .860772 2.988792C.932503 2.988792 1.0401 2.976837 1.123786 2.725778L5.128767-8.524035Z"></path> | |
<path id="g1-82" d="M4.399502-7.352428C4.507098-7.79477 4.554919-7.81868 5.021171-7.81868H5.881943C6.910087-7.81868 7.675218-7.507846 7.675218-6.575342C7.675218-5.965629 7.364384-4.208219 4.961395-4.208219H3.610461L4.399502-7.352428ZM6.06127-4.064757C7.543711-4.387547 8.703362-5.34396 8.703362-6.372105C8.703362-7.304608 7.758904-8.16538 6.097136-8.16538H2.857285C2.618182-8.16538 2.510585-8.16538 2.510585-7.938232C2.510585-7.81868 2.594271-7.81868 2.82142-7.81868C3.53873-7.81868 3.53873-7.723039 3.53873-7.591532C3.53873-7.567621 3.53873-7.49589 3.490909-7.316563L1.876961-.884682C1.769365-.466252 1.745455-.3467 .920548-.3467C.645579-.3467 .561893-.3467 .561893-.119552C.561893 0 .6934 0 .729265 0C.944458 0 1.195517-.02391 1.422665-.02391H2.833375C3.048568-.02391 3.299626 0 3.514819 0C3.610461 0 3.741968 0 3.741968-.227148C3.741968-.3467 3.634371-.3467 3.455044-.3467C2.725778-.3467 2.725778-.442341 2.725778-.561893C2.725778-.573848 2.725778-.657534 2.749689-.753176L3.550685-3.969116H4.985305C6.121046-3.969116 6.336239-3.251806 6.336239-2.857285C6.336239-2.677958 6.216687-2.211706 6.133001-1.900872C6.001494-1.350934 5.965629-1.219427 5.965629-.992279C5.965629-.143462 6.659029 .251059 7.460025 .251059C8.428394 .251059 8.846824-.932503 8.846824-1.099875C8.846824-1.183562 8.787049-1.219427 8.715318-1.219427C8.619676-1.219427 8.595766-1.147696 8.571856-1.052055C8.284932-.203238 7.79477 .011955 7.49589 .011955S7.005729-.119552 7.005729-.657534C7.005729-.944458 7.149191-2.032379 7.161146-2.092154C7.220922-2.534496 7.220922-2.582316 7.220922-2.677958C7.220922-3.550685 6.515567-3.921295 6.06127-4.064757Z"></path> | |
<path id="g1-83" d="M7.591532-8.308842C7.591532-8.416438 7.507846-8.416438 7.483935-8.416438C7.436115-8.416438 7.424159-8.404483 7.280697-8.225156C7.208966-8.141469 6.718804-7.519801 6.706849-7.507846C6.312329-8.284932 5.523288-8.416438 5.021171-8.416438C3.502864-8.416438 2.12802-7.029639 2.12802-5.678705C2.12802-4.782067 2.666002-4.25604 3.251806-4.052802C3.383313-4.004981 4.088667-3.813699 4.447323-3.730012C5.057036-3.56264 5.212453-3.514819 5.463512-3.251806C5.511333-3.19203 5.750436-2.917061 5.750436-2.355168C5.750436-1.243337 4.722291-.095641 3.526775-.095641C2.546451-.095641 1.458531-.514072 1.458531-1.853051C1.458531-2.080199 1.506351-2.367123 1.542217-2.486675C1.542217-2.52254 1.554172-2.582316 1.554172-2.606227C1.554172-2.654047 1.530262-2.713823 1.43462-2.713823C1.327024-2.713823 1.315068-2.689913 1.267248-2.486675L.657534-.035866C.657534-.02391 .609714 .131507 .609714 .143462C.609714 .251059 .705355 .251059 .729265 .251059C.777086 .251059 .789041 .239103 .932503 .059776L1.482441-.657534C1.769365-.227148 2.391034 .251059 3.502864 .251059C5.045081 .251059 6.455791-1.243337 6.455791-2.737733C6.455791-3.239851 6.336239-3.682192 5.881943-4.124533C5.630884-4.375592 5.415691-4.435367 4.315816-4.722291C3.514819-4.937484 3.407223-4.97335 3.19203-5.164633C2.988792-5.36787 2.833375-5.654795 2.833375-6.06127C2.833375-7.065504 3.849564-8.093649 4.985305-8.093649C6.156912-8.093649 6.706849-7.376339 6.706849-6.240598C6.706849-5.929763 6.647073-5.606974 6.647073-5.559153C6.647073-5.451557 6.742715-5.451557 6.77858-5.451557C6.886177-5.451557 6.898132-5.487422 6.945953-5.678705L7.591532-8.308842Z"></path> | |
<path id="g1-86" d="M7.400249-6.838356C7.806725-7.483935 8.177335-7.770859 8.787049-7.81868C8.9066-7.830635 9.002242-7.830635 9.002242-8.045828C9.002242-8.093649 8.978331-8.16538 8.870735-8.16538C8.655542-8.16538 8.141469-8.141469 7.926276-8.141469C7.579577-8.141469 7.220922-8.16538 6.886177-8.16538C6.790535-8.16538 6.670984-8.16538 6.670984-7.938232C6.670984-7.830635 6.77858-7.81868 6.826401-7.81868C7.268742-7.782814 7.316563-7.567621 7.316563-7.424159C7.316563-7.244832 7.149191-6.969863 7.137235-6.957908L3.383313-1.004234L2.546451-7.44807C2.546451-7.79477 3.16812-7.81868 3.299626-7.81868C3.478954-7.81868 3.58655-7.81868 3.58655-8.045828C3.58655-8.16538 3.455044-8.16538 3.419178-8.16538C3.21594-8.16538 2.976837-8.141469 2.773599-8.141469H2.10411C1.231382-8.141469 .872727-8.16538 .860772-8.16538C.789041-8.16538 .645579-8.16538 .645579-7.950187C.645579-7.81868 .729265-7.81868 .920548-7.81868C1.530262-7.81868 1.566127-7.711083 1.601993-7.412204L2.558406-.035866C2.594271 .215193 2.594271 .251059 2.761644 .251059C2.905106 .251059 2.964882 .215193 3.084433 .02391L7.400249-6.838356Z"></path> | |
<path id="g1-90" d="M8.368618-7.79477C8.440349-7.878456 8.500125-7.950187 8.500125-8.069738C8.500125-8.153425 8.488169-8.16538 8.2132-8.16538H3.275716C3.000747-8.16538 2.988792-8.153425 2.917061-7.938232L2.259527-5.786301C2.223661-5.66675 2.223661-5.642839 2.223661-5.618929C2.223661-5.571108 2.259527-5.499377 2.343213-5.499377C2.438854-5.499377 2.462765-5.547198 2.510585-5.702615C2.952927-6.993773 3.53873-7.81868 5.427646-7.81868H7.388294L.836862-.406476C.729265-.274969 .681445-.227148 .681445-.095641C.681445 0 .74122 0 .968369 0H6.073225C6.348194 0 6.360149-.011955 6.43188-.227148L7.268742-2.86924C7.280697-2.905106 7.304608-2.988792 7.304608-3.036613C7.304608-3.096389 7.256787-3.156164 7.185056-3.156164C7.089415-3.156164 7.07746-3.144209 6.981818-2.84533C6.479701-1.303113 5.953674-.37061 3.873474-.37061H1.80523L8.368618-7.79477Z"></path> | |
<path id="g1-109" d="M2.462765-3.502864C2.486675-3.574595 2.785554-4.172354 3.227895-4.554919C3.53873-4.841843 3.945205-5.033126 4.411457-5.033126C4.889664-5.033126 5.057036-4.674471 5.057036-4.196264C5.057036-4.124533 5.057036-3.88543 4.913574-3.323537L4.614695-2.092154C4.519054-1.733499 4.291905-.848817 4.267995-.71731C4.220174-.537983 4.148443-.227148 4.148443-.179328C4.148443-.011955 4.27995 .119552 4.459278 .119552C4.817933 .119552 4.877709-.155417 4.985305-.585803L5.702615-3.443088C5.726526-3.53873 6.348194-5.033126 7.663263-5.033126C8.141469-5.033126 8.308842-4.674471 8.308842-4.196264C8.308842-3.526775 7.84259-2.223661 7.579577-1.506351C7.47198-1.219427 7.412204-1.06401 7.412204-.848817C7.412204-.310834 7.782814 .119552 8.356663 .119552C9.468493 .119552 9.886924-1.637858 9.886924-1.709589C9.886924-1.769365 9.839103-1.817186 9.767372-1.817186C9.659776-1.817186 9.647821-1.78132 9.588045-1.578082C9.313076-.621669 8.870735-.119552 8.392528-.119552C8.272976-.119552 8.081694-.131507 8.081694-.514072C8.081694-.824907 8.225156-1.207472 8.272976-1.338979C8.488169-1.912827 9.026152-3.323537 9.026152-4.016936C9.026152-4.734247 8.607721-5.272229 7.699128-5.272229C6.898132-5.272229 6.252553-4.817933 5.774346-4.112578C5.738481-4.758157 5.34396-5.272229 4.447323-5.272229C3.383313-5.272229 2.82142-4.519054 2.606227-4.220174C2.570361-4.901619 2.080199-5.272229 1.554172-5.272229C1.207472-5.272229 .932503-5.104857 .705355-4.65056C.490162-4.220174 .32279-3.490909 .32279-3.443088S.37061-3.335492 .454296-3.335492C.549938-3.335492 .561893-3.347447 .633624-3.622416C.812951-4.327771 1.0401-5.033126 1.518306-5.033126C1.793275-5.033126 1.888917-4.841843 1.888917-4.483188C1.888917-4.220174 1.769365-3.753923 1.685679-3.383313L1.350934-2.092154C1.303113-1.865006 1.171606-1.327024 1.111831-1.111831C1.028144-.800996 .896638-.239103 .896638-.179328C.896638-.011955 1.028144 .119552 1.207472 .119552C1.350934 .119552 1.518306 .047821 1.613948-.131507C1.637858-.191283 1.745455-.609714 1.80523-.848817L2.068244-1.924782L2.462765-3.502864Z"></path> | |
</defs> | |
<g id="page1" transform="matrix(1.13 0 0 1.13 -141.234384 -80.795)"> | |
<use x="123.873654" y="80.199253" xlink:href="#g1-86"></use> | |
<use x="136.620163" y="80.199253" xlink:href="#g2-61"></use> | |
<use x="149.045644" y="80.199253" xlink:href="#g2-40"></use> | |
<use x="153.597969" y="80.199253" xlink:href="#g2-40"></use> | |
<use x="158.150295" y="80.199253" xlink:href="#g1-82"></use> | |
<use x="169.815474" y="80.199253" xlink:href="#g0-0"></use> | |
<use x="181.770634" y="80.199253" xlink:href="#g2-52"></use> | |
<use x="187.623625" y="80.199253" xlink:href="#g2-48"></use> | |
<use x="193.476615" y="80.199253" xlink:href="#g1-109"></use> | |
<use x="203.715882" y="80.199253" xlink:href="#g1-86"></use> | |
<use x="213.141561" y="80.199253" xlink:href="#g2-41"></use> | |
<use x="219.686365" y="80.199253" xlink:href="#g1-61"></use> | |
<use x="225.539355" y="80.199253" xlink:href="#g2-49"></use> | |
<use x="231.392346" y="80.199253" xlink:href="#g2-54"></use> | |
<use x="237.245336" y="80.199253" xlink:href="#g2-48"></use> | |
<use x="243.098326" y="80.199253" xlink:href="#g1-109"></use> | |
<use x="253.337593" y="80.199253" xlink:href="#g1-86"></use> | |
<use x="262.763272" y="80.199253" xlink:href="#g2-41"></use> | |
<use x="269.97225" y="80.199253" xlink:href="#g0-3"></use> | |
<use x="278.60652" y="80.199253" xlink:href="#g2-40"></use> | |
<use x="283.158846" y="80.199253" xlink:href="#g1-83"></use> | |
<use x="293.710833" y="80.199253" xlink:href="#g0-0"></use> | |
<use x="305.665993" y="80.199253" xlink:href="#g1-90"></use> | |
<use x="314.536815" y="80.199253" xlink:href="#g2-41"></use> | |
<use x="321.745789" y="80.199253" xlink:href="#g2-43"></use> | |
<use x="333.507104" y="80.199253" xlink:href="#g1-90"></use> | |
</g> | |
</svg> | |
<br> | |
<br> | |
<b>Convert Unit of Measure to 40/200mV:</b><br> | |
<svg style="margin-top: 10px; margin-left: 17px;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="248.047934pt" height="13.522849pt" viewBox="-.523074 -.301849 248.047934 13.522849"> | |
<defs> | |
<path id="g2-40" d="M3.88543 2.905106C3.88543 2.86924 3.88543 2.84533 3.682192 2.642092C2.486675 1.43462 1.817186-.537983 1.817186-2.976837C1.817186-5.296139 2.379078-7.292653 3.765878-8.703362C3.88543-8.810959 3.88543-8.834869 3.88543-8.870735C3.88543-8.942466 3.825654-8.966376 3.777833-8.966376C3.622416-8.966376 2.642092-8.105604 2.056289-6.933998C1.446575-5.726526 1.171606-4.447323 1.171606-2.976837C1.171606-1.912827 1.338979-.490162 1.960648 .789041C2.666002 2.223661 3.646326 3.000747 3.777833 3.000747C3.825654 3.000747 3.88543 2.976837 3.88543 2.905106Z"></path> | |
<path id="g2-41" d="M3.371357-2.976837C3.371357-3.88543 3.251806-5.36787 2.582316-6.75467C1.876961-8.18929 .896638-8.966376 .765131-8.966376C.71731-8.966376 .657534-8.942466 .657534-8.870735C.657534-8.834869 .657534-8.810959 .860772-8.607721C2.056289-7.400249 2.725778-5.427646 2.725778-2.988792C2.725778-.669489 2.163885 1.327024 .777086 2.737733C.657534 2.84533 .657534 2.86924 .657534 2.905106C.657534 2.976837 .71731 3.000747 .765131 3.000747C.920548 3.000747 1.900872 2.139975 2.486675 .968369C3.096389-.251059 3.371357-1.542217 3.371357-2.976837Z"></path> | |
<path id="g2-43" d="M4.770112-2.761644H8.069738C8.237111-2.761644 8.452304-2.761644 8.452304-2.976837C8.452304-3.203985 8.249066-3.203985 8.069738-3.203985H4.770112V-6.503611C4.770112-6.670984 4.770112-6.886177 4.554919-6.886177C4.327771-6.886177 4.327771-6.682939 4.327771-6.503611V-3.203985H1.028144C.860772-3.203985 .645579-3.203985 .645579-2.988792C.645579-2.761644 .848817-2.761644 1.028144-2.761644H4.327771V.537983C4.327771 .705355 4.327771 .920548 4.542964 .920548C4.770112 .920548 4.770112 .71731 4.770112 .537983V-2.761644Z"></path> | |
<path id="g2-48" d="M5.355915-3.825654C5.355915-4.817933 5.296139-5.786301 4.865753-6.694894C4.375592-7.687173 3.514819-7.950187 2.929016-7.950187C2.235616-7.950187 1.3868-7.603487 .944458-6.611208C.609714-5.858032 .490162-5.116812 .490162-3.825654C.490162-2.666002 .573848-1.793275 1.004234-.944458C1.470486-.035866 2.295392 .251059 2.917061 .251059C3.957161 .251059 4.554919-.37061 4.901619-1.06401C5.332005-1.960648 5.355915-3.132254 5.355915-3.825654ZM2.917061 .011955C2.534496 .011955 1.75741-.203238 1.530262-1.506351C1.398755-2.223661 1.398755-3.132254 1.398755-3.969116C1.398755-4.94944 1.398755-5.834122 1.590037-6.539477C1.793275-7.340473 2.402989-7.711083 2.917061-7.711083C3.371357-7.711083 4.064757-7.436115 4.291905-6.40797C4.447323-5.726526 4.447323-4.782067 4.447323-3.969116C4.447323-3.16812 4.447323-2.259527 4.315816-1.530262C4.088667-.215193 3.335492 .011955 2.917061 .011955Z"></path> | |
<path id="g2-49" d="M3.443088-7.663263C3.443088-7.938232 3.443088-7.950187 3.203985-7.950187C2.917061-7.627397 2.319303-7.185056 1.08792-7.185056V-6.838356C1.362889-6.838356 1.960648-6.838356 2.618182-7.149191V-.920548C2.618182-.490162 2.582316-.3467 1.530262-.3467H1.159651V0C1.482441-.02391 2.642092-.02391 3.036613-.02391S4.578829-.02391 4.901619 0V-.3467H4.531009C3.478954-.3467 3.443088-.490162 3.443088-.920548V-7.663263Z"></path> | |
<path id="g2-52" d="M4.315816-7.782814C4.315816-8.009963 4.315816-8.069738 4.148443-8.069738C4.052802-8.069738 4.016936-8.069738 3.921295-7.926276L.32279-2.343213V-1.996513H3.466999V-.908593C3.466999-.466252 3.443088-.3467 2.570361-.3467H2.331258V0C2.606227-.02391 3.550685-.02391 3.88543-.02391S5.176588-.02391 5.451557 0V-.3467H5.212453C4.351681-.3467 4.315816-.466252 4.315816-.908593V-1.996513H5.523288V-2.343213H4.315816V-7.782814ZM3.526775-6.850311V-2.343213H.621669L3.526775-6.850311Z"></path> | |
<path id="g2-54" d="M1.470486-4.160399C1.470486-7.185056 2.940971-7.663263 3.58655-7.663263C4.016936-7.663263 4.447323-7.531756 4.674471-7.173101C4.531009-7.173101 4.076712-7.173101 4.076712-6.682939C4.076712-6.419925 4.25604-6.192777 4.566874-6.192777C4.865753-6.192777 5.068991-6.372105 5.068991-6.718804C5.068991-7.340473 4.614695-7.950187 3.574595-7.950187C2.068244-7.950187 .490162-6.40797 .490162-3.777833C.490162-.490162 1.924782 .251059 2.940971 .251059C4.244085 .251059 5.355915-.884682 5.355915-2.438854C5.355915-4.028892 4.244085-5.092902 3.048568-5.092902C1.984558-5.092902 1.590037-4.172354 1.470486-3.837609V-4.160399ZM2.940971-.071731C2.187796-.071731 1.829141-.74122 1.721544-.992279C1.613948-1.303113 1.494396-1.888917 1.494396-2.725778C1.494396-3.670237 1.924782-4.853798 3.000747-4.853798C3.658281-4.853798 4.004981-4.411457 4.184309-4.004981C4.375592-3.56264 4.375592-2.964882 4.375592-2.450809C4.375592-1.841096 4.375592-1.303113 4.148443-.848817C3.849564-.274969 3.419178-.071731 2.940971-.071731Z"></path> | |
<path id="g2-61" d="M8.069738-3.873474C8.237111-3.873474 8.452304-3.873474 8.452304-4.088667C8.452304-4.315816 8.249066-4.315816 8.069738-4.315816H1.028144C.860772-4.315816 .645579-4.315816 .645579-4.100623C.645579-3.873474 .848817-3.873474 1.028144-3.873474H8.069738ZM8.069738-1.649813C8.237111-1.649813 8.452304-1.649813 8.452304-1.865006C8.452304-2.092154 8.249066-2.092154 8.069738-2.092154H1.028144C.860772-2.092154 .645579-2.092154 .645579-1.876961C.645579-1.649813 .848817-1.649813 1.028144-1.649813H8.069738Z"></path> | |
<path id="g0-0" d="M7.878456-2.749689C8.081694-2.749689 8.296887-2.749689 8.296887-2.988792S8.081694-3.227895 7.878456-3.227895H1.41071C1.207472-3.227895 .992279-3.227895 .992279-2.988792S1.207472-2.749689 1.41071-2.749689H7.878456Z"></path> | |
<path id="g0-3" d="M3.287671-5.104857C3.299626-5.272229 3.299626-5.559153 2.988792-5.559153C2.797509-5.559153 2.642092-5.403736 2.677958-5.248319V-5.092902L2.84533-3.239851L1.315068-4.351681C1.207472-4.411457 1.183562-4.435367 1.099875-4.435367C.932503-4.435367 .777086-4.267995 .777086-4.100623C.777086-3.90934 .896638-3.861519 1.016189-3.801743L2.713823-2.988792L1.06401-2.187796C.872727-2.092154 .777086-2.044334 .777086-1.865006S.932503-1.530262 1.099875-1.530262C1.183562-1.530262 1.207472-1.530262 1.506351-1.75741L2.84533-2.725778L2.666002-.71731C2.666002-.466252 2.881196-.406476 2.976837-.406476C3.120299-.406476 3.299626-.490162 3.299626-.71731L3.120299-2.725778L4.65056-1.613948C4.758157-1.554172 4.782067-1.530262 4.865753-1.530262C5.033126-1.530262 5.188543-1.697634 5.188543-1.865006C5.188543-2.044334 5.080946-2.10411 4.937484-2.175841C4.220174-2.534496 4.196264-2.534496 3.251806-2.976837L4.901619-3.777833C5.092902-3.873474 5.188543-3.921295 5.188543-4.100623S5.033126-4.435367 4.865753-4.435367C4.782067-4.435367 4.758157-4.435367 4.459278-4.208219L3.120299-3.239851L3.287671-5.104857Z"></path> | |
<path id="g1-61" d="M5.128767-8.524035C5.128767-8.53599 5.200498-8.715318 5.200498-8.739228C5.200498-8.88269 5.080946-8.966376 4.985305-8.966376C4.925529-8.966376 4.817933-8.966376 4.722291-8.703362L.71731 2.546451C.71731 2.558406 .645579 2.737733 .645579 2.761644C.645579 2.905106 .765131 2.988792 .860772 2.988792C.932503 2.988792 1.0401 2.976837 1.123786 2.725778L5.128767-8.524035Z"></path> | |
<path id="g1-82" d="M4.399502-7.352428C4.507098-7.79477 4.554919-7.81868 5.021171-7.81868H5.881943C6.910087-7.81868 7.675218-7.507846 7.675218-6.575342C7.675218-5.965629 7.364384-4.208219 4.961395-4.208219H3.610461L4.399502-7.352428ZM6.06127-4.064757C7.543711-4.387547 8.703362-5.34396 8.703362-6.372105C8.703362-7.304608 7.758904-8.16538 6.097136-8.16538H2.857285C2.618182-8.16538 2.510585-8.16538 2.510585-7.938232C2.510585-7.81868 2.594271-7.81868 2.82142-7.81868C3.53873-7.81868 3.53873-7.723039 3.53873-7.591532C3.53873-7.567621 3.53873-7.49589 3.490909-7.316563L1.876961-.884682C1.769365-.466252 1.745455-.3467 .920548-.3467C.645579-.3467 .561893-.3467 .561893-.119552C.561893 0 .6934 0 .729265 0C.944458 0 1.195517-.02391 1.422665-.02391H2.833375C3.048568-.02391 3.299626 0 3.514819 0C3.610461 0 3.741968 0 3.741968-.227148C3.741968-.3467 3.634371-.3467 3.455044-.3467C2.725778-.3467 2.725778-.442341 2.725778-.561893C2.725778-.573848 2.725778-.657534 2.749689-.753176L3.550685-3.969116H4.985305C6.121046-3.969116 6.336239-3.251806 6.336239-2.857285C6.336239-2.677958 6.216687-2.211706 6.133001-1.900872C6.001494-1.350934 5.965629-1.219427 5.965629-.992279C5.965629-.143462 6.659029 .251059 7.460025 .251059C8.428394 .251059 8.846824-.932503 8.846824-1.099875C8.846824-1.183562 8.787049-1.219427 8.715318-1.219427C8.619676-1.219427 8.595766-1.147696 8.571856-1.052055C8.284932-.203238 7.79477 .011955 7.49589 .011955S7.005729-.119552 7.005729-.657534C7.005729-.944458 7.149191-2.032379 7.161146-2.092154C7.220922-2.534496 7.220922-2.582316 7.220922-2.677958C7.220922-3.550685 6.515567-3.921295 6.06127-4.064757Z"></path> | |
<path id="g1-83" d="M7.591532-8.308842C7.591532-8.416438 7.507846-8.416438 7.483935-8.416438C7.436115-8.416438 7.424159-8.404483 7.280697-8.225156C7.208966-8.141469 6.718804-7.519801 6.706849-7.507846C6.312329-8.284932 5.523288-8.416438 5.021171-8.416438C3.502864-8.416438 2.12802-7.029639 2.12802-5.678705C2.12802-4.782067 2.666002-4.25604 3.251806-4.052802C3.383313-4.004981 4.088667-3.813699 4.447323-3.730012C5.057036-3.56264 5.212453-3.514819 5.463512-3.251806C5.511333-3.19203 5.750436-2.917061 5.750436-2.355168C5.750436-1.243337 4.722291-.095641 3.526775-.095641C2.546451-.095641 1.458531-.514072 1.458531-1.853051C1.458531-2.080199 1.506351-2.367123 1.542217-2.486675C1.542217-2.52254 1.554172-2.582316 1.554172-2.606227C1.554172-2.654047 1.530262-2.713823 1.43462-2.713823C1.327024-2.713823 1.315068-2.689913 1.267248-2.486675L.657534-.035866C.657534-.02391 .609714 .131507 .609714 .143462C.609714 .251059 .705355 .251059 .729265 .251059C.777086 .251059 .789041 .239103 .932503 .059776L1.482441-.657534C1.769365-.227148 2.391034 .251059 3.502864 .251059C5.045081 .251059 6.455791-1.243337 6.455791-2.737733C6.455791-3.239851 6.336239-3.682192 5.881943-4.124533C5.630884-4.375592 5.415691-4.435367 4.315816-4.722291C3.514819-4.937484 3.407223-4.97335 3.19203-5.164633C2.988792-5.36787 2.833375-5.654795 2.833375-6.06127C2.833375-7.065504 3.849564-8.093649 4.985305-8.093649C6.156912-8.093649 6.706849-7.376339 6.706849-6.240598C6.706849-5.929763 6.647073-5.606974 6.647073-5.559153C6.647073-5.451557 6.742715-5.451557 6.77858-5.451557C6.886177-5.451557 6.898132-5.487422 6.945953-5.678705L7.591532-8.308842Z"></path> | |
<path id="g1-86" d="M7.400249-6.838356C7.806725-7.483935 8.177335-7.770859 8.787049-7.81868C8.9066-7.830635 9.002242-7.830635 9.002242-8.045828C9.002242-8.093649 8.978331-8.16538 8.870735-8.16538C8.655542-8.16538 8.141469-8.141469 7.926276-8.141469C7.579577-8.141469 7.220922-8.16538 6.886177-8.16538C6.790535-8.16538 6.670984-8.16538 6.670984-7.938232C6.670984-7.830635 6.77858-7.81868 6.826401-7.81868C7.268742-7.782814 7.316563-7.567621 7.316563-7.424159C7.316563-7.244832 7.149191-6.969863 7.137235-6.957908L3.383313-1.004234L2.546451-7.44807C2.546451-7.79477 3.16812-7.81868 3.299626-7.81868C3.478954-7.81868 3.58655-7.81868 3.58655-8.045828C3.58655-8.16538 3.455044-8.16538 3.419178-8.16538C3.21594-8.16538 2.976837-8.141469 2.773599-8.141469H2.10411C1.231382-8.141469 .872727-8.16538 .860772-8.16538C.789041-8.16538 .645579-8.16538 .645579-7.950187C.645579-7.81868 .729265-7.81868 .920548-7.81868C1.530262-7.81868 1.566127-7.711083 1.601993-7.412204L2.558406-.035866C2.594271 .215193 2.594271 .251059 2.761644 .251059C2.905106 .251059 2.964882 .215193 3.084433 .02391L7.400249-6.838356Z"></path> | |
<path id="g1-90" d="M8.368618-7.79477C8.440349-7.878456 8.500125-7.950187 8.500125-8.069738C8.500125-8.153425 8.488169-8.16538 8.2132-8.16538H3.275716C3.000747-8.16538 2.988792-8.153425 2.917061-7.938232L2.259527-5.786301C2.223661-5.66675 2.223661-5.642839 2.223661-5.618929C2.223661-5.571108 2.259527-5.499377 2.343213-5.499377C2.438854-5.499377 2.462765-5.547198 2.510585-5.702615C2.952927-6.993773 3.53873-7.81868 5.427646-7.81868H7.388294L.836862-.406476C.729265-.274969 .681445-.227148 .681445-.095641C.681445 0 .74122 0 .968369 0H6.073225C6.348194 0 6.360149-.011955 6.43188-.227148L7.268742-2.86924C7.280697-2.905106 7.304608-2.988792 7.304608-3.036613C7.304608-3.096389 7.256787-3.156164 7.185056-3.156164C7.089415-3.156164 7.07746-3.144209 6.981818-2.84533C6.479701-1.303113 5.953674-.37061 3.873474-.37061H1.80523L8.368618-7.79477Z"></path> | |
<path id="g1-109" d="M2.462765-3.502864C2.486675-3.574595 2.785554-4.172354 3.227895-4.554919C3.53873-4.841843 3.945205-5.033126 4.411457-5.033126C4.889664-5.033126 5.057036-4.674471 5.057036-4.196264C5.057036-4.124533 5.057036-3.88543 4.913574-3.323537L4.614695-2.092154C4.519054-1.733499 4.291905-.848817 4.267995-.71731C4.220174-.537983 4.148443-.227148 4.148443-.179328C4.148443-.011955 4.27995 .119552 4.459278 .119552C4.817933 .119552 4.877709-.155417 4.985305-.585803L5.702615-3.443088C5.726526-3.53873 6.348194-5.033126 7.663263-5.033126C8.141469-5.033126 8.308842-4.674471 8.308842-4.196264C8.308842-3.526775 7.84259-2.223661 7.579577-1.506351C7.47198-1.219427 7.412204-1.06401 7.412204-.848817C7.412204-.310834 7.782814 .119552 8.356663 .119552C9.468493 .119552 9.886924-1.637858 9.886924-1.709589C9.886924-1.769365 9.839103-1.817186 9.767372-1.817186C9.659776-1.817186 9.647821-1.78132 9.588045-1.578082C9.313076-.621669 8.870735-.119552 8.392528-.119552C8.272976-.119552 8.081694-.131507 8.081694-.514072C8.081694-.824907 8.225156-1.207472 8.272976-1.338979C8.488169-1.912827 9.026152-3.323537 9.026152-4.016936C9.026152-4.734247 8.607721-5.272229 7.699128-5.272229C6.898132-5.272229 6.252553-4.817933 5.774346-4.112578C5.738481-4.758157 5.34396-5.272229 4.447323-5.272229C3.383313-5.272229 2.82142-4.519054 2.606227-4.220174C2.570361-4.901619 2.080199-5.272229 1.554172-5.272229C1.207472-5.272229 .932503-5.104857 .705355-4.65056C.490162-4.220174 .32279-3.490909 .32279-3.443088S.37061-3.335492 .454296-3.335492C.549938-3.335492 .561893-3.347447 .633624-3.622416C.812951-4.327771 1.0401-5.033126 1.518306-5.033126C1.793275-5.033126 1.888917-4.841843 1.888917-4.483188C1.888917-4.220174 1.769365-3.753923 1.685679-3.383313L1.350934-2.092154C1.303113-1.865006 1.171606-1.327024 1.111831-1.111831C1.028144-.800996 .896638-.239103 .896638-.179328C.896638-.011955 1.028144 .119552 1.207472 .119552C1.350934 .119552 1.518306 .047821 1.613948-.131507C1.637858-.191283 1.745455-.609714 1.80523-.848817L2.068244-1.924782L2.462765-3.502864Z"></path> | |
</defs> | |
<g id="page1" transform="matrix(1.13 0 0 1.13 -140.009481 -80.795)"> | |
<use x="122.877406" y="80.199253" xlink:href="#g1-82"></use> | |
<use x="135.20675" y="80.199253" xlink:href="#g2-61"></use> | |
<use x="147.632231" y="80.199253" xlink:href="#g2-40"></use> | |
<use x="152.184557" y="80.199253" xlink:href="#g2-40"></use> | |
<use x="156.736883" y="80.199253" xlink:href="#g1-86"></use> | |
<use x="168.819225" y="80.199253" xlink:href="#g0-0"></use> | |
<use x="180.774386" y="80.199253" xlink:href="#g1-90"></use> | |
<use x="189.645207" y="80.199253" xlink:href="#g2-41"></use> | |
<use x="196.190008" y="80.199253" xlink:href="#g1-61"></use> | |
<use x="204.035496" y="80.199253" xlink:href="#g2-40"></use> | |
<use x="208.587821" y="80.199253" xlink:href="#g1-83"></use> | |
<use x="219.139808" y="80.199253" xlink:href="#g0-0"></use> | |
<use x="231.094968" y="80.199253" xlink:href="#g1-90"></use> | |
<use x="239.96579" y="80.199253" xlink:href="#g2-41"></use> | |
<use x="244.5181" y="80.199253" xlink:href="#g2-41"></use> | |
<use x="251.72709" y="80.199253" xlink:href="#g0-3"></use> | |
<use x="260.36136" y="80.199253" xlink:href="#g2-49"></use> | |
<use x="266.21435" y="80.199253" xlink:href="#g2-54"></use> | |
<use x="272.067341" y="80.199253" xlink:href="#g2-48"></use> | |
<use x="277.920331" y="80.199253" xlink:href="#g1-109"></use> | |
<use x="288.159598" y="80.199253" xlink:href="#g1-86"></use> | |
<use x="300.24194" y="80.199253" xlink:href="#g2-43"></use> | |
<use x="312.003255" y="80.199253" xlink:href="#g2-52"></use> | |
<use x="317.856245" y="80.199253" xlink:href="#g2-48"></use> | |
<use x="323.709236" y="80.199253" xlink:href="#g1-109"></use> | |
<use x="333.948503" y="80.199253" xlink:href="#g1-86"></use> | |
</g> | |
</svg> | |
<br> | |
<br> | |
Where:<br> | |
<b>V</b> = Value in Unit of Measure<br> | |
<b>R</b> = Test points in mV (40mV = 4 mA)<br> | |
<b>S</b> = Span in Unit of Measure<br> | |
<b>Z</b> = Zero in Unit of Measure<br> | |
<div style="text-align: center; margin-top: 50px; "> | |
<input type="button" class="close-btn" value="Close" onclick="closeHelp()" style="width:30%;"> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Preset Overlay --> | |
<div class="preset-overlay" id="presetOverlay"> | |
<div class="preset-modal"> | |
<div class="preset-header"> | |
<h3>CTi Sensors</h3> | |
</div> | |
<div class="preset-list" id="presetList"> | |
</div> | |
<div class="preset-footer"> | |
<button class="close-btn" onclick="closePresets()">Close</button> | |
</div> | |
</div> | |
</div> | |
<!-- Main Device --> | |
<div class="fluke-body"> | |
<!-- LCD Display --> | |
<div class="lcd-bezel"> | |
<div class="lcd-screen"> | |
<div class="lcd-content" id="lcdContent"> | |
</div> | |
<div class="lcd-reflection"></div> | |
</div> | |
</div> | |
<!-- Function Buttons --> | |
<div class="button-row"> | |
<button class="btn power" id="powerBtn" onclick="clearAll()" style="padding-top:4px"> | |
<span><svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="30" height="30" viewBox="0,0,256,256"> | |
<g fill="#ffffff" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(8.53333,8.53333)"><path d="M27,6h-18.448c-0.989,0 -1.913,0.486 -2.472,1.301l-4.904,7.133c-0.234,0.341 -0.234,0.792 0,1.133l4.904,7.133c0.559,0.814 1.483,1.3 2.472,1.3h18.448c1.103,0 2,-0.897 2,-2v-14c0,-1.103 -0.897,-2 -2,-2zM21.707,18.293c0.391,0.391 0.391,1.023 0,1.414c-0.195,0.195 -0.451,0.293 -0.707,0.293c-0.256,0 -0.512,-0.098 -0.707,-0.293l-3.293,-3.293l-3.293,3.293c-0.195,0.195 -0.451,0.293 -0.707,0.293c-0.256,0 -0.512,-0.098 -0.707,-0.293c-0.391,-0.391 -0.391,-1.023 0,-1.414l3.293,-3.293l-3.293,-3.293c-0.391,-0.391 -0.391,-1.023 0,-1.414c0.391,-0.391 1.023,-0.391 1.414,0l3.293,3.293l3.293,-3.293c0.391,-0.391 1.023,-0.391 1.414,0c0.391,0.391 0.391,1.023 0,1.414l-3.293,3.293z"></path></g></g> | |
</svg></span> | |
</button> | |
<button class="btn preset-btn" onclick="showHelp()"> | |
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="24" height="24" viewBox="0,0,256,256"> | |
<g fill="#ffffff" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(10.66667,10.66667)"><path d="M12,2c-5.52,0 -10,4.48 -10,10c0,5.52 4.48,10 10,10c5.52,0 10,-4.48 10,-10c0,-5.52 -4.48,-10 -10,-10zM13,19h-2v-2h2zM15.07,11.25l-0.9,0.92c-0.72,0.73 -1.17,1.33 -1.17,2.83h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41c0,-1.1 -0.9,-2 -2,-2c-1.1,0 -2,0.9 -2,2h-2c0,-2.21 1.79,-4 4,-4c2.21,0 4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z"></path></g></g> | |
</svg> | |
</button> | |
<button class="btn test" onclick="showPresets()" style="padding-top:1px"> | |
PRESET | |
<span>▼</span> | |
</button> | |
</div> | |
</div> | |
<!-- Lower Case --> | |
<div class="lower-case"> | |
<!-- Process Value Input --> | |
<div class="input-group"> | |
<label class="input-label"> | |
VALUE IN UOM | |
</label> | |
<div class="input-wrapper"> | |
<button class="stepper-btn" | |
onmousedown="startHold('valueInput', -1)" | |
onmouseup="stopHold()" | |
onmouseleave="stopHold()" | |
ontouchstart="startHold('valueInput', -1)" | |
ontouchend="stopHold()"><</button> | |
<input type="number" class="input-field" id="valueInput" placeholder="Value" oninput="calculateFromValue()"> | |
<button class="stepper-btn" | |
onmousedown="startHold('valueInput', 1)" | |
onmouseup="stopHold()" | |
onmouseleave="stopHold()" | |
ontouchstart="startHold('valueInput', 1)" | |
ontouchend="stopHold()">></button> | |
</div> | |
</div> | |
<!-- Milliamp Input --> | |
<div class="input-group"> | |
<label class="input-label"> | |
TEST POINTS mV | |
</label> | |
<div class="input-wrapper"> | |
<button class="stepper-btn" | |
onmousedown="startHold('mvInput', -1)" | |
onmouseup="stopHold()" | |
onmouseleave="stopHold()" | |
ontouchstart="startHold('mvInput', -1)" | |
ontouchend="stopHold()"><</button> | |
<input type="number" class="input-field" id="mvInput" placeholder="mV" oninput="calculateFromMv()"> | |
<button class="stepper-btn" | |
onmousedown="startHold('mvInput', 1)" | |
onmouseup="stopHold()" | |
onmouseleave="stopHold()" | |
ontouchstart="startHold('mvInput', 1)" | |
ontouchend="stopHold()">></button> | |
</div> | |
</div> | |
<!-- Zero and Span --> | |
<div class="input-group"> | |
<div class="input-row"> | |
<div> | |
<label class="input-label secondary">ZERO</label> | |
<div class="input-wrapper small"> | |
<button class="stepper-btn small" | |
onmousedown="startHold('zeroInput', -1)" | |
onmouseup="stopHold()" | |
onmouseleave="stopHold()" | |
ontouchstart="startHold('zeroInput', -1)" | |
ontouchend="stopHold()"><</button> | |
<input type="number" class="input-field small" id="zeroInput" value="0" oninput="calculateFromValue()"> | |
<button class="stepper-btn small" | |
onmousedown="startHold('zeroInput', 1)" | |
onmouseup="stopHold()" | |
onmouseleave="stopHold()" | |
ontouchstart="startHold('zeroInput', 1)" | |
ontouchend="stopHold()">></button> | |
</div> | |
</div> | |
<div> | |
<label class="input-label secondary">SPAN</label> | |
<div class="input-wrapper small"> | |
<button class="stepper-btn small" | |
onmousedown="startHold('spanInput', -1)" | |
onmouseup="stopHold()" | |
onmouseleave="stopHold()" | |
ontouchstart="startHold('spanInput', -1)" | |
ontouchend="stopHold()"><</button> | |
<input type="number" class="input-field small" id="spanInput" value="100" oninput="calculateFromValue()"> | |
<button class="stepper-btn small" | |
onmousedown="startHold('spanInput', 1)" | |
onmouseup="stopHold()" | |
onmouseleave="stopHold()" | |
ontouchstart="startHold('spanInput', 1)" | |
ontouchend="stopHold()">></button> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Test Resistance --> | |
<div class="input-group hidden"> | |
<label class="input-label tertiary">Test R (mV) • 40mV = 4mA</label> | |
<input type="number" class="input-field small tertiary" id="resistanceInput" value="1"> | |
</div> | |
<!-- Info Panel --> | |
<div class="info-panel"> | |
<div class="info-text"></div> | |
</div> | |
</div> | |
</div> | |
<script> | |
// State | |
let isOn = true; | |
let result = null; | |
let currentUom = '%'; | |
let currentSensor = ''; | |
let currentGasShort = ''; | |
let lastInput = 'value'; | |
// Presets data | |
const presets = [ | |
{ | |
"gas_name": "Ammonia", | |
"gas_short": "NH3", | |
"zero": 0, | |
"span": 50, | |
"uom": "PPM", | |
"sensor": "GG-NH3-50" | |
}, | |
{ | |
"gas_name": "Ammonia", | |
"gas_short": "NH3", | |
"zero": 0, | |
"span": 100, | |
"uom": "PPM", | |
"sensor": "GG-NH3-100" | |
}, | |
{ | |
"gas_name": "Ammonia", | |
"gas_short": "NH3", | |
"zero": 0, | |
"span": 150, | |
"uom": "PPM", | |
"sensor": "GG-NH3-150" | |
}, | |
{ | |
"gas_name": "Ammonia", | |
"gas_short": "NH3", | |
"zero": 0, | |
"span": 200, | |
"uom": "PPM", | |
"sensor": "GG-NH3-200" | |
}, | |
{ | |
"gas_name": "Ammonia", | |
"gas_short": "NH3", | |
"zero": 0, | |
"span": 250, | |
"uom": "PPM", | |
"sensor": "GG-NH3-250" | |
}, | |
{ | |
"gas_name": "Ammonia", | |
"gas_short": "NH3", | |
"zero": 0, | |
"span": 300, | |
"uom": "PPM", | |
"sensor": "GG-NH3-300" | |
}, | |
{ | |
"gas_name": "Ammonia", | |
"gas_short": "NH3", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-NH3-500" | |
}, | |
{ | |
"gas_name": "Ammonia", | |
"gas_short": "NH3", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-NH3-1000" | |
}, | |
{ | |
"gas_name": "Ammonia", | |
"gas_short": "NH3", | |
"zero": 0, | |
"span": 10000, | |
"uom": "PPM", | |
"sensor": "GG-NH3-1%" | |
}, | |
{ | |
"gas_name": "Ammonia", | |
"gas_short": "NH3", | |
"zero": 0, | |
"span": 20000, | |
"uom": "PPM", | |
"sensor": "GG-NH3-2%" | |
}, | |
{ | |
"gas_name": "Carbon Dioxide", | |
"gas_short": "CO2", | |
"zero": 0, | |
"span": 10000, | |
"uom": "%", | |
"sensor": "GG-CO2-1%" | |
}, | |
{ | |
"gas_name": "Carbon Dioxide", | |
"gas_short": "CO2", | |
"zero": 0, | |
"span": 30000, | |
"uom": "%", | |
"sensor": "GG-CO2-3%" | |
}, | |
{ | |
"gas_name": "Carbon Dioxide", | |
"gas_short": "CO2", | |
"zero": 0, | |
"span": 50000, | |
"uom": "%", | |
"sensor": "GG-CO2-5%" | |
}, | |
{ | |
"gas_name": "Carbon Dioxide", | |
"gas_short": "CO2", | |
"zero": 0, | |
"span": 20000, | |
"uom": "%", | |
"sensor": "GG-CO2-20%" | |
}, | |
{ | |
"gas_name": "Carbon Dioxide", | |
"gas_short": "CO2", | |
"zero": 0, | |
"span": 100000, | |
"uom": "%", | |
"sensor": "GG-CO2-100%" | |
}, | |
{ | |
"gas_name": "Carbon Monoxide", | |
"gas_short": "CO", | |
"zero": 0, | |
"span": 200, | |
"uom": "PPM", | |
"sensor": "GG-CO-200" | |
}, | |
{ | |
"gas_name": "Chlorine", | |
"gas_short": "CL2", | |
"zero": 0, | |
"span": 5, | |
"uom": "PPM", | |
"sensor": "GG-CL2-B-5" | |
}, | |
{ | |
"gas_name": "Hydrogen", | |
"gas_short": "H2", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-H2-EC-1000" | |
}, | |
{ | |
"gas_name": "Hydrogen", | |
"gas_short": "H2", | |
"zero": 0, | |
"span": 2000, | |
"uom": "PPM", | |
"sensor": "GG-H2-EC-2000" | |
}, | |
{ | |
"gas_name": "Hydrogen", | |
"gas_short": "H2", | |
"zero": 0, | |
"span": 10000, | |
"uom": "PPM", | |
"sensor": "GG-H2-EC-10000" | |
}, | |
{ | |
"gas_name": "Hydrogen Sulfide", | |
"gas_short": "H2S", | |
"zero": 0, | |
"span": 50, | |
"uom": "PPM", | |
"sensor": "GG-H2S-50" | |
}, | |
{ | |
"gas_name": "Hydrogen Sulfide", | |
"gas_short": "H2S", | |
"zero": 0, | |
"span": 200, | |
"uom": "PPM", | |
"sensor": "GG-H2S-200" | |
}, | |
{ | |
"gas_name": "Nitrogen Dioxide", | |
"gas_short": "NO2", | |
"zero": 0, | |
"span": 10, | |
"uom": "PPM", | |
"sensor": "GG-NO2-B-10" | |
}, | |
{ | |
"gas_name": "Oxygen", | |
"gas_short": "O2", | |
"zero": 0, | |
"span": 25, | |
"uom": "%", | |
"sensor": "GG-O2-C0" | |
}, | |
{ | |
"gas_name": "Oxygen", | |
"gas_short": "O2", | |
"zero": 15, | |
"span": 25, | |
"uom": "%", | |
"sensor": "GG-O2-C15" | |
}, | |
{ | |
"gas_name": "Ozone", | |
"gas_short": "O3", | |
"zero": 0, | |
"span": 1, | |
"uom": "PPM", | |
"sensor": "GG-O3-A-1" | |
}, | |
{ | |
"gas_name": "R11", | |
"gas_short": "R11", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R11-1000" | |
}, | |
{ | |
"gas_name": "R123", | |
"gas_short": "R123", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R123-500" | |
}, | |
{ | |
"gas_name": "R123", | |
"gas_short": "R123", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R123-1000" | |
}, | |
{ | |
"gas_name": "R123A", | |
"gas_short": "R123A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R123A-500" | |
}, | |
{ | |
"gas_name": "R123A", | |
"gas_short": "R123A", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R123A-1000" | |
}, | |
{ | |
"gas_name": "R134A", | |
"gas_short": "R134A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R134A-500" | |
}, | |
{ | |
"gas_name": "R134A", | |
"gas_short": "R134A", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R134A-1000" | |
}, | |
{ | |
"gas_name": "R22", | |
"gas_short": "R22", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R22-500" | |
}, | |
{ | |
"gas_name": "R22", | |
"gas_short": "R22", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R22-1000" | |
}, | |
{ | |
"gas_name": "R404A", | |
"gas_short": "R404A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R404A-500" | |
}, | |
{ | |
"gas_name": "R404A", | |
"gas_short": "R404A", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R404A-1000" | |
}, | |
{ | |
"gas_name": "R407A", | |
"gas_short": "R407A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R407A-500" | |
}, | |
{ | |
"gas_name": "R407A", | |
"gas_short": "R407A", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R407A-1000" | |
}, | |
{ | |
"gas_name": "R407C", | |
"gas_short": "R407C", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R407C-500" | |
}, | |
{ | |
"gas_name": "R407F", | |
"gas_short": "R407F", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R407F-500" | |
}, | |
{ | |
"gas_name": "R407F", | |
"gas_short": "R407F", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R407F-1000" | |
}, | |
{ | |
"gas_name": "R410A", | |
"gas_short": "R410A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R410A-500" | |
}, | |
{ | |
"gas_name": "R410A", | |
"gas_short": "R410A", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R410A-1000" | |
}, | |
{ | |
"gas_name": "R422A", | |
"gas_short": "R422A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R422A-500" | |
}, | |
{ | |
"gas_name": "R422D", | |
"gas_short": "R422D", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R422D-500" | |
}, | |
{ | |
"gas_name": "R434A", | |
"gas_short": "R434A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R434A-500" | |
}, | |
{ | |
"gas_name": "R438A", | |
"gas_short": "R438A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R438A-500" | |
}, | |
{ | |
"gas_name": "R448A", | |
"gas_short": "R448A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R448A-500" | |
}, | |
{ | |
"gas_name": "R448A", | |
"gas_short": "R448A", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R448A-1000" | |
}, | |
{ | |
"gas_name": "R449A", | |
"gas_short": "R449A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R449A-500" | |
}, | |
{ | |
"gas_name": "R449A", | |
"gas_short": "R449A", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R449A-1000" | |
}, | |
{ | |
"gas_name": "R507A", | |
"gas_short": "R507A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R507A-500" | |
}, | |
{ | |
"gas_name": "R507A", | |
"gas_short": "R507A", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R507A-1000" | |
}, | |
{ | |
"gas_name": "R513A", | |
"gas_short": "R513A", | |
"zero": 0, | |
"span": 500, | |
"uom": "PPM", | |
"sensor": "GG-R513A-500" | |
}, | |
{ | |
"gas_name": "R514A", | |
"gas_short": "R514A", | |
"zero": 0, | |
"span": 1000, | |
"uom": "PPM", | |
"sensor": "GG-R514A-500" | |
}, | |
{ | |
"gas_name": "Sulfur Dioxide", | |
"gas_short": "SO2", | |
"zero": 0, | |
"span": 20, | |
"uom": "PPM", | |
"sensor": "GG-SO2-20" | |
}, | |
{ | |
"gas_name": "Temperature", | |
"gas_short": "TEMP", | |
"zero": -60, | |
"span": 160, | |
"uom": "F", | |
"sensor": "Temp Sensor TS2" | |
} | |
]; | |
// Initialize | |
document.addEventListener('DOMContentLoaded', function() { | |
populatePresets(); | |
updateDisplay(); | |
calculateFromValue(); | |
}); | |
// Calculate 4-20mA conversion from Process Value | |
function calculateFromValue() { | |
if (!isOn) { | |
result = null; | |
updateDisplay(); | |
return; | |
} | |
lastInput = 'value'; | |
const zero = parseFloat(document.getElementById('zeroInput').value) || 0; | |
const upperValue = parseFloat(document.getElementById('spanInput').value) || 100; | |
const value = parseFloat(document.getElementById('valueInput').value); | |
const span = upperValue - zero; | |
if (!isNaN(value) && span !== 0) { | |
const percentage = (value - zero) / span; | |
const milliamps = 4 + percentage * 16; | |
const millivolts = 40 + percentage * 160; | |
result = milliamps; | |
document.getElementById('mvInput').value = millivolts.toFixed(1); | |
} else { | |
result = null; | |
document.getElementById('mvInput').value = ''; | |
} | |
updateDisplay(); | |
} | |
// Calculate Process Value from 4-20mA | |
function calculateFromMv() { | |
if (!isOn) { | |
result = null; | |
updateDisplay(); | |
return; | |
} | |
lastInput = 'mv'; | |
const zero = parseFloat(document.getElementById('zeroInput').value) || 0; | |
const upperValue = parseFloat(document.getElementById('spanInput').value) || 100; | |
const millivolts = parseFloat(document.getElementById('mvInput').value); | |
const span = upperValue - zero; | |
if (!isNaN(millivolts) && span !== 0) { | |
const percentage = (millivolts - 40) / 160; | |
const value = (percentage * span) + zero; | |
result = 4 + (percentage * 16); | |
document.getElementById('valueInput').value = value.toFixed(1); | |
} else { | |
document.getElementById('valueInput').value = ''; | |
result = null; | |
} | |
updateDisplay(); | |
} | |
// Update LCD display | |
function updateDisplay() { | |
const lcdContent = document.getElementById('lcdContent'); | |
const zero = parseFloat(document.getElementById('zeroInput').value) || 0; | |
const upperValue = parseFloat(document.getElementById('spanInput').value) || 100; | |
const value = parseFloat(document.getElementById('valueInput').value); | |
if (isOn) { | |
const percentage = result ? (((result - 4) / 16) * 100).toFixed(1) : "0.0"; | |
const progressWidth = result ? Math.max(0, Math.min(100, ((result - 4) / 16) * 100)) : 0; | |
let rangeDisplay = ''; | |
if (zero !== "0" || upperValue !== 100) { | |
rangeDisplay = `<div class="range-display" style="display: block;">Range: ${zero} to ${upperValue} ${currentUom}</div>`; | |
} | |
lcdContent.innerHTML = ` | |
<div class="header-bar"> | |
<span>${currentSensor || ''}</span> | |
<span>${currentGasShort || ''}</span> | |
</div> | |
<div class="main-reading"> | |
<div class="reading-value"> | |
${!isNaN(value) ? value.toFixed(1) : "0.0"} | |
</div> | |
<div class="percentage">${currentUom}</div> | |
</div> | |
<div class="scale-container"> | |
<div class="scale-labels"> | |
<span>4</span> | |
<span>8</span> | |
<span>12</span> | |
<span>16</span> | |
<span>20</span> | |
</div> | |
<div class="progress-bar"> | |
<div class="progress-fill" style="width: ${progressWidth}%"></div> | |
</div> | |
</div> | |
${rangeDisplay} | |
`; | |
} else { | |
lcdContent.innerHTML = ` | |
<div class="power-off"> | |
<div> | |
<div class="power-off-text">---</div> | |
<div class="power-off-label">Power Off</div> | |
</div> | |
</div> | |
`; | |
} | |
const infoText = document.querySelector('.info-text'); | |
let formula = ''; | |
if (lastInput === 'value') { | |
const v = parseFloat(document.getElementById('valueInput').value) || 0; | |
const z = parseFloat(document.getElementById('zeroInput').value) || 0; | |
const s_upper = parseFloat(document.getElementById('spanInput').value) || 100; | |
formula = `R = ((${v.toFixed(1)} - ${z.toFixed(1)}) / (${s_upper.toFixed(1)} - ${z.toFixed(1)})) * 160 + 40`; | |
} else { // lastInput === 'mv' | |
const r = parseFloat(document.getElementById('mvInput').value) || 0; | |
const z = parseFloat(document.getElementById('zeroInput').value) || 0; | |
const s_upper = parseFloat(document.getElementById('spanInput').value) || 100; | |
formula = `V = ((${r.toFixed(1)} - 40) / 160) * (${s_upper.toFixed(1)} - ${z.toFixed(1)}) + ${z.toFixed(1)}`; | |
} | |
infoText.textContent = formula; | |
} | |
// Clear all values | |
function clearAll() { | |
document.getElementById('valueInput').value = ''; | |
document.getElementById('mvInput').value = ''; | |
lastInput = 'value'; | |
result = null; | |
updateDisplay(); | |
} | |
// Set preset | |
function setPreset(zero, span, uom, sensor, gas_short) { | |
document.getElementById('zeroInput').value = zero; | |
document.getElementById('spanInput').value = span; | |
currentUom = uom || '%'; | |
currentSensor = sensor || ''; | |
currentGasShort = gas_short || ''; | |
calculateFromValue(); | |
} | |
// Show presets | |
function showPresets() { | |
document.getElementById('presetOverlay').style.display = 'flex'; | |
} | |
// Close presets | |
function closePresets() { | |
document.getElementById('presetOverlay').style.display = 'none'; | |
} | |
// Populate presets list | |
function populatePresets() { | |
const presetList = document.getElementById('presetList'); | |
// Group presets by gas_name | |
const groupedPresets = presets.reduce((groups, preset) => { | |
const gasName = preset.gas_name; | |
if (!groups[gasName]) { | |
groups[gasName] = []; | |
} | |
groups[gasName].push(preset); | |
return groups; | |
}, {}); | |
// Sort gas names and generate HTML | |
const sortedGasNames = Object.keys(groupedPresets).sort(); | |
presetList.innerHTML = sortedGasNames.map(gasName => { | |
const gasPresets = groupedPresets[gasName]; | |
const presetItems = gasPresets.map(preset => { | |
const upper_range = preset.zero + preset.span; | |
return ` | |
<button class="preset-item" onclick="applyPreset('${preset.zero}', '${preset.span}', '${preset.uom}', '${preset.sensor}', '${preset.gas_short}')"> | |
<div class="preset-row"> | |
<div class="preset-sensor">${preset.sensor}</div> | |
<div class="preset-details"> | |
<div class="preset-range">${preset.zero}-${upper_range}${(preset.uom === '%' || preset.uom === 'F') ? '' : ' '}</div> | |
<div class="preset-uom">${preset.uom === 'F' ? '°F' : preset.uom}</div> | |
</div> | |
</div> | |
</button> | |
`; | |
}).join(''); | |
return ` | |
<div class="gas-group"> | |
<div class="gas-group-header">${gasName}</div> | |
${presetItems} | |
</div> | |
`; | |
}).join(''); | |
} | |
// Apply preset | |
function applyPreset(zero, span, uom, sensor, gas_short) { | |
setPreset(zero, span, uom, sensor, gas_short); | |
closePresets(); | |
} | |
// Close preset overlay when clicking outside | |
document.getElementById('presetOverlay').addEventListener('click', function(e) { | |
if (e.target === this) { | |
closePresets(); | |
} | |
}); | |
// Show help modal | |
function showHelp() { | |
document.getElementById('help-modal').classList.add('show'); | |
} | |
// Close help modal | |
function closeHelp() { | |
document.getElementById('help-modal').classList.remove('show'); | |
} | |
// Register service worker for PWA | |
if ('serviceWorker' in navigator) { | |
window.addEventListener('load', function() { | |
navigator.serviceWorker.register('./sw.js'); | |
}); | |
} | |
// Hold-to-increment functionality variables | |
let holdInterval = null; | |
let holdTimeout = null; | |
let currentInputId = null; | |
let currentDirection = null; | |
// Step value function for stepper buttons | |
function stepValue(inputId, direction, stepMultiplier = 1) { | |
const input = document.getElementById(inputId); | |
const currentValue = parseFloat(input.value) || 0; | |
// Determine step size based on input type | |
let stepSize = 1; | |
if (inputId === 'mvInput') { | |
stepSize = 0.1; // Smaller steps for millivolts | |
} else if (inputId === 'valueInput') { | |
const zero = parseFloat(document.getElementById('zeroInput').value) || 0; | |
const span = parseFloat(document.getElementById('spanInput').value) || 100; | |
const range = Math.abs(span - zero); | |
stepSize = range > 100 ? 10 : (range > 10 ? 1 : 0.1); // Adaptive step size | |
} | |
// Apply step multiplier for fast increments | |
stepSize *= stepMultiplier; | |
const newValue = currentValue + (direction * stepSize); | |
input.value = newValue.toFixed(stepSize < 1 ? 1 : 0); | |
// Trigger the appropriate calculation | |
if (inputId === 'valueInput' || inputId === 'zeroInput' || inputId === 'spanInput') { | |
calculateFromValue(); | |
} else if (inputId === 'mvInput') { | |
calculateFromMv(); | |
} | |
} | |
// Start hold-to-increment functionality | |
function startHold(inputId, direction) { | |
currentInputId = inputId; | |
currentDirection = direction; | |
// Initial step | |
stepValue(inputId, direction); | |
// Start slow increment after 500ms delay | |
holdTimeout = setTimeout(() => { | |
holdInterval = setInterval(() => { | |
stepValue(currentInputId, currentDirection); | |
}, 200); // Start with 200ms intervals (slow) | |
// Speed up after 2 seconds with 10x step size | |
setTimeout(() => { | |
if (holdInterval) { | |
clearInterval(holdInterval); | |
holdInterval = setInterval(() => { | |
stepValue(currentInputId, currentDirection, 10); // 10x step multiplier | |
}, 100); // Faster increment with larger steps | |
} | |
}, 2000); | |
}, 500); | |
} | |
// Stop hold-to-increment functionality | |
function stopHold() { | |
if (holdTimeout) { | |
clearTimeout(holdTimeout); | |
holdTimeout = null; | |
} | |
if (holdInterval) { | |
clearInterval(holdInterval); | |
holdInterval = null; | |
} | |
currentInputId = null; | |
currentDirection = null; | |
} | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment