Signed-off-by: oppiliappan me@oppi.li
+25
-17
appview/issues/opengraph.go
+25
-17
appview/issues/opengraph.go
···
124
124
}
125
125
126
126
// Split stats area: left side for status/comments (80%), right side for dolly (20%)
127
-
statusCommentsArea, dollyArea := statsArea.Split(true, 80)
127
+
statusArea, dollyArea := statsArea.Split(true, 80)
128
128
129
129
// Draw status and comment count in status/comments area
130
-
statsBounds := statusCommentsArea.Img.Bounds()
130
+
statsBounds := statusArea.Img.Bounds()
131
131
statsX := statsBounds.Min.X + 60 // left padding
132
132
statsY := statsBounds.Min.Y
133
133
···
140
140
// Draw status (open/closed) with colored icon and text
141
141
var statusIcon string
142
142
var statusText string
143
-
var statusBgColor color.RGBA
143
+
var statusColor color.RGBA
144
144
145
145
if issue.Open {
146
146
statusIcon = "circle-dot"
147
147
statusText = "open"
148
-
statusBgColor = color.RGBA{34, 139, 34, 255} // green
148
+
statusColor = color.RGBA{34, 139, 34, 255} // green
149
149
} else {
150
150
statusIcon = "ban"
151
151
statusText = "closed"
152
-
statusBgColor = color.RGBA{52, 58, 64, 255} // dark gray
152
+
statusColor = color.RGBA{52, 58, 64, 255} // dark gray
153
153
}
154
154
155
-
badgeIconSize := 36
155
+
statusTextWidth := statusArea.TextWidth(statusText, textSize)
156
+
badgePadding := 12
157
+
badgeHeight := int(textSize) + (badgePadding * 2)
158
+
badgeWidth := iconSize + badgePadding + statusTextWidth + (badgePadding * 2)
159
+
cornerRadius := 8
160
+
badgeX := 60
161
+
badgeY := 0
156
162
157
-
// Draw icon with status color (no background)
158
-
err = statusCommentsArea.DrawLucideIcon(statusIcon, statsX, statsY+iconBaselineOffset-badgeIconSize/2+5, badgeIconSize, statusBgColor)
163
+
statusArea.DrawRoundedRect(badgeX, badgeY, badgeWidth, badgeHeight, cornerRadius, statusColor)
164
+
165
+
whiteColor := color.RGBA{255, 255, 255, 255}
166
+
iconX := statsX + badgePadding
167
+
iconY := statsY + (badgeHeight-iconSize)/2
168
+
err = statusArea.DrawLucideIcon(statusIcon, iconX, iconY, iconSize, whiteColor)
159
169
if err != nil {
160
170
log.Printf("failed to draw status icon: %v", err)
161
171
}
162
172
163
-
// Draw text with status color (no background)
164
-
textX := statsX + badgeIconSize + 12
165
-
badgeTextSize := 32.0
166
-
err = statusCommentsArea.DrawTextAt(statusText, textX, statsY+iconBaselineOffset, statusBgColor, badgeTextSize, ogcard.Middle, ogcard.Left)
173
+
textX := statsX + badgePadding + iconSize + badgePadding
174
+
textY := statsY + (badgeHeight-int(textSize))/2 - 5
175
+
err = statusArea.DrawTextAt(statusText, textX, textY, whiteColor, textSize, ogcard.Top, ogcard.Left)
167
176
if err != nil {
168
177
log.Printf("failed to draw status text: %v", err)
169
178
}
170
179
171
-
statusTextWidth := len(statusText) * 20
172
-
currentX := statsX + badgeIconSize + 12 + statusTextWidth + 50
180
+
currentX := statsX + badgeWidth + 50
173
181
174
182
// Draw comment count
175
-
err = statusCommentsArea.DrawLucideIcon("message-square", currentX, statsY+iconBaselineOffset-iconSize/2+5, iconSize, iconColor)
183
+
err = statusArea.DrawLucideIcon("message-square", currentX, iconY, iconSize, iconColor)
176
184
if err != nil {
177
185
log.Printf("failed to draw comment icon: %v", err)
178
186
}
···
182
190
if commentCount == 1 {
183
191
commentText = "1 comment"
184
192
}
185
-
err = statusCommentsArea.DrawTextAt(commentText, currentX, statsY+iconBaselineOffset, iconColor, textSize, ogcard.Middle, ogcard.Left)
193
+
err = statusArea.DrawTextAt(commentText, currentX, textY, iconColor, textSize, ogcard.Top, ogcard.Left)
186
194
if err != nil {
187
195
log.Printf("failed to draw comment text: %v", err)
188
196
}
···
205
213
openedDate := issue.Created.Format("Jan 2, 2006")
206
214
metaText := fmt.Sprintf("opened by %s 路 %s", authorHandle, openedDate)
207
215
208
-
err = statusCommentsArea.DrawTextAt(metaText, statsX, labelY, iconColor, labelSize, ogcard.Top, ogcard.Left)
216
+
err = statusArea.DrawTextAt(metaText, statsX, labelY, iconColor, labelSize, ogcard.Top, ogcard.Left)
209
217
if err != nil {
210
218
log.Printf("failed to draw metadata: %v", err)
211
219
}
History
1 round
0 comments
oppi.li
submitted
#0
1 commit
expand
collapse
appview/issues: draw issue status in a rounded rect
Signed-off-by: oppiliappan <me@oppi.li>
2/3 timeout, 1/3 success
expand
collapse
expand 0 comments
pull request successfully merged