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 ffb347f
Show file tree
Hide file tree
Showing 10 changed files with 792 additions and 809 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 ffb347f

Please sign in to comment.