在ExtJS中实现存储输出的任务运行器

在ExtJS中实现存储输出的任务运行器,extjs,extjs4,extjs5,sencha-architect,Extjs,Extjs4,Extjs5,Sencha Architect,我是ExtJS的新手,我有点陷入了其中一个问题,所以我需要你的帮助 基本上,我使用以下URL访问我的应用程序: servername:port/XMII/CM/XYZ/index.html?machine=1&typeofpage=dashboard 我通过全局控制器getMode()中使用的以下代码获取这些URL参数机器和页面类型: 现在,根据页面的类型,我通过初始视口的afterrender方法中的以下代码来决定打开哪个页面: var mode=this.getMode() 所以上

我是ExtJS的新手,我有点陷入了其中一个问题,所以我需要你的帮助

基本上,我使用以下URL访问我的应用程序:

servername:port/XMII/CM/XYZ/index.html?machine=1&typeofpage=dashboard
我通过全局控制器getMode()中使用的以下代码获取这些URL参数机器和页面类型:

现在,根据页面的类型,我通过初始视口的afterrender方法中的以下代码来决定打开哪个页面:

var mode=this.getMode()

所以上面的代码正确地调用了我的仪表板页面,并将machineID作为1传递

使用此machineID属性,我将其传递到存储MachineParts,该存储将为我提供机器ID为1的所有机器零件。以下是XYZ.view.Dashboard的aferrender中的代码:

var me = this,
    machinepartIds= [];

Ext.defer(function(){

    component.mask('Loading...');

    me.getStore('MachinePart').load({
            params:{
                'Param.1': component.ID_MACHINE
            },
            callback: function(response) {
                component.unmask();
                Ext.each(response, function(panel) {
                    machinepartIds.push(panel.get('MachinePartID'));

                });
   alert('Machine IDs: ' + machinepartIds.toString();
        }
    });
},10);
假设它返回了以下数据:

MachineID    MachinePartID
   1               20
   1               21
   1               22
现在我有了一个名为loadKPIs的函数,它将参数作为ID,即machinepartID。我使用此LoadKPI函数填充页面上的所有KPI,并将特定机器部件ID的KPI显示为仪表板

我希望每10分钟将MachinePartId 20、21、22传递给loadKPIs函数,以便在10分钟内显示每个machinepart的仪表板


例如,我将从MachinePartID20开始。10分钟后,我想通过achinepart ID为21的考试。10分钟后,我希望将machinepart ID传递为22。10分钟后再次返回20。我确定我需要使用TaskRunner,但我不知道如何操作。

尝试在应用程序或仪表板中设置计时器。例如

var machineParts = [20, 21, 22];
setTimeout(function() {
    YourApp.app.redirectTo('servername:port/XMII/CM/XYZ/index.html?machine=' + machinParts.shift() + '&typeofpage=dashboard');
}, 10 * 60 * 1000);

但是,这将导致重新加载该页面,因此可能最好在仪表板中实施类似的操作,仅更改显示机器零件相关内容的面板。

尝试在应用程序或仪表板内设置计时器。例如

var machineParts = [20, 21, 22];
setTimeout(function() {
    YourApp.app.redirectTo('servername:port/XMII/CM/XYZ/index.html?machine=' + machinParts.shift() + '&typeofpage=dashboard');
}, 10 * 60 * 1000);

但是,这将导致重新加载该页面,因此可能最好在仪表板中实现类似的功能,仅更改显示机器零件相关内容的面板。

如果要使用
Ext.util.TaskManager
每隔一段时间调用一个函数,并使用友好的API和控件启动/停止只要您愿意,这里有一个简单的代码片段:

var task = Ext.util.TaskManager.newTask({
    interval : 600000,
    scope    : this,
    run      : function() {}
});

Ext.util.TaskManager.start(task);
当然,您也可以使用
setInterval

setInterval(function() {
    doSomething();
}, 6000000);

如果您想使用
Ext.util.TaskManager
每隔一段时间调用一个函数,并使用友好的API和控件随时启动/停止,下面是一个简单的代码片段:

var task = Ext.util.TaskManager.newTask({
    interval : 600000,
    scope    : this,
    run      : function() {}
});

Ext.util.TaskManager.start(task);
当然,您也可以使用
setInterval

setInterval(function() {
    doSomething();
}, 6000000);

机器在URL中始终保持为1或2。根据机器ID(1或2),我将获得机器零件(20,21,22)。我需要每10分钟调用机器部件20、21、22的loadKPI函数。在仪表板代码中添加一个类似的计时器,该计时器将调用loadKPI函数。机器在URL中始终保持为1或2。根据机器ID(1或2),我将获得机器零件(20,21,22)。我需要每10分钟调用机器部件20、21、22的loadKPI函数。在仪表板代码中添加一个类似的计时器,该计时器将调用loadKPI函数。不要忘记使用该答案中的复选框将答案标记为答案。向上投票是不够的。别忘了使用答案中的复选框将答案标记为答案。提高投票率是不够的。