|  | @@ -3,8 +3,10 @@ import { StateInterface } from '../index'
 | 
											
												
													
														|  |  import { guiRuntimeStateInterface } from './state'
 |  |  import { guiRuntimeStateInterface } from './state'
 | 
											
												
													
														|  |  import { composeLabelFromPageData } from 'components/utils'
 |  |  import { composeLabelFromPageData } from 'components/utils'
 | 
											
												
													
														|  |  import { load } from 'js-yaml'
 |  |  import { load } from 'js-yaml'
 | 
											
												
													
														|  | 
 |  | +import Spline from 'cubic-spline-ts'
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -async function loadMaterialData(filename:string){ /* eslint-disable */
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +async function loadMaterialData(filename:string):Promise<number[][] | undefined>{ /* eslint-disable */
 | 
											
												
													
														|  |    // TODO enable eslint, which is disabled now due to unknown result type of load() from js-yaml
 |  |    // TODO enable eslint, which is disabled now due to unknown result type of load() from js-yaml
 | 
											
												
													
														|  |    // TODO implement formulas
 |  |    // TODO implement formulas
 | 
											
												
													
														|  |    // TODO implement multiple '- type:' in one file (e.g. it can be 'tabulated n' and 'tabulated k'
 |  |    // TODO implement multiple '- type:' in one file (e.g. it can be 'tabulated n' and 'tabulated k'
 | 
											
										
											
												
													
														|  | @@ -16,12 +18,10 @@ async function loadMaterialData(filename:string){ /* eslint-disable */
 | 
											
												
													
														|  |      const Ag_data = await response.text()
 |  |      const Ag_data = await response.text()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      const doc = await load(Ag_data) as any
 |  |      const doc = await load(Ag_data) as any
 | 
											
												
													
														|  | -    console.log(doc)
 |  | 
 | 
											
												
													
														|  |      if (doc.DATA[0].type == 'tabulated nk' || doc.DATA[0].type == 'tabulated n') {
 |  |      if (doc.DATA[0].type == 'tabulated nk' || doc.DATA[0].type == 'tabulated n') {
 | 
											
												
													
														|  |        const csv = doc.DATA[0].data
 |  |        const csv = doc.DATA[0].data
 | 
											
												
													
														|  |        const rows:string[] = csv.split("\n")
 |  |        const rows:string[] = csv.split("\n")
 | 
											
												
													
														|  |        let data =  rows.map(row =>row.split(" "))
 |  |        let data =  rows.map(row =>row.split(" "))
 | 
											
												
													
														|  | -      console.log(data)
 |  | 
 | 
											
												
													
														|  |        data.pop()
 |  |        data.pop()
 | 
											
												
													
														|  |        let data_num = data.map(elem => elem.map(elem2 => parseFloat(elem2)))
 |  |        let data_num = data.map(elem => elem.map(elem2 => parseFloat(elem2)))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -34,21 +34,49 @@ async function loadMaterialData(filename:string){ /* eslint-disable */
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |        for (let i=0; i<data_columns[0].length; i++)
 |  |        for (let i=0; i<data_columns[0].length; i++)
 | 
											
												
													
														|  |          data_columns[0][i] *= 1000
 |  |          data_columns[0][i] *= 1000
 | 
											
												
													
														|  | -      console.log(data_columns)
 |  | 
 | 
											
												
													
														|  |        return data_columns
 |  |        return data_columns
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |    } catch (e) {
 |  |    } catch (e) {
 | 
											
												
													
														|  |      console.log(e)
 |  |      console.log(e)
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  | 
 |  | +  return undefined
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  const actions: ActionTree<guiRuntimeStateInterface, StateInterface> = {
 |  |  const actions: ActionTree<guiRuntimeStateInterface, StateInterface> = {
 | 
											
												
													
														|  | -  activateMaterial({commit,state}/* context */, filepath:string) {
 |  | 
 | 
											
												
													
														|  | -    // console.log(composeLabelFromPageData(filepath))
 |  | 
 | 
											
												
													
														|  | -    let data_columns = loadMaterialData(filepath)
 |  | 
 | 
											
												
													
														|  | -    console.log(data_columns)
 |  | 
 | 
											
												
													
														|  | -    return {state, filepath}
 |  | 
 | 
											
												
													
														|  | 
 |  | +  async activateMaterial({commit,state}/* context */, filepath:string) {
 | 
											
												
													
														|  | 
 |  | +    const data_columns:number[][]|undefined = await loadMaterialData(filepath)
 | 
											
												
													
														|  | 
 |  | +    if (!data_columns) return
 | 
											
												
													
														|  | 
 |  | +    let xs:number[] = data_columns[0]
 | 
											
												
													
														|  | 
 |  | +    let ys1:number[] = data_columns[1]
 | 
											
												
													
														|  | 
 |  | +    let ys2:number[] = data_columns[1].map(()=>0)
 | 
											
												
													
														|  | 
 |  | +    if (data_columns[2]) ys2 = data_columns[2]
 | 
											
												
													
														|  | 
 |  | +    const maxVal = 550
 | 
											
												
													
														|  | 
 |  | +    if (xs.length > maxVal) {
 | 
											
												
													
														|  | 
 |  | +      const delta = Math.floor(xs.length / maxVal);
 | 
											
												
													
														|  | 
 |  | +      let tmp_xs:number[] = []
 | 
											
												
													
														|  | 
 |  | +      let tmp_ys1:number[] = []
 | 
											
												
													
														|  | 
 |  | +      let tmp_ys2:number[] = []
 | 
											
												
													
														|  | 
 |  | +      for (let i = 0; i < xs.length; i = i + delta) {
 | 
											
												
													
														|  | 
 |  | +        tmp_xs.push(xs[i])
 | 
											
												
													
														|  | 
 |  | +        tmp_ys1.push(ys1[i])
 | 
											
												
													
														|  | 
 |  | +        tmp_ys2.push(ys2[i])
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +      xs = tmp_xs
 | 
											
												
													
														|  | 
 |  | +      ys1 = tmp_ys1
 | 
											
												
													
														|  | 
 |  | +      ys2 = tmp_ys2
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    console.log(xs.length)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    const spline_n = new Spline(xs, ys1);
 | 
											
												
													
														|  | 
 |  | +    const spline_k = new Spline(xs, ys2);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    const name = composeLabelFromPageData(filepath)
 | 
											
												
													
														|  | 
 |  | +    const spectrumRangeStart = xs[0]
 | 
											
												
													
														|  | 
 |  | +    const spectrumRangeEnd = xs[xs.length-1]
 | 
											
												
													
														|  | 
 |  | +    commit('addMaterial', {name:name,
 | 
											
												
													
														|  | 
 |  | +      spectrumRangeStart:spectrumRangeStart, spectrumRangeEnd:spectrumRangeEnd,
 | 
											
												
													
														|  | 
 |  | +      nSpline:spline_n, kSpline:spline_k})
 | 
											
												
													
														|  |    },
 |  |    },
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  }
 |  |  }
 |