annotate COBRAxy/docs/index.html @ 542:fcdbc81feb45 draft

Uploaded
author francesco_lapi
date Sun, 26 Oct 2025 19:27:41 +0000
parents 4ed95023af20
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
492
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
1 <!DOCTYPE html>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
2 <html lang="en">
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
3 <head>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
4 <meta charset="UTF-8">
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
5 <title>COBRAxy Documentation</title>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
6 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
7 <meta name="description" content="COBRAxy - A Python toolkit for metabolic flux analysis and visualization">
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
8 <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
9 <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/dark.css">
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
10 <style>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
11 :root {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
12 --theme-color: #4CAF50;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
13 --text-color-base: #e1e4e8;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
14 --background-color: #0d1117;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
15 --sidebar-background: #161b22;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
16 --code-background: #21262d;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
17 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
18
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
19 body {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
20 background-color: var(--background-color);
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
21 color: var(--text-color-base);
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
22 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
23
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
24 .sidebar {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
25 background-color: var(--sidebar-background);
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
26 border-right: 1px solid #30363d;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
27 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
28
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
29 .sidebar-nav a {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
30 color: var(--text-color-base);
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
31 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
32
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
33 .sidebar-nav a:hover {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
34 color: var(--theme-color);
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
35 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
36
542
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
37 /* Main category styling - bold and larger */
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
38 .sidebar-nav > ul > li > a,
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
39 .sidebar-nav > ul > li > strong > a {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
40 font-weight: 700 !important;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
41 font-size: 1.1em !important;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
42 color: var(--theme-color) !important;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
43 text-transform: uppercase;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
44 letter-spacing: 0.5px;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
45 margin-top: 1em;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
46 display: block;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
47 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
48
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
49 /* Sub-items styling - normal weight and smaller */
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
50 .sidebar-nav > ul > li > ul > li > a {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
51 font-weight: 400 !important;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
52 font-size: 0.95em !important;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
53 color: var(--text-color-base) !important;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
54 padding-left: 1.5em;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
55 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
56
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
57 /* Collapsible arrows */
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
58 .sidebar-nav > ul > li.folder > a::before {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
59 content: '▶';
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
60 display: inline-block;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
61 margin-right: 0.5em;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
62 transition: transform 0.2s;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
63 font-size: 0.7em;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
64 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
65
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
66 .sidebar-nav > ul > li.folder.open > a::before {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
67 transform: rotate(90deg);
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
68 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
69
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
70 /* Hide sub-items by default */
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
71 .sidebar-nav > ul > li.folder > ul {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
72 display: none;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
73 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
74
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
75 .sidebar-nav > ul > li.folder.open > ul {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
76 display: block;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
77 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
78
492
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
79 .app-name-link {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
80 color: var(--theme-color) !important;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
81 font-weight: 600;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
82 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
83
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
84 .app-name img {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
85 max-height: 50px;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
86 max-width: 250px;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
87 margin-right: 10px;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
88 vertical-align: middle;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
89 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
90
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
91 .sidebar > h1 > img {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
92 max-height: 50px;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
93 width: auto;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
94 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
95
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
96 .markdown-section {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
97 background-color: var(--background-color);
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
98 color: var(--text-color-base);
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
99 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
100
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
101 .markdown-section code {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
102 background-color: var(--code-background);
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
103 color: #f0f6fc;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
104 border-radius: 6px;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
105 padding: 0.2em 0.4em;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
106 border: 1px solid #30363d;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
107 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
108
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
109 .markdown-section pre {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
110 background-color: var(--code-background);
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
111 border: 1px solid #30363d;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
112 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
113
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
114 .markdown-section pre > code {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
115 background-color: var(--code-background);
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
116 color: #f0f6fc;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
117 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
118
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
119 .markdown-section table {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
120 border-collapse: collapse;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
121 border: 1px solid #30363d;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
122 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
123
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
124 .markdown-section th,
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
125 .markdown-section td {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
126 border: 1px solid #30363d;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
127 background-color: var(--code-background);
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
128 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
129
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
130 .markdown-section th {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
131 background-color: #21262d;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
132 font-weight: 600;
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
133 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
134 </style>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
135 </head>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
136 <body>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
137 <div id="app"></div>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
138 <script>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
139 window.$docsify = {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
140 name: 'COBRAxy',
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
141 logo: './_media/logo.png',
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
142 loadSidebar: true,
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
143 loadNavbar: false,
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
144 subMaxLevel: 3,
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
145 auto2top: true,
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
146
542
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
147 // Sidebar configuration
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
148 alias: {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
149 '/.*/_sidebar.md': '/_sidebar.md'
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
150 },
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
151 sidebarDisplayLevel: 1, // Expand sidebar to level 1 by default
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
152
492
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
153 // Search plugin
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
154 search: {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
155 maxAge: 86400000, // Expiration time, the default one day
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
156 paths: 'auto',
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
157 placeholder: 'Search documentation...',
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
158 noData: 'No results found.',
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
159 depth: 3
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
160 },
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
161
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
162 // Copy code plugin
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
163 copyCode: {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
164 buttonText: 'Copy',
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
165 errorText: 'Error',
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
166 successText: 'Copied'
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
167 },
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
168
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
169 // Zoom image plugin
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
170 zoom: {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
171 selector: '.medium-zoom-image',
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
172 delay: 1000,
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
173 options: {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
174 bgColor: 'rgba(0,0,0,0.8)',
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
175 zIndex: 99999
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
176 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
177 },
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
178
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
179 // Tabs plugin
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
180 tabs: {
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
181 persist: true,
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
182 sync: true,
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
183 theme: 'classic',
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
184 tabComments: true,
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
185 tabHeadings: true
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
186 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
187 }
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
188 </script>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
189
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
190 <!-- Core Docsify -->
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
191 <script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
192
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
193 <!-- Search plugin -->
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
194 <script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
195
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
196 <!-- Copy code plugin -->
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
197 <script src="//cdn.jsdelivr.net/npm/docsify-copy-code@2"></script>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
198
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
199 <!-- Zoom image plugin -->
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
200 <script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/zoom-image.min.js"></script>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
201
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
202 <!-- Tabs plugin -->
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
203 <script src="//cdn.jsdelivr.net/npm/docsify-tabs@1"></script>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
204
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
205 <!-- Code syntax highlighting -->
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
206 <script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-bash.min.js"></script>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
207 <script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-python.min.js"></script>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
208 <script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-yaml.min.js"></script>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
209 <script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-xml.min.js"></script>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
210 <script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-json.min.js"></script>
542
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
211
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
212 <!-- Sidebar collapse script -->
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
213 <script>
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
214 window.addEventListener('load', function() {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
215 // Wait for sidebar to be rendered
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
216 setTimeout(function() {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
217 const sidebar = document.querySelector('.sidebar-nav');
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
218 if (!sidebar) return;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
219
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
220 // Mark items with sub-lists as folders
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
221 const items = sidebar.querySelectorAll('ul > li');
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
222 items.forEach(item => {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
223 const hasSublist = item.querySelector('ul');
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
224 if (hasSublist) {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
225 item.classList.add('folder');
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
226
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
227 // Get the main link
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
228 const mainLink = item.querySelector('a');
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
229 if (mainLink) {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
230 // Create a toggle button for the arrow
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
231 const arrow = mainLink.querySelector('::before') || mainLink;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
232
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
233 // Add click handler that allows navigation but also toggles on second click
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
234 let clickCount = 0;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
235 let clickTimer = null;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
236
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
237 mainLink.addEventListener('click', function(e) {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
238 clickCount++;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
239
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
240 if (clickCount === 1) {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
241 // First click: navigate to the page
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
242 clickTimer = setTimeout(function() {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
243 clickCount = 0;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
244 }, 300);
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
245 // Don't prevent default, allow navigation
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
246 item.classList.add('open');
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
247 } else if (clickCount === 2) {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
248 // Second click: toggle the folder
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
249 clearTimeout(clickTimer);
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
250 clickCount = 0;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
251 e.preventDefault();
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
252 item.classList.toggle('open');
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
253 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
254 });
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
255 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
256 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
257 });
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
258
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
259 // Open the active section by default
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
260 const activeLink = sidebar.querySelector('li.active');
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
261 if (activeLink) {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
262 let parent = activeLink.parentElement;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
263 while (parent && parent.tagName === 'UL') {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
264 const parentLi = parent.parentElement;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
265 if (parentLi && parentLi.classList.contains('folder')) {
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
266 parentLi.classList.add('open');
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
267 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
268 parent = parentLi ? parentLi.parentElement : null;
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
269 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
270 }
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
271 }, 300);
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
272 });
fcdbc81feb45 Uploaded
francesco_lapi
parents: 492
diff changeset
273 </script>
492
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
274 </body>
4ed95023af20 Uploaded
francesco_lapi
parents:
diff changeset
275 </html>