Skip to content

Conversation

@bobbai00
Copy link
Contributor

WIP

sixsage and others added 30 commits December 3, 2024 18:21
## Purpose
Address #2810 #2809 
There was a bug with the current workflow editor workspace where after
page reload, the html element with id="workflow-editor" had an incorrect
size. This caused issues such as operators not being visible on the
lower part of the page and the minimap window changing size.
## Changes
Dispatch "resize" event when workflow editor is loaded to invoke all the
relevant resize handlers.
## Demo
Before (on texera.ics.uci.edu)

![workflow_editor_size_bug_master](https://github.com/user-attachments/assets/a3e5a50b-00ac-4c20-9fdf-afb256e0947c)
After

![workflow_editor_size_bug_branch](https://github.com/user-attachments/assets/7c51624d-bce5-4e6f-adb7-ce4ec54e3137)
This PR introduces functionality to send an email notification whenever
a workflow transitions from a running state to a non-running state
(e.g., `Completed`, `Failed`, `Killed`, or `Paused`). This feature was
requested by the bioinformatics team at Cornell University to facilitate
their long-running workflows. They wanted to be notified once the
execution of their workflow is finished.

### Implementation Details

A new `sendWorkflowStatusEmail` method has been added to handle the
construction of the email notification, which includes details such as
the workflow ID, name, state, timestamp, and a link to the dashboard.
This method is triggered on the frontend whenever it detects a status
change from the backend.

### Setup
To enable this functionality, update the following parameters in the
core/amber/src/main/resources/application.conf file:
1. Set `user-sys.enabled` to true.
2. Set `user-sys.google.clientId` to your Google API client ID.
3. Set `user-sys.google.smtp.gmail` to your Gmail ID (ensure that IMAP
is enabled for this account).
4. Set `user-sys.google.smtp.password` to your Gmail password.



https://github.com/user-attachments/assets/dd72af90-b8a8-45ef-9bcc-1ba628e55e9a

---------

Co-authored-by: Kunwoo Park <kunwoopark@Kunwoos-MacBook-Pro.local>
Co-authored-by: linxinyuan <linxinyuan@gmail.com>
This PR enhances the report generation functionality by adding animation
during the process. This PR is a continuation and enhancement of the
previous PR:

Adding a button to generate a report for a workflow:
#2770
Enhancing Report Generation by adding Operator Results:
#2792
Enhancing Report Generation by Adding Operator Json and Comments Section
: #2807
Ai Flag: #2818 and
#2808

Key Changes:

**menu.component.ts:** 
At the start, notification.blank is called to display a message, and
notification.remove is used to remove it at the end. Upon successful
generation, this.notificationService.success is invoked.

**notification.service.ts:** 
notification.blank and notification.remove have been added.

Screenshot of the notification:

![image](https://github.com/user-attachments/assets/76f01cfd-dd52-4ba5-8f87-d2703473e82e)

![image](https://github.com/user-attachments/assets/a0a06876-275d-4062-a62a-0b423488107c)
Added a "Select File" button, allowing users to choose a file from a
dataset. The button label changes to "Reselect File" after a file is
selected, and the selected file path is displayed in a read-only input
box.
<img width="309" alt="截屏2024-09-18 下午12 47 35"
src="https://github.com/user-attachments/assets/923f4945-0452-476f-a11a-4429ad98786f">
<img width="308" alt="截屏2024-09-18 下午12 47 47"
src="https://github.com/user-attachments/assets/36838545-1791-4604-9db5-52566f03fc07">
### Purpose:
This PR introduces a new visualization operator: **Sunburst Chart**. The
Sunburst Chart visualizes hierarchical data, where each segment's size
corresponds to a specific value attribute, allowing users to explore
data hierarchically.

### Changes:
- Implemented the **Sunburst Chart** operator under
`operators/visualization`.
- Registered the Sunburst Chart in the `LogicalOp` array (located in
`edu.uci.ics.texera.workflow.common.operators`).
- Added a Sunburst Chart icon under the operator images.

### Testing Instructions:
Open Texera workflow editor.
Use the following operators:
- Use the **CSV File Scan** operator to load the `CountrySalesData.csv`
file (available on the Getting Started Wiki).
- Use the **Sunburst Chart** operator with the hierarchy: `Region →
Country`, and set the value to `Units Sold`.
- Use the **HTML Visualizer** to point at the HTML content produced by
the Sunburst Chart operator.
   - Use the **View Results** operator to display the output.

### Expected Result:

![FullScreen](https://github.com/user-attachments/assets/c17b0d2d-f24b-48cc-a7ed-1b85218eb217)

![Result](https://github.com/user-attachments/assets/ac95361c-020d-4502-a857-0133a1554d69)
Python Tuple Operator v1 has been deprecated and is no longer supported.
When no user system is enabled, the frontend should not request for
persisting workflow. This PR fixes the issue by adding a check on the
frontend before sending persisting requests, it also adds a guard on the
backend so that it will early fail with the GUEST (Regular role in dev
mode).
We recommend to use the DBLP citation format (bib).
This PR updates the `ng build` command in `deploy-daemon.sh`.

Before the change, the command is:
`ng build --prod  --deploy-url=/ --base-href=/`

However, `--prod` is deprecated in angular 14 according to
https://github.com/angular/angular-cli/blob/main/CHANGELOG.md#breaking-changes-2
<img width="1072" alt="Screenshot 2024-09-19 at 10 02 56 PM"
src="https://github.com/user-attachments/assets/03e5052e-d29a-4aeb-9d0c-71239795baef">

And our angular version is angular 16.

So I updated it to make it align with current angular: `ng build
--configuration production --deploy-url=/ --base-href=/`
… UDF action (#2811)

This PR introduces a new AI-based feature called "Add Type Annotation"
that enhances the user experience of the Python UDF on top of the
Pyright language server. The following are related PR's:
-PR for the "Add the pyright language server" :
#2797.
-PR for the "[1/3] Add AI Assistant Service - Ai Flag" :
#2808
-PR for the "[3/3] Add AI Assistant Service - add the "Add All Type
Annotation" Python UDF action" :
#2812

**Key changes:**
Added a Monaco action in the frontend Python UDF editor to allow users
to automatically add type annotations for an argument each time they
select a single argument in their code.

**Add Type Annotation:**
This action requires the user to select a single argument in their
Python UDF code. A UI with a suggestion for the selected argument will
pop up. The user can choose to accept or decline the suggestion from
OpenAI. If they accept the suggestion, it will be added to their code;
otherwise, the code will remain unchanged. The suggestion is provided by
OpenAI. After the backend receives the response from OpenAI, it will be
forwarded to the frontend via a RESTful API.

Example:



https://github.com/user-attachments/assets/29cee6c8-c793-4d83-8b27-db64bcc636ae

---------

Co-authored-by: Yicong Huang <17627829+Yicong-Huang@users.noreply.github.com>
Co-authored-by: Yicong Huang <yicong.huang@observeinc.com>
…bled (#2853)

Now, when userSystemEnabled is false, user can manually type in the file
path they want to upload. The file selection button is hidden in this
case.
<img width="340" alt="截屏2024-09-19 下午11 36 57"
src="https://github.com/user-attachments/assets/387993b7-130f-404b-8183-ecc5d29547ce">

when userSystemEnabled is true, user can click on Select File button to
choose the file, and input box is read only.
<img width="343" alt="截屏2024-09-19 下午11 33 22"
src="https://github.com/user-attachments/assets/64193231-7dac-433f-b04b-2209239de371">
<img width="341" alt="截屏2024-09-19 下午11 33 37"
src="https://github.com/user-attachments/assets/0e77fd1f-2dec-4255-b692-f54420c16f4a">

---------

Co-authored-by: Jiadong Bai <43344272+bobbai00@users.noreply.github.com>
…2851)

### Purpose:
This PR introduces a new visualization operator: **Sankey Diagram**. The
Sankey Diagram visualizes flow in a directed graph, where the edges are
thicker if the edge weight is larger.

### Changes:
- Removed all Sunburst Chart files, which was a duplicate of Hierarchy
Chart operator option.
- Implemented the **Sankey Diagram** operator under
`operators/visualization`.
- Registered the Sankey Diagram in the `LogicalOp` array (located in
`edu.uci.ics.texera.workflow.common.operators`).
- Added a Sankey Diagram icon under the operator images.

### Testing Instructions:
Use the following csv dataset: 

[CountryTrade.csv](https://github.com/user-attachments/files/17069734/CountryTrade.csv)
It is a small directed graph representing countries import/export
amounts.
Open Texera workflow editor.
Use the following operators:
- Use the **CSV File Scan** operator to load the `CountryTrade.csv`
file.
- Use the **Sankey Diagram** operator with the source set to "from",
target set to "to", and value set to "value".
- Use the **HTML Visualizer** pointed at the HTML content produced by
the Sankey Diagram operator.
   - Use the **View Results** operator to display the output.

### Expected Result:
![Screenshot 2024-09-19 at 8 47
43 PM](https://github.com/user-attachments/assets/259305ac-9602-46fb-81d0-04333e0736f5)
![Screenshot 2024-09-19 at 8 48
39 PM](https://github.com/user-attachments/assets/1c2d6f7d-aeb4-406c-8b78-5ccbd522b3fc)
![WhatsApp Image 2024-09-19 at 4 44 13
PM](https://github.com/user-attachments/assets/4b53197e-8593-4471-abfa-728e44e38916)

One of the shared input parameters for many charts is `pattern_shape`
which indicates the texture of the graph based on an attribute. Its
another input variable for bar chart that adds texture.
We added this attribute to 4 charts:
- Bar chart
- Filled Area
- Gantt chart
- Histogram
Bumps [express](https://github.com/expressjs/express) from 4.19.2 to
4.21.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/express/releases">express's
releases</a>.</em></p>
<blockquote>
<h2>4.21.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Deprecate <code>&quot;back&quot;</code> magic string in redirects by
<a href="https://github.com/blakeembrey"><code>@​blakeembrey</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5935">expressjs/express#5935</a></li>
<li>finalhandler@1.3.1 by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5954">expressjs/express#5954</a></li>
<li>fix(deps): serve-static@1.16.2 by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5951">expressjs/express#5951</a></li>
<li>Upgraded dependency qs to 6.13.0 to match qs in body-parser by <a
href="https://github.com/agadzinski93"><code>@​agadzinski93</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5946">expressjs/express#5946</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/agadzinski93"><code>@​agadzinski93</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5946">expressjs/express#5946</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/expressjs/express/compare/4.20.0...4.21.0">https://github.com/expressjs/express/compare/4.20.0...4.21.0</a></p>
<h2>4.20.0</h2>
<h2>What's Changed</h2>
<h3>Important</h3>
<ul>
<li>IMPORTANT: The default <code>depth</code> level for parsing
URL-encoded data is now <code>32</code> (previously was
<code>Infinity</code>)</li>
<li>Remove link renderization in html while using
<code>res.redirect</code></li>
</ul>
<h3>Other Changes</h3>
<ul>
<li>4.19.2 Staging by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5561">expressjs/express#5561</a></li>
<li>remove duplicate location test for data uri by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5562">expressjs/express#5562</a></li>
<li>feat: document beta releases expectations by <a
href="https://github.com/marco-ippolito"><code>@​marco-ippolito</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5565">expressjs/express#5565</a></li>
<li>Cut down on duplicated CI runs by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5564">expressjs/express#5564</a></li>
<li>Add a Threat Model by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5526">expressjs/express#5526</a></li>
<li>Assign captain of encodeurl by <a
href="https://github.com/blakeembrey"><code>@​blakeembrey</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5579">expressjs/express#5579</a></li>
<li>Nominate jonchurch as repo captain for <code>http-errors</code>,
<code>expressjs.com</code>, <code>morgan</code>, <code>cors</code>,
<code>body-parser</code> by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5587">expressjs/express#5587</a></li>
<li>docs: update Security.md by <a
href="https://github.com/inigomarquinez"><code>@​inigomarquinez</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5590">expressjs/express#5590</a></li>
<li>docs: update triage nomination policy by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5600">expressjs/express#5600</a></li>
<li>Add CodeQL (SAST) by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5433">expressjs/express#5433</a></li>
<li>docs: add UlisesGascon as triage initiative captain by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5605">expressjs/express#5605</a></li>
<li>deps: encodeurl@~2.0.0 by <a
href="https://github.com/blakeembrey"><code>@​blakeembrey</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5569">expressjs/express#5569</a></li>
<li>skip QUERY method test by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5628">expressjs/express#5628</a></li>
<li>ignore ETAG query test on 21 and 22, reuse skip util by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5639">expressjs/express#5639</a></li>
<li>add support Node.js@22 in the CI by <a
href="https://github.com/mertcanaltin"><code>@​mertcanaltin</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5627">expressjs/express#5627</a></li>
<li>doc: add table of contents, tc/triager lists to readme by <a
href="https://github.com/mertcanaltin"><code>@​mertcanaltin</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5619">expressjs/express#5619</a></li>
<li>List and sort all projects, add captains by <a
href="https://github.com/blakeembrey"><code>@​blakeembrey</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5653">expressjs/express#5653</a></li>
<li>docs: add <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
as captain for cookie-parser by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5666">expressjs/express#5666</a></li>
<li>✨ bring back query tests for node 21 by <a
href="https://github.com/ctcpip"><code>@​ctcpip</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5690">expressjs/express#5690</a></li>
<li>[v4] Deprecate <code>res.clearCookie</code> accepting
<code>options.maxAge</code> and <code>options.expires</code> by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5672">expressjs/express#5672</a></li>
<li>skip QUERY tests for Node 21 only, still not supported by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5695">expressjs/express#5695</a></li>
<li>📝 update people, add ctcpip to TC by <a
href="https://github.com/ctcpip"><code>@​ctcpip</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5683">expressjs/express#5683</a></li>
<li>remove minor version pinning from ci by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5722">expressjs/express#5722</a></li>
<li>Fix link variable use in attribution section of CODE OF CONDUCT by
<a href="https://github.com/IamLizu"><code>@​IamLizu</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5762">expressjs/express#5762</a></li>
<li>Replace Appveyor windows testing with GHA by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5599">expressjs/express#5599</a></li>
<li>Add OSSF Scorecard badge by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5436">expressjs/express#5436</a></li>
<li>update scorecard link by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5814">expressjs/express#5814</a></li>
<li>Nominate <a
href="https://github.com/IamLizu"><code>@​IamLizu</code></a> to the
triage team by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5836">expressjs/express#5836</a></li>
<li>deps: path-to-regexp@0.1.8 by <a
href="https://github.com/blakeembrey"><code>@​blakeembrey</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5603">expressjs/express#5603</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/express/blob/4.21.0/History.md">express's
changelog</a>.</em></p>
<blockquote>
<h1>4.21.0 / 2024-09-11</h1>
<ul>
<li>Deprecate <code>res.location(&quot;back&quot;)</code> and
<code>res.redirect(&quot;back&quot;)</code> magic string</li>
<li>deps: serve-static@1.16.2
<ul>
<li>includes send@0.19.0</li>
</ul>
</li>
<li>deps: finalhandler@1.3.1</li>
<li>deps: qs@6.13.0</li>
</ul>
<h1>4.20.0 / 2024-09-10</h1>
<ul>
<li>deps: serve-static@0.16.0
<ul>
<li>Remove link renderization in html while redirecting</li>
</ul>
</li>
<li>deps: send@0.19.0
<ul>
<li>Remove link renderization in html while redirecting</li>
</ul>
</li>
<li>deps: body-parser@0.6.0
<ul>
<li>add <code>depth</code> option to customize the depth level in the
parser</li>
<li>IMPORTANT: The default <code>depth</code> level for parsing
URL-encoded data is now <code>32</code> (previously was
<code>Infinity</code>)</li>
</ul>
</li>
<li>Remove link renderization in html while using
<code>res.redirect</code></li>
<li>deps: path-to-regexp@0.1.10
<ul>
<li>Adds support for named matching groups in the routes using a
regex</li>
<li>Adds backtracking protection to parameters without regexes
defined</li>
</ul>
</li>
<li>deps: encodeurl@~2.0.0
<ul>
<li>Removes encoding of <code>\</code>, <code>|</code>, and
<code>^</code> to align better with URL spec</li>
</ul>
</li>
<li>Deprecate passing <code>options.maxAge</code> and
<code>options.expires</code> to <code>res.clearCookie</code>
<ul>
<li>Will be ignored in v5, clearCookie will set a cookie with an expires
in the past to instruct clients to delete the cookie</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/expressjs/express/commit/7e562c6d8daddff4604f8efaaf9db2cf98c6dcff"><code>7e562c6</code></a>
4.21.0</li>
<li><a
href="https://github.com/expressjs/express/commit/1bcde96bc87c4704df9a704271d1167064ab56bb"><code>1bcde96</code></a>
fix(deps): qs@6.13.0 (<a
href="https://redirect.github.com/expressjs/express/issues/5946">#5946</a>)</li>
<li><a
href="https://github.com/expressjs/express/commit/7d364775688be98aaa973302e066d0da9f438997"><code>7d36477</code></a>
fix(deps): serve-static@1.16.2 (<a
href="https://redirect.github.com/expressjs/express/issues/5951">#5951</a>)</li>
<li><a
href="https://github.com/expressjs/express/commit/40d2d8f2c882712a0f2e4603c38d166c79676b2b"><code>40d2d8f</code></a>
fix(deps): finalhandler@1.3.1</li>
<li><a
href="https://github.com/expressjs/express/commit/77ada906dba57fd6e308f0d750e01653dbeaddfc"><code>77ada90</code></a>
Deprecate <code>&quot;back&quot;</code> magic string in redirects (<a
href="https://redirect.github.com/expressjs/express/issues/5935">#5935</a>)</li>
<li><a
href="https://github.com/expressjs/express/commit/21df421ebc7a5249bb31101da666bbf22adc3f18"><code>21df421</code></a>
4.20.0</li>
<li><a
href="https://github.com/expressjs/express/commit/4c9ddc1c47bf579e55c2fe837d76a952e9fd8959"><code>4c9ddc1</code></a>
feat: upgrade to serve-static@0.16.0</li>
<li><a
href="https://github.com/expressjs/express/commit/9ebe5d500d22cbb2b8aaa73446866b084c747971"><code>9ebe5d5</code></a>
feat: upgrade to send@0.19.0 (<a
href="https://redirect.github.com/expressjs/express/issues/5928">#5928</a>)</li>
<li><a
href="https://github.com/expressjs/express/commit/ec4a01b6b8814d7b007f36a3023f4dbafdbc3d09"><code>ec4a01b</code></a>
feat: upgrade to body-parser@1.20.3 (<a
href="https://redirect.github.com/expressjs/express/issues/5926">#5926</a>)</li>
<li><a
href="https://github.com/expressjs/express/commit/54271f69b511fea198471e6ff3400ab805d6b553"><code>54271f6</code></a>
fix: don't render redirect values in anchor href</li>
<li>Additional commits viewable in <a
href="https://github.com/expressjs/express/compare/4.19.2...4.21.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=express&package-manager=npm_and_yarn&previous-version=4.19.2&new-version=4.21.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/Texera/texera/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…2855)

This PR introduces a "Download" button for binary data in the result
panel, which becomes available when the result table contains binary
type data.

#### User Experience:
- When the user clicks the "Download" button, a result exportation modal
will appear.
- The modal includes an additional input field where the user can
specify a filename for the binary data.
- A default filename is suggested in the format:
[columnName]_[rowNumber], but the user has the option to modify it as
desired.
- The rest of the modal is similar to the existing result exportation:
the user selects a dataset as the destination and clicks the "Save"
button to store the file.

This enhancement streamlines the handling of binary data exports, making
the process more intuitive and user-friendly.
<img width="1065" alt="Screenshot 2024-09-22 at 9 58 07 PM"
src="https://github.com/user-attachments/assets/0b5620c7-0e41-41b7-9652-8e977edb339f">


https://github.com/user-attachments/assets/19e31782-bd90-405b-b09e-44ffc314d488

---------

Co-authored-by: Kunwoo Park <kunwoopark@Kunwoos-MacBook-Pro.local>
Co-authored-by: Kunwoo Park <kunwoopark@dhcp-172-31-184-236.mobile.uci.edu>
Co-authored-by: Xinyuan Lin <xinyual3@uci.edu>
fix the path to find the node_modules from
../pyright-language-server/src to ../pyright-language-server
This PR adds functionality for state passing between operators, enabling
better coordination and data flow in complex workflows. The changes
primarily involve updates to serialization logic and the introduction of
mechanisms for operators to share and access the state during execution.

Key Highlights:
1. Implementation of state serialization and deserialization.
2. Integration of state passing into operator workflows.

This update is essential for a more dynamic and responsive pipeline
processing.

Introduce `State` as a type of `Marker`.

The `State` class has the following methods: 
1. `add(key: String, value: Any, valueType: AttributeType): Unit `
2. `get(key: String): Any`
**Propose:**
This pull request introduces a new Hub feature to the Texera platform. 

**Changes:**
- Add new components for the Hub interface.
- Updates to the dashboard menu to incorporate Hub navigation.
- Numerous updates and fixes to refine the functionality and ensure
compatibility.
- This enhancement aims to provide a centralized hub for managing
various elements within the Texera system, improving user experience and
navigation efficiency.

**Demo:**
Interface before login:
previous home interface:

![previous_home_interface](https://github.com/user-attachments/assets/b4031170-ca38-4dd0-9201-477e807b32d8)

now home interface:

![home_page_no_login](https://github.com/user-attachments/assets/9d1fe994-eb4f-4310-88c6-c2e1efa8c6b7)

now hub-workflow:

![workflow_page_search_page](https://github.com/user-attachments/assets/10132eba-dc2a-4e50-98aa-c7a79cc695cb)

Interface after login:
previous workflow-interface:

![previous_interface](https://github.com/user-attachments/assets/9c219871-896a-4bbb-ae20-9908b99b272a)

now workflow-interface:

![after_login](https://github.com/user-attachments/assets/2da720f0-b77f-459a-be60-766c5cda4dc9)

---------

Co-authored-by: Xinyuan Lin <xinyual3@uci.edu>
Co-authored-by: linxinyuan <linxinyuan@gmail.com>
Co-authored-by: sixsage <sixsage02@gmail.com>
Co-authored-by: gspikehalo <2318002579@qq.com>
Co-authored-by: mengw15 <125719918+mengw15@users.noreply.github.com>
Co-authored-by: Minchong(Brian) Wu <143851082+IamtherealBrian@users.noreply.github.com>
Co-authored-by: Yicong Huang <17627829+Yicong-Huang@users.noreply.github.com>
Co-authored-by: Yicong Huang <yicong.huang@observeinc.com>
Co-authored-by: GspikeHalo <109092664+GspikeHalo@users.noreply.github.com>
This PR ensures consistency between the result panel and the
`RowModalComponent` when displaying binary data. Previously, the result
panel showed a trimmed string, while the `RowModalComponent` displayed a
trimmed string with a "byte" prefix when a user clicked on a single row
in the table. With this update, both components will now display the
same trimmed string, improving the user experience by maintaining
consistent data presentation across the interface.

<img width="1147" alt="Screenshot 2024-09-23 at 10 12 00 AM"
src="https://github.com/user-attachments/assets/700e22e0-7537-4916-a724-1aff159cbcbc">

---------

Co-authored-by: Kunwoo Park <kunwoopark@Kunwoos-MacBook-Pro.local>
This PR addresses an issue introduced in PR #2863, where non-string
values (e.g., integers, longs) containing only 0 or 1 were incorrectly
identified as binary data in the frontend and displayed as such. This
fix ensures that non-string values are now correctly handled and
displayed according to their actual type, preventing them from being
mistakenly rendered as binary data.

[Before]

<img width="1034" alt="Screenshot 2024-09-24 at 11 30 12 AM"
src="https://github.com/user-attachments/assets/f300334c-8df0-4d99-a65f-b05c50816b7e">

[After]
<img width="1032" alt="Screenshot 2024-09-24 at 11 30 40 AM"
src="https://github.com/user-attachments/assets/dd34ec19-74ac-4b99-b05a-0730d2ea16e1">

Co-authored-by: Kunwoo Park <kunwoopark@Kunwoos-MacBook-Pro.local>
…nel with Improved UI (#2869)

This PR builds upon the improvements made in PR #2855. Previously, the
download button was limited to binary values in the result panel.
However, users may also want to download other types of data, such as
long strings, which were not supported in the previous implementation.

Key Improvements:
- Users can now download any value from the result panel, providing
greater flexibility.
- This change removes the restriction of downloading only binary data.
- To maintain a clean and user-friendly interface, the download button
is now hidden by default and will appear when the user hovers over a
row. This prevents the UI from becoming cluttered with download buttons
in every table cell.


https://github.com/user-attachments/assets/e060894e-bd65-4646-8b67-d85585b171d4

---------

Co-authored-by: Kunwoo Park <kunwoopark@Kunwoos-MacBook-Pro.local>
Co-authored-by: Xinyuan Lin <xinyual3@uci.edu>
Fix the bug in the Python source operator, caused by a typo in PR #2802.
**Purpose:**
The current hub site does not distinguish between private and public
workflows. This pr aims to introduce this concept and add methods for
hub users to publish workflows from texera hub site.

**Description:**
1. Added a toggle button to the workflow list item to help switching
between public and private workflow
2. Changed the database schema to add is_public boolean attribute to the
workflow table (Added 15.sql for database updates).
3. Implemented access checks so that only users with read or write
access can change a workflow to publish

Partially fixes #2741 (still need
to add a clone button in the detail page).

**Demo:**
old share access button:

![previous_share_access_button](https://github.com/user-attachments/assets/b5fc50bc-b676-43b3-ac73-4c1422535795)

new share access button:

![new_share_access_button](https://github.com/user-attachments/assets/c7d28587-0bb6-422b-9e51-dcbf3e8a295e)

old workspace top bar:
![old workspace top
bar](https://github.com/user-attachments/assets/78599dbf-3ee3-4c18-9621-cf97858f01c9)

share access button in workspace:
![share button in
workspace](https://github.com/user-attachments/assets/0995a093-9854-4d95-b64a-5121f9d485c3)

share access button in workspace after click:
![share button in workspace after
click](https://github.com/user-attachments/assets/89fa5733-75d2-4ff8-825b-fc1ae6c56a71)

---------

Co-authored-by: Xinyuan Lin <xinyual3@uci.edu>
Co-authored-by: linxinyuan <linxinyuan@gmail.com>
Co-authored-by: YS0meone <timyuan1016@gmail.com>
Co-authored-by: sixsage <sixsage02@gmail.com>
Co-authored-by: mengw15 <125719918+mengw15@users.noreply.github.com>
Co-authored-by: Minchong(Brian) Wu <143851082+IamtherealBrian@users.noreply.github.com>
Co-authored-by: Yicong Huang <17627829+Yicong-Huang@users.noreply.github.com>
Co-authored-by: Yicong Huang <yicong.huang@observeinc.com>
…2867)

## Purpose
Address #2810 #2809 with a different solution from #2834
With the solution in #2834, it is hard to use the workspace-editor
components elsewhere as it is based on vh/vw styling.
## Changes
Revoke the styling changes made in #2834 (back to using 100% instead of
vh/vw and remove overflow: hidden)
Dispatch "resize" event when workflow editor is loaded to invoke all the
relevant resize handlers.

## Demo
Demo is the same as #2834 as they fix the same bug
Before (before #2834)

![workflow_editor_size_bug_master](https://github.com/user-attachments/assets/a3e5a50b-00ac-4c20-9fdf-afb256e0947c)
After

![workflow_editor_size_bug_branch](https://github.com/user-attachments/assets/7c51624d-bce5-4e6f-adb7-ce4ec54e3137)
## Purpose
Add zoom-in and zoom-out buttons on the minimap.

## Changes
Added the zoom-in and zoom-out buttons to the minimap.
Removed the zoom-in and zoom-out buttons in the Texera menu

## Demo
Texera menu before

![image](https://github.com/user-attachments/assets/8f1f2bb9-9b0f-4555-a4bc-77a66f8e5bd1)
Texera menu after

![image](https://github.com/user-attachments/assets/28fdf769-f159-43c0-acc1-be182c9c4b82)
Minimap before

![image](https://github.com/user-attachments/assets/12b51614-f6ae-4958-b7f1-ad358c5bba90)
Minimap after

![image](https://github.com/user-attachments/assets/fed348bd-a29c-4eb1-9f93-cac3e26e2ac1)
…#2838)

**Propose:**
Modify the search results on the Hub Workflow page to use the
SearchResultComponent from the general search, and implement different
redirection behavior based on the user's login status and access
permissions.

**Change:**
1. Replaced the search results on the Hub Workflow page with the
SearchResult Component used in the general search.
2. Handled different redirection scenarios:
a) For users who are not logged in: Clicking on any workflow will
redirect to the Workflow Detail page.
b) For logged-in users: If the user clicks on a workflow they have
access to, they will be redirected to the Workspace. If the user clicks
on a workflow they don't have access to, they will be redirected to the
Workflow Detail page.

**Demo:**
old hub-workflow interface:

![368771579-10132eba-dc2a-4e50-98aa-c7a79cc695cb](https://github.com/user-attachments/assets/3150b0d8-6226-498f-9019-c88471e59c19)

new hub-workflow interface:
![new hub-workflow
interface](https://github.com/user-attachments/assets/b08404a4-91cd-4e89-8166-a4a04972cea2)

redirect demo:

https://github.com/user-attachments/assets/21b70275-9f6b-4a71-b977-b39a58bd6a11

---------

Co-authored-by: Xinyuan Lin <xinyual3@uci.edu>
Co-authored-by: linxinyuan <linxinyuan@gmail.com>
Co-authored-by: YS0meone <timyuan1016@gmail.com>
Co-authored-by: sixsage <sixsage02@gmail.com>
Co-authored-by: mengw15 <125719918+mengw15@users.noreply.github.com>
Co-authored-by: Minchong(Brian) Wu <143851082+IamtherealBrian@users.noreply.github.com>
Co-authored-by: Yicong Huang <17627829+Yicong-Huang@users.noreply.github.com>
Co-authored-by: Yicong Huang <yicong.huang@observeinc.com>
bobbai00 and others added 29 commits December 24, 2024 22:54
# Conflicts:
#	.gitignore
# Conflicts:
#	core/build.sbt
#	core/workflow-core/build.sbt
#	core/workflow-core/src/main/resources/storage-config.yaml
#	core/workflow-core/src/main/scala/edu/uci/ics/amber/core/storage/StorageConfig.scala
### PR overview
Previously, when terminating a computing unit, the request would go
through and return correctly. However, the UI notification displays
incorrect message. The fix was in the
"workflow-computing-unit-managing-service" where the response returned
in was in json format.

### Video showing change

https://github.com/user-attachments/assets/05c73672-0f95-4782-a11d-c3dd47abcaf6
# Conflicts:
#	core/gui/src/app/app.module.ts
#	core/workflow-core/src/main/resources/storage-config.yaml
#	core/workflow-core/src/main/scala/edu/uci/ics/amber/core/storage/StorageConfig.scala
# Conflicts:
#	core/workflow-core/src/main/resources/storage-config.yaml
#	core/workflow-core/src/main/scala/edu/uci/ics/amber/core/storage/StorageConfig.scala
# Overview
The purpose of the PR is to implement creating, selecting, and deleting
a workflow computing unit for running workflows. The changes include
mainly from the
1) WorkflowComputingUnitManagingService for adding metrics and starting
a new compute unit with specified resource
2) power-button component whch is responsible for the UI for starting,
selecting, and deleting a compute unit
3) root styles.scss for some of the styling of ng zorro UI

# Diagram
![workflow-computing-unit-metrics
drawio](https://github.com/user-attachments/assets/7a171124-2dbc-4c58-82e6-3d74048513ba)

# Demo
### Lifecycle of compute unit

https://github.com/user-attachments/assets/3e431ade-c617-400d-91d5-85bd1cfd71bf

# Instructions
To run on the kubernetes cluster
1) Run all 4 scripts under `core/scripts/build-docker-image` to create
docker images for
a) webserver.sh
b) workflow-compiling-service.sh
c) workflow-computing-unit.sh
d) workflow-computing-unit-managing-service.sh
2) Update the your docker image name appropriately in the
`texera-helmchart/values.yaml`
3) Run `helm install texera-helmchart <texera-helmchart path>`
- i.e. `helm install texera-helmchart core/scripts/texera-helmchart`
4) Open up `http://texera.example.com:30080/` on your local browser
* You may need to add "127.0.0.1 texera.example.com" to `/etc/hosts` to
open the application in your browser
@Yicong-Huang
Copy link
Contributor

@bobbai00 if this is surpassed (by another PR), please close it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.