Skip to content

Commit 022b18e

Browse files
committed
Added new domain objects
EG_CELL_DATA EG_DIMENSION_PROPERTIES EG_ROW_DATA Updated EG_GRID_DATA (Wip, Eiffel to JSON mapping.)
1 parent d6dbed0 commit 022b18e

File tree

6 files changed

+264
-19
lines changed

6 files changed

+264
-19
lines changed

sheets/src/objects/eg_cell_data.e

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
note
2+
description: "[
3+
Data about a specific cell.
4+
5+
{
6+
"userEnteredValue": {
7+
object (ExtendedValue)
8+
},
9+
"effectiveValue": {
10+
object (ExtendedValue)
11+
},
12+
"formattedValue": string,
13+
"userEnteredFormat": {
14+
object (CellFormat)
15+
},
16+
"effectiveFormat": {
17+
object (CellFormat)
18+
},
19+
"hyperlink": string,
20+
"note": string,
21+
"textFormatRuns": [
22+
{
23+
object (TextFormatRun)
24+
}
25+
],
26+
"dataValidation": {
27+
object (DataValidationRule)
28+
},
29+
"pivotTable": {
30+
object (PivotTable)
31+
}
32+
}
33+
]"
34+
date: "$Date$"
35+
revision: "$Revision$"
36+
EIS: "name=CellData", "src=https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/cells#CellData", "protocol=uri"
37+
38+
class
39+
EG_CELL_DATA
40+
41+
end
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
note
2+
description: "[
3+
Properties about a dimension.
4+
5+
{
6+
"hiddenByFilter": boolean,
7+
"hiddenByUser": boolean,
8+
"pixelSize": integer,
9+
"developerMetadata": [
10+
{
11+
object (DeveloperMetadata)
12+
}
13+
]
14+
}
15+
16+
]"
17+
date: "$Date$"
18+
revision: "$Revision$"
19+
20+
class
21+
EG_DIMENSION_PROPERTIES
22+
23+
24+
feature -- Access
25+
26+
hidden_by_filter: BOOLEAN
27+
-- True if this dimension is being filtered. This field is read-only.
28+
29+
hidden_by_user: BOOLEAN
30+
-- True if this dimension is explicitly hidden.
31+
32+
pixel_size: INTEGER
33+
-- The height (if a row) or width (if a column) of the dimension in pixels.
34+
35+
developer_metadata: detachable LIST [EG_DEVELOPER_METADATA]
36+
-- The developer metadata associated with a single row or column.
37+
38+
feature -- Status Report
39+
40+
is_hidden_by_filter_set: BOOLEAN
41+
-- Use to set the value once.
42+
43+
feature -- Element Change
44+
45+
set_hidden_by_filter (a_val: like hidden_by_filter)
46+
-- Set `hidden_by_filter` with `a_val`.
47+
require
48+
not_set: not is_hidden_by_filter_set
49+
do
50+
is_hidden_by_filter_set := True
51+
hidden_by_filter := a_val
52+
ensure
53+
hidden_by_filter_set: hidden_by_filter = a_val
54+
is_hidden_by_filter_set: is_hidden_by_filter_set
55+
end
56+
57+
set_hidden_by_user (a_val: like hidden_by_user)
58+
-- Set `hidden_by_user` with `a_val`.
59+
do
60+
hidden_by_user := a_val
61+
ensure
62+
hidden_by_user_set: hidden_by_user = a_val
63+
end
64+
65+
set_pixel_size (a_size: like pixel_size)
66+
-- Set `pixel_size` with `a_size`.
67+
do
68+
pixel_size := a_size
69+
ensure
70+
pixel_size_set: pixel_size = a_size
71+
end
72+
73+
force_developer_metadata (a_metadata: EG_DEVELOPER_METADATA)
74+
-- Add an item `a_metadata` to the list `developer_metadata`.
75+
local
76+
l_developer_metadata: like developer_metadata
77+
do
78+
l_developer_metadata := developer_metadata
79+
if l_developer_metadata /= Void then
80+
l_developer_metadata.force (a_metadata)
81+
else
82+
create {ARRAYED_LIST [EG_DEVELOPER_METADATA]}l_developer_metadata.make (5)
83+
l_developer_metadata.force (a_metadata)
84+
end
85+
developer_metadata := l_developer_metadata
86+
end
87+
88+
feature -- Eiffel to JSON
89+
90+
to_json: JSON_OBJECT
91+
-- JSon representtion of the current object.
92+
do
93+
create Result.make
94+
end
95+
end

sheets/src/objects/eg_grid_data.e

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,96 @@ note
2828
class
2929
EG_GRID_DATA
3030

