Skip to content

Commit

Permalink
Update Cross Language CLient Code
Browse files Browse the repository at this point in the history
  • Loading branch information
chidozieononiwu committed Mar 9, 2024
1 parent cbb24eb commit 63e74a5
Show file tree
Hide file tree
Showing 9 changed files with 791 additions and 808 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,6 @@
box-shadow: var(--box-shadow-link);
}

.breadcrumb-item + .breadcrumb-item::before {
margin-top: 0.25rem;
}

.page-link {
background-color: var(--base-fg-color);
border: 1px solid var(--border-color);
Expand Down
290 changes: 145 additions & 145 deletions src/dotnet/APIView/APIViewWeb/Client/src/pages/review.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,22 @@ export function splitReviewPageContent() {
const rl = $('#review-left');
const rr = $('#review-right');

if (rl.length && rr.length) {
Split(['#review-left', '#review-right'], {
direction: 'horizontal',
sizes: [17, 83],
elementStyle: (dimension, size, gutterSize) => {
return {
'flex-basis': `calc(${size}% - ${gutterSize}px`
}
},
gutterStyle: (dimension, gutterSize) => {
return {
'flex-basis': `${gutterSize}px`
if (rl.length && rr.length) {
Split(['#review-left', '#review-right'], {
direction: 'horizontal',
sizes: [17, 83],
elementStyle: (dimension, size, gutterSize) => {
return {
'flex-basis': `calc(${size}% - ${gutterSize}px`
}
},
gutterStyle: (dimension, gutterSize) => {
return {
'flex-basis': `${gutterSize}px`
}
}
}
});
}
});
}
}

//-------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -587,160 +587,160 @@ export function addApprover(lowerTextSpan: HTMLElement, approvedByText: string,
addApprovedBorder();
}
addApproverHrefToApprovers(lowerTextSpan, approverHref, approver);
}
}

