diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Pages/GrantApplications/Details.cshtml b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Pages/GrantApplications/Details.cshtml
index 294997e16..3256376c6 100644
--- a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Pages/GrantApplications/Details.cshtml
+++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Pages/GrantApplications/Details.cshtml
@@ -70,8 +70,6 @@
-
-
}
diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/ReviewList/ReviewList.js b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/ReviewList/ReviewList.js
index e5368d36f..257407605 100644
--- a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/ReviewList/ReviewList.js
+++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/ReviewList/ReviewList.js
@@ -1,6 +1,6 @@
const l = abp.localization.getResource('GrantManager');
-const pageApplicationId = decodeURIComponent(document.querySelector("#DetailsViewApplicationId").value);
-const isAiScoringEnabled = document.querySelector("#ReviewListAIScoringEnabled")?.value === 'True';
+const pageApplicationId = decodeURIComponent(document.querySelector("#DetailsViewApplicationId")?.value ?? '');
+const isAiScoringEnabled = document.querySelector("#ReviewListAIScoringEnabled")?.value === 'True';
const canUseAiScoring = isAiScoringEnabled;
const actionButtonConfigMap = {
@@ -28,7 +28,7 @@ const finalApplicationStates = [
];
$(function () {
- const nullPlaceholder = '—';
+ const nullPlaceholder = '—';
let inputAction = function (requestData, dataTableSettings) {
const applicationId = pageApplicationId
@@ -76,7 +76,7 @@ $(function () {
}
});
- $.fn.dataTable.Api.register('row().selectWithParams()', function (params) {
+ $.fn.dataTable.Api.register('row().selectWithParams()', function (params) {
this.params = params;
return this.select();
});
@@ -255,7 +255,7 @@ $(function () {
$("#AdjudicationTeamLeadActionBar .dt-buttons").contents().unwrap();
updateAiActionButtonsVisibility(reviewListTable);
- reviewListTable.on('select', function (e, dt, type, indexes) {
+ reviewListTable.on('select', function (e, dt, type, indexes) {
handleRowSelection(e, dt, type, indexes, reviewListTable);
});
@@ -263,9 +263,9 @@ $(function () {
handleRowDeselection(e, dt, type, indexes, reviewListTable);
});
- PubSub.subscribe('refresh_review_list', (msg, data) => {
- refreshReviewList(data, reviewListTable);
- });
+ PubSub.subscribe('refresh_review_list', (msg, data) => {
+ refreshReviewList(data, reviewListTable);
+ });
PubSub.subscribe('refresh_review_list_without_sidepanel', (msg, data) => {
refreshReviewList(data, reviewListTable, false);
@@ -294,7 +294,7 @@ function handleRowSelection(e, dt, type, indexes, reviewListTable) {
if (type === 'row') {
let selectedData = reviewListTable.row(indexes).data();
document.getElementById("AssessmentId").value = selectedData.id;
- if (refreshSidePanel) {
+ if (refreshSidePanel) {
PubSub.publish('select_application_review', selectedData);
PubSub.publish('refresh_assessment_attachment_list', selectedData.id);
}
@@ -367,7 +367,7 @@ function renderApproval(data) {
}
}
async function getActionButtonConfigMap() {
- let applicationId = document.getElementById('DetailsViewApplicationId').value;
+ let applicationId = document.getElementById('DetailsViewApplicationId')?.value;
let applicationStatus = await unity.grantManager.grantApplications.grantApplication.getApplicationStatus(applicationId).then(data => {
return data;
});
@@ -455,97 +455,97 @@ function unityWorkflowButtonAction(e, dt, button, config) {
}
}
-function generateAiButtonAction(e, dt, button, config) {
- const $button = button?.node ? $(button.node) : null;
- const promptVersion = globalThis.getSelectedPromptVersion?.() || null;
- const aiGenerationPollIntervalMs = 15000;
- let aiGenerationPollTimeoutId = null;
-
- if ($button?.length) {
- $button.prop('disabled', true);
- $button.html('Generating...');
- globalThis.AIGenerationButtonState?.setGenerating($button);
- }
-
- const stopPolling = function () {
- if (aiGenerationPollTimeoutId) {
- clearTimeout(aiGenerationPollTimeoutId);
- aiGenerationPollTimeoutId = null;
- }
- };
-
- const poll = function () {
- unity.grantManager.grantApplications.grantApplication
- .getAIGenerationStatus(pageApplicationId, 'application-scoring', promptVersion)
- .done(function (request) {
- const status = globalThis.AIGenerationButtonState?.resolveStatus(request?.status) ?? '';
-
- if (status === 'Failed') {
- stopPolling();
- abp.message.error(request?.failureReason || 'AI scoring failed.');
- if ($button?.length) {
- globalThis.AIGenerationButtonState?.restore($button);
- $button.prop('disabled', false);
- $button.html(generateAiButtonText(null, null, null));
- }
- return;
- }
-
- if (!request || request.isActive === false || status === 'Completed') {
- stopPolling();
- setReviewListAiButtonCompleted($button);
- refreshReviewListAfterAiScoring();
- return;
- }
-
- aiGenerationPollTimeoutId = setTimeout(poll, aiGenerationPollIntervalMs);
- })
- .fail(function () {
- aiGenerationPollTimeoutId = setTimeout(poll, aiGenerationPollIntervalMs);
- });
- };
-
- unity.grantManager.grantApplications.grantApplication.queueApplicationScoring(pageApplicationId, promptVersion)
- .done(function (request) {
- const status = globalThis.AIGenerationButtonState?.resolveStatus(request?.status) ?? '';
-
- if (status === 'Completed') {
- setReviewListAiButtonCompleted($button);
- refreshReviewListAfterAiScoring();
- return;
- }
-
- aiGenerationPollTimeoutId = setTimeout(poll, 500);
- })
- .fail(function () {
- stopPolling();
- abp.message.error('Failed to queue AI scoring. Please try again.');
- if ($button?.length) {
- globalThis.AIGenerationButtonState?.restore($button);
- $button.prop('disabled', false);
- $button.html(generateAiButtonText(null, null, null));
- }
- })
- ;
-}
-
-function setReviewListAiButtonCompleted($button) {
- if (!$button?.length) {
- return;
- }
-
- globalThis.AIGenerationButtonState?.setCompleted($button);
- $button.html('Completed').prop('disabled', true);
-}
-
-function refreshReviewListAfterAiScoring() {
- PubSub.publish('refresh_review_list', pageApplicationId);
- PubSub.publish('refresh_assessment_scores', null);
-}
-
-function executeAssessmentAction(assessmentId, triggerAction) {
- unity.grantManager.assessments.assessment.executeAssessmentAction(assessmentId, triggerAction, {})
- .then(function (result) {
+function generateAiButtonAction(e, dt, button, config) {
+ const $button = button?.node ? $(button.node) : null;
+ const promptVersion = globalThis.getSelectedPromptVersion?.() || null;
+ const aiGenerationPollIntervalMs = 15000;
+ let aiGenerationPollTimeoutId = null;
+
+ if ($button?.length) {
+ $button.prop('disabled', true);
+ $button.html('Generating...');
+ globalThis.AIGenerationButtonState?.setGenerating($button);
+ }
+
+ const stopPolling = function () {
+ if (aiGenerationPollTimeoutId) {
+ clearTimeout(aiGenerationPollTimeoutId);
+ aiGenerationPollTimeoutId = null;
+ }
+ };
+
+ const poll = function () {
+ unity.grantManager.grantApplications.grantApplication
+ .getAIGenerationStatus(pageApplicationId, 'application-scoring', promptVersion)
+ .done(function (request) {
+ const status = globalThis.AIGenerationButtonState?.resolveStatus(request?.status) ?? '';
+
+ if (status === 'Failed') {
+ stopPolling();
+ abp.message.error(request?.failureReason || 'AI scoring failed.');
+ if ($button?.length) {
+ globalThis.AIGenerationButtonState?.restore($button);
+ $button.prop('disabled', false);
+ $button.html(generateAiButtonText(null, null, null));
+ }
+ return;
+ }
+
+ if (!request || request.isActive === false || status === 'Completed') {
+ stopPolling();
+ setReviewListAiButtonCompleted($button);
+ refreshReviewListAfterAiScoring();
+ return;
+ }
+
+ aiGenerationPollTimeoutId = setTimeout(poll, aiGenerationPollIntervalMs);
+ })
+ .fail(function () {
+ aiGenerationPollTimeoutId = setTimeout(poll, aiGenerationPollIntervalMs);
+ });
+ };
+
+ unity.grantManager.grantApplications.grantApplication.queueApplicationScoring(pageApplicationId, promptVersion)
+ .done(function (request) {
+ const status = globalThis.AIGenerationButtonState?.resolveStatus(request?.status) ?? '';
+
+ if (status === 'Completed') {
+ setReviewListAiButtonCompleted($button);
+ refreshReviewListAfterAiScoring();
+ return;
+ }
+
+ aiGenerationPollTimeoutId = setTimeout(poll, 500);
+ })
+ .fail(function () {
+ stopPolling();
+ abp.message.error('Failed to queue AI scoring. Please try again.');
+ if ($button?.length) {
+ globalThis.AIGenerationButtonState?.restore($button);
+ $button.prop('disabled', false);
+ $button.html(generateAiButtonText(null, null, null));
+ }
+ })
+ ;
+}
+
+function setReviewListAiButtonCompleted($button) {
+ if (!$button?.length) {
+ return;
+ }
+
+ globalThis.AIGenerationButtonState?.setCompleted($button);
+ $button.html('Completed').prop('disabled', true);
+}
+
+function refreshReviewListAfterAiScoring() {
+ PubSub.publish('refresh_review_list', pageApplicationId);
+ PubSub.publish('refresh_assessment_scores', null);
+}
+
+function executeAssessmentAction(assessmentId, triggerAction) {
+ unity.grantManager.assessments.assessment.executeAssessmentAction(assessmentId, triggerAction, {})
+ .then(function (result) {
PubSub.publish('assessment_action_completed');
PubSub.publish('refresh_review_list', assessmentId);
abp.notify.success(