diff --git a/core/app/api/v2/setting.go b/core/app/api/v2/setting.go index c2932b7960a0..bf1b66c69922 100644 --- a/core/app/api/v2/setting.go +++ b/core/app/api/v2/setting.go @@ -149,14 +149,14 @@ func checkSettingValueRange(key, value string) bool { // @Tags System Setting // @Summary Update system terminal setting // @Accept json -// @Param request body dto.TerminalInfo true "request" +// @Param request body dto.TerminalUpdate true "request" // @Success 200 // @Security ApiKeyAuth // @Security Timestamp // @Router /core/settings/terminal/update [post] // @x-panel-log {"bodyKeys":[],"paramKeys":[],"BeforeFunctions":[],"formatZH":"修改系统终端配置","formatEN":"update system terminal setting"} func (b *BaseApi) UpdateTerminalSetting(c *gin.Context) { - var req dto.TerminalInfo + var req dto.TerminalUpdate if err := helper.CheckBindAndValidate(&req, c); err != nil { return } diff --git a/core/app/dto/setting.go b/core/app/dto/setting.go index 19ca196985ec..c007e7c15b05 100644 --- a/core/app/dto/setting.go +++ b/core/app/dto/setting.go @@ -236,16 +236,31 @@ type MenuLabelSort struct { } type TerminalInfo struct { - LineHeight string `json:"lineHeight"` - LetterSpacing string `json:"letterSpacing"` - FontSize string `json:"fontSize"` - FontFamily string `json:"fontFamily"` - BackgroundColor string `json:"backgroundColor"` - ForegroundColor string `json:"foregroundColor"` - CursorBlink string `json:"cursorBlink"` - CursorStyle string `json:"cursorStyle"` - Scrollback string `json:"scrollback"` - ScrollSensitivity string `json:"scrollSensitivity"` + ShowTerminalButton string `json:"showTerminalButton"` + LineHeight string `json:"lineHeight"` + LetterSpacing string `json:"letterSpacing"` + FontSize string `json:"fontSize"` + FontFamily string `json:"fontFamily"` + BackgroundColor string `json:"backgroundColor"` + ForegroundColor string `json:"foregroundColor"` + CursorBlink string `json:"cursorBlink"` + CursorStyle string `json:"cursorStyle"` + Scrollback string `json:"scrollback"` + ScrollSensitivity string `json:"scrollSensitivity"` +} + +type TerminalUpdate struct { + ShowTerminalButton *string `json:"showTerminalButton,omitempty" validate:"omitempty,oneof=Enable Disable"` + LineHeight *string `json:"lineHeight,omitempty"` + LetterSpacing *string `json:"letterSpacing,omitempty"` + FontSize *string `json:"fontSize,omitempty"` + FontFamily *string `json:"fontFamily,omitempty"` + BackgroundColor *string `json:"backgroundColor,omitempty"` + ForegroundColor *string `json:"foregroundColor,omitempty"` + CursorBlink *string `json:"cursorBlink,omitempty"` + CursorStyle *string `json:"cursorStyle,omitempty"` + Scrollback *string `json:"scrollback,omitempty"` + ScrollSensitivity *string `json:"scrollSensitivity,omitempty"` } type AppstoreUpdate struct { diff --git a/core/app/service/setting.go b/core/app/service/setting.go index 9473bd2ab944..2f62cd614746 100644 --- a/core/app/service/setting.go +++ b/core/app/service/setting.go @@ -57,7 +57,7 @@ type ISettingService interface { UpdateProxy(req dto.ProxyUpdate) error GetTerminalInfo() (*dto.TerminalInfo, error) - UpdateTerminal(req dto.TerminalInfo) error + UpdateTerminal(req dto.TerminalUpdate) error UpdateSystemSSL() error GenerateRSAKey() error @@ -559,7 +559,7 @@ func (u *SettingService) GetTerminalInfo() (*dto.TerminalInfo, error) { for _, set := range setting { settingMap[set.Key] = set.Value } - var info dto.TerminalInfo + info := dto.TerminalInfo{ShowTerminalButton: "Enable"} arr, err := json.Marshal(settingMap) if err != nil { return nil, err @@ -569,39 +569,30 @@ func (u *SettingService) GetTerminalInfo() (*dto.TerminalInfo, error) { } return &info, err } -func (u *SettingService) UpdateTerminal(req dto.TerminalInfo) error { - if err := settingRepo.UpdateOrCreate("LineHeight", req.LineHeight); err != nil { - return err - } - if err := settingRepo.UpdateOrCreate("LetterSpacing", req.LetterSpacing); err != nil { - return err - } - if err := settingRepo.UpdateOrCreate("FontSize", req.FontSize); err != nil { - return err - } - if err := settingRepo.UpdateOrCreate("FontFamily", req.FontFamily); err != nil { - return err - } - if err := settingRepo.UpdateOrCreate("CursorBlink", req.CursorBlink); err != nil { - return err - } - if err := settingRepo.UpdateOrCreate("BackgroundColor", req.BackgroundColor); err != nil { - return err - } - if err := settingRepo.UpdateOrCreate("ForegroundColor", req.ForegroundColor); err != nil { - return err - } - if err := settingRepo.UpdateOrCreate("CursorBlink", req.CursorBlink); err != nil { - return err - } - if err := settingRepo.UpdateOrCreate("CursorStyle", req.CursorStyle); err != nil { - return err - } - if err := settingRepo.UpdateOrCreate("Scrollback", req.Scrollback); err != nil { - return err - } - if err := settingRepo.UpdateOrCreate("ScrollSensitivity", req.ScrollSensitivity); err != nil { - return err +func (u *SettingService) UpdateTerminal(req dto.TerminalUpdate) error { + settings := []struct { + key string + value *string + }{ + {"ShowTerminalButton", req.ShowTerminalButton}, + {"LineHeight", req.LineHeight}, + {"LetterSpacing", req.LetterSpacing}, + {"FontSize", req.FontSize}, + {"FontFamily", req.FontFamily}, + {"CursorBlink", req.CursorBlink}, + {"BackgroundColor", req.BackgroundColor}, + {"ForegroundColor", req.ForegroundColor}, + {"CursorStyle", req.CursorStyle}, + {"Scrollback", req.Scrollback}, + {"ScrollSensitivity", req.ScrollSensitivity}, + } + for _, setting := range settings { + if setting.value == nil { + continue + } + if err := settingRepo.UpdateOrCreate(setting.key, *setting.value); err != nil { + return err + } } return nil } diff --git a/core/cmd/server/docs/docs.go b/core/cmd/server/docs/docs.go index 2a4bbac77c22..4abbd187bec5 100644 --- a/core/cmd/server/docs/docs.go +++ b/core/cmd/server/docs/docs.go @@ -11683,7 +11683,7 @@ const docTemplate = `{ "name": "request", "required": true, "schema": { - "$ref": "#/definitions/dto.TerminalInfo" + "$ref": "#/definitions/dto.TerminalUpdate" } } ], @@ -40869,6 +40869,47 @@ const docTemplate = `{ }, "scrollback": { "type": "string" + }, + "showTerminalButton": { + "type": "string" + } + }, + "type": "object" + }, + "dto.TerminalUpdate": { + "properties": { + "backgroundColor": { + "type": "string" + }, + "cursorBlink": { + "type": "string" + }, + "cursorStyle": { + "type": "string" + }, + "fontFamily": { + "type": "string" + }, + "fontSize": { + "type": "string" + }, + "foregroundColor": { + "type": "string" + }, + "letterSpacing": { + "type": "string" + }, + "lineHeight": { + "type": "string" + }, + "scrollSensitivity": { + "type": "string" + }, + "scrollback": { + "type": "string" + }, + "showTerminalButton": { + "type": "string" } }, "type": "object" diff --git a/core/cmd/server/docs/swagger.json b/core/cmd/server/docs/swagger.json index 5893446851c6..2932fa574460 100644 --- a/core/cmd/server/docs/swagger.json +++ b/core/cmd/server/docs/swagger.json @@ -11679,7 +11679,7 @@ "name": "request", "required": true, "schema": { - "$ref": "#/definitions/dto.TerminalInfo" + "$ref": "#/definitions/dto.TerminalUpdate" } } ], @@ -40865,6 +40865,47 @@ }, "scrollback": { "type": "string" + }, + "showTerminalButton": { + "type": "string" + } + }, + "type": "object" + }, + "dto.TerminalUpdate": { + "properties": { + "backgroundColor": { + "type": "string" + }, + "cursorBlink": { + "type": "string" + }, + "cursorStyle": { + "type": "string" + }, + "fontFamily": { + "type": "string" + }, + "fontSize": { + "type": "string" + }, + "foregroundColor": { + "type": "string" + }, + "letterSpacing": { + "type": "string" + }, + "lineHeight": { + "type": "string" + }, + "scrollSensitivity": { + "type": "string" + }, + "scrollback": { + "type": "string" + }, + "showTerminalButton": { + "type": "string" } }, "type": "object" diff --git a/frontend/src/api/interface/setting.ts b/frontend/src/api/interface/setting.ts index cc984eb527c1..c2f4ff189797 100644 --- a/frontend/src/api/interface/setting.ts +++ b/frontend/src/api/interface/setting.ts @@ -101,6 +101,7 @@ export namespace Setting { dashboardSimpleNodeVisible: string; } export interface TerminalInfo { + showTerminalButton?: string; lineHeight: string; letterSpacing: string; fontSize: string; diff --git a/frontend/src/api/modules/setting.ts b/frontend/src/api/modules/setting.ts index 17adbb8be0a9..7e9be4cda814 100644 --- a/frontend/src/api/modules/setting.ts +++ b/frontend/src/api/modules/setting.ts @@ -126,7 +126,7 @@ export const getSettingBaseInfo = () => { export const getTerminalInfo = () => { return http.post(`/core/settings/terminal/search`); }; -export const UpdateTerminalInfo = (param: Setting.TerminalInfo) => { +export const UpdateTerminalInfo = (param: Partial) => { return http.post(`/core/settings/terminal/update`, param); }; export const getSystemAvailable = () => { diff --git a/frontend/src/components/terminal/dock/index.vue b/frontend/src/components/terminal/dock/index.vue index ddc994d4fc40..6f17be2a392d 100644 --- a/frontend/src/components/terminal/dock/index.vue +++ b/frontend/src/components/terminal/dock/index.vue @@ -1,6 +1,6 @@