Skip to content

Conversation

@bcb37
Copy link
Collaborator

@bcb37 bcb37 commented Sep 19, 2025

No description provided.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR removes experiments in ENROLLMENT_COMPLETE state from experiment pools unless the user is already enrolled in them. This prevents new users from being assigned to experiments that have completed enrollment while still maintaining existing enrollments.

  • Filters out enrollment complete experiments for non-enrolled users while preserving them for already-enrolled users
  • Updates processExperimentPools method to accept exclusion parameters and handle enrollment state filtering
  • Adds comprehensive test coverage for the new filtering behavior across various scenarios

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
ExperimentAssignmentService.ts Main logic change to filter enrollment complete experiments and refactor pool processing
ExperimentAssignmentService.test.ts Extensive test coverage for new filtering behavior with multiple test scenarios
WithinSubjectEnrollment.ts Remove unused import and function call
Scenario2.ts Simplify test expectations for user 4 assignment behavior
RevertToCondition.ts Simplify test expectations for user 4 assignment behavior

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

…ntService.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@bcb37 bcb37 marked this pull request as draft September 22, 2025 19:45
@bcb37
Copy link
Collaborator Author

bcb37 commented Sep 22, 2025

Supporting multiple assignments for a single decision point in the pooling logic will result in unpredictable behavior in at least the js client library, since that's one of possible multiple places that rely on the assumption that there will be a unique assignment for each decision point in non-within-subject experiments.

@bcb37 bcb37 marked this pull request as ready for review September 22, 2025 20:50
@danoswaltCL
Copy link
Collaborator

I have been looking at this btw, I went down a rabbit-hole yesterday using your branch to investigate how we employ this logic in our no-experiment-id scenarios in mark. It seems like either do caching or try to shoehorn this logic into mark, which may or may not have all the info necessary to do it at the moment, so would need some rejiggering. I looked into caching and it honestly seems more straightforward than other refactor options. Both options seem difficult to employ by Friday...

@bcb37 bcb37 requested a review from danoswaltCL September 23, 2025 18:33
@danoswaltCL
Copy link
Collaborator

ok, I have stop looking at the experiment assignment service it's got me spinning. any further questions I have are really outside the scope of this change, this looks good.

