Upgrade jpgrah to 4.3.4
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing

This commit is contained in:
Nigel Sheldon 2021-01-03 17:10:26 +01:00
commit b5868f05f6
72 changed files with 19157 additions and 10327 deletions

View file

@ -1,49 +1,49 @@
<?php
/*=======================================================================
// File: JPGRAPH_DATE.PHP
// Description: Classes to handle Date scaling
// Created: 2005-05-02
// Ver: $Id: jpgraph_date.php 912 2007-09-26 21:00:35Z ljp $
//
// Copyright (c) Aditus Consulting. All rights reserved.
//========================================================================
*/
// File: JPGRAPH_DATE.PHP
// Description: Classes to handle Date scaling
// Created: 2005-05-02
// Ver: $Id: jpgraph_date.php 1106 2009-02-22 20:16:35Z ljp $
//
// Copyright (c) Asial Corporation. All rights reserved.
//========================================================================
*/
DEFINE('HOURADJ_1', 0+30);
DEFINE('HOURADJ_2', 1+30);
DEFINE('HOURADJ_3', 2+30);
DEFINE('HOURADJ_4', 3+30);
DEFINE('HOURADJ_6', 4+30);
DEFINE('HOURADJ_12', 5+30);
define('HOURADJ_1', 0+30);
define('HOURADJ_2', 1+30);
define('HOURADJ_3', 2+30);
define('HOURADJ_4', 3+30);
define('HOURADJ_6', 4+30);
define('HOURADJ_12', 5+30);
DEFINE('MINADJ_1', 0+20);
DEFINE('MINADJ_5', 1+20);
DEFINE('MINADJ_10', 2+20);
DEFINE('MINADJ_15', 3+20);
DEFINE('MINADJ_30', 4+20);
define('MINADJ_1', 0+20);
define('MINADJ_5', 1+20);
define('MINADJ_10', 2+20);
define('MINADJ_15', 3+20);
define('MINADJ_30', 4+20);
DEFINE('SECADJ_1', 0);
DEFINE('SECADJ_5', 1);
DEFINE('SECADJ_10', 2);
DEFINE('SECADJ_15', 3);
DEFINE('SECADJ_30', 4);
define('SECADJ_1', 0);
define('SECADJ_5', 1);
define('SECADJ_10', 2);
define('SECADJ_15', 3);
define('SECADJ_30', 4);
DEFINE('YEARADJ_1', 0+30);
DEFINE('YEARADJ_2', 1+30);
DEFINE('YEARADJ_5', 2+30);
define('YEARADJ_1', 0+30);
define('YEARADJ_2', 1+30);
define('YEARADJ_5', 2+30);
DEFINE('MONTHADJ_1', 0+20);
DEFINE('MONTHADJ_6', 1+20);
define('MONTHADJ_1', 0+20);
define('MONTHADJ_6', 1+20);
DEFINE('DAYADJ_1', 0);
DEFINE('DAYADJ_WEEK', 1);
DEFINE('DAYADJ_7', 1);
define('DAYADJ_1', 0);
define('DAYADJ_WEEK', 1);
define('DAYADJ_7', 1);
DEFINE('SECPERYEAR', 31536000);
DEFINE('SECPERDAY', 86400);
DEFINE('SECPERHOUR', 3600);
DEFINE('SECPERMIN', 60);
define('SECPERYEAR', 31536000);
define('SECPERDAY', 86400);
define('SECPERHOUR', 3600);
define('SECPERMIN', 60);
class DateScale extends LinearScale
@ -56,11 +56,11 @@ class DateScale extends LinearScale
//---------------
// CONSTRUCTOR
public function DateScale($aMin=0, $aMax=0, $aType='x')
public function __construct($aMin=0, $aMax=0, $aType='x')
{
assert($aType=="x");
assert($aMin<=$aMax);
$this->type=$aType;
$this->scale=array($aMin,$aMax);
$this->world_size=$aMax-$aMin;
@ -113,14 +113,14 @@ class DateScale extends LinearScale
}
} else {
// Adjust to an even week boundary.
$w = (int)date('w', $aTime); // Day of week 0=Sun, 6=Sat
if (true) { // Adjust to start on Mon
if ($w==0) {
$w=6;
} else {
--$w;
}
}
$w = (int)date('w', $aTime); // Day of week 0=Sun, 6=Sat
if (true) { // Adjust to start on Mon
if ($w==0) {
$w=6;
} else {
--$w;
}
}
if ($aRound == 0) {
$d -= $w;
} else {
@ -256,73 +256,73 @@ class DateScale extends LinearScale
{
// Format of array
// array ( Decision point, array( array( Major-scale-step-array ),
// array( Minor-scale-step-array ),
// array( 0=date-adjust, 1=time-adjust, adjustment-alignment) )
// array( Minor-scale-step-array ),
// array( 0=date-adjust, 1=time-adjust, adjustment-alignment) )
//
$scalePoints =
array(
/* Intervall larger than 10 years */
SECPERYEAR*10,array(array(SECPERYEAR*5,SECPERYEAR*2),
array(SECPERYEAR),
array(0,YEARADJ_1, 0,YEARADJ_1) ),
array(SECPERYEAR),
array(0,YEARADJ_1, 0,YEARADJ_1) ),
/* Intervall larger than 2 years */
SECPERYEAR*2,array(array(SECPERYEAR),array(SECPERYEAR),
array(0,YEARADJ_1) ),
array(0,YEARADJ_1) ),
/* Intervall larger than 90 days (approx 3 month) */
SECPERDAY*90,array(array(SECPERDAY*30,SECPERDAY*14,SECPERDAY*7,SECPERDAY),
array(SECPERDAY*5,SECPERDAY*7,SECPERDAY,SECPERDAY),
array(0,MONTHADJ_1, 0,DAYADJ_WEEK, 0,DAYADJ_1, 0,DAYADJ_1)),
array(SECPERDAY*5,SECPERDAY*7,SECPERDAY,SECPERDAY),
array(0,MONTHADJ_1, 0,DAYADJ_WEEK, 0,DAYADJ_1, 0,DAYADJ_1)),
/* Intervall larger than 30 days (approx 1 month) */
SECPERDAY*30,array(array(SECPERDAY*14,SECPERDAY*7,SECPERDAY*2, SECPERDAY),
array(SECPERDAY,SECPERDAY,SECPERDAY,SECPERDAY),
array(0,DAYADJ_WEEK, 0,DAYADJ_1, 0,DAYADJ_1, 0,DAYADJ_1)),
array(SECPERDAY,SECPERDAY,SECPERDAY,SECPERDAY),
array(0,DAYADJ_WEEK, 0,DAYADJ_1, 0,DAYADJ_1, 0,DAYADJ_1)),
/* Intervall larger than 7 days */
SECPERDAY*7,array(array(SECPERDAY,SECPERHOUR*12,SECPERHOUR*6,SECPERHOUR*2),
array(SECPERHOUR*6,SECPERHOUR*3,SECPERHOUR,SECPERHOUR),
array(0,DAYADJ_1, 1,HOURADJ_12, 1,HOURADJ_6, 1,HOURADJ_1)),
array(SECPERHOUR*6,SECPERHOUR*3,SECPERHOUR,SECPERHOUR),
array(0,DAYADJ_1, 1,HOURADJ_12, 1,HOURADJ_6, 1,HOURADJ_1)),
/* Intervall larger than 1 day */
SECPERDAY,array(array(SECPERDAY,SECPERHOUR*12,SECPERHOUR*6,SECPERHOUR*2,SECPERHOUR),
array(SECPERHOUR*6,SECPERHOUR*2,SECPERHOUR,SECPERHOUR,SECPERHOUR),
array(1,HOURADJ_12, 1,HOURADJ_6, 1,HOURADJ_1, 1,HOURADJ_1)),
array(SECPERHOUR*6,SECPERHOUR*2,SECPERHOUR,SECPERHOUR,SECPERHOUR),
array(1,HOURADJ_12, 1,HOURADJ_6, 1,HOURADJ_1, 1,HOURADJ_1)),
/* Intervall larger than 12 hours */
SECPERHOUR*12,array(array(SECPERHOUR*2,SECPERHOUR,SECPERMIN*30,900,600),
array(1800,1800,900,300,300),
array(1,HOURADJ_1, 1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),
array(1800,1800,900,300,300),
array(1,HOURADJ_1, 1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),
/* Intervall larger than 2 hours */
SECPERHOUR*2,array(array(SECPERHOUR,SECPERMIN*30,900,600,300),
array(1800,900,300,120,60),
array(1,HOURADJ_1, 1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),
array(1800,900,300,120,60),
array(1,HOURADJ_1, 1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),
/* Intervall larger than 1 hours */
SECPERHOUR,array(array(SECPERMIN*30,900,600,300),array(900,300,120,60),
array(1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),
array(1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),
/* Intervall larger than 30 min */
SECPERMIN*30,array(array(SECPERMIN*15,SECPERMIN*10,SECPERMIN*5,SECPERMIN),
array(300,300,60,10),
array(1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5, 1,MINADJ_1)),
array(300,300,60,10),
array(1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5, 1,MINADJ_1)),
/* Intervall larger than 1 min */
SECPERMIN,array(array(SECPERMIN,15,10,5),
array(15,5,2,1),
array(1,MINADJ_1, 1,SECADJ_15, 1,SECADJ_10, 1,SECADJ_5)),
array(15,5,2,1),
array(1,MINADJ_1, 1,SECADJ_15, 1,SECADJ_10, 1,SECADJ_5)),
/* Intervall larger than 10 sec */
10,array(array(5,2),
array(1,1),
array(1,SECADJ_5, 1,SECADJ_1)),
array(1,1),
array(1,SECADJ_5, 1,SECADJ_1)),
/* Intervall larger than 1 sec */
1,array(array(1),
array(1),
array(1,SECADJ_1)),
array(1),
array(1,SECADJ_1)),
);
$ns = count($scalePoints);
@ -433,10 +433,16 @@ class DateScale extends LinearScale
// identical to LinearScale::AutoScale
if ($aStartTime == $aEndTime) {
// Special case when we only have one data point.
// Create a small artifical intervall to do the autoscaling
// Create a small artificial interval to do the autoscaling
$aStartTime -= 10;
$aEndTime += 10;
}
if (abs($aEndTime - $aStartTime) <= 1) {
// Special case when we only have one second.
// Create a small artificial interval to do the autoscaling
$aStartTime -= 1;
$aEndTime += 1;
}
$done=false;
$i=0;
while (! $done && $i < 5) {
@ -447,19 +453,19 @@ class DateScale extends LinearScale
}
$i++;
}
/*
if( 0 ) { // DEBUG
echo " Start =".date("Y-m-d H:i:s",$aStartTime)."<br>";
echo " End =".date("Y-m-d H:i:s",$aEndTime)."<br>";
echo "Adj Start =".date("Y-m-d H:i:s",$adjstart)."<br>";
echo "Adj End =".date("Y-m-d H:i:s",$adjend)."<p>";
echo "Major = $maj s, ".floor($maj/60)."min, ".floor($maj/3600)."h, ".floor($maj/86400)."day<br>";
echo "Min = $min s, ".floor($min/60)."min, ".floor($min/3600)."h, ".floor($min/86400)."day<br>";
echo "Format=$format<p>";
}
*/
if( 0 ) { // DEBUG
echo " Start =".date("Y-m-d H:i:s",$aStartTime)."<br>";
echo " End =".date("Y-m-d H:i:s",$aEndTime)."<br>";
echo "Adj Start =".date("Y-m-d H:i:s",$adjstart)."<br>";
echo "Adj End =".date("Y-m-d H:i:s",$adjend)."<p>";
echo "Major = $maj s, ".floor($maj/60)."min, ".floor($maj/3600)."h, ".floor($maj/86400)."day<br>";
echo "Min = $min s, ".floor($min/60)."min, ".floor($min/3600)."h, ".floor($min/86400)."day<br>";
echo "Format=$format<p>";
}
*/
if ($this->iStartTimeAlign !== false && $this->iStartAlign !== false) {
JpGraphError::RaiseL(3001);
//('It is only possible to use either SetDateAlign() or SetTimeAlign() but not both');
@ -485,7 +491,7 @@ class DateScale extends LinearScale
}
if ($this->iStartAlign !== false) {
if ($this->iStartAlign >= 30) {
$adjstart = $this->AdjStartDate($aStartTime, $this->iStartAlign-30);