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
0 REPLIES 0