Diff for /rat/client/parameter.html between versions 1.95 and 1.98

version 1.95, 2025/06/28 13:55:43 version 1.98, 2025/07/02 16:08:37
Line 96  function choicestart() { Line 96  function choicestart() {
   choicewrite('}');    choicewrite('}');
   choicewrite('table.LC_parmsel_table {font-size: 90%;}');    choicewrite('table.LC_parmsel_table {font-size: 90%;}');
   choicewrite('table.LC_parmsel_table tr td { padding: 5px; border: 1px solid #C8C8C8;}');    choicewrite('table.LC_parmsel_table tr td { padding: 5px; border: 1px solid #C8C8C8;}');
     choicewrite('fieldset.LC_grace { display:inline; }');
     choicewrite('fieldset.LC_grace > legend { font-weight: normal; }');
   choicewrite('-->');    choicewrite('-->');
   choicewrite('</style>');    choicewrite('</style>');
   choicewrite('</head>');    choicewrite('</head>');
Line 247  function month() { Line 249  function month() {
 }  }
   
   
 function intminute() {  function intminute(mins) {
    var thisminutes=cmins;      var thisminutes;
       if ((typeof mins === 'number') && (!isNaN(mins))) {
           thisminutes=mins;
       } else {
           thisminutes=cmins;
       }
     var i;      var i;
     var result = '';      var result = '';
     result += '<select name="minutes" onchange="parent.intcalc();">';      var funcname = '';
       if (pscat == 'grace') {
           funcname = 'parent.gracestringeval()';
       } else {
           funcname = 'parent.intcalc()';
       }
       result += '<select name="minutes" onchange="'+funcname+';">';
     for (i=0;i<=59;i++) {      for (i=0;i<=59;i++) {
         result += '<option value="'+i+'"';          result += '<option value="'+i+'"';
         if (i==thisminutes) {          if (i==thisminutes) {
Line 263  function intminute() { Line 276  function intminute() {
     return result;      return result;
 }   } 
   
 function inthour() {  function inthour(hours) {
    var thishours=chours;      var thishours;
       if ((typeof hours === 'number') && (!isNaN(hours))) {
           thishours=hours;
       } else {
           thishours=chours;
       }
     var i;      var i;
     var result = '';      var result = '';
     result += '<select name="hours" onchange="parent.intcalc();">';      var funcname = '';
       if (pscat == 'grace') {
           funcname = 'parent.gracestringeval()';
       } else {
           funcname = 'parent.intcalc()';
       }
       result += '<select name="hours" onchange="'+funcname+';">';
     for (i=0;i<=23;i++) {      for (i=0;i<=23;i++) {
         result += '<option value="'+i+'"';          result += '<option value="'+i+'"';
         if (i==thishours) {          if (i==thishours) {
Line 279  function inthour() { Line 303  function inthour() {
     return result;      return result;
 }  }
   
 function intsecond() {  function intsecond(secs) {
     var thisseconds=csecs;      var thisseconds;
       if ((typeof secs === 'number') && (!isNaN(secs))) {
           thisseconds=secs;
       } else {
           thisseconds=csecs;
       }
     var i;      var i;
     var result = '';      var result = '';
     result += '<select name="seconds" onchange="parent.intcalc();">';      var funcname = '';
       if (pscat == 'grace') {
           funcname = 'parent.gracestringeval()';
       } else {
           funcname = 'parent.intcalc()';
       }
       result += '<select name="seconds" onchange="'+funcname+';">';
     for (i=0;i<=59;i++) {      for (i=0;i<=59;i++) {
         result += '<option value="'+i+'"';          result += '<option value="'+i+'"';
         if (i==thisseconds) {          if (i==thisseconds) {
Line 293  function intsecond() { Line 328  function intsecond() {
     }      }
     result += '</select>';      result += '</select>';
     return result;      return result;
 }   }
   
   function intweek(weeks) {
       var thisweek;
       if ((typeof weeks === 'number') && (!isNaN(weeks))) {
           thisweek=weeks;
       }
       var i;
       var result ='';
       var funcname = '';
       if (pscat == 'grace') {
           funcname = 'parent.gracestringeval()';
       }
       result += '<select name="weeks" onchange="'+funcname+';">';
       for (i=0;i<=52;i++) {
           result += '<option value="'+i+'"';
           if (i==thisweek) {
               result += ' selected="selected"';
           }
           result += '>'+i+'</option>';
       }
       result += '</select>';
       return result;
   }
   
 function intday() {  function intday(days) {
    var thisdate=cdays;      var thisdate;
       var maxallowed;
       if ((typeof days === 'number') && (!isNaN(days))) {
           thisdate=days;
       } else {
           thisdate=cdays;
       }
     var i;      var i;
     var result ='';      var result ='';
     result += '<select name="date" onchange="parent.intcalc();">';      var funcname = '';
     for (i=0;i<=31;i++) {      if (pscat == 'grace') {
           funcname = 'parent.gracestringeval()';
           maxallowed = 6;
       } else {
           funcname = 'parent.intcalc()';
           maxallowed = 31;
       }
       result += '<select name="date" onchange="'+funcname+';">';
       for (i=0;i<=maxallowed;i++) {
         result += '<option value="'+i+'"';          result += '<option value="'+i+'"';
         if (i==thisdate) {          if (i==thisdate) {
             result += ' selected="selected"';              result += ' selected="selected"';
Line 414  function validateInterval() { Line 485  function validateInterval() {
     assemble();      assemble();
 }  }
   
   function validateGrace() {
       var items = choices.document.getElementsByName('setgrace');
       var needpcr = 0;
       var neednum = 0;
       if (items) {
           if (items.length) {
               if (items.length > 0) {
                   for (var i=0; i<items.length; i++) {
                       var numnotnull = 0;
                       var fracnotnull = 0;
                       var graceDiv = items[i].closest('div');
                       var timeSels = graceDiv.getElementsByTagName("select");
                       if (timeSels.length) {
                           for (var j=0; j<timeSels.length; j++) {
                               var selidx = timeSels[j].selectedIndex;
                               if (selidx >= 0) {
                                   var val = timeSels[j].options[selidx].value;
                                   if ((val !== null) && (val !== '') && (val !== 'undefined')) {
                                       numnotnull = 1;
                                       break;
                                   }
                               }
                           }
                       }
                       var inputElems = graceDiv.getElementsByTagName("input");
                       if (inputElems.length) {
                           for (var j=0; j<inputElems.length; j++) {
                               var iname = inputElems[j].getAttribute('name');
                               if (iname == 'frac') {
                                   var ival = inputElems[j].value;
                                   ival.trim();
                                   var poss = parseFloat(ival);
                                   if ((typeof poss === 'number') && (!isNaN(poss))) {
                                       if ((poss => 0) && (poss <= 1)) {
                                           fracnotnull = 1; 
                                       }
                                   }
                                   break;
                               }
                           }
                       }
                       if (numnotnull && !fracnotnull) {   
                           needpcr ++;
                       }
                       if (fracnotnull && !numnotnull) {
                           neednum ++;
                       }
                   }
                   if (needpcr) {
                       if (needpcr == 1) {
                           alert("Grace period setting is incomplete: enter a number between 0 and 1.0 for 'Partial Credit', or use 'Remove'.");
                       } else {
                           alert(needpcr+" Grace period settings are incomplete: for each enter a number between 0 and 1.0 for 'Partial Credit', or use 'Remove'.");
                       }
                       return;
                   }
                   if (neednum) {
                       if (neednum == 1) {
                           alert("Grace period setting is incomplete: select a number in at least one of the 'Time past due' select boxes, or use 'Remove'."); 
                       } else {
                           alert(neednum +" Grace period settings are incomplete: for each select a number in at least one of the 'Time past due' select boxes, or use 'Remove'."); 
                       }
                       return;
                   }
               }
           }
       }
       assemble();
   }
   
 function validateDeepLink() {  function validateDeepLink() {
     var sform=choices.document.forms.sch;      var sform=choices.document.forms.sch;
     svalue = sform.deeplinkstate.options[sform.deeplinkstate.selectedIndex].value+',';      svalue = sform.deeplinkstate.options[sform.deeplinkstate.selectedIndex].value+',';
Line 663  function removeIpRule(caller,iptype) { Line 804  function removeIpRule(caller,iptype) {
     return;      return;
 }  }
   
   function gracestringeval() {
       var items = choices.document.getElementsByName('setgrace');
       if (items.length) {
           if (items.length > 0) {
               svalue = '';
               for (var i=0; i<items.length; i++) {
                   var graceDiv = items[i].closest('div');
                   var timeSels = graceDiv.getElementsByTagName("select");
                   var total = 0;
                   if (timeSels.length) {
                       for (var j=0; j<timeSels.length; j++) {
                           var sname = timeSels[j].getAttribute('name');
                           var poss = parseInt(timeSels[j].options[timeSels[j].selectedIndex].value);
                           if (sname == 'weeks') {
                               if ((poss > 0) && (poss <= 52)) {
                                   total += (poss * 604800);
                               }
                           } else if (sname == 'date') {
                               if ((poss > 0) && (poss < 7)) {
                                   total += (poss * 86400);
                               }
                           } else if (sname == 'hours') {
                               if ((poss > 0) && (poss < 24)) {
                                   total += (poss * 3600);
                               }
                           } else if (sname == 'minutes') {
                               if ((poss > 0) && (poss < 60)) {
                                   total += (poss * 60);
                               }
                           }
                       }
                   }
                   var inputElems = graceDiv.getElementsByTagName("input");
                   var frac = '';
                   var grad = '';
                   if (inputElems.length) {
                       for (var j=0; j<inputElems.length; j++) {
                           var iname = inputElems[j].getAttribute('name');
                           if (iname == 'frac') {
                               var ival = inputElems[j].value;
                               ival.trim();
                               var poss = parseFloat(ival);
                               if ((typeof poss === 'number') && (!isNaN(poss))) {
                                   if ((poss => 0) && (poss <= 1)) {
                                       frac = poss;
                                   }
                               }
                           } else if (iname == 'grad') {
                               if (inputElems[j].checked) {
                                   grad = 1;
                               } else {
                                   grad = 0;
                               }
                           }
                       }
                   }
                   if (svalue === '') {
                       svalue = total+':'+frac+':'+grad;
                   } else {
                       svalue += ','+total+':'+frac+':'+grad;
                   }
               }
           }
       }
   }
   
   function graceitem(current) {
       var gweeks = 0;
       var gdays = 0;
       var ghours = 0;
       var gmins = 0;
       var gsecs = 0;
       var gfrac = '';
       var checktext = '';
       var patternGrace = /^\d+:(0|1).?\d*:(0|1)$/;
       if ((current != '') && (current != 'undefined') && (patternGrace.test(current))) {
           var graceItems = new Array;
           graceItems = current.split(':');
           gsecs=graceItems[0];
           gweeks=Math.floor(gsecs/604800);
           gsecs -= gweeks*604800;
           gdays=Math.floor(gsecs/86400);
           gsecs -= gdays*86400;
           ghours=Math.floor(gsecs/3600);
           gsecs -= ghours*3600;
           gmins=Math.floor(gsecs/60);
           gsecs -= gmins*60;
           gfrac = graceItems[1];
           if (graceItems[2] == 1) {
               checktext = ' checked="checked"';
           }
       }
       return '<input type="hidden" name="setgrace" value="" />'+
              '<fieldset class="LC_grace"><legend>Time past due</legend>'+
              '<span style="white-space:nowrap">'+intweek(gweeks)+' weeks </span>'+
              '<span style="white-space:nowrap">'+intday(gdays)+' days </span><br />'+
              '<span style="white-space:nowrap">'+inthour(ghours)+' hours </span>'+
              '<span style="white-space:nowrap">'+intminute(gmins)+' mins </span>'+
              '</fieldset><fieldset class="LC_grace"><legend>Partial Credit</legend>'+
              '<input type="text" size="3" name="frac" value="'+gfrac+'" onblur="parent.gracestringeval();" />'+
              '&nbsp;&nbsp;<label><input type="checkbox" value="1" name="grad"'+checktext+' onclick="parent.gracestringeval();" />'+
              'gradual</label></fieldset>'+
              '<a href="#" onclick="parent.removeGrace(this);return false;">Remove</a><hr />';
   }
   
   function addGrace() {
       var frame = window.frames["choices"];
       if (frame.document.getElementById('LC_string_grace_inner')) {
           var innerDiv = frame.document.getElementById('LC_string_grace_inner');
           var graceDiv = frame.document.createElement('div');
           graceDiv.innerHTML = graceitem();
           innerDiv.appendChild(graceDiv);
       }
       return;
   }
   
   function removeGrace(caller) {
       var frame = window.frames["choices"];
       if (frame.document.getElementById('LC_string_grace_inner')) {
           var innerDiv = frame.document.getElementById('LC_string_grace_inner');
           var divToRemove = caller.closest('div');
           if (divToRemove) {
               innerDiv.removeChild(divToRemove);
               gracestringeval();
           }
       }
       return;
   }
   
 function radiostringeval(newval) {  function radiostringeval(newval) {
    svalue=newval;     svalue=newval;
    draw();     draw();
Line 754  function draw() { Line 1024  function draw() {
    if (ptype=='string') {     if (ptype=='string') {
       if (pscat == 'ip') {        if (pscat == 'ip') {
           choicewrite(' action="javascript:ipstringeval();"');            choicewrite(' action="javascript:ipstringeval();"');
         } else if (pscat == 'grace') {
             choicewrite(' action="javascript:gracestringeval();"');
       } else {        } else {
           choicewrite(' action="javascript:stringeval();"');            choicewrite(' action="javascript:stringeval();"');
       }        }
Line 1517  function draw() { Line 1789  function draw() {
            choicewrite('</span></div>');             choicewrite('</span></div>');
            choicewrite('</td></tr></table>');             choicewrite('</td></tr></table>');
        }         }
          if (pscat=='grace') {
              tablestart('Grace period after due date');
              choicewrite('<tr><td colspan="3" valign="top">'+
                          '<div id="LC_string_grace_wrap">'+
                          '<div id="LC_string_grace_inner">');
              if ((svalue != '') && (typeof(svalue) != 'undefined')) {
                  var patternComma = /,/;
                  var patternGrace = /^\d+:(0|1).?\d*:(0|1)$/;
                  var current = new Array;
                  if (patternComma.test(svalue)) {
                      current = svalue.split(',');
                  } else {
                      current = [svalue];
                  } 
                  for (var i=0; i<current.length; i++) {
                      if (patternGrace.test(current[i])) {
                          choicewrite('<div>');
                          choicewrite(graceitem(current[i]));
                          choicewrite('</div>');
                      }
                  }
              } else {
                  choicewrite('<div>');
                  choicewrite(graceitem());
                  choicewrite('</div>');
              }
              choicewrite('</div><button onclick="parent.addGrace();return false;">Add another?</button>');
              choicewrite('</div></td></tr></table>');
          }
    }     }
   
    if (ptype=='color') {     if (ptype=='color') {
Line 1846  function init() { Line 2147  function init() {
      else if (pscat == 'useslots')     { sopt('useslots','Slots control access'); }       else if (pscat == 'useslots')     { sopt('useslots','Slots control access'); }
      else if (pscat == 'deeplink')     { sopt('deeplink','Deep-linked items'); }       else if (pscat == 'deeplink')     { sopt('deeplink','Deep-linked items'); }
      else if (pscat == 'tex')          { sopt('texdisplay','TeX File Display'); }       else if (pscat == 'tex')          { sopt('texdisplay','TeX File Display'); }
        else if (pscat == 'grace')        { sopt('grace','Grace period'); }
      else { pscat = 'any'; }       else { pscat = 'any'; }
      if (pscat != 'deeplink') { sopt('any','String Value'); }       if (pscat != 'deeplink') { sopt('any','String Value'); }
   }    }
Line 1880  function init() { Line 2182  function init() {
       selwrite('<a href="javascript:parent.validateInterval();');        selwrite('<a href="javascript:parent.validateInterval();');
   } else if ((ptype=='string') && (pscat=='deeplink')) {    } else if ((ptype=='string') && (pscat=='deeplink')) {
       selwrite('<a href="javascript:parent.validateDeepLink();');        selwrite('<a href="javascript:parent.validateDeepLink();');
     } else if ((ptype=='string') && (pscat=='grace')) {
         selwrite('<a href="javascript:parent.validateGrace();');
   } else {    } else {
       selwrite('<a href="javascript:parent.assemble();');        selwrite('<a href="javascript:parent.assemble();');
   }    }
Line 1915  function init() { Line 2219  function init() {
           document.getElementById("LCparampopup").rows="60,*";            document.getElementById("LCparampopup").rows="60,*";
       }        }
   }    }
     if (pscat == 'grace')  {
         if (psmap==1) {
             document.getElementById("LCparampopup").rows="105,*";
         } else {
             document.getElementById("LCparampopup").rows="65,*";
         }
     }
   draw();    draw();
     
 }  }

Removed from v.1.95  
changed lines
  Added in v.1.98


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>