Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Get input to pass into server script for a service portal widget

Jake Sadler
Kilo Sage

I'm trying to get the user input from my widget and pass it into my server script to get a result.

 

HTML 

<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">Table Extensions</h4>
</div>
<div class="panel-body">
<sn-record-picker field="field" table="'sys_db_object'" display-field="'name'" value-field="'sys_id'" search-fields="'name'" page-size="100" ></sn-record-picker>
<form class="m-t form-horizontal" role="form">
<div class="form-group">
<label class="col-sm-2 control-label">Hierarchy</label>
<div class="col-sm-10">
<input type="text" placeholder="{{data.res}}" class="form-control" readonly>

</div>

 

Client Script

function ($scope) {

var c = this;
$scope.table = "sys_db_object";

c.server.update();
}

 

server script

 

(function() {

var tableName = input.setTable;
var table = new TableUtils(tableName);
var tableArrayList = table.getTables();
var tableArray = j2js(tableArrayList);

var result = tableArray.reverse();
if(result!=''){
data.res = result.join(" >>> ");
}
})();

 

 Widget Preview

 

find_real_file.png

Any help would be greatly appreciated

 

1 ACCEPTED SOLUTION

palanikumar
Giga Sage
Giga Sage

Hi,

Try this code. This should work

HTML

<div class="panel panel-default">
  <div class="panel-heading">
    <h4 class="panel-title">Table Extensions</h4>
  </div>
  <div class="panel-body">
    <sn-record-picker field="c.field" 
                  table="'sys_db_object'" 
                  display-field="'name'" 
                  value-field="'name'" 
                  search-fields="'name'" 
                  page-size="100" 
                  ng-change="c.getHierarchy()">
    </sn-record-picker>
    <form class="m-t form-horizontal" role="form">
      <div class="form-group">
        <label class="col-sm-2 control-label">Hierarchy</label>
        <div class="col-sm-10">
          <input type="text" placeholder="{{data.res}}" class="form-control" readonly>
        </div>

Client Controler:

function($scope) {

    var c = this;
    $scope.table = "sys_db_object";

    c.server.update();
    c.getHierarchy = function() {
        c.server.get({
            action: 'get_hierarcgy',
            table: c.field.value
        }).then(function(response) {
            c.data = response.data;
        });
    }
}

Server Script:

(function() {
    if (input && input.action == "get_hierarcgy") {
        var tableName = input.table;
        var table = new TableUtils(tableName);
        var tableArrayList = table.getTables();
        var tableArray = j2js(tableArrayList);

        var result = tableArray.reverse();
        if (result != '') {
            data.res = result.join(" >>> ");
        }
    }
})();
Thank you,
Palani

View solution in original post

6 REPLIES 6

Hi,

 

That's correct.

palanikumar
Giga Sage
Giga Sage

Hi,

Try this code. This should work

HTML

<div class="panel panel-default">
  <div class="panel-heading">
    <h4 class="panel-title">Table Extensions</h4>
  </div>
  <div class="panel-body">
    <sn-record-picker field="c.field" 
                  table="'sys_db_object'" 
                  display-field="'name'" 
                  value-field="'name'" 
                  search-fields="'name'" 
                  page-size="100" 
                  ng-change="c.getHierarchy()">
    </sn-record-picker>
    <form class="m-t form-horizontal" role="form">
      <div class="form-group">
        <label class="col-sm-2 control-label">Hierarchy</label>
        <div class="col-sm-10">
          <input type="text" placeholder="{{data.res}}" class="form-control" readonly>
        </div>

Client Controler:

function($scope) {

    var c = this;
    $scope.table = "sys_db_object";

    c.server.update();
    c.getHierarchy = function() {
        c.server.get({
            action: 'get_hierarcgy',
            table: c.field.value
        }).then(function(response) {
            c.data = response.data;
        });
    }
}

Server Script:

(function() {
    if (input && input.action == "get_hierarcgy") {
        var tableName = input.table;
        var table = new TableUtils(tableName);
        var tableArrayList = table.getTables();
        var tableArray = j2js(tableArrayList);

        var result = tableArray.reverse();
        if (result != '') {
            data.res = result.join(" >>> ");
        }
    }
})();
Thank you,
Palani