Skip to content

Commit 6e5816a

Browse files
authored
Add hyper_file viz (#13058)
* Added Excel test * Excel test * WorkingHyperViz * refactor * Combine * pretty * lint * api * Remove hyper dependency * api * checkpoint * Cleanup * whitespace * whitespace * Move * api * api * api * api
1 parent 48424b0 commit 6e5816a

File tree

11 files changed

+109
-38
lines changed

11 files changed

+109
-38
lines changed

app/gui/integration-test/project-view/tableVisualisation.spec.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,37 @@ async function expectTableInputContent(page: Page, node: Locator) {
166166
'',
167167
])
168168
}
169+
170+
test('Single_Column_Of_Actions Table Visualisation Test', async ({ page }) => {
171+
await initGraph(page)
172+
173+
const aggregatedNode = graphNodeByBinding(page, 'aggregated')
174+
await aggregatedNode.click()
175+
await page.keyboard.press('Space')
176+
await page.waitForTimeout(1000)
177+
const tableVisualization = locate.tableVisualization(page)
178+
await expect(tableVisualization).toExist()
179+
180+
await mockVisualizationDataUpdate(
181+
page,
182+
'Standard.Visualization.Table.Visualization.prepare_visualization',
183+
/* eslint-disable camelcase */
184+
{
185+
type: 'Single_Column_Of_Actions',
186+
visualization_header: 'table',
187+
child_label: 'table',
188+
data: ['Sheet1', 'Sheet2', 'Sheet3'],
189+
get_child_node_action: 'read',
190+
},
191+
/* eslint-enable camelcase */
192+
)
193+
await expect(tableVisualization).toContainText('table')
194+
await expect(tableVisualization).toContainText('Sheet1')
195+
await expect(tableVisualization).toContainText('Sheet2')
196+
await expect(tableVisualization).toContainText('Sheet3')
197+
const sheet2 = tableVisualization.getByText('Sheet2')
198+
await sheet2.dblclick()
199+
const newNode = graphNodeByBinding(page, 'node1')
200+
await expect(newNode).toContainText('read')
201+
await expect(newNode).toContainText('Sheet2')
202+
})

