/*******************************************************************************
 * You may amend and distribute as you like, but don't remove this header!
 *
 * EPPlus provides server-side generation of Excel 2007/2010 spreadsheets.
 * See http://www.codeplex.com/EPPlus for details.
 *
 * Copyright (C) 2011  Jan Källman
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.

 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details.
 *
 * The GNU Lesser General Public License can be viewed at http://www.opensource.org/licenses/lgpl-license.php
 * If you unfamiliar with this license or have questions about it, here is an http://www.gnu.org/licenses/gpl-faq.html
 *
 * All code and executables are provided "as is" with no warranty either express or implied.
 * The author accepts no liability for any damage or loss of business that this product may cause.
 *
 * Code change notes:
 *
 * Author          Change						                  Date
 * ******************************************************************************
 * Eyal Seagull    Conditional Formatting Adaption    2012-04-03
 *******************************************************************************/

namespace AppsheetEpplus;

/// <summary>
/// The conditional formatting constants
/// </summary>
internal static class ExcelConditionalFormattingConstants {
  internal class Errors {
    internal const string _commaSeparatedAddresses =
        "Multiple addresses may not be commaseparated, use space instead";
    internal const string _invalidPriority = "Invalid priority number. Must be bigger than zero";
    internal const string _invalidRemoveRuleOperation = "Invalid remove rule operation";
    internal const string _missingCfvoNode = "Missing 'cfvo' node in Conditional Formatting";
    internal const string _missingCfvoParentNode =
        "Missing 'cfvo' parent node in Conditional Formatting";
    internal const string _missingConditionalFormattingNode =
        "Missing 'conditionalFormatting' node in Conditional Formatting";
    internal const string _missingItemRuleList =
        "Missing item with address '{0}' in Conditional Formatting Rule List";
    internal const string _missingPriorityAttribute =
        "Missing 'priority' attribute in Conditional Formatting Rule";
    internal const string _missingRuleType =
        "Missing eExcelConditionalFormattingRuleType Type in Conditional Formatting";
    internal const string _missingSqrefAttribute =
        "Missing 'sqref' attribute in Conditional Formatting";
    internal const string _missingTypeAttribute =
        "Missing 'type' attribute in Conditional Formatting Rule";
    internal const string _missingWorksheetNode = "Missing 'worksheet' node";
    internal const string _nonSupportedRuleType = "Non supported conditionalFormattingType: {0}";
    internal const string _unexistentCfvoTypeAttribute =
        "Unexistent eExcelConditionalFormattingValueObjectType attribute in Conditional Formatting";
    internal const string _unexistentOperatorTypeAttribute =
        "Unexistent eExcelConditionalFormattingOperatorType attribute in Conditional Formatting";
    internal const string _unexistentTimePeriodTypeAttribute =
        "Unexistent eExcelConditionalFormattingTimePeriodType attribute in Conditional Formatting";
    internal const string _unexpectedRuleTypeAttribute =
        "Unexpected eExcelConditionalFormattingRuleType attribute in Conditional Formatting Rule";
    internal const string _wrongNumberCfvoColorNodes =
        "Wrong number of 'cfvo'/'color' nodes in Conditional Formatting Rule";
  }

  internal class Nodes {
    internal const string _worksheet = "worksheet";
    internal const string _conditionalFormatting = "conditionalFormatting";
    internal const string _cfRule = "cfRule";
    internal const string _colorScale = "colorScale";
    internal const string _cfvo = "cfvo";
    internal const string _color = "color";
    internal const string _dataBar = "dataBar";
    internal const string _iconSet = "iconSet";
    internal const string _formula = "formula";
  }

  internal class Attributes {
    internal const string _aboveAverage = "aboveAverage";
    internal const string _bottom = "bottom";
    internal const string _dxfId = "dxfId";
    internal const string _equalAverage = "equalAverage";
    internal const string _iconSet = "iconSet";
    internal const string _operator = "operator";
    internal const string _percent = "percent";
    internal const string _priority = "priority";
    internal const string _rank = "rank";
    internal const string _reverse = "reverse";
    internal const string _rgb = "rgb";
    internal const string _showValue = "showValue";
    internal const string _sqref = "sqref";
    internal const string _stdDev = "stdDev";
    internal const string _stopIfTrue = "stopIfTrue";
    internal const string _text = "text";
    internal const string _theme = "theme";
    internal const string _timePeriod = "timePeriod";
    internal const string _tint = "tint";
    internal const string _type = "type";
    internal const string _val = "val";
  }

  internal class Paths {
    // Main node and attributes
    internal const string _worksheet = "d:" + Nodes._worksheet;

    // <conditionalFormatting> §18.3.1.18 node
    // can appear more than once in a worksheet
    internal const string _conditionalFormatting = "d:" + Nodes._conditionalFormatting;

    // <cfRule> §18.3.1.10 node
    // can appear more than once in a <conditionalFormatting>
    internal const string _cfRule = "d:" + Nodes._cfRule;

    // <colorScale> §18.3.1.16 node
    internal const string _colorScale = "d:" + Nodes._colorScale;

    // <cfvo> §18.3.1.11 node
    internal const string _cfvo = "d:" + Nodes._cfvo;

    // <color> §18.3.1.15 node
    internal const string _color = "d:" + Nodes._color;

    // <dataBar> §18.3.1.28 node
    internal const string _dataBar = "d:" + Nodes._dataBar;

    // <iconSet> §18.3.1.49 node
    internal const string _iconSet = "d:" + Nodes._iconSet;

    // <formula> §18.3.1.43 node
    internal const string _formula = "d:" + Nodes._formula;

