Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
cce9c79
Add basic components for the workflow editor
tobias-weber Dec 20, 2024
bba7b88
Add workflow editor components
tobias-weber Dec 23, 2024
92bb565
Add ability to view existing workflows
tobias-weber Dec 23, 2024
9bde6b6
Introduce workflow websocket with basic functionality
tobias-weber Jan 1, 2025
e9780ee
Various visual fixes for notebooks
tobias-weber Jan 2, 2025
f91e026
Fix katex rendering
tobias-weber Jan 2, 2025
61c3812
Allow child routes to use fluid container
tobias-weber Jan 2, 2025
b7357d2
Implement reactive workflow editing
tobias-weber Jan 3, 2025
96c5145
Implement more workflow editing features
tobias-weber Jan 6, 2025
e0bf463
Introduce right menu for editing activities
tobias-weber Jan 7, 2025
0b7d117
Add workflow config editor and left menu
tobias-weber Jan 8, 2025
415a6f0
Move websocket to its own service
tobias-weber Jan 9, 2025
f7699c3
Render activity descriptions as markdown
tobias-weber Jan 9, 2025
fa41eed
Add ability to edit activity settings
tobias-weber Jan 10, 2025
06faff3
Add modal for editing variables
tobias-weber Jan 13, 2025
c74c0e3
Improve left menu
tobias-weber Jan 13, 2025
884f8d4
Add component for showing checkpoints
tobias-weber Jan 13, 2025
c503434
Improve workflow management
tobias-weber Jan 14, 2025
8e3321d
Fix scaling issue of left and right menu
tobias-weber Jan 14, 2025
275457f
Add more setting types
tobias-weber Jan 14, 2025
b235d2a
New activity component design
tobias-weber Jan 15, 2025
9d8c5b7
Minor visual changes
tobias-weber Jan 16, 2025
7f0a8f3
More visual improvements
tobias-weber Jan 16, 2025
800ccf5
Add arrow indicator on edges
tobias-weber Jan 17, 2025
320d239
Add autocomplete to entity-setting, show problems in activities
tobias-weber Jan 17, 2025
47331d6
Introduce execution monitor and improve UI layout
tobias-weber Jan 20, 2025
f2c9b02
Add query and field select setting types
tobias-weber Jan 21, 2025
f5af234
Improve variables and field-select
tobias-weber Jan 22, 2025
f160740
Many different visual tweaks
tobias-weber Jan 23, 2025
efa0800
Add support for multi-input
tobias-weber Jan 24, 2025
7a70eac
Introduce new setting types
tobias-weber Jan 27, 2025
c874a5c
Improve dashboard and field-select-setting
tobias-weber Jan 28, 2025
e8e09bc
Temporary fixes for problems after rebase
tobias-weber Jan 29, 2025
df67f71
Adapt UI to updated variables implementation
tobias-weber Jan 30, 2025
00ff27c
Add rename setting
tobias-weber Jan 31, 2025
77c601e
Small adjustments to settings
tobias-weber Feb 3, 2025
54222a3
Add cast-setting component
tobias-weber Feb 4, 2025
37463c4
Improve cast settings
tobias-weber Feb 5, 2025
31385d2
Settings redesign and more workflow management features
tobias-weber Feb 5, 2025
80ea238
Add filter setting
tobias-weber Feb 7, 2025
1954207
String setting improvements
tobias-weber Feb 10, 2025
45d490a
Remove spellcheck
tobias-weber Feb 10, 2025
3038f01
Small visual improvements
tobias-weber Feb 11, 2025
916d6bb
Add help component
tobias-weber Feb 12, 2025
3f1e24e
Add autocomplete for variables in string setting
tobias-weber Feb 13, 2025
d217059
Remove activity count restriction for bugfixing large workflows
tobias-weber Feb 20, 2025
2ad15ee
Implement graph-map-setting
tobias-weber Feb 21, 2025
3f98f5a
Support dynamic display names
tobias-weber Feb 24, 2025
15d4d9c
Add API Overview
tobias-weber Feb 26, 2025
08cee95
Implement NestedSessions
tobias-weber Feb 28, 2025
74ad3d8
Add nested workflow help
tobias-weber Mar 3, 2025
0fc6ad5
Improve field select, add file setting
tobias-weber Mar 4, 2025
d710aeb
Visual and performance improvements
tobias-weber Mar 6, 2025
fb59b18
Add initial version of jobs
tobias-weber Mar 7, 2025
a9e1317
Improvements for jobs
tobias-weber Mar 10, 2025
0958e1c
Better handling of target previews for suggestions
tobias-weber Mar 12, 2025
260bfec
Evaluation preparations
tobias-weber Mar 14, 2025
ee15c19
More evaluation preparations
tobias-weber Mar 19, 2025
8aaacf0
Hard-code host for evaluation
tobias-weber Mar 20, 2025
c4a61ee
Improved graph map labels
tobias-weber Mar 21, 2025
163d63f
Add fix for orphaned connections
tobias-weber Mar 31, 2025
9c2c3ce
Hide activity buttons when editor is not editable
tobias-weber Apr 2, 2025
f6b6928
Remove evaluation code, store description preference in localstorage,…
tobias-weber Apr 25, 2025
cb89444
Add custom zoom and drag class for Rete editors
tobias-weber Apr 28, 2025
52c4eb0
Add workflow-level descriptions
tobias-weber Apr 30, 2025
6b724be
Add aggregate setting
tobias-weber May 1, 2025
90dcefc
Code cleanup and minor visual changes
tobias-weber May 2, 2025
72b506a
Show description button in view-only workflows
tobias-weber May 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@
"node_modules/plyr/dist/plyr.css",
"node_modules/@ali-hm/angular-tree-component/css/angular-tree-component.css",
"node_modules/katex/dist/katex.min.css",
"node_modules/prismjs/themes/prism-okaidia.css"
"node_modules/prismjs/themes/prism-okaidia.css",
"src/scss/angular2-multiselect-dropdown.scss"
],
"stylePreprocessorOptions": {
"includePaths": [
Expand All @@ -61,6 +62,7 @@
"scripts": [
"node_modules/chart.js/dist/chart.min.js",
"node_modules/katex/dist/katex.min.js",
"node_modules/katex/dist/contrib/auto-render.min.js",
"node_modules/prismjs/prism.js",
"node_modules/prismjs/components/prism-css.min.js",
"node_modules/prismjs/components/prism-cypher.min.js",
Expand Down
57 changes: 53 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"ace-builds": "^1.31.1",
"ajv": "^8.12.0",
"angular-ng-autocomplete": "^2.0.12",
"angular2-multiselect-dropdown": "^9.0.0",
"ansi_up": "^5.2.1",
"bootstrap": "^5.3.1",
"core-js": "^3.26.1",
Expand All @@ -48,7 +49,8 @@
"highlight.js": "^11.8.0",
"jquery": "3.7.1",
"jquery-ui": "^1.13.0",
"katex": "^0.16.0",
"json-pointer": "^0.6.2",
"katex": "0.16.10",
"lodash": "^4.17.20",
"marked": "^9.1.6",
"moment": "^2.30.1",
Expand Down Expand Up @@ -89,6 +91,8 @@
"@types/hammerjs": "^2.0.36",
"@types/jasmine": "~3.6.0",
"@types/jasminewd2": "^2.0.8",
"@types/json-pointer": "^1.0.34",
"@types/lodash": "^4.17.13",
"@types/marked": "^4.3.0",
"@types/node": "^12.11.1",
"codelyzer": "^6.0.2",
Expand Down
6 changes: 5 additions & 1 deletion src/app/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ import {ModalModule} from 'ngx-bootstrap/modal';
import {NgxJsonViewerModule} from 'ngx-json-viewer';
import {NotebooksModule} from './plugins/notebooks/notebooks.module';
import {IconDirective} from '@coreui/icons-angular';
import {WorkflowsModule} from './plugins/workflows/workflows.module';
import {MarkdownModule} from 'ngx-markdown';


@NgModule({
Expand All @@ -90,6 +92,7 @@ import {IconDirective} from '@coreui/icons-angular';
NgChartsModule,
// plugins
NotebooksModule,
WorkflowsModule,
ToastComponent,
NgChartsModule,
ToasterComponent,
Expand Down Expand Up @@ -151,7 +154,8 @@ import {IconDirective} from '@coreui/icons-angular';
NavbarComponent,
CollapseDirective,
NavbarBrandDirective,
NavbarNavComponent
NavbarNavComponent,
MarkdownModule.forRoot()
],
declarations: [
AppComponent,
Expand Down
25 changes: 25 additions & 0 deletions src/app/components/autocomplete/autocomplete.component.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<ng-autocomplete
[ngModel]="value()"
(ngModelChange)="value.set($event)"
[data]="data"
[searchKeyword]="value()"
[placeholder]="placeholder"
[notFoundText]="notFoundText"
[disabled]="disabled"
[itemTemplate]="itemTemplate"
[notFoundTemplate]="notFoundTemplate"
(selected)="onItemSelected($event)"
(inputChanged)="onInputChanged($event)"
(inputFocused)="onInputFocused()"
(inputCleared)="onInputCleared()"
(opened)="onOpened()"
(closed)="onClosed()"
(scrolledToEnd)="onScrolledToEnd()">
</ng-autocomplete>

<ng-template #itemTemplate let-item>
<a [innerHTML]="item"></a>
</ng-template>
<ng-template #notFoundTemplate let-notFound>
<div [innerHTML]="notFound"></div>
</ng-template>
51 changes: 51 additions & 0 deletions src/app/components/autocomplete/autocomplete.component.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
.ng-autocomplete {
width: 100% !important;


.autocomplete-container {
box-shadow: none !important;
border: 1px solid #d8dbe0;
border-radius: 0.25rem;
line-height: 2;
height: auto !important;
}

.not-found {
margin-bottom: -36px;
}

.input-container {
height: initial;
max-height: 31px !important; // based on small coreUI input
line-height: 2;
background-color: white !important;
border-radius: 0.25rem;

input {
background-color: transparent !important;
height: auto !important;
line-height: 1 !important;
padding: 0.25rem 0.5rem !important;
}
}

.autocomplete-container .suggestions-container ul li a {
padding: 0 0.5em !important;
}

.input-container input::placeholder {
font-size: 0.875rem; // based on small coreUI input
}

/* bootstrap styles */
.autocomplete-container {
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.autocomplete-container:focus-within {
border: 1px #8ad4ee solid !important;
border-radius: 0.25rem;
outline: 0 !important;
box-shadow: 0 0 0 0.2rem rgba(32, 168, 216, 0.25) !important;
}
}
64 changes: 64 additions & 0 deletions src/app/components/autocomplete/autocomplete.component.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import {Component, EventEmitter, Input, model, Output, ViewEncapsulation} from '@angular/core';

/**
* A light-weight wrapper around the ng-autocomplete component.
* Its purpose is to introduce the CoreUI style.
* If more inputs are required, they can be added in the future.
* Also see https://www.npmjs.com/package/angular-ng-autocomplete
*/
@Component({
selector: 'app-autocomplete',
templateUrl: './autocomplete.component.html',
styleUrl: './autocomplete.component.scss',
encapsulation: ViewEncapsulation.None
})
export class AutocompleteComponent {
value = model.required<string>();

@Input({required: true}) data: any[];
//@Input({ required: true }) searchKeyword: string; removed, instead we use value()
@Input() placeholder: string;
@Input() notFoundText = 'Not Found';
@Input() disabled = false;

@Output() changed = new EventEmitter<void>(); // new output, combines selected, inputChanged and inputCleared
@Output() selected = new EventEmitter<any>();
@Output() inputChanged = new EventEmitter<any>();
@Output() inputFocused = new EventEmitter<void>();
@Output() inputCleared = new EventEmitter<void>();
@Output() opened = new EventEmitter<void>();
@Output() closed = new EventEmitter<void>();
@Output() scrolledToEnd = new EventEmitter<void>();

onItemSelected(event: any): void {
this.selected.emit(event);
this.changed.emit();
}

onInputChanged(event: any): void {
this.inputChanged.emit(event);
this.changed.emit();
}

onInputFocused(): void {
this.inputFocused.emit();
}

onInputCleared(): void {
this.inputCleared.emit();
this.changed.emit();
}

onOpened(): void {
this.opened.emit();
}

onClosed(): void {
this.closed.emit();
}

onScrolledToEnd(): void {
this.scrolledToEnd.emit();
}

}
13 changes: 9 additions & 4 deletions src/app/components/components.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import {
DropdownItemDirective,
DropdownMenuDirective,
DropdownToggleDirective,
FormCheckInputDirective,
FormCheckComponent,
FormCheckLabelDirective,
FormControlDirective,
FormDirective,
Expand Down Expand Up @@ -131,6 +131,7 @@ import {PopoverModule} from 'ngx-bootstrap/popover';
import {AlgMetadataComponent} from './polyalg/algnode/alg-metadata/alg-metadata.component';
import {DoubleArgComponent} from './polyalg/controls/double-arg/double-arg.component';
import {WindowArgComponent} from './polyalg/controls/window-arg/window-arg.component';
import {AutocompleteComponent} from './autocomplete/autocomplete.component';

//import 'hammerjs';

Expand Down Expand Up @@ -218,7 +219,8 @@ import {WindowArgComponent} from './polyalg/controls/window-arg/window-arg.compo
PopoverDirective,
PopoverModule,
ButtonToolbarComponent,
BadgeComponent
BadgeComponent,
FormCheckComponent
],
declarations: [
BreadcrumbComponent,
Expand Down Expand Up @@ -267,7 +269,8 @@ import {WindowArgComponent} from './polyalg/controls/window-arg/window-arg.compo
MagneticConnectionComponent,
AlgMetadataComponent,
DoubleArgComponent,
WindowArgComponent
WindowArgComponent,
AutocompleteComponent
],
exports: [
BreadcrumbComponent,
Expand All @@ -291,7 +294,9 @@ import {WindowArgComponent} from './polyalg/controls/window-arg/window-arg.compo
Toast,
ReloadButtonComponent,
DockerInstanceComponent,
AlgViewerComponent
AlgViewerComponent,
JsonTextComponent,
AutocompleteComponent
]
})
export class ComponentsModule {
Expand Down
Loading