Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit a91ed9f

Browse files
committed
webui: Avoid duplicating code for the live database views template
Reuse the existing React components and Go templates for the database page when showing the database page of a live database.
1 parent e5e6694 commit a91ed9f

File tree

5 files changed

+111
-649
lines changed

5 files changed

+111
-649
lines changed

webui/jsx/db-header.js

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,36 @@ function ToggleButton({icon, textSet, textUnset, redirectUrl, updateUrl, pageUrl
4242
}
4343

4444
export default function DbHeader() {
45+
// Fork and commir information and actions are only shown for non-live databases
4546
let forkedFrom = null;
46-
if (meta.forkOwner) {
47-
forkedFrom = (
48-
<div style={{fontSize: "small"}}>
49-
forked from <a href={"/" + meta.forkOwner}>{meta.forkOwner}</a> /&nbsp;
50-
{meta.forkDeleted ? "deleted database" : <a href={"/" + meta.forkOwner + "/" + meta.forkDatabase}>{meta.forkDatabase}</a>}
51-
</div>
47+
let forkButton = null;
48+
let lastCommit = null;
49+
if (meta.isLive === false) {
50+
forkButton = (
51+
<ToggleButton
52+
icon="fa-sitemap"
53+
textSet="Fork"
54+
textUnset="Fork"
55+
redirectUrl={"/x/forkdb/" + meta.owner + "/" + meta.database + "?commit=" + meta.commitID}
56+
pageUrl={"/forks/" + meta.owner + "/" + meta.database}
57+
isSet={false}
58+
count={meta.numForks}
59+
cyToggle="forksbtn"
60+
cyPage="forkspagebtn"
61+
disabled={meta.owner == authInfo.loggedInUser}
62+
/>
5263
);
64+
65+
if (meta.forkOwner) {
66+
forkedFrom = (
67+
<div style={{fontSize: "small"}}>
68+
forked from <a href={"/" + meta.forkOwner}>{meta.forkOwner}</a> /&nbsp;
69+
{meta.forkDeleted ? "deleted database" : <a href={"/" + meta.forkOwner + "/" + meta.forkDatabase}>{meta.forkDatabase}</a>}
70+
</div>
71+
);
72+
}
73+
74+
lastCommit = (<><b>Last Commit:</b> {meta.commitID.substring(0, 8)} ({getTimePeriod(meta.repoModified, false)}) &nbsp;</>);
5375
}
5476

5577
let settings = null;
@@ -117,18 +139,7 @@ export default function DbHeader() {
117139
cyPage="starspagebtn"
118140
/>
119141
&nbsp;
120-
<ToggleButton
121-
icon="fa-sitemap"
122-
textSet="Fork"
123-
textUnset="Fork"
124-
redirectUrl={"/x/forkdb/" + meta.owner + "/" + meta.database + "?commit=" + meta.commitID}
125-
pageUrl={"/forks/" + meta.owner + "/" + meta.database}
126-
isSet={false}
127-
count={meta.numForks}
128-
cyToggle="forksbtn"
129-
cyPage="forkspagebtn"
130-
disabled={meta.owner == authInfo.loggedInUser}
131-
/>
142+
{forkButton}
132143
</div>
133144
</h2>
134145
</div>
@@ -143,20 +154,20 @@ export default function DbHeader() {
143154

144155
&nbsp; &nbsp; &nbsp;
145156

146-
<label id="viewdiscuss" className={meta.pageSection == "db_disc" ? "dbMenuLinkActive" : "dbMenuLink"}><a href={"/discuss/" + meta.owner + "/" + meta.database} className="blackLink" title="Discussions" data-cy="discusslink"><i className="fa fa-commenting"></i> Discussions:</a> {meta.numDiscussions}</label>
157+
{meta.isLive ? null : <label id="viewdiscuss" className={meta.pageSection == "db_disc" ? "dbMenuLinkActive" : "dbMenuLink"}><a href={"/discuss/" + meta.owner + "/" + meta.database} className="blackLink" title="Discussions" data-cy="discusslink"><i className="fa fa-commenting"></i> Discussions:</a> {meta.numDiscussions}</label>}
147158

148159
&nbsp; &nbsp; &nbsp;
149160

150-
<label id="viewmrs" className={meta.pageSection == "db_merge" ? "dbMenuLinkActive" : "dbMenuLink"}><a href={"/merge/" + meta.owner + "/" + meta.database} className="blackLink" title="Merge Requests" data-cy="mrlink"><i className="fa fa-clone"></i> Merge Requests:</a> {meta.numMRs}</label>
161+
{meta.isLive ? null : <label id="viewmrs" className={meta.pageSection == "db_merge" ? "dbMenuLinkActive" : "dbMenuLink"}><a href={"/merge/" + meta.owner + "/" + meta.database} className="blackLink" title="Merge Requests" data-cy="mrlink"><i className="fa fa-clone"></i> Merge Requests:</a> {meta.numMRs}</label>}
151162

152163
&nbsp; &nbsp; &nbsp;
153164

154-
{settings}
165+
{meta.isLive ? null : settings}
155166
</div>
156167
<div className="col-md-6">
157168
<div className="pull-right">
158169
{visibility} &nbsp;
159-
<b>Last Commit:</b> {meta.commitID.substring(0, 8)} ({getTimePeriod(meta.repoModified, false)}) &nbsp;
170+
{lastCommit}
160171
{licence} &nbsp;
161172
<b>Size:</b> <span data-cy="size">{Math.round(meta.size / 1024).toLocaleString()} KB</span>
162173
</div>

webui/pages.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1246,9 +1246,6 @@ func databasePage(w http.ResponseWriter, r *http.Request, dbOwner string, dbFold
12461246

12471247
// Render the page
12481248
templateName := "databasePage"
1249-
if pageData.IsLive {
1250-
templateName = "databaseLivePage"
1251-
}
12521249
t := tmpl.Lookup(templateName)
12531250
err = t.Execute(w, pageData)
12541251
if err != nil {

webui/templates/database.html

Lines changed: 77 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -32,41 +32,43 @@
3232
</div>
3333
</div>
3434
[[ end ]]
35-
<div class="row">
36-
<div class="col-md-12">
37-
<div style="border: 1px solid #DDD; border-radius: 7px; margin-bottom: 10px;">
38-
<table width="100%" class="table" style="margin-bottom: 0; border: none;">
39-
<tr style="border: none;">
40-
<td style="border: none; border-right: 1px solid #DDD;">
41-
<div style="text-align: center;">
42-
<a href="/commits/[[ .Meta.Owner ]]/[[ .Meta.Database ]]?branch={{ meta.Branch }}" class="blackLink" style="font-weight: bold;" data-cy="commitslnk">Commits: <span data-cy="commitscnt">{{ meta.Commits }}</span></a>
43-
</div>
44-
</td>
45-
<td style="border: none; border-right: 1px solid #DDD;">
46-
<div style="text-align: center;">
47-
<a href="/branches/[[ .Meta.Owner ]]/[[ .Meta.Database ]]" class="blackLink" style="font-weight: bold;" data-cy="brancheslnk">Branches: <span data-cy="branchescnt">{{ meta.Branches }}</span></a>
48-
</div>
49-
</td>
50-
<td style="border: none; border-right: 1px solid #DDD;">
51-
<div style="text-align: center;">
52-
<a href="/tags/[[ .Meta.Owner ]]/[[ .Meta.Database ]]" class="blackLink" style="font-weight: bold;" data-cy="tagslnk">Tags: <span data-cy="tagscnt">{{ meta.Tags }}</span></a>
53-
</div>
54-
</td>
55-
<td style="border: none; border-right: 1px solid #DDD;">
56-
<div style="text-align: center;">
57-
<a href="/releases/[[ .Meta.Owner ]]/[[ .Meta.Database ]]" class="blackLink" style="font-weight: bold;" data-cy="rlslnk">Releases: <span data-cy="rlscnt">{{ meta.Releases }}</span></a>
58-
</div>
59-
</td>
60-
<td style="border: none;">
61-
<div style="text-align: center;">
62-
<a href="/contributors/[[ .Meta.Owner ]]/[[ .Meta.Database ]]" class="blackLink" style="font-weight: bold;" data-cy="contlnk">Contributors: <span data-cy="contcnt">{{ meta.Contributors }}</span></a>
63-
</div>
64-
</td>
65-
</tr>
66-
</table>
35+
[[ if eq .IsLive false ]]
36+
<div class="row">
37+
<div class="col-md-12">
38+
<div style="border: 1px solid #DDD; border-radius: 7px; margin-bottom: 10px;">
39+
<table width="100%" class="table" style="margin-bottom: 0; border: none;">
40+
<tr style="border: none;">
41+
<td style="border: none; border-right: 1px solid #DDD;">
42+
<div style="text-align: center;">
43+
<a href="/commits/[[ .Meta.Owner ]]/[[ .Meta.Database ]]?branch={{ meta.Branch }}" class="blackLink" style="font-weight: bold;" data-cy="commitslnk">Commits: <span data-cy="commitscnt">{{ meta.Commits }}</span></a>
44+
</div>
45+
</td>
46+
<td style="border: none; border-right: 1px solid #DDD;">
47+
<div style="text-align: center;">
48+
<a href="/branches/[[ .Meta.Owner ]]/[[ .Meta.Database ]]" class="blackLink" style="font-weight: bold;" data-cy="brancheslnk">Branches: <span data-cy="branchescnt">{{ meta.Branches }}</span></a>
49+
</div>
50+
</td>
51+
<td style="border: none; border-right: 1px solid #DDD;">
52+
<div style="text-align: center;">
53+
<a href="/tags/[[ .Meta.Owner ]]/[[ .Meta.Database ]]" class="blackLink" style="font-weight: bold;" data-cy="tagslnk">Tags: <span data-cy="tagscnt">{{ meta.Tags }}</span></a>
54+
</div>
55+
</td>
56+
<td style="border: none; border-right: 1px solid #DDD;">
57+
<div style="text-align: center;">
58+
<a href="/releases/[[ .Meta.Owner ]]/[[ .Meta.Database ]]" class="blackLink" style="font-weight: bold;" data-cy="rlslnk">Releases: <span data-cy="rlscnt">{{ meta.Releases }}</span></a>
59+
</div>
60+
</td>
61+
<td style="border: none;">
62+
<div style="text-align: center;">
63+
<a href="/contributors/[[ .Meta.Owner ]]/[[ .Meta.Database ]]" class="blackLink" style="font-weight: bold;" data-cy="contlnk">Contributors: <span data-cy="contcnt">{{ meta.Contributors }}</span></a>
64+
</div>
65+
</td>
66+
</tr>
67+
</table>
68+
</div>
6769
</div>
6870
</div>
69-
</div>
71+
[[ end ]]
7072
<div class="row" style="padding-bottom: 10px;">
7173
<div class="col-md-8">
7274
<span class="pull-left">
@@ -83,50 +85,54 @@
8385
</li>
8486
</ul>
8587
</div>
86-
<div class="btn-group" uib-dropdown keyboard-nav="true">
87-
<button id="viewbranch" type="button" class="btn" data-cy="branchname"><span style="font-weight: bold">Branch:</span> {{ meta.Branch }}</button>
88-
89-
<button type="button" uib-dropdown-toggle class="btn btn-default" data-cy="branchdropdown">
90-
<span class="caret"></span>
91-
</button>
92-
<ul uib-dropdown-menu class="dropdown-menu" role="menu">
93-
<li ng-repeat="row in meta.BranchList" role="menuitem" ng-click="changeBranch(row)" data-cy="branch-{{ row }}">
94-
<a href="">{{ row }}</a>
95-
</li>
96-
</ul>
97-
</div>
98-
[[ if .Meta.LoggedInUser ]]
88+
[[ if eq .IsLive false ]]
89+
<div class="btn-group" uib-dropdown keyboard-nav="true">
90+
<button id="viewbranch" type="button" class="btn" data-cy="branchname"><span style="font-weight: bold">Branch:</span> {{ meta.Branch }}</button>
91+
92+
<button type="button" uib-dropdown-toggle class="btn btn-default" data-cy="branchdropdown">
93+
<span class="caret"></span>
94+
</button>
95+
<ul uib-dropdown-menu class="dropdown-menu" role="menu">
96+
<li ng-repeat="row in meta.BranchList" role="menuitem" ng-click="changeBranch(row)" data-cy="branch-{{ row }}">
97+
<a href="">{{ row }}</a>
98+
</li>
99+
</ul>
100+
</div>
101+
[[ end ]]
102+
[[ if and (.Meta.LoggedInUser) (eq .IsLive false) ]]
99103
<a href="/compare/[[ .Meta.Owner ]]/[[ .Meta.Database ]]" class="btn btn-primary" data-cy="newmrbtn">New Merge Request</a>
100104
<button class="btn btn-primary" ng-click="uploadForm()" data-cy="uploadbtn">Upload database</button>
101105
[[ end ]]
102106
</div>
103107
</span>
104108
</div>
105-
<div class="col-md-4">
106-
<span class="pull-right">
107-
<div class="btn-group" uib-dropdown keyboard-nav="true">
108-
<button type="button" class="btn btn-success" uib-dropdown-toggle>
109-
Clone database in DB4S <span class="caret"></span>
110-
</button>
111-
<ul uib-dropdown class="dropdown-menu dropdown-menu-right" role="menu">
112-
<li><input type="text" value="https://[[ .Config.DB4S.Server ]][[ if (ne .Config.DB4S.Port 443) ]]:[[ .Config.DB4S.Port ]][[ end ]]/[[ .Meta.Owner ]]/[[ .Meta.Database ]]?commit=[[ .DB.Info.CommitID ]]&branch=[[ .DB.Info.Branch ]]" id="db4sCloneLink" /></li>
113-
<li><a href="#" onclick="copyToClipboard('db4sCloneLink');return false;">Copy link <span class="glyphicon glyphicon-link"></span></a></li>
114-
</ul>
115-
</div>
116-
<div class="btn-group" uib-dropdown keyboard-nav="true" data-cy="dldropdown">
117-
<button type="button" class="btn btn-success" uib-dropdown-toggle>
118-
Download database <span class="caret"></span>
119-
</button>
120-
<ul uib-dropdown class="dropdown-menu dropdown-menu-right" role="menu">
121-
<li><a href="/x/download/[[ .Meta.Owner ]]/[[ .Meta.Database ]]?commit=[[ .DB.Info.CommitID ]]" data-cy="dldb">Entire database ({{ meta.Size / 1024 | number : 0 }} KB)</a></li>
122-
[[ if (le .DB.Info.DBEntry.Size 100000000) ]]
123-
<!-- Don't display the CSV export options for large databases, as the current node setup doesn't have sufficient ram + swap for it. -->
124-
<li><a href="/x/downloadcsv/[[ .Meta.Owner ]]/[[ .Meta.Database ]]?commit=[[ .DB.Info.CommitID ]]&table={{ db.Tablename }}" data-cy="dlcsv">Selected table as CSV</a></li>
125-
[[ end ]]
126-
</ul>
127-
</div>
128-
</span>
129-
</div>
109+
[[ if eq .IsLive false ]]
110+
<div class="col-md-4">
111+
<span class="pull-right">
112+
<div class="btn-group" uib-dropdown keyboard-nav="true">
113+
<button type="button" class="btn btn-success" uib-dropdown-toggle>
114+
Clone database in DB4S <span class="caret"></span>
115+
</button>
116+
<ul uib-dropdown class="dropdown-menu dropdown-menu-right" role="menu">
117+
<li><input type="text" value="https://[[ .Config.DB4S.Server ]][[ if (ne .Config.DB4S.Port 443) ]]:[[ .Config.DB4S.Port ]][[ end ]]/[[ .Meta.Owner ]]/[[ .Meta.Database ]]?commit=[[ .DB.Info.CommitID ]]&branch=[[ .DB.Info.Branch ]]" id="db4sCloneLink" /></li>
118+
<li><a href="#" onclick="copyToClipboard('db4sCloneLink');return false;">Copy link <span class="glyphicon glyphicon-link"></span></a></li>
119+
</ul>
120+
</div>
121+
<div class="btn-group" uib-dropdown keyboard-nav="true" data-cy="dldropdown">
122+
<button type="button" class="btn btn-success" uib-dropdown-toggle>
123+
Download database <span class="caret"></span>
124+
</button>
125+
<ul uib-dropdown class="dropdown-menu dropdown-menu-right" role="menu">
126+
<li><a href="/x/download/[[ .Meta.Owner ]]/[[ .Meta.Database ]]?commit=[[ .DB.Info.CommitID ]]" data-cy="dldb">Entire database ({{ meta.Size / 1024 | number : 0 }} KB)</a></li>
127+
[[ if (le .DB.Info.DBEntry.Size 100000000) ]]
128+
<!-- Don't display the CSV export options for large databases, as the current node setup doesn't have sufficient ram + swap for it. -->
129+
<li><a href="/x/downloadcsv/[[ .Meta.Owner ]]/[[ .Meta.Database ]]?commit=[[ .DB.Info.CommitID ]]&table={{ db.Tablename }}" data-cy="dlcsv">Selected table as CSV</a></li>
130+
[[ end ]]
131+
</ul>
132+
</div>
133+
</span>
134+
</div>
135+
[[ end ]]
130136
</div>
131137
<div class="row">
132138
<div class="col-md-12">

0 commit comments

Comments
 (0)