File size: 4,119 Bytes
bcc43d3
 
 
 
 
d3b2fdc
 
bcc43d3
d3b2fdc
bcc43d3
 
d3b2fdc
 
 
 
 
 
 
87a6e43
d3b2fdc
 
 
 
 
 
 
 
87a6e43
d3b2fdc
 
 
 
87a6e43
d3b2fdc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87a6e43
d3b2fdc
 
87a6e43
d3b2fdc
 
 
 
 
 
 
 
87a6e43
 
d3b2fdc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87a6e43
d3b2fdc
87a6e43
d3b2fdc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87a6e43
 
bcc43d3
87a6e43
d3b2fdc
bcc43d3
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PyStructure Studio</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
    <script src="https://unpkg.com/konva@9/konva.min.js"></script>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
</head>
<body>
    
    <!-- Left Sidebar / Navigation -->
    <div class="sidebar">
        <div class="brand">
            <div class="logo-square"></div>
            PyStructure
        </div>

        <nav class="nav-menu">
            <button class="nav-item active" onclick="switchTab('visualizer')">
                <span class="icon">🕸️</span> Visualizer
            </button>
            <button class="nav-item" onclick="switchTab('dataset')">
                <span class="icon">💾</span> Dataset Manager
            </button>
        </nav>

        <div class="sidebar-footer">
            <div id="statusIndicator" class="status-ready">System Ready</div>
        </div>
    </div>

    <!-- Main Content Area -->
    <div class="main-content">
        
        <!-- Tab 1: Visualizer -->
        <div id="tab-visualizer" class="tab-pane active">
            <div class="editor-panel">
                <div class="panel-header">Source Code</div>
                <textarea id="codeInput" spellcheck="false">
def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr
                </textarea>
                <div class="action-bar">
                    <button class="btn btn-primary" onclick="visualize()">Run Graph</button>
                    <button class="btn btn-secondary" onclick="addToDataset()">+ Add to Dataset</button>
                </div>
            </div>
            <div class="canvas-panel" id="container"></div>
        </div>

        <!-- Tab 2: Dataset Manager -->
        <div id="tab-dataset" class="tab-pane">
            <div class="dataset-header">
                <h2>Captured Data</h2>
                <div class="header-actions">
                    <button class="btn btn-outline" onclick="loadDatasetTable()">🔄 Refresh</button>
                    <a href="/dataset/download" class="btn btn-outline" target="_blank">⬇ Download JSONL</a>
                    <button class="btn btn-primary" onclick="openUploadModal()">☁ Upload to HF Hub</button>
                </div>
            </div>
            
            <div class="table-container">
                <table class="data-table">
                    <thead>
                        <tr>
                            <th>ID</th>
                            <th>Timestamp</th>
                            <th>Nodes</th>
                            <th>Snippet</th>
                        </tr>
                    </thead>
                    <tbody id="datasetTableBody">
                        <!-- Populated by JS -->
                    </tbody>
                </table>
            </div>
        </div>
    </div>

    <!-- Upload Modal -->
    <div id="uploadModal" class="modal-overlay hidden">
        <div class="modal">
            <h3>Upload to Hugging Face</h3>
            <p>Push your <code>dataset.jsonl</code> to the Hub.</p>
            
            <label>HF Token (Write Access)</label>
            <input type="password" id="hfToken" placeholder="hf_...">
            
            <label>Repository ID</label>
            <input type="text" id="hfRepo" placeholder="username/dataset-name">
            
            <div class="modal-actions">
                <button class="btn btn-secondary" onclick="closeUploadModal()">Cancel</button>
                <button class="btn btn-primary" onclick="performUpload()">Push to Hub</button>
            </div>
        </div>
    </div>

    <script src="{{ url_for('static', filename='js/main.js') }}"></script>
</body>
</html>