<?xml version='1.0' encoding='UTF-8'?>
<macro name="visus-template" version="1.0">
<!--
    Info ved oprettelse af ny visus macro hvor denne kopieres.
    query-replace på .navn1. til .navn2.
    skift overskrift for begge øjne i resumeet (navn1->navn2)
    skift GUI overskrift for macroen under widgets afsnittet
    fjern resume felter der ikke skal bruges
    fjern tilsvarende GUI felter der ikke skal bruges
  -->
  <resume language="lua">
    out = ''
    if ( getValue('visus.template.missing.right') == '' )
    then
      out = out .. 'Visus, template, o.dxt'
      if ( getValue('visus.template.kontrast.right') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.kontrast.right') .. ' kontrast'
      end
      if ( getValue('visus.template.st_hul.right') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.st_hul.right')
      end
      out = out .. ':\n'
      if ( getValue('visus.template.snellen.right') ~= '' )
      then
        out = out .. 'Snellen: ' .. getValue('visus.template.snellen.right') .. '\n'
      end
      if ( getValue('visus.template.etdrs.right') ~= '' )
      then
        out = out .. 'ETDRS: ' .. getValue('visus.template.etdrs.right') .. '\n'
      end
      out = out .. 'Korr.: ' .. getValue('visus.template.korr.sf.right') .. ' sf'
      if ( getValue('visus.template.korr.cyl.right') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.korr.cyl.right') .. ' cyl'
      end
      if ( getValue('visus.template.korr.grader.right') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.korr.grader.right') .. ' grader'
      end
      out = out .. '\n'

      out = out .. 'Add korr.: ' .. getValue('visus.template.add.sf.right') .. ' sf'
      if ( getValue('visus.template.add.cyl.right') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.add.cyl.right') .. ' cyl'
      end
      if ( getValue('visus.template.add.grader.right') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.add.grader.right') .. ' grader'
      end
      out = out .. '\n'
      if ( getValue('visus.template.missing.left') == '' )
      then
        out = out .. '\n'
      end
    end

    if ( getValue('visus.template.missing.left') == '' )
    then
      out = out .. 'Visus, template, o.sin'
      if ( getValue('visus.template.kontrast.left') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.kontrast.left') .. ' kontrast'
      end
      if ( getValue('visus.template.st_hul.left') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.st_hul.left')
      end
      out = out .. ':\n'
      if ( getValue('visus.template.snellen.left') ~= '' )
      then
        out = out .. 'Snellen: ' .. getValue('visus.template.snellen.left') .. '\n'
      end
      if ( getValue('visus.template.etdrs.left') ~= '' )
      then
        out = out .. 'ETDRS: ' .. getValue('visus.template.etdrs.left') .. '\n'
      end
      out = out .. 'Korr.: ' .. getValue('visus.template.korr.sf.left') .. ' sf'
      if ( getValue('visus.template.korr.cyl.left') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.korr.cyl.left') .. ' cyl'
      end
      if ( getValue('visus.template.korr.grader.left') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.korr.grader.left') .. ' grader'
      end
      out = out .. '\n'

      out = out .. 'Add korr.: ' .. getValue('visus.template.add.sf.left') .. ' sf'
      if ( getValue('visus.template.add.cyl.left') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.add.cyl.left') .. ' cyl'
      end
      if ( getValue('visus.template.add.grader.left') ~= '' )
      then
        out = out .. ', ' .. getValue('visus.template.add.grader.left') .. ' grader'
      end
      out = out .. '\n'
      if ( getValue('visus.template.missing.left') == '' )
      then
        out = out .. '\n'
      end
    end

    return out
  </resume>
  <queries>
    <query service="pracro" class="missing_eye_right" ttl="1000000"/>
    <query service="pracro" class="missing_eye_left" ttl="1000000"/>
  </queries>
  <maps>
    <map name="missing_eye_right_map">
      value = 0
      timestamp = 0
      source = ''

      if( missing_eye_right )
      then
        if( missing_eye_right.value and missing_eye_right.value == '' )
        then
          value = ''
          timestamp = missing_eye_right.timestamp
          source = missing_eye_right.source
        else
          value = 'mangler'
          timestamp = missing_eye_right.timestamp
          source = missing_eye_right.source
        end
      end
      return value, timestamp, source
    </map>
    <map name="missing_eye_left_map">
      value = 0
      timestamp = 0
      source = ''
      
      if( missing_eye_left )
      then
        if( missing_eye_left.value and missing_eye_left.value == '' )
        then
          value = ''
          timestamp = missing_eye_left.timestamp
          source = missing_eye_left.source
        else
          value = 'mangler'
          timestamp = missing_eye_left.timestamp
          source = missing_eye_left.source
        end
      end
      return value, timestamp, source
    </map>
  </maps>
  <scripts>
     <script language="lua" name="lt20gt-25">
      if(value == '')
      then
        return false
      end

      value = string.gsub(value, ',', '.')
      if(tonumber(value) &gt;= -25 and tonumber(value) &lt;= 20)
      then
        return true
      else
        return false
      end
    </script>
    <script language="lua" name="lt10gt-15">
      if(value == '')
      then
        return true
      end

      value = string.gsub(value, ',', '.')
      if(tonumber(value) &gt;= -15 and tonumber(value) &lt;= 10)
      then
        return true
      else
        return false
      end
    </script>
    <script language="lua" name="lt359gt0">
      if(value == '')
      then
        return true
      end

      value = string.gsub(value, ',', '.')
      if(tonumber(value) &gt;= 0 and tonumber(value) &lt;= 359)
      then
        return true
      else
        return false
      end
    </script>
    <script language="lua" name="snellen.right">
      if (value == '')
      then
        if ( getValue('visus.template.etdrs.right') == '' )
        then
          return false
        end
      end
      return true
    </script>
    <script language="lua" name="snellen.left">
      if (value == '')
      then
        if ( getValue('visus.template.etdrs.left') == '' )
        then
          return false
        end
      end
      return true
    </script>
    <script language="lua" name="etdrs.right">
      if (value == '')
      then
        if ( getValue('visus.template.snellen.right') == '' )
        then
          return false
        end
      end
      return true
    </script>
    <script language="lua" name="etdrs.left">
      if (value == '')
      then
        if ( getValue('visus.template.snellen.left') == '' )
        then
          return false
        end
      end
      return true
    </script>
    <script language="lua" name="right_eye">
      if ( value == 'mangler' )
      then
        disable('right_eye_frame')
      else
        enable('right_eye_frame')
      end
      return true
    </script>
    <script language="lua" name="left_eye">
      if ( value == 'mangler' )
      then
        disable('left_eye_frame')
      else
        enable('left_eye_frame')
      end
      return true
    </script>
  </scripts>
  <widgets caption="Visus - manifest refraktion"
          layout="vbox">

    <frame layout="hbox">
      
      <!-- Højre øje -->
      <frame layout="vbox">
	<checkbox caption="Der er ikke målt på højre øje"
		  name="visus.template.missing.right" script="right_eye"
		  map="missing_eye_right_map"
		  truevalue="mangler" falsevalue="" value=""/>
	<frame name="right_eye_frame" caption="Højre øje" layout="vbox">
	  <frame layout="hbox">
	    <label caption="Kontrast:"/>
	    <combobox name="visus.template.kontrast.right" value="">
	      <item caption="Ej relevant" value=""/>
	      <item caption="20%" value="20%"/>
	      <item caption="50%" value="50%"/>
	      <item caption="75%" value="75%"/>
	    </combobox>
	    <spacer/>
	  </frame>
	  <frame layout="hbox">
	    <checkbox name="visus.template.st_hul.right" caption="Der er anvendt st. hul" truevalue="st. hul er anvendt" falsevalue=""/>
	  </frame>
	  <frame layout="hbox">
	    <frame layout="vbox">
	      <label caption="Snellen:"/>
	      <combobox name="visus.template.snellen.right" layout="vbox" type="search" value="" script="snellen.right">
		<item caption="Ikke udfyldt" value=""/>
		<item caption="2,0" value="2,0"/>
		<item caption="1,6" value="1,6"/>
		<item caption="1,33" value="1,33"/>
		<item caption="1,0" value="1,0"/>
		<item caption="0,8" value="0,8"/>
		<item caption="0,67" value="0,67"/>
		<item caption="0,5" value="0,5"/>
		<item caption="0,4" value="0,4"/>
		<item caption="0,32" value="0,32"/>
		<item caption="0,25" value="0,25"/>
		<item caption="0,2" value="0,2"/>
		<item caption="0,16" value="0,16"/>
		<item caption="0,125" value="0,125"/>
		<item caption="0,1" value="0,1"/>
		<item caption="0,08" value="0,08"/>
		<item caption="0,05" value="0,05"/>
		<item caption="6/60" value="6/60"/>
		<item caption="3/60" value="3/60"/>
		<item caption="1/18" value="1/18"/>
		<item caption="1/24" value="1/24"/>
		<item caption="1/36" value="1/36"/>
		<item caption="1/60" value="1/60"/>
		<item caption="FGT" value="FGT"/>
		<item caption="HBV" value="HBV"/>
		<item caption="+L+P" value="+L+P"/>
		<item caption="+L-P" value="+L-P"/>
		<item caption="-L" value="-L"/>
	      </combobox>
	    </frame>
	    <frame layout="vbox">
	      <label caption="ETDRS:"/>
	      <combobox name="visus.template.etdrs.right" value="" type="search" script="etdrs.right">
		<item caption="Ikke udfyldt" value=""/>
		<item caption="0" value="0"/>
		<item caption="1" value="1"/>
		<item caption="2" value="2"/>
		<item caption="3" value="3"/>
		<item caption="4" value="4"/>
		<item caption="5" value="5"/>
		<item caption="6" value="6"/>
		<item caption="7" value="7"/>
		<item caption="8" value="8"/>
		<item caption="9" value="9"/>
		<item caption="10" value="10"/>
		<item caption="11" value="11"/>
		<item caption="12" value="12"/>
		<item caption="13" value="13"/>
		<item caption="14" value="14"/>
		<item caption="15" value="15"/>
		<item caption="16" value="16"/>
		<item caption="17" value="17"/>
		<item caption="18" value="18"/>
		<item caption="19" value="19"/>
		<item caption="20" value="20"/>
		<item caption="21" value="21"/>
		<item caption="22" value="22"/>
		<item caption="23" value="23"/>
		<item caption="24" value="24"/>
		<item caption="25" value="25"/>
		<item caption="26" value="26"/>
		<item caption="27" value="27"/>
		<item caption="28" value="28"/>
		<item caption="29" value="29"/>
		<item caption="30" value="30"/>
		<item caption="31" value="31"/>
		<item caption="32" value="32"/>
		<item caption="33" value="33"/>
		<item caption="34" value="34"/>
		<item caption="35" value="35"/>
		<item caption="36" value="36"/>
		<item caption="37" value="37"/>
		<item caption="38" value="38"/>
		<item caption="39" value="39"/>
		<item caption="40" value="40"/>
		<item caption="41" value="41"/>
		<item caption="42" value="42"/>
		<item caption="43" value="43"/>
		<item caption="44" value="44"/>
		<item caption="45" value="45"/>
		<item caption="46" value="46"/>
		<item caption="47" value="47"/>
		<item caption="48" value="48"/>
		<item caption="49" value="49"/>
		<item caption="50" value="50"/>
		<item caption="51" value="51"/>
		<item caption="52" value="52"/>
		<item caption="53" value="53"/>
		<item caption="54" value="54"/>
		<item caption="55" value="55"/>
		<item caption="56" value="56"/>
		<item caption="57" value="57"/>
		<item caption="58" value="58"/>
		<item caption="59" value="59"/>
		<item caption="60" value="60"/>
		<item caption="61" value="61"/>
		<item caption="62" value="62"/>
		<item caption="63" value="63"/>
		<item caption="64" value="64"/>
		<item caption="65" value="65"/>
		<item caption="66" value="66"/>
		<item caption="67" value="67"/>
		<item caption="68" value="68"/>
		<item caption="69" value="69"/>
		<item caption="70" value="70"/>
		<item caption="71" value="71"/>
		<item caption="72" value="72"/>
		<item caption="73" value="73"/>
		<item caption="74" value="74"/>
		<item caption="75" value="75"/>
		<item caption="76" value="76"/>
		<item caption="77" value="77"/>
		<item caption="78" value="78"/>
		<item caption="79" value="79"/>
		<item caption="80" value="80"/>
		<item caption="81" value="81"/>
		<item caption="82" value="82"/>
		<item caption="83" value="83"/>
		<item caption="84" value="84"/>
		<item caption="85" value="85"/>
		<item caption="86" value="86"/>
		<item caption="87" value="87"/>
		<item caption="88" value="88"/>
		<item caption="89" value="89"/>
		<item caption="90" value="90"/>
		<item caption="91" value="91"/>
		<item caption="92" value="92"/>
		<item caption="93" value="93"/>
		<item caption="94" value="94"/>
		<item caption="95" value="95"/>
		<item caption="96" value="96"/>
		<item caption="97" value="97"/>
		<item caption="98" value="98"/>
		<item caption="99" value="99"/>
		<item caption="100" value="100"/>
	      </combobox>
	    </frame>
	  </frame>
	  <frame layout="vbox">
	    <frame layout="hbox">
	      <frame layout="vbox">
		<label/>
		<label caption="Korr:"/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Sf:"/>
		<lineedit name="visus.template.korr.sf.right" regexp="[+-]{0,1}\d{1,2},\d{2}" script="lt20gt-25" value=""/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Cyl:"/>
		<lineedit name="visus.template.korr.cyl.right" regexp="|[-+]?[\d]{1,2},[\d]{2,2}" script="lt10gt-15" value=""/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Grader:"/>
		<lineedit name="visus.template.korr.grader.right" regexp="|[\d]+" script="lt359gt0" value=""/>
	      </frame>
	    </frame>
	    <frame layout="hbox">
	      <frame layout="vbox">
		<label caption=""/>
		<label caption="Add:"/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Sf:"/>
		<lineedit name="visus.template.add.sf.right" regexp="[+-]{0,1}\d{1,2},\d{2}" script="lt20gt-25" value=""/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Cyl:"/>
		<lineedit name="visus.template.add.cyl.right" regexp="|[+-]{0,1}\d{1,2},\d{2}" script="lt10gt-15" value=""/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Grader:"/>
		<lineedit name="visus.template.add.grader.right" regexp="|[\d]+" script="lt359gt0" value=""/>
	      </frame>
	    </frame>
	  </frame>
	</frame>
      </frame>
      
      <!-- Venstre øje -->
      <frame layout="vbox">
	<checkbox caption="Der er ikke målt på venstre øje"
		  name="visus.template.missing.left" script="left_eye"
		  map="missing_eye_left_map"
		  truevalue="mangler" falsevalue="" value=""/>
	<frame name="left_eye_frame" caption="Venstre øje" layout="vbox">
	  <frame layout="hbox">
	    <label caption="Kontrast:"/>
	    <combobox name="visus.template.kontrast.left" value="">
	      <item caption="Ej relevant" value=""/>
	      <item caption="20%" value="20%"/>
	      <item caption="50%" value="50%"/>
	      <item caption="75%" value="75%"/>
	    </combobox>
	    <spacer/>
	  </frame>
	  <frame layout="hbox">
	    <checkbox name="visus.template.st_hul.left" caption="Der er anvendt st. hul" truevalue="st. hul er anvendt" falsevalue=""/>
	  </frame>
	  <frame layout="hbox">
	    <frame layout="vbox">
	      <label caption="Snellen:"/>
	      <combobox name="visus.template.snellen.left" layout="vbox" type="search" value="" script="snellen.left">
		<item caption="Ikke udfyldt" value=""/>
		<item caption="2,0" value="2,0"/>
		<item caption="1,6" value="1,6"/>
		<item caption="1,33" value="1,33"/>
		<item caption="1,0" value="1,0"/>
		<item caption="0,8" value="0,8"/>
		<item caption="0,67" value="0,67"/>
		<item caption="0,5" value="0,5"/>
		<item caption="0,4" value="0,4"/>
		<item caption="0,32" value="0,32"/>
		<item caption="0,25" value="0,25"/>
		<item caption="0,2" value="0,2"/>
		<item caption="0,16" value="0,16"/>
		<item caption="0,125" value="0,125"/>
		<item caption="0,1" value="0,1"/>
		<item caption="0,08" value="0,08"/>
		<item caption="0,05" value="0,05"/>
		<item caption="6/60" value="6/60"/>
		<item caption="3/60" value="3/60"/>
		<item caption="1/18" value="1/18"/>
		<item caption="1/24" value="1/24"/>
		<item caption="1/36" value="1/36"/>
		<item caption="1/60" value="1/60"/>
		<item caption="FGT" value="FGT"/>
		<item caption="HBV" value="HBV"/>
		<item caption="+L+P" value="+L+P"/>
		<item caption="+L-P" value="+L-P"/>
		<item caption="-L" value="-L"/>
	      </combobox>
	    </frame>
	    <frame layout="vbox">
	      <label caption="ETDRS:"/>
	      <combobox name="visus.template.etdrs.left" value="" type="search" script="etdrs.left">
		<item caption="Ikke udfyldt" value=""/>
		<item caption="0" value="0"/>
		<item caption="1" value="1"/>
		<item caption="2" value="2"/>
		<item caption="3" value="3"/>
		<item caption="4" value="4"/>
		<item caption="5" value="5"/>
		<item caption="6" value="6"/>
		<item caption="7" value="7"/>
		<item caption="8" value="8"/>
		<item caption="9" value="9"/>
		<item caption="10" value="10"/>
		<item caption="11" value="11"/>
		<item caption="12" value="12"/>
		<item caption="13" value="13"/>
		<item caption="14" value="14"/>
		<item caption="15" value="15"/>
		<item caption="16" value="16"/>
		<item caption="17" value="17"/>
		<item caption="18" value="18"/>
		<item caption="19" value="19"/>
		<item caption="20" value="20"/>
		<item caption="21" value="21"/>
		<item caption="22" value="22"/>
		<item caption="23" value="23"/>
		<item caption="24" value="24"/>
		<item caption="25" value="25"/>
		<item caption="26" value="26"/>
		<item caption="27" value="27"/>
		<item caption="28" value="28"/>
		<item caption="29" value="29"/>
		<item caption="30" value="30"/>
		<item caption="31" value="31"/>
		<item caption="32" value="32"/>
		<item caption="33" value="33"/>
		<item caption="34" value="34"/>
		<item caption="35" value="35"/>
		<item caption="36" value="36"/>
		<item caption="37" value="37"/>
		<item caption="38" value="38"/>
		<item caption="39" value="39"/>
		<item caption="40" value="40"/>
		<item caption="41" value="41"/>
		<item caption="42" value="42"/>
		<item caption="43" value="43"/>
		<item caption="44" value="44"/>
		<item caption="45" value="45"/>
		<item caption="46" value="46"/>
		<item caption="47" value="47"/>
		<item caption="48" value="48"/>
		<item caption="49" value="49"/>
		<item caption="50" value="50"/>
		<item caption="51" value="51"/>
		<item caption="52" value="52"/>
		<item caption="53" value="53"/>
		<item caption="54" value="54"/>
		<item caption="55" value="55"/>
		<item caption="56" value="56"/>
		<item caption="57" value="57"/>
		<item caption="58" value="58"/>
		<item caption="59" value="59"/>
		<item caption="60" value="60"/>
		<item caption="61" value="61"/>
		<item caption="62" value="62"/>
		<item caption="63" value="63"/>
		<item caption="64" value="64"/>
		<item caption="65" value="65"/>
		<item caption="66" value="66"/>
		<item caption="67" value="67"/>
		<item caption="68" value="68"/>
		<item caption="69" value="69"/>
		<item caption="70" value="70"/>
		<item caption="71" value="71"/>
		<item caption="72" value="72"/>
		<item caption="73" value="73"/>
		<item caption="74" value="74"/>
		<item caption="75" value="75"/>
		<item caption="76" value="76"/>
		<item caption="77" value="77"/>
		<item caption="78" value="78"/>
		<item caption="79" value="79"/>
		<item caption="80" value="80"/>
		<item caption="81" value="81"/>
		<item caption="82" value="82"/>
		<item caption="83" value="83"/>
		<item caption="84" value="84"/>
		<item caption="85" value="85"/>
		<item caption="86" value="86"/>
		<item caption="87" value="87"/>
		<item caption="88" value="88"/>
		<item caption="89" value="89"/>
		<item caption="90" value="90"/>
		<item caption="91" value="91"/>
		<item caption="92" value="92"/>
		<item caption="93" value="93"/>
		<item caption="94" value="94"/>
		<item caption="95" value="95"/>
		<item caption="96" value="96"/>
		<item caption="97" value="97"/>
		<item caption="98" value="98"/>
		<item caption="99" value="99"/>
		<item caption="100" value="100"/>
	      </combobox>
	    </frame>
	  </frame>
	  <frame layout="vbox">
	    <frame layout="hbox">
	      <frame layout="vbox">
		<label/>
		<label caption="Korr:"/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Sf:"/>
		<lineedit name="visus.template.korr.sf.left" regexp="[+-]{0,1}\d{1,2},\d{2}" script="lt20gt-25" value=""/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Cyl:"/>
		<lineedit name="visus.template.korr.cyl.left" regexp="|[-+]?[\d]{1,2},[\d]{2,2}" script="lt10gt-15" value=""/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Grader:"/>
		<lineedit name="visus.template.korr.grader.left" regexp="|[\d]+" script="lt359gt0" value=""/>
	      </frame>
	    </frame>
	    <frame layout="hbox">
	      <frame layout="vbox">
		<label caption=""/>
		<label caption="Add:"/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Sf:"/>
		<lineedit name="visus.template.add.sf.left" regexp="[+-]{0,1}\d{1,2},\d{2}" script="lt20gt-25" value=""/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Cyl:"/>
		<lineedit name="visus.template.add.cyl.left" regexp="|[+-]{0,1}\d{1,2},\d{2}" script="lt10gt-15" value=""/>
	      </frame>
	      <frame layout="vbox">
		<label caption="Grader:"/>
		<lineedit name="visus.template.add.grader.left" regexp="|[\d]+" script="lt359gt0" value=""/>
	      </frame>
	    </frame>
	  </frame>
	</frame>
      </frame>

    </frame>

    <!-- Knapper -->
    <frame layout="hbox">
      <spacer />
      <button caption="Gem" action="commit"/>
    </frame>
  </widgets>
</macro>