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

Create Dynamic content block on the dashboard which glide all the tabe records as option in filter.

Pradnyesh
Kilo Sage

Pradnyesh_0-1708593479140.png

Use following script to create filter like above.  We use Glide ajax to fetch some table records from the script include.

<?xml version="1.0" encoding="utf-8" ?>

<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">

 

<script>

var arr = [];

function campusId(selectNumber){

    arr[0] = selectNumber;

    var ga = new GlideAjax('building');

    ga.addParam('sysparm_name','test');

    ga.addParam('sysparm_user_name',arr[0]);

    ga.getXML(HelloWorldParse);

 

    function HelloWorldParse(response) {  

        var answer = response.responseXML.documentElement.getAttribute("answer");

        var a = JSON.parse(answer);

        function removeOptions(selectElement) {

            var i, L = selectElement.options.length - 1;

            for(i = L; i >= 0; i--) {

            selectElement.remove(i);

        }

    }

    removeOptions(document.getElementById('selectBuilding'));

    var selectopt = document.getElementById('selectBuilding');

    selectopt.innerHTML += '<option>'+"Select Building"+'</option>';

    for(var i =0; i&lt; a.length; i++){

        var opt = a[i];

        selectopt.innerHTML += '<option>'+opt+'</option>';

        }

    }

}

 

function buildingId(selecctNumber1){

    arr[1] = selecctNumber1;

    var ga = new GlideAjax('floor');

    ga.addParam('sysparm_name','test');

    ga.addParam('sysparm_user_name',arr[1]);

    ga.getXML(HelloWorldParse);

 

    function HelloWorldParse(response) {  

        var answer = response.responseXML.documentElement.getAttribute("answer");

        var a = JSON.parse(answer);

        function removeOptions(selectElement) {

            var i, L = selectElement.options.length - 1;

            for(i = L; i >= 0; i--) {

            selectElement.remove(i);

        }

    }

    removeOptions(document.getElementById('selectFloor'));

    var selectopt = document.getElementById('selectFloor');

    selectopt.innerHTML += '<option>'+"Select Floor"+'</option>';

    for(var i =0; i&lt; a.length; i++){

        var opt = a[i];

        selectopt.innerHTML += '<option>'+opt+'</option>';

        }

    }

}

function floorId(selecctNumber2){

    arr[2] = selecctNumber2;

}

function spaceTypeId(selecctNumber3){

    arr[3] = selecctNumber3;

}

var ga = new GlideAjax('SpaceTypeSelect');

    ga.addParam('sysparm_name','test');

    ga.getXML(HelloWorldParse);

 

    function HelloWorldParse(response) {  

        var answer = response.responseXML.documentElement.getAttribute("answer");

        var a = JSON.parse(answer);

        var selectopt = document.getElementById('selectSpaceType');

        for(var i =0; i&lt; a.length; i++){

            var opt = a[i];

            selectopt.innerHTML += '<option>'+opt+'</option>';

        }

    }

   

 

 

var my_dashboardMessageHandler = new DashboardMessageHandler("FilterShortDescription");

   

    function publishFilter () {

        var filter_message = {};

        filter_message.id = "FilterShortDescription";

        filter_message.table = "sn_wsd_core_space";

 

     filter_message.filter = "campus.name="+arr[0]+"^building.name="+arr[1]+"^floor.name="+arr[2]+"^location_type.name="+arr[3];

   

        SNC.canvas.interactiveFilters.setDefaultValue({

                id: filter_message.id,

                filters: [filter_message]

            }, false);

        my_dashboardMessageHandler.publishFilter(filter_message.table, filter_message.filter);

    }

   

    function clearFilter() {

        var filter_message = {};

        filter_message.id = "FilterShortDescription";

        filter_message.table = "sn_wsd_core_space";

        filter_message.filter = "";

        SNC.canvas.interactiveFilters.setDefaultValue({

                id: filter_message.id,

                filters: [filter_message]

            }, false);

        my_dashboardMessageHandler.removeFilter();

    }

</script>

<g:evaluate var="jvar_log_user" object="true">

var campus = [];

var gr = new GlideRecord('sn_wsd_core_campus');

gr.addQuery('active',true);

gr.orderBy('name');

gr.query();

while(gr.next()){

    campus.push(gr.name.toString());

}

campus;

</g:evaluate>

 

 

<div>

<label for="selectcampus">Select Campus:</label>

<select id="selectcampus" onchange="campusId(this.value);">

<option>Select Campus</option>

<j:forEach var="jvar_log_user" items="${campus}">

<option>${jvar_log_user}</option>

</j:forEach>

</select>

 

<label for="selectBuilding">Select Building:</label>

<select id="selectBuilding" onchange="buildingId(this.value);">

<option>Select Building</option>

</select>

 

<label for="selectFloor">Select Floor:</label>

<select id="selectFloor" onchange="floorId(this.value);">

<option>Select Floor</option>

</select>

 

<label for="selectSpaceType">Select Space Type:</label>

<select id="selectSpaceType" onchange="spaceTypeId(this.value);">

<option>Select Space Type</option>

</select>

 

</div>

 

 

 

<br></br>

<button type="button" onclick="publishFilter()">Apply Filter</button>

<button type="button" onclick="clearFilter()">Clear Filter</button>

       

</j:jelly>

 

Mark the above answer as helpful if your problem resolve.

Thank You !

1 REPLY 1

Shiva1999
Tera Contributor

This is really really helpful!‌‌

Thank you!