如何使用 EXTJS 库在屏幕上加载进度条并监控 NetSuite 中已保存搜索的执行时间?

How can I use an EXTJS library to load a progress bar on screen and monitor the execution time of a saved search in NetSuite?

我正在尝试在客户端脚本上为 NetSuite 中的日志记录类型设置进度条(在消息框中)。单击 ACCOUNT ITEM(日志记录上的列字段)时,应该会触发此进度条。单击时,假设保存的搜索 运行,搜索完成后,隐藏进度条并将结果放在页面的另一个列字段中。

我已经尝试过使用EXT JS框架加载进度条。单击帐户项时我成功了,但在搜索完成后无法隐藏该栏。

我首先声明我保存的搜索,它实际上调用了进度条:

var saved_search = showProgressBarWithFn(search);

函数"showProgressBarWithFn(search)":

   showProgressDialogWithFn: function(search)
    {
        try
        {

            Ext.MessageBox.show({
                title: 'Please wait',
                msg: 'Loading items...',
                width:300,
                wait:true,
                waitConfig:{
                    interval: 200,
                    scope : Ext.bind(search, this), 
                    fn : function(){
            Ext.MessageBox.hide();

                    }

                }
            });

        }
        catch(e)
        {
            console.log("An unexpected error occurred" + e.message);
        }
    }

以上,我试图在搜索中将范围强制为 运行,因此调用了 "ext.bind"。 (请告知我是否错误地使用了此功能)。我在 API 文档中读到 "scope" 会触发回调。

我希望屏幕上显示一个进度条,然后在保存的搜索返回结果后立即消失。

任何完成此任务的指导将不胜感激!

我已经用另一种方式解决了这个问题,我想我会分享我的答案。 我首先创建了一个没有回调的函数,如下所示。

 showProgressDialog: function(Title, message)
    {
        try
        {
            Ext.MessageBox.show({
                title: Title,
                msg: message,
                width:300,
                wait:true,
                waitConfig:{

                    interval:200,
                }
            });
        }

然后我在我的脚本的主要功能中调用它,然后是保存的搜索,然后使用 "Ext.MessageBox.Hide()" 关闭对话框并调用 setTimeOut 允许进度条显示的短暂延迟屏幕.

showProgressDialog('Running vendor/customer search', 'Please wait...');
var results = executeSavedSearch('customer', filters, fields);
setTimeout (function() {Ext.MessageBox.hide();},1000);

setTimeOut() 的原因是保存的搜索完成得太快,无法显示进度条并再次隐藏。如果其他人有类似的问题,很高兴对此进行扩展。