【问题标题】:Calculation from Value-List in Archer GRC based on date (with non-empty validation)根据日期从 Archer GRC 中的值列表计算(非空验证)
【发布时间】:2014-06-05 21:45:26
【问题描述】:

我一直在尝试实现这个 Stack Overflow 问题中提出的问题,在这里:

Calculation for status in Archer GRC based on date

尝试基于多个值列表创建状态字段 用户从中选择,但已请求我们检查日期 字段的值以确保已设置估计日期,以便 计算可以确定记录的状态是否为“在 进度”、“迟到”或“未开始”。

...现在,我需要某种实际的弹出警告消息,以提示用户确保日期字段不为空。

如何添加此功能?

【问题讨论】:

    标签: validation drop-down-menu rsa archer rsa-archer-grc


    【解决方案1】:

    为了提供您正在寻找的功能,您必须使用“自定义对象”。它是您放置在 Archer 中的应用程序布局上的一个对象,其中包含 JavaScript 代码。加载应用程序的表单后,将立即执行此代码。 Archer 的应用程序生成器中的每个应用程序的布局编辑器中都有一种特殊类型的字段“自定义对象”可用。

    注意 - 我一般不建议使用自定义对象,也不建议使用 RSA 支持。每次修改给定应用程序中的布局时,您都需要重新测试,有时还需要更正自定义对象的 ID。您可以编写一个独立于 ID 的自定义对象并使用字段名称,但在这种情况下自定义对象将有更多代码。我更喜欢使自定义对象尽可能短。

    您的自定义对象应执行以下操作:

    1. 覆盖顶部工具栏中“保存”和“应用”按钮的行为,可用于 Archer 中的每个申请表。
    2. 一旦“保存”和“应用”按钮被“覆盖”,每次单击它们时都会调用您的函数。所以你需要创建一个点击处理函数。
    3. 您的点击处理函数将检查用户需要填充的值,并返回警告,或调用“保存/应用”按钮的原始处理程序。

    这是您可以开始使用的代码模板:

    <script type="text/javascript">
    // ids are used to locate buttons
    var buttons_ids = [
        "master_btnSave",   //  "Save" button ID
        "master_btnApply"   //  "Apply" button ID
    ];
    // parameters are used in the "onclick" default handlers to call original handlers
    var buttons_parameters = [
        "master$btnSave",   //  "Save" parameter
        "master$btnApply"   //  "Apply" parameter
    ];
    
    document.getElementById(buttons_ids[0]).onclick = function(){   Validator_of_required_fields(buttons_parameters[0])};
    document.getElementById(buttons_ids[1]).onclick = function(){   Validator_of_required_fields(buttons_parameters[1])};
    // end of the script body
    
    //==== Validator function attached to Save and Apply buttons
    function Validator_of_required_fields(parameter){
        // ids of the input fields to validate
        var inputs_to_validate_ip_address = [ "master_DefaultContent_rts_XXX_YYY_t" ];
    
        // jQuery selector is used here. Archer v5.x has jQuery library loaded by default
        // you will need to modify this selector
        var field_value = $('#'+inputs_to_validate_ip_address[0]+':first').val();
    
        if(field_value.length = 0) {
            // Here you are calling Archer Warning function
            var msg = "[Text to display to user]";
            var title = 'Required Field';
            WarningAlert(msg,title);
            return false;
        };
    
        // default onclick processor
        ShowAnimationAndPostback(parameter);
        return false;
    };
    

    此代码上的一些 cmets:

    • 您需要修改验证函数以使用存储在您需要的字段中的值。
    • 我使用了一种非常“不寻常”的方式来覆盖“保存”和“应用”按钮的行为,使用以下代码:
      document.getElementById(buttons_ids[0]).onclick = function(){ bla, bla, bla }
      有更简单的方法可以做到这一点,但这方式自定义对象在 IE8-11、FF、Chrome 和 Opera 中运行良好。如果您找到一种更简单的方法来覆盖与浏览器无关的按钮,请告诉我。
    • 函数WarningAlert(msg,title);是一个内置的Archer警告消息函数。它在 Archer v5.4 中运行良好。如果 WarningAlert 在您的 Archer 版本中不起作用,您可能需要使用简单的 JavaScript 警报功能。
    • 请注意,如果用户打开任何弹出对话框窗口来填充值列表或交叉引用字段,则“保存”和“应用”按钮的行为可能会被覆盖回默认值。如果是这种情况,您必须将提供的代码包装到另一个函数中,并将其附加到 OnLoadWindow 事件(或类似事件)。
    • 我尽量避免在我的自定义对象中使用任何 JavaScript 库。这样,支持它们就更简单了,并且依赖更少。我在提供的示例中使用 jQuery 只是因为一旦加载页面,Archer 就已经使用了这个库。

    Flak,一定要很好地测试你的自定义对象,祝你好运!

    【讨论】:

    • 很好的答案斯坦!有一些小错误和一些稍微不同的方式我可能会实现这个......但是非常详细和解释......我接受了你的回答并支持你。
    • @Flak DiNenno 谢谢!顺便说一句,我远非 JavaScript 专家。所以请纠正我的错误;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2018-05-28
    • 2017-01-22
    • 2021-05-29
    • 1970-01-01
    相关资源
    最近更新 更多