Scripted Search Source
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-04-2024 04:18 AM
Hi,
I have a requirement to add another Search Source in esc portal named 'Categories'. When the user search from a term this search source will need to show all categories (from sc_category) that contains the search term and their corresponding catalog items (a row will have two columns: 1) name of category 2)name of catalog item that has this category.
What am I doing wrong?
Search page template:
<div ng-repeat="category in data">
<!-- Display the category title -->
<h3 class="text-primary">{{ category.title }}</h3>
<!-- Display each catalog item under the category -->
<ul>
<li ng-repeat="item in category.items">
<a href="?id=form&sys_id={{ item.sys_id }}&table=sc_cat_item" class="text-muted">
{{ item.name }}
</a>
</li>
</ul>
</div>
Data fetch script:
(function(query) {
var results = [];
query = query.toLowerCase(); // Convert query to lowercase for case-insensitive search
// Query categories that contain the search term in their title
var categoryGR = new GlideRecord('sc_category');
categoryGR.addQuery('title', 'CONTAINS', query); // Searches for categories containing the search term
categoryGR.addActiveQuery(); // Only fetch active categories
categoryGR.query();
while (categoryGR.next()) {
var category = {
title: categoryGR.getDisplayValue('title'), // Category title
sys_id: categoryGR.getUniqueValue(), // Category sys_id (optional for linking)
items: []
};
// Query for catalog items within this category
var itemGR = new GlideRecord('sc_cat_item');
itemGR.addQuery('category', categoryGR.getUniqueValue()); // Fetch items with the current category
itemGR.addActiveQuery(); // Only fetch active items
itemGR.query();
// Loop through each catalog item and add it to the category's items array
while (itemGR.next()) {
category.items.push({
name: itemGR.getDisplayValue('name'), // Catalog item name
sys_id: itemGR.getUniqueValue() // Catalog item sys_id for linking
});
}
// Add the category with its items to the results array
results.push(category);
}
return results;
})(query);
Do I need to put something in the Facet as well?
0 REPLIES 0