🎨 Improve dynamic icon kernel api for rendering template https://github.com/siyuan-note/siyuan/issues/13095

This commit is contained in:
Daniel 2024-11-11 23:33:52 +08:00
parent c96a062027
commit aaeca6778f
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
2 changed files with 54 additions and 3 deletions

View file

@ -26,6 +26,7 @@ import (
"time"
"github.com/gin-gonic/gin"
"github.com/siyuan-note/siyuan/kernel/model"
"github.com/siyuan-note/siyuan/kernel/util"
)
@ -118,7 +119,6 @@ func getDynamicIcon(c *gin.Context) {
color := c.Query("color") // 不要预设默认值不然type6返回星期就没法自动设置周末颜色了
date := c.Query("date")
lang := c.DefaultQuery("lang", util.Lang)
content := c.Query("content")
weekdayType := c.DefaultQuery("weekdayType", "1") // 设置星期几的格式zh_CH {1周日2周天 3星期日4星期天}, en_US {1: Mon, 2: MON3: Monday, 4. MONDAY,}
dateInfo := getDateInfo(date, lang, weekdayType)
@ -147,7 +147,9 @@ func getDynamicIcon(c *gin.Context) {
svg = generateTypeSevenSVG(color, lang, dateInfo)
case "8":
// Type 8: 文字图标
svg = generateTypeEightSVG(color, content)
content := c.Query("content")
id := c.Query("id")
svg = generateTypeEightSVG(color, content, id)
default:
// 默认为Type 1
svg = generateTypeOneSVG(color, lang, dateInfo)
@ -518,7 +520,7 @@ func generateTypeSevenSVG(color string, lang string, dateInfo map[string]interfa
}
// Type 8: 文字图标
func generateTypeEightSVG(color, content string) string {
func generateTypeEightSVG(color, content, id string) string {
colorScheme := getColorScheme(color)
// 动态变化字体大小
@ -556,6 +558,10 @@ func generateTypeEightSVG(color, content string) string {
}
}
if strings.Contains(content, ".action{") {
content = model.RenderDynamicIconContentTemplate(content, id)
}
return fmt.Sprintf(`
<svg id="dynamic_icon_type8" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path d="M39,0h434c20.97,0,38,17.03,38,38v412c0,33.11-26.89,60-60,60H60c-32.56,0-59-26.44-59-59V38C1,17.03,18.03,0,39,0Z" style="fill: %s;"/>