How to show suitelet page ranges like standard netsuite list page

Hi,

I have created suitelet to show custom records list page. I am doing pagination in suitelet. I am getting range as 1-50, 51-100, etc. Is it possible to show dynamic page ranges, for example, on my first page, first sublist lines name is 100 and last is 137 then, can we show a range as 100-137 and so on?

 

Please help!

 

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 */
var PAGE_SIZE = 50;
var SEARCH_ID = ‘customsearch_wave_record_name_search’;
var CLIENT_SCRIPT_FILE_ID = 7796;
define([‘N/ui/serverWidget’, ‘N/search’, ‘N/redirect’],
    function (serverWidget, search, redirect) {‌
    function onRequest(context) {‌
        if (context.request.method == ‘GET’) {‌
            var form = serverWidget.createForm({‌
                    title : ‘Wave Record List’,
                    hideNavBar : false
                });
            form.clientScriptFileId = CLIENT_SCRIPT_FILE_ID;
            form.addSubmitButton({‌
                id : ‘custpage_print’,
                label : ‘Print’
                });
            // Get parameters
            var pageId = parseInt(context.request.parameters.page);
            var scriptId = context.request.parameters.script;
            var deploymentId = context.request.parameters.deploy;
            // Add sublist that will show results
            var sublist = form.addSublist({‌
                    id : ‘custpage_table’,
                    type : serverWidget.SublistType.LIST,
                    label : ‘Select wave records…’
                });
            // Add columns to be shown on Page
            sublist.addField({‌
                id : ‘select’,
                label : ‘Select’,
                type : serverWidget.FieldType.CHECKBOX
            });
            sublist.addField({‌
                id : ‘name’,
                label : ‘Name’,
                type : serverWidget.FieldType.INTEGER
            });
            sublist.addField({‌
                id : ‘wo’,
                label : ‘WO#’,
                type : serverWidget.FieldType.TEXT
            });
            // Run search and determine page count
            var retrieveSearch = runSearch(SEARCH_ID, PAGE_SIZE);
            log.debug(“retrieveSearch”,retrieveSearch);
            var pageCount = Math.ceil(retrieveSearch.count / PAGE_SIZE);
            // Set pageId to correct value if out of index
            if (!pageId || pageId == ” || pageId < 0)
                pageId = 0;
            else if (pageId >= pageCount)
                pageId = pageCount – 1;
            // Add buttons to simulate Next & Previous
            if (pageId != 0) {‌
                form.addButton({‌
                    id : ‘custpage_previous’,
                    label : ‘Previous’,
                    functionName : ‘getSuiteletPage(‘ + scriptId + ‘, ‘ + deploymentId + ‘, ‘ + (pageId – 1) + ‘)’
                });
            }
            if (pageId != pageCount – 1) {‌
                form.addButton({‌
                    id : ‘custpage_next’,
                    label : ‘Next’,
                    functionName : ‘getSuiteletPage(‘ + scriptId + ‘, ‘ + deploymentId + ‘, ‘ + (pageId + 1) + ‘)’
                });
            }
            // Add drop-down and options to navigate to specific page
            var selectOptions = form.addField({‌
                    id : ‘custpage_pageid’,
                    label : ‘Page Index’,
                    type : serverWidget.FieldType.SELECT
                });
            for (i = 0; i < pageCount; i++) {‌
                if (i == pageId) {‌
                    selectOptions.addSelectOption({‌
                        value : ‘pageid_’ + i,
                        text : ((i * PAGE_SIZE) + 1) + ‘ – ‘ + ((i + 1) * PAGE_SIZE),
                        isSelected : true
                    });
                } else {‌
                    selectOptions.addSelectOption({‌
                        value : ‘pageid_’ + i,
                        text : ((i * PAGE_SIZE) + 1) + ‘ – ‘ + ((i + 1) * PAGE_SIZE)
                    });
                }
            }
            // Get subset of data to be shown on page
            var addResults = fetchSearchResult(retrieveSearch, pageId);
            // Set data returned to columns
            var j = 0;
            addResults.forEach(function (result) {‌
                // sublist.setSublistValue({‌
                //     id : ‘id’,
                //     line : j,
                //     value : result.id
                // });
                sublist.setSublistValue({‌
                    id : ‘name’,
                    line : j,
                    value : result.name
                });
                sublist.setSublistValue({‌
                    id : ‘wo’,
                    line : j,
                    value : result.wonumber
                });
                j++
            });
            context.response.writePage(form);
        }
    }
    return {‌
        onRequest : onRequest
    };
    function runSearch(searchId, searchPageSize) {‌
        var searchObj = search.load({‌
                id : searchId
            });
        log.debug(‘searchObj’, JSON.stringify(searchObj));
        return searchObj.runPaged({‌
            pageSize : searchPageSize
        });
    }
    function fetchSearchResult(pagedData, pageIndex) {‌
        var searchPage = pagedData.fetch({‌
                index : pageIndex
            });
            log.debug(“searchPage”,searchPage);
        var results = new Array();
        searchPage.data.forEach(function (result) {‌
            // var getName = result.name;
            // log.debug(“getName”,getName);
            var getName = result.getValue({‌
                    name : ‘name’
                });
                log.debug(“getName”,getName);
                var getWO = result.getText({‌
                    name : ‘custrecord_wmsts_workorder’,
                    });
                log.debug(“getWO”,getWO);
            results.push({‌
                “name” : getName,
                “wonumber” : getWO
              });
        });
        return results;
    }
});
Beginner Asked on August 8, 2023 in SuiteScript.
Add Comment
0 Answer(s)

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.
  • This site made possible by our sponsors:   Tipalti   Celigo   Become a Sponsor   Become a Sponsor