diff options
| author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-03-06 15:34:26 +0000 |
|---|---|---|
| committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-03-06 15:34:26 +0000 |
| commit | 07a5506c23fdad41781a7a9458c8bb5748f1619d (patch) | |
| tree | 609701e4abe6020ef7d971d07a37a51bc5930d98 /frontends/php/include/forms.inc.php | |
| parent | fa076fa0fb007a382ab291a16a6645d4fb9e583c (diff) | |
| download | zabbix-07a5506c23fdad41781a7a9458c8bb5748f1619d.tar.gz zabbix-07a5506c23fdad41781a7a9458c8bb5748f1619d.tar.xz zabbix-07a5506c23fdad41781a7a9458c8bb5748f1619d.zip | |
added support of AND, OR, AND/OR calculation of action conditions [GUI] (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@3876 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include/forms.inc.php')
| -rw-r--r-- | frontends/php/include/forms.inc.php | 71 |
1 files changed, 59 insertions, 12 deletions
diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php index 963b88a2..8f002940 100644 --- a/frontends/php/include/forms.inc.php +++ b/frontends/php/include/forms.inc.php @@ -2542,6 +2542,7 @@ $repeatdelay = $action["repeatdelay"]; $status = $action["status"]; $scripts = $action["scripts"]; + $evaltype = $action["evaltype"]; if(isset($_REQUEST["repeat"])) { @@ -2585,6 +2586,7 @@ $status = get_request("status",ACTION_STATUS_ENABLED); $uid = get_request("userid",0); $scripts = get_request("scripts",""); + $evaltype = get_request("evaltype",ACTION_EVAL_TYPE_AND_OR); } @@ -2593,37 +2595,82 @@ $cmbActionType->AddItem(ACTION_TYPE_COMMAND,S_REMOTE_COMMAND); $frmAction->AddRow(S_ACTION_TYPE, $cmbActionType); + $cmbSource = new CComboBox('source', $source); + $cmbSource->AddItem(0, S_TRIGGER); + $frmAction->AddRow(S_SOURCE, $cmbSource); // prepare condition list - $cond_el=array(); + sort($conditions); + + $grouped_conditions = array(); + $cond_el = new CTable(); $i=0; foreach($conditions as $val) { - array_push($cond_el, - array( + $label = chr(65 + $i); + $cond_el->AddRow(array( + '('.$label.')', new CCheckBox("rem_condition[]", 'no', null,$i), get_condition_desc( $val["type"], $val["operator"], $val["value"] ) - ), - BR); + )); + $frmAction->AddVar("conditions[$i][type]", $val["type"]); $frmAction->AddVar("conditions[$i][operator]", $val["operator"]); $frmAction->AddVar("conditions[$i][value]", $val["value"]); + + if(!isset($grouped_conditions[$val["type"]]) || !is_array($grouped_conditions[$val["type"]])) + $grouped_conditions[$val["type"]] = array(); + + array_push($grouped_conditions[$val["type"]], $label); + $i++; } + unset($conditions); - if(count($cond_el)==0) - array_push($cond_el, S_NO_CONDITIONS_DEFINED); + if($cond_el->ItemsCount() == 0) + $cond_el = S_NO_CONDITIONS_DEFINED; else - array_push($cond_el, new CButton('del_condition','delete selected')); -// end of condition list preparation + { + if($cond_el->ItemsCount() > 1) + { + switch($evaltype) + { + case ACTION_EVAL_TYPE_AND: + $group_op = $glog_op = S_AND; + break; + case ACTION_EVAL_TYPE_OR: + $group_op = $glog_op = S_OR; + break; + default: + $group_op = S_OR; + $glog_op = S_AND; + } - $cmbSource = new CComboBox('source', $source); - $cmbSource->AddItem(0, S_TRIGGER); - $frmAction->AddRow(S_SOURCE, $cmbSource); + foreach($grouped_conditions as $id => $val) + { + $grouped_conditions[$id] = '('.implode(' '.$group_op.' ', $val).')'; + } + $grouped_conditions = implode(' '.$glog_op.' ', $grouped_conditions); + + $cmb_calc_type = new CComboBox('evaltype', $evaltype, 'submit()'); + $cmb_calc_type->AddItem(ACTION_EVAL_TYPE_AND_OR, S_AND_OR_BIG); + $cmb_calc_type->AddItem(ACTION_EVAL_TYPE_AND, S_AND_BIG); + $cmb_calc_type->AddItem(ACTION_EVAL_TYPE_OR, S_OR_BIG); + $frmAction->AddRow(S_TYPE_OF_CALCULATION, array($cmb_calc_type,new CTextBox('preview', $grouped_conditions, 60,'yes'))); + } + else + { + $frmAction->AddVar('evaltype', ACTION_EVAL_TYPE_AND_OR); + } + $cond_el = array($cond_el, new CButton('del_condition','delete selected')); + } + unset($grouped_conditions); + +// end of condition list preparation $frmAction->AddRow(S_CONDITIONS, $cond_el); |
