From 2525d5e89719e19c9e0957cfe5083541e45d31c5 Mon Sep 17 00:00:00 2001 From: marieklinaeva Date: Tue, 25 Jun 2024 13:55:42 -0400 Subject: [PATCH 01/11] Update create-workflow-modal.component.ts Removed if statement --- .../create-workflow-modal/create-workflow-modal.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts index e585d127..e016c456 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts @@ -149,7 +149,7 @@ export class CreateWorkflowModalComponent implements OnInit { }) .then((data) => { data.forEach((board: Board) => { - if (board.boardID != this.board.boardID) this.destOptions.push(board); + this.destOptions.push(board); }); }); } From fc1ff8a9a3f7b1861dd59a77c5a43aad0097ac5a Mon Sep 17 00:00:00 2001 From: JoelWiebe Date: Thu, 27 Jun 2024 20:48:44 -0400 Subject: [PATCH 02/11] Added comments to create workflow component and TODOs to ts and html files --- .../create-workflow-modal.component.html | 14 +++-- .../create-workflow-modal.component.ts | 52 +++++++++++++------ 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html index df40236d..e2de537c 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html @@ -94,6 +94,7 @@

Create New Bucket

[value]="option" >{{ option.name }} + Source required!Create New Bucket [errorStateMatcher]="matcher" multiple > - {{ - option.name - }} + + + + {{ option.name }} + Destination required!Choose Distribution: Source {{ option.name }} + Source required! @@ -204,6 +208,7 @@

Choose Distribution:

Destination {{ option.name }} + Destination required! @@ -251,7 +256,8 @@

