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

version 1.95, 2025/06/28 13:55:43 version 1.96, 2025/06/28 14:35:11
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 295  function intsecond() { Line 330  function intsecond() {
     return result;      return result;
 }   } 
   
   function intday(days) {
 function intday() {      var thisdate;
    var thisdate=cdays;      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 = '';
       if (pscat == 'grace') {
           funcname = 'parent.gracestringeval()';
       } else {
           funcname = 'parent.intcalc()';
       }
       result += '<select name="date" onchange="'+funcname+';">';
     for (i=0;i<=31;i++) {      for (i=0;i<=31;i++) {
         result += '<option value="'+i+'"';          result += '<option value="'+i+'"';
         if (i==thisdate) {          if (i==thisdate) {
Line 663  function removeIpRule(caller,iptype) { Line 708  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 == 'date') {
                               if ((poss > 0) && (poss <= 31)) {
                                   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);
                               }
                           } else if (sname == 'seconds') {
                               if ((poss > 0) && (poss < 60)) {
                                   total += poss;
                               }
                           }
                       }
                   }
                   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 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];
           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">'+intday(gdays)+' days </span>'+
              '<span style="white-space:nowrap">'+inthour(ghours)+' hours</span><br />'+
              '<span style="white-space:nowrap">'+intminute(gmins)+' mins</span>'+
              '<span style="white-space:nowrap">'+intsecond(gsecs)+' secs</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 925  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 1690  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 2048  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 1915  function init() { Line 2118  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.96


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