Gutachten: - Kommunikation (Email, Ortstermin, Anfahrt, Rückfahrt, Besichtigung, Anwesende) - Parteien (Versicherungsnehmer, Versicherer, Makler) - Versicherungsarten (Gebäude, Hausrat, Haftpflicht) - Gebäudeinfo (Baujahr, Sanierung) - Schadendetails (Undichtigkeit, Silikonfuge, Rissbildung, Feuchtigkeit, Korrosion, Messpunkt, Fotopunkt) Regenwasserwirtschaft: - Rigole, Versickerungsmulde, RRB, Drosselschacht - Überlauf, Retention, Gründach, Zisterne - Regenwassernutzung, Sedimentationsanlage, Abscheider Vermessung Ergänzung: - Punkte (HFP, Polygonpunkt, Grenzstein, Grenzrohr, Grenzbolzen, Nivellementpunkt, TP) - Telekom (Schacht, Kabel, Verteilerkasten) - Fernwärme (Schacht, Leitung) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
472 lines
25 KiB
HTML
472 lines
25 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Gutachter Symbolbibliothek v2.2</title>
|
|
<!-- CSS Module (max 300 Zeilen pro Datei) -->
|
|
<link rel="stylesheet" href="css/base.css?v=1">
|
|
<link rel="stylesheet" href="css/layout.css?v=1">
|
|
<link rel="stylesheet" href="css/modal.css?v=1">
|
|
<link rel="stylesheet" href="css/text-generator.css?v=1">
|
|
<link rel="stylesheet" href="css/components.css?v=1">
|
|
<link rel="stylesheet" href="css/legend.css?v=1">
|
|
</head>
|
|
<body>
|
|
<!-- HEADER -->
|
|
<header class="header">
|
|
<div class="header-content">
|
|
<h1>Gutachter Symbolbibliothek</h1>
|
|
<p class="subtitle">SVG & DXF Symbole fuer Schadensgutachten und Vermessung</p>
|
|
</div>
|
|
<div class="header-actions">
|
|
<button class="btn-header" onclick="openLegendModal()">
|
|
Legende <span class="badge" id="legendCount">0</span>
|
|
</button>
|
|
<button class="btn-header" onclick="downloadAllAsZip()">
|
|
Alle herunterladen
|
|
</button>
|
|
</div>
|
|
</header>
|
|
|
|
<!-- TEXT-GENERATOR v5 -->
|
|
<div class="text-generator">
|
|
<div class="text-generator-header" onclick="toggleTextGenerator()">
|
|
<h3>Text-Symbol erstellen</h3>
|
|
<div class="header-buttons">
|
|
<button class="btn-reset" onclick="event.stopPropagation(); resetToDefaults();" title="Auf Standard zuruecksetzen">Reset</button>
|
|
<button class="collapse-btn" id="collapseBtn">▼</button>
|
|
</div>
|
|
</div>
|
|
<div class="text-generator-body" id="textGeneratorBody">
|
|
<!-- Zeile 1: Text und Schriftgroesse -->
|
|
<div class="text-generator-row">
|
|
<div class="text-input-group text-input-wide">
|
|
<label>Text:</label>
|
|
<textarea id="customText" placeholder="Text eingeben... (Enter fuer neue Zeile)" rows="3"></textarea>
|
|
</div>
|
|
<div class="text-input-group">
|
|
<label>Schriftgroesse:</label>
|
|
<input type="range" id="fontSize" min="8" max="48" value="16">
|
|
<input type="number" id="fontSizeNum" min="8" max="48" value="16" class="num-input">
|
|
<span class="num-unit">px</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zeile 2: Farben -->
|
|
<div class="text-generator-row">
|
|
<div class="text-input-group">
|
|
<label>Textfarbe:</label>
|
|
<div class="color-picker-wrap">
|
|
<input type="color" id="textColor" value="#000000">
|
|
<span class="color-value" id="textColorValue">#000000</span>
|
|
</div>
|
|
</div>
|
|
<div class="text-input-group">
|
|
<label>Rahmenfarbe:</label>
|
|
<div class="color-picker-wrap">
|
|
<input type="color" id="frameColor" value="#000000">
|
|
<span class="color-value" id="frameColorValue">#000000</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zeile 3: Rahmenform -->
|
|
<div class="text-generator-row">
|
|
<div class="text-input-group">
|
|
<label>Rahmenform:</label>
|
|
<div class="shape-options">
|
|
<button class="shape-btn" data-shape="none" title="Kein Rahmen">Keiner</button>
|
|
<button class="shape-btn active" data-shape="rect" title="Rechteck">Rechteck</button>
|
|
<button class="shape-btn" data-shape="square" title="Quadrat">Quadrat</button>
|
|
<button class="shape-btn" data-shape="circle" title="Kreis">Kreis</button>
|
|
<button class="shape-btn" data-shape="oval" title="Oval">Oval</button>
|
|
<button class="shape-btn" data-shape="diamond" title="Raute">Raute</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zeile 4: Rahmen-Skalierung -->
|
|
<div class="text-generator-row" id="frameScaleRow">
|
|
<div class="text-input-group">
|
|
<label>Rahmen-Skalierung:</label>
|
|
<input type="range" id="frameScale" min="100" max="300" value="100">
|
|
<input type="number" id="frameScaleNum" min="100" max="300" value="100" class="num-input">
|
|
<span class="num-unit">%</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zeile 4b: Gesamt-Padding -->
|
|
<div class="text-generator-row" id="framePaddingAllRow">
|
|
<div class="text-input-group">
|
|
<label>Gesamt-Padding:</label>
|
|
<input type="range" id="paddingAll" min="0" max="50" value="10">
|
|
<input type="number" id="paddingAllNum" min="0" max="50" value="10" class="num-input">
|
|
<span class="num-unit">px</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zeile 4c: Separate Padding (4 Kanten) -->
|
|
<div class="text-generator-row padding-row" id="framePaddingRow">
|
|
<div class="text-input-group padding-group">
|
|
<label>Padding Oben:</label>
|
|
<input type="range" id="paddingTop" min="0" max="50" value="10">
|
|
<span id="paddingTopValue">10px</span>
|
|
</div>
|
|
<div class="text-input-group padding-group">
|
|
<label>Rechts:</label>
|
|
<input type="range" id="paddingRight" min="0" max="50" value="10">
|
|
<span id="paddingRightValue">10px</span>
|
|
</div>
|
|
<div class="text-input-group padding-group">
|
|
<label>Unten:</label>
|
|
<input type="range" id="paddingBottom" min="0" max="50" value="10">
|
|
<span id="paddingBottomValue">10px</span>
|
|
</div>
|
|
<div class="text-input-group padding-group">
|
|
<label>Links:</label>
|
|
<input type="range" id="paddingLeft" min="0" max="50" value="10">
|
|
<span id="paddingLeftValue">10px</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zeile 4d: Text-Positionierung -->
|
|
<div class="text-generator-row" id="textAlignRow">
|
|
<div class="text-input-group">
|
|
<label>Text horizontal:</label>
|
|
<div class="align-options">
|
|
<button class="align-btn" data-align-x="left" title="Links">Links</button>
|
|
<button class="align-btn active" data-align-x="center" title="Mitte">Mitte</button>
|
|
<button class="align-btn" data-align-x="right" title="Rechts">Rechts</button>
|
|
</div>
|
|
</div>
|
|
<div class="text-input-group">
|
|
<label>Text vertikal:</label>
|
|
<div class="align-options">
|
|
<button class="align-btn" data-align-y="top" title="Oben">Oben</button>
|
|
<button class="align-btn active" data-align-y="center" title="Mitte">Mitte</button>
|
|
<button class="align-btn" data-align-y="bottom" title="Unten">Unten</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zeile 5: Linienstil und Staerke -->
|
|
<div class="text-generator-row">
|
|
<div class="text-input-group">
|
|
<label>Linienstil:</label>
|
|
<div class="line-style-options">
|
|
<button class="line-btn active" data-style="solid" title="Durchgezogen">Durchgezogen</button>
|
|
<button class="line-btn" data-style="dashed" title="Gestrichelt">Gestrichelt</button>
|
|
<button class="line-btn" data-style="dotted" title="Gepunktet">Gepunktet</button>
|
|
</div>
|
|
</div>
|
|
<div class="text-input-group">
|
|
<label>Linienstaerke:</label>
|
|
<div class="line-weight-options">
|
|
<button class="weight-btn" data-weight="1" title="Duenn">Duenn</button>
|
|
<button class="weight-btn active" data-weight="2" title="Mittel">Mittel</button>
|
|
<button class="weight-btn" data-weight="3" title="Fett">Fett</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zeile 6: Pfeil-Optionen -->
|
|
<div class="text-generator-row">
|
|
<div class="text-input-group">
|
|
<label>Pfeil am Text:</label>
|
|
<div class="arrow-options">
|
|
<button class="arrow-btn active" data-arrow="none" title="Kein Pfeil">Keiner</button>
|
|
<button class="arrow-btn" data-arrow="top" title="Pfeil oben">Oben</button>
|
|
<button class="arrow-btn" data-arrow="right" title="Pfeil rechts">Rechts</button>
|
|
<button class="arrow-btn" data-arrow="bottom" title="Pfeil unten">Unten</button>
|
|
<button class="arrow-btn" data-arrow="left" title="Pfeil links">Links</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zeile 7: Pfeil-Details (nur sichtbar wenn Pfeil aktiv) -->
|
|
<div class="text-generator-row" id="arrowDetailsRow" style="display: none;">
|
|
<div class="text-input-group">
|
|
<label>Pfeil-Laenge:</label>
|
|
<input type="range" id="arrowLength" min="20" max="200" value="40">
|
|
<input type="number" id="arrowLengthNum" min="20" max="200" value="40" class="num-input">
|
|
<span class="num-unit">px</span>
|
|
</div>
|
|
<div class="text-input-group">
|
|
<label>Knick-Winkel:</label>
|
|
<input type="range" id="arrowAngle" min="-90" max="90" value="0">
|
|
<input type="number" id="arrowAngleNum" min="-90" max="90" value="0" class="num-input">
|
|
<span class="num-unit">°</span>
|
|
</div>
|
|
<div class="text-input-group">
|
|
<label>Knick-Position:</label>
|
|
<input type="range" id="arrowBend" min="0" max="100" value="50">
|
|
<input type="number" id="arrowBendNum" min="0" max="100" value="50" class="num-input">
|
|
<span class="num-unit">%</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zeile 7b: Pfeilspitzen-Details -->
|
|
<div class="text-generator-row" id="arrowDetailsRow2">
|
|
<div class="text-input-group">
|
|
<label>Spitzen-Breite:</label>
|
|
<input type="range" id="arrowSize" min="5" max="30" value="10">
|
|
<input type="number" id="arrowSizeNum" min="5" max="30" value="10" class="num-input">
|
|
<span class="num-unit">px</span>
|
|
</div>
|
|
<div class="text-input-group">
|
|
<label>Spitzen-Laenge:</label>
|
|
<input type="range" id="arrowTipLength" min="5" max="40" value="15">
|
|
<input type="number" id="arrowTipLengthNum" min="5" max="40" value="15" class="num-input">
|
|
<span class="num-unit">px</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Vorschau -->
|
|
<div class="text-generator-preview">
|
|
<div class="preview-label">Vorschau:</div>
|
|
<div class="preview-box" id="textPreview">
|
|
<!-- SVG Preview -->
|
|
</div>
|
|
<div class="preview-actions">
|
|
<button class="btn-action btn-copy" onclick="copyTextAsImage()" title="Als Bild kopieren">
|
|
Kopieren
|
|
</button>
|
|
<button class="btn-action btn-svg" onclick="downloadTextSVG()" title="SVG herunterladen">
|
|
SVG
|
|
</button>
|
|
<button class="btn-action btn-png" onclick="downloadTextPNG()" title="PNG herunterladen (transparent)">
|
|
PNG
|
|
</button>
|
|
<button class="btn-action btn-jpg" onclick="downloadTextJPG()" title="JPG herunterladen">
|
|
JPG
|
|
</button>
|
|
<button class="btn-action btn-dxf" onclick="downloadTextDXF()" title="DXF herunterladen">
|
|
DXF
|
|
</button>
|
|
<button class="btn-action btn-legend" onclick="addTextToLegend()" title="Zur Legende hinzufuegen">
|
|
Legende
|
|
</button>
|
|
<button class="btn-action btn-save" onclick="openSaveModal()" title="Als eigenes Symbol speichern">
|
|
Speichern
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Einzelner Pfeil (Standalone Arrow) -->
|
|
<div class="standalone-arrow-section">
|
|
<div class="section-header">
|
|
<h4>Einzelner Pfeil (ohne Text)</h4>
|
|
<span class="section-hint">Verwendet die gleichen Pfeil-Einstellungen</span>
|
|
</div>
|
|
<div class="standalone-arrow-content">
|
|
<div class="preview-box standalone-arrow-preview" id="standaloneArrowPreview">
|
|
<!-- Pfeil-SVG Preview -->
|
|
</div>
|
|
<div class="preview-actions">
|
|
<button class="btn-action btn-copy" onclick="copyStandaloneArrow()" title="Pfeil kopieren">
|
|
Kopieren
|
|
</button>
|
|
<button class="btn-action btn-svg" onclick="downloadStandaloneArrowSVG()" title="SVG">
|
|
SVG
|
|
</button>
|
|
<button class="btn-action btn-png" onclick="downloadStandaloneArrowPNG()" title="PNG">
|
|
PNG
|
|
</button>
|
|
<button class="btn-action btn-jpg" onclick="downloadStandaloneArrowJPG()" title="JPG">
|
|
JPG
|
|
</button>
|
|
<button class="btn-action btn-dxf" onclick="downloadStandaloneArrowDXF()" title="DXF">
|
|
DXF
|
|
</button>
|
|
<button class="btn-action btn-legend" onclick="addStandaloneArrowToLegend()" title="Zur Legende">
|
|
Legende
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- SUCHE & FILTER -->
|
|
<div class="search-container">
|
|
<div class="search-box">
|
|
<input type="text" id="searchInput" placeholder="Symbole suchen... (z.B. Schaden, Hydrant, Mast)">
|
|
<span class="search-icon">🔍</span>
|
|
</div>
|
|
|
|
<div class="filter-pills">
|
|
<button class="filter-pill active" data-filter="all">Alle</button>
|
|
<span class="filter-divider">|</span>
|
|
<span class="filter-label">Gutachten:</span>
|
|
<button class="filter-pill" data-filter="schaeden">Schadensarten</button>
|
|
<button class="filter-pill" data-filter="gutachten_kommunikation">Kommunikation</button>
|
|
<button class="filter-pill" data-filter="gutachten_parteien">Parteien</button>
|
|
<button class="filter-pill" data-filter="gutachten_versicherung">Versicherung</button>
|
|
<button class="filter-pill" data-filter="gutachten_gebaeude">Gebaeudeinfo</button>
|
|
<button class="filter-pill" data-filter="gutachten_schadendetails">Schadendetails</button>
|
|
<button class="filter-pill" data-filter="werkzeuge">Werkzeuge</button>
|
|
<button class="filter-pill" data-filter="bauteile">Bauteile</button>
|
|
<button class="filter-pill" data-filter="moebel">Moebel</button>
|
|
<button class="filter-pill" data-filter="bad">Bad</button>
|
|
<button class="filter-pill" data-filter="kueche">Kueche</button>
|
|
<button class="filter-pill" data-filter="pfeile">Pfeile</button>
|
|
<button class="filter-pill" data-filter="kompass">Kompass</button>
|
|
<span class="filter-divider">|</span>
|
|
<span class="filter-label">Regenwasser:</span>
|
|
<button class="filter-pill" data-filter="regenwasser">Regenwasser</button>
|
|
<span class="filter-divider">|</span>
|
|
<span class="filter-label">Vermessung:</span>
|
|
<button class="filter-pill" data-filter="vermessung_status">Status</button>
|
|
<button class="filter-pill" data-filter="vermessung_grenzen">Grenzen</button>
|
|
<button class="filter-pill" data-filter="vermessung_punkte">Punkte</button>
|
|
<button class="filter-pill" data-filter="vermessung_wasser">Wasser</button>
|
|
<button class="filter-pill" data-filter="vermessung_abwasser">Abwasser</button>
|
|
<button class="filter-pill" data-filter="vermessung_strom">Strom</button>
|
|
<button class="filter-pill" data-filter="vermessung_gas">Gas</button>
|
|
<button class="filter-pill" data-filter="vermessung_telekom">Telekom</button>
|
|
<button class="filter-pill" data-filter="vermessung_fernwaerme">Fernwaerme</button>
|
|
<button class="filter-pill" data-filter="vermessung_verkehr">Verkehr</button>
|
|
<button class="filter-pill" data-filter="vermessung_topografie">Topografie</button>
|
|
<span class="filter-divider">|</span>
|
|
<span class="filter-label">Eigene:</span>
|
|
<button class="filter-pill" data-filter="custom">Meine Symbole</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- SYMBOL-GRID -->
|
|
<main class="main-content">
|
|
<div class="symbol-grid" id="symbolGrid">
|
|
<!-- Symbole werden per JavaScript eingefuegt -->
|
|
</div>
|
|
</main>
|
|
|
|
<!-- LEGENDE MODAL -->
|
|
<div class="modal" id="legendModal">
|
|
<div class="modal-content modal-wide">
|
|
<div class="modal-header">
|
|
<h2>Legende bearbeiten</h2>
|
|
<button class="modal-close" onclick="closeLegendModal()">X</button>
|
|
</div>
|
|
<div class="modal-body legend-modal-body">
|
|
<div class="legend-editor">
|
|
<h3>Eintraege</h3>
|
|
<div class="legend-items" id="legendItems">
|
|
<!-- Legende-Eintraege werden per JavaScript eingefuegt -->
|
|
</div>
|
|
</div>
|
|
<div class="legend-preview-section">
|
|
<h3>Vorschau</h3>
|
|
<div class="legend-preview-box" id="legendPreviewBox">
|
|
<!-- Vorschau wird per JavaScript generiert -->
|
|
</div>
|
|
<div class="legend-preview-actions">
|
|
<button class="btn-action btn-copy" onclick="copyLegendAsImage()" title="Vorschau kopieren">Kopieren</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button class="btn-secondary" onclick="clearLegend()">Leeren</button>
|
|
<button class="btn-secondary" onclick="exportLegendSVG()">SVG</button>
|
|
<button class="btn-secondary" onclick="exportLegendPNG()">PNG</button>
|
|
<button class="btn-primary" onclick="closeLegendModal()">Schliessen</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- SAVE MODAL -->
|
|
<div class="modal" id="saveModal">
|
|
<div class="modal-content modal-small">
|
|
<div class="modal-header">
|
|
<h2>Symbol speichern</h2>
|
|
<button class="modal-close" onclick="closeSaveModal()">X</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="save-form">
|
|
<div class="form-group">
|
|
<label for="symbolName">Symbolname:</label>
|
|
<input type="text" id="symbolName" placeholder="z.B. Hinweis Wasserschaden">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="symbolDescription">Beschreibung (optional):</label>
|
|
<input type="text" id="symbolDescription" placeholder="Kurze Beschreibung...">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button class="btn-secondary" onclick="closeSaveModal()">Abbrechen</button>
|
|
<button class="btn-primary" onclick="saveCustomSymbol()">Speichern</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- IMPRESSUM MODAL -->
|
|
<div class="legal-modal" id="impressumModal" style="display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.5);z-index:9999;align-items:center;justify-content:center;">
|
|
<div style="background:white;width:90%;max-width:900px;height:90vh;border-radius:12px;margin:20px;overflow:hidden;display:flex;flex-direction:column;">
|
|
<div style="padding:0.75rem 1.5rem;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center;flex-shrink:0;">
|
|
<h2 style="margin:0;font-size:1.25rem;color:#1f2937;">Impressum</h2>
|
|
<button onclick="closeImpressum()" style="background:none;border:none;font-size:1.5rem;cursor:pointer;color:#6b7280;line-height:1;">×</button>
|
|
</div>
|
|
<iframe src="/legal/impressum.html" style="flex:1;width:100%;border:none;"></iframe>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- DATENSCHUTZ MODAL -->
|
|
<div class="legal-modal" id="datenschutzModal" style="display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.5);z-index:9999;align-items:center;justify-content:center;">
|
|
<div style="background:white;width:90%;max-width:900px;height:90vh;border-radius:12px;margin:20px;overflow:hidden;display:flex;flex-direction:column;">
|
|
<div style="padding:0.75rem 1.5rem;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center;flex-shrink:0;">
|
|
<h2 style="margin:0;font-size:1.25rem;color:#1f2937;">Datenschutz</h2>
|
|
<button onclick="closeDatenschutz()" style="background:none;border:none;font-size:1.5rem;cursor:pointer;color:#6b7280;line-height:1;">×</button>
|
|
</div>
|
|
<iframe src="/legal/datenschutz.html" style="flex:1;width:100%;border:none;"></iframe>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
function openImpressum(){document.getElementById("impressumModal").style.display="flex";}
|
|
function closeImpressum(){document.getElementById("impressumModal").style.display="none";}
|
|
function openDatenschutz(){document.getElementById("datenschutzModal").style.display="flex";}
|
|
function closeDatenschutz(){document.getElementById("datenschutzModal").style.display="none";}
|
|
document.addEventListener("keydown",function(e){if(e.key==="Escape"){closeImpressum();closeDatenschutz();}});
|
|
["impressumModal","datenschutzModal"].forEach(function(id){
|
|
var el=document.getElementById(id);
|
|
if(el)el.addEventListener("click",function(e){if(e.target===this)this.style.display="none";});
|
|
});
|
|
</script>
|
|
|
|
<!-- Symbol-Daten (max 300 Zeilen pro Datei) -->
|
|
<script src="js/symbols/index.js?v=2"></script>
|
|
<script src="js/symbols/schaeden.js?v=2"></script>
|
|
<script src="js/symbols/werkzeuge.js?v=2"></script>
|
|
<script src="js/symbols/bauteile.js?v=2"></script>
|
|
<script src="js/symbols/moebel.js?v=2"></script>
|
|
<script src="js/symbols/sanitaer.js?v=2"></script>
|
|
<script src="js/symbols/gutachten.js?v=2"></script>
|
|
<script src="js/symbols/regenwasser.js?v=2"></script>
|
|
<script src="js/symbols/vermessung.js?v=2"></script>
|
|
<script src="js/symbols/vermessung-infra.js?v=2"></script>
|
|
<script src="js/symbols/vermessung-topo.js?v=2"></script>
|
|
<script src="js/symbols/vermessung-ergaenzung.js?v=2"></script>
|
|
<script src="js/symbols/init.js?v=2"></script>
|
|
<script src="lib/svg.min.js"></script>
|
|
|
|
<!-- App Module (max 300 Zeilen pro Datei) -->
|
|
<script src="js/app/utils.js?v=1"></script>
|
|
<script src="js/app/dxf.js?v=1"></script>
|
|
<script src="js/app/path-parser.js?v=1"></script>
|
|
<script src="js/app/core.js?v=1"></script>
|
|
<script src="js/app/export.js?v=1"></script>
|
|
<script src="js/app/legend.js?v=1"></script>
|
|
<script src="js/app/legend-export.js?v=1"></script>
|
|
<script src="js/app/custom.js?v=1"></script>
|
|
|
|
<!-- Text-Generator Module -->
|
|
<script src="js/text-generator/state.js?v=1"></script>
|
|
<script src="js/text-generator/svg-generator.js?v=7"></script>
|
|
<script src="js/text-generator/ui-bindings.js?v=4"></script>
|
|
<script src="js/text-generator/export.js?v=1"></script>
|
|
<script>document.addEventListener("DOMContentLoaded", function() { UiBindings.init(); });</script>
|
|
</body>
|
|
</html>
|