Destination {{ option.name }} - {{ board.name }} + + Destination required! diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts index e016c456..babf7b80 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts @@ -43,15 +43,17 @@ import { ConfirmModalComponent } from '../confirm-modal/confirm-modal.component' styleUrls: ['./create-workflow-modal.component.scss'], }) export class CreateWorkflowModalComponent implements OnInit { - selected = new FormControl(0); - - board: Board; - buckets: Bucket[]; - boardBuckets: Bucket[]; - workflows: any[] = []; - tags: Tag[]; - upvoteLimit: number; - selectedTag: string; + // Properties + selected = new FormControl(0); // Controls which tab is currently selected (0: Buckets, 1: Create, 2: Manage) + + // Data models + board: Board; // Current board + buckets: Bucket[]; // All buckets + boardBuckets: Bucket[]; // Buckets associated with the current board + workflows: any[] = []; // List of workflows + tags: Tag[]; // Available tags for the board + upvoteLimit: number; // Upvote limit for the board + selectedTag: string; // Selected tag for filtering (if applicable) bucketName = ''; workflowName = ''; @@ -116,20 +118,23 @@ export class CreateWorkflowModalComponent implements OnInit { } ngOnInit(): void { - this.board = this.data.board; - this.tags = this.data.board.tags; - this.loadGroups(); - this.upvoteLimit = this.data.board.upvoteLimit; - this.loadBucketsBoards(); - this.loadWorkflows(); + // Initialization + this.board = this.data.board; // Load the current board from the passed data + this.tags = this.data.board.tags; // Load tags associated with the board + this.loadGroups(); // Load groups associated with the project + this.upvoteLimit = this.data.board.upvoteLimit; // Load the upvote limit for the board + this.loadBucketsBoards(); // Load buckets and boards for source/destination options + this.loadWorkflows(); // Load existing workflows for the board } + // Fetches groups for the project async loadGroups() { this.groupOptions = await this.groupService.getByProjectId( this.data.project.projectID ); } + // Loads buckets and boards, updates source/destination options. async loadBucketsBoards(): Promise { this.sourceOptions = []; this.destOptions = []; @@ -149,11 +154,12 @@ export class CreateWorkflowModalComponent implements OnInit { }) .then((data) => { data.forEach((board: Board) => { - this.destOptions.push(board); + this.destOptions.push(board); // TODO Confirm that this worked to add the canvas, it worked for me }); }); } + // Fetches workflows for the board from the workflowService. async loadWorkflows(): Promise { return this.workflowService.getAll(this.board.boardID).then((workflows) => { this.workflows = []; @@ -163,6 +169,7 @@ export class CreateWorkflowModalComponent implements OnInit { }); } + // Creates a new bucket and updates UI. createBucket(): void { const bucket: Bucket = { bucketID: generateUniqueID(), @@ -182,10 +189,12 @@ export class CreateWorkflowModalComponent implements OnInit { }); } + // Toggles visibility of bucket deletion controls. toggleDeleteBoard() { this.showDelete = !this.showDelete; } + // Opens a confirmation dialog and deletes the bucket. deleteBucket(bucket: Bucket) { this.dialog.open(ConfirmModalComponent, { width: '500px', @@ -204,6 +213,7 @@ export class CreateWorkflowModalComponent implements OnInit { }); } + // Creates a distribution workflow. createDistributionWorkflow(): void { if (!this._distributionWorkflowTypeSelected()) return; @@ -215,6 +225,7 @@ export class CreateWorkflowModalComponent implements OnInit { }); } + // Creates a peer review workflow. createPeerReviewWorkflow(): void { if (!this._actionSelected()) return; @@ -226,6 +237,7 @@ export class CreateWorkflowModalComponent implements OnInit { }); } + // Creates a generation task workflow. createGenerationTaskWorkflow(): void { if (!this._validGenerationTaskWorkflow()) return; const workflow: TaskWorkflow = this._assembleGenerationTaskWorkflow(); @@ -236,6 +248,7 @@ export class CreateWorkflowModalComponent implements OnInit { }); } + // Runs the specified workflow (task or distribution). runWorkflow(e, workflow: TaskWorkflow | DistributionWorkflow): void { e.stopPropagation(); @@ -265,6 +278,7 @@ export class CreateWorkflowModalComponent implements OnInit { } } + // Opens a confirmation dialog and deletes the workflow. async deleteWorkflow( e, workflow: TaskWorkflow | DistributionWorkflow @@ -291,14 +305,17 @@ export class CreateWorkflowModalComponent implements OnInit { }); } + // Closes the dialog. onNoClick(): void { this.dialogRef.close(); } + // Displays a snackbar message. openSnackBar(message: string): void { this.snackbarService.queueSnackbar(message); } + // Resets the workflow creation form. _clearWorkflowForm() { this.workflowNameFormControl.reset(); this.sourceFormControl.reset(); @@ -310,16 +327,19 @@ export class CreateWorkflowModalComponent implements OnInit { this.postGeneration = 1; } + // Type guard to check if an object is a Board. _isBoard(object: Board | Bucket): object is Board { return (object as Board).tags !== undefined; } + // Type guard to check if an object is a TaskWorkflow. _isTaskWorkflow( object: DistributionWorkflow | TaskWorkflow ): object is TaskWorkflow { return (object as TaskWorkflow).requiredActions !== undefined; } + // Checks if a distribution workflow form is valid. _validDistributionWorkflow(): boolean { return ( this.workflowNameFormControl.valid && From a75f61d7947ad4e246070e88801d1257613913e1 Mon Sep 17 00:00:00 2001 From: marieklinaeva Date: Wed, 3 Jul 2024 12:04:15 -0400 Subject: [PATCH 03/11] Create dump.rdb --- backend/dump.rdb | Bin 0 -> 88 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 backend/dump.rdb diff --git a/backend/dump.rdb b/backend/dump.rdb new file mode 100644 index 0000000000000000000000000000000000000000..4ae88da8d55e500314344af28cfcc847d8ba718b GIT binary patch literal 88 zcmWG?b@2=~FfcUy#aWb^l3A= Date: Wed, 3 Jul 2024 12:15:11 -0400 Subject: [PATCH 04/11] Update create-workflow-modal.component.html Added CANVAS and BUCKET identifiers to each of the destinations and sources. --- .../create-workflow-modal.component.html | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html index e2de537c..fed3b73f 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html @@ -92,9 +92,11 @@

Create New Bucket

{{ option.name }} + BOARD: + BUCKET: + {{ option.name }} - Source required!Create New Bucket

multiple > - - + BOARD: + BUCKET: {{ option.name }} @@ -198,8 +200,10 @@

Choose Distribution:

Source - {{ option.name }} - + + BOARD: + BUCKET: + {{ option.name }} Source required! @@ -207,8 +211,10 @@

Choose Distribution:

Destination - {{ option.name }} - + + BOARD: + BUCKET: + {{ option.name }} Destination required! @@ -255,9 +261,11 @@

Destination - {{ option.name }} - - + + BOARD: + BUCKET: + {{ option.name }} + {{ board.name }} Destination required! From a944fe3f90c4fde40d5a4ee020cdf39ff25ab6d4 Mon Sep 17 00:00:00 2001 From: marieklinaeva Date: Fri, 5 Jul 2024 12:51:19 -0400 Subject: [PATCH 05/11] Allow for boards as destinations and changed BOARD to CANVAS Fixed issue --- dump.rdb | Bin 0 -> 88 bytes frontend/package-lock.json | 109 +++++++----------- .../create-workflow-modal.component.html | 11 +- .../create-workflow-modal.component.ts | 2 +- 4 files changed, 45 insertions(+), 77 deletions(-) create mode 100644 dump.rdb diff --git a/dump.rdb b/dump.rdb new file mode 100644 index 0000000000000000000000000000000000000000..a0cfd9c5a13385d5540667c567426c15966f39a7 GIT binary patch literal 88 zcmWG?b@2=~FfcUy#aWb^l3A== 2.1.2 < 3.0.0" @@ -20838,14 +20840,12 @@ "@firebase/auth-interop-types": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz", - "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==", - "requires": {} + "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==" }, "@firebase/auth-types": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.3.tgz", - "integrity": "sha512-zExrThRqyqGUbXOFrH/sowuh2rRtfKHp9SBVY2vOqKWdCX1Ztn682n9WLtlUDsiYVIbBcwautYWk2HyCGFv0OA==", - "requires": {} + "integrity": "sha512-zExrThRqyqGUbXOFrH/sowuh2rRtfKHp9SBVY2vOqKWdCX1Ztn682n9WLtlUDsiYVIbBcwautYWk2HyCGFv0OA==" }, "@firebase/component": { "version": "0.5.6", @@ -20898,8 +20898,7 @@ "@firebase/firestore-types": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.4.0.tgz", - "integrity": "sha512-0dgwfuNP7EN6/OlK2HSNSQiQNGLGaRBH0gvgr1ngtKKJuJFuq0Z48RBMeJX9CGjV4TP9h2KaB+KrUKJ5kh1hMg==", - "requires": {} + "integrity": "sha512-0dgwfuNP7EN6/OlK2HSNSQiQNGLGaRBH0gvgr1ngtKKJuJFuq0Z48RBMeJX9CGjV4TP9h2KaB+KrUKJ5kh1hMg==" }, "@firebase/functions": { "version": "0.6.16", @@ -20933,8 +20932,7 @@ "@firebase/installations-types": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz", - "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==", - "requires": {} + "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==" }, "@firebase/logger": { "version": "0.2.6", @@ -20957,8 +20955,7 @@ "@firebase/messaging-types": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz", - "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==", - "requires": {} + "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==" }, "@firebase/performance": { "version": "0.4.18", @@ -21028,8 +21025,7 @@ "@firebase/storage-types": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.5.0.tgz", - "integrity": "sha512-6Wv3Lu7s18hsgW7HG4BFwycTquZ3m/C8bjBoOsmPu0TD6M1GKwCzOC7qBdN7L6tRYPh8ipTj5+rPFrmhGfUVKA==", - "requires": {} + "integrity": "sha512-6Wv3Lu7s18hsgW7HG4BFwycTquZ3m/C8bjBoOsmPu0TD6M1GKwCzOC7qBdN7L6tRYPh8ipTj5+rPFrmhGfUVKA==" }, "@firebase/util": { "version": "1.3.0", @@ -21867,8 +21863,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "acorn-walk": { "version": "6.2.0", @@ -21940,8 +21935,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv-formats": { "version": "2.0.2", @@ -22668,8 +22662,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "requires": {} + "dev": true }, "class-utils": { "version": "0.3.6", @@ -23063,8 +23056,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -23289,8 +23281,7 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", - "dev": true, - "requires": {} + "dev": true }, "css-has-pseudo": { "version": "0.10.0", @@ -23378,8 +23369,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -23431,8 +23421,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -23635,8 +23624,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "requires": {} + "dev": true }, "csso": { "version": "4.2.0", @@ -24082,6 +24070,7 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, "optional": true, "requires": { "iconv-lite": "^0.6.2" @@ -24091,6 +24080,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, "optional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -24127,8 +24117,7 @@ "ws": { "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "requires": {} + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" } } }, @@ -24151,8 +24140,7 @@ "ws": { "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "requires": {} + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" } } }, @@ -25896,8 +25884,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "idb": { "version": "3.0.2", @@ -26843,8 +26830,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true, - "requires": {} + "dev": true }, "karma-source-map-support": { "version": "1.4.0", @@ -26982,8 +26968,7 @@ "linkify-string": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/linkify-string/-/linkify-string-3.0.4.tgz", - "integrity": "sha512-OnNqqRjlYXaXipIAbBC8sDXsSumI1ftatzFg141Pw9HEXWjTVLFcMZoKbFupshqWRavtNJ6QHLa+u6AlxxgeRw==", - "requires": {} + "integrity": "sha512-OnNqqRjlYXaXipIAbBC8sDXsSumI1ftatzFg141Pw9HEXWjTVLFcMZoKbFupshqWRavtNJ6QHLa+u6AlxxgeRw==" }, "linkifyjs": { "version": "3.0.5", @@ -27430,8 +27415,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -29076,29 +29060,25 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-duplicates": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-empty": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-overridden": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-double-position-gradients": { "version": "1.0.0", @@ -29556,8 +29536,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -29625,8 +29604,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -30299,8 +30277,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -30742,8 +30719,7 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/rxjs-for-await/-/rxjs-for-await-0.0.2.tgz", "integrity": "sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw==", - "dev": true, - "requires": {} + "dev": true }, "rxjs-marbles": { "version": "4.3.5", @@ -30843,8 +30819,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -31849,8 +31824,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -32058,8 +32032,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -32606,8 +32579,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "enhanced-resolve": { "version": "5.9.2", @@ -32684,8 +32656,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -32763,8 +32734,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-regex": { "version": "2.1.1", @@ -33443,8 +33413,7 @@ "version": "7.5.7", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "optional": true, - "requires": {} + "optional": true }, "xml-name-validator": { "version": "3.0.0", diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html index fed3b73f..8bcc3239 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html @@ -93,7 +93,7 @@

Create New Bucket

*ngFor="let option of sourceOptions" [value]="option" > - BOARD: + CANVAS: BUCKET: {{ option.name }} @@ -112,7 +112,7 @@

Create New Bucket

multiple > - BOARD: + CANVAS: BUCKET: {{ option.name }} @@ -201,7 +201,7 @@

Choose Distribution:

Source - BOARD: + CANVAS: BUCKET: {{ option.name }} @@ -212,7 +212,7 @@

Choose Distribution:

Destination - BOARD: + CANVAS: BUCKET: {{ option.name }} @@ -262,10 +262,9 @@

Destination - BOARD: + CANVAS: BUCKET: {{ option.name }} - {{ board.name }} Destination required! diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts index babf7b80..80dfa545 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts @@ -154,7 +154,7 @@ export class CreateWorkflowModalComponent implements OnInit { }) .then((data) => { data.forEach((board: Board) => { - this.destOptions.push(board); // TODO Confirm that this worked to add the canvas, it worked for me + this.destOptions.push(board); }); }); } From 93a156bea6ce8ed3eeb185b21d46f1d95f387080 Mon Sep 17 00:00:00 2001 From: JoelWiebe Date: Fri, 5 Jul 2024 13:25:03 -0400 Subject: [PATCH 06/11] Prioritized projects in source and destination lists; see TODOs to complete --- .../create-workflow-modal.component.ts | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts index babf7b80..47d3480e 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts @@ -139,24 +139,28 @@ export class CreateWorkflowModalComponent implements OnInit { this.sourceOptions = []; this.destOptions = []; this.boardBuckets = []; - - this.bucketService - .getAllByBoard(this.data.board.boardID) - .then((buckets) => { - this.sourceOptions = this.sourceOptions.concat(buckets); - this.destOptions = this.destOptions.concat(buckets); - this.boardBuckets = this.boardBuckets.concat(buckets); - this.sourceOptions.push(this.board); - }); - this.boardService - .getMultipleBy(this.data.project.boards, { + + try { + // 1. Fetch Project Boards + const projectBoards = await this.boardService.getMultipleBy(this.data.project.boards, { scope: BoardScope.PROJECT_SHARED, - }) - .then((data) => { - data.forEach((board: Board) => { - this.destOptions.push(board); // TODO Confirm that this worked to add the canvas, it worked for me - }); }); + + // Add project boards FIRST + // this.destOptions = this.destOptions.concat(projectBoards); // TODO: Uncomment to add all canvas from the project + // this.sourceOptions = this.sourceOptions.concat(projectBoards); // TODO: Uncomment to add all canvases from the prjoect + + // 2. Fetch Buckets + const buckets = await this.bucketService.getAllByBoard(this.data.board.boardID); + this.boardBuckets = this.boardBuckets.concat(buckets); + + // 3. Add buckets SECOND + this.sourceOptions = this.sourceOptions.concat(buckets); + this.destOptions = this.destOptions.concat(buckets); + + } catch (error) { + console.error("Error loading boards and buckets:", error); + } } // Fetches workflows for the board from the workflowService. From 48bb20b2edfa78238f79ab5c81ed2b1a1570e87a Mon Sep 17 00:00:00 2001 From: marieklinaeva Date: Fri, 5 Jul 2024 14:04:21 -0400 Subject: [PATCH 07/11] Ordering of dest/source Options Fixed ordering --- dump.rdb | Bin 0 -> 88 bytes .../create-workflow-modal.component.ts | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 dump.rdb diff --git a/dump.rdb b/dump.rdb new file mode 100644 index 0000000000000000000000000000000000000000..06afb5555dfb73420fe0cd1aa3ec48a321da6d42 GIT binary patch literal 88 zcmWG?b@2=~FfcUy#aWb^l3A=QR1x^0E=WHO8@`> literal 0 HcmV?d00001 diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts index 47d3480e..88b77143 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts @@ -147,8 +147,8 @@ export class CreateWorkflowModalComponent implements OnInit { }); // Add project boards FIRST - // this.destOptions = this.destOptions.concat(projectBoards); // TODO: Uncomment to add all canvas from the project - // this.sourceOptions = this.sourceOptions.concat(projectBoards); // TODO: Uncomment to add all canvases from the prjoect + this.destOptions = this.destOptions.concat(projectBoards); + this.sourceOptions = this.sourceOptions.concat(projectBoards); // 2. Fetch Buckets const buckets = await this.bucketService.getAllByBoard(this.data.board.boardID); From 550d1de49ae6b5b8efde247832340e8c7cd57d5e Mon Sep 17 00:00:00 2001 From: marieklinaeva Date: Tue, 9 Jul 2024 11:59:42 -0400 Subject: [PATCH 08/11] Distribution workflows issues fixed For Distribution workflows, allow the destination to include one of the source items, as long as there are multiple destinations. For distribution workflows, if there is only one destination and the source matches the destination, "Destinations may include the source, but cannot match exactly". --- .../create-workflow-modal.component.html | 43 +++++++++++-------- .../create-workflow-modal.component.scss | 7 +++ .../create-workflow-modal.component.ts | 23 ++++++---- 3 files changed, 45 insertions(+), 28 deletions(-) diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html index 8bcc3239..c2dec09e 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html @@ -82,33 +82,38 @@

Create New Bucket

>
- - Source - - + + Source + + + CANVAS: + BUCKET: + {{ option.name }} - CANVAS: - BUCKET: - {{ option.name }} + Source required! - - Source required! - + + + Source and destination cannot be the same! + +
arrow_right_alt Destination diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.scss b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.scss index 06dae97a..45f2d73d 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.scss +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.scss @@ -16,6 +16,13 @@ display: flex; flex-direction: row; justify-content: space-between; + div { + display: block; + } + mat-error { + width: 100%; + font-size: 75%; + } } .arrow-icon-md { diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts index 88b77143..36f66cf9 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts @@ -68,9 +68,9 @@ export class CreateWorkflowModalComponent implements OnInit { // Fields for distribution workflow creation distributionSource: Board | Bucket; - distributionDestinations: (Bucket | Board)[]; + distributionDestinations: (Bucket | Board)[] = []; postsPerBucket: number; - distributionWorkflowType: DistributionWorkflowType; + distributionWorkflowType: DistributionWorkflowType = DistributionWorkflowType.RANDOM; removeFromSource = false; // Fields for peer review workflow and generation task workflow creation @@ -91,6 +91,8 @@ export class CreateWorkflowModalComponent implements OnInit { sourceFormControl = new FormControl('valid', [Validators.required]); destinationFormControl = new FormControl('valid', [Validators.required]); + sourceDestinationMatchError = new FormControl(false); + groupsFormControl = new FormControl('valid', [Validators.required]); promptFormControl = new FormControl('valid', [Validators.required]); @@ -344,13 +346,16 @@ export class CreateWorkflowModalComponent implements OnInit { } // Checks if a distribution workflow form is valid. - _validDistributionWorkflow(): boolean { - return ( - this.workflowNameFormControl.valid && - this.sourceFormControl.valid && - this.destinationFormControl.valid - ); - } + _validDistributionWorkflow(): boolean { + const allowMatch = this.distributionDestinations.length > 1; + const isMatch = this.distributionSource && + this.distributionDestinations.some(dest => dest.name === this.distributionSource.name); + this.sourceDestinationMatchError.setValue(!allowMatch && isMatch); + return (allowMatch || !isMatch) && + this.workflowNameFormControl.valid && + this.sourceFormControl.valid && + this.destinationFormControl.valid; +} _ppbSelected(): boolean { return this.postsPerBucket != null && this.postsPerBucket > 0; From 0040f982739f7ed3d35154f3178162eaa3dec66e Mon Sep 17 00:00:00 2001 From: marieklinaeva Date: Tue, 9 Jul 2024 12:20:37 -0400 Subject: [PATCH 09/11] Ran document formatter with Prettier --- .../create-workflow-modal.component.html | 304 +++++++++++++----- .../create-workflow-modal.component.scss | 4 +- .../create-workflow-modal.component.ts | 74 +++-- 3 files changed, 270 insertions(+), 112 deletions(-) diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html index c2dec09e..321a5c9a 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.html @@ -64,9 +64,24 @@

Create New Bucket

- Generation Task - Peer Review - Distribution + Generation Task + Peer Review + Distribution
@@ -83,7 +98,10 @@

Create New Bucket

- + Source Create New Bucket

+ CANVAS: + BUCKET: - CANVAS: - BUCKET: {{ option.name }} @@ -117,8 +139,12 @@

Create New Bucket

multiple > - CANVAS: - BUCKET: + CANVAS: + BUCKET: {{ option.name }} @@ -196,57 +222,106 @@

Choose Distribution:

- + Workflow Name - - Workflow name required! + + Workflow name required!
Source - + - CANVAS: - BUCKET: - {{ option.name }} + CANVAS: + BUCKET: + {{ option.name }} - Source required! + Source required! arrow_right_alt Destination - + - CANVAS: - BUCKET: - {{ option.name }} + CANVAS: + BUCKET: + {{ option.name }} - Destination required! + Destination required!
-
- +
+ Assigned Groups - - {{ option.name }} + + {{ option.name }} - At least one group required! + At least one group required!
- + Student Prompt - - Prompt is required! + + Prompt is required!
-

- Workflow Actions: -

-
+

Workflow Actions:

+
Require minimum 1 comment per post @@ -257,45 +332,83 @@

- + Workflow Name - - Workflow name required! + + Workflow name required!
Destination - + - CANVAS: - BUCKET: - {{ option.name }} + CANVAS: + BUCKET: + {{ option.name }} - Destination required! + Destination required!
-
- +
+ Assigned Groups - - {{ option.name }} + + {{ option.name }} - At least one group required! + At least one group required!
- + Student Prompt - - Prompt is required! + + Prompt is required!
-

- Workflow Actions: -

+

Workflow Actions:

Number of Posts to generate: [(ngModel)]="postGeneration" >
-
+
Require minimum 1 tag per post @@ -339,10 +452,28 @@

- Distribution - Peer Review - Generation - + Distribution + Peer Review + Generation +
- - + - -
diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.scss b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.scss index 45f2d73d..e356d982 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.scss +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.scss @@ -55,8 +55,8 @@ } #bucket-action-delete { - position: absolute; - right:0; + position: absolute; + right: 0; } .delete-toggler { diff --git a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts index 36f66cf9..e827eccf 100644 --- a/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts +++ b/frontend/src/app/components/create-workflow-modal/create-workflow-modal.component.ts @@ -44,16 +44,16 @@ import { ConfirmModalComponent } from '../confirm-modal/confirm-modal.component' }) export class CreateWorkflowModalComponent implements OnInit { // Properties - selected = new FormControl(0); // Controls which tab is currently selected (0: Buckets, 1: Create, 2: Manage) + selected = new FormControl(0); // Controls which tab is currently selected (0: Buckets, 1: Create, 2: Manage) // Data models - board: Board; // Current board - buckets: Bucket[]; // All buckets - boardBuckets: Bucket[]; // Buckets associated with the current board - workflows: any[] = []; // List of workflows - tags: Tag[]; // Available tags for the board - upvoteLimit: number; // Upvote limit for the board - selectedTag: string; // Selected tag for filtering (if applicable) + board: Board; // Current board + buckets: Bucket[]; // All buckets + boardBuckets: Bucket[]; // Buckets associated with the current board + workflows: any[] = []; // List of workflows + tags: Tag[]; // Available tags for the board + upvoteLimit: number; // Upvote limit for the board + selectedTag: string; // Selected tag for filtering (if applicable) bucketName = ''; workflowName = ''; @@ -70,7 +70,8 @@ export class CreateWorkflowModalComponent implements OnInit { distributionSource: Board | Bucket; distributionDestinations: (Bucket | Board)[] = []; postsPerBucket: number; - distributionWorkflowType: DistributionWorkflowType = DistributionWorkflowType.RANDOM; + distributionWorkflowType: DistributionWorkflowType = + DistributionWorkflowType.RANDOM; removeFromSource = false; // Fields for peer review workflow and generation task workflow creation @@ -121,12 +122,12 @@ export class CreateWorkflowModalComponent implements OnInit { ngOnInit(): void { // Initialization - this.board = this.data.board; // Load the current board from the passed data - this.tags = this.data.board.tags; // Load tags associated with the board - this.loadGroups(); // Load groups associated with the project - this.upvoteLimit = this.data.board.upvoteLimit; // Load the upvote limit for the board - this.loadBucketsBoards(); // Load buckets and boards for source/destination options - this.loadWorkflows(); // Load existing workflows for the board + this.board = this.data.board; // Load the current board from the passed data + this.tags = this.data.board.tags; // Load tags associated with the board + this.loadGroups(); // Load groups associated with the project + this.upvoteLimit = this.data.board.upvoteLimit; // Load the upvote limit for the board + this.loadBucketsBoards(); // Load buckets and boards for source/destination options + this.loadWorkflows(); // Load existing workflows for the board } // Fetches groups for the project @@ -141,27 +142,31 @@ export class CreateWorkflowModalComponent implements OnInit { this.sourceOptions = []; this.destOptions = []; this.boardBuckets = []; - + try { // 1. Fetch Project Boards - const projectBoards = await this.boardService.getMultipleBy(this.data.project.boards, { - scope: BoardScope.PROJECT_SHARED, - }); + const projectBoards = await this.boardService.getMultipleBy( + this.data.project.boards, + { + scope: BoardScope.PROJECT_SHARED, + } + ); // Add project boards FIRST this.destOptions = this.destOptions.concat(projectBoards); this.sourceOptions = this.sourceOptions.concat(projectBoards); - + // 2. Fetch Buckets - const buckets = await this.bucketService.getAllByBoard(this.data.board.boardID); + const buckets = await this.bucketService.getAllByBoard( + this.data.board.boardID + ); this.boardBuckets = this.boardBuckets.concat(buckets); - + // 3. Add buckets SECOND this.sourceOptions = this.sourceOptions.concat(buckets); this.destOptions = this.destOptions.concat(buckets); - } catch (error) { - console.error("Error loading boards and buckets:", error); + console.error('Error loading boards and buckets:', error); } } @@ -346,16 +351,21 @@ export class CreateWorkflowModalComponent implements OnInit { } // Checks if a distribution workflow form is valid. - _validDistributionWorkflow(): boolean { + _validDistributionWorkflow(): boolean { const allowMatch = this.distributionDestinations.length > 1; - const isMatch = this.distributionSource && - this.distributionDestinations.some(dest => dest.name === this.distributionSource.name); + const isMatch = + this.distributionSource && + this.distributionDestinations.some( + (dest) => dest.name === this.distributionSource.name + ); this.sourceDestinationMatchError.setValue(!allowMatch && isMatch); - return (allowMatch || !isMatch) && - this.workflowNameFormControl.valid && - this.sourceFormControl.valid && - this.destinationFormControl.valid; -} + return ( + (allowMatch || !isMatch) && + this.workflowNameFormControl.valid && + this.sourceFormControl.valid && + this.destinationFormControl.valid + ); + } _ppbSelected(): boolean { return this.postsPerBucket != null && this.postsPerBucket > 0; From 92882f3a87a3c66c44c33202adce9eb0637ead92 Mon Sep 17 00:00:00 2001 From: markiianbabiak <63148103+markiianbabiak@users.noreply.github.com> Date: Thu, 11 Jul 2024 19:07:05 +0300 Subject: [PATCH 10/11] Delete dump.rdb --- backend/dump.rdb | Bin 88 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 backend/dump.rdb diff --git a/backend/dump.rdb b/backend/dump.rdb deleted file mode 100644 index 4ae88da8d55e500314344af28cfcc847d8ba718b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmWG?b@2=~FfcUy#aWb^l3A= Date: Thu, 11 Jul 2024 19:12:05 +0300 Subject: [PATCH 11/11] Update .gitignore in backend with dump.rdb --- backend/.gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/.gitignore b/backend/.gitignore index 7459f139..6df83de4 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -8,4 +8,6 @@ *.js # misc -.DS_Store \ No newline at end of file +.DS_Store + +dump.rdp \ No newline at end of file