31+
feature -- Access
32+
33+
start_row: INTEGER
34+
-- The first row this GridData refers to, zero-based.
35+
36+
start_column: INTEGER
37+
-- The first column this GridData refers to, zero-based.
38+
39+
row_data: detachable LIST [EG_ROW_DATA]
40+
-- The data in the grid, one entry per row, starting with the row in startRow.
41+
-- The values in RowData will correspond to columns starting at startColumn .
42+
43+
row_metadata: detachable LIST [EG_DIMENSION_PROPERTIES]
44+
-- Metadata about the requested rows in the grid, starting with the row in startRow
45+
46+
column_metadata: detachable LIST [EG_DIMENSION_PROPERTIES]
47+
-- Metadata about the requested columns in the grid, starting with the column in startColumn .
48+
49+
feature -- Element Change
50+
51+
set_start_row (a_val: like start_row)
52+
-- Set `start_row` with `a_val`.
53+
require
54+
valid_row: a_val >= 0
55+
do
56+
start_row := a_val
57+
ensure
58+
start_row_set: start_row = a_val
59+
end
60+
61+
set_start_column (a_val: like start_column)
62+
-- Set `start_column` with `a_val`.
63+
require
64+
valid_column: a_val >= 0
65+
do
66+
start_column := a_val
67+
ensure
68+
start_column_set: start_column = a_val
69+
end
70+
71+
force_raw_data (a_data: EG_ROW_DATA)
72+
-- Add an item `a_data` to the list of `row_data`
73+
local
74+
l_row_data: like row_data
75+
do
76+
l_row_data := row_data
77+
if l_row_data /= Void then
78+
l_row_data.force (a_data)
79+
else
80+
create {ARRAYED_LIST [EG_ROW_DATA]} l_row_data.make (5)
81+
l_row_data.force (a_data)
82+
end
83+
row_data := l_row_data
84+
end
85+
86+
force_row_metadata (a_metadata: EG_DIMENSION_PROPERTIES)
87+
-- Add an item `a_metadata` to the list of `row_metadata`
88+
local
89+
l_row_metadata: like row_metadata
90+
do
91+
l_row_metadata := row_metadata
92+
if l_row_metadata /= Void then
93+
l_row_metadata.force (a_metadata)
94+
else
95+
create {ARRAYED_LIST [EG_DIMENSION_PROPERTIES]} l_row_metadata.make (5)
96+
l_row_metadata.force (a_metadata)
97+
end
98+
row_metadata := l_row_metadata
99+
end
100+
101+
102+
force_column_metadata (a_metadata: EG_DIMENSION_PROPERTIES)
103+
-- Add an item `a_metadata` to the list of `column_metadata`
104+
local
105+
l_column_metadata: like row_metadata
106+
do
107+
l_column_metadata := row_metadata
108+
if l_column_metadata /= Void then
109+
l_column_metadata.force (a_metadata)
110+
else
111+
create {ARRAYED_LIST [EG_DIMENSION_PROPERTIES]} l_column_metadata.make (5)
112+
l_column_metadata.force (a_metadata)
113+
end
114+
column_metadata := l_column_metadata
115+
end
116+
117+
feature -- Eiffel to JSON
118+
119+
to_json: JSON_OBJECT
120+
do
121+
create Result.make
122+
end
31123
end

sheets/src/objects/eg_row_data.e

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
note
2+
description: "[
3+
Data about each cell in a row.
4+
{
5+
"values": [
6+
{
7+
object (CellData)
8+
}
9+
]
10+
}
11+
]"
12+
date: "$Date$"
13+
revision: "$Revision$"
14+
EIS: "name=RawData", "src=https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/sheets#RowData", "protocol=uri"
15+
16+
class
17+
EG_ROW_DATA
18+
19+
20+
feature -- Access
21+
22+
values: detachable LIST [EG_CELL_DATA]
23+
-- The values in the row, one per column.
24+
25+
end

sheets/src/objects/eg_sheet.e

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,12 +378,21 @@ feature -- Element Change
378378
feature -- Eiffel to JSON
379379

380380
to_json: JSON_OBJECT
381-
-- Json representation of current object.
381+
-- Json representation of current object.
382+
local
383+
j_array: JSON_ARRAY
382384
do
383385
create Result.make_empty
384386
if attached properties as l_properties then
385387
Result.put (l_properties.to_json, "properties")
386388
end
389+
if attached data as l_data then
390+
create j_array.make (l_data.count)
391+
across l_data as ic loop
392+
j_array.add (ic.item.to_json)
393+
end
394+
Result.put (j_array, "data")
395+
end
387396

388397
end
389398
end

sheets/src/objects/eg_sheet_properties.e

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -159,24 +159,7 @@ feature -- Element Change
159159
feature -- Eiffel to JSON
160160

161161
to_json: JSON_OBJECT
162-
-- {
163-
-- "sheetId": integer,
164-
-- "title": string,
165-
-- "index": integer,
166-
-- "sheetType": enum (SheetType),
167-
-- "gridProperties": {
168-
-- object (GridProperties)
169-
-- },
170-
-- "hidden": boolean,
171-
-- "tabColor": {
172-
-- object (Color)
173-
-- },
174-
-- "tabColorStyle": {
175-
-- object (ColorStyle)
176-
-- },
177-
-- "rightToLeft": boolean
178-
-- }
179-
162+
-- JSON Representation of current object.
180163
do
181164
create Result.make
182165
if is_sheet_id_set then

0 commit comments

Comments
 (0)