5a6d7b38b133db8a60f94de0800359fcb2b2ad7f
[sdk] / samples / db / MovieCollection / allMoviesReport.ec
1 import "movieSchema"
2 import "reports"
3
4 class MoviesReportDetail : Detail
5 {
6    size = { 500, 22 };
7    font = { "Arial", 10 };
8
9    keepTogether = true;
10    
11    Label movieName      { this, anchor = { left = 4, top = 2, right = 0.60, bottom = 2 } };
12    Label mediaType      { this, anchor = { left = 0.40, top = 2, right = 0.45, bottom = 2 } };
13    Label dateAdded      { this, anchor = { left = 0.55, top = 2, right = 0.30, bottom = 2 } };
14    Label borrowerName   { this, anchor = { left = 0.70, top = 2, right = 4, bottom = 2 } };
15
16    bool OnCreate(void)
17    {
18       String s;
19       RowMovies row = (RowMovies)report.groupings[0].row;
20       
21       s = row.name; movieName.text = s; delete s;
22       s = PrintString(row.mediaType); mediaType.text = s; delete s;
23       s = PrintString((ShortDate)row.dateAdded); dateAdded.text = s; delete s;
24       s = row.borrower.name; borrowerName.text = s; delete s;
25       return true;
26    }
27 }
28
29 class MoviesReportPageHeader : Detail
30 {
31    size = { 500, 30 };
32    font = { "Arial", 10, bold = true };
33
34    Label movieName      { this, anchor = { left = 4, top = 9, right = 0.60, bottom = 2 }, text = "Movie Name" };
35    Label mediaType      { this, anchor = { left = 0.40, top = 9, right = 0.45, bottom = 2 }, text = "Media Type" };
36    Label dateAdded      { this, anchor = { left = 0.55, top = 9, right = 0.30, bottom = 2 }, text = "Date Added" };
37    Label borrowerName   { this, anchor = { left = 0.70, top = 9, right = 4, bottom = 2 }, text = "Borrower Name" };
38
39    void OnRedraw(Surface surface)
40    {
41       int x = clientSize.w - 1, y = clientSize.h - 1;
42       surface.Rectangle(0, 5, x, y);
43    }
44 }
45
46 class MoviesReport : CommonReport
47 {
48    title = "All my movies";
49    pageHeader = class(MoviesReportPageHeader);
50    rowDetail = class(MoviesReportDetail);
51
52    bool ExecuteData(Database db)
53    {
54       RowMovies row { };
55       row.query = "SELECT ROWID, * FROM `Movies` ORDER BY `Media Type`, `Name`;";
56       row.Select(nil);
57       groupings[0].row = row;
58       return true;
59    }
60 }