Bladeren bron

Add function doc and fix golint error

xuri 7 jaren geleden
bovenliggende
commit
562ba3d234
1 gewijzigde bestanden met toevoegingen van 53 en 42 verwijderingen
  1. 53 42
      datavalidation.go

+ 53 - 42
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 {