Skip to content
Merged

Dev #3105

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
563e4cf
Merge pull request #2963 from bcgov/dev
JamesPasta Sep 17, 2026
39ce0b5
Merge pull request #2975 from bcgov/dev
JamesPasta Sep 18, 2026
1834152
Merge pull request #2977 from bcgov/dev
JamesPasta Sep 18, 2026
9b745e9
Merge pull request #2984 from bcgov/dev
JamesPasta Sep 22, 2026
0920d31
Merge pull request #2986 from bcgov/dev
JamesPasta Sep 22, 2026
4c25da3
Merge pull request #2990 from bcgov/dev
JamesPasta Sep 22, 2026
5c07de6
Merge pull request #2992 from bcgov/dev
JamesPasta Sep 22, 2026
39546b3
Merge pull request #2995 from bcgov/dev
JamesPasta Sep 24, 2026
a9df1ba
Merge pull request #2997 from bcgov/dev
JamesPasta Sep 24, 2026
cb783ed
Merge pull request #3000 from bcgov/dev
JamesPasta Sep 25, 2026
3a12c40
Merge pull request #3002 from bcgov/dev
JamesPasta Sep 25, 2026
6de7c70
Merge pull request #3012 from bcgov/dev
JamesPasta Sep 28, 2026
ad1e0e1
Merge pull request #3015 from bcgov/dev
JamesPasta Sep 29, 2026
9779284
Merge pull request #3017 from bcgov/dev
JamesPasta Sep 29, 2026
a2105fb
Merge pull request #3019 from bcgov/dev
JamesPasta Sep 29, 2026
f1e7e7c
Merge pull request #3035 from bcgov/dev
JamesPasta Oct 2, 2026
8630d8a
Merge pull request #3037 from bcgov/dev
JamesPasta Oct 2, 2026
14c743e
Merge pull request #3044 from bcgov/dev
JamesPasta Oct 2, 2026
3592306
Merge pull request #3050 from bcgov/dev
JamesPasta Oct 2, 2026
2aeb536
Merge pull request #3057 from bcgov/test
DarylTodosichuk Oct 7, 2026
5cbc185
[AB#34424] Show inline field validation in Compose & Send Email revie…
nikhila-aot Oct 13, 2026
b16bcd4
feature/AB#34582-TightenApi
JamesPasta Oct 14, 2026
6f1806e
Merge branch 'dev' into bugfix/AB#34424-ComposeEmail-To-Field-Validation
nikhila-aot Oct 14, 2026
70c0de2
feature/AB#34582-TightenApi-Copilot
JamesPasta Oct 14, 2026
127b39b
changes to fix total currency summary issue
nikhila-aot Oct 14, 2026
6486c0a
[AB#34424] Ignore programmatic change events when loading an application
nikhila-aot Oct 14, 2026
b6eac16
AB#33423: Fix Cross-Site Scripting in Notification Preview
aurelio-aot Oct 14, 2026
ef3d1a3
AB#33423: Fix Cross-Site Scripting on Scoresheet Select List
aurelio-aot Oct 14, 2026
050f8dc
Merge pull request #3090 from bcgov/bugfix/AB#34424-ComposeEmail-To-F…
JamesPasta Oct 14, 2026
fd155e4
AB#33423: Fix Cross-Site Scripting on View Name
aurelio-aot Oct 14, 2026
7594868
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 14, 2026
89b9033
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 14, 2026
b949326
AB#33423: Fix Cross-Site Scripting on Scoresheet Title
aurelio-aot Oct 14, 2026
7316922
[AB#34470] Log a count of members not found in Metabase, not email ha…
DarylTodosichuk Oct 14, 2026
33e954d
AB#33423: Fix cross-site scripting on worksheet name in import json file
aurelio-aot Oct 14, 2026
10816bf
AB#33423: Fix cross-site scripting on attachment name
aurelio-aot Oct 14, 2026
72d4b7d
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 14, 2026
127efc2
AB#33423: Fix sonarqube issues
aurelio-aot Oct 14, 2026
546f66e
feature/AB#34582-TightenApi-Queue-Retry
JamesPasta Oct 14, 2026
1d2ca3b
AB#33423: Fix sonarqube issues
aurelio-aot Oct 14, 2026
72845ab
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 14, 2026
2bc83a9
Merge branch 'dev' into bugfix/AB#33423-XSS-On-Widget-Refresh
aurelio-aot Oct 14, 2026
b908f56
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 14, 2026
b3c3255
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 14, 2026
a89a24e
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 14, 2026
c8bf58c
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 14, 2026
01cf079
Merge pull request #3094 from bcgov/bugfix/AB#33423-XSS-On-Widget-Ref…
JamesPasta Oct 14, 2026
2121dd1
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 14, 2026
423db8e
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 15, 2026
ad0b9b8
Merge branch 'dev' into bugfix/AB#34380-total-currency-sum
nikhila-aot Oct 15, 2026
a453415
Potential fix for pull request finding 'Concurrent retry publishing s…
JamesPasta Oct 15, 2026
fde5399
Merge pull request #3093 from bcgov/feature/AB#34470-metabase-tenant-…
JamesPasta Oct 15, 2026
f9a0aca
Merge pull request #3095 from bcgov/bugfix/AB#34380-total-currency-sum
JamesPasta Oct 15, 2026
50aeebf
Bump dompurify
dependabot[bot] Oct 15, 2026
4ce698b
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 15, 2026
b08a389
Merge pull request #3100 from bcgov/bugfix/AB#3333-DependaBotCodeQL
JamesPasta Oct 15, 2026
f61749f
Merge branch 'dev' into feature/AB#34582-TightenAPISecurity
JamesPasta Oct 15, 2026
6dd8c3b
Merge pull request #3101 from bcgov/bugfix/AB#3333-DepandaBotQL
JamesPasta Oct 15, 2026
735fd36
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 15, 2026
40733d3
Merge branch 'feature/AB#34582-TightenAPISecurity' of https://github.…
JamesPasta Oct 15, 2026
4e7e978
feature/AB#34582-TightenApi-Co-Pilot-UnitTestFix
JamesPasta Oct 16, 2026
55d8c8a
Merge branch 'dev' into feature/AB#34582-TightenAPISecurity
JamesPasta Oct 16, 2026
4c60b16
feature/AB#34582-TightenApi-Co-Pilot-UnitTestFix
JamesPasta Oct 16, 2026
c50c667
Merge branch 'feature/AB#34582-TightenAPISecurity' of https://github.…
JamesPasta Oct 16, 2026
9ee59e8
feature/AB#34582-TightenApi-Co-Pilot-UnitTestFix
JamesPasta Oct 16, 2026
3d9e7b6
changes to include additional contact in the email template
nikhila-aot Oct 16, 2026
d1b5cb4
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 16, 2026
6c260cc
Merge pull request #3103 from bcgov/bugfix/AB#34073-additional-contact
JamesPasta Oct 16, 2026
a843c3d
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 16, 2026
5f3cf7c
feature/AB#34582-TightenApi-Co-Pilot
JamesPasta Oct 16, 2026
3bb58a5
Merge pull request #3104 from bcgov/feature/AB#34582-TightenAPISecurity
JamesPasta Oct 16, 2026
0129e7f
feature/AB#34571-AuditSearchFixed
JamesPasta Oct 16, 2026
259ef37
feature/AB#34571-AuditSearchIssues
JamesPasta Oct 16, 2026
b5b4935
feature/AB#34571-AuditSearchFixed
JamesPasta Oct 16, 2026
84c709e
feature/AB#34571-AuditSearchFixed
JamesPasta Oct 16, 2026
c1b03c9
feature/AB#34571-AuditSearchIssues
JamesPasta Oct 16, 2026
c7ed7d0
Merge pull request #3106 from bcgov/feature/AB#34571-AuditSearchingBug
JamesPasta Oct 16, 2026
702752f
feature/AB#34571-AuditSearchFixed-FixDeploy
JamesPasta Oct 16, 2026
b247ad5
Merge pull request #3108 from bcgov/feature/AB#34571-AuditSearchingBug
JamesPasta Oct 16, 2026
70f8148
[AB#33898] Upgrade NPOI package versions in project files
plavoie-BC Oct 16, 2026
c1ab556
[AB#33898] Update AutoUI selectors report
plavoie-BC Oct 16, 2026
a6de922
Merge pull request #3109 from bcgov/feature/AB#33898-upgrade-packages
JamesPasta Oct 16, 2026
9e0515b
feature/AB#34571-AuditSearchFixed-FixDeploy
JamesPasta Oct 16, 2026
ead654e
Merge pull request #3110 from bcgov/feature/AB#34571-FixEmailTemplateID
JamesPasta Oct 16, 2026
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
16 changes: 9 additions & 7 deletions applications/Unity.AutoUI/cypress/selectors/registry.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schemaVersion": 2,
"mode": "report-only",
"generatedAt": "2026-10-08T20:47:48.557Z",
"generatedAt": "2026-10-16T22:08:25.092Z",
"summary": {
"total": 364,
"matched": 150,
Expand Down Expand Up @@ -1789,11 +1789,11 @@
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260902202447_AddEmailAddressDefault.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260917183045_AddTemplateTypes.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260928201123_LimitEmailTemplateNameLength.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20261015221241_AddScheduledNotificationTemplateConstraint.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Pages/GrantApplications/Details.cshtml",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Pages/GrantApplications/Details.js",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentResultAttachments/AssessmentResultAttachments.js",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/Default.cshtml"
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentResultAttachments/AssessmentResultAttachments.js"
]
},
{
Expand Down Expand Up @@ -1852,6 +1852,7 @@
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260902202447_AddEmailAddressDefault.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260917183045_AddTemplateTypes.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260928201123_LimitEmailTemplateNameLength.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20261015221241_AddScheduledNotificationTemplateConstraint.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Pages/AssigneeSelection/AssigneeSelectionModal.cshtml"
]
Expand Down Expand Up @@ -3256,11 +3257,11 @@
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260902202447_AddEmailAddressDefault.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260917183045_AddTemplateTypes.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260928201123_LimitEmailTemplateNameLength.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20261015221241_AddScheduledNotificationTemplateConstraint.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Pages/ApplicantHistory/ReportsHistoryModalViewModel.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/ApplicantHistory/Default.js",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/CustomFields/Default.js",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/PaymentConfiguration/Default.js"
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/CustomFields/Default.js"
]
},
{
Expand Down Expand Up @@ -3539,10 +3540,10 @@
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260902202447_AddEmailAddressDefault.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260917183045_AddTemplateTypes.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260928201123_LimitEmailTemplateNameLength.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20261015221241_AddScheduledNotificationTemplateConstraint.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Pages/GrantApplications/Index.js",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/ApplicantSubmissions/Default.js",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentResults/Default.js"
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/ApplicantSubmissions/Default.js"
]
},
{
Expand Down Expand Up @@ -3872,6 +3873,7 @@
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260902202447_AddEmailAddressDefault.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260917183045_AddTemplateTypes.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20260928201123_LimitEmailTemplateNameLength.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20261015221241_AddScheduledNotificationTemplateConstraint.Designer.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs",
"applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/ApplicantInfo/Default.js"
]
Expand Down
3 changes: 2 additions & 1 deletion applications/Unity.GrantManager/common.props
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<Target Name="NoWarnOnRazorViewImportedTypeConflicts" BeforeTargets="RazorCoreCompile">
<PropertyGroup>
<NoWarn>$(NoWarn);0436</NoWarn>
<NoWarn>$(NoWarn);NU1510</NoWarn>
</PropertyGroup>
</Target>

Expand All @@ -24,7 +25,7 @@
<!-- System.Security.Cryptography.Xml 8.0.2 (pulled in transitively) has several known high
severity vulnerabilities; pin to the same patched version already used directly by
Unity.AI.Application so every project importing common.props gets the safe version. -->
<PackageReference Include="System.Security.Cryptography.Xml" Version="10.0.10" />
<PackageReference Include="System.Security.Cryptography.Xml" Version="10.0.13" />
</ItemGroup>

</Project>
7 changes: 7 additions & 0 deletions applications/Unity.GrantManager/global.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"sdk": {
"version": "10.0.303",
"rollForward": "latestFeature",
"allowPrerelease": false
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<RootNamespace>Unity.AI</RootNamespace>
<AcceptNPOIOSMFLicense>true</AcceptNPOIOSMFLicense>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.10" />
<PackageReference Include="Azure.AI.OpenAI" Version="2.1.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
<PackageReference Include="NPOI" Version="2.7.5" />
<PackageReference Include="SixLabors.ImageSharp" Version="2.1.13" />
<PackageReference Include="PdfPig" Version="0.1.15" />
<PackageReference Include="NPOI" Version="2.8.1" />
<PackageReference Include="PdfPig" Version="0.1.16" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="10.5.0" />
<PackageReference Include="Volo.Abp.Mapperly" Version="10.5.0" />
<PackageReference Include="Riok.Mapperly" Version="4.3.1" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ internal async Task<WriteDataRowResponse> UpdateRowAsync(RowInputData rowInputDa
};
}

internal async Task DeleteRowAsync(Guid valueId, uint row, Guid worksheetInstanceId)
public async Task DeleteRowAsync(Guid valueId, uint row, Guid worksheetInstanceId)
{
var currentValue = await customFieldValueAppService.GetAsync(valueId);
var dataGridValue = DataGridServiceUtils.DeserializeDataGridValue(currentValue.CurrentValue);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,23 @@
<input type="@Model.Field?.Type.ConvertInputType()"
id="@optionId"
name="@optionId"
onchange="@($"notifyFieldChange('{Model.Name}', '{Model.Field?.UiAnchor}', this)")"
data-worksheet-name="@Model.Name"
data-ui-anchor="@Model.Field?.UiAnchor"
onchange="notifyFieldChange(this.dataset.worksheetName, this.dataset.uiAnchor, this)"
checked />
}
else
{
<input type="@Model.Field?.Type.ConvertInputType()"
id="@optionId"
name="@optionId"
onchange="@($"notifyFieldChange('{Model.Name}','{Model.Field?.UiAnchor}', this)")" />
data-worksheet-name="@Model.Name"
data-ui-anchor="@Model.Field?.UiAnchor"
onchange="notifyFieldChange(this.dataset.worksheetName, this.dataset.uiAnchor, this)" />
}
<label for="@optionId">@($"{option.Label}")</label>
</div>
}
}
</fieldset>
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,20 @@
<input type="@Model.Field?.Type.ConvertInputType()"
id="@fieldId"
name="@fieldId"
onchange="@($"notifyFieldChange('{Model.Name}', '{Model.Field?.UiAnchor}', this)")"
data-worksheet-name="@Model.Name"
data-ui-anchor="@Model.Field?.UiAnchor"
onchange="notifyFieldChange(this.dataset.worksheetName, this.dataset.uiAnchor, this)"
checked />
}
else
{
<input type="@Model.Field?.Type.ConvertInputType()"
id="@fieldId"
name="@fieldId"
onchange="@($"notifyFieldChange('{Model.Name}', '{Model.Field?.UiAnchor}', this)")" />
data-worksheet-name="@Model.Name"
data-ui-anchor="@Model.Field?.UiAnchor"
onchange="notifyFieldChange(this.dataset.worksheetName, this.dataset.uiAnchor, this)" />
}
<label for="@fieldId">@($"{Model.Field?.Label}")</label>
</div>
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
placeholder="@Model.Field.Definition?.ConvertDefinition(Model.Field.Type)?.Placeholder"
id="@fieldId"
name="@fieldId"
onchange="@($"notifyFieldChange('{Model.Name}', '{Model.Field?.UiAnchor}', this)")"/>
data-worksheet-name="@Model.Name"
data-ui-anchor="@Model.Field?.UiAnchor"
onchange="notifyFieldChange(this.dataset.worksheetName, this.dataset.uiAnchor, this)"/>
<span id="@fieldId-error" class="text-danger field-validation-error"></span>
</div>
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ private IViewComponentResult GenerateGridView(WorksheetFieldViewModel fieldModel
Rows = [.. dataRows],
AllowEdit = true,
SummaryOption = ConvertSummaryOption(dataGridDefinition),
Summary = GenerateSummary([.. dataColumns], [.. dataRows], presentationSetttings),
Summary = GenerateSummary([.. dataColumns], dataGridRowsValue?.Rows ?? [], presentationSetttings),
TableOptions = GenerateAvailableTableOptions(!dataGridDefinition.Dynamic),
WorksheetId = worksheetId,
WorksheetInstanceId = worksheetInstanceId,
Expand Down Expand Up @@ -367,7 +367,7 @@ private static List<string> GenerateDynamicPlaceholderColumn()
}

