Maximo Anywhere - 动态更改元素的CSS类

问题描述 投票:0回答:1

正如标题所示,我想知道是否可以在Maximo Anywhere应用程序中使用javascript动态更改app.xml文件中定义的元素的CSS类,如下所示:

<text cssClass="relatedRecords"/>

我的方法运行后,我希望text元素属于不同的CSS类:

<text cssClass="boldRelatedRecords"/>

当然app.xml实际上并没有像上面那样更新,但我认为它更好地说明了我想要实现的目标。感觉这应该是一件容易的事情,但我无法弄清楚如何去做。有没有人设法完成这个?

感谢任何建议。

maximo maximo-anywhere
1个回答
0
投票

几个星期前我就这个确切的要求工作了。

这是我在元素渲染时使用的事件处理程序,如果LOCATE Prereq字段中的日期已过期,则可以使用一些额外的逻辑来设置类:

hideForNonLocatePrereq: function(eventContext) {

                var prereqType='LOCATE';
                var wo = eventContext.application.getResource('workOrder').getCurrentRecord();
                var prereq = wo.getLoadedModelDataSetOrNull('tasklist');

                prereq.filter("plusdprereqtype == $1", prereqType);

                if(prereq.count()>0){                   
                    var expDate = prereq.data[0].getAsDateOrNull("zxqexpirationdate");

                    if(expDate==null){                      
                        eventContext.setDisplay(false);                     
                    }else{                  
                        wo.setDateValue('localzxqexpirationdate', expDate);
                        if (expDate < this.application.getCurrentDateTime()) {
                            eventContext.textWidget.domNode.className+= ' errorIndicator';
                        }

                    }}

                else{                   
                    eventContext.setDisplay(false)
                }

    },

在app.xml中,我通过以下方式将该函数绑定到字段的呈现:

<container id="WorkExecution.WorkDetialView_container_102_added_exp" resource="workOrder">
                <group id="WorkExecution.WorkDetailView_group_12_prereq">
                    <groupitem id="WorkExecution.WorkDetailView_group_12_prereq_2" layout="WorkOrderDetails3x3x3x3">
                        <text editable="false" id="WorkExecution.WorkDetailView_workOrder_groupitem_expdate" label="Locates Expiration Date" layoutInsertAt="item1" resourceAttribute="localzxqexpirationdate">
                            <eventHandlers id="WorkExecution.WorkDetailView_workOrder_groupitem_expdate_eventHandlers">
                                <eventHandler class="application.handlers.WODetailHandler" event="render" id="WorkExecution.WorkDetailView_workOrder_groupitem_expdate_eventHandlers_render" method="hideForNonLocatePrereq"/>
                            </eventHandlers>
                        </text>
                    </groupitem>
                </group>
            </container>

另一种策略是我们使用.errorIndicator类并覆盖View.JS中的验证,以允许在视图中有该类。我们只返回true以远离屏幕。然后只需将字段metatdata设置为required,如果没有填写,它将动态设置类。 multiAssetLoc.getRuntimeFieldMetadata('zxqfail')。set('required',true);

第三种方式有点hacky,但它涉及在dom元素上重新设置CSS,然后刷新视图。我们之所以离开,是因为它需要在UI上进行更新才能实现。

© www.soinside.com 2019 - 2024. All rights reserved.