Skip to content

Commit 7a526c6

Browse files
committed
BDOG-175 change DepEx UI to set lower and upper bounds
1 parent 9d24ba0 commit 7a526c6

File tree

3 files changed

+40
-60
lines changed

3 files changed

+40
-60
lines changed

app/uk/gov/hmrc/cataloguefrontend/DependencyExplorerController.scala

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class DependencyExplorerController @Inject()(
5151
teams <- trConnector.allTeams.map(_.map(_.name).sorted)
5252
flags = SlugInfoFlag.values
5353
groupArtefacts <- service.getGroupArtefacts
54-
} yield Ok(page(form.fill(SearchForm("", SlugInfoFlag.Latest.s, "", "", "", "0.0.0", "")), teams, flags, groupArtefacts, versionRange = None, searchResults = None, pieData = None))
54+
} yield Ok(page(form.fill(SearchForm("", SlugInfoFlag.Latest.s, "", "", "")), teams, flags, groupArtefacts, versionRange = BobbyVersionRange(None, None, None, ""), searchResults = None, pieData = None))
5555
}
5656

5757

@@ -62,17 +62,17 @@ class DependencyExplorerController @Inject()(
6262
flags = SlugInfoFlag.values
6363
groupArtefacts <- service.getGroupArtefacts
6464
res <- {
65-
def pageWithError(msg: String) = page(form.bindFromRequest().withGlobalError(msg), teams, flags, groupArtefacts, versionRange = None, searchResults = None, pieData = None)
65+
def pageWithError(msg: String) = page(form.bindFromRequest().withGlobalError(msg), teams, flags, groupArtefacts, versionRange = BobbyVersionRange(None, None, None, ""), searchResults = None, pieData = None)
6666
form
6767
.bindFromRequest()
6868
.fold(
69-
hasErrors = formWithErrors => Future.successful(BadRequest(page(formWithErrors, teams, flags, groupArtefacts, versionRange = None, searchResults = None, pieData = None)))
69+
hasErrors = formWithErrors => Future.successful(BadRequest(page(formWithErrors, teams, flags, groupArtefacts, versionRange = BobbyVersionRange(None, None, None, ""), searchResults = None, pieData = None)))
7070
, success = query =>
7171
(for {
7272
versionRange <- query.versionRange match {
7373
case "" => for {
74-
version <- EitherT.fromOption[Future](Version.parse(query.version), BadRequest(pageWithError("Invalid version")))
75-
versionOp <- EitherT.fromOption[Future](VersionOp.parse(query.versionOp), BadRequest(pageWithError("Invalid version op")))
74+
version <- EitherT.fromOption[Future](request.queryString.get("version").flatMap(_.headOption).flatMap(Version.parse), BadRequest(pageWithError("Invalid version")))
75+
versionOp <- EitherT.fromOption[Future](request.queryString.get("versionOp").flatMap(_.headOption).flatMap(VersionOp.parse), BadRequest(pageWithError("Invalid version op")))
7676
versionRangeStr = versionOp match {
7777
case VersionOp.Gte => s"[$version,)"
7878
case VersionOp.Lte => s"(,$version]"
@@ -108,7 +108,7 @@ class DependencyExplorerController @Inject()(
108108
, teams
109109
, flags
110110
, groupArtefacts
111-
, if (query.versionRange.isEmpty) None else Some(versionRange)
111+
, versionRange
112112
, Some(results)
113113
, Some(pieData)
114114
))
@@ -125,8 +125,6 @@ class DependencyExplorerController @Inject()(
125125
, flag : String
126126
, group : String
127127
, artefact : String
128-
, versionOp : String
129-
, version : String
130128
, versionRange: String
131129
, asCsv : Boolean = false
132130
)
@@ -146,9 +144,7 @@ class DependencyExplorerController @Inject()(
146144
, "flag" -> Forms.text.verifying(notEmpty)
147145
, "group" -> Forms.text.verifying(notEmpty)
148146
, "artefact" -> Forms.text.verifying(notEmpty)
149-
, "versionOp" -> Forms.default(Forms.text, ">=")
150-
, "version" -> Forms.default(Forms.text, "")
151-
, "versionRange" -> Forms.text
147+
, "versionRange" -> Forms.default(Forms.text, "")
152148
, "asCsv" -> Forms.boolean
153149
)(SearchForm.apply)(SearchForm.unapply)
154150
)

app/uk/gov/hmrc/cataloguefrontend/connector/model/Dependencies.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ case class BobbyVersionRange(
8484
def comp(v: BobbyVersion) = if (v.inclusive) " <= " else " < "
8585
if (lowerBound.isDefined || upperBound.isDefined) {
8686
Some(( lowerBound.map(v => s"${v.version} ${comp(v)}").getOrElse("0.0.0 <=")
87-
, upperBound.map(v => s"${comp(v)} ${v.version}").getOrElse("<= 99.99.99")
87+
, upperBound.map(v => s"${comp(v)} ${v.version}").getOrElse("<= ")
8888
))
8989
} else None
9090
}

app/views/DependencyExplorerPage.scala.html

Lines changed: 32 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
@import play.api.mvc.Call
1818
@import uk.gov.hmrc.cataloguefrontend.connector.{SlugInfoFlag, Team}
19-
@import uk.gov.hmrc.cataloguefrontend.connector.model.{BobbyVersionRange, GroupArtefacts, ServiceWithDependency, VersionOp}
19+
@import uk.gov.hmrc.cataloguefrontend.connector.model.{BobbyVersion, BobbyVersionRange, GroupArtefacts, ServiceWithDependency, VersionOp}
2020
@import uk.gov.hmrc.cataloguefrontend.DependencyExplorerController.PieData
2121
@import uk.gov.hmrc.cataloguefrontend.ViewMessages
2222
@import uk.gov.hmrc.cataloguefrontend.routes
@@ -29,7 +29,7 @@
2929
teams : Seq[String],
3030
flags : Seq[SlugInfoFlag],
3131
groupArtefacts : List[GroupArtefacts],
32-
versionRange : Option[BobbyVersionRange],
32+
versionRange : BobbyVersionRange,
3333
searchResults : Option[Seq[ServiceWithDependency]],
3434
pieData : Option[PieData])(
3535
implicit request : Request[_],
@@ -59,7 +59,8 @@ <h1 id="search-service-header">Dependency Explorer</h1>
5959
@helper.form(
6060
action = routes.DependencyExplorerController.search,
6161
'class -> "form-inline",
62-
'id -> "search-by-dependency-form") {
62+
'id -> "search-by-dependency-form",
63+
'onsubmit -> "updateVersionRange();") {
6364
<table class="padded-table">
6465
<tr>
6566
<td style="vertical-align: top;">
@@ -70,8 +71,6 @@ <h1 id="search-service-header">Dependency Explorer</h1>
7071
'_label -> "",
7172
'_class -> "form-group"
7273
)
73-
</td>
74-
<td style="vertical-align: top;">
7574
@helper.select(
7675
form("artefact"),
7776
helper.options(List()),
@@ -80,49 +79,21 @@ <h1 id="search-service-header">Dependency Explorer</h1>
8079
)
8180
</td>
8281
</tr>
83-
</table>
84-
<table>
8582
<tr>
86-
<td style="vertical-align: top;">
87-
@helper.inputText(
88-
form("version"),
89-
'id -> "lbVersion",
90-
'size -> 20,
91-
'_label -> "",
92-
'placeholder -> "0.0.0",
93-
'_class -> "form-group"
94-
)
95-
</td>
96-
<td style="vertical-align: top;">
97-
@helper.select(
98-
form("versionOp"),
99-
helper.options(List("<", "<=")),
100-
'_label -> "",
101-
'_class -> "form-group"
102-
)
103-
</td>
104-
<td style="vertical-align: bottom; padding-left: 10; padding-right: 10; ">version</td>
105-
<td style="vertical-align: top;">
106-
@helper.select(
107-
form("versionOp"),
108-
helper.options(List("<", "<=")),
109-
'_label -> "",
110-
'_class -> "form-group"
111-
)
112-
</td>
113-
<td style="vertical-align: top;">
114-
@helper.inputText(
115-
form("version"),
116-
'id -> "upVersion",
117-
'size -> 20,
118-
'_label -> "",
119-
'placeholder -> "99.99.99",
120-
'_class -> "form-group"
121-
)
83+
<td style="padding-top: 1em;">
84+
<input type="text" id="lbValue" value="@versionRange.lowerBound.map(_.version)" size="20" placeholder="0.0.0">
85+
<select id="lbInclusive">
86+
<option value="false">&lt;</option>
87+
<option value="true" @selected(versionRange.lowerBound)>&lt;=</option>
88+
</select>
89+
version
90+
<select id="ubInclusive">
91+
<option value="false">&lt;</option>
92+
<option value="true" @selected(versionRange.upperBound)>&lt;=</option>
93+
</select>
94+
<input type="text" id="ubValue" value="@versionRange.upperBound.map(_.version)" size="20" placeholder="">
12295
</td>
12396
</tr>
124-
</table>
125-
<table>
12697
<tr>
12798
<td>
12899
@helper.select(
@@ -132,8 +103,6 @@ <h1 id="search-service-header">Dependency Explorer</h1>
132103
'_label -> "",
133104
'_class -> "form-group"
134105
)
135-
</td>
136-
<td>
137106
@helper.select(
138107
form("flag"),
139108
helper.options(flags.map(t => (t.s, t.s.capitalize)) :_*),
@@ -162,7 +131,7 @@ <h5>N.B. Dependencies are only applicable for Scala based services currently</h5
162131
<p id="search-results-empty">This search did not return any results.</p>
163132
}
164133
case Some(searchResults) => {
165-
<p>Found @searchResults.size results @versionRange.flatMap(_.rangeDescr.map { case (lb, ub) => "for " + lb + " x " + ub }).getOrElse("") </p>
134+
<p>Found @searchResults.size results</p>
166135

167136
<div id="chart_div" align="center"></div>
168137

@@ -250,6 +219,17 @@ <h5>N.B. Dependencies are only applicable for Scala based services currently</h5
250219
document.getElementById('search-by-dependency-form').submit();
251220
document.getElementById('asCsv').value = false;
252221
}
222+
223+
function updateVersionRange() {
224+
var lbValue = document.getElementById('lbValue').value;
225+
var lbInclusive = document.getElementById('lbInclusive').value;
226+
var ubInclusive = document.getElementById('ubInclusive').value;
227+
var ubValue = document.getElementById('ubValue').value;
228+
var versionRange = (lbInclusive == "true" ? "[" : "(") + (lbValue ? lbValue : "0.0.0") +
229+
"," +
230+
ubValue + (ubInclusive == "true" && ubValue ? "]" : ")");
231+
document.getElementById('versionRange').value = versionRange;
232+
}
253233
</script>
254234

255235
<script type="text/javascript">
@@ -283,3 +263,7 @@ <h5>N.B. Dependencies are only applicable for Scala based services currently</h5
283263
}
284264
</script>
285265
}
266+
267+
@selected(optVersion: Option[BobbyVersion]) = {
268+
@optVersion.map(v => if (v.inclusive) "selected" else "").getOrElse("selected")
269+
}

0 commit comments

Comments
 (0)