{source}<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.20.2/TweenMax.min.js"></script>
<svg id="galaxy">
<g id="stars"></g>
</svg>
<style>
#galaxy {
background-image: url("/../images/solar.png");
background-size: contain;
background-repeat: no-repeat;
left: 0;
top: 0;
width: 2661px;
height: 200px;
position: relative;
}
</style>
<script>
function mainFunc() {
var svgNS = "http://www.w3.org/2000/svg"
var starsGroup = document.getElementById("stars");
var galaxy = document.getElementById("galaxy").getBoundingClientRect();
var center = { x: galaxy.width / 2, y: galaxy.height / 2 };
var stars = []
var tweens = []

window.onresize = function () {
galaxy = document.getElementById("galaxy").getBoundingClientRect();
center = { x: galaxy.width / 2, y: galaxy.height / 2 };
};

// STAR OPTIONS //////////////////////////////////////////////////////////////
var maxRad = Math.sqrt(Math.pow(center.x, 2) + Math.pow(center.y, 2));
var starCount = 100;
var speed = 1;
var innerRadius = 200;
var minSize = 1;
var maxSize = 2;
//////////////////////////////////////////////////////////////////////////////

var startPos, tranOrigin, time;
for (var i = 0; i < starCount; ++i) {
// add new star
var star = document.createElementNS(svgNS, "circle");
startPos = {
x: Math.random() * center.x * 2,
y: Math.random() * center.y * 2
};

// set basic tag attributes
star.setAttribute("class", "star");
star.setAttribute("fill", "#A8A8A8");
star.setAttribute("stroke", "none");
star.setAttribute("cx", startPos.x);
star.setAttribute("cy", startPos.y);
star.setAttribute("r", Math.random() * maxSize + minSize);

// add to internal array and svg group
stars.push(star);
starsGroup.appendChild(star);

tranOrigin = "" + (center.x - startPos.x) + "px " +
(center.y - startPos.y) + "px";

time = Math.pow(speed * 0.01, -1) * Math.pow(star.getAttribute("r"), -1);
//console.log(time)

tweens.push(TweenMax.to(star, time, {
transformOrigin: tranOrigin,
rotation: 360,
ease: Power0.easeNone,
repeat: -1
}));
}
}
document.addEventListener("DOMContentLoaded", mainFunc);
</script>
{/source}

{source}<link rel="stylesheet" href="/images\style.css">

<table style="width: 100%;">
<tr>
<td style="width: 75%">
<div id="solar_status">

</div>
<script src="/images/status.js"></script>
</td>
<td style="text-align: right; vertical-align: top; padding: 0; margin:0;">
<button id="register_btn" type="button" class="btn_noframe" data-toggle="tooltip" data-placement="top"
title="If you want to receive notifications about changes in the status of the observatory register e-mail" style="padding:0; margin-right:-20px;">
<a href="/local_scripts/register.html" target="_blank" style="padding:0;">
<img class="btn_img" src="/images/button_subscribe2.png" width="auto" style="border-radius: 12px; padding: 0;"/>
</a>
</button>
</td>
</tr>
</table>
{/source}


SUTO: chromosphere 6562.8 Å (raw / enhanced), photosphere 5400 Å (raw / enhanced)


SDO: AIA (Atmospheric Imaging Assembly)

SDO/AIA-304, SDO/HMI Magnetogram, SDO/HMI Continuum, SDI/AIA 211/193/171 Composite

   
SDO/AIA-304 SDO/HMI Magnetogram SDO/HMI Continuum SDI/AIA 211/193/171 Composite   
 
{source}<script type="text/javascript" async src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_SVG">
</script>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<style>
.chart {
width: 100%;
height: auto;
margin-bottom: 20px;
}
</style>

