-
Notifications
You must be signed in to change notification settings - Fork 187
/
Copy pathConversation.cshtml
128 lines (123 loc) · 7.64 KB
/
Conversation.cshtml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
@page "{id?}"
@model APIViewWeb.Pages.Assemblies.ConversationModel
@using APIViewWeb.Helpers
@using APIViewWeb.LeanModels
@using APIViewWeb.Models
@{
Layout = "Shared/_Layout";
ViewData["Title"] = "Conversation";
TempData["UserPreference"] = PageModelHelpers.GetUserPreference(Model._preferenceCache, User);
}
<div class="container-fluid mx-0 px-0 sub-header-content">
<div class="row px-3 py-2 border-bottom" id="review-info-bar">
<partial name="Shared/_ReviewBadge" model="(Model.Review, default(APIRevisionListItemModel), default(APIRevisionListItemModel), default(UserPreferenceModel))" />
</div>
</div>
@{
var leftOffCanvasClass = " show-left-offcanvas";
var mainContainerClass = " move-main-content-container-right";
}
<div id="left-offcanvas-menu" class="left-offcanvas@(leftOffCanvasClass)">
<div class="left-offcanvas-menu-content" id="left-offcanvas-menu-content">
<div class="btn-group-vertical" role="group" aria-label="Vertical button group">
<a type="button" class="btn btn-lg btn-link mb-2" asp-page="Review" asp-route-id="@Model.Review.Id"><i class="bi bi-braces" data-bs-toggle="tooltip" data-bs-placement="right" title="API"></i></a>
<a type="button" class="btn btn-lg btn-link mb-2" asp-page="Revisions" asp-route-id="@Model.Review.Id"><i class="bi bi-clock-history" data-bs-toggle="tooltip" data-bs-placement="right" title="Revisons"></i></a>
<a type="button" class="btn btn-lg btn-link mb-2" data-bs-toggle="tooltip" data-bs-placement="right" title="API" active-if="@TempData["page"].Equals("conversation")"><i class="bi bi-chat-left-dots"></i></a>
<a type="button" class="btn btn-lg btn-link mb-2" asp-page="Samples" asp-route-id="@Model.Review.Id"><i class="bi bi-puzzle" data-bs-toggle="tooltip" data-bs-placement="right" title="Samples"></i></a>
</div>
</div>
</div>
<div class="container-fluid pt-2@(mainContainerClass)" id="conversation-main-container">
<div class="row g-2" data-review-id="@Model.Review.Id">
@if (!Model.Threads.Any() && !Model.UsageSampleThreads.Any())
{
<div class="text-muted">There are no comments in the review.</div>
}
else
{
@if (Model.Threads.Any())
{
<div class="col mx-3">
<h6 class="ms-3">APIRevisions Comments</h6>
@if (Model.Threads.Any())
{
<div class="border rounded conversiation-center">
@foreach (var revision in Model.Threads)
{
var divId = $"rev-{revision.Key.Id}";
<div class="card-header p-2 clickable" id="[email protected]" data-toggle="collapse" data-target="#@divId">
@PageModelHelpers.ResolveRevisionLabel(revision.Key)
</div>
<div id=@divId class="collapse show" [email protected] aria-labelledby="[email protected]">
<table class="code-window">
@foreach (var thread in revision.Value)
{
var elementId = thread.LineId;
<tr class="code-line"><td class="code p-2" style="word-break: break-all;"><a class="comment-url" asp-page="Review"
[email protected](elementId)>@elementId</a>
</td>
</tr>
<partial name="_CommentThreadPartial" model="@thread" />
}
</table>
</div>
}
</div>
}
</div>
}
@if (Model.UsageSampleThreads.Any())
{
var skipped = 1;
<div class="col mx-3">
<h6 class="ms-3">Sample Revisions Comments</h6>
<div class="border rounded conversiation-center">
@foreach (var revision in Model.UsageSampleThreads.Reverse())
{
var divId = $"rev-{revision.Key.sampleRevisionNumber}";
var displayName = $"Usage sample - rev {@revision.Key.sampleRevisionNumber}";
@if (revision.Key.sampleRevision.Title != null)
{
displayName += " - " + @revision.Key.sampleRevision.Title;
}
else if (revision.Key.sampleRevision.OriginalFileName != null)
{
displayName += " - " + revision.Key.sampleRevision.OriginalFileName;
}
<div class="card-header p-2 clickable" id="[email protected]" data-toggle="collapse" data-target="#@divId">
@displayName
</div>
<div id=@divId class="collapse show" [email protected] aria-labelledby="[email protected]">
<table class="code-window">
@foreach (var thread in revision.Value.OrderBy(e => int.Parse(e.LineId.Split("-").Last())).GroupBy(x => x.LineId).Select(g => g.First()))
{
int indexA = Model.SampleLines.Count() - Math.Abs(revision.Key.sampleRevisionNumber - skipped);
int indexB = int.Parse(thread.Comments.First().ElementId.Split("-").Last()) - 1;
@if (thread.Comments.Any())
{
var elementId = thread.LineId;
<tr class="code-line">
<td class="code p-2" style="word-break: break-all;">
<a class="comment-url" asp-page="Samples"
[email protected]().ElementId.Split("-").First()
[email protected](elementId)>
@Html.Raw(Model.SampleLines.ElementAt(indexA).ElementAt(indexB))
</a>
</td>
</tr>
}
<partial name="_CommentThreadPartial" model="@thread" />
}
</table>
</div>
}
</div>
</div>
}
}
<partial name="_CommentFormPartial" model="@Model.TaggableUsers" />
</div>
</div>