@bcb37 bcb37 merged commit 43c70f8 into dev Sep 24, 2025
10 checks passed
@bcb37 bcb37 deleted the fix/2667-remove-complete-experiments-from-pools branch September 24, 2025 14:01
danoswaltCL added a commit that referenced this pull request Nov 10, 2025
* Auto-remove leading/trailing spaces from all input text (#2537)

* fix entity types; add enum migration (#2551)

* add parent segments list to 'Used By' status of segments (#2543)

* add parent segments list to 'Used By' status of segments

* remove unused data binding

* update no-data message

* Add and display 'status' field of parent segments

* don't await response from csv export endpoint (#2552)

* add mooclet env vars to app-infrastructure.yml (#2555)

* add mooclet env vars to app-infrastructure.yml

* correct ssm value typos

* toggle mooclet on in frontend

* toggle mooclet on in frontend (#2564)

* toggle staging also (#2566)

* Feature/ff ephemeral user options (#2556) (#2573)

* ephemeral ff user groups and remove exposure id FK constraint

* ephemeral ff user groups and remove exposure id FK constraint

* remove comment from ff-exposure model

* use same language in usercheck middleware docs as swagger

* restore condition payload formatting on pagination response (#2574)

* split ScheduledJobService in two to avoid circular dependency (#2575)

* split ScheduledJobService in two to avoid circular dependency

* Update backend/packages/Upgrade/test/unit/services/ScheduledJobService.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update backend/packages/Upgrade/test/unit/services/MoocletExperimentService.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix test suite description for Experiment Scheduler Service

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* add example in add-metrics editor and a link to gitbook (#2581)

* add example in add-metrics editor and a link to gitbook

* remove typo

* filter out _REWARD metrics that do not belong to experiment (#2580)

* filter out _REWARD metrics that do not belong to experiment

* correct for add experiment flow

* clarify logic

* remove console log

* throw errors from axios mooclet requests; but not from deleting mooclet resources (#2582)

* Bump on-headers, compression, morgan and express-session (#2585)

---
updated-dependencies:
- dependency-name: on-headers
  dependency-version: 1.1.0
  dependency-type: indirect
- dependency-name: compression
  dependency-version: 1.8.1
  dependency-type: direct:production
- dependency-name: morgan
  dependency-version: 1.10.1
  dependency-type: direct:production
- dependency-name: express-session
  dependency-version: 1.18.2
  dependency-type: indirect
...

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

* Update Reward Metric Display (#2583)

* Update Reward Metric Display

* Make the key and value more distinct

* Refine Metrics table for displaying group metrics and categorical type

* Remove bullet from Key and Values

* Bump form-data from 4.0.0 to 4.0.4 in /k6

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.0 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.0...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump form-data from 4.0.1 to 4.0.4 in /backend/packages/Scheduler

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.1 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.1...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump on-headers and compression in /frontend (#2591)

Bumps [on-headers](https://github.com/jshttp/on-headers) and [compression](https://github.com/expressjs/compression). These dependencies needed to be updated together.

Updates `on-headers` from 1.0.2 to 1.1.0
- [Release notes](https://github.com/jshttp/on-headers/releases)
- [Changelog](https://github.com/jshttp/on-headers/blob/master/HISTORY.md)
- [Commits](jshttp/on-headers@v1.0.2...v1.1.0)

Updates `compression` from 1.8.0 to 1.8.1
- [Release notes](https://github.com/expressjs/compression/releases)
- [Changelog](https://github.com/expressjs/compression/blob/master/HISTORY.md)
- [Commits](expressjs/compression@1.8.0...v1.8.1)

---
updated-dependencies:
- dependency-name: on-headers
  dependency-version: 1.1.0
  dependency-type: indirect
- dependency-name: compression
  dependency-version: 1.8.1
  dependency-type: indirect
...

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

* clone lists on duplicate (#2588)

* Use new 'repeated_enrollment' table for within-subject experiments (#2559)

* Use new 'repeated_enrollment' table for within-subject experiments

* Update backend/packages/Upgrade/test/integration/ExperimentStats/WithinSubjectEnrollment.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* use relative paths

* fix postgres text case return values

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Bump form-data from 4.0.0 to 4.0.4 in /clientlibs/js

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.0 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.0...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump form-data in /backend/packages/Upgrade (#2604)

Bumps  and [form-data](https://github.com/form-data/form-data). These dependencies needed to be updated together.

Updates `form-data` from 4.0.1 to 4.0.4
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.1...v4.0.4)

Updates `form-data` from 2.5.2 to 4.0.4
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.1...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

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

* Resolve segment options not showing in experiment participants include table (#2609)

* fix: resolve segment options not showing in experiment participants include table

* Remove redundant bindParticipantsData call from ngOnInit

* perform all metrics queries in a single transaction (#2610)

* perform all metrics queries in a single transaction

* Update backend/packages/Upgrade/test/unit/services/QueryService.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Bump form-data from 4.0.1 to 4.0.4 in /frontend

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.1 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.1...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump sha.js from 2.4.11 to 2.4.12 in /backend/packages/Upgrade

Bumps [sha.js](https://github.com/crypto-browserify/sha.js) from 2.4.11 to 2.4.12.
- [Changelog](https://github.com/browserify/sha.js/blob/master/CHANGELOG.md)
- [Commits](browserify/sha.js@v2.4.11...v2.4.12)

---
updated-dependencies:
- dependency-name: sha.js
  dependency-version: 2.4.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump multer and routing-controllers in /backend/packages/Upgrade (#2620)

Bumps [multer](https://github.com/expressjs/multer) to 2.0.2 and updates ancestor dependency [routing-controllers](https://github.com/typestack/routing-controllers). These dependencies need to be updated together.


Updates `multer` from 1.4.5-lts.1 to 2.0.2
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](expressjs/multer@v1.4.5-lts.1...v2.0.2)

Updates `routing-controllers` from 0.11.2 to 0.11.3
- [Release notes](https://github.com/typestack/routing-controllers/releases)
- [Changelog](https://github.com/typestack/routing-controllers/blob/develop/CHANGELOG.md)
- [Commits](typestack/routing-controllers@v0.11.2...v0.11.3)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.0.2
  dependency-type: indirect
- dependency-name: routing-controllers
  dependency-version: 0.11.3
  dependency-type: direct:production
...

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

* Bump tmp and @inquirer/editor in /frontend (#2619)

Removes [tmp](https://github.com/raszi/node-tmp). It's no longer used after updating ancestor dependency [@inquirer/editor](https://github.com/SBoudrias/Inquirer.js). These dependencies need to be updated together.


Removes `tmp`

Updates `@inquirer/editor` from 4.2.6 to 4.2.17
- [Release notes](https://github.com/SBoudrias/Inquirer.js/releases)
- [Commits](https://github.com/SBoudrias/Inquirer.js/compare/@inquirer/editor@4.2.6...@inquirer/editor@4.2.17)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 
  dependency-type: indirect
- dependency-name: "@inquirer/editor"
  dependency-version: 4.2.17
  dependency-type: indirect
...

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

* clientlibs: check for cached data in assign and ff calls (#2615)

* clientlibs: check for cached data in assign and ff calls

* Update clientlibs/js/src/UpGradeClient/UpgradeClient.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update clientlibs/js/src/UpGradeClient/UpgradeClient.spec.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* clientlib versions to 6.1.2; update java README (#2634)

* add back files needed for client publish github action (#2637)

* Merge release 6.1 into dev (#2636)

* update env toggle for staging and prod (#2454)

* increase max subsegment depth to 8 (#2462)

* remove joins from findOneSegmentByContextAndType (#2467)

* skip duplicate check for private segments on upsert (#2472)

* put changelog.md for release notes in repo (#2463)

* remove sorting by status from global exclude list (#2476)

* Exclude user with no working group data if there are global group excludes (#2502)

* Auto-remove leading/trailing spaces from user-entered payloads (#2534)

* Feature/ff ephemeral user options (#2556)

* ephemeral ff user groups and remove exposure id FK constraint

* ephemeral ff user groups and remove exposure id FK constraint

* remove comment from ff-exposure model

* use same language in usercheck middleware docs as swagger

* mooclet configs on for staging (#2565)

* recommit

---------

Co-authored-by: Ben Blanchard <bblanchard@carnegielearning.com>
Co-authored-by: Zack Lee <90279765+zackcl@users.noreply.github.com>

* generate new readme (#2641)

* Move tests to jenkins ci (#2639)

* move tests from pre-commit  to jenkinsfile

* lint all the things

* Clear group type when unit of assignment is not Group (#2645)

* Bump axios from 1.8.2 to 1.12.0 in /clientlibs/js (#2652)

Bumps [axios](https://github.com/axios/axios) from 1.8.2 to 1.12.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.8.2...v1.12.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.12.0
  dependency-type: direct:production
...

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

* Bump axios from 1.8.2 to 1.12.2 in /backend/packages/Upgrade (#2653)

Bumps [axios](https://github.com/axios/axios) from 1.8.2 to 1.12.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.8.2...v1.12.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.12.2
  dependency-type: direct:production
...

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

* move jaxb.ws.rs to Jakarta and bump Jersey to 3 (#2654)

* Update clientlibs/java jaxb.ws.rs to Jakarta and bump Jersey to 3

---------

Co-authored-by: doswalt <doswalt@carnegielearning.com>
Co-authored-by: danoswaltCL <97542869+danoswaltCL@users.noreply.github.com>
Co-authored-by: Matt McHenry <mmchenry@carnegielearning.com>

* validate group and group assignment unit agreement in experiment import, add, and update (#2649)

* fix data exports for within-subject experiments (#2605)

* fix data exports for within-subject experiments

* remove unused method; simplify variable

* remove enrollmentComplete experiments from pools unless already enrolled (#2670)

* remove enrollmentComplete experiments from pools unless already enrolled

* Update backend/packages/Upgrade/test/unit/services/ExperimentAssignmentService.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* no multiple assignment per decision point

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add Docker build support for the demo app (#2658)

* Update demo-app.js script and add Docker build support

* Fix the frontend settings to work on /upgrade path for the demo app

* Revert changes made to demo-app.js

* Force user role to Creator when APP_DEMO is true (#2675)

* force user role to Admin when APP_DEMO is true

* force user role to Creator when APP_DEMO is true

* Preverve the admin role on demo mode

* Revert "Preverve the admin role on demo mode"

This reverts commit b21fed9.

* Add batch assign endpoint and functionality (#2613)

* Add batch assign endpoint and functionality

* remove console log and fix reference issue

* remove filtering within-subject experiments

* fix conditionals

* remove 404

* remove extra vars from tests; add return type to method

* refactor methods for readability

* DRY assign methods

* return 'NOT_FOUND' for users that are...not found

* Fix/nav on detail url id segment change (#2677)

* hash navigation helper

* manually tell router to navigate when hashchangeevent fires

* add new parameters to processExperimentPools() in getBatchExperimentConditions() (#2684)

* Bump tar-fs from 2.1.3 to 2.1.4 in /backend/packages/Upgrade (#2683)

Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 2.1.3 to 2.1.4.
- [Commits](mafintosh/tar-fs@v2.1.3...v2.1.4)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 2.1.4
  dependency-type: indirect
...

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

* nav to detail on create, pip exp count if 0 on getExperimentId success, rename confusing observable (#2676)

* add 6.2 release notes (#2685)

* Feature/ts client lib 6 2 (#2686)

* add 6.2 release notes

* get ts client lib version aligned w release version

* update packages to 6.3 (#2687)

* use custom data source for transaction (#2688)

* use custom data source for transaction

* fix test

* use custom data source for transaction (#2688) (#2689)

* use custom data source for transaction

* fix test

* remove transaction from metrics log queries (#2690)

* use transaction entity manager in metrics log queries

* remove transaction

* Update backend/packages/Upgrade/src/api/repositories/LogRepository.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* do not wait for export to finish (#2691)

* toggle within-subjects true for staging tests, mooclet true in prod file (#2692)

* optimize export log query and service method (#2694)

* optimize export log query and service method

* Update backend/packages/Upgrade/src/api/services/AnalyticsService.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update backend/packages/Upgrade/src/api/services/AnalyticsService.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update backend/packages/Upgrade/src/api/services/AnalyticsService.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* use "upgrade-ci" task definition and run integration tests

* change to trigger tests

* set test host to 'localhost'

* Update backend/packages/Upgrade/src/api/services/ExperimentAssignmentService.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Bump validator from 13.12.0 to 13.15.20 in /types (#2706)

Bumps [validator](https://github.com/validatorjs/validator.js) from 13.12.0 to 13.15.20.
- [Release notes](https://github.com/validatorjs/validator.js/releases)
- [Changelog](https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md)
- [Commits](validatorjs/validator.js@13.12.0...13.15.20)

---
updated-dependencies:
- dependency-name: validator
  dependency-version: 13.15.20
  dependency-type: indirect
...

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

* Bump koa from 3.0.1 to 3.0.3 in /backend/packages/Upgrade (#2700)

Bumps [koa](https://github.com/koajs/koa) from 3.0.1 to 3.0.3.
- [Release notes](https://github.com/koajs/koa/releases)
- [Changelog](https://github.com/koajs/koa/blob/master/History.md)
- [Commits](koajs/koa@v3.0.1...v3.0.3)

---
updated-dependencies:
- dependency-name: koa
  dependency-version: 3.0.3
  dependency-type: indirect
...

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

* Bump validator from 13.12.0 to 13.15.20 in /frontend (#2711)

Bumps [validator](https://github.com/validatorjs/validator.js) from 13.12.0 to 13.15.20.
- [Release notes](https://github.com/validatorjs/validator.js/releases)
- [Changelog](https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md)
- [Commits](validatorjs/validator.js@13.12.0...13.15.20)

---
updated-dependencies:
- dependency-name: validator
  dependency-version: 13.15.20
  dependency-type: indirect
...

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

* Bump typeorm from 0.3.20 to 0.3.26 in /backend/packages/Upgrade (#2709)

Bumps [typeorm](https://github.com/typeorm/typeorm) from 0.3.20 to 0.3.26.
- [Release notes](https://github.com/typeorm/typeorm/releases)
- [Changelog](https://github.com/typeorm/typeorm/blob/master/CHANGELOG.md)
- [Commits](typeorm/typeorm@0.3.20...0.3.26)

---
updated-dependencies:
- dependency-name: typeorm
  dependency-version: 0.3.26
  dependency-type: direct:production
...

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

* Display the menu button on the details page to non-Reader roles (#2713)

* Feature/2524 experiment redesign backend 1 (#2538)

* Revert adding 'filtered total' for experiments

* add experiment list endpoints

* copilot review changes

* add swagger annotations and endpoint tests

* Implement experiments root page component and navigation (#2546)

* Implement experiment root section card component (#2549)

* Implement experiment root section card table component (#2553)

* Implement experiment root section card component

* Implement experiment root section card table component

* Fix searching on status

* Implement upsert experiment modal component (#2558)

* Implement upsert experiment modal component

* Resolve all comments

* Remove mistake part

* show experiment list actions in audit logs (#2570)

* show experiment list actions in audit logs

* Update frontend/projects/upgrade/src/app/features/dashboard/logs/components/timeline/timeline.component.html

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* add endpoints for importing and exporting experiment exclusion and in… (#2587)

* add endpoints for importing and exporting experiment exclusion and inclusion lists

* Update backend/packages/Upgrade/src/api/services/ExperimentService.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update backend/packages/Upgrade/src/api/controllers/ExperimentController.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update backend/packages/Upgrade/src/api/controllers/ExperimentController.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* more specific typing

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Implement experiment details page (#2563)

* Implement experiment details page

* Remove mistake part

* Make experiment details page navigation work

* Update ExperimentOverviewDetailsSectionCardComponent and ExperimentDetailsPageContentComponent

* Refine selectExperimentOverviewDetails and update CommonTabbedSectionCardFooterComponent

* Refine experiment details section card components

* Refine en.json file

* Update UpsertExperimentModalComponent to send requests with valid experiment data

* Disable Factorial Experiment Type for v2

* Refactor nested ternaries

* Add strongly-typed DTO interfaces for experiment requests

* Update timeLog type in ExperimentStateTimeLogDTO

* Update ExperimentConditionPayloadDTO to match backend

* Remove redundant comments

* Implement decision points table components (#2599)

* Implement decision points table components

* Remove unused ngOnInit

* Implement conditions table components (#2600)

* Implement decision points table components

* Remove unused ngOnInit

* Implement conditions table component

* Refine the ExperimentConditionsTableComponent

* Remove redundant check

* convert to new list format for all endpoints (#2614)

* Implement experiment include list table component (#2601)

* Implement experiment include list table component

* Refine the inclusions table component

* Implement Include All toggle feature

* Fix the empty Type cell after disabling Include All toggle

* remove redundant API call in updateFilterMode method

* Remove listType preservation

* Simplify the updateFilterMode function

* Implement experiment exclude list table component  (#2612)

* Implement experiment include list table component

* Refine the inclusions table component

* Implement Include All toggle feature

* Fix the empty Type cell after disabling Include All toggle

* remove redundant API call in updateFilterMode method

* Implement experiment exclude list table component

* Disable the slide toggle and action buttons on inclusion table when update permission is now allowed

* Implement experiment metrics table component (#2622)

* Implement experiment metrics table component

* Fix the statistic order for categorical metrics

* Update table row styles

* add experiment list modals and functionality (#2638)

* add experiment list modals and functionality

* Update frontend/projects/upgrade/src/app/core/experiments/store/experiments.reducer.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update frontend/projects/upgrade/src/app/core/experiments/store/experiments.reducer.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* add missing text values

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* add edit-condition-weights modal (#2646)

* add edit-condition-weights modal

* Update frontend/projects/upgrade/src/app/features/dashboard/experiments/modals/edit-condition-weights-modal/edit-condition-weights-modal.component.spec.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove inaccurate comment

* tighten css

* changes to get closer to the spec

* remove unneeded things

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Implement Upsert Decision Point Modal for Experiments (#2633)

* Add upsert decision point modal component

* Implement sendUpsertDecisionPointRequest for Add/Edit Decision Point modal

* Create decision-point-helper.service.ts and implement the Delete Decision Point modal

* Remove unneeded experimentContext input

* Remove redundant fallback

* refactor: add context validation and improve ternary readability

* Fix duplicated import

* condition edit/add/delete modal

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove redundant duplicate check

* remove payload from conditions table (#2704)

* remove payload from conditions table

* fix columns

* fix preexisting typecheck and missed unit tests

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Zack Lee <90279765+zackcl@users.noreply.github.com>
Co-authored-by: Ben Blanchard <bblanchard@carnegielearning.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: ddenniston <106688763+ddenniston@users.noreply.github.com>
Co-authored-by: Matt McHenry <mmchenry@carnegielearning.com>
Co-authored-by: Zack Lee <zlee@carnegielearning.com>
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.

Remove EnrollmentComplete experiments from pool if the user is not already enrolled

3 participants