PageSourceSearch

https://data-science.wifo.ac.at/observable/ka-de/[email protected]

js wifo.ac.at collected 2026-09-24 08:52:18 UTC 23,869 bytes, 736 lines download raw bytes

1import define1 from "./[email protected]";
2import define2 from "./[email protected]";
3
4function _1(md){return(
5md`# Konjunkturampel
6## Entwicklung des Konjunkturklimaindex`
7)}
8
9function _title(htl,farbeAktuell,monat,jahr,econclimateDiff,econclimate,econclimateLag,aktuellDiff,aktuell,erwartetDiff,erwartet){return(
10htl.html`
11<h2> WIFO-Konjunkturampel zeigt "${farbeAktuell}"</h2>
12<p> Die Ergebnisse des WIFO-Konjunkturtests vom ${monat} ${jahr} zeigen eine ${econclimateDiff > 0 ? "Verbesserung" : "Verschlechterung"} der unternehmerischen Konjunktureinschätzungen, die weiterhin mehrheitlich ${econclimate > 0 ? "optimistisch" : "pessimistisch"} ausfallen. Der WIFO-Konjunkturklimaindex notierte mit ${econclimate.toString().replace(".", ",")} Punkten (saisonbereinigt) um ${econclimateDiff.toString().replace(".", ",")} Punkte ${econclimateDiff > 0 ? "über" : "unter"} dem Wert des Vormonats (${econclimateLag.toString().replace(".", ",")} Punkte). Die gesamtwirtschaftlichen Lagebeurteilungen ${aktuellDiff > 1 ? "verbesserten sich" : aktuellDiff < -1 ? "verschlechterten sich" : "stagnierten"} (${aktuellDiff.toString().replace(".", ",")} Punkte) und blieben mit ${aktuell.toString().replace(".", ",")} Punkten unter der Nulllinie. Die Konjunkturerwartungen ${erwartetDiff > 0 ? "verbesserten" : "verschlechterten"} sich (${erwartetDiff.toString().replace(".", ",")} Punkte) und notierten mit ${erwartet.toString().replace(".", ",")} Punkten im ${erwartet > 0 ? "positiven" : "negativem"} Bereich. Das ${econclimateDiff > 0 ? "opimistische" : "skeptische"} Konjunkturbild wird nach wie vor von der schwachen Industriekonjunktur bestimmt. Die WIFO-Konjunkturampel zeigt "${farbeAktuell}" und signalisiert damit eine ${econclimateDiff > 0 ? "Verbesserung" : "Verschlechterung"} der unternehmerischen Konjunktureinschätzungen. </p>
13<a class="tag dark hollow" style="max-width: fit-content; margin-bottom: 12px;" href="https://www.wifo.ac.at/wp-content/uploads/upload-8948/WIFO-Konjunkturampel.pdf" target="_blank" rel="noopener">PDF-Download</a>
14`
15)}
16
17function _timeLabel(htl,d3,formatDate,start,slider){return(
18htl.html`<label style="margin-left: 12px;"> ${d3.timeFormat(formatDate(d3.timeMonth.offset(start, slider[0])))} ⟶ ${formatDate(d3.timeMonth.offset(start, slider[1] +1))} <label>`
19)}
20
21function _slider(rangeSlider,d3,start,end,formatDate,makeWidth,width){return(
22rangeSlider({
23  min: 0,
24  max: d3.timeMonth.count(start, end - 1),
25  step: 1,
26  format: d => formatDate(d3.timeMonth.offset(start, d)),
27  value: [
28    d3.timeMonth.count(start, end) - 36, 
29    d3.timeMonth.count(start, end)
30  ],
31  width: makeWidth(width) * 1.2,
32  title: "",
33  separator: " → ",
34  color: "#2d5b5e",
35})
36)}
37
38function _view(vl,bars,lines,quantiles,heatmap,makeWidth,width,boxplot,dummyLayer1,dummyLayer2,dummyLayer3,dummyLayer4,points,data,config){return(
39vl.hconcat(
40    vl.layer(
41        bars,
42        lines,
43        quantiles,
44        heatmap
45      )  
46      .width(makeWidth(width))
47      .height(300),
48    vl.layer(
49      boxplot,
50      dummyLayer1,
51      dummyLayer2,
52      dummyLayer3,
53      dummyLayer4,
54      points,
55      )
56      .width(50),
57  )
58  .data(data)
59  .config(config)
60  .render({ renderer: "svg" })
61)}
62
63function _6(md){return(
64md`---
65# Appendix`
66)}
67
68async function _formatDateYMD(d3)
69{
70  const locale = await d3.json("https://data-science.wifo.ac.at/observable/libs/de-DE.json");
71  d3.timeFormatDefaultLocale(locale);
72  return d3.timeFormat("%Y-%m-%d")
73}
74
75
76async function _formatDate(d3)
77{
78  const locale = await d3.json("https://data-science.wifo.ac.at/observable/libs/de-DE.json");
79  d3.timeFormatDefaultLocale(locale);
80  return d3.timeFormat("%b %Y")
81}
82
83
84function _timeStartPlusOne(parseDate,formatDateYMD,d3,start,slider){return(
85parseDate(formatDateYMD(d3.timeMonth.offset(start, slider[0] + 1)))
86)}
87
88function _timeStartMinusOne(parseDate,formatDateYMD,d3,start,slider){return(
89parseDate(formatDateYMD(d3.timeMonth.offset(start, slider[0] - 2)))
90)}
91
92function _timeEndPlusOne(parseDate,formatDateYMD,d3,start,slider){return(
93parseDate(formatDateYMD(d3.timeMonth.offset(start, slider[1] + 2)))
94)}
95
96function _timeStart(parseDate,formatDateYMD,d3,start,slider){return(
97parseDate(formatDateYMD(d3.timeMonth.offset(start, slider[0] - 1)))
98)}
99
100function _timeEnd(parseDate,formatDateYMD,d3,start,slider){return(
101parseDate(formatDateYMD(d3.timeMonth.offset(start, slider[1] + 1)))
102)}
103
104function _end(parseDate,inputData){return(
105parseDate(inputData.map(d => d.date)[[inputData.map(d => d.date).length - 1]].substring(0, 10))
106)}
107
108function _start(parseDate,inputData){return(
109parseDate(inputData.map(d => d.date)[0].substring(0, 10))
110)}
111
112function _parseDate(d3){return(
113d3.timeParse("%Y-%m-%d")
114)}
115
116function _dummyLayer4(vl,data){return(
117vl.markPoint({
118  fill: "transparent",
119  stroke: "transparent",
120  shape: "square",
121  size: 5500,
122  yOffset: -110
123})
124.encode(
125  vl.tooltip([
126      null
127    ]),
128  )
129.data(data)
130)}
131
132function _dummyLayer3(vl,data){return(
133vl.markPoint({
134  fill: "transparent",
135  stroke: "transparent",
136  shape: "square",
137  size: 5500,
138  yOffset: -35
139})
140.encode(
141  vl.tooltip([
142      null
143    ]),
144  )
145.data(data)
146)}
147
148function _dummyLayer2(vl,data){return(
149vl.markPoint({
150  fill: "transparent",
151  stroke: "transparent",
152  shape: "square",
153  size: 5500,
154  yOffset: 35
155})
156.encode(
157  vl.tooltip([
158      null
159    ]),
160  )
161.data(data)
162)}
163
164function _dummyLayer1(vl,data){return(
165vl.markPoint({
166  fill: "transparent",
167  stroke: "transparent",
168  shape: "square",
169  size: 5500,
170  yOffset: 110
171})
172.encode(
173  vl.tooltip([
174      null
175    ]),
176  )
177.data(data)
178)}
179
180function _title_en(htl,farbeAktuell,monat,jahr,econclimateDiff,econclimate,econclimateLag,aktuellDiff,aktuell,erwartetDiff,erwartet){return(
181htl.html`
182<h2>WIFO Economic Climate Index Shows "${farbeAktuell}"</h2>
183<p>The results of the WIFO Economic Survey from ${monat} ${jahr} indicate a ${econclimateDiff > 0 ? "improvement" : "deterioration"} in business economic assessments, which remain predominantly ${econclimate > 0 ? "optimistic" : "pessimistic"}. The WIFO Economic Climate Index recorded ${econclimate.toString().replace(".", ",")} points (seasonally adjusted), which is ${econclimateDiff.toString().replace(".", ",")} points ${econclimateDiff > 0 ? "above" : "below"} the previous month's value (${econclimateLag.toString().replace(".", ",")} points). Overall economic assessments ${aktuellDiff > 1 ? "improved" : aktuellDiff < -1 ? "deteriorated" : "stagnated"} (${aktuellDiff.toString().replace(".", ",")} points) and remained below the zero line at ${aktuell.toString().replace(".", ",")} points. Economic expectations ${erwartetDiff > 0 ? "improved" : "deteriorated"} (${erwartetDiff.toString().replace(".", ",")} points) and recorded ${erwartet.toString().replace(".", ",")} points in the ${erwartet > 0 ? "positive" : "negative"} range. The ${econclimateDiff > 0 ? "optimistic" : "skeptical"} economic outlook continues to be influenced by the weak industrial economy. The WIFO Economic Climate Index shows "${farbeAktuell}" and thus signals a ${econclimateDiff > 0 ? "improvement" : "deterioration"} in business economic assessments.</p>
184<a class="tag dark hollow" style="max-width: fit-content; margin-bottom: 12px;" href="https://www.wifo.ac.at/wp-content/uploads/upload-8948/WIFO-Konjunkturampel.pdf" target="_blank" rel="noopener">PDF Download</a>
185`
186)}
187
188function _data(inputData,parseDate,slider,timeStartMinusOne,timeEndPlusOne,timeEnd){return(
189inputData
190  .map(d => ({...d , ampelColor: 
191    d.ampel >= 0.66 ? 
192    "Grün" :
193    d.ampel >= 0.33 ?
194    "Gelb" :
195    "Rot"
196  }))
197  .map(d => ({...d , ampelHex: 
198    d.ampel >= 0.66 ? 
199    "#72bb6f" :
200    d.ampel >= 0.33 ?
201    "#f3d039" :
202    "#c3423f"
203  }))
204  .map(d => ({...d , date: d.date.substr(0, 10)}))
205  .map(d => ({...d , date15: d.date.substr(0, 8) + "15"}))
206  .map(d => ({...d , month: parseDate(d.date.substring(0, 10))}))
207  .map(d => ({...d , econclimate: +d.econclimate}))
208  .filter(d => slider[0] == slider[1] ? d.month >= timeStartMinusOne: d.month >= timeStartMinusOne)
209  .filter(d => slider[0] == slider[1] ? d.month <= timeEndPlusOne : d.month <= timeEnd)
210  // .filter(d => d.date.substr(0,4) >= range[0])
211  // .filter(d => d.date.substr(0,4) <= range[1])
212  .map(d => ({...d , zero: -20}))
213)}
214
215function _bars(vl,brush){return(
216vl.markRect({
217  strokeWidth: 0,
218  stroke: "black",
219  opacity: 1,
220  clip: true,
221})
222  .params(brush)
223  .transform(
224    vl.window(vl.lag("date15").as("dateLag")).frame([-1,0]),
225  )
226  .encode(
227    vl.x()
228      .fieldT("date15")
229      .axis({
230        title: null,
231        format: "%b %y",
232        grid: false,
233      }),
234    vl.x2()
235      .fieldT("dateLag"),
236    vl.fill()
237      .fieldN("ampelColor")
238      .scale({
239        range: ["#72bb6f", "#f3d039", "#c3423f"],
240        domain: ["Grün", "Gelb", "Rot"],
241      })
242      .legend({
243        padding: 6,
244        title: null, // "Prognostizierte Entwicklung",
245        titleOffset: 10,
246        symbolOffset: 16,
247        labelOffset: 4,
248        symbolStrokeWidth: 0,
249        symbolOpacity: 1,
250        orient: "none",
251        legendX: -70,
252        legendY: -40,
253        direction: "horizontal",
254        labelExpr: "{'Grün': 'Grün: Verbesserung', 'Gelb': 'Gelb: Indifferenzbereich', 'Rot': 'Rot: Verschlechterung'}[datum.value]"
255      }),
256    vl.opacity()
257      .if(brush, 0.2)
258      .value(0.5),
259    vl.tooltip([
260      {field: "econclimate", title: "Index", format: ",.1~f" },
261      {field: "date", type: "temporal", title: "Monat", format: "%b %Y" }
262    ])
263  )
264)}
265
266function _brush(vl){return(
267vl.selectPoint("brush")
268  .encodings("x")
269  .on("mouseover")
270  .nearest(true)
271  .value([""])
272)}
273
274function _quantiles(vl,d3,data){return(
275vl.markRule({
276  strokeDash: [5, 5]
277})
278  .encode(
279    vl.y()
280      .fieldQ("quantile")
281  )
282  .data([
283    {quantile: d3.quantile(data.map(d => d.econclimate), 0.75)},
284    {quantile: d3.quantile(data.map(d => d.econclimate), 0.50)},
285    {quantile: d3.quantile(data.map(d => d.econclimate), 0.25)},
286  ])
287)}
288
289function _points(vl,brush){return(
290vl.markPoint({
291  fill: "gray",
292  stroke: "black",
293  opacity: 0.5,
294  size: 30,
295  strokeWidth: 5,
296  strokeOpacity: 1,
297})
298  .transform(
299    vl.calculate('random()').as('jitter')
300  )
301  .encode(
302    vl.y()
303      .fieldQ("econclimate")
304      .scale({
305        padding: 25
306      }),
307    vl.x()
308      .fieldQ("jitter")
309      .axis(null),
310    vl.tooltip(null),
311    // vl.stroke()
312    //   .if(brush, "black")
313    //   .value("transparent"),
314    vl.strokeWidth()
315      .if(brush, 5)
316      .value(0)
317  )
318)}
319
320function _heatmap(vl,lengthData,brush){return(
321vl.markPoint({
322  // y: -20,
323  yOffset: -30,
324  clip: true,
325  stroke: "black",
326  strokeWidth: 1.25,
327  size: 600,
328  xOffset: - (1 / lengthData) * 380,
329  opacity: 1,
330  shape: "arrow"
331})
332// .params(brush)
333  .encode(
334    vl.x()
335      .fieldT("date15"),
336    vl.y()
337      .fieldQ("econclimate"),
338    vl.fill()
339      .fieldN("ampelColor")
340      .scale({
341        range: ["#72bb6f", "#f3d039", "#c3423f"],
342        domain: ["Grün", "Gelb", "Rot"],
343      }),
344    vl.opacity()
345      .if(brush)
346      .value(0),
347    vl.angle()
348      .fieldN("ampelColor")
349      .scale({
350        range: [30, 150],
351        domain: ["Grün", "Gelb", "Rot"],
352      }),
353  )
354)}
355
356function _aktuell(inputData,lengthInputData){return(
357Math.round(inputData.map(d => d.aktuell)[lengthInputData - 1] * 10) / 10
358)}
359
360function _aktuellDiff(inputData,lengthInputData){return(
361Math.round(inputData.map(d => d.aktuell)[lengthInputData - 1] * 10 - inputData.map(d => d.aktuell)[lengthInputData - 2] * 10) / 10
362)}
363
364function _erwartet(inputData,lengthInputData){return(
365Math.round(inputData.map(d => d.erwartet)[lengthInputData - 1] * 10) / 10
366)}
367
368function _erwartetDiff(inputData,lengthInputData){return(
369Math.round(inputData.map(d => d.erwartet)[lengthInputData - 1] * 10 - inputData.map(d => d.erwartet)[lengthInputData - 2] * 10) / 10
370)}
371
372function _econclimate(inputData,lengthInputData){return(
373Math.round(inputData.map(d => d.econclimate)[lengthInputData - 1] * 10) / 10
374)}
375
376function _econclimateDiff(inputData,lengthInputData){return(
377Math.round(inputData.map(d => d.econclimate)[lengthInputData - 1] * 10 - inputData.map(d => d.econclimate)[lengthInputData - 2] * 10) / 10
378)}
379
380function _econclimateLag(inputData,lengthInputData){return(
381Math.round(inputData.map(d => d.econclimate)[lengthInputData - 2] * 10) / 10
382)}
383
384function _farbeAktuell(inputData){return(
385inputData[inputData.length - 1].ampel >= 0.66 ? 
386    "Grün" : 
387    inputData[inputData.length - 1].ampel > 0.33 ?
388    "Gelb" :
389    "Rot"
390)}
391
392function _monat(monate,inputData,lengthInputData){return(
393monate[Number(inputData.map(d => d.date)[lengthInputData - 1].substr(5, 2))-1]
394)}
395
396function _jahr(inputData,lengthInputData){return(
397Number(inputData.map(d => d.date)[lengthInputData - 1].substr(0,4))
398)}
399
400function _39(end){return(
401new Date(end - 600000000000)
402)}
403
404function _ticks(lengthData,data){return(
405lengthData < 60 ? 
406  data.filter((d, i) => i % 3 == 2).map(d => d.date) :
407  data.filter((d, i) => i % 6 == 2).map(d => d.date)
408)}
409
410function _41(slider){return(
411slider[0] + (slider[1] - slider[0])
412)}
413
414function _lines(vl,formatDateYMD,timeStart,ticks){return(
415vl.markLine({
416  stroke: "black",
417  clip: true,
418})
419  .transform(
420    vl.window(vl.lag("date").as("dateLead")).frame([1,0]),
421  )
422  .encode(
423    vl.x()
424      .fieldT("date")
425      .scale({
426        domainMin: formatDateYMD(timeStart),
427      })
428      .axis({
429        title: null,
430        format: "%b %y",
431        grid: false,
432        labelPadding: 10,
433        labelAngle: -90,
434        // labelFlush: true,
435        // labelFlushOffset: -100,
436        labelSeparation: 6,
437        values: ticks,
438        minExtent: 60,
439      }),
440    vl.y()
441      .fieldQ("econclimate")
442      .axis({
443        title: "WIFO-Konjunkturklimaindex (Gesamtwirtschaft)",
444        domain: false,
445        ticks: false,
446        labelPadding: 10,
447        minExtent: 40,
448      })
449      .scale({
450        padding: 25,
451      })
452  )
453)}
454
455function _boxplot(vl){return(
456vl.markBoxplot({
457  ticks: {
458    stroke: "black", 
459    size: 25
460  },
461  stroke: "black",
462  outliers: {opacity: 0},
463  color: "gray",
464  median: {
465    stroke: "black", 
466    size: 25
467  },
468  box: {
469    stroke: "black", 
470    strokeWidth: 1, 
471    fillOpacity: 0.25, 
472    size: 25,
473  },
474})
475  .encode(
476    vl.y()
477      .fieldQ("econclimate")
478      .axis(null),
479    vl.tooltip(null),
480    // vl.tooltip([
481    //   {"field": "econclimate", "type": "quantitative", aggregate: "values", title: "test"},
482    //   {"field": "aktuell", "type": "quantitative", aggregate: "valid", title: "hello"}
483    // ]),
484    // vl.tooltip({
485    //   field: "econclimate",
486    //   aggregate: "values",
487    // })
488  )
489)}
490
491function _monate(){return(
492[
493  "Jänner",
494  "Februar",
495  "März",
496  "April",
497  "Mai",
498  "Juni",
499  "Juli",
500  "August",
501  "September",
502  "Oktober",
503  "November",
504  "Dezember"
505]
506)}
507
508function _heatmapBrush(vl,brush){return(
509vl.markPoint({
510  // y: 300- 20,
511  stroke: "black",
512  strokeWidth: 1.25,
513  size: 300,
514  opacity: 0.8
515})
516  .encode(
517    vl.x()
518      .fieldT("date"),
519    vl.y()
520      .fieldQ("zero"),
521    vl.fill()
522      .fieldN("ampelColor")
523      .scale({
524        range: ["#00FF00", "#FF0000"],
525      })
526      .legend({
527        title: null
528      })
529  )
530  .transform(
531    vl.filter(brush)
532  )
533)}
534
535function _makeWidth(){return(
536function(inputWidth) {
537    if (inputWidth>1000) {
538    return 800
539  }
540  else {
541    return inputWidth / 1.6
542  }
543}
544)}
545
546function _lengthInputData(inputData){return(
547[... new Set(inputData.map(d => d.date))].length
548)}
549
550function _lengthData(data){return(
551[... new Set(data.map(d => d.date))].length
552)}
553
554function _config(){return(
555{
556  mark: { tooltip: null },
557  view: {stroke: null}, 
558  font: "FFDaxPro",
559  background: "transparent",
560  fontSize: 14, 
561  concat: { spacing: 20 },
562  title: {
563    offset: 0, 
564    fontSize: 16, 
565    subtitleFontSize: 14,
566  },
567  axis: {
568    labelFontSize: 14, 
569    titleFontSize: 14,
570    titleFontWeight: "normal",
571  },
572  legend: {
573    labelFontSize: 14, 
574    titleFontSize: 14,
575    titleFontWeight: "normal",
576  },
577  mark: {
578    fontSize: 14
579  },
580  locale: {
581    number: {
582      decimal: ",", 
583      thousands: ".", 
584      grouping: [3]
585    },
586    time: {
587      dateTime: "%A %e %B %Y, %X",
588      date: "%d/%m/%Y",
589      time: "%H:%M:%S",
590      periods: ["AM", "PM"],
591      days: [
592        "Montag",
593        "Dienstag",
594        "Mittwoch",
595        "Donnerstag",
596        "Freitag",
597        "Samstag",
598        "Sonntag"
599      ],
600      shortDays: [
601        "Mo", 
602        "Di", 
603        "Mi", 
604        "Do", 
605        "Fr", 
606        "Sa", 
607        "So"
608      ],
609      months: [
610        "Jänner",
611        "Februar",
612        "März",
613        "April",
614        "Mai",
615        "Juni",
616        "Juli",
617        "August",
618        "September",
619        "Oktober",
620        "November",
621        "Dezember"
622      ],
623      shortMonths: [
624        "Jän",
625        "Feb",
626        "Mrz",
627        "Apr",
628        "Mai",
629        "Jun",
630        "Jul",
631        "Aug",
632        "Sep",
633        "Okt",
634        "Nov",
635        "Dez"
636      ]
637    }
638  },
639}
640)}
641
642function _inputData(d3){return(
643d3.csv("https://data-science.wifo.ac.at/kt-data/data_ka.csv")
644)}
645
646function _52(htl){return(
647htl.html`<style>
648  text, label, body {
649    font-family: "Century Gothic";
650  }
651  select {
652    font-family: "Century Gothic" !important;
653    font-size: 14px;
654  }
655  option {
656    font-family: "Century Gothic";
657    font-size: 12px;
658  }
659  button {
660    font-family: "Century Gothic" !important;
661    font-size: 12px;
662  }
663  output[name="output"] {
664    font-family: "Century Gothic" !important;
665  }
666/* tooltip:   */
667  table {
668    font-family: "Century Gothic";
669    font-Size: 11px;
670    margin: 0px 0px 0px 0px;
671  }
672/*   #vg-tooltip-element {
673    display: none;
674  } */
675</style>`
676)}
677
678export default function define(runtime, observer) {
679  const main = runtime.module();
680  main.variable(observer()).define(["md"], _1);
681  main.variable(observer("title")).define("title", ["htl","farbeAktuell","monat","jahr","econclimateDiff","econclimate","econclimateLag","aktuellDiff","aktuell","er
681wartetDiff","erwartet"], _title);
682  main.variable(observer("timeLabel")).define("timeLabel", ["htl","d3","formatDate","start","slider"], _timeLabel);
683  main.variable(observer("viewof slider")).define("viewof slider", ["rangeSlider","d3","start","end","formatDate","makeWidth","width"], _slider);
684  main.variable(observer("slider")).define("slider", ["Generators", "viewof slider"], (G, _) => G.input(_));
685  main.variable(observer("view")).define("view", ["vl","bars","lines","quantiles","heatmap","makeWidth","width","boxplot","dummyLayer1","dummyLayer2","dummyLayer3","dummyLayer4","points","data","config"], _view);
686  main.variable(observer()).define(["md"], _6);
687  main.variable(observer("formatDateYMD")).define("formatDateYMD", ["d3"], _formatDateYMD);
688  main.variable(observer("formatDate")).define("formatDate", ["d3"], _formatDate);
689  main.variable(observer("timeStartPlusOne")).define("timeStartPlusOne", ["parseDate","formatDateYMD","d3","start","slider"], _timeStartPlusOne);
690  main.variable(observer("timeStartMinusOne")).define("timeStartMinusOne", ["parseDate","formatDateYMD","d3","start","slider"], _timeStartMinusOne);
691  main.variable(observer("timeEndPlusOne")).define("timeEndPlusOne", ["parseDate","formatDateYMD","d3","start","slider"], _timeEndPlusOne);
692  main.variable(observer("timeStart")).define("timeStart", ["parseDate","formatDateYMD","d3","start","slider"], _timeStart);
693  main.variable(observer("timeEnd")).define("timeEnd", ["parseDate","formatDateYMD","d3","start","slider"], _timeEnd);
694  main.variable(observer("end")).define("end", ["parseDate","inputData"], _end);
695  main.variable(observer("start")).define("start", ["parseDate","inputData"], _start);
696  main.variable(observer("parseDate")).define("parseDate", ["d3"], _parseDate);
697  main.variable(observer("dummyLayer4")).define("dummyLayer4", ["vl","data"], _dummyLayer4);
698  main.variable(observer("dummyLayer3")).define("dummyLayer3", ["vl","data"], _dummyLayer3);
699  main.variable(observer("dummyLayer2")).define("dummyLayer2", ["vl","data"], _dummyLayer2);
700  main.variable(observer("dummyLayer1")).define("dummyLayer1", ["vl","data"], _dummyLayer1);
701  main.variable(observer("title_en")).define("title_en", ["htl","farbeAktuell","monat","jahr","econclimateDiff","econclimate","econclimateLag","aktuellDiff","aktuell","erwartetDiff","erwartet"], _title_en);
702  main.variable(observer("data")).define("data", ["inputData","parseDate","slider","timeStartMinusOne","timeEndPlusOne","timeEnd"], _data);
703  const child1 = runtime.module(define1);
704  main.import("vl", child1);
705  main.variable(observer("bars")).define("bars", ["vl","brush"], _bars);
706  main.variable(observer("brush")).define("brush", ["vl"], _brush);
707  main.variable(observer("quantiles")).define("quantiles", ["vl","d3","data"], _quantiles);
708  main.variable(observer("points")).define("points", ["vl","brush"], _points);
709  main.variable(observer("heatmap")).define("heatmap", ["vl","lengthData","brush"], _heatmap);
710  main.variable(observer("aktuell")).define("aktuell", ["inputData","lengthInputData"], _aktuell);
711  main.variable(observer("aktuellDiff")).define("aktuellDiff", ["inputData","lengthInputData"], _aktuellDiff);
712  main.variable(observer("erwartet")).define("erwartet", ["inputData","lengthInputData"], _erwartet);
713  main.variable(observer("erwartetDiff")).define("erwartetDiff", ["inputData","lengthInputData"], _erwartetDiff);
714  main.variable(observer("econclimate")).define("econclimate", ["inputData","lengthInputData"], _econclimate);
715  main.variable(observer("econclimateDiff")).define("econclimateDiff", ["inputData","lengthInputData"], _econclimateDiff);
716  main.variable(observer("econclimateLag")).define("econclimateLag", ["inputData","lengthInputData"], _econclimateLag);
717  main.variable(observer("farbeAktuell")).define("farbeAktuell", ["inputData"], _farbeAktuell);
718  main.variable(observer("monat")).define("monat", ["monate","inputData","lengthInputData"], _monat);
719  main.variable(observer("jahr")).define("jahr", ["inputData","lengthInputData"], _jahr);
720  main.variable(observer()).define(["end"], _39);
721  main.variable(observer("ticks")).define("ticks", ["lengthData","data"], _ticks);
722  main.variable(observer()).define(["slider"], _41);
723  main.variable(observer("lines")).define("lines", ["vl","formatDateYMD","timeStart","ticks"], _lines);
724  main.variable(observer("boxplot")).define("boxplot", ["vl"], _boxplot);
725  main.variable(observer("monate")).define("monate", _monate);
726  main.variable(observer("heatmapBrush")).define("heatmapBrush", ["vl","brush"], _heatmapBrush);
727  main.variable(observer("makeWidth")).define("makeWidth", _makeWidth);
728  main.variable(observer("lengthInputData")).define("lengthInputData", ["inputData"], _lengthInputData);
729  main.variable(observer("lengthData")).define("lengthData", ["data"], _lengthData);
730  main.variable(observer("config")).define("config", _config);
731  const child2 = runtime.module(define2);
732  main.import("rangeInput", "rangeSlider", child2);
733  main.variable(observer("inputData")).define("inputData", ["d3"], _inputData);
734  main.variable(observer()).define(["htl"], _52);
735  return main;
736}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.