Custom Search Widget not work in Service Portal
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-25-2024 01:38 AM
Hi all,
Because of some specific business requirements, I tried to mimic the data table widget to customize a Table Widget.
When I try to add search function, it seems Not returning the correct data.
Does someone know the reason?
HTML Template
<div ng-repeat="approval in data.approvals" class="sp-approval">
<div ng-if="approval.task.number"><label>${Number}</label> {{::approval.task.number}}</div>
<div ng-if="approval.task.start"><label>${Start}</label> {{::approval.task.start}}</div>
<div ng-if="approval.task.end"><label>${End}</label> {{::approval.task.end}}</div>
</div>
<div>
<form ng-submit="goSearch(data.keywords)">
<div class="input-group" role="presentation">
<input type="text" ng-model="data.keywords" ng-model-options="{debounce:250}" class="form-control" placeholder="${Keyword Search}" aria-label="${Keyword Search}">
<span class="input-group-btn">
<button name="search" class="btn btn-default" type="submit" aria-label="${Search}" data-placement="bottom"><span class="glyphicon glyphicon-search"></span></button>
</span>
</div>
</form>
</div>
Server script:
if (input && input.action === 'search') {
var searchTerm = input.term;
var gr = new GlideRecord('sn_wsd_rsv_reservation');
gr.chooseWindow(0, 5);
gr.addEncodedQuery('subjectLIKE' + searchTerm);
gr.addQuery("state", '!=', 'cancelled');
gr.orderByDesc("sys_created_on");
gr.query();
initFunc();
} else {
var gr = new GlideRecord('sn_wsd_rsv_reservation');
gr.chooseWindow(0, 5);
gr.addQuery("state", '!=', 'cancelled');
gr.orderByDesc("sys_created_on");
gr.query();
initFunc();
}
function initFunc() {
var approvals = [];
var ids = [];
while (gr.next()) {
var task = gr;
ids.push(gr.getUniqueValue());
var t = {};
t.number = task.getDisplayValue();
t.start = task.start.getDisplayValue();
t.end = task.end.getDisplayValue();
var j = {};
j.sys_id = gr.getUniqueValue();
j.table = gr.getRecordClassName();
j.task = t;
j.state = gr.getValue("state");
j.stateLabel = gr.state.getDisplayValue();
approvals.push(j);
}
data.ids = ids;
data.approvals = approvals;
}
Client controller:
function($scope) {
var c = this;
$scope.goSearch = function(keywords) {
var input = {
action: 'search',
term: keywords
};
c.server.get(input).then(function(response) {
c.data.approvals = response.data.approvals;
});
};
}
0 REPLIES 0