    // Attributes (for all the nodes)
    internal const string _aboveAverageAttribute = "@" + Attributes._aboveAverage;
    internal const string _bottomAttribute = "@" + Attributes._bottom;
    internal const string _dxfIdAttribute = "@" + Attributes._dxfId;
    internal const string _equalAverageAttribute = "@" + Attributes._equalAverage;
    internal const string _iconSetAttribute = "@" + Attributes._iconSet;
    internal const string _operatorAttribute = "@" + Attributes._operator;
    internal const string _percentAttribute = "@" + Attributes._percent;
    internal const string _priorityAttribute = "@" + Attributes._priority;
    internal const string _rankAttribute = "@" + Attributes._rank;
    internal const string _reverseAttribute = "@" + Attributes._reverse;
    internal const string _rgbAttribute = "@" + Attributes._rgb;
    internal const string _showValueAttribute = "@" + Attributes._showValue;
    internal const string _sqrefAttribute = "@" + Attributes._sqref;
    internal const string _stdDevAttribute = "@" + Attributes._stdDev;
    internal const string _stopIfTrueAttribute = "@" + Attributes._stopIfTrue;
    internal const string _textAttribute = "@" + Attributes._text;
    internal const string _themeAttribute = "@" + Attributes._theme;
    internal const string _timePeriodAttribute = "@" + Attributes._timePeriod;
    internal const string _tintAttribute = "@" + Attributes._tint;
    internal const string _typeAttribute = "@" + Attributes._type;
    internal const string _valAttribute = "@" + Attributes._val;
  }

  internal class RuleType {
    internal const string _aboveAverage = "aboveAverage";
    internal const string _beginsWith = "beginsWith";
    internal const string _cellIs = "cellIs";
    internal const string _colorScale = "colorScale";
    internal const string _containsBlanks = "containsBlanks";
    internal const string _containsErrors = "containsErrors";
    internal const string _containsText = "containsText";
    internal const string _dataBar = "dataBar";
    internal const string _duplicateValues = "duplicateValues";
    internal const string _endsWith = "endsWith";
    internal const string _expression = "expression";
    internal const string _iconSet = "iconSet";
    internal const string _notContainsBlanks = "notContainsBlanks";
    internal const string _notContainsErrors = "notContainsErrors";
    internal const string _notContainsText = "notContainsText";
    internal const string _timePeriod = "timePeriod";
    internal const string _top10 = "top10";
    internal const string _uniqueValues = "uniqueValues";

    // EPPlus Extended Types
    internal const string _aboveOrEqualAverage = "aboveOrEqualAverage";
    internal const string _aboveStdDev = "aboveStdDev";
    internal const string _belowAverage = "belowAverage";
    internal const string _belowOrEqualAverage = "belowOrEqualAverage";
    internal const string _belowStdDev = "belowStdDev";
    internal const string _between = "between";
    internal const string _bottom = "bottom";
    internal const string _bottomPercent = "bottomPercent";
    internal const string _equal = "equal";
    internal const string _greaterThan = "greaterThan";
    internal const string _greaterThanOrEqual = "greaterThanOrEqual";
    internal const string _iconSet3 = "iconSet3";
    internal const string _iconSet4 = "iconSet4";
    internal const string _iconSet5 = "iconSet5";
    internal const string _last7Days = "last7Days";
    internal const string _lastMonth = "lastMonth";
    internal const string _lastWeek = "lastWeek";
    internal const string _lessThan = "lessThan";
    internal const string _lessThanOrEqual = "lessThanOrEqual";
    internal const string _nextMonth = "nextMonth";
    internal const string _nextWeek = "nextWeek";
    internal const string _notBetween = "notBetween";
    internal const string _notEqual = "notEqual";
    internal const string _thisMonth = "thisMonth";
    internal const string _thisWeek = "thisWeek";
    internal const string _threeColorScale = "threeColorScale";
    internal const string _today = "today";
    internal const string _tomorrow = "tomorrow";
    internal const string _top = "top";
    internal const string _topPercent = "topPercent";
    internal const string _twoColorScale = "twoColorScale";
    internal const string _yesterday = "yesterday";
  }

  internal class CfvoType {
    internal const string _min = "min";
    internal const string _max = "max";
    internal const string _num = "num";
    internal const string _formula = "formula";
    internal const string _percent = "percent";
    internal const string _percentile = "percentile";
  }

  internal class Operators {
    internal const string _beginsWith = "beginsWith";
    internal const string _between = "between";
    internal const string _containsText = "containsText";
    internal const string _endsWith = "endsWith";
    internal const string _equal = "equal";
    internal const string _greaterThan = "greaterThan";
    internal const string _greaterThanOrEqual = "greaterThanOrEqual";
    internal const string _lessThan = "lessThan";
    internal const string _lessThanOrEqual = "lessThanOrEqual";
    internal const string _notBetween = "notBetween";
    internal const string _notContains = "notContains";
    internal const string _notEqual = "notEqual";
  }

  internal class TimePeriods {
    internal const string _last7Days = "last7Days";
    internal const string _lastMonth = "lastMonth";
    internal const string _lastWeek = "lastWeek";
    internal const string _nextMonth = "nextMonth";
    internal const string _nextWeek = "nextWeek";
    internal const string _thisMonth = "thisMonth";
    internal const string _thisWeek = "thisWeek";
    internal const string _today = "today";
    internal const string _tomorrow = "tomorrow";
    internal const string _yesterday = "yesterday";
  }

  internal class Colors {
    internal const string _cfvoLowValue = "#FFF8696B";
    internal const string _cfvoMiddleValue = "#FFFFEB84";
    internal const string _cfvoHighValue = "#FF63BE7B";
  }
}
