Some PDIs are currently unavailable, and PDI actions are paused. View the latest updates here. Read More

content block not working

suresh kaliappa
Tera Expert

Hello Everyone,

There were 1 existing content block which filter based on closed_at field. I just renamed it and then this was not working in dashboard tab. I again changed the name to previous one. but still this content block filter was not working. Hence could someone please assist what was broken or where i made the issue?


sharing script below for reference

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">  
<style>
        select {
            width: 100%;
            height: 100% !important;
        }

        .row {
            margin: 4px;
           width: 100%;
        }

        .mainRow {
            display: flex;
            justify-content: space-between;
            gap: 16px;
            height: 80%;
        }

        .selectRow {
            height: 80%;
        }
    </style>

    <script>
        var yearSelectTaskClosing = document.getElementById('selectYearTaskClosing');
        var monthSelectTaskClosing = document.getElementById('selectMonthTaskClosing');
        var quarterSelectTaskClosing = document.getElementById('selectQuarterTaskClosing');
        var weekSelectTaskClosing = document.getElementById('selectWeekTaskClosing');

        var my_dashboardMessageHandler = new DashboardMessageHandler("FilterDateTaskClosing");

        function publishFilterDateTaskClosing(query) {
            var filter_message = {};
            filter_message.id = "FilterDateTaskClosing";
            filter_message.table = "sn_slm_task";
            filter_message.filter = query;

            SNC.canvas.interactiveFilters.setDefaultValue({
                id: filter_message.id,
                filters: [filter_message]
            }, false);

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

        function clearClosingTask() {
            var elements = yearSelectTaskClosing.options;
            for(var i = 0; i &lt; elements.length; i++){
                elements[i].selected = false;
            }
            yearChangeClosing(true);
            elements = monthSelectTaskClosing.options;
            for(var i = 0; i &lt; elements.length; i++){
                elements[i].selected = false;
            }
            elements = quarterSelectTaskClosing.options;
            for(var i = 0; i &lt; elements.length; i++){
                elements[i].selected = false;
            }
            elements = weekSelectTaskClosing.options;
            for(var i = 0; i &lt; elements.length; i++){
                elements[i].selected = false;
            }
            buildQueryTaskClosing();
        }

        function clearFilterTask() {
            var filter_message = {};
            filter_message.id = "FilterDateTaskClosing";
            filter_message.table = "sn_slm_task";
            filter_message.filter = "";

            SNC.canvas.interactiveFilters.setDefaultValue({
                id: filter_message.id,
                filters: [filter_message]
            }, false);

            my_dashboardMessageHandler.removeFilter();
        }

        function getSelectValues(sel) {
            var result = [];
            var options = sel ? sel.options : [];
            var opt;

            for (var i = 0; i &lt; options.length; i++) {
                opt = options[i];
                if (opt.selected) {
                    result.push(opt.value);
                }
            }
            return result;
        }

        function buildQueryTaskClosing() {
            var years = getSelectValues(yearSelectTaskClosing);
            var months = getSelectValues(monthSelectTaskClosing);
            var quarters = getSelectValues(quarterSelectTaskClosing);
            var weeks = getSelectValues(weekSelectTaskClosing);

            var queryBuilder = [];

            if (weeks.length > 0 &amp;&amp; weeks.indexOf('all') == -1) {
                var weeksQueryBuilder = [];
                for (var i = 0; i &lt; weeks.length; i++) {
                    var year = weeks[i].substring(0,4);
                    var week = parseInt(weeks[i].substring(4,6));
                    var weekLabel = 'Week' + week;
                    weeksQueryBuilder.push("closed_atDATEPART" + weekLabel + "@javascript&colon;gs.datePart('week','" + weeks[i] + "','EE')^closed_atDATEPART" + year + "@javascript&colon;gs.datePart('year','" + year + "','EE')");
                }
                queryBuilder.push(weeksQueryBuilder.join('^OR'));
            }
            if (months.length > 0 &amp;&amp; months.indexOf('all') == -1) {
                var monthsQueryBuilder = [];
                for (var i = 0; i &lt; months.length; i++) {
                    var year = months[i].substring(0,4);
                    var monthNumber = parseInt(months[i].substring(4,6));
                    var monthLabel = getMonthName(monthNumber);
                    monthsQueryBuilder.push("closed_atDATEPART" + monthLabel + "@javascript&colon;gs.datePart('month','" + monthLabel + "','EE')^closed_atDATEPART" + year + "@javascript&colon;gs.datePart('year','" + year + "','EE')");
                }
                queryBuilder.push(monthsQueryBuilder.join('^OR'));
            }
            if (quarters.length > 0 &amp;&amp; quarters.indexOf('all') == -1) {
                var quartersQueryBuilder = [];
                for (var i = 0; i &lt; quarters.length; i++) {
                    var year = quarters[i].substring(0,4);
                    var quarter = parseInt(quarters[i].substring(4,6));
                    quartersQueryBuilder.push("closed_atDATEPARTQuarter" + quarter + "@javascript&colon;gs.datePart('quarter','" + quarter + "','EE')^closed_atDATEPART" + year + "@javascript&colon;gs.datePart('year','" + year + "','EE')");
                }
                queryBuilder.push(quartersQueryBuilder.join('^OR'));
            }
            if (years.length > 0 &amp;&amp; years.indexOf('all') == -1) {
                var yearsQueryBuilder = [];
                for (var i = 0; i &lt; years.length; i++) {
                    yearsQueryBuilder.push("closed_atDATEPART" + years[i] + "@javascript&colon;gs.datePart('year','" + years[i] + "','EE')");
                }
                queryBuilder.push(yearsQueryBuilder.join('^OR'));
            }

            var query = queryBuilder.join('^');
            console.log(query);
            publishFilterDateTaskClosing(query);
        }

        function getMonthName(monthNumber) {
            var months = [
                "January", "February", "March", "April", "May", "June",
                "July", "August", "September", "October", "November", "December"
            ];
            if (monthNumber &lt; 1 || monthNumber > 12) {
                return null;
            }
            return months[monthNumber - 1];
        }
yearChangeClosing(true);
        function yearChangeClosing(onLoad){
            //var quarterSelectTaskClosing = document.getElementById('selectQuarterTaskClosing');

            var selectedYearsSelect = getSelectValues(yearSelectTaskClosing);

            var selectedYears = ['2023','2024','2025'];
            if(selectedYearsSelect.length>0 &amp;&amp; selectedYearsSelect.indexOf('all')==-1){
                selectedYears = selectedYearsSelect;
            }

            quarterSelectTaskClosing.innerHTML = '<option value="all">All</option>';
            weekSelectTaskClosing.innerHTML = '<option value="all">All</option>';
            monthSelectTaskClosing.innerHTML = '<option value="all">All</option>';

            var today = new Date();
            var currentYear = today.getFullYear();
            var currentMonth = today.getMonth() + 1;
            var startOfYear = new Date(today.getFullYear(), 0, 1);
            var daysSinceStart = Math.floor((today - startOfYear) / 86400000);
            var currentWeek = Math.ceil((daysSinceStart + 1) / 7);
            var maxQuarter = 4;
            if (selectedYears.indexOf(currentYear.toString()) !== -1) {
                if (currentMonth &lt;= 3) maxQuarter = 1;
                else if (currentMonth &lt;= 6) maxQuarter = 2;
                else if (currentMonth &lt;= 9) maxQuarter = 3;
                else maxQuarter = 4;
            }

            for (var j = 0; j &lt; selectedYears.length; j++) {
                var year = selectedYears[j];
                var lastWeek = 53;
                if (year === currentYear.toString()) {
                    lastWeek = currentWeek;
                }
                for (var w = 1; w&lt;=lastWeek; w++ ){
                    var weekStr = w.toString();
                    if(weekStr.length==1){
                        weekStr = '0'+weekStr;
                    }
                    var value = year + weekStr;
                    var option = document.createElement('option');
                    option.value = value;
                    option.text = value;
                    weekSelectTaskClosing.appendChild(option);
                }
                var lastMonth = 12;
                if (year === currentYear.toString()) {
                    lastMonth = currentMonth;
                }
                for (var m = 1; m&lt;=lastMonth; m++ ){
                    var monthStr = m.toString();
                    if(monthStr.length==1){
                        monthStr = '0'+monthStr;
                    }
                    var value = year + monthStr;
                    var option = document.createElement('option');
                    option.value = value;
                    option.text = value;
                    monthSelectTaskClosing.appendChild(option);
                }
                var lastQuarter = 4;
                if (year === currentYear.toString()) {
                    lastQuarter = maxQuarter;
                }
                for (var q = 1; q &lt;= lastQuarter; q++) {
                    var value = year + '0' + q;
                    var option = document.createElement('option');
                    option.value = value;
                    option.text = value;
                    quarterSelectTaskClosing.appendChild(option);
                }
            }

            if(!onLoad){
                buildQueryTaskClosing();
            }
        }
    </script>

    <div class="row mainRow">
        <div style="width: 25%">
            <div class="row">Year</div>
            <div class="row selectRow">
                <select id="selectYearTaskClosing" multiple="true" onchange="yearChangeClosing()">
                    <option value="all">All</option>
                    <option value="2023">2023</option>
                    <option value="2024">2024</option>
                    <option value="2025">2025</option>  
                </select>
            </div>
        </div>
        <div style="width: 25%">
            <div class="row">Quarter</div>
            <div class="row selectRow">
                <select id="selectQuarterTaskClosing" multiple="true" onchange="buildQueryTaskClosing()">
                    <option value="all">All</option>
                </select>
            </div>
        </div>
        <div style="width: 25%">
            <div class="row">Month</div>
            <div class="row selectRow">
                <select id="selectMonthTaskClosing" multiple="true" onchange="buildQueryTaskClosing()">
                    <option value="all">All</option>
                </select>
            </div>
        </div>
        <div style="width: 25%">
            <div class="row">Week</div>
            <div class="row selectRow">
                <select id="selectWeekTaskClosing" multiple="true" onchange="buildQueryTaskClosing()">
                    <option value="all">All</option>
                </select>
            </div>
        </div>
    </div>
    <div class="row">
        <button onclick="clearClosingTask()">Clear filters</button>
    </div>
</j:jelly>
  • H
1 REPLY 1

abirakundu23
Giga Sage

Hi @suresh kaliappa ,

Simply renaming the label may not impact the content block functionality, may be dashboard  lost its content block and interactive filter no longer matches for the content block of the dashboard.

Could you please check above areas ?

Please mark helpful & correct answer if it's worthy for you.