<div id="chart" class="chart"></div>
<script>
// Funkcja do pobierania danych z API NOAA
async function fetchData(url) {
const response = await fetch(url, Headers ={
'Cache-Control': 'no-cache'
});
const data = await response.json();
return data;
}
const tickvals = [5e-8, 5e-7, 5e-6, 5e-5, 5e-4];
// Opcje wykresu
const layoutOptions = {
title: {
text: 'GOES X-RAY FLUX',
font: {
//family: 'serif',
color: 'blue',
//bold: true,
size: 18
},
},
xaxis: {
title: '$\\text{Time}$',
type: 'date',
showgrid: true,
showline: false,
zeroline: false,
gridcolor: 'rgba(0, 0, 0, 0.15)',
//gridwidth: 1,
},
yaxis: {
title: '$\\text{Flux}\\; [\\frac{W} {m^{2}}]$',
type: 'log',
//autorange: true,
gridwidth: 1,
zeroline: false,
showgrid: true,
gridcolor: 'rgba(0, 0, 0, 0.15)',
range: [-9, -3],
tickvals: [1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3],
},
yaxis2: {
title: '$\\text{Xray Flare Class}$',
type: 'log',
tickmode: 'array',
//autorange: true,
zeroline: false,
overlaying: 'y',
side: 'right',
tickvals: [3.16e-8, 3.16e-7, 3.16e-6, 3.16e-5, 3.16e-4],
//ticktext: ['1e-9', '1e-8', '1e-7', '1e-6', '1e-5'],
//tickvals: [1e-8, 1e-7, 1e-6, 1e-5, 1e-4],
//tickvals: tickvals.map(x => Math.log10(x)),
ticktext: ['A', 'B', 'C', 'M', 'X'],
//tickformat: '.0s',
range: [-9, -3],
//gridwidth: 0,
showgrid: false,
},
legend: {
"orientation": "h",
x: 0,
y: 1.2
},


};

// Funkcja do generowania danych i wykresów
async function generateDataAndChart(restyleData = true) {
const apiUrlGeos18 = 'https://services.swpc.noaa.gov/json/goes/primary/xrays-3-day.json';
const apiUrlGeos16 = 'https://services.swpc.noaa.gov/json/goes/secondary/xrays-3-day.json';

const dataGeos18 = await fetchData(apiUrlGeos18);
const dataGeos16 = await fetchData(apiUrlGeos16);

const traces = [];

// GEOS-18, fale długie
const x18Long = dataGeos18.filter(record => record.energy === "0.05-0.4nm" && record.flux !== 0).map(record => Date.parse(record.time_tag));
const y18Long = dataGeos18.filter(record => record.energy === "0.05-0.4nm" && record.flux !== 0).map(record => record.flux);
const trace18Long = {
x: x18Long,
y: y18Long,
mode: 'lines',
type: 'scatter',
width: 1,
name: 'GEOS-18 long'
};
traces.push(trace18Long);

// GEOS-18, fale krótkie
const x18Short = dataGeos18.filter(record => record.energy === "0.1-0.8nm" && record.flux !== 0).map(record => Date.parse(record.time_tag));
const y18Short = dataGeos18.filter(record => record.energy === "0.1-0.8nm" && record.flux !== 0).map(record => record.flux);
const trace18Short = {
x: x18Short,
y: y18Short,
mode: 'lines',
type: 'scatter',
width: 1,
yaxis: 'y2',
name: 'GEOS-18 short'
};
traces.push(trace18Short);

// GEOS-16, fale długie
const x16Long = dataGeos16.filter(record => record.energy === "0.05-0.4nm" && record.flux !== 0).map(record => Date.parse(record.time_tag));
const y16Long = dataGeos16.filter(record => record.energy === "0.05-0.4nm" && record.flux !== 0).map(record => record.flux);
const trace16Long = {
x: x16Long,
y: y16Long,
mode: 'lines',
type: 'scatter',
width: 1,
name: 'GEOS-16 long'
};
traces.push(trace16Long);

// GEOS-16, fale krótkie
const x16Short = dataGeos16.filter(record => record.energy === "0.1-0.8nm" && record.flux !== 0).map(record => Date.parse(record.time_tag));
const y16Short = dataGeos16.filter(record => record.energy === "0.1-0.8nm" && record.flux !== 0).map(record => record.flux);
const trace16Short = {
x: x16Short,
y: y16Short,
y2: y16Short,
mode: 'lines',
type: 'scatter',
width: 1,
name: 'GEOS-16 short'
};
traces.push(trace16Short);

const container = document.getElementById('chart');
if (restyleData) {
Plotly.newPlot(container, traces, layoutOptions);

}
else
{
Plotly.newPlot(container, traces, layoutOptions);
}
}
generateDataAndChart(false);
setInterval(generateDataAndChart, 10000);
</script>
<div style="text-align: center;">
<h3 style="color: blue;">NOAA SOLAR SYNOPTIC MAP</h3>
<a href="https://services.swpc.noaa.gov/images/synoptic-map.jpg" target="_blank">
<img style="max-width: 80%; height: auto; text-align: center;" src="https://services.swpc.noaa.gov/images/synoptic-map.jpg"
alt="synoptic-map" title="Click to enlarge!">
</a>
</div>
{/source}Courtesy of NASA/SDO and the AIA, EVE, and HMI science teams.