Commit Graph

1801 Commits

Author SHA1 Message Date
James Dunkerley
ad1130587d
Updating Text.repeat and adding Text.* (#3310)
Updating the `Text.repeat` function:
- fix issue with negative count
- add * operator

Add tests of the function.
2022-03-02 19:00:47 +00:00
Radosław Waśko
40c851bf8b
Text.pad and Text.trim (#3309)
Implements https://www.pivotaltracker.com/story/show/181265516
2022-03-02 17:19:39 +00:00
James Dunkerley
738a691662
Table.group_by (#3305)
Functioning group_by based of Enso Map.

# Important Notes
This is an initial version which will be used to establish the API.
The grouping map will need to be moved to Java code for performance.
2022-03-01 16:18:11 +00:00
Mateusz Czapliński
807506485d
Remove mod-level "allow missing docs" in graph-editor; add entity-level FIXMEs. (#3307)
Remove a module-level `#![allow(missing_docs)]` attribute from 2 modules in `graph-editor` crate. Instead, add the same attribute with a `FIXME` comment to lower-level entities.

See discussion at: https://discord.com/channels/401396655599124480/947797676823560193

# Important Notes
There are still 37 module-level `allow(missing_docs)` attributes present in the codebase after this change:

```
$ git grep '^#!.allow.missing_docs.' | wc -l
22
$ git grep -A1 '^#.allow.missing_docs.' | grep -w mod | wc -l
15
```

[ci no changelog needed]
2022-03-01 13:59:36 +00:00
Radosław Waśko
0d96f59f44
Data analysts should be able to use Text.to_case to change the case of Text values (#3302)
* Move to_upper_case and to_lower_case into to_case

* Add an export, not sure about it

* Implement title case

TODO: some more tests would be good

* Add more tests

* explain title case

* fix todo

* changelog
2022-02-28 23:20:41 +00:00
Kaz Wesley
a3914f33c1
API for storing metadata (#3291)
API for storing metadata.

See: https://www.pivotaltracker.com/story/show/181149277

# Important Notes
**New APIs**:
- Storing metadata is implemented with `profiler::MetadataLogger`.
- A full metadata storage/retrieval example is in [the top-level doctests](https://github.com/enso-org/enso/blob/wip/kw/profiling-metadata-api/lib/rust/profiler/data/src/lib.rs) for profiler::data, a crate which implements an API for profiling data consumers (it abstracts away the low-level details of the event log, and checks its invariants in the process) [after review of this new API here I'll open a PR to add it to the design doc].

**Implementation**:
- `profiler::Event` is parameterized by a metadata type, so that different types of metadata can be dependency-injected into it.
- A data consumer defines its metadata type as an enum of all the kinds of metadata it is interested in.
- Producing the metadata enum is accomplished without defining its type (which would require dependencies from around the app): A `MetadataLogger` internally use a serialization helper `Variant` to serialize its variant of the metadata enum without knowledge of the other possible variants.

**Performance impact**: still in the low ns/measurement range, comparable to pushing to a vec.

*Note*: `LocalVecBuilder` is currently present under the name `Log`, which is accurate but probably too overloaded. I'd like to find the right name for it, document it with examples, and move it to its own crate under data-structures, but I don't want doing that to hold up this PR.
2022-02-28 09:55:56 +00:00
Radosław Waśko
b03416f907
Update Column_Selector and Column_Mapping to use Matcher over Matching_Strategy (#3299)
Implements https://www.pivotaltracker.com/story/show/181339748
2022-02-25 18:39:10 +00:00
Ilya Bogdanov
abbb3a4679
Fix debug screen regression (#3300)
[ci no changelog needed]

Entry points links were not clickable if an empty entry name was provided, like `http://localhost:8080?entry=`

The reason was the loader div that covered the whole screen.
2022-02-24 21:55:41 +00:00
Adam Obuchowicz
0836ce741d
Creating a new node with the (+) button (#3278)
[The Task](https://www.pivotaltracker.com/story/show/180887253)

A new (+) button on the left-bottom corner appeared. It may be clicked to open searcher in the middle of the scene, as an alternative to tab key.

https://user-images.githubusercontent.com/3919101/154514279-7972ed6a-0203-47cb-9a09-82dba948cf2f.mp4

# Important Notes
* The window_control_buttons::common was extracted to separate crate `ensogl-component-button` almost without change.
* This includes a severe refactoring of adding nodes in general in the Graph Editor. The whole responsibility of adding new nodes (and starting their editing) was moved to Graph Editor - the Project View only reacts for GE events to show searcher properly.
* The status bar was moved from the bottom-left corner to the middle-top of the scene. It does not collide with (+) button, and plays "notification" role anyway.
* The `interface` debug scene was buggy. The problem was with one expression's span-tree. When I replaced it, the scene works.
* I've removed "new searcher" API, as it is completely outdated.
* I've changed code owners of integration tests to GUI team, as it is the team writing mostly the integration tests (int rust)
2022-02-24 16:01:54 +00:00
Dmitry Bushev
3858ae7517
Add API for component groups (#3286) 2022-02-24 15:41:14 +03:00
Radosław Waśko
2ae636f63c
Data analysts should be able to use Text.starts_with and Text.ends_with (#3292)
Implements https://www.pivotaltracker.com/story/show/181265900
2022-02-23 16:48:33 +00:00
Adam Obuchowicz
a13c6e84b5
Increase WASM test timeout (#3298) 2022-02-23 13:58:51 +01:00
Kaz Wesley
0a4e3cb4b7
Profiling framework: simplify high-level API (#3270)
See: https://www.pivotaltracker.com/story/show/181236181
2022-02-22 20:07:19 +00:00
James Dunkerley
2e2c5562a8
Text.take and Text.drop (#3287)
Implementation of the Text take and drop APIs
- Added `Range.contains` function
- Added `Text_Sub_Range` type
- Added `Text_Utils.index_of` and `Text_Utils.last_index_of` based on ICU StringSearcher
2022-02-22 18:50:59 +00:00
Adam Obuchowicz
9d6f9373f9
Add tests for debug mode and zoom restriction. (#3289)
This PR adds integration tests created during acceptance process of [181181159](https://www.pivotaltracker.com/story/show/181181159) and [181181203](https://www.pivotaltracker.com/story/show/181181203).

The PRs for those tasks were merged, because I hadn't realized they should not.

Additionally, as the `wasm-bindgen` version was bumped, I extended the timeout of integration tests and made them headless.
2022-02-22 16:43:37 +00:00
Radosław Waśko
ae9d51555f
Data analysts should be able to use Text.contains to check for substring using various matcher techniques. (#3285)
* Add matching mode definitions

* Add stub for new method API and an initial test suite

* Fix tests, implement exact matching

* Implement Regex matching

* changelog

* Add benchmarks

* Wokraround for case insensitive regex locale support

* minor tweaks

* Unify Case_Insensitive

* Update edge cases

* Fix other affected places

* minor style change

* Add a problematic test

* Add a regex test for a similar situation

* Migrate to StringSearch:wq

* Add test cases for scharfes S edge case

* Add problematic Regex Unicode normalization test

* Document the regex accents peculiarity

* Do not apply the normalization in ASCII only mode

* cr
2022-02-22 15:41:56 +00:00
Ilya Bogdanov
67a1ae41a0
Restrict Graph Editor Zoom (#3295)
[Task link](#181181203).

This is a reincarnation of PR [3273](https://github.com/enso-org/enso/pull/3273).

The maximum zoom factor of Graph Editor is limited to 1.0x. It is not possible to zoom in from the default camera position.
Debug Mode (activated with `ctrl-shift-d` shortcut) allows to zoom up to 100.0x (the previous behavior of Graph Editor).

If you enable Debug Mode, then zoom in and disable Debug Mode - you won't see the immediate change of zoom factor back to 1.0x. But it will "jump" (with animation) back once you make a zoom in/out event with your controls.

Video:

https://user-images.githubusercontent.com/6566674/154037310-1d166737-353e-4ae6-aca1-f7840571ab16.mp4

# Important Notes
This is a reincarnation of PR [3273](https://github.com/enso-org/enso/pull/3273). There are two changes since that PR:
1. Fixed bug with GeoMap zooming described [here](https://github.com/enso-org/enso/pull/3290). This is done by restricting `ZoomEvent` API so that it will never contain `amount` which is equal to `0.0`.
2. A few refactoring changes from https://github.com/enso-org/enso/pull/3289 to simplify code a bit.
2022-02-22 11:23:59 +00:00
Dmitry Bushev
9010a2c3a3
doc: Range datatype (#3296) 2022-02-22 13:21:24 +03:00
Michał W. Urbańczyk
5c6c882c38 [CI] Fix for the nightly workflow. 2022-02-21 22:34:34 +01:00
Michał Wawrzyniec Urbańczyk
f9069517db
The new nightly workflow. (#3294) 2022-02-21 16:09:48 +01:00
Mateusz Czapliński
b01217aa69
Allow collection of EnsoGL stats when Monitor panel is not visible (#3260)
This change makes EnsoGL runtime stats be always collected, even when EnsoGL `Monitor` panel is not visible. Those stats are intended to be used in the future by a profiling framework.

**Performance impact:** Continuous collection of stats introduces an overhead of two Web Performance API `now()` calls in each frame of the main rendering loop, plus a small number of simple arithmetic calculations. This is assumed to be a negligible and acceptable overhead.

#### Visuals



A screenshot of the Monitor panel in full `ide` after applying the PR, taken in IDE built with `./run dist`:


<img width="991" alt="Screenshot 2022-02-14 at 16 11 42" src="https://user-images.githubusercontent.com/273837/153891378-8a2fb333-34ce-46ce-99df-7d796817310c.png">

A recording, also in IDE built with `./run dist`; note that FPS is impacted by the act of recording itself:





https://user-images.githubusercontent.com/273837/154104016-49a12e23-1210-4477-9743-ec1611e5b4ed.mov




https://www.pivotaltracker.com/story/show/181093601

# Important Notes
- Responsibility for controlling how `Stats` gathering and calculation is performed at various points in the main rendering loop was removed from `Monitor` - the `Monitor`'s purpose is only to display existing data, it should not influence how the data is collected.
- Two previously existing distinct `Monitor` structs were merged into one, to avoid confusion; after previous refactorings, the remaining `stats::Monitor` did not have much useful code anyway.
- In `stats` package, refactoring was done, to make `StatsData` a "dumb", data-only type, and to move the logic related to stats collection and frame tracking to other helper types.


[ci no changelog needed]
2022-02-21 12:38:45 +00:00
Michał W. Urbańczyk
964645fddf [Prettier] Fixed whitespace the in Mergify configuration 2022-02-21 12:06:44 +01:00
Mateusz Czapliński
2bb88e05f0
Include PR's "Important Notes" in Mergify commits (#3288)
Co-authored-by: Michał Wawrzyniec Urbańczyk <mwu-tow@gazeta.pl>
2022-02-21 12:01:47 +01:00
Ilya Bogdanov
9ffeaf3e15
Revert "Restrict maximum zoom in Graph Editor (#3273)" (#3290)
This reverts commit dbcc2548df.
2022-02-21 09:26:12 +01:00
Radosław Waśko
14f57271a2
Ensure that Text.compare_to compares strings according to grapheme clusters (#3282)
https://www.pivotaltracker.com/story/show/181175238
2022-02-17 17:09:41 +00:00
Michał Wawrzyniec Urbańczyk
f70176a25b
Introduce Mergify tool and a label to enable it per PR. (#3284) 2022-02-17 16:33:27 +01:00
James Dunkerley
7afc8c48c5
Adding Integer.Parse (#3283)
* Integer parse via Longs

* Integer parse via Longs

* Benchmark for Number Parse

* CHANGELOG.md and Natural Order

* Expanded test set

* Number base tests

* Few more negative tests
2022-02-17 15:04:00 +00:00
Mateusz Czapliński
8f61ec174e
Fix Scroll Area demo scene (#3261)
Fix the `scroll-area` example scene, so that a red circle inside the scroll area, and a gray rounded rectangle representing the background of the scroll area, are now both visible.

Previously, adding just a `Sprite` (instead of a corresponding `SpriteSystem`) to the scene resulted in the underlying `Symbol` not being added to a visible `Layer`. (Notably, `Sprite::display_object()` is not the same as `Sprite::symbol.display_object()`.)

https://www.pivotaltracker.com/story/show/180459079
2022-02-17 13:01:53 +01:00
Ilya Bogdanov
dbcc2548df
Restrict maximum zoom in Graph Editor (#3273) 2022-02-16 20:13:39 +00:00
James Dunkerley
68b85dea82
Improvement to the Natural Order Sort (#3276)
* Improved Natural Order
Data generator for benchmarking

* Missing Import
Benchmark script

* Update Natural_Order.enso

Restore missing ToDo

* Changelog

* PR Comments

* PR Comments

* Additional comments.

* Correction
2022-02-16 17:40:33 +00:00
Michał Wawrzyniec Urbańczyk
9f051ad69c
Automatic cancelling of previous Engine workflow runs (#3281) 2022-02-16 17:04:18 +01:00
Michael Mauderer
1d1bbab6bd
Add Code Owners for missing Rust related config files. (#3280) 2022-02-16 14:30:09 +00:00
Michael Mauderer
32cfb0333a
Bump Rust toolchain to nightly-2022-01-20. (#3255) 2022-02-16 12:58:02 +00:00
Michał Wawrzyniec Urbańczyk
f189840df3
Update settings.yml (#3279) 2022-02-16 09:00:42 +01:00
Marcin Kostrzewa
67b4e59506
Properly expose stacktraces and related data to user code (#3271) 2022-02-16 10:36:19 +03:00
Adam Obuchowicz
19b2064070
New PR template (#3275) 2022-02-15 16:59:13 +01:00
Dmitry Bushev
792c7e3538
Fix dev version check (#3265) 2022-02-15 16:34:33 +01:00
Radosław Waśko
fbf747d6cf
Implement Vector.flatten (#3259) 2022-02-15 16:16:08 +01:00
Michał Wawrzyniec Urbańczyk
ef9cbe04e6
Update for the build script (#3277) 2022-02-15 14:20:47 +01:00
Mateusz Czapliński
6870a13d23
In main loop, add on_stats_available callback (#3254) 2022-02-15 10:49:52 +00:00
Adam Obuchowicz
16a7ec7300
Quick fix initialization (#3274) 2022-02-14 19:04:31 +01:00
Ilya Bogdanov
03e105d42e
Debug Mode for Graph Editor (#3264) 2022-02-14 11:19:08 +01:00
James Dunkerley
585afd83ce
Adding Text.at and Text.is_digit functions (#3269)
* Add Text.at function

* Add tests for Text.at

* Add tests for Text.is_digit

* Change log

* Avoid memory allocation
2022-02-14 09:03:55 +00:00
Michał Wawrzyniec Urbańczyk
c268487ab6
Fix macOS icons generation. (#3267) 2022-02-11 19:01:16 +01:00
Edward Kmett
0c25ee736c
Upgrade Truffle and Graal to Version 21.3.0 (#3258) 2022-02-11 19:05:13 +03:00
Mateusz Czapliński
593a603582
Revert "Add code allowing calculation of EnsoGL stats summaries (#3252)" (#3268)
This reverts commit e69e8078c3.

The removed code (stats aggregation and `stats` demo scene) will not be needed by the profiling framework, as discussed on chat.

(reverts changes introduced as part of https://www.pivotaltracker.com/story/show/181093920)
2022-02-11 15:23:46 +01:00
Adam Obuchowicz
c68ac5c0d6
Integration Test Framework (#3257) 2022-02-11 13:19:02 +01:00
James Dunkerley
1814d3c4f1
Data analysts should be able to transform a Table using the rename_columns functions (#3249)
* Implement Natural_Order and sort_columns

* Starting on Rename

Align Column_Mapping

Add By_Position
Separating off the validation for By_Index so can reuse for rename

By_Position implemented

By_Index implemented
Adjusted behaviour following discussion with Ned, so that renames dominate untouched columns.

Moving to validation style checks for problems

Putting accumulator back

Rename work

* Add Range.find

* More work

* Regex support
Tidy of Unique Name Strategy

* Fix Regex support

* Warning messages
Tests for Unique Naming Strategy
Table rename working

* Database Table rename_columns
Fix for Table
**Must follow up on slice**

* Some tests

* More tests

* Complete test set
(and associated fixes)

* Functional use_first_row_as_names
Tests to go...

* Test for use_first_row_as_names

* Change log

* trailing space

Co-authored-by: Radosław Waśko <radoslaw.wasko@enso.org>
2022-02-11 10:18:51 +00:00
Kaz Wesley
b0b035e73d
Profiling framework: core performance-logging implementation (#3238)
* profiling instrumentation

* Support native testing with mock impl of `mod js`

* Add benchmarks

* Wrapper: support methods.

* `#[profile]`: work in any context

* feature-gate lineno info that breaks IDE

* Support async; more docs; add perf analysis

* docs & formatting
2022-02-10 09:24:29 -08:00
Dmitry Bushev
63ecadc421
misc: fix flaky geodata url (#3266) 2022-02-10 15:27:23 +01:00