---
title: "Single dataset"
date: 2019-08-29 09:00
draft: false
---
<link rel="stylesheet" type="text/css" href="/css/modal.css" />
<script src="/js/processingIndicator.js" type="text/javascript"></script>
<script src="/js/data.js" type="text/javascript"></script>
<script src="/js/loadAllData.js" type="text/javascript"></script>
<script src="/js/getFullDataPath.js" type="text/javascript"></script>
<script src="/js/getTextFromFile.js" type="text/javascript"></script>
<script src="/js/trueTypeOf.js" type="text/javascript"></script>
<script src="/js/noNan.js"></script>
<script src="/js/websiteFile.js"></script>
{{< getDataFilesName >}}
<script>
  window.onload = async function () {
    window.Cite = require('citation-js');
    window.dats = await loadAllData()
    window.data = new CombinedData()
    molecules = new Set(Object.values(window.dats).flat().map((d) => d.molecule))
    for (const el of molecules) {
      $("<option/>", { value: el }).text(el).appendTo($("#select_mol"))
    }
  }
  function select_mol_onchange(event) {
    update_mol(event.target.value)
  }
  function select_abs_onchange(event) {
    update_abs(window.dats["abs"][event.target.value])
  }
  function select_fluo_onchange(event) {
    update_fluo(window.dats["fluo"][event.target.value])
  }
  function select_ZPE_onchange(event) {
    update_ZPE(window.dats["ZPE"][event.target.value])
  }
  async function update_mol(molecule) {
    processingIndicator.isActive = true
    for (const [key, dat] of Object.entries(window.dats)) {
      var s = $(String.raw`#select_${key}`)
      $(s).find('option[value!=""]').remove()
      $(s).find('option[value=""]').first().prop('selected', true)

      dat.forEach((val, index) => {
        if (val.molecule == molecule) {
          $("<option/>", { value: index }).text(val.method.toString()).appendTo(s)
        }
      })
    }
    processingIndicator.isActive = false
  }
  async function update_abs(abs) {
    window.data.Abs = abs
    reload()
  }
  async function update_fluo(fluo) {
    window.data.Fluo = fluo
    reload()
  }
  async function update_ZPE(ZPE) {
    window.data.ZPE = ZPE
    reload()
  }
  async function clear() {
    $("#ex_table > tbody,data_par").each(() => {
      $(this).empty()
    })

  }
  async function reload() {
    processingIndicator.isActive = true
    clear()
    const LatexInline = ['\\(', '\\)']
    var md = [];
    var els = [];
    var customRenderingProp = ["excitations", "sourceFile","DOI"]
    const fullNames={
      Abs:'Absorption',
      Fluo:"Fluorescence",
      ZPE:"ZPE"
    }
    for (const key of Object.keys(window.data)) {
      if (window.data[key] != null) {      
        md.push(fullNames[key])
        for (const prop of Object.keys(window.data[key])) {
          if (!(customRenderingProp.includes(prop)))
            md.push([prop, window.data[key][prop]])
        }
        md.push(window.data[key].DOI)
        md.push(window.data[key].sourceFile)
      }
    }
    sec = $("#meta_sec")
    $(sec).empty()
    for (const element of md) {
      switch (trueTypeOf(element)) {
        case "string":
          $("<h2/>").text(element).appendTo(sec)
          break;
        case "doi":
          var publi = await Cite.async(element.string)
          var output = publi.format('bibliography', {
            format: 'html',
            template: 'apa',
            lang: 'en-US'
          })
          $("<a/>", {
            href: element.url,
            target: "_blank"
          }).html(output).appendTo(sec)
          break
        case "websiteFile":
          $("<a/>", {
            href: element.url,
            target: "_blank",
            href: element.getViewerURL()
          }).text("Go to file").appendTo(sec)
          break
        case "Array":
          k = element[0]
          v = element[1]
          k = k.charAt(0).toUpperCase() + k.slice(1)
          $("<div/>").text(k + ': ' + v).appendTo(sec)
          break;
      }
    }
    var tb = $("#ex_table > tbody");
    $(tb).empty()
    for (const el of window.data.excitations) {
      row = $("<tr/>")
      var rowd = []
      rowd.push(String.raw`${LatexInline[0]} ${el.initial.toLaTeX()} \rightarrow ${el.final.toLaTeX()}${LatexInline[1]}`)
      var e = [el.Eabs, el.Efluo, el.EZPE, el.Eadia, el.Ezz]
      e.forEach((val) => rowd.push(noNanPrecision(val, 3)))
      for (d of rowd) {
        $("<td/>").text(d).appendTo(row)
      }
      tb.append(row)
    }
    await MathJax.typesetPromise();
    $("#ex_sec").attr("hidden", false)
    await MathJax.typesetPromise();
    processingIndicator.isActive = false
  }
</script>
<p>
  In this page you can calculate \(E_\text{adia}\) \(E_\text{0-0}\) from \(E_\text{abs}\) \(E_\text{fluo}\) and \(\Delta
  E_\text{ZPE}\)
  For this select a method for absorption, fluorescence or ZPE
</p>
<form>
  <div>
    <label for="select_mol">Select a molecule</label>
    <select id="select_mol" onchange="select_mol_onchange(event)">
      <option value="" disabled=true selected=true>Select a molecule</option>
    </select>
  </div>
  <div>
    <label for="select_abs">Select an absorption method</label>
    <select id="select_abs" onchange="select_abs_onchange(event)">
      <option value="" disabled=true selected=true>Select an absorption method</option>
    </select>
  </div>
  <div>
    <label for="select_fluo">Select a fluorescence method</label>
    <select id="select_fluo" onchange="select_fluo_onchange(event)">
      <option value="" disabled=true selected=true>Select a fluorescence method</option>
    </select>
  </div>
  <div>
    <label for="select_ZPE">Select a ZPE method</label>
    <select id="select_ZPE" onchange="select_ZPE_onchange(event)">
      <option value="" disabled=true selected=true>Select a ZPE method</option>
    </select>
  </div>
</form>
<h1>Data</h1>
<section id=data>
  <section id="meta_sec"></section>
  <section id="ex_sec" hidden=true>
    <h2>Excitation</h2>
    <table id="ex_table">
      <thead>
        <th>Transition</th>
        <th>\(E_\text{abs}\)</th>
        <th>\(E_\text{fluo}\)</th>
        <th>\(\Delta E_\text{ZPE}\)</th>
        <th>\(E_\text{adia}\)</th>
        <th>\(E_\text{0-0}\)</th>
      </thead>
      <tbody></tbody>
    </table>
  </section>
</section>
{{< waitModal >}}