Ignore:
Timestamp:
May 16, 2014, 10:44:07 PM (11 years ago)
Author:
chronos
Message:
  • Opraveno: Zobrazení tabulky seznamu měření.
  • Opraveno: Přidávání nových hodnot přes web.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Modules/TimeMeasure/Measure.php

    r655 r656  
    3939  }
    4040
    41 
    4241  function AddValue($Value = array('Min' => 0, 'Avg' => 0, 'Max' => 0), $Level = 0, $Time = 0)
    4342  {
    4443    if($Time == 0) $Time = time();
    45     //$Value = round($Measure['divider'] * $Value);
    46     //echo(TimeToMysqlDateTime($Time).'|'.$Level."\n");
    47 
    48     $Result = $this->Database->select($this->Data['DataTable'], '*', 'Measure='.$this->Data['Id'].' AND Level='.$Level.' ORDER BY Time DESC LIMIT 2');
    49     //echo($Database->LastQuery."\n");
     44
     45    $Result = $this->Database->select($this->Data['DataTable'], '*', 'Measure='.
     46      $this->Data['Id'].' AND Level='.$Level.' ORDER BY Time DESC LIMIT 2');
    5047    if($Result->num_rows == 0)
    5148    {
    52        $this->Database->insert($this->Data['DataTable'], array('Min' => $Value['Min'], 'Avg' => $Value['Avg'], 'Max' => $Value['Max'], 'Level' => $Level, 'Measure' => $this->Data['Id'], 'Time' => $this->Database->TimeToMysqlDateTime($Time), 'Continuity' => 0));
    53        //echo($Database->LastQuery."\n");
     49       $this->Database->insert($this->Data['DataTable'], array('Min' => $Value['Min'],
     50         'Avg' => $Value['Avg'], 'Max' => $Value['Max'], 'Level' => $Level,
     51         'Measure' => $this->Data['Id'], 'Time' => TimeToMysqlDateTime($Time), 'Continuity' => 0));
    5452    } else if($Result->num_rows == 1)
    5553    {
    56       $this->Database->insert($this->Data['DataTable'], array('Min' => $Value['Min'], 'Avg' => $Value['Avg'], 'Max' => $Value['Max'], 'Level' => $Level, 'Measure' => $this->Data['Id'], 'Time' => $this->Database->TimeToMysqlDateTime($Time), 'Continuity' => 1));
    57       //echo($Database->LastQuery."\n");
     54      $this->Database->insert($this->Data['DataTable'], array('Min' => $Value['Min'],
     55        'Avg' => $Value['Avg'], 'Max' => $Value['Max'], 'Level' => $Level,
     56        'Measure' => $this->Data['Id'], 'Time' => TimeToMysqlDateTime($Time), 'Continuity' => 1));
    5857    } else
    5958    {
    6059      $LastValue = $Result->fetch_assoc();
    6160      $NextToLastValue = $Result->fetch_assoc();
    62       //echo($Level.': '.$Time.' - '.MysqlDateTimeToTime($LastValue['Time']).' '.($Time - MysqlDateTimeToTime($LastValue['Time'])).' = '.$Measure['Period']."\n");
    6361      if((($Time - MysqlDateTimeToTime($LastValue['Time'])) < 0.75 * $this->Data['Period']) and ($Level == 0))
    6462      {
    65         echo('Too short period\n');
     63        echo('Too short period. Minimal period is '.(0.75 * $this->Data['Period'])." seconds\n");
    6664      } else
    6765      {
    6866        if(($Time - MysqlDateTimeToTime($LastValue['Time'])) < 1.25 * $this->Data['Period']) $Continuity = 1;
    6967          else $Continuity = 0;
    70         echo('('.$LastValue['Avg'].'=='.$NextToLastValue['Avg'].') and ('.$LastValue['Avg'].' == '.$Value.') and ('.$LastValue['Continuity'].' == 1) and ('.$Continuity.' == 1))'."\n");
    71         if(($LastValue['Min'] == $NextToLastValue['Min']) and ($LastValue['Min'] == $Value['Min']) and ($LastValue['Avg'] == $NextToLastValue['Avg']) and ($LastValue['Avg'] == $Value['Avg']) and ($LastValue['Max'] == $NextToLastValue['Max']) and ($LastValue['Max'] == $Value['Max']) and ($LastValue['Continuity'] == 1) and ($Continuity == 1))
    72         {
    73           $this->Database->update($this->Data['DataTable'], '(Time="'.$LastValue['Time'].'") AND (Level='.$Level.') AND (Measure='.$this->Data['Id'].')', array('Time' => $this->Database->TimeToMysqlDateTime($Time)));
    74           //echo($this->Database->LastQuery."\n");
     68        if(($LastValue['Min'] == $NextToLastValue['Min']) and ($LastValue['Min'] ==
     69          $Value['Min']) and ($LastValue['Avg'] == $NextToLastValue['Avg']) and
     70          ($LastValue['Avg'] == $Value['Avg']) and ($LastValue['Max'] == $NextToLastValue['Max'])
     71          and ($LastValue['Max'] == $Value['Max']) and ($LastValue['Continuity'] == 1) and ($Continuity == 1))
     72        {
     73          $this->Database->update($this->Data['DataTable'], '(Time="'.$LastValue['Time'].
     74            '") AND (Level='.$Level.') AND (Measure='.$this->Data['Id'].')', array('Time' => TimeToMysqlDateTime($Time)));
    7575        } else
    7676        {
    77           $this->Database->insert($this->Data['DataTable'], array('Min' => $Value['Min'], 'Avg' => $Value['Avg'], 'Max' => $Value['Max'], 'Level' => $Level, 'Measure' => $this->Data['Id'], 'Time' => $this->Database->TimeToMysqlDateTime($Time), 'Continuity' => $Continuity));
     77          $this->Database->insert($this->Data['DataTable'], array('Min' => $Value['Min'],
     78            'Avg' => $Value['Avg'], 'Max' => $Value['Max'], 'Level' => $Level,
     79            'Measure' => $this->Data['Id'], 'Time' => TimeToMysqlDateTime($Time), 'Continuity' => $Continuity));
    7880        }
    7981      }
     
    8385      {
    8486        $Level = $Level + 1;
    85         //echo('Level '.$Level."<br>\n");
    8687        $TimeSegment = $this->TimeSegment($this->Data['Period'], 1);
    8788        $EndTime = $this->AlignTime($Time, $TimeSegment);
     
    8990        $StartTime = $EndTime - $TimeSegment;
    9091
    91         //echo(" ".$TimeSegment." ".$StartTime.'-'.$EndTime."<br>\n");
    92         //flush();
    93 
    9492        // Load values in time range
    9593        $Values = array();
    9694        //.'" AND Time < "'.TimeToMysqlDateTime($EndTime).'" AND Measure='.$Measure['Id'].' AND Level='.($Level - 1).' ORDER BY Time');
    97         $Result = $this->Database->select($this->Data['DataTable'], '*', '(Time > "'.TimeToMysqlDateTime($StartTime).'") AND (Time < "'.$this->Database->TimeToMysqlDateTime($EndTime).'") AND (Measure='.$this->Data['Id'].') AND (Level='.($Level - 1).') ORDER BY Time');
     95        $Result = $this->Database->select($this->Data['DataTable'], '*', '(Time > "'.
     96          TimeToMysqlDateTime($StartTime).'") AND (Time < "'.TimeToMysqlDateTime($EndTime).
     97            '") AND (Measure='.$this->Data['Id'].') AND (Level='.($Level - 1).') ORDER BY Time');
    9898        while($Row = $Result->fetch_assoc())
    9999        {
     
    103103        //if(count($Values) > 2)
    104104        {
    105           //print_r($Values);
    106105          //array_pop($Values);
    107106
    108107          // Load subsidary values
    109           print_r($Values);
    110           $Values = array_merge($this->LoadLeftSideValue($Level - 1, $this->Data,
     108          $Values = array_merge($this->LoadLeftSideValue($Level - 1,
    111109            $StartTime), $Values, $this->LoadRightSideValue($Level - 1, $EndTime));
    112           print_r($Values);
    113110
    114111          $Point = $this->ComputeOneValue($StartTime, $EndTime, $Values, $Level);
    115         //print_r($Point);
    116112
    117113          $this->Database->delete($this->Data['DataTable'], '(Time > "'.TimeToMysqlDateTime($StartTime).
     
    128124  {
    129125    $Y = ($Y2 - $Y1) / ($X2 - $X1) * ($X - $X1) + $Y1;
    130     //echo($Y1.'-'.$Y.'-'.$Y2.' '.$X1.'-'.$X.'-'.$X2.'<br>');
    131126    return($Y);
    132127  }
     
    186181        else if($ValueType == 'Min')
    187182        {
    188           //echo($Values[$I+1]['continuity'].'=='.$Measure['ContinuityEnabled'].'<br>');
    189183          if($Values[$I + 1]['Continuity'] == $this->Data['ContinuityEnabled'])
    190184          {
     
    210204    }
    211205    return($NewValue);
    212     //echo($NewValue['avg'].'<br>');
    213     //return(array('min' => rand(0,1), 'avg' => $NewValue['avg'], 'max' => rand(0,1)));
    214206  }
    215207
     
    217209  {
    218210    // Get first and last time
    219     //echo($Measure['Id'].','.$Level.','.StatTableName($Level)."\n");
    220211    $Result = $this->Database->select($this->Data['DataTable'], '*', 'Measure='.$this->Data['Id'].' AND Level='.$Level.' ORDER BY Time LIMIT 1');
    221212    if($Result->num_rows > 0)
     
    269260  {
    270261    $Result = array();
    271     //echo('SELECT * FROM '.StatTableName($Level). ' WHERE '. 'Time < "'.TimeToMysqlDateTime($Time).'" AND measure='.$Measure['Id'].' AND level='.$Level.' ORDER BY Time DESC LIMIT 1'."<br>\n");
    272     $DbResult = $this->Database->select($this->Data['DataTable'], '*', 'Time < "'.TimeToMysqlDateTime($Time).'" AND Measure='.$this->Data['Id'].' AND Level='.$Level.' ORDER BY Time DESC LIMIT 1');
     262    $DbResult = $this->Database->select($this->Data['DataTable'], '*', '(Time < "'.
     263      TimeToMysqlDateTime($Time).'") AND (Measure='.$this->Data['Id'].') AND (Level='.$Level.') ORDER BY Time DESC LIMIT 1');
    273264    if($DbResult->num_rows > 0)
    274265    {
     
    289280        array_push($Result, array('Time' => (MysqlDateTimeToTime($Row['Time']) - 10), 'Min' => 0, 'Avg' => 0, 'Max' => 0, 'Continuity' => 0));
    290281      }
    291 //    if($Debug) print_r($Result);
    292282      return($Result);
    293283    }
     
    330320    {
    331321      $Values = array_merge($this->LoadLeftSideValue($Level, $TimeFrom), $Values, $this->LoadRightSideValue($Level, $TimeTo));
    332       //echo(count($Values).'<br>');
    333       //echo($TimeFrom.','.$TimeTo.'<br>');
    334       //echo($Values[0]['Time'].'<br>');
    335322      $StartIndex = 0;
    336323      $Points = array();
    337       //echo($DivisionCount.'<br>');
    338324      if($this->Debug) print_r($Values);
    339       //die();
    340325      for($I = 0; $I < $this->DivisionCount; $I++)
    341326      {
    342327        $TimeStart = $TimeFrom + (($TimeTo - $TimeFrom) / $this->DivisionCount) * $I;
    343         //if($Debug) echo('TimeStart '.$I.': '.$TimeStart.'('.TimeToMysqlDateTime($TimeStart).')<br>');
    344328        $TimeEnd = $TimeFrom + (($TimeTo - $TimeFrom) / $this->DivisionCount) * ($I + 1);
    345         if($this->Debug) echo('TimeEnd '.$I.': '.$TimeEnd.'('.$this->Database->TimeToMysqlDateTime($TimeEnd).')<br>');
    346         //echo($TimeStart.','.$TimeEnd.'<br>');
     329        if($this->Debug) echo('TimeEnd '.$I.': '.$TimeEnd.'('.TimeToMysqlDateTime($TimeEnd).')<br>');
    347330
    348331        $EndIndex = $StartIndex;
     
    350333        //while(($Values[$EndIndex]['Time'] < $TimeEnd)) $EndIndex = $EndIndex + 1;
    351334        $SubValues = array_slice($Values, $StartIndex, $EndIndex - $StartIndex + 1);
    352         //echo($StartIndex.','.$EndIndex.' '.count($SubValues).'<br>');
    353         //print_r($SubValues);
    354335        $Points[] = $this->ComputeOneValue($TimeStart, $TimeEnd, $SubValues, $Level);
    355336        $StartIndex = $EndIndex - 1;
     
    362343  function RebuildMeasureCache()
    363344  {
    364     echo('Velicina '.$this->Data['Name']."<br>\n");
     345    echo('Veličina '.$this->Data['Name']."<br>\n");
    365346    if($this->Data['Continuity'] == 0) $this->Data['ContinuityEnabled'] = 0;  // non continuous
    366347      else $this->Data['ContinuityEnabled'] = 2;    // continuous graph
     
    377358      echo('Uroven '.$Level."<br>\n");
    378359      $TimeRange = $this->GetTimeRange($Level - 1);
    379       //echo($Measure['Id'].','.($Level-1)."\n");
    380       //echo(TimeToMysqlDateTime($TimeRange['left']).'-'.TimeToMysqlDateTime($TimeRange['right'])."\n");
    381360      $TimeSegment = $this->TimeSegment($this->Data['Period'], $Level);
    382361      $StartTime = $this->AlignTime($TimeRange['Left'], $TimeSegment) - $TimeSegment;
     
    390369        $EndTime2 = $StartTime + ($I + 1) * $BurstCount * $TimeSegment;
    391370        $Values = array();
    392         $DbResult = $this->Database->select($this->Data['DataTable'], '*', 'Time > "'.$this->Database->TimeToMysqlDateTime($StartTime2).'" AND Time < "'.$this->Database->TimeToMysqlDateTime($EndTime2).'" AND Measure='.$Measure['Id'].' AND Level='.($Level - 1).' ORDER BY Time');
     371        $DbResult = $this->Database->select($this->Data['DataTable'], '*', 'Time > "'.
     372          TimeToMysqlDateTime($StartTime2).'" AND Time < "'.TimeToMysqlDateTime($EndTime2).'" AND Measure='.$this->Data['Id'].' AND Level='.($Level - 1).' ORDER BY Time');
    393373        while($Row = $DbResult->fetch_assoc())
    394374        {
     
    399379        if(count($Values) > 0)
    400380        {
    401           $Values = array_merge($this->LoadLeftSideValue($Level - 1, $StartTime2), $Values, $this->LoadRightSideValue($Level - 1, $Measure, $EndTime2));
     381          $Values = array_merge($this->LoadLeftSideValue($Level - 1, $StartTime2),
     382          $Values, $this->LoadRightSideValue($Level - 1, $this->Data, $EndTime2));
    402383
    403384          $StartIndex = 0;
     
    411392            while($Values[$EndIndex]['Time'] < $EndTime3) $EndIndex = $EndIndex + 1;
    412393            $SubValues = array_slice($Values, $StartIndex, $EndIndex - $StartIndex + 1);
    413             //echo($StartIndex.','.$EndIndex.' '.count($SubValues).'<br>');
    414             //print_r($SubValues);
    415394            if(count($SubValues) > 2)
    416395            {
    417396              $Point = $this->ComputeOneValue($StartTime3, $EndTime3, $SubValues, $Level);
    418397              $Continuity = $SubValues[1]['Continuity'];
    419               $this->Database->insert($this->Data['DataTable'], array('Level' => $Level, 'Measure' => $this->Data['Id'], 'Min' => $Point['Min'], 'Avg' => $Point['avg'], 'max' => $Point['Max'], 'Continuity' => $Continuity, 'Time' => $this->Database->TimeToMysqlDateTime($StartTime3 + ($EndTime3 - $StartTime3) / 2)));
     398              $this->Database->insert($this->Data['DataTable'], array('Level' => $Level,
     399                'Measure' => $this->Data['Id'], 'Min' => $Point['Min'], 'Avg' => $Point['avg'],
     400                'max' => $Point['Max'], 'Continuity' => $Continuity, 'Time' =>
     401                TimeToMysqlDateTime($StartTime3 + ($EndTime3 - $StartTime3) / 2)));
    420402            }
    421403            $StartIndex = $EndIndex - 1;
Note: See TracChangeset for help on using the changeset viewer.