diff --git a/datafiles/static/browse.js b/datafiles/static/browse.js
index 905239afc..64691d191 100644
--- a/datafiles/static/browse.js
+++ b/datafiles/static/browse.js
@@ -133,6 +133,7 @@ const replaceRows = (response) => {
tr.appendChild(createSimpleText(row.description));
tr.appendChild(createTags(row.tags));
tr.appendChild(createLastUpload(row.lastUpload));
+ tr.appendChild(createSimpleText(row.lastVersion));
tr.appendChild(createMaintainers(row.maintainers));
l.appendChild(tr);
}
diff --git a/datafiles/templates/Html/browse.html.st b/datafiles/templates/Html/browse.html.st
index a7b85a496..19e585351 100644
--- a/datafiles/templates/Html/browse.html.st
+++ b/datafiles/templates/Html/browse.html.st
@@ -249,6 +249,7 @@
Description |
Tags |
Last U/L |
+ Last Version |
Maintainers |
diff --git a/datafiles/templates/Html/table-interface.html.st b/datafiles/templates/Html/table-interface.html.st
index 7eeada219..8c75d3ecf 100644
--- a/datafiles/templates/Html/table-interface.html.st
+++ b/datafiles/templates/Html/table-interface.html.st
@@ -27,7 +27,8 @@
Description |
Tags |
Last U/L |
- Maintainer |
+ Last Version |
+ Maintainers |
diff --git a/src/Distribution/Server/Features/Browse.hs b/src/Distribution/Server/Features/Browse.hs
index ada4b622c..3a2df0349 100644
--- a/src/Distribution/Server/Features/Browse.hs
+++ b/src/Distribution/Server/Features/Browse.hs
@@ -138,7 +138,7 @@ packageIndexInfoToValue :: CoreResource -> TagsResource -> UserResource -> Packa
packageIndexInfoToValue
coreResource tagsResource userResource
PackageItem{itemName, itemDownloads, itemVotes,
- itemDesc, itemTags, itemLastUpload, itemMaintainer} =
+ itemDesc, itemTags, itemLastUpload, itemLastVersion, itemMaintainer} =
object
[ Key.fromString "name" .= renderPackage itemName
, Key.fromString "downloads" .= itemDownloads
@@ -146,6 +146,7 @@ packageIndexInfoToValue
, Key.fromString "description" .= itemDesc
, Key.fromString "tags" .= map renderTag (S.toAscList itemTags)
, Key.fromString "lastUpload" .= iso8601Show itemLastUpload
+ , Key.fromString "lastVersion" .= itemLastVersion
, Key.fromString "maintainers" .= map renderUser itemMaintainer
]
where
diff --git a/src/Distribution/Server/Features/Browse/ApplyFilter.hs b/src/Distribution/Server/Features/Browse/ApplyFilter.hs
index f96a3367c..c86082fc8 100644
--- a/src/Distribution/Server/Features/Browse/ApplyFilter.hs
+++ b/src/Distribution/Server/Features/Browse/ApplyFilter.hs
@@ -63,6 +63,7 @@ sort isSearch sortColumn sortDirection =
Description -> comparing itemDesc
Tags -> comparing (S.toAscList . itemTags)
LastUpload -> comparing itemLastUpload
+ LastVersion -> comparing itemLastVersion
Maintainers -> comparing itemMaintainer
in sortBy (maybeReverse comparer)
where
diff --git a/src/Distribution/Server/Features/Browse/Options.hs b/src/Distribution/Server/Features/Browse/Options.hs
index 269be66ef..dd93401ef 100644
--- a/src/Distribution/Server/Features/Browse/Options.hs
+++ b/src/Distribution/Server/Features/Browse/Options.hs
@@ -9,7 +9,7 @@ import Distribution.Server.Features.Browse.Parsers (Filter, conditions, condsToF
data IsSearch = IsSearch | IsNotSearch
-data NormalColumn = Name | Downloads | Rating | Description | Tags | LastUpload | Maintainers
+data NormalColumn = Name | Downloads | Rating | Description | Tags | LastUpload | LastVersion | Maintainers
deriving (Show, Eq)
data Column = DefaultColumn | NormalColumn NormalColumn
@@ -36,6 +36,7 @@ instance FromJSON Column where
"description" -> pure $ NormalColumn Description
"tags" -> pure $ NormalColumn Tags
"lastUpload" -> pure $ NormalColumn LastUpload
+ "lastVersion" -> pure $ NormalColumn LastVersion
"maintainers" -> pure $ NormalColumn Maintainers
t -> fail $ "Column invalid: " ++ T.unpack t
@@ -48,6 +49,7 @@ columnToTemplateName = \case
NormalColumn Description -> "description"
NormalColumn Tags -> "tags"
NormalColumn LastUpload -> "lastUpload"
+ NormalColumn LastVersion -> "lastVersion"
NormalColumn Maintainers -> "maintainers"
instance FromJSON Direction where
diff --git a/src/Distribution/Server/Features/Html/HtmlUtilities.hs b/src/Distribution/Server/Features/Html/HtmlUtilities.hs
index 3c1d616da..c217ab9b4 100644
--- a/src/Distribution/Server/Features/Html/HtmlUtilities.hs
+++ b/src/Distribution/Server/Features/Html/HtmlUtilities.hs
@@ -49,6 +49,7 @@ htmlUtilities CoreFeature{coreResource}
, td $ toHtml $ itemDesc item
, td $ " (" +++ renderTags (itemTags item) +++ ")"
, td $ toHtml $ formatTime defaultTimeLocale "%F" (itemLastUpload item)
+ , td $ toHtml $ itemLastVersion item
, td $ "" +++ intersperse (toHtml ", ") (map renderUser (itemMaintainer item))
]
where
diff --git a/src/Distribution/Server/Features/PackageList.hs b/src/Distribution/Server/Features/PackageList.hs
index 1a719fc22..cf07d90f6 100644
--- a/src/Distribution/Server/Features/PackageList.hs
+++ b/src/Distribution/Server/Features/PackageList.hs
@@ -29,6 +29,7 @@ import Distribution.Server.Users.Types
import Distribution.Package
import Distribution.PackageDescription
import Distribution.PackageDescription.Configuration
+import Distribution.Pretty (prettyShow)
import Distribution.Utils.ShortText (fromShortText)
import Control.Concurrent
@@ -85,18 +86,20 @@ data PackageItem = PackageItem {
-- How many benchmarks (>=0) this package has.
itemNumBenchmarks :: !Int,
-- Last upload date
- itemLastUpload :: !UTCTime
+ itemLastUpload :: !UTCTime,
+ -- Last version
+ itemLastVersion :: !String
-- Hotness: a more heuristic way to sort packages. presently non-existent.
--itemHotness :: Int
}
instance MemSize PackageItem where
- memSize (PackageItem a b c d e f g h i j k l) = memSize12 a b c d e f g h i j k l
+ memSize (PackageItem a b c d e f g h i j k l o) = memSize13 a b c d e f g h i j k l o
emptyPackageItem :: PackageName -> PackageItem
emptyPackageItem pkg = PackageItem pkg Set.empty Nothing "" []
- 0 0 False 0 0 0 (UTCTime (toEnum 0) 0)
+ 0 0 False 0 0 0 (UTCTime (toEnum 0) 0) ""
initListFeature :: ServerEnv
@@ -249,6 +252,7 @@ listFeature CoreFeature{..}
constructItem :: PkgInfo -> IO (PackageName, PackageItem)
constructItem pkg = do
let pkgname = packageName pkg
+ desc = pkgDesc pkg
-- [reverse index disabled] revCount <- query . GetReverseCount $ pkgname
users <- queryGetUserDb
tags <- queryTagsForPackage pkgname
@@ -257,7 +261,7 @@ listFeature CoreFeature{..}
deprs <- queryGetDeprecatedFor pkgname
maintainers <- queryUserGroup (maintainersGroup pkgname)
- return $ (,) pkgname $ (updateDescriptionItem (pkgDesc pkg) $ emptyPackageItem pkgname) {
+ return $ (,) pkgname $ (updateDescriptionItem desc $ emptyPackageItem pkgname) {
itemTags = tags
, itemMaintainer = map (userIdToName users) (UserIdSet.toList maintainers)
, itemDeprecated = deprs
@@ -265,6 +269,7 @@ listFeature CoreFeature{..}
-- [reverse index disabled] , itemRevDepsCount = directReverseCount revCount
, itemVotes = votes
, itemLastUpload = fst (pkgOriginalUploadInfo pkg)
+ , itemLastVersion = prettyShow $ pkgVersion $ pkgInfoId pkg
}
------------------------------