mirror of
https://github.com/unidoc/unioffice.git
synced 2025-04-27 13:48:54 +08:00
110 lines
3.0 KiB
Go
110 lines
3.0 KiB
Go
// Copyright 2017 Baliance. All rights reserved.
|
|
//
|
|
// Use of this source code is governed by the terms of the Affero GNU General
|
|
// Public License version 3.0 as published by the Free Software Foundation and
|
|
// appearing in the file LICENSE included in the packaging of this file. A
|
|
// commercial license can be purchased by contacting sales@baliance.com.
|
|
|
|
package spreadsheet
|
|
|
|
import (
|
|
"baliance.com/gooxml"
|
|
"baliance.com/gooxml/schema/soo/sml"
|
|
)
|
|
|
|
type ConditionalFormattingRule struct {
|
|
x *sml.CT_CfRule
|
|
}
|
|
|
|
func (c ConditionalFormattingRule) InitializeDefaults() {
|
|
c.SetType(sml.ST_CfTypeCellIs)
|
|
c.SetOperator(sml.ST_ConditionalFormattingOperatorGreaterThan)
|
|
c.SetPriority(1)
|
|
|
|
}
|
|
|
|
// X returns the inner wrapped XML type.
|
|
func (c ConditionalFormattingRule) X() *sml.CT_CfRule {
|
|
return c.x
|
|
}
|
|
|
|
// SetConditionValue sets the condition value to be used for style applicaton.
|
|
func (c ConditionalFormattingRule) SetConditionValue(v string) {
|
|
c.x.Formula = []string{v}
|
|
}
|
|
|
|
// Priority returns the rule priority
|
|
func (c ConditionalFormattingRule) Priority() int32 {
|
|
return c.x.PriorityAttr
|
|
}
|
|
|
|
// SetPriority sets the rule priority
|
|
func (c ConditionalFormattingRule) SetPriority(p int32) {
|
|
c.x.PriorityAttr = p
|
|
}
|
|
|
|
// Type returns the type of the rule
|
|
func (c ConditionalFormattingRule) Type() sml.ST_CfType {
|
|
return c.x.TypeAttr
|
|
}
|
|
|
|
// SetType sets the type of the rule.
|
|
func (c ConditionalFormattingRule) SetType(t sml.ST_CfType) {
|
|
c.x.TypeAttr = t
|
|
}
|
|
|
|
// Operator returns the operator for the rule
|
|
func (c ConditionalFormattingRule) Operator() sml.ST_ConditionalFormattingOperator {
|
|
return c.x.OperatorAttr
|
|
}
|
|
|
|
// SetOperator sets the operator for the rule.
|
|
func (c ConditionalFormattingRule) SetOperator(t sml.ST_ConditionalFormattingOperator) {
|
|
c.x.OperatorAttr = t
|
|
}
|
|
|
|
// SetStyle sets the style to be used for conditional rules
|
|
func (c ConditionalFormattingRule) SetStyle(d DifferentialStyle) {
|
|
c.x.DxfIdAttr = gooxml.Uint32(d.Index())
|
|
}
|
|
|
|
func (c ConditionalFormattingRule) clear() {
|
|
c.x.OperatorAttr = sml.ST_ConditionalFormattingOperatorUnset
|
|
c.x.ColorScale = nil
|
|
c.x.IconSet = nil
|
|
c.x.Formula = nil
|
|
}
|
|
|
|
// SetColorScale configures the rule as a color scale, removing existing
|
|
// configuration.
|
|
func (c ConditionalFormattingRule) SetColorScale() ColorScale {
|
|
c.clear()
|
|
c.SetType(sml.ST_CfTypeColorScale)
|
|
c.x.ColorScale = sml.NewCT_ColorScale()
|
|
return ColorScale{c.x.ColorScale}
|
|
}
|
|
|
|
// SetIcons configures the rule as an icon scale, removing existing
|
|
// configuration.
|
|
func (c ConditionalFormattingRule) SetIcons() IconScale {
|
|
c.clear()
|
|
c.SetType(sml.ST_CfTypeIconSet)
|
|
c.x.IconSet = sml.NewCT_IconSet()
|
|
ic := IconScale{c.x.IconSet}
|
|
ic.SetIcons(sml.ST_IconSetType3TrafficLights1)
|
|
return ic
|
|
}
|
|
|
|
// SetDataBar configures the rule as a data bar, removing existing
|
|
// configuration.
|
|
func (c ConditionalFormattingRule) SetDataBar() DataBarScale {
|
|
c.clear()
|
|
c.SetType(sml.ST_CfTypeDataBar)
|
|
c.x.DataBar = sml.NewCT_DataBar()
|
|
db := DataBarScale{c.x.DataBar}
|
|
db.SetShowValue(true)
|
|
db.SetMinLength(10)
|
|
db.SetMaxLength(90)
|
|
return db
|
|
}
|