~amaurycarvalho/ppastatsgui/trunk

« back to all changes in this revision

Viewing changes to unit1.pas

  • Committer: Amaury Carvalho
  • Date: 2019-02-24 06:45:25 UTC
  • Revision ID: amauryspires@gmail.com-20190224064525-09cn9iy9rnutioz5
Commit on 24/02/2019 03:45:25  -03 by amaury

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
interface
6
6
 
7
7
uses
8
 
  Classes, SysUtils, FileUtil, TAGraph, DateTimePicker, Forms, Controls,
9
 
  Graphics, Dialogs, ComCtrls, ExtCtrls, StdCtrls, Grids, FileInfo, Clipbrd,
10
 
  LCLIntf, Menus, PPAModel;
 
8
  Classes, SysUtils, FileUtil, TAGraph, TASeries, TAIntervalSources,
 
9
  DateTimePicker, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls,
 
10
  StdCtrls, Grids, FileInfo, Clipbrd, LCLIntf, Menus, DateUtils, PPAModel;
11
11
 
12
12
type
13
13
 
23
23
    btTestConnection: TButton;
24
24
    btUpdateCount: TButton;
25
25
    Chart1: TChart;
 
26
    dticSource: TDateTimeIntervalChartSource;
26
27
    dtFrom: TDateTimePicker;
27
28
    dtTo: TDateTimePicker;
28
29
    GroupBox1: TGroupBox;
38
39
    miExit: TMenuItem;
39
40
    miAbout: TMenuItem;
40
41
    PageControl1: TPageControl;
 
42
    ProgressBar1: TProgressBar;
41
43
    StatusBar1: TStatusBar;
42
44
    sgDetail: TStringGrid;
43
45
    tsChart: TTabSheet;
101
103
 
102
104
  ppa := TPPAModel.Create;
103
105
 
 
106
  enableControls(False);
 
107
  btClearToken.Enabled := True;
 
108
  btGetToken.Enabled := True;
104
109
  btRefreshSummary.Enabled := ppa.TokenReceived();
105
110
 
106
111
  summaryFile := ppa.dataPath + 'summary.csv';
119
124
 
120
125
  modelFile := ppa.dataPath + 'model.xml';
121
126
  if FileExists(modelFile) then
 
127
  begin
 
128
    enableControls(True);
122
129
    ppa.loadFromXML(modelFile);
 
130
  end;
 
131
 
 
132
  dtFrom.Date := now;
 
133
  dtTo.Date := now;
123
134
 
124
135
end;
125
136
 
134
145
end;
135
146
 
136
147
procedure TForm1.btUpdateCountClick(Sender: TObject);
 
148
var
 
149
  package: TPPAPackage;
 
150
  binary: TPPABinary;
 
151
  node, node_main: TTreeNode;
137
152
begin
138
153
 
139
154
  enableControls(False);
140
155
 
141
156
  StatusBar1.SimpleText := 'Receiving count data from site';
 
157
  ProgressBar1.Visible := True;
142
158
  Application.ProcessMessages;
143
159
 
144
 
  ppa.autoUpdateCount(ppa.user);
 
160
  ppa.autoUpdateCount(ppa.user, ProgressBar1);
 
161
  ppa.saveToXML(modelFile);
 
162
 
 
163
  tvSummary.Items.Clear;
 
164
  node_main := tvSummary.Items.Add(nil, ppa.user.Name + ': ' + ppa.user.display_name);
 
165
 
 
166
  for package in ppa.user.packages do
 
167
  begin
 
168
    node := tvSummary.Items.AddChild(node_main, package.Name + ' [' +
 
169
      IntToStr(package.downloads) + ' download(s)]');
 
170
    for binary in package.binaries do
 
171
    begin
 
172
      tvSummary.Items.AddChild(node, binary.Name + ' ' + binary.version +
 
173
        ' [' + IntToStr(binary.downloads) + ' download(s)]');
 
174
    end;
 
175
  end;
 
176
 
 
177
  node_main.Expand(False);
 
178
 
 
179
  tvSummary.SaveToFile(summaryFile);
145
180
 
146
181
  enableControls(True);
147
182
 
148
183
  StatusBar1.SimpleText := 'Ready';
 
184
  ProgressBar1.Visible := False;
149
185
  Application.ProcessMessages;
150
186
 
151
187
end;
197
233
  package: TPPAPackage;
198
234
  binary: TPPABinary;
199
235
  history: TPPABinaryHistory;
200
 
  i: integer;
 
236
  barSerie: TBarSeries;
 
237
  i, w, o, k: integer;
 
238
  x: TDateTime;
 
239
  y: double;
 
240
  found: boolean;
201
241
begin
202
242
 
203
243
  enableControls(False);
204
244
 
205
245
  StatusBar1.SimpleText := 'Receiving detail data from site';
 
246
  ProgressBar1.Visible := True;
206
247
  Application.ProcessMessages;
