-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathindex.html
More file actions
445 lines (392 loc) · 19.8 KB
/
index.html
File metadata and controls
445 lines (392 loc) · 19.8 KB
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
<!--
GITHUB PAGES COMPATIBILITY NOTES:
This index.html file is automatically modified during GitHub Pages deployment to ensure static hosting compatibility.
Complex JavaScript features (ES6 modules, server-side integrations) are stripped using PowerShell processing
during the deployment workflow to provide a reliable documentation experience on GitHub Pages.
POWERSHELL STRIPPING PROCESS:
- Removes ES6 modules (<script type="module">) and server-dependent JavaScript features
- Strips learning progress tracking, kata systems, and advanced interactive components
- Preserves essential Docsify functionality (navigation, search, basic plugins) and all CSS styling
- Uses robust PowerShell regex processing with UTF8 encoding for international character support
- Provides detailed validation and file size reduction metrics during deployment
LOCAL TESTING:
Run '.\scripts\Strip-GHPagesJS.ps1' to test the stripping process locally on Windows/Linux
This helps developers validate GitHub Pages compatibility before pushing changes.
DEPLOYMENT FEATURES:
- Available on GitHub Pages: markdown navigation, search, CSS, basic Docsify plugins
- Removed for compatibility: progress tracking, advanced plugins, mermaid diagrams, interactive features
MAINTENANCE:
Update PowerShell regex patterns in .github/workflows/pages-deploy.yml and scripts/Strip-GHPagesJS.ps1
when adding new complex JavaScript features to ensure proper stripping for GitHub Pages compatibility.
For full interactive functionality, use the main hosted version with complete feature set.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Edge AI Platform Documentation</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="Comprehensive documentation for the Edge AI platform, featuring Azure IoT Operations, Arc-enabled Kubernetes, and infrastructure as code solutions.">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ======================================== -->
<!-- FAVICON -->
<!-- ======================================== -->
<link rel="icon" href="assets/logo.png" type="image/png">
<!-- ======================================== -->
<!-- FONT PRELOADING FOR PERFORMANCE -->
<!-- ======================================== -->
<!-- Preload critical fonts -->
<link rel="preload" href="https://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" as="font" type="font/woff2" crossorigin="anonymous">
<!-- ======================================== -->
<!-- EXTERNAL CSS DEPENDENCIES -->
<!-- ======================================== -->
<!-- Docsify core theme -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">
<!-- Material Design Icons for UI components with font-display optimization -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@6.9.96/css/materialdesignicons.min.css" crossorigin="anonymous">
<!-- ======================================== -->
<!-- THEME & FOUNDATION STYLES -->
<!-- ======================================== -->
<!-- CSS variables and theme foundation -->
<link rel="stylesheet" href="docs/assets/css/theme/variables.css">
<!-- Main application styles -->
<link rel="stylesheet" href="docs/assets/css/main.css">
<!-- Interactive checkboxes styles -->
<link rel="stylesheet" href="docs/assets/css/interactive-checkboxes.css">
<!-- Learning path header styles -->
<link rel="stylesheet" href="docs/assets/css/components/learning-path-headers.css">
<!-- Learning paths dashboard cards -->
<link rel="stylesheet" href="docs/assets/css/components/learning-paths-cards.css">
<!-- Interactive progress styles -->
<link rel="stylesheet" href="docs/assets/css/components/interactive-progress.css">
<!-- Self-evaluation forms and skill assessment styles -->
<link rel="stylesheet" href="docs/assets/css/features/self-evaluation-forms.css">
<!-- Assessment completion modal styles -->
<link rel="stylesheet" href="docs/assets/css/features/assessment-completion-modal.css">
</head>
<body>
<div id="app">Loading documentation...</div>
<!-- ======================================== -->
<!-- DOCSIFY CONFIGURATION -->
<!-- ======================================== -->
<script>
window.$docsify = {
name: 'Edge AI Platform',
repo: '',
loadSidebar: true,
loadNavbar: true,
subMaxLevel: 4, // Keep for right-side TOC functionality
auto2top: false, // Handled by our scroll manager
maxLevel: 4,
homepage: 'docs/README.md',
notFoundPage: 'docs/_404.md',
relativePath: true,
basePath: '/',
alias: {
// Sidebar routing - specific paths first, then wildcards
'/src/_sidebar.md': '/docs/_parts/infrastructure-sidebar.md',
'/learning/_sidebar.md': '/docs/_parts/learning-sidebar.md',
'/blueprints/_sidebar.md': '/docs/_parts/blueprints-sidebar.md',
'/docs/_sidebar.md': '/docs/_parts/docs-sidebar.md',
'/copilot/_sidebar.md': '/docs/_parts/copilot-sidebar.md',
'/.github/_sidebar.md': '/docs/_parts/copilot-sidebar.md',
// Sidebar routing - wildcard patterns for nested paths
'/src/.*/_sidebar.md': '/docs/_parts/infrastructure-sidebar.md',
'/learning/.*/_sidebar.md': '/docs/_parts/learning-sidebar.md',
'/blueprints/.*/_sidebar.md': '/docs/_parts/blueprints-sidebar.md',
'/docs/.*/_sidebar.md': '/docs/_parts/docs-sidebar.md',
'/tests/.*/_sidebar.md': '/docs/_parts/infrastructure-sidebar.md',
'/scripts/.*/_sidebar.md': '/docs/_parts/infrastructure-sidebar.md',
'/copilot/.*/_sidebar.md': '/docs/_parts/copilot-sidebar.md',
'/.github/.*/_sidebar.md': '/docs/_parts/copilot-sidebar.md',
// Default fallback sidebar
'/_sidebar.md': '/docs/_parts/home-sidebar.md',
// Navigation and content aliases
'/learning/_navbar.md': '/docs/_parts/_navbar.md',
'/blueprints/_navbar.md': '/docs/_parts/_navbar.md',
'/src/_navbar.md': '/docs/_parts/_navbar.md',
'/docs/_navbar.md': '/docs/_parts/_navbar.md',
'/copilot/_navbar.md': '/docs/_parts/_navbar.md',
'/.github/_navbar.md': '/docs/_parts/_navbar.md',
// Navbar routing - wildcard patterns for nested paths
'/learning/.*/_navbar.md': '/docs/_parts/_navbar.md',
'/blueprints/.*/_navbar.md': '/docs/_parts/_navbar.md',
'/src/.*/_navbar.md': '/docs/_parts/_navbar.md',
'/docs/.*/_navbar.md': '/docs/_parts/_navbar.md',
'/tests/.*/_navbar.md': '/docs/_parts/_navbar.md',
'/scripts/.*/_navbar.md': '/docs/_parts/_navbar.md',
'/copilot/.*/_navbar.md': '/docs/_parts/_navbar.md',
'/.github/.*/_navbar.md': '/docs/_parts/_navbar.md',
'/_navbar.md': '/docs/_parts/_navbar.md',
'/_404.md': '/docs/_parts/_404.md',
'/_sidebar.md': '/docs/_parts/_sidebar.md',
'/_footer.md': '/docs/_parts/_footer.md',
// README redirects
'/README.md': '/docs/README.md',
'/README': '/docs/README.md',
'/docs/index.md': '/docs/README.md',
'/docs/index': '/docs/README.md',
// Documentation section index redirects
'/docs/getting-started/index.md': '/docs/getting-started/README.md',
'/docs/getting-started/index': '/docs/getting-started/README.md',
'/docs/contributing/index.md': '/docs/contributing/README.md',
'/docs/contributing/index': '/docs/contributing/README.md',
'/docs/observability/index.md': '/docs/observability/README.md',
'/docs/observability/index': '/docs/observability/README.md',
'/docs/build-cicd/index.md': '/docs/build-cicd/README.md',
'/docs/build-cicd/index': '/docs/build-cicd/README.md',
'/docs/project-planning/index.md': '/docs/project-planning/README.md',
'/docs/project-planning/index': '/docs/project-planning/README.md',
'/docs/solution-adr-library/index.md': '/docs/solution-adr-library/README.md',
'/docs/solution-adr-library/index': '/docs/solution-adr-library/README.md',
'/docs/solution-security-plan-library/index.md': '/docs/solution-security-plan-library/README.md',
'/docs/solution-security-plan-library/index': '/docs/solution-security-plan-library/README.md',
'/docs/solution-technology-paper-library/index.md': '/docs/solution-technology-paper-library/README.md',
'/docs/solution-technology-paper-library/index': '/docs/solution-technology-paper-library/README.md'
},
search: {
maxAge: 86400000, // 24 hours - reduce reindex frequency
paths: [
'/docs/',
'/learning/'
],
placeholder: 'Search documentation...',
noData: 'No Results!',
depth: 3, // Reduced from 6 to limit index size
hideOtherSidebarContent: false,
namespace: 'edge-ai-docs-v2', // New namespace to clear old problematic index
// Additional options to reduce index size
startWithKeywords: true,
ignoreAccents: true
},
toc: {
tocMaxLevel: 4,
target: 'h1, h2, h3, h4',
ignoreHeaders: ['<!-- {docsify-ignore} -->', '<!-- {docsify-ignore-all} -->']
},
breadcrumb: {
showHome: true,
homeText: '🏠 Home',
separator: ' › ',
casing: 'capitalize'
},
pagination: {
previousText: '← Previous',
nextText: 'Next →',
crossChapter: true,
crossChapterText: true
},
mermaid: {
theme: 'default',
themeCSS: '.label { font-family: Source Sans Pro,Helvetica Neue,Arial,sans-serif; }',
startOnLoad: true,
flowchart: {
useMaxWidth: true
}
},
scrollToTop: {
auto: false,
text: 'Top',
right: 15,
bottom: 15,
offset: 500
},
// Prevent querySelector errors from hash-based navigation
plugins: [
// Task list renderer - process raw markdown BEFORE Docsify parsing
function (hook, vm) {
hook.beforeEach(function(content) {
// Convert unchecked: - [ ] → - <input type="checkbox">
content = content.replace(
/^(\s*)-\s+\[\s*\]\s+(.+)$/gm,
'$1- <input type="checkbox"> $2'
);
// Convert checked: - [x] → - <input type="checkbox" checked>
content = content.replace(
/^(\s*)-\s+\[x\]\s+(.+)$/gim,
'$1- <input type="checkbox" checked> $2'
);
return content;
});
},
function (hook, vm) {
hook.init(function () {
// Wrap document.querySelector to handle invalid selectors gracefully
const originalQuerySelector = document.querySelector.bind(document);
const originalQuerySelectorAll = document.querySelectorAll.bind(document);
// Override document.querySelector (not prototype)
document.querySelector = function (selector) {
try {
// Validate selector before attempting query
if (typeof selector === 'string') {
// Check for invalid characters in selector
if (selector.includes('#/') || selector.match(/^#[^a-zA-Z_-]/)) {
console.debug('[Docsify] Skipping invalid selector:', selector);
return null;
}
}
return originalQuerySelector(selector);
} catch (e) {
console.debug('[Docsify] Invalid selector caught:', selector, e.message);
return null;
}
};
// Override document.querySelectorAll for consistency
document.querySelectorAll = function (selector) {
try {
if (typeof selector === 'string') {
if (selector.includes('#/') || selector.match(/^#[^a-zA-Z_-]/)) {
console.debug('[Docsify] Skipping invalid selector:', selector);
return document.createDocumentFragment().querySelectorAll('*'); // Empty NodeList
}
}
return originalQuerySelectorAll(selector);
} catch (e) {
console.debug('[Docsify] Invalid selector caught:', selector, e.message);
return document.createDocumentFragment().querySelectorAll('*'); // Empty NodeList
}
};
});
},
// Auto-scroll to top on route changes (loads before Docsify initializes)
function (hook, vm) {
let previousRoute = '';
hook.doneEach(function() {
const currentRoute = vm.route.path;
const currentHash = window.location.hash;
// Only scroll to top on actual route changes, not anchor navigation
const isRouteChange = previousRoute && previousRoute !== currentRoute;
const isAnchorOnly = currentHash && currentHash.includes('#') &&
!currentHash.startsWith('#/');
if (isRouteChange && !isAnchorOnly) {
requestAnimationFrame(function() {
window.scrollTo({ top: 0, left: 0, behavior: 'auto' });
document.documentElement.scrollTop = 0;
document.body.scrollTop = 0;
});
}
previousRoute = currentRoute;
});
},
// Clear stale TOC entries before new page renders
function (hook, vm) {
hook.beforeEach(function(content) {
// Clear TOC container to prevent phantom entries
const tocContainer = document.querySelector('.page_toc');
if (tocContainer) {
tocContainer.innerHTML = '';
}
return content;
});
},
// Handle TOC anchor link clicks for smooth scrolling
function (hook, vm) {
hook.doneEach(function() {
// Small delay to ensure TOC is fully rendered
setTimeout(function() {
const tocLinks = document.querySelectorAll('.page_toc a[href^="#"]');
tocLinks.forEach(function(link) {
// Remove any existing listeners to avoid duplicates
const newLink = link.cloneNode(true);
link.parentNode.replaceChild(newLink, link);
newLink.addEventListener('click', function(e) {
e.preventDefault();
const href = this.getAttribute('href');
// Extract anchor ID from href
let anchorId = '';
if (href.includes('?id=')) {
// Format: #/path?id=anchor-id
anchorId = href.split('?id=')[1];
} else if (href.startsWith('#')) {
// Format: #anchor-id
anchorId = href.substring(1);
}
if (anchorId) {
// Find target element by ID
const target = document.getElementById(anchorId);
if (target) {
// Update URL to include anchor
const currentPath = vm.route.path;
const newHash = '#' + currentPath + '?id=' + anchorId;
window.history.pushState(null, null, newHash);
// Scroll to target (use 'center' to match TOC manager's priority zone)
target.scrollIntoView({ behavior: 'smooth', block: 'center' });
// Force TOC chevron update after scroll completes
setTimeout(function() {
if (window.tocManager && typeof window.tocManager.forceUpdate === 'function') {
window.tocManager.forceUpdate();
}
}, 500);
}
}
});
});
}, 100);
});
}
]
};
</script>
<!-- ======================================== -->
<!-- DOCSIFY CORE & ESSENTIAL PLUGINS -->
<!-- ======================================== -->
<!-- Docsify framework core -->
<script src="https://cdn.jsdelivr.net/npm/docsify@4"></script>
<!-- Essential Docsify plugins -->
<script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/docsify-copy-code@2"></script>
<script src="https://cdn.jsdelivr.net/npm/docsify-pagination@2/dist/docsify-pagination.min.js"></script>
<!-- ======================================== -->
<!-- SEARCH ENHANCEMENTS -->
<!-- ======================================== -->
<!-- Search integration and enhancements (load after search plugin) -->
<script src="docs/assets/js/docsify/search-integration.js"></script>
<!-- ======================================== -->
<!-- EXTERNAL LIBRARY DEPENDENCIES -->
<!-- ======================================== -->
<!-- Diagram rendering -->
<script src="https://unpkg.com/mermaid@latest/dist/mermaid.min.js"></script>
<!-- Custom mermaid integration with advanced features and error handling -->
<script src="docs/assets/js/docsify/mermaid-integration.js"></script>
<!-- Table of Contents plugin -->
<script src="https://unpkg.com/docsify-plugin-toc@1.3.1/dist/docsify-plugin-toc.min.js"></script>
<!-- YAML parser for frontmatter processing -->
<script src="https://unpkg.com/js-yaml@4.1.0/dist/js-yaml.min.js"></script>
<!-- Scroll to top functionality -->
<script src="https://cdn.jsdelivr.net/npm/docsify-scroll-to-top@1.0.1/dist/docsify-scroll-to-top.min.js"></script>
<!-- ======================================== -->
<!-- KATA TRACKER SYSTEM - ES6 MODULES -->
<!-- ======================================== -->
<!-- Main application entry point - loads all ES6 modules -->
<script type="module" src="docs/assets/js/main.js"></script>
<!-- ======================================== -->
<!-- DOCSIFY PLUGINS & ENHANCEMENTS -->
<!-- ======================================== -->
<!-- Content processing plugins -->
<script src="docs/assets/js/plugins/custom-breadcrumb-plugin.js"></script>
<script src="docs/assets/js/plugins/prevent-sidebar-toc.js"></script>
<!-- TOC highlighting and auto-scroll manager -->
<script src="docs/assets/js/features/toc-chevron-manager.js"></script>
<script src="docs/assets/js/plugins/learning-progress-tracker-plugin.js"></script>
<script type="module" src="docs/assets/js/features/assessment-completion-modal.js"></script>
<script type="module" src="docs/assets/js/features/assessment-path-generator.js"></script>
<script src="docs/assets/js/plugins/skill-assessment-plugin.js"></script>
<script type="module" src="docs/assets/js/features/skill-assessment-form.js"></script>
<script src="docs/assets/js/plugins/learning-path-card-plugin.js"></script>
<script type="module" src="docs/assets/js/plugins/learning-path-dashboard.js"></script>
<!-- Auto-insert dashboard container based on frontmatter -->
<script src="docs/assets/js/features/learning-dashboard-auto-insert.js"></script>
<script src="docs/assets/js/plugins/interactive-progress-docsify-integration.js"></script>
<!-- Catalog hydration plugin for My Learning selections -->
<script src="docs/assets/js/plugins/catalog-hydration.js"></script>
<!-- Frontmatter plugin MUST load last to process content after all other plugins -->
<script src="docs/assets/js/plugins/docsify-frontmatter-plugin.js"></script>
<!-- ======================================== -->
<!-- UI FOUNDATION & THEMING -->
<!-- ======================================== -->
<!-- Core UI theme system -->
<script src="docs/assets/js/docsify/dark-mode.js"></script>
<!-- Navigation enhancement features (Docsify-specific) -->
<script src="docs/assets/js/docsify/navbar-highlighting.js"></script>
</body>
</html>