From mboxrd@z Thu Jan 1 00:00:00 1970 From: rmccabe@sourceware.org Date: 17 Aug 2006 16:22:44 -0000 Subject: [Cluster-devel] conga/luci cluster/form-macros homebase/homeba ... Message-ID: <20060817162244.8352.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: conga Changes by: rmccabe at sourceware.org 2006-08-17 16:22:41 Modified files: luci/cluster : form-macros luci/homebase : homebase_common.js Added files: luci/cluster : validate_config_fence.js validate_config_multicast.js validate_config_qdisk.js Removed files: luci/cluster : validate_qdisk.js Log message: more javascript form validation Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_config_fence.js.diff?cvsroot=cluster&r1=NONE&r2=1.1 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_config_multicast.js.diff?cvsroot=cluster&r1=NONE&r2=1.1 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_config_qdisk.js.diff?cvsroot=cluster&r1=NONE&r2=1.1 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.49&r2=1.50 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_qdisk.js.diff?cvsroot=cluster&r1=1.2&r2=NONE http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/homebase_common.js.diff?cvsroot=cluster&r1=1.4&r2=1.5 /cvs/cluster/conga/luci/cluster/validate_config_fence.js,v --> standard output revision 1.1 --- conga/luci/cluster/validate_config_fence.js +++ - 2006-08-17 16:22:42.036280000 +0000 @@ -0,0 +1,23 @@ +function validate_form(form) { + var errors = new Array(); + + if (!form) + return (-1); + + if (!form.post_fail_delay || str_is_blank(form.post_fail_delay.value)) + errors.push('No post fail delay value was given.'); + else if (!is_valid_int(form.post_fail_delay.value, 0, null)) + errors.push('The post fail delay must be a non-negative integer value.'); + + if (!form.post_join_delay || str_is_blank(form.post_join_delay.value)) + errors.push('No post join delay value was given.'); + else if (!is_valid_int(form.post_join_delay.value, 0, null)) + errors.push('The post join delay must be a non-negative integer value.'); + + if (error_dialog(errors)) + return (-1); + + if (confirm('Update cluster fence daemon properties?')) + form.submit(); + return (0); +} /cvs/cluster/conga/luci/cluster/validate_config_multicast.js,v --> standard output revision 1.1 --- conga/luci/cluster/validate_config_multicast.js +++ - 2006-08-17 16:22:42.136456000 +0000 @@ -0,0 +1,56 @@ +var prev_mcast_str = ''; + +function disable_mcast(addrId) { + addrObj = document.getElementById(addrId); + if (!addrObj || addrObj.disabled) + return; + addrObj.disabled = true; + prev_mcast_str = addrObj.value; + addrObj.value = ''; +} + +function enable_mcast(addrId) { + addrObj = document.getElementById(addrId); + if (!addrObj || !addrObj.disabled) + return; + addrObj.disabled = false; + addrObj.value = prev_mcast_str; +} + +function validate_form(form) { + var errors = new Array(); + + if (!form.mcast) { + errors.push('You did not specify how the multicast address should be chosen.'); + error_dialog(errors); + return (-1); + } + + var mcast; + if (form.mcast.length > 0 && form.mcast[0].checked) + mcast = 0; + else if (form.mcast.length > 1 && form.mcast[1].checked) + mcast = 1; + else + errors.push('An invalid value was given while specifying how the multicast address should be chosen.'); + + if (error_dialog(errors)) + return (-1); + + if (mcast) { + if (!form.mcast_address || str_is_blank(form.mcast_address.value)) + errors.push('No multicast address was given.'); + else { + var err = isValidHost(form.mcast_address.value); + if (err) + errors.push(err); + } + } + + if (error_dialog(errors)) + return (-1); + + if (confirm('Update cluster multicast properties?')) + form.submit(); + return (0); +} /cvs/cluster/conga/luci/cluster/validate_config_qdisk.js,v --> standard output revision 1.1 --- conga/luci/cluster/validate_config_qdisk.js +++ - 2006-08-17 16:22:42.317675000 +0000 @@ -0,0 +1,246 @@ +function check_heuristic(hnum, form) { + var errors = new Array(); + + if (hnum < 0) + errors.push('An invalid heuristic number was given: ' + hnum); + else if (hnum > 9) + errors.push('A maximum of 10 heuristics is allowed.'); + + if (errors.length > 0) + return (errors); + + hstr = 'heuristic' + hnum + ':'; + + hname = document.getElementById(hstr + 'hname'); + if (!hname || str_is_blank(hname.value)) + errors.push('No name was given for heuristic ' + (hnum + 1)); + else + hname = hname.value; + + hpath = document.getElementById(hstr + 'hpath'); + if (!hpath || str_is_blank(hpath.value)) + errors.push('No path was given for heuristic ' + (hnum + 1)); + else + hpath = hpath.value; + + hint = document.getElementById(hstr + 'hinterval'); + if (!hint || str_is_blank(hint.value)) + errors.push('No interval was given for heuristic ' + (hnum + 1)); + else + hint = hint.value; + + hscore = document.getElementById(hstr + 'hscore'); + if (!hscore || str_is_blank(hscore.value)) + errors.push('No score was given for heuristic ' + (hnum + 1)); + else + hscore = hscore.value; + + if (errors.length == 4) { + /* The entry is blank -- ignore it. */ + return (null); + } + + /* TODO: hname, hpath */ + if (hint && !is_valid_int(hint, 1, null)) + errors.push('Heuristic interval values must be integers greater than 0.'); + + if (hscore && !is_valid_int(hscore, null, null)) + errors.push('Heuristic score values must be integers.'); + + if (errors.length > 0) + return (errors); + + return (null); +} + +function validate_form(form) { + var errors = new Array(); + if (!form || !form.quorumd) { + errors.push('You did not specify whether or not to use a quorum partition.'); + return (error_dialog(errors)); + } + + if (form.quorumd[0].checked) + qpart = 0 + else if (form.quorumd[1].checked) + qpart = 1; + else { + errors.push('You submitted an invalid value while specifying whether or not to use a quorum partition: ' + qpart + '.'); + return (error_dialog(errors)); + } + + if (qpart) { + if (!form.interval || str_is_blank(form.interval.value)) + errors.push('No interval setting was given.'); + else { + if (!is_valid_int(form.interval.value, 1, null)) + errors.push('Interval values must be integers greater than 0.'); + } + + if (!form.votes || str_is_blank(form.votes.value)) + errors.push('No votes setting was given.'); + else { + if (!is_valid_int(form.votes.value, null, null)) + errors.push('Votes values must be integers.'); + } + + if (!form.tko || str_is_blank(form.tko.value)) + errors.push('No TKO setting was given.'); + else { + if (!is_valid_int(form.tko.value, null, null)) + errors.push('TKO values must be integers.'); + } + + if (!form.min_score || str_is_blank(form.min_score.value)) + errors.push('No minimum score setting was given.'); + else { + if (!is_valid_int(form.min_score.value, null, null)) + errors.push('Minimum score values must be integers.'); + } + + if (!form.device || str_is_blank(form.device.value)) + errors.push('No device setting was given.'); + else { + /* TODO: check this */ + device = form.device.value; + } + + if (!form.label || str_is_blank(form.label.value)) + errors.push('No label setting was given.'); + else { + /* TODO: check this */ + label = form.device.label; + } + + hnum = document.getElementById('num_heuristics'); + if (hnum) { + hnum = Number(hnum.value); + if (hnum == 0) + hnum++; + for (var i = 0 ; i < hnum ; i++) { + var err = check_heuristic(i, form); + if (err) + errors = errors.concat(err); + } + } + + if (error_dialog(errors)) + return (-1); + } + + if (confirm('Update quorum partition properties?')) + form.submit() +} + +var oldInput = null; + +function addHeuristic(parent_name) { + parent = document.getElementById(parent_name); + if (!parent) + return; + hnum = document.getElementById('num_heuristics'); + if (!hnum) + return; + + var cur_hnum = Number(hnum.value) + 1; + if (cur_hnum >= 10) { + alert('There is a maximum of 10 heuristics.'); + return; + } + hstr = 'heuristic' + cur_hnum + ':'; + + name_td = document.createElement('td'); + name_td.className = 'systemsTable'; + name_input = document.createElement('input'); + name_input.className = 'qdname qdisk'; + name_input.setAttribute('name', hstr + 'hname'); + name_input.setAttribute('id', hstr + 'hname'); + name_input.setAttribute('type', 'text'); + name_td.appendChild(name_input); + + path_td = document.createElement('td'); + path_td.className = 'systemsTable'; + path_input = document.createElement('input'); + path_input.className = 'qdpath qdisk'; + path_input.setAttribute('name', hstr + 'hprog'); + path_input.setAttribute('id', hstr + 'hprog'); + path_input.setAttribute('type', 'text'); + path_td.appendChild(path_input); + + interval_td = document.createElement('td'); + interval_td.className = 'systemsTable'; + interval_input = document.createElement('input'); + interval_input.className = 'qdint qdisk'; + interval_input.setAttribute('name', hstr + 'hinterval'); + interval_input.setAttribute('id', hstr + 'hinterval'); + interval_input.setAttribute('type', 'text'); + interval_td.appendChild(interval_input); + + score_td = document.createElement('td'); + score_td.className = 'systemsTable'; + score_input = document.createElement('input'); + score_input.className = 'qdscore qdisk'; + score_input.setAttribute('name', hstr + 'hscore'); + score_input.setAttribute('id', hstr + 'hscore'); + score_input.setAttribute('type', 'input'); + score_td.appendChild(score_input); + + tr = document.createElement('tr'); + tr.className = 'systemsTable'; + tr.appendChild(name_td); + tr.appendChild(path_td); + tr.appendChild(interval_td); + tr.appendChild(score_td); + parent.appendChild(tr); + hnum.value++; +} + +function disableChildrenInput(parent_name) { + parent = document.getElementById(parent_name); + if (!parent) + return; + + inputElem = parent.getElementsByTagName('input'); + if (!inputElem || inputElem.length < 1) { + oldInput = null; + return; + } + if (inputElem[0].disabled) + return; + oldInput = new Array(inputElem.length); + for (var i = 0 ; i < inputElem.length ; i++) { + e = inputElem[i]; + + e.disabled = true; + if (e.type == 'button') + continue; + oldInput[e.name] = e.value; + e.value = ''; + } +} + +function enableChildrenInput(parent_name) { + parent = document.getElementById(parent_name); + if (!parent) + return; + + inputElem = parent.getElementsByTagName('input'); + if (!inputElem || inputElem.length < 1) { + return; + } + + if (!inputElem[0].disabled) + return; + + for (var i = 0 ; i < inputElem.length ; i++) { + e = inputElem[i]; + e.disabled = false; + if (e.type == 'button') + continue; + if (oldInput && oldInput[e.name]) + e.value = oldInput[e.name]; + else + e.value = ''; + } + oldInput = null; +} --- conga/luci/cluster/form-macros 2006/08/16 23:40:03 1.49 +++ conga/luci/cluster/form-macros 2006/08/17 16:22:41 1.50 @@ -361,6 +361,8 @@
+ + @@ -399,28 +401,10 @@
- + - function disable_mcast(addrId) { - addrObj = document.getElementById(addrId); - if (!addrObj || addrObj.disabled) - return; - addrObj.disabled = true; - prev_mcast_str = addrObj.value; - addrObj.value = ''; - } - - function enable_mcast(addrId) { - addrObj = document.getElementById(addrId); - if (!addrObj || !addrObj.disabled) - return; - addrObj.disabled = false; - addrObj.value = prev_mcast_str; - } - - - +
@@ -389,7 +391,7 @@
- +
@@ -476,7 +460,7 @@
- +
@@ -466,7 +450,7 @@
- +