private static DataGridViewSummary GenerateSummary(DataGridColumn[]? dataColumns,
DataGridViewModelRow[] rows,
List<DataGridRow> rows,
PresentationSettings presentationSettings)
{
var summary = new DataGridViewSummary();
Expand All @@ -386,10 +386,11 @@ private static DataGridViewSummary GenerateSummary(DataGridColumn[]? dataColumns
return summary;
}

private static string SumCells(string? key, DataGridViewModelRow[] rows)
// Sum the raw stored values - presentation-formatted values (e.g. "CA$ 567.00") do not parse back to decimals
private static string SumCells(string? key, List<DataGridRow> rows)
{
decimal sum = 0;
var cells = rows.Select(row => row.Cells.Find(x => x.Key == key)).Where(cell => cell != null);
var cells = rows.Select(row => row.Cells.Find(x => x.Key == key)).Where(cell => cell?.Value != null);
foreach (var cell in cells)
{
var preparse = cell!.Value.Replace("$", "").Replace(",", "");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
label="@Model.Field.Label"
id="@fieldId"
name="@fieldId"
onchange="@($"notifyFieldChange('{Model.Name}', '{Model.Field?.UiAnchor}', this)")" />
data-worksheet-name="@Model.Name"
data-ui-anchor="@Model.Field?.UiAnchor"
onchange="notifyFieldChange(this.dataset.worksheetName, this.dataset.uiAnchor, this)" />
</div>
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,7 @@
placeholder="@fieldDef?.Placeholder"
id="@fieldId"
name="@fieldId"
onchange="@($"notifyFieldChange('{Model.Name}', '{Model.Field.UiAnchor}', this)")" />
data-worksheet-name="@Model.Name"
data-ui-anchor="@Model.Field.UiAnchor"
onchange="notifyFieldChange(this.dataset.worksheetName, this.dataset.uiAnchor, this)" />
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public class QuestionSelectListViewModel : RequiredFieldViewModel
public Guid QuestionId { get; set; }
public bool IsDisabled { get; set; }
public string Answer { get; set; } = string.Empty;
public string Definition { get; set; } = "{}";
public new string Definition { get; set; } = "{}";
public bool IsHumanConfirmed { get; set; } = true;
public string? AICitation { get; set; }
public int? AIConfidence { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@
id="@optionId"
name="@fieldBaseName"
value="@($"{option.Value}")"
onchange="@($"notifyFieldChange('{Model.Name}', '{Model.Field?.UiAnchor}', this)")"
data-worksheet-name="@Model.Name"
data-ui-anchor="@Model.Field?.UiAnchor"
onchange="notifyFieldChange(this.dataset.worksheetName, this.dataset.uiAnchor, this)"
checked />
}
else
Expand All @@ -37,11 +39,13 @@
id="@optionId"
name="@fieldBaseName"
value="@($"{option.Value}")"
onchange="@($"notifyFieldChange('{Model.Name}', '{Model.Field?.UiAnchor}', this)")" />
data-worksheet-name="@Model.Name"
data-ui-anchor="@Model.Field?.UiAnchor"
onchange="notifyFieldChange(this.dataset.worksheetName, this.dataset.uiAnchor, this)" />
}
<label for="@optionId">@($"{option.Label}")</label>
}
</div>
}
</fieldset>
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,12 @@
<i class="fa-solid fa-upload"></i> <span>@L["Scoresheet:Configuration:PublishScoresheetButtonText"].Value</span>
</button>
}
<button id="export_scoresheet_btn" onclick="exportScoresheet('@scoresheet.Id','@scoresheet.Name','@scoresheet.Title');" class="btn btn-light" type="button">
<button id="export_scoresheet_btn"
data-scoresheet-id="@scoresheet.Id"
data-scoresheet-name="@scoresheet.Name"
data-scoresheet-title="@scoresheet.Title"
onclick="exportScoresheet(this.dataset.scoresheetId, this.dataset.scoresheetName, this.dataset.scoresheetTitle);"
class="btn btn-light" type="button">
<i class="fa-solid fa-file-export"></i> <span>@L["Scoresheet:Configuration:ExportScoresheetButtonText"].Value</span>
</button>
<button data-scoresheet-id="@scoresheet.Id" data-is-archived="false" class="btn btn-light archive-scoresheet-btn" type="button">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,9 @@ $(function () {
let optionsHTML = `<option data-numeric-value="0" value="">Please choose...</option>`;
optionsHTML += options.map(option => {
const truncatedValue = option.value.length > 100 ? option.value.substring(0, 100) + " ..." : option.value;
return `<option data-numeric-value="${option.numeric_value}" value="${option.value}" title="${option.value}">${truncatedValue}</option>`;
// Encode option text and attributes before the preview is parsed as HTML.
const escapedValue = escapeHtml(option.value);
return `<option data-numeric-value="${escapeHtml(option.numeric_value)}" value="${escapedValue}" title="${escapedValue}">${escapeHtml(truncatedValue)}</option>`;
}).join('');
let req = item.dataset.required === 'True' ? "required" : null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@
<select class="@Model.Field.Type.ApplyCssClass()"
id="@fieldId"
name="@fieldId"
onchange="@($"notifyFieldChange('{Model.Name}', '{Model.Field?.UiAnchor}', this)")">
data-worksheet-name="@Model.Name"
data-ui-anchor="@Model.Field?.UiAnchor"
onchange="notifyFieldChange(this.dataset.worksheetName, this.dataset.uiAnchor, this)">

@foreach (var item in ((SelectListDefinition?)Model.Field?.Definition?.ConvertDefinition(Model.Field.Type))?.Options ?? [])
{
<option selected="@Model.Field?.CurrentValue?.CompareSelectListKey(@item.Key)" value="@item.Key">@item.Value</option>
}

</select>
}
}
Loading
Loading