Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ repos:
- ".*/generated/"
additional_dependencies: ["gibberish-detector"]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: "v0.6.5"
rev: "v0.6.6"
hooks:
- id: ruff-format
- id: ruff
Expand Down
6 changes: 6 additions & 0 deletions RELEASE.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
Release Notes
=============

Version 0.19.4
--------------

- new -> recently added (#1594)
- Pace and format fields for learning resources (#1588)

Version 0.19.3 (Released September 23, 2024)
--------------

Expand Down
152 changes: 152 additions & 0 deletions frontends/api/src/generated/v1/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -686,6 +686,18 @@ export interface CourseResource {
* @memberof CourseResource
*/
resource_category: string
/**
*
* @type {Array<CourseResourceFormatInner>}
* @memberof CourseResource
*/
format: Array<CourseResourceFormatInner>
/**
*
* @type {Array<CourseResourcePaceInner>}
* @memberof CourseResource
*/
pace: Array<CourseResourcePaceInner>
/**
*
* @type {CourseResourceResourceTypeEnum}
Expand Down Expand Up @@ -844,6 +856,62 @@ export const CourseResourceDeliveryInnerCodeEnum = {
export type CourseResourceDeliveryInnerCodeEnum =
(typeof CourseResourceDeliveryInnerCodeEnum)[keyof typeof CourseResourceDeliveryInnerCodeEnum]

/**
*
* @export
* @interface CourseResourceFormatInner
*/
export interface CourseResourceFormatInner {
/**
*
* @type {string}
* @memberof CourseResourceFormatInner
*/
code: CourseResourceFormatInnerCodeEnum
/**
*
* @type {string}
* @memberof CourseResourceFormatInner
*/
name: string
}

export const CourseResourceFormatInnerCodeEnum = {
Synchronous: "synchronous",
Asynchronous: "asynchronous",
} as const

export type CourseResourceFormatInnerCodeEnum =
(typeof CourseResourceFormatInnerCodeEnum)[keyof typeof CourseResourceFormatInnerCodeEnum]

/**
*
* @export
* @interface CourseResourcePaceInner
*/
export interface CourseResourcePaceInner {
/**
*
* @type {string}
* @memberof CourseResourcePaceInner
*/
code: CourseResourcePaceInnerCodeEnum
/**
*
* @type {string}
* @memberof CourseResourcePaceInner
*/
name: string
}

export const CourseResourcePaceInnerCodeEnum = {
SelfPaced: "self_paced",
InstructorPaced: "instructor_paced",
} as const

export type CourseResourcePaceInnerCodeEnum =
(typeof CourseResourcePaceInnerCodeEnum)[keyof typeof CourseResourcePaceInnerCodeEnum]

/**
* Serializer for course resources
* @export
Expand Down Expand Up @@ -1376,6 +1444,18 @@ export interface LearningPathResource {
* @memberof LearningPathResource
*/
resource_category: string
/**
*
* @type {Array<CourseResourceFormatInner>}
* @memberof LearningPathResource
*/
format: Array<CourseResourceFormatInner>
/**
*
* @type {Array<CourseResourcePaceInner>}
* @memberof LearningPathResource
*/
pace: Array<CourseResourcePaceInner>
/**
*
* @type {LearningPathResourceResourceTypeEnum}
Expand Down Expand Up @@ -2100,6 +2180,18 @@ export interface LearningResourceRun {
* @memberof LearningResourceRun
*/
delivery: Array<CourseResourceDeliveryInner>
/**
*
* @type {Array<CourseResourceFormatInner>}
* @memberof LearningResourceRun
*/
format: Array<CourseResourceFormatInner>
/**
*
* @type {Array<CourseResourcePaceInner>}
* @memberof LearningResourceRun
*/
pace: Array<CourseResourcePaceInner>
/**
*
* @type {string}
Expand Down Expand Up @@ -4049,6 +4141,18 @@ export interface PodcastEpisodeResource {
* @memberof PodcastEpisodeResource
*/
resource_category: string
/**
*
* @type {Array<CourseResourceFormatInner>}
* @memberof PodcastEpisodeResource
*/
format: Array<CourseResourceFormatInner>
/**
*
* @type {Array<CourseResourcePaceInner>}
* @memberof PodcastEpisodeResource
*/
pace: Array<CourseResourcePaceInner>
/**
*
* @type {PodcastEpisodeResourceResourceTypeEnum}
Expand Down Expand Up @@ -4395,6 +4499,18 @@ export interface PodcastResource {
* @memberof PodcastResource
*/
resource_category: string
/**
*
* @type {Array<CourseResourceFormatInner>}
* @memberof PodcastResource
*/
format: Array<CourseResourceFormatInner>
/**
*
* @type {Array<CourseResourcePaceInner>}
* @memberof PodcastResource
*/
pace: Array<CourseResourcePaceInner>
/**
*
* @type {PodcastResourceResourceTypeEnum}
Expand Down Expand Up @@ -4961,6 +5077,18 @@ export interface ProgramResource {
* @memberof ProgramResource
*/
resource_category: string
/**
*
* @type {Array<CourseResourceFormatInner>}
* @memberof ProgramResource
*/
format: Array<CourseResourceFormatInner>
/**
*
* @type {Array<CourseResourcePaceInner>}
* @memberof ProgramResource
*/
pace: Array<CourseResourcePaceInner>
/**
*
* @type {ProgramResourceResourceTypeEnum}
Expand Down Expand Up @@ -5786,6 +5914,18 @@ export interface VideoPlaylistResource {
* @memberof VideoPlaylistResource
*/
resource_category: string
/**
*
* @type {Array<CourseResourceFormatInner>}
* @memberof VideoPlaylistResource
*/
format: Array<CourseResourceFormatInner>
/**
*
* @type {Array<CourseResourcePaceInner>}
* @memberof VideoPlaylistResource
*/
pace: Array<CourseResourcePaceInner>
/**
*
* @type {VideoPlaylistResourceResourceTypeEnum}
Expand Down Expand Up @@ -6120,6 +6260,18 @@ export interface VideoResource {
* @memberof VideoResource
*/
resource_category: string
/**
*
* @type {Array<CourseResourceFormatInner>}
* @memberof VideoResource
*/
format: Array<CourseResourceFormatInner>
/**
*
* @type {Array<CourseResourcePaceInner>}
* @memberof VideoResource
*/
pace: Array<CourseResourcePaceInner>
/**
*
* @type {VideoResourceResourceTypeEnum}
Expand Down
18 changes: 18 additions & 0 deletions frontends/api/src/test-utils/factories/learningResources.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ import type {
import {
AvailabilityEnum,
DeliveryEnum,
CourseResourcePaceInnerCodeEnum,
CourseResourceFormatInnerCodeEnum,
ResourceTypeEnum,
LearningResourceRunLevelInnerCodeEnum,
PlatformEnum,
Expand Down Expand Up @@ -186,6 +188,22 @@ const learningResourceRun: Factory<LearningResourceRun> = (overrides = {}) => {
name: uniqueEnforcerWords.enforce(() => faker.lorem.words()),
},
],
pace: [
{
code: faker.helpers.arrayElement(
Object.values(CourseResourcePaceInnerCodeEnum),
),
name: uniqueEnforcerWords.enforce(() => faker.lorem.words()),
},
],
format: [
{
code: faker.helpers.arrayElement(
Object.values(CourseResourceFormatInnerCodeEnum),
),
name: uniqueEnforcerWords.enforce(() => faker.lorem.words()),
},
],
level: [
{
code: faker.helpers.arrayElement(
Expand Down
2 changes: 1 addition & 1 deletion frontends/mit-learn/src/page-components/Header/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ const navData: NavData = {
title: "DISCOVER LEARNING RESOURCES",
items: [
{
title: "New",
title: "Recently Added",
icon: <RiFileAddLine />,
href: SEARCH_NEW,
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,6 @@ import { ResourceCard } from "../ResourceCard/ResourceCard"
import { useSearchParams } from "@mitodl/course-search-utils/react-router"
import { useUserMe } from "api/hooks/user"

export const StyledSelect = styled(SimpleSelect)`
min-width: 160px;
`

const StyledResourceTabs = styled(ResourceCategoryTabs.TabList)`
margin-top: 0 px;
`
Expand Down Expand Up @@ -470,7 +466,7 @@ const SORT_OPTIONS = [
value: "",
},
{
label: "New",
label: "Recently Added",
value: "new",
},
{
Expand Down Expand Up @@ -596,7 +592,7 @@ const SearchDisplay: React.FC<SearchDisplayProps> = ({
}

const searchModeDropdown = (
<StyledSelect
<SimpleSelect
size="small"
value={searchParams.get("search_mode") || DEFAULT_SEARCH_MODE}
onChange={(e) =>
Expand All @@ -615,7 +611,7 @@ const SearchDisplay: React.FC<SearchDisplayProps> = ({
)

const sortDropdown = (
<StyledSelect
<SimpleSelect
size="small"
value={requestParams.sortby || ""}
onChange={(e) => setParamValue("sortby", e.target.value)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ import type {
BooleanFacetKey,
} from "@mitodl/course-search-utils"
import { BOOLEAN_FACET_NAMES } from "@mitodl/course-search-utils"
import { Skeleton, styled } from "ol-components"
import { Skeleton, styled, SimpleSelect } from "ol-components"
import type { SimpleSelectOption } from "ol-components"
import { StyledSelect } from "@/page-components/SearchDisplay/SearchDisplay"

const StyledSkeleton = styled(Skeleton)`
display: inline-flex;
Expand Down Expand Up @@ -117,7 +116,7 @@ const AvailableFacetsDropdowns: React.FC<

return (
facetItems.length && (
<StyledSelect
<SimpleSelect
key={facetSetting.name}
value={displayValue}
multiple={isMultiple}
Expand Down
14 changes: 14 additions & 0 deletions learning_resources/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -287,3 +287,17 @@ class CertificationType(ExtendedEnum):
professional = "Professional Certificate"
completion = "Certificate of Completion"
none = "No Certificate"


class Pace(ExtendedEnum):
"""Enum for resource pace types"""

self_paced = "Self-paced"
instructor_paced = "Instructor-paced"


class Format(ExtendedEnum):
"""Enum for resource format types"""

synchronous = "Synchronous"
asynchronous = "Asynchronous"
2 changes: 1 addition & 1 deletion learning_resources/etl/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
)


class ETLSource(Enum):
class ETLSource(ExtendedEnum):
"""Enum of ETL sources"""

micromasters = "micromasters"
Expand Down
Loading