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
4 changes: 4 additions & 0 deletions ProgramInformationV2.Data/FieldList/CredentialGroup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public CredentialGroup() {
[FieldType.General] = "General information about the credential.",
[FieldType.Link] = "Control what links, images, and videos are added to the credential page.",
[FieldType.Overview] = "This information will be displayed on the credential page.",
[FieldType.CourseList] = "This information will be displayed with the typical plan of study.",
[FieldType.Transcriptable] = "This information shows transcriptable information (like majors, minors, etc.).",
[FieldType.Technical] = "Technical details used for internal purposes."
};
Expand All @@ -28,6 +29,9 @@ public CredentialGroup() {
new() { Title = "Credential Image", CategoryType = CategoryType.Credential, FieldType = FieldType.Link, InitialDescription = "This should link to an image that you would like featured on the program finder. You must add alternative text when linking an image." },
new() { Title = "Credential Image Alt Text", CategoryType = CategoryType.Credential, FieldType = FieldType.Link, InitialDescription = "Alternative text for the image." },
new() { Title = "Description", CategoryType = CategoryType.Credential, FieldType = FieldType.Overview, InitialDescription = "This text should describe the credential. It will be on the credential page." },
new() { Title = "Program Notes Title", CategoryType = CategoryType.Credential, FieldType = FieldType.Overview, InitialDescription = "This is a way to overwrite the program notes title, if you need to use a more descriptive term than 'Notes'." },
new() { Title = "Program Notes", CategoryType = CategoryType.Credential, FieldType = FieldType.Overview, InitialDescription = "This text has generic notes about the program, listed at the end of the page. Use this for disclaimers or additional information." },
new() { Title = "Plan of Study Introduction", CategoryType = CategoryType.Credential, FieldType = FieldType.CourseList, InitialDescription = "This text will be above the plan of study and contains important notes about the plan of study." },
new() { Title = "Is This Credential Transcriptable", CategoryType = CategoryType.Credential, FieldType = FieldType.Transcriptable },
new() { Title = "Transcriptable Name", CategoryType = CategoryType.Credential, FieldType = FieldType.Transcriptable, InitialDescription = "The name the credential will appear as on transcripts." },
new() { Title = "Major Title", CategoryType = CategoryType.Credential, FieldType = FieldType.Transcriptable, },
Expand Down
2 changes: 1 addition & 1 deletion ProgramInformationV2.Search/Getters/ProgramGetter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public async Task<SearchObject<Program>> GetPrograms(string source, string searc
f => departments.Any() ? f.Terms(m => m.Field(fld => fld.DepartmentList).Terms(departments)) : f.MatchAll(),
f => skills.Any() ? f.Terms(m => m.Field(fld => fld.SkillList).Terms(skills)) : f.MatchAll())
.Must(m => !string.IsNullOrWhiteSpace(search) ? m.MultiMatch(m => m.Fields(fld => fld.Field("title^10").Field("summarytext^5").Field("description^2").Field("whoshouldapply")).Query(search)) : m.MatchAll())))
.Sort(srt => string.IsNullOrWhiteSpace(search) ? srt.Ascending(f => f.TitleSortKeyword) : srt.Descending(f => SortSpecialField.Score))
.Sort(srt => string.IsNullOrWhiteSpace(search) ? srt.Ascending(f => f.TitleSortKeyword) : srt.Descending(SortSpecialField.Score))
.Suggest(a => a.Phrase("didyoumean", p => p.Text(search).Field(fld => fld.Title))));
LogDebug(response);

Expand Down
7 changes: 5 additions & 2 deletions ProgramInformationV2.Search/Models/Credential.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using System.Text.Json;
using OpenSearch.Client;
using OpenSearch.Client;
using System.Text.Json;

