Custom Search Widget not work in Service Portal

xingrui
Tera Contributor

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