Changeset 12


Ignore:
Timestamp:
Apr 17, 2026, 2:31:42 PM (13 days ago)
Author:
chronos
Message:
  • Added: Min/max interval position navigation buttons.
  • Modified: Remember last interval position.
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ean.pas

    r11 r12  
    5858
    5959  TEans = class(TObjectList<TEan>)
     60    function GetMaxTime: TDateTime;
     61    function GetMinTime: TDateTime;
    6062    function SearchByNumber(Number: string): TEan;
    6163    function SearchByOwnerKind(Owner: string; Kind: TEanKind): TEan;
     
    7577  EanValueName = 'EanValue';
    7678  EanValuesName = 'EanValues';
     79  FifteenMinute = 15 * OneMinute;
    7780
    7881
     
    180183  TotalIn := GetTotalIn(TimeFrom, TimeTo);
    181184  TotalOut := GetTotalOut(TimeFrom, TimeTo);
    182   if TotalIn <> 0 then Result := TotalIn - TotalOut
    183     else Result := 0;
     185  Result := TotalIn - TotalOut;
    184186end;
    185187
     
    187189var
    188190  TotalIn: Double;
     191  TotalOut: Double;
    189192begin
    190193  TotalIn := GetTotalIn(TimeFrom, TimeTo);
    191   if TotalIn <> 0 then Result := (1 - GetTotalOut(TimeFrom, TimeTo) / TotalIn) * 100
    192     else Result := 0;
     194  TotalOut := GetTotalOut(TimeFrom, TimeTo);
     195  Result := (1 - TotalOut / TotalIn) * 100;
    193196end;
    194197
     
    286289
    287290{ TEans }
     291
     292function TEans.GetMaxTime: TDateTime;
     293var
     294  I: Integer;
     295  Found: Boolean;
     296begin
     297  Found := False;
     298  for I := 0 to Count - 1 do
     299  with Items[I] do
     300    if Values.Count > 0 then begin
     301      if not Found then begin
     302        Result := Values[Values.Count - 1].Time;
     303        Found := True;
     304      end
     305      else if Values[Values.Count - 1].Time > Result then begin
     306        Result := Values[Values.Count - 1].Time;
     307      end;
     308    end;
     309  if not Found then Result := Now;
     310end;
     311
     312function TEans.GetMinTime: TDateTime;
     313var
     314  I: Integer;
     315  Found: Boolean;
     316begin
     317  Found := False;
     318  for I := 0 to Count - 1 do
     319  with Items[I] do
     320    if Values.Count > 0 then begin
     321      if not Found then begin
     322        Result := Values[0].Time;
     323        Found := True;
     324      end
     325      else if Values[0].Time < Result then begin
     326        Result := Values[0].Time;
     327      end;
     328    end;
     329  if not Found then Result := Now;
     330end;
    288331
    289332function TEans.SearchByNumber(Number: string): TEan;
  • trunk/EdcProject.pas

    r11 r12  
    192192        if TryStrToCurr(CSVDoc.Cells[3 + C * 2 + 1, R], CellValueOut) then begin
    193193          if EanKind = ekConsumption then CellValueOut := -CellValueOut;
    194         end;
     194        end else CellValueOut := CellValueIn;
    195195
    196196        Ean.Values.Add(TEanValue.Create(TimeFrom, CellValueIn, CellValueOut));
  • trunk/FormMain.lfm

    r11 r12  
    340340  end
    341341  object TimeEdit1: TTimeEdit
    342     Left = 520
     342    Left = 544
    343343    Height = 43
    344     Top = 8
     344    Top = 3
    345345    Width = 155
    346346    ButtonWidth = 34
     
    351351  end
    352352  object DateEdit1: TDateEdit
    353     Left = 352
     353    Left = 376
    354354    Height = 43
    355     Top = 8
     355    Top = 3
    356356    Width = 155
    357357    CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
     
    364364  end
    365365  object ButtonIntervalRight: TButton
    366     Left = 680
    367     Height = 38
    368     Top = 13
     366    Left = 704
     367    Height = 38
     368    Top = 8
    369369    Width = 40
    370370    Caption = '>'
     
    373373  end
    374374  object ButtonIntervalLeft: TButton
    375     Left = 304
    376     Height = 38
    377     Top = 13
     375    Left = 328
     376    Height = 38
     377    Top = 8
    378378    Width = 40
    379379    Caption = '<'
     
    382382  end
    383383  object ComboBoxUnit: TComboBox
    384     Left = 848
    385     Height = 38
    386     Top = 8
     384    Left = 904
     385    Height = 38
     386    Top = 3
    387387    Width = 160
    388388    ItemHeight = 0
     
    398398  end
    399399  object Label5: TLabel
    400     Left = 752
     400    Left = 808
    401401    Height = 26
    402     Top = 16
     402    Top = 11
    403403    Width = 40
    404404    Caption = 'Unit:'
     405  end
     406  object ButtonIntervalRightMax: TButton
     407    Left = 752
     408    Height = 38
     409    Top = 8
     410    Width = 40
     411    Caption = '>|'
     412    TabOrder = 7
     413    OnClick = ButtonIntervalRightMaxClick
     414  end
     415  object ButtonIntervalLeftMin: TButton
     416    Left = 280
     417    Height = 38
     418    Top = 8
     419    Width = 40
     420    Caption = '|<'
     421    TabOrder = 8
     422    OnClick = ButtonIntervalLeftMinClick
    405423  end
    406424  object Translator1: TTranslator
  • trunk/FormMain.lrj

    r11 r12  
    3636{"hash":60,"name":"tformmain.buttonintervalleft.caption","sourcebytes":[60],"value":"<"},
    3737{"hash":6049914,"name":"tformmain.label5.caption","sourcebytes":[85,110,105,116,58],"value":"Unit:"},
     38{"hash":1116,"name":"tformmain.buttonintervalrightmax.caption","sourcebytes":[62,124],"value":">|"},
     39{"hash":2044,"name":"tformmain.buttonintervalleftmin.caption","sourcebytes":[124,60],"value":"|<"},
    3840{"hash":315429,"name":"tformmain.menuitemfile.caption","sourcebytes":[70,105,108,101],"value":"File"},
    3941{"hash":341364,"name":"tformmain.menuitemload.caption","sourcebytes":[76,111,97,100],"value":"Load"},
  • trunk/FormMain.pas

    r11 r12  
    2020    ButtonIntervalRight: TButton;
    2121    ButtonIntervalLeft: TButton;
     22    ButtonIntervalRightMax: TButton;
     23    ButtonIntervalLeftMin: TButton;
    2224    Chart1: TChart;
    2325    Chart1LineSeries1: TLineSeries;
     
    6567    Translator1: TTranslator;
    6668    procedure ButtonIntervalLeftClick(Sender: TObject);
     69    procedure ButtonIntervalLeftMinClick(Sender: TObject);
    6770    procedure ButtonIntervalRightClick(Sender: TObject);
     71    procedure ButtonIntervalRightMaxClick(Sender: TObject);
    6872    procedure CheckBoxShowResultChange(Sender: TObject);
    6973    procedure ComboBoxEanDataSelect(Sender: TObject);
     
    156160end;
    157161
     162procedure TFormMain.ButtonIntervalRightMaxClick(Sender: TObject);
     163begin
     164  IntervalTo := EdcProject.Eans.GetMaxTime + FifteenMinute;
     165  UpdateInterval;
     166end;
     167
    158168procedure TFormMain.ButtonIntervalLeftClick(Sender: TObject);
    159169begin
    160170  IntervalTo := IntervalTo - GetIntervalLength;
     171  UpdateInterval;
     172end;
     173
     174procedure TFormMain.ButtonIntervalLeftMinClick(Sender: TObject);
     175begin
     176  IntervalTo := EdcProject.Eans.GetMinTime + GetIntervalLength + FifteenMinute;
    161177  UpdateInterval;
    162178end;
     
    209225procedure TFormMain.FormShow(Sender: TObject);
    210226begin
    211   MenuItemLoad.Click;
     227  EdcProject.LoadFromFile(ProjectFileName);
     228
     229  UpdateInterval;
     230  UpdateInterface;
    212231end;
    213232
     
    217236
    218237  if (EdcProject.Eans.Count > 0) and (EdcProject.Eans[0].Values.Count > 0) then
    219     IntervalTo := EdcProject.Eans[0].Values.Last.Time + 15 * OneMinute;
     238    IntervalTo := EdcProject.Eans[0].Values.Last.Time + FifteenMinute;
    220239  UpdateInterval;
    221240  UpdateInterface;
     
    235254
    236255  if (EdcProject.Eans.Count > 0) and (EdcProject.Eans[0].Values.Count > 0) then
    237     IntervalTo := EdcProject.Eans[0].Values.Last.Time + 15 * OneMinute;
     256    IntervalTo := EdcProject.Eans[0].Values.Last.Time + FifteenMinute;
    238257  UpdateInterval;
    239258  UpdateInterface;
     
    501520begin
    502521  case Period of
    503     prDay: Result := 15 * OneMinute;
     522    prDay: Result := FifteenMinute;
    504523    prWeek: Result := 1;
    505524    prMonth: Result := 1;
     
    549568    PageControl1.TabIndex := ReadIntegerWithDefault('ActiveTab', PageControl1.TabIndex);
    550569    ShowResult := ReadBoolWithDefault('ShowResult', ShowResult);
     570    IntervalFrom := ReadDateTimeWithDefault('IntervalFrom', IntervalFrom);
     571    IntervalTo := ReadDateTimeWithDefault('IntervalTo', IntervalTo);
    551572  finally
    552573    Free;
     
    572593    WriteInteger('ActiveTab', PageControl1.TabIndex);
    573594    WriteBool('ShowResult', ShowResult);
     595    WriteDateTime('IntervalFrom', IntervalFrom);
     596    WriteDateTime('IntervalTo', IntervalTo);
    574597  finally
    575598    Free;
  • trunk/Languages/EdcStats.cs.po

    r11 r12  
    7575msgstr "<"
    7676
     77#: tformmain.buttonintervalleftmin.caption
     78msgid "|<"
     79msgstr "|<"
     80
    7781#: tformmain.buttonintervalright.caption
    7882msgid ">"
    7983msgstr ">"
     84
     85#: tformmain.buttonintervalrightmax.caption
     86msgid ">|"
     87msgstr ">|"
    8088
    8189#: tformmain.caption
  • trunk/Languages/EdcStats.pot

    r11 r12  
    6565msgstr ""
    6666
     67#: tformmain.buttonintervalleftmin.caption
     68msgid "|<"
     69msgstr ""
     70
    6771#: tformmain.buttonintervalright.caption
    6872msgid ">"
     73msgstr ""
     74
     75#: tformmain.buttonintervalrightmax.caption
     76msgid ">|"
    6977msgstr ""
    7078
Note: See TracChangeset for help on using the changeset viewer.