/**
* Removes the @approver from @lowerTextSpan of review page
* @param lowerTextSpan HTMLElement of the span that contains who approved the review or pending approval
* @param approver GitHub username of the review approver
* @param approvalPendingText string of approval pending text to use when removing the last approver
*/
export function removeApprover(lowerTextSpan: HTMLElement, approver: string, approvalPendingText: string) {
let children = lowerTextSpan.children;
let numApprovers = children.length;
/**
* Removes the @approver from @lowerTextSpan of review page
* @param lowerTextSpan HTMLElement of the span that contains who approved the review or pending approval
* @param approver GitHub username of the review approver
* @param approvalPendingText string of approval pending text to use when removing the last approver
*/
export function removeApprover(lowerTextSpan: HTMLElement, approver: string, approvalPendingText: string) {
let children = lowerTextSpan.children;
let numApprovers = children.length;

if (numApprovers > 1) {
removeApproverFromApproversList(children, approver);
} else {
lowerTextSpan.textContent = approvalPendingText;
removeApprovalBorder();
if (numApprovers > 1) {
removeApproverFromApproversList(children, approver);
} else {
lowerTextSpan.textContent = approvalPendingText;
removeApprovalBorder();
}
}
}

/**
* adds the @approver with a hyperlink to their apiview profile to @lowerTextSpan
*/
export function addApproverHrefToApprovers(lowerTextSpan: HTMLElement, approverHref: string, approver: any) {
$(lowerTextSpan).append('<a href="' + approverHref + '">' + approver + '</a>');
}
/**
* adds the @approver with a hyperlink to their apiview profile to @lowerTextSpan
*/
export function addApproverHrefToApprovers(lowerTextSpan: HTMLElement, approverHref: string, approver: any) {
$(lowerTextSpan).append('<a href="' + approverHref + '">' + approver + '</a>');
}

/**
* adds the text above the approve button to indicate whether the current user approved the review
*/
export function addUpperTextSpan(approvesCurrentRevisionText: string) {
let $upperTextSpan = $("<span>").text(approvesCurrentRevisionText).addClass("small text-muted");
let $upperTextForm = $("ul#approveCollapse form.form-inline");
$upperTextForm.prepend($upperTextSpan);
}
/**
* adds the text above the approve button to indicate whether the current user approved the review
*/
export function addUpperTextSpan(approvesCurrentRevisionText: string) {
let $upperTextSpan = $("<span>").text(approvesCurrentRevisionText).addClass("small text-muted");
let $upperTextForm = $("ul#approveCollapse form.form-inline");
$upperTextForm.prepend($upperTextSpan);
}

/**
* change the button state from a green "not approved" to grey "approved"
*/
export function addButtonApproval() {
let $approveBtn = $("form.form-inline button.btn.btn-success");
$approveBtn.removeClass("btn-success");
$approveBtn.addClass("btn-outline-secondary");
$approveBtn.text("Revert API Approval");
}
/**
* change the button state from a green "not approved" to grey "approved"
*/
export function addButtonApproval() {
let $approveBtn = $("form.form-inline button.btn.btn-success");
$approveBtn.removeClass("btn-success");
$approveBtn.addClass("btn-outline-secondary");
$approveBtn.text("Revert API Approval");
}

/**
* change the button state from a grey "approved" to green "not approved"
*/
export function removeButtonApproval() {
let $approveBtn = $("form.form-inline button.btn.btn-outline-secondary");
$approveBtn.removeClass("btn-outline-secondary");
$approveBtn.addClass("btn-success");
$approveBtn.text("Approve");
}
/**
* change the button state from a grey "approved" to green "not approved"
*/
export function removeButtonApproval() {
let $approveBtn = $("form.form-inline button.btn.btn-outline-secondary");
$approveBtn.removeClass("btn-outline-secondary");
$approveBtn.addClass("btn-success");
$approveBtn.text("Approve");
}

/**
* change the review panel border state from grey "not approved" to green "approved"
*/
export function addApprovedBorder() {
let reviewLeft = $("#review-left");
reviewLeft.addClass("review-approved");
reviewLeft.removeClass("border");
reviewLeft.removeClass("rounded-1");
/**
* change the review panel border state from grey "not approved" to green "approved"
*/
export function addApprovedBorder() {
let reviewLeft = $("#review-left");
reviewLeft.addClass("review-approved");
reviewLeft.removeClass("border");
reviewLeft.removeClass("rounded-1");

let reviewRight = $("#review-right");
reviewRight.addClass("review-approved");
reviewRight.removeClass("border");
reviewRight.removeClass("rounded-1");
}
let reviewRight = $("#review-right");
reviewRight.addClass("review-approved");
reviewRight.removeClass("border");
reviewRight.removeClass("rounded-1");
}

/**
* change the review panel border state from green "approved" to grey "not approved"
*/
export function removeApprovalBorder() {
let $reviewLeft = $("#review-left");
$reviewLeft.removeClass("review-approved");
$reviewLeft.addClass("border");
$reviewLeft.addClass("rounded-1");
/**
* change the review panel border state from green "approved" to grey "not approved"
*/
export function removeApprovalBorder() {
let $reviewLeft = $("#review-left");
$reviewLeft.removeClass("review-approved");
$reviewLeft.addClass("border");
$reviewLeft.addClass("rounded-1");

let $reviewRight = $("#review-right");
$reviewRight.removeClass("review-approved");
$reviewRight.addClass("border");
$reviewRight.addClass("rounded-1");
}
let $reviewRight = $("#review-right");
$reviewRight.removeClass("review-approved");
$reviewRight.addClass("border");
$reviewRight.addClass("rounded-1");
}

/**
* parse the approval spans for its existence and order
* @param $approvalSpans may contain <upper text>, <approve button>, and/or <lower text>
* @param approvedByText string for <lower text> that indicates preexisting approvers
* @param approvalPendingText string for <lower text> that indicates no current approvers
* @param approvesCurrentRevisionText string for <upper text> that indicates the current user did not approve
* @returns a dictionary with the index of the upper and lower text elements. Value is -1 if an element does not exist.
*/
export function parseApprovalSpanIndex($approvalSpans: JQuery<HTMLElement>, approvedByText: string, approvalPendingText: string, approvesCurrentRevisionText: string) {
let indexResult = {
"approvers": -1,
"upperText": -1,
};
/**
* parse the approval spans for its existence and order
* @param $approvalSpans may contain <upper text>, <approve button>, and/or <lower text>
* @param approvedByText string for <lower text> that indicates preexisting approvers
* @param approvalPendingText string for <lower text> that indicates no current approvers
* @param approvesCurrentRevisionText string for <upper text> that indicates the current user did not approve
* @returns a dictionary with the index of the upper and lower text elements. Value is -1 if an element does not exist.
*/
export function parseApprovalSpanIndex($approvalSpans: JQuery<HTMLElement>, approvedByText: string, approvalPendingText: string, approvesCurrentRevisionText: string) {
let indexResult = {
"approvers": -1,
"upperText": -1,
};

for (var i = 0; i < $approvalSpans.length; i++) {
let content = $approvalSpans[i].textContent;
for (var i = 0; i < $approvalSpans.length; i++) {
let content = $approvalSpans[i].textContent;

if (!content) {
return indexResult;
if (!content) {
return indexResult;
}

if (content.includes(approvedByText) || content.includes(approvalPendingText)) {
indexResult["approvers"] = i;
}
if (content.includes(approvesCurrentRevisionText)) {
indexResult["upperText"] = i;
}
}

if (content.includes(approvedByText) || content.includes(approvalPendingText)) {
indexResult["approvers"] = i;
}
if (content.includes(approvesCurrentRevisionText)) {
indexResult["upperText"] = i;
}
return indexResult;
}

return indexResult;
}

/**
* call when the current user approves the current review. removes the upper text
* @param upperTextIndex index of the upper text in @$approvalSpans
* @param $approvalSpans span that includes revision approval block
*/
export function removeUpperTextSpan(upperTextIndex: number, $approvalSpans: JQuery<HTMLElement>) {
if (upperTextIndex !== -1) {
let upperTextSpan: HTMLElement = $approvalSpans[upperTextIndex];
upperTextSpan.remove();
/**
* call when the current user approves the current review. removes the upper text
* @param upperTextIndex index of the upper text in @$approvalSpans
* @param $approvalSpans span that includes revision approval block
*/
export function removeUpperTextSpan(upperTextIndex: number, $approvalSpans: JQuery<HTMLElement>) {
if (upperTextIndex !== -1) {
let upperTextSpan: HTMLElement = $approvalSpans[upperTextIndex];
upperTextSpan.remove();
}
}
}

/**
* remove the @approver from list of @approvers
* @param approvers list of preexisting approvers
* @param approver GitHub username of user to remove from the list
*/
export function removeApproverFromApproversList(approvers, approver) {
for (var i = 0; i < approvers.length; i++) {
if (approvers[i].innerHTML === approver) {
if (i === 0) {
approvers[i].nextSibling?.remove();
} else {
approvers[i].previousSibling?.remove();
/**
* remove the @approver from list of @approvers
* @param approvers list of preexisting approvers
* @param approver GitHub username of user to remove from the list
*/
export function removeApproverFromApproversList(approvers, approver) {
for (var i = 0; i < approvers.length; i++) {
if (approvers[i].innerHTML === approver) {
if (i === 0) {
approvers[i].nextSibling?.remove();
} else {
approvers[i].previousSibling?.remove();
}
approvers[i].remove();
break;
}
approvers[i].remove();
break;
}
}
}

/**
/**
* Add event handler for cross language panel button
*/
export function addCrossLaguageCloseBtnHandler() {
$(".cross-language-panel .btn-close").on("click", function (e: JQuery.ClickEvent) {
$(this).closest(".cross-language-panel").addClass("d-none");
});
}
$(".cross-language-panel .btn-close").on("click", function (e: JQuery.ClickEvent) {
$(this).closest(".cross-language-panel").addClass("d-none");
});
}
Loading

0 comments on commit 63e74a5

Please sign in to comment.