app/gui/src/project-view/components/visualizations/TableVisualization.vue

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,14 @@ export const defaultPreprocessor = [
5656
'1000',
5757
] as const
5858
59-
type Data = number | string | Error | Matrix | ObjectMatrix | EnsoTableOrColumn | Excel_Workbook
59+
type Data =
60+
| number
61+
| string
62+
| Error
63+
| Matrix
64+
| ObjectMatrix
65+
| EnsoTableOrColumn
66+
| SingleColumnOfActions
6067
6168
interface Error {
6269
type: undefined
@@ -80,11 +87,11 @@ interface Matrix {
8087
visualization_header: string
8188
}
8289
83-
interface Excel_Workbook {
84-
type: 'Excel_Workbook'
90+
interface SingleColumnOfActions {
91+
type: 'Single_Column_Of_Actions'
8592
column_count: number
8693
all_rows_count: number
87-
sheet_names: string[]
94+
data: string[]
8895
json: unknown[][]
8996
get_child_node_action: string
9097
child_label: string
@@ -834,15 +841,15 @@ watchEffect(() => {
834841
}
835842
rowData.value = addRowIndex(data_.json)
836843
isTruncated.value = data_.all_rows_count !== data_.json.length
837-
} else if (data_.type === 'Excel_Workbook') {
844+
} else if (data_.type === 'Single_Column_Of_Actions') {
838845
columnDefs.value = [
839846
toLinkField('Value', {
840847
tooltipValue: data_.child_label,
841848
headerName: data_.visualization_header,
842849
getChildAction: data_.get_child_node_action,
843850
}),
844851
]
845-
rowData.value = data_.sheet_names.map((name) => ({ Value: name }))
852+
rowData.value = data_.data.map((name) => ({ Value: name }))
846853
} else if (Array.isArray(data_.json)) {
847854
columnDefs.value = [
848855
toLinkField(INDEX_FIELD_NAME, {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
## Enso Signatures 1.0
2+
## module Standard.Base.Visualization.Table_Viz_Data
3+
- type Table_Viz_Data
4+
- Value json:Standard.Base.Data.Json.JS_Object
5+
- new json:Standard.Base.Data.Json.JS_Object -> Standard.Base.Visualization.Table_Viz_Data.Table_Viz_Data
6+
- make_json_for_single_column_of_actions js_value:Standard.Base.Any.Any data:Standard.Base.Any.Any title:Standard.Base.Any.Any tooltip:Standard.Base.Any.Any child_node_action:Standard.Base.Any.Any -> Standard.Base.Any.Any
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from project.Data.Json import JS_Object
2+
3+
type Table_Viz_Data
4+
Value json:JS_Object
5+
6+
new json:JS_Object -> Table_Viz_Data = Table_Viz_Data.Value json
7+
8+
make_json_for_single_column_of_actions js_value data title tooltip child_node_action =
9+
JS_Object.from_pairs [["json", js_value], ["data", data], ["visualization_header", title], ["child_label", tooltip], ["get_child_node_action", child_node_action], ["type", "Single_Column_Of_Actions"]]

distribution/lib/Standard/Table/0.0.0-dev/docs/api/Excel/Excel_Workbook.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,4 @@
3232
- build_sheet_selector workbook:Standard.Table.Excel.Excel_Workbook.Excel_Workbook display:Standard.Base.Metadata.Display= -> Standard.Base.Metadata.Widget
3333
- close_connection c:Standard.Base.Any.Any -> Standard.Base.Any.Any
3434
- Standard.Table.Internal.Read_Many_As_Merged_Table_Strategy.Read_Many_As_Merged_Table_Strategy.from that:Standard.Table.Excel.Excel_Workbook.Excel_Workbook -> Standard.Table.Internal.Read_Many_As_Merged_Table_Strategy.Read_Many_As_Merged_Table_Strategy
35+
- Standard.Base.Visualization.Table_Viz_Data.Table_Viz_Data.from that:Standard.Table.Excel.Excel_Workbook.Excel_Workbook -> Standard.Base.Visualization.Table_Viz_Data.Table_Viz_Data

distribution/lib/Standard/Table/0.0.0-dev/src/Excel/Excel_Workbook.enso

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ from Standard.Base.Data.Filter_Condition import sql_like_to_regex
1616
from Standard.Base.Metadata import make_single_choice
1717
from Standard.Base.Metadata.Choice import Option
1818
from Standard.Base.Metadata.Widget import Multiple_Choice, Single_Choice
19+
from Standard.Base.Visualization.Table_Viz_Data import Table_Viz_Data, make_json_for_single_column_of_actions
1920

2021
import project.Column.Column
2122
import project.Columns_To_Keep.Columns_To_Keep
@@ -471,3 +472,7 @@ Read_Many_As_Merged_Table_Strategy.from (that:Excel_Workbook) =
471472
data = Table.from_union valid_tables columns_to_keep match_columns on_problems
472473
Read_Many_As_Table_Result.Table metadata=metadata data=data
473474
Read_Many_As_Merged_Table_Strategy.Value callback
475+
476+
## PRIVATE
477+
Table_Viz_Data.from (that:Excel_Workbook) =
478+
Table_Viz_Data.new (make_json_for_single_column_of_actions that.to_js_object that.sheet_names "worksheets" "worksheet" "read")

distribution/lib/Standard/Tableau/0.0.0-dev/docs/api/Hyper_File.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## Enso Signatures 1.0
22
## module Standard.Tableau.Hyper_File
33
- type Hyper_File
4+
- Value file:Standard.Base.System.File.File internal_schema:Standard.Base.Data.Text.Text
45
- new file:Standard.Base.System.File.File schema:Standard.Base.Data.Text.Text= -> Standard.Base.Any.Any
56
- read self table:Standard.Base.Data.Text.Text schema:Standard.Base.Data.Text.Text= limit:Standard.Table.Rows_To_Read.Rows_To_Read= -> Standard.Base.Any.Any
67
- schema self -> Standard.Base.Any.Any
@@ -9,3 +10,4 @@
910
- tables self schema:Standard.Base.Data.Text.Text= -> Standard.Base.Any.Any
1011
- make_schema_selector hyper_file:Standard.Tableau.Hyper_File.Hyper_File include_any:Standard.Base.Data.Boolean.Boolean= -> Standard.Base.Any.Any
1112
- make_table_selector hyper_file:Standard.Tableau.Hyper_File.Hyper_File cache:Standard.Base.Any.Any= -> Standard.Base.Any.Any
13+
- Standard.Base.Visualization.Table_Viz_Data.Table_Viz_Data.from that:Standard.Tableau.Hyper_File.Hyper_File -> Standard.Base.Visualization.Table_Viz_Data.Table_Viz_Data

distribution/lib/Standard/Tableau/0.0.0-dev/src/Hyper_File.enso

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Standard.Base.Errors.File_Error.File_Error
33
import Standard.Base.Errors.Illegal_Argument.Illegal_Argument
44
from Standard.Base.Metadata.Choice import Option
55
from Standard.Base.Metadata.Widget import Single_Choice
6+
from Standard.Base.Visualization.Table_Viz_Data import Table_Viz_Data, make_json_for_single_column_of_actions
67

78
import Standard.Table.Rows_To_Read.Rows_To_Read
89
from Standard.Table import Table
@@ -28,7 +29,7 @@ type Hyper_File
2829

2930
## PRIVATE
3031
A representation of a Tableau Hyper Extract file.
31-
private Value file:File internal_schema:Text
32+
Value file:File internal_schema:Text
3233

3334
## ICON metadata
3435
Returns the list of schemas for the connection within the current database (or catalog).
@@ -104,3 +105,8 @@ make_table_selector hyper_file:Hyper_File cache=Nothing =
104105
used_schema = if schema == "" || schema == Nothing then hyper_file.schema else schema
105106
tables = hyper_file.tables used_schema . map t-> Option t.table t.table.pretty
106107
Single_Choice values=tables
108+
109+
## PRIVATE
110+
Table_Viz_Data.from (that:Hyper_File) =
111+
viz_data = that.tables.map t->t.table.to_text
112+
Table_Viz_Data.new (make_json_for_single_column_of_actions that.to_js_object viz_data "tables" "table" "read")
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
## Enso Signatures 1.0
22
## module Standard.Visualization.Table.Visualization
3+
- _make_json_for_other x:Standard.Base.Any.Any -> Standard.Base.Any.Any
4+
- _make_json_for_value val:Standard.Base.Any.Any level:Standard.Base.Any.Any= -> Standard.Base.Any.Any
35
- apply_filter_to_table table:Standard.Base.Any.Any i:Standard.Base.Any.Any filter_cols:Standard.Base.Any.Any filter_conditions:Standard.Base.Any.Any -> Standard.Base.Any.Any
46
- apply_sort_to_table table:Standard.Base.Any.Any sort_col_index_list:Standard.Base.Any.Any sort_direction_list:Standard.Base.Any.Any -> Standard.Base.Any.Any
57
- get_distinct_values_for_column table:Standard.Base.Any.Any column_index:Standard.Base.Any.Any -> Standard.Base.Any.Any
@@ -9,11 +11,10 @@
911
- make_json_for_js_object js_object:Standard.Base.Any.Any max_items:Standard.Base.Any.Any -> Standard.Base.Any.Any
1012
- make_json_for_matrix current:Standard.Base.Any.Any vector:Standard.Base.Any.Any idx:Standard.Base.Any.Any= -> Standard.Base.Any.Any
1113
- make_json_for_object_matrix current:Standard.Base.Any.Any vector:Standard.Base.Any.Any idx:Standard.Base.Any.Any= -> Standard.Base.Any.Any
12-
- make_json_for_other x:Standard.Base.Any.Any -> Standard.Base.Any.Any
1314
- make_json_for_row row:Standard.Base.Any.Any -> Standard.Base.Any.Any
1415
- make_json_for_table dataframe:Standard.Base.Any.Any max_rows:Standard.Base.Any.Any all_rows_count:Standard.Base.Any.Any is_db_table:Standard.Base.Any.Any is_column:Standard.Base.Any.Any -> Standard.Base.Any.Any
15-
- make_json_for_value val:Standard.Base.Any.Any level:Standard.Base.Any.Any= -> Standard.Base.Any.Any
1616
- make_json_for_vector vector:Standard.Base.Any.Any max_rows:Standard.Base.Any.Any -> Standard.Base.Any.Any
1717
- make_json_for_xml_element xml_element:Standard.Base.Any.Any max_items:Standard.Base.Any.Any type:Standard.Base.Data.Text.Text= -> Standard.Base.Any.Any
1818
- max_columns -> Standard.Base.Any.Any
1919
- prepare_visualization y:Standard.Base.Any.Any max_rows:Standard.Base.Any.Any= -> Standard.Base.Any.Any
20+
- Standard.Base.Visualization.Table_Viz_Data.Table_Viz_Data.from that:Standard.Base.Any.Any -> Standard.Base.Visualization.Table_Viz_Data.Table_Viz_Data

distribution/lib/Standard/Visualization/0.0.0-dev/src/Helpers.enso

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ from Standard.Table import Column, Table
77

88
import project.Id.Id
99
import project.Table as Table_Visualization
10-
from project.Table.Visualization import make_json_for_value
1110
from project.Text import get_lazy_visualization_text_window
1211

1312
## PRIVATE

0 commit comments

Comments
 (0)