adjust styles
This commit is contained in:
		
							parent
							
								
									0667180da5
								
							
						
					
					
						commit
						8540687b47
					
				@ -213,6 +213,14 @@ const sortedTags = Object.entries(tagFrequency)
 | 
				
			|||||||
      tagCloudToggle.style.display = hasHiddenTags ? 'block' : 'none';
 | 
					      tagCloudToggle.style.display = hasHiddenTags ? 'block' : 'none';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    // Check if tool is hosted (has valid projectUrl)
 | 
				
			||||||
 | 
					    function isToolHosted(tool) {
 | 
				
			||||||
 | 
					      return tool.projectUrl !== undefined && 
 | 
				
			||||||
 | 
					             tool.projectUrl !== null && 
 | 
				
			||||||
 | 
					             tool.projectUrl !== "" && 
 | 
				
			||||||
 | 
					             tool.projectUrl.trim() !== "";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    // Filter function
 | 
					    // Filter function
 | 
				
			||||||
    function filterTools() {
 | 
					    function filterTools() {
 | 
				
			||||||
      const searchTerm = searchInput.value.toLowerCase();
 | 
					      const searchTerm = searchInput.value.toLowerCase();
 | 
				
			||||||
@ -252,18 +260,31 @@ const sortedTags = Object.entries(tagFrequency)
 | 
				
			|||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
 | 
					      // Sort filtered results: self-hosted first, proprietary last
 | 
				
			||||||
 | 
					      filtered.sort((a, b) => {
 | 
				
			||||||
 | 
					        const aHosted = isToolHosted(a);
 | 
				
			||||||
 | 
					        const bHosted = isToolHosted(b);
 | 
				
			||||||
 | 
					        const aProprietary = a.license === 'Proprietary';
 | 
				
			||||||
 | 
					        const bProprietary = b.license === 'Proprietary';
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Self-hosted tools first (regardless of license)
 | 
				
			||||||
 | 
					        if (aHosted && !bHosted) return -1;
 | 
				
			||||||
 | 
					        if (!aHosted && bHosted) return 1;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // If both have same hosting status, proprietary tools go last
 | 
				
			||||||
 | 
					        if (aHosted === bHosted) {
 | 
				
			||||||
 | 
					          if (!aProprietary && bProprietary) return -1;
 | 
				
			||||||
 | 
					          if (aProprietary && !bProprietary) return 1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Maintain existing order within same priority group
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
      // Emit custom event with filtered results
 | 
					      // Emit custom event with filtered results
 | 
				
			||||||
      window.dispatchEvent(new CustomEvent('toolsFiltered', { detail: filtered }));
 | 
					      window.dispatchEvent(new CustomEvent('toolsFiltered', { detail: filtered }));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // Check if tool is hosted (has valid projectUrl)
 | 
					 | 
				
			||||||
    function isToolHosted(tool) {
 | 
					 | 
				
			||||||
      return tool.projectUrl !== undefined && 
 | 
					 | 
				
			||||||
             tool.projectUrl !== null && 
 | 
					 | 
				
			||||||
             tool.projectUrl !== "" && 
 | 
					 | 
				
			||||||
             tool.projectUrl.trim() !== "";
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    // Handle tag cloud clicks
 | 
					    // Handle tag cloud clicks
 | 
				
			||||||
    function handleTagClick(tagItem) {
 | 
					    function handleTagClick(tagItem) {
 | 
				
			||||||
      const tag = tagItem.getAttribute('data-tag');
 | 
					      const tag = tagItem.getAttribute('data-tag');
 | 
				
			||||||
@ -309,6 +330,19 @@ const sortedTags = Object.entries(tagFrequency)
 | 
				
			|||||||
      if (view === 'hosted') {
 | 
					      if (view === 'hosted') {
 | 
				
			||||||
        // Filter for hosted tools only (tools with valid projectUrl)
 | 
					        // Filter for hosted tools only (tools with valid projectUrl)
 | 
				
			||||||
        const hosted = window.toolsData.filter(tool => isToolHosted(tool));
 | 
					        const hosted = window.toolsData.filter(tool => isToolHosted(tool));
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Apply same sorting logic for consistency
 | 
				
			||||||
 | 
					        hosted.sort((a, b) => {
 | 
				
			||||||
 | 
					          const aProprietary = a.license === 'Proprietary';
 | 
				
			||||||
 | 
					          const bProprietary = b.license === 'Proprietary';
 | 
				
			||||||
 | 
					          
 | 
				
			||||||
 | 
					          // Since all are hosted, just sort by proprietary status
 | 
				
			||||||
 | 
					          if (!aProprietary && bProprietary) return -1;
 | 
				
			||||||
 | 
					          if (aProprietary && !bProprietary) return 1;
 | 
				
			||||||
 | 
					          
 | 
				
			||||||
 | 
					          return 0;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        window.dispatchEvent(new CustomEvent('toolsFiltered', { detail: hosted }));
 | 
					        window.dispatchEvent(new CustomEvent('toolsFiltered', { detail: hosted }));
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        filterTools();
 | 
					        filterTools();
 | 
				
			||||||
@ -361,6 +395,10 @@ const sortedTags = Object.entries(tagFrequency)
 | 
				
			|||||||
    // Initialize
 | 
					    // Initialize
 | 
				
			||||||
    initTagCloud();
 | 
					    initTagCloud();
 | 
				
			||||||
    filterTagCloud();
 | 
					    filterTagCloud();
 | 
				
			||||||
    filterTools();
 | 
					    
 | 
				
			||||||
 | 
					    // Delay initial filter to ensure all event listeners are ready
 | 
				
			||||||
 | 
					    setTimeout(() => {
 | 
				
			||||||
 | 
					      filterTools();
 | 
				
			||||||
 | 
					    }, 100);
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
		Reference in New Issue
	
	Block a user