From 562ba3d234489796b94aca01eda88aea7b0c5cbf Mon Sep 17 00:00:00 2001 From: xuri Date: Sat, 1 Sep 2018 23:32:44 +0800 Subject: [PATCH] Add function doc and fix golint error --- datavalidation.go | 95 ++++++++++++++++++++++++++--------------------- 1 file changed, 53 insertions(+), 42 deletions(-) diff --git a/datavalidation.go b/datavalidation.go index f1db732..62d2cf8 100644 --- a/datavalidation.go +++ b/datavalidation.go @@ -5,16 +5,17 @@ import ( "strings" ) +// DataValidationType defined the type of data validation. type DataValidationType int -// Data validation types +// Data validation types. const ( _DataValidationType = iota - typeNone //inline use + typeNone // inline use DataValidationTypeCustom DataValidationTypeDate DataValidationTypeDecimal - typeList //inline use + typeList // inline use DataValidationTypeTextLeng DataValidationTypeTime // DataValidationTypeWhole Integer @@ -28,9 +29,10 @@ const ( dataValidationFormulaStrLenErr = "data validation must be 0-255 characters" ) +// DataValidationErrorStyle defined the style of data validation error alert. type DataValidationErrorStyle int -// Data validation error styles +// Data validation error styles. const ( _ DataValidationErrorStyle = iota DataValidationErrorStyleStop @@ -38,17 +40,17 @@ const ( DataValidationErrorStyleInformation ) -// Data validation error styles +// Data validation error styles. const ( styleStop = "stop" styleWarning = "warning" styleInformation = "information" ) -// DataValidationOperator operator enum +// DataValidationOperator operator enum. type DataValidationOperator int -// Data validation operators +// Data validation operators. const ( _DataValidationOperator = iota DataValidationOperatorBetween @@ -61,16 +63,16 @@ const ( DataValidationOperatorNotEqual ) -// NewDataValidation return data validation struct +// NewDataValidation return data validation struct. func NewDataValidation(allowBlank bool) *DataValidation { return &DataValidation{ - AllowBlank: convBoolToStr(allowBlank), - ShowErrorMessage: convBoolToStr(false), - ShowInputMessage: convBoolToStr(false), + AllowBlank: allowBlank, + ShowErrorMessage: false, + ShowInputMessage: false, } } -// SetError set error notice +// SetError set error notice. func (dd *DataValidation) SetError(style DataValidationErrorStyle, title, msg string) { dd.Error = &msg dd.ErrorTitle = &title @@ -84,45 +86,31 @@ func (dd *DataValidation) SetError(style DataValidationErrorStyle, title, msg st strStyle = styleInformation } - dd.ShowErrorMessage = convBoolToStr(true) + dd.ShowErrorMessage = true dd.ErrorStyle = &strStyle } -// SetInput set prompt notice +// SetInput set prompt notice. func (dd *DataValidation) SetInput(title, msg string) { - dd.ShowInputMessage = convBoolToStr(true) + dd.ShowInputMessage = true dd.PromptTitle = &title dd.Prompt = &msg } -// SetDropList data validation list +// SetDropList data validation list. func (dd *DataValidation) SetDropList(keys []string) error { dd.Formula1 = "\"" + strings.Join(keys, ",") + "\"" dd.Type = convDataValidationType(typeList) return nil } -// SetDropList data validation range +// SetRange provides function to set data validation range in drop list. func (dd *DataValidation) SetRange(f1, f2 int, t DataValidationType, o DataValidationOperator) error { formula1 := fmt.Sprintf("%d", f1) formula2 := fmt.Sprintf("%d", f2) if dataValidationFormulaStrLen < len(dd.Formula1) || dataValidationFormulaStrLen < len(dd.Formula2) { return fmt.Errorf(dataValidationFormulaStrLenErr) } - /*switch o { - case DataValidationOperatorBetween: - if f1 > f2 { - tmp := formula1 - formula1 = formula2 - formula2 = tmp - } - case DataValidationOperatorNotBetween: - if f1 > f2 { - tmp := formula1 - formula1 = formula2 - formula2 = tmp - } - }*/ dd.Formula1 = formula1 dd.Formula2 = formula2 @@ -131,7 +119,7 @@ func (dd *DataValidation) SetRange(f1, f2 int, t DataValidationType, o DataValid return nil } -// SetDropList data validation range +// SetSqref provides function to set data validation range in drop list. func (dd *DataValidation) SetSqref(sqref string) { if dd.Sqref == "" { dd.Sqref = sqref @@ -140,15 +128,7 @@ func (dd *DataValidation) SetSqref(sqref string) { } } -// convBoolToStr convert boolean to string , false to 0, true to 1 -func convBoolToStr(bl bool) string { - if bl { - return "1" - } - return "0" -} - -// convDataValidationType get excel data validation type +// convDataValidationType get excel data validation type. func convDataValidationType(t DataValidationType) string { typeMap := map[DataValidationType]string{ typeNone: "none", @@ -165,7 +145,7 @@ func convDataValidationType(t DataValidationType) string { } -// convDataValidationOperatior get excel data validation operator +// convDataValidationOperatior get excel data validation operator. func convDataValidationOperatior(o DataValidationOperator) string { typeMap := map[DataValidationOperator]string{ DataValidationOperatorBetween: "between", @@ -182,6 +162,37 @@ func convDataValidationOperatior(o DataValidationOperator) string { } +// AddDataValidation provides set data validation on a range of the worksheet +// by given data validation object and worksheet name. The data validation +// object can be created by NewDataValidation function. +// +// Example 1, set data validation on Sheet1!A1:B2 with validation criteria +// settings, show error alert after invalid data is entered whth "Stop" style +// and custom title "error body": +// +// dvRange := excelize.NewDataValidation(true) +// dvRange.Sqref = "A1:B2" +// dvRange.SetRange(10, 20, excelize.DataValidationTypeWhole, excelize.DataValidationOperatorBetween) +// dvRange.SetError(excelize.DataValidationErrorStyleStop, "error title", "error body") +// xlsx.AddDataValidation("Sheet1", dvRange) +// +// Example 2, set data validation on Sheet1!A3:B4 with validation criteria +// settings, and show input message when cell is selected: +// +// dvRange = excelize.NewDataValidation(true) +// dvRange.Sqref = "A3:B4" +// dvRange.SetRange(10, 20, excelize.DataValidationTypeWhole, excelize.DataValidationOperatorGreaterThan) +// dvRange.SetInput("input title", "input body") +// xlsx.AddDataValidation("Sheet1", dvRange) +// +// Example 4, set data validation on Sheet1!A5:B6 with validation criteria +// settings, create in-cell dropdown by allow list source: +// +// dvRange = excelize.NewDataValidation(true) +// dvRange.Sqref = "A5:B6" +// dvRange.SetDropList([]string{"1", "2", "3"}) +// xlsx.AddDataValidation("Sheet1", dvRange) +// func (f *File) AddDataValidation(sheet string, dv *DataValidation) { xlsx := f.workSheetReader(sheet) if nil == xlsx.DataValidations {