|
|
| Rivi 650: |
Rivi 650: |
| } | | } |
| } | | } |
| memo.seriesA.push( { 'type': 'scatter', 'title': memo.obsMinDate.getFullYear() + '-' + memo.obsMaxDate.getFullYear(), 'color': colors.obses, 'size': 6, 'legend': true, 'trendline': 'none', obses: [] } ); | | memo.seriesA.push( { 'type': 'scatter', 'title': memo.obsMinDate.getFullYear() + '-' + memo.obsMaxDate.getFullYear(), 'color': colors.obses, 'size': 6, 'line': 0, 'legend': true, 'trendline': 'none', obses: [] } ); |
| | | |
| | // make week averages |
| | memo.avgW = {}; |
| | for (var o in memo.obsesA) { |
| | |
| | mwDate = new Date( memo.obsesA[o].compareDate.getTime() ); |
| | w = mwDate.getWeek(); |
| | v = memo.obsesA[o].value; |
| | |
| | if ( typeof memo.avgW[w] == 'undefined' ) { |
| | mwDate.setDate( mwDate.getDate() - mwDate.getDay() + 3 ) |
| | memo.avgW[w] = { week: w, cDate: mwDate, values: [ v ], sum: v, count: 1, avg: v }; |
| | } else { |
| | memo.avgW[w].values.push( v ); |
| | memo.avgW[w].sum += v; |
| | memo.avgW[w].count++; |
| | memo.avgW[w].avg = memo.avgW[w].sum / memo.avgW[w].count; |
| | } |
| | } |
| | |
| | memo.avgWA = []; |
| | if ( memo.season == 'summer' ) { |
| | for ( var w=1; w<54; c++ ) { |
| | if ( typeof memo.avgW[ w ] != 'undefined' ) { memo.avgWA.push( memo.avgW[ w ] ); } |
| | } |
| | } else { |
| | for ( var w=30; w<54; w++ ) { |
| | if ( typeof memo.avgW[ w ] != 'undefined' ) { memo.avgWA.push( memo.avgW[ w ] ); } |
| | } |
| | for ( var w=1; w<30; w++ ) { |
| | if ( typeof memo.avgW[ w ] != 'undefined' ) { memo.avgWA.push( memo.avgW[ w ] ); } |
| | } |
| | } |
| | |
| | memo.seriesA.push( { 'type': 'scatter', 'title': 'Keskiarvo ' + memo.obsMinDate.getFullYear() + '-' + memo.obsMaxDate.getFullYear(), 'color': colors.obses, 'size': 6, 'line': 2, 'legend': true, 'trendline': 'none', obses: [] } ); |
| | for ( var w in memo.avgWA ) { |
| | memo.seriesA[ memo.seriesA.length - 1 ].obses.push( { |
| | 'x': memo.avgWA[ w ].cDate, |
| | 'y': memo.avgWA[ w ].avg, |
| | 'style': null, |
| | 'tooltip': null, |
| | 'annotation': null |
| | }); |
| | |
| | } |
| | |
| // add columns | | // add columns |
| for ( var s in memo.seriesA ) { | | for ( var s in memo.seriesA ) { |
| Rivi 714: |
Rivi 759: |
| | | |
| | | |
|
| |
| // create data cols for each series
| |
| var sc = 0;
| |
| for (var s in memo.seasonsA) {
| |
|
| |
| // data
| |
| if ( memo.season == 'summer' ) {
| |
| memo.data.addColumn( 'number', memo.seasonsA[s].toString() );
| |
| } else {
| |
| memo.data.addColumn( 'number', memo.seasonsA[s].toString() + '-' + (parseInt(memo.seasonsA[s])+1).toString() );
| |
| }
| |
| // style
| |
| memo.data.addColumn( { type: 'string', role: 'style' } );
| |
| // tooltip
| |
| memo.data.addColumn( { type: 'string', role: 'tooltip', 'p': { 'html': true } } );
| |
| // annotation
| |
| memo.data.addColumn( { type: 'string', role: 'annotation' } );
| |
|
| |
| // add to series
| |
| if ( memo.seasonsA[s] == memo.curSeason ) {
| |
| if ( memo.type == 'cat' ) {
| |
| memo.options.series[sc++] = { type: 'scatter', curveType: 'function', color: colors['curObses'], XpointSize: 3, lineWidth: 0, visibleInLegend: true, hideThis: false, origSize: 10 };
| |
| } else {
| |
| memo.options.series[sc++] = { type: 'scatter', curveType: 'function', color: colors['curObses'], XpointSize: 3, lineWidth: 4, visibleInLegend: true, hideThis: false, origSize: 10 };
| |
| }
| |
| } else {
| |
| memo.options.series[sc++] = { type: 'scatter', curveType: 'function', color: colors['obses'], XpointSize: 5, lineWidth: 0, visibleInLegend: false, hideThis: true, origSize: 5 };
| |
| }
| |
| }
| |
|
| |
| // legend entry for timespan
| |
| memo.data.addColumn( 'number', memo.obsMinDate.getFullYear() + '-' + memo.obsMaxDate.getFullYear() );
| |
| //memo.options.trendlines = {};
| |
| //memo.options.trendlines[ sc ] = { type: 'polynomial' };
| |
| memo.options.series[sc++] = { type: 'scatter', color: colors['obses'], pointSize: 5, visibleInLegend: true, hideThis: false };
| |
|
| |
| // add data to table
| |
| cc = memo.data.getNumberOfColumns();
| |
| for (var s in memo.seasonsA) {
| |
|
| |
| for (var o in memo.seasonsO[memo.seasonsA[s]].obses) {
| |
|
| |
| obs = memo.seasonsO[memo.seasonsA[s]].obses[o];
| |
|
| |
| dataRow = [];
| |
|
| |
| // fill row with nulls
| |
| for (var i=0; i<cc; i++) { dataRow.push( null ); }
| |
|
| |
| // x axis value
| |
| dataRow[0] = obs.compareDate;
| |
|
| |
| // data for series cols
| |
| if ( memo.seasonsA[s] == memo.curSeason ) {
| |
| dataRow[s*4+1] = obs.value;
| |
| //dataRow[ cc-1 ] = obs.value;
| |
| } else {
| |
| dataRow[s*4+1] = obs.value + memo.distF*Math.random() - memo.distF*Math.random();
| |
| //dataRow[ cc-1 ] = obs.value;
| |
| }
| |
| dataRow[s*4+2] = obs.style;
| |
| dataRow[s*4+3] = obs.popup;
| |
| dataRow[s*4+4] = null; //annotation
| |
|
| |
| memo.dataA.push( dataRow );
| |
|
| |
| }
| |
|
| |
| }
| |
|
| |
| // make week averages
| |
| memo.avgW = {};
| |
| for (var o in memo.obsesA) {
| |
|
| |
| mwDate = new Date( memo.obsesA[o].compareDate.getTime() );
| |
| w = mwDate.getWeek();
| |
| v = memo.obsesA[o].value;
| |
|
| |
| if ( typeof memo.avgW[w] == 'undefined' ) {
| |
| mwDate.setDate( mwDate.getDate() - mwDate.getDay() + 3 )
| |
| memo.avgW[w] = { week: w, cDate: mwDate, values: [ v ], sum: v, count: 1, avg: v };
| |
| } else {
| |
| memo.avgW[w].values.push( v );
| |
| memo.avgW[w].sum += v;
| |
| memo.avgW[w].count++;
| |
| memo.avgW[w].avg = memo.avgW[w].sum / memo.avgW[w].count;
| |
| }
| |
| }
| |
| | | |
| memo.avgWA = [];
| | |
| if ( memo.season == 'summer' ) {
| |
| for ( var w=1; w<54; c++ ) {
| |
| if ( typeof memo.avgW[ w ] != 'undefined' ) { memo.avgWA.push( memo.avgW[ w ] ); }
| |
| }
| |
| } else {
| |
| for ( var w=30; w<54; w++ ) {
| |
| if ( typeof memo.avgW[ w ] != 'undefined' ) { memo.avgWA.push( memo.avgW[ w ] ); }
| |
| }
| |
| for ( var w=1; w<30; w++ ) {
| |
| if ( typeof memo.avgW[ w ] != 'undefined' ) { memo.avgWA.push( memo.avgW[ w ] ); }
| |
| }
| |
| }
| |
| | | |
| | | |