The CreatorCon Call for Content is officially open! Get started here.

Search Option in My newely created Widget

devservicenow k
Tera Contributor

I Have created a new widget 0401a.jpg0401b.jpg in this widget i have added Filter Option using search option,

in that search option i need to filter option to select any task  , how to set that?

@jaheerhattiwale  can you help me in this one?

1 ACCEPTED SOLUTION

@devservicenow k Tried and tested 100% working solution.

 

HTML script:

<div>
<div class="search-icon">
<input ng-model="c.keyword" type="text" placeholder="Search..">
<button type="button" ng-click="c.keywordSearch()"><i class="fa fa-search"></i></button>
</div>

<table class="table">
<tr>
<th>Number</th>
<th>Short Description</th>
</tr>
<tr ng-repeat="inc in data.incidents">
<td>{{inc.number}}</td>
<td>{{inc.short_description}}</td>
</tr>
</table>
</div>

 

Client script:

api.controller=function() {
/* widget controller */
var c = this;

c.keywordSearch = function(){
c.data.action = "keyword_search";
c.data.keyword = c.keyword;
c.server.update().then(function(resp){

})
}
};

 

Server Script:

(function() {
/* populate the 'data' object */
/* e.g., data.table = $sp.getValue('table'); */


data.incidents = [];
var inc = new GlideRecord("incident");
if(input && input.action=="keyword_search"){
inc.addQuery('123TEXTQUERY321', input.keyword);
}
inc.query();

while(inc.next()){
data.incidents.push({
"number": inc.number.toString(),
"short_description": inc.short_description.toString()
})
}
})();

 

 

Result:

Without search:

jaheerhattiwale_0-1672847215344.png

 

With search:

jaheerhattiwale_1-1672847244439.png

 

 

Note:

Replace the server side with your table and query

 

Please mark as correct answer if this solves your issue.

 

Please mark the answer as correct or helpful based on impact
ServiceNow Community Rising Star, Class of 2023

View solution in original post

33 REPLIES 33

@devservicenow k Tried and tested solution with "task_time_worked" table itself.

Got it. You need to create text indexes for "task_time_worked" table.

 

for that

Go to "sys_dictionary" table

Search for "task_time_worked" in table field as shown in image below

jaheerhattiwale_0-1672903852222.png

 

Open the "Collection" type record

Check "Text index" and save

jaheerhattiwale_1-1672903904842.png

 

Click on "Generate text index" related link

jaheerhattiwale_2-1672903939694.png

 

 

Now to check if indexes are created or not

Open "ts_index_name" table 

Search for table "task_time_worked" in table field

jaheerhattiwale_3-1672904018188.png

 

Notice the state should be ready. Once its ready the keyword search will work.

 

Then just update the server script as below

 

(function() {
/* populate the 'data' object */
/* e.g., data.table = $sp.getValue('table'); */


data.incidents = [];
var inc = new GlideRecord("task_time_worked");
inc.addEncodedQuery("task.sys_class_name=sn_customerservice_task^ORtask.sys_class_name=sn_customerservice_case");
if(input && input.action=="keyword_search" && input.keyword){
inc.addQuery('123TEXTQUERY321', input.keyword);
}
inc.query();

while(inc.next()){
data.incidents.push({
"number": inc.task.number.toString(),
"accountName": inc.task.account.name.toString(),
"accountNumber": inc.task.account.number.toString()
})
}
})();

 

Please mark as correct answer if this solves your issue.

Please mark the answer as correct or helpful based on impact
ServiceNow Community Rising Star, Class of 2023

@devservicenow k Have you tried this?

Please mark the answer as correct or helpful based on impact
ServiceNow Community Rising Star, Class of 2023

@devservicenow k This should work, have you tried this?

Please mark the answer as correct or helpful based on impact
ServiceNow Community Rising Star, Class of 2023

@jaheerhattiwale Sorry for Late Reply it worked for me. any more doubts i will contact you

@devservicenow k Cool

Please mark the answer as correct or helpful based on impact
ServiceNow Community Rising Star, Class of 2023