diff --git a/Maintenance/test_handling/Summary_Script.js b/Maintenance/test_handling/Summary_Script.js new file mode 100644 index 00000000000..67d49d75215 --- /dev/null +++ b/Maintenance/test_handling/Summary_Script.js @@ -0,0 +1,254 @@ +const $mainContainer = $('#main_container'); +const $platformContainer = $('#platform_container'); +const $packageContainer = $('#package_container'); +let release = ""; +let packages = []; + +function getAllTestDirectories(data) { + return data.platforms.flatMap(platform => platform.test_directories.map(directory => directory.test_directory)); +} + +function clearPackagesOptions() { + $('#packagesSelector option').each(function() { + if ($(this).val() !== 'all' && !packages.includes($(this).val())) { + $(this).remove(); + } + }); +} + +function filterByPlatform(platform) { + const $packageSelector = $('#packagesSelector'); + $packageSelector.prop('disabled', platform !== 'all'); + $platformContainer.find('.platform').each(function() { + const $this = $(this); + if (platform === 'all' || $this.hasClass(platform)) { + $this.show(); + } else { + $this.hide(); + } + }); +} + +function filterByPackage(package) { + const $platformSelector = $('#platformSelector'); + const $packageContainers = $packageContainer.find('.package'); + if (package === 'all') { + $platformSelector.prop('disabled', false); + $platformContainer.show(); + $packageContainer.hide(); + } else { + $platformSelector.prop('disabled', true); + $platformContainer.hide(); + $packageContainer.show(); + } + $packageContainers.each(function() { + const $this = $(this); + if (package === 'all' || $this.hasClass(package)) { + $this.show(); + } else { + $this.hide(); + } + }); +} + +function filterByLetter(letter) { + const $letterContainers = $mainContainer.find('.letter_container'); + $letterContainers.each(function() { + const $this = $(this); + if (letter === 'all' || $this.hasClass(letter)) { + $this.show(); + } else { + $this.hide(); + } + if ($this.children().length <= 2) { + $this.hide(); + } + }); +} + +function search() { + const searchTerm = $('#searchInput').val().toLowerCase(); + const releaseType = $('#releaseSelector').val(); + const $resultsContainer = $('#searchResults'); + $resultsContainer.empty(); + + if (!searchTerm) { + $resultsContainer.append('

Please enter a search term.

'); + return; + } + + const matchingDirectories = []; + + window.data.platforms.forEach(platform => { + platform.test_directories.forEach(directory => { + if (directory.content.toLowerCase().includes(searchTerm)) { + matchingDirectories.push({ + test_directory: directory.test_directory, + platform_name: platform.name + }); + } + }); + }); + + if (matchingDirectories.length === 0) { + $resultsContainer.append('

No matching directories found.

'); + } else { + matchingDirectories.forEach(match => { + const link = `${window.data.release}/${match.test_directory}/TestReport_${match.platform_name}.gz`; + $resultsContainer.append(`

${match.platform_name} - ${match.test_directory} - ${window.data.release}

`); + }); + } +} + +function packageContainer(platforms) { + const testDirectories = {}; + + platforms.forEach(platform => { + platform.test_directories.forEach(testDir => { + if (!testDirectories[testDir.test_directory]) { + testDirectories[testDir.test_directory] = {}; + } + if (!testDirectories[testDir.test_directory][testDir.letters]) { + testDirectories[testDir.test_directory][testDir.letters] = []; + } + testDirectories[testDir.test_directory][testDir.letters].push({ + platformName: platform.name, + content: testDir.content + }); + }); + }); + + for (const [testDirectory, letters] of Object.entries(testDirectories)) { + const $container = $('
', { class: 'package ' + testDirectory }).appendTo($packageContainer); + $('

').text(testDirectory).appendTo($container); + + for (const [letter, platformDetails] of Object.entries(letters)) { + const $letterContainer = $('
', { + class: 'letter_container ' + letter, + }).appendTo($container); + $('

').text(letter).appendTo($letterContainer); + + platformDetails.forEach(detail => { + const { platformName, content } = detail; + + const $platformContainer = $('
', { class: 'platform-container' }).appendTo($letterContainer); + + const $platformLink = $('', { + href: `${release}/${testDirectory}/TestReport_${platformName}.gz`, + text: platformName, + class: 'platform-link' + }).appendTo($platformContainer); + + const $contentSpan = $('
', {
+                    text: content,
+                    class: 'summary-content',
+                    css: { display: 'none' }
+                }).appendTo($letterContainer);
+
+                if (content.length > 0) {
+                    const $toggleButton = $('