207
248
 
208
249
  sgDetail.RowCount := 1;
209
 
  Chart1.Series.Clear;
210
250
 
211
251
  // detail capture
212
252
 
213
 
  ppa.autoFillHistories(ppa.user, dtFrom.Date, dtTo.Date);
 
253
  ppa.autoFillHistories(ppa.user, dtFrom.Date, dtTo.Date, ProgressBar1);
214
254
 
215
255
  // detail refresh
216
256
 
 
257
  Chart1.Title.Text.Clear;
 
258
  Chart1.Title.Text.Add('Packages Downloads');
 
259
  Chart1.Title.Text.Add('Time Series');
 
260
  Chart1.LeftAxis.Title.Caption := 'Downloads';
 
261
  Chart1.BottomAxis.Title.Caption := 'Timeline';
 
262
  Chart1.ClearSeries;
 
263
 
217
264
  sgDetail.RowCount := 1;
218
265
 
 
266
  if ppa.user.packages.Count > 0 then
 
267
  begin
 
268
    i := ppa.user.packages.Count;
 
269
    w := trunc(100 / i);
 
270
    o := - trunc(i * w / 2) ;
 
271
  end;
 
272
 
219
273
  for package in ppa.user.packages do
220
274
  begin
 
275
    barSerie := TBarSeries.Create(Self);
 
276
    barSerie.Title := package.Name;
 
277
    barSerie.BarBrush.Color:=rgb(random(255), random(255), random(255));
 
278
    barSerie.BarPen.Color:=clBlack;
 
279
    barSerie.BarWidthStyle:=bwPercentMin;
 
280
    barSerie.BarWidthPercent:=w;
 
281
    //barSerie.BarOffsetPercent:=o;
 
282
    //barSerie.Clear;
 
283
    o := o + w;
 
284
 
221
285
    for binary in package.binaries do
222
286
    begin
223
287
      for history in binary.histories do
230
294
        sgDetail.Cells[4, i] := binary.version;
231
295
        sgDetail.Cells[5, i] := history.day;
232
296
        sgDetail.Cells[6, i] := IntToStr(history.downloads);
 
297
        x := ScanDateTime('yyyy-mm-dd', history.day);
 
298
        y := history.downloads;
 
299
        found := false;
 
300
        for k := 0 to barSerie.Count - 1 do
 
301
        begin
 
302
           if barSerie.GetXValue(k) = x then
 
303
           begin
 
304
              barSerie.SetYValue(k, barSerie.GetYValue(k) + y);
 
305
              found := true;
 
306
              break;
 
307
           end;
 
308
        end;
 
309
        if not found then
 
310
            barSerie.AddXY(x, y);
233
311
      end;
234
312
    end;
 
313
 
 
314
    Chart1.AddSeries(barSerie);
235
315
  end;
236
316
 
237
 
  // chart refresh
 
317
  sgDetail.AutoAdjustColumns;
238
318
 
239
319
  // finish
240
320
 
241
 
  sgDetail.AutoAdjustColumns;
242
 
 
243
321
  StatusBar1.SimpleText := 'Ready';
 
322
  ProgressBar1.Visible := False;
244
323
  Application.ProcessMessages;
245
324
 
246
325
  enableControls(True);
260
339
end;
261
340
 
262
341
procedure TForm1.btRefreshSummaryClick(Sender: TObject);
263
 
var
264
 
  package: TPPAPackage;
265
 
  binary: TPPABinary;
266
 
  node, node_main: TTreeNode;
267
342
begin
268
343
 
269
344
  enableControls(False);
281
356
    exit;
282
357
  end;
283
358
 
284
 
  tvSummary.Items.Clear;
285
 
  node_main := tvSummary.Items.Add(nil, ppa.user.Name + ': ' + ppa.user.display_name);
286
 
 
287
359
  StatusBar1.SimpleText := 'Receiving summary data from site: packages';
288
360
  Application.ProcessMessages;
289
361
 
290
362
  ppa.autoFillUser(ppa.user);
291
 
 
292
 
  for package in ppa.user.packages do
293
 
  begin
294
 
    node := tvSummary.Items.AddChild(node_main, package.Name + ' [' +
295
 
      IntToStr(package.downloads) + ' download(s)]');
296
 
    for binary in package.binaries do
297
 
    begin
298
 
      tvSummary.Items.AddChild(node, binary.Name + ' ' + binary.version +
299
 
        ' [' + IntToStr(binary.downloads) + ' download(s)]');
300
 
    end;
301
 
  end;
302
 
 
303
 
  node_main.Expand(False);
304
 
 
305
363
  ppa.saveToXML(modelFile);
306
 
  tvSummary.SaveToFile(summaryFile);
 
364
 
 
365
  btUpdateCount.Click;
307
366
 
308
367
  StatusBar1.SimpleText := 'Ready';
309
368
  Application.ProcessMessages;