From d7bca93af85c882837cff840565ae9160e1aa79f Mon Sep 17 00:00:00 2001
From: httpjamesm
Date: Sat, 4 Feb 2023 12:58:50 -0500
Subject: [PATCH 1/3] feat: sort select with button
---
public/icons/sort.svg | 3 +++
public/question.css | 36 ++++++++++++++++++++++++++++++++++++
templates/question.html | 30 +++++++++++++++++++++++-------
3 files changed, 62 insertions(+), 7 deletions(-)
create mode 100644 public/icons/sort.svg
diff --git a/public/icons/sort.svg b/public/icons/sort.svg
new file mode 100644
index 0000000..774757a
--- /dev/null
+++ b/public/icons/sort.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/question.css b/public/question.css
index 87f54ef..cf25d6c 100644
--- a/public/question.css
+++ b/public/question.css
@@ -111,6 +111,42 @@ img {
margin-bottom: 1rem;
}
+.answers-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.answers-header .sorting form {
+ display: flex;
+ align-items: center;
+ gap: .5rem;
+}
+
+.answers-header select {
+ border: 0;
+ border-radius: 5px;
+ padding: 0.5rem;
+ background-color: var(--meta-bg);
+ color: var(--text-color);
+ height: 2rem;
+}
+
+.answers-header button {
+ width: 2rem;
+ border: 0;
+ height: 2rem;
+ border-radius: 5px;
+ background-color: var(--meta-bg);
+ color: var(--text-color);
+ font-size: 1.5rem;
+ cursor: pointer;
+
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
@media only screen and (max-width: 800px) {
body {
padding-left: 1rem;
diff --git a/templates/question.html b/templates/question.html
index 57cb8eb..06e39eb 100644
--- a/templates/question.html
+++ b/templates/question.html
@@ -38,13 +38,30 @@
Date: Sat, 4 Feb 2023 13:05:10 -0500
Subject: [PATCH 2/3] feat: hashmap with SO sort values, ssr selection
---
src/routes/question.go | 20 +++++++++++++++++++-
templates/question.html | 10 +++++-----
2 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/src/routes/question.go b/src/routes/question.go
index 36d8fdf..0571153 100644
--- a/src/routes/question.go
+++ b/src/routes/question.go
@@ -21,6 +21,13 @@ import (
var codeBlockRegex = regexp.MustCompile(`(?s)(.+?)<\/code><\/pre>`)
var questionCodeBlockRegex = regexp.MustCompile(`(?s)(.+?)
`)
+var soSortValues = map[string]string{
+ "votes": "scoredesc",
+ "trending": "trending",
+ "newest": "modifieddesc",
+ "oldest": "createdasc",
+}
+
func ViewQuestion(c *gin.Context) {
client := resty.New()
@@ -36,7 +43,17 @@ func ViewQuestion(c *gin.Context) {
questionTitle := c.Param("title")
- soLink := fmt.Sprintf("https://stackoverflow.com/questions/%s/%s", questionId, questionTitle)
+ sortValue := c.Query("sort_by")
+ if sortValue == "" {
+ sortValue = "votes"
+ }
+
+ soSortValue, ok := soSortValues[sortValue]
+ if !ok {
+ soSortValue = soSortValues["votes"]
+ }
+
+ soLink := fmt.Sprintf("https://stackoverflow.com/questions/%s/%s?answertab=%s", questionId, questionTitle, soSortValue)
resp, err := client.R().Get(soLink)
if err != nil {
@@ -251,6 +268,7 @@ func ViewQuestion(c *gin.Context) {
"imagePolicy": imagePolicy,
"theme": c.MustGet("theme").(string),
"currentUrl": fmt.Sprintf("%s/questions/%s/%s", os.Getenv("APP_URL"), questionId, questionTitle),
+ "sortValue": sortValue,
})
}
diff --git a/templates/question.html b/templates/question.html
index 06e39eb..d62bc50 100644
--- a/templates/question.html
+++ b/templates/question.html
@@ -47,11 +47,11 @@