namespace ProgramInformationV2.Search.Models {

Expand Down Expand Up @@ -49,6 +49,9 @@ public Credential() {
public string MinorTitle { get; set; } = "";

public string Notes { get; set; } = "";
public string NoteTitle { get; set; } = "";

public string PlanOfStudyIntroduction { get; set; } = "";

[Keyword]
public string ProgramId { get; set; } = "";
Expand Down
4 changes: 0 additions & 4 deletions ProgramInformationV2.sln
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,6 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{64244983-1B95-4158-AAD6-313765A46B73}"
ProjectSection(SolutionItems) = preProject
README.md = README.md
.github\workflows\wigg-app-prod-course.yml = .github\workflows\wigg-app-prod-course.yml
.github\workflows\wigg-app-staging-course.yml = .github\workflows\wigg-app-staging-course.yml
.github\workflows\wigg-fun-prod-course.yml = .github\workflows\wigg-fun-prod-course.yml
.github\workflows\wigg-fun-staging-course.yml = .github\workflows\wigg-fun-staging-course.yml
EndProjectSection
EndProject
Global
Expand Down
2 changes: 1 addition & 1 deletion ProgramInformationV2/Components/Layout/MainLayout.razor
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<a slot="primary-unit" href="https://itpartners.illinois.edu/">IT Partners</a>
<a slot="site-name" href="/">Program / Course Repository</a>
<div slot="actions">
<a href="#">Report a Problem</a>
<a href="https://go.illinois.edu/itpartners-course-help">Report a Problem</a>
</div>
</ilw-footer>
</ilw-page>
2 changes: 1 addition & 1 deletion ProgramInformationV2/Components/Layout/SidebarLayout.razor
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
<a slot="primary-unit" href="https://itpartners.illinois.edu/">IT Partners</a>
<a slot="site-name" href="/">Program / Course Repository</a>
<div slot="actions">
<a href="#">Report a Problem</a>
<a href="https://go.illinois.edu/itpartners-course-help">Report a Problem</a>
</div>
</ilw-footer>
</ilw-page>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
<h1>Courses</h1>
<p>To add courses to a credential, you must add a requirement set. You may add an existing requirement set or create a new requirement set below.</p>

<h2>Plan of Study Introduction</h2>
<LargeText Title="Plan of Study Introduction" FieldItems="FieldItems" @bind-Value="CredentialItem.PlanOfStudyIntroduction"></LargeText>

<h2>Chosen Requirement Sets</h2>

@if (CredentialItem != null && RequirementSetList != null)
{
@foreach (var requirementset in ChosenRequirementSetList.Select((v, i) => (v, i)))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using ProgramInformationV2.Components.Layout;
using ProgramInformationV2.Data.DataHelpers;
using ProgramInformationV2.Data.DataModels;
using ProgramInformationV2.Data.FieldList;
using ProgramInformationV2.Data.PageList;
using ProgramInformationV2.Search.Getters;
using ProgramInformationV2.Search.Models;
Expand All @@ -13,6 +14,7 @@ namespace ProgramInformationV2.Components.Pages.Credential {

public partial class CourseList {
private SearchGenericItem _searchGenericItem = default!;
public IEnumerable<FieldItem> FieldItems { get; set; } = default!;

private string _sourceCode = "";
public List<GenericItem> ChosenRequirementSetList { get; set; } = default!;
Expand All @@ -31,6 +33,9 @@ public partial class CourseList {
[Inject]
protected CredentialGetter CredentialGetter { get; set; } = default!;

[Inject]
protected FieldManager FieldManager { get; set; } = default!;

[Inject]
protected IJSRuntime JsRuntime { get; set; } = default!;

Expand Down Expand Up @@ -122,6 +127,7 @@ protected override async Task OnInitializedAsync() {
}
}
Layout.SetSidebar(SidebarEnum.Credential, CredentialItem.TitlePlusCredential);
FieldItems = await FieldManager.GetMergedFieldItems(_sourceCode, new CredentialGroup(), FieldType.CourseList);
await GetRequirementSet();
await base.OnInitializedAsync();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<ilw-content>
<h1>Overview</h1>
<RichTextEditor @ref="@_rteDescription" Title="Description" FieldItems="FieldItems"></RichTextEditor>
<MediumText Title="Program Notes Title" FieldItems="FieldItems" @bind-Value="CredentialItem.NoteTitle"></MediumText>
<RichTextEditor @ref="@_rteProgramNotes" Title="Program Notes" FieldItems="FieldItems"></RichTextEditor>
@if (CredentialItem != null)
{
Expand Down
17 changes: 8 additions & 9 deletions ProgramInformationV2/Components/Pages/Home.razor
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@
<h3 id="sourcelabel-initial">Choose a Source</h3>
<p>You have access to multiple sources, so you must choose a source before editing programs, credentials, etc.</p>
<div slot="footer">
<select aria-labelledby="sourcelabel-initial" @onchange="(ChangeEventArgs e) => ChangeSource(e)">
<option value=""></option>
@foreach (var source in Sources)
{
<option value="@source.Key">@source.Value</option>
}
</select>
<select style="width: 100%;" aria-labelledby="sourcelabel-initial" @onchange="(ChangeEventArgs e) => ChangeSource(e)">
<option value=""></option>
@foreach (var source in Sources)
{
<option value="@source.Key">@source.Value</option>
}
</select>
</div>
</ilw-card>
}
Expand Down Expand Up @@ -92,7 +92,7 @@ else if (Sources != null)
<h3 id="sourcelabel">Choose another Source</h3>
<p>You have access to multiple sources, so you may choose a different source here.</p>
<div slot="footer">
<select aria-labelledby="sourcelabel" @onchange="(ChangeEventArgs e) => ChangeSource(e)">
<select style="width: 100%;" aria-labelledby="sourcelabel" @onchange="(ChangeEventArgs e) => ChangeSource(e)">
@foreach (var source in Sources)
{
<option value="@source.Key" selected="@(source.Key == SelectedSource)">@source.Value</option>
Expand All @@ -103,5 +103,4 @@ else if (Sources != null)
}
</ilw-grid>
</ilw-content>

}
13 changes: 4 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ This is the new Program Information for IT Partners, used to organize programs,
## Production location:

This consists of five applications:
* **ProgramInformationV2**: The Blazor server application to handle back-end functions. https://programcourse.itpartners.illinois.edu
* **ProgramInformationV2.Function**: The Function Application for the API. https://programcourseapi.itpartners.illinois.edu
* **ProgramInformationV2.LoadFromEdw**: A console application used to batch load items from EDW
* **ProgramInformationV2**: The Blazor server application to handle back-end functions. https://course.wigg.illinois.edu
* **ProgramInformationV2.Function**: The Function Application for the API. https://courseapi.wigg.illinois.edu.
* **ProgramInformationV2.Data**: The data access for all the processes
* **ProgramInformationV2.Search**: The data access for searching (accessing AWS OpenSearch Service)

Swagger API documentation is available at https://courseapi.wigg.illinois.edu/api/swagger/ui

## Development location:

Currently, none. We do development on local machines, and will host temporary sites when end users need to see development work.
Expand All @@ -37,12 +38,6 @@ Make sure the ProgramInformationV2 project is set up as the startup project befo

If you run into the issue "The certificate chain was issued by an authority that is not trusted.", then add **TrustServerCertificate=True** to the connection string.

### Console App

The console application is used to run batches of imports manually. This probably will be done once a semester. The two types of import batches are:
* Course Information. This uses the https://courses.illinois.edu/cisapp/explorer/schedule/ application to get courses by rubric and load them. This overwrites existing course information in the system.
* Faculty Names. This takes a list of names and does a mass change of faculty names to add NetIDs and URLs. The information can be pulled from the directory API using the attached HTML page.

## Code to delete the test items in the OpenSearch Service

``
Expand Down
Loading