// Predicates are a way of testing whether the fields of objects like Activities, Assignments etc. fulfill
// a certain condition. They are used in Merlin's filters, style conditions, exporters, publishers and report modules.
// There are two types of predicates:
// 1. Comparison Predicate: Compares the fields of one object against one or two given values
// 2. Compound Predicate: Combines other predicates with the logical operations and / or / not

// With the popup in the first column of the comparsion predicate in the editor one choses the object type
// for the condition.
// If the object type does not matter, the following string is displayed:
"valueType.predicate.comparison.objectType.any"                     = "Any Type";

// The object type popup in the style conditon editor offers a special object type for the context in which
// an object is presented (like collapsed, filtered, read-only etc.)
"valueType.predicate.comparison.objectType.styleContext"            = "Context";

// The object type popup in the style condition editor of the Net Plan view offers a special object type
// for the styling of hierarchy lines.
"valueType.predicate.comparison.objectType.hierarchyLines"          = "Hierarchy Lines";

// If the predicate refers to the whole object and not just to one of its field, this string is displayed:
"valueType.predicate.comparison.key.self"                           = "-";

// A predicate can refer to special marker keys which generically include or exclude objects of the selected type
"valueType.predicate.comparison.key.yes"                            = "Yes";
"valueType.predicate.comparison.key.no"                             = "No";

// For conditions about hierarchy lines in the Net Plan view, this special key is offered.
// It refers to the object which is represented by the target box of a hierarchy line.
"valueType.predicate.comparison.key.childActivity"                  = "Child Activity";

// For conditions for keys targeting resources, a special value is selectable at the top of the possible values list.
// This special value refers to the currently logged in user.
"valueType.predicate.comparison.value.currentUser"                  = "Current User";

// These are all possible coparison operator types
"valueType.predicate.comparison.operator.lessThan"                  = "is less than";
"valueType.predicate.comparison.operator.lessThanOrEqual"           = "is less than or equal";
"valueType.predicate.comparison.operator.greaterThan"               = "is greater than";
"valueType.predicate.comparison.operator.greaterThanOrEqual"        = "is greater than or equal";
"valueType.predicate.comparison.operator.equalTo"                   = "is equal to";
"valueType.predicate.comparison.operator.notEqualTo"                = "is not equal to";
"valueType.predicate.comparison.operator.between"                   = "is between";
"valueType.predicate.comparison.operator.yes"                       = "yes";
"valueType.predicate.comparison.operator.no"                        = "no";
"valueType.predicate.comparison.operator.contains"                  = "contains";
"valueType.predicate.comparison.operator.doesNotContain"            = "does not contain";
"valueType.predicate.comparison.operator.beginsWith"                = "begins with";
"valueType.predicate.comparison.operator.endsWith"                  = "ends with";
"valueType.predicate.comparison.operator.before"                    = "is before";
"valueType.predicate.comparison.operator.after"                     = "is after";
"valueType.predicate.comparison.operator.on"                        = "is on";
"valueType.predicate.comparison.operator.notOn"                     = "is not on";
"valueType.predicate.comparison.operator.inStatusTimeFrame"         = "is in Status Time Frame";
"valueType.predicate.comparison.operator.today"                     = "is today";
"valueType.predicate.comparison.operator.thisWeek"                  = "is this week";
"valueType.predicate.comparison.operator.thisMonth"                 = "is this month";
"valueType.predicate.comparison.operator.thisYear"                  = "is this year";
"valueType.predicate.comparison.operator.yesterday"                 = "was yesterday";
"valueType.predicate.comparison.operator.lastWeek"                  = "was last week";
"valueType.predicate.comparison.operator.lastMonth"                 = "was last month";
"valueType.predicate.comparison.operator.lastYear"                  = "was last year";
"valueType.predicate.comparison.operator.tomorrow"                  = "is tomorrow";
"valueType.predicate.comparison.operator.nextWeek"                  = "is next week";
"valueType.predicate.comparison.operator.nextMonth"                 = "is next month";
"valueType.predicate.comparison.operator.nextYear"                  = "is next year";
"valueType.predicate.comparison.operator.empty"                     = "is empty";
"valueType.predicate.comparison.operator.notEmpty"                  = "is not empty";
"valueType.predicate.comparison.operator.exceedsBudgetBy"           = "exceeds budget by";
"valueType.predicate.comparison.operator.costExceededBy"            = "cost exceeded by";
"valueType.predicate.comparison.operator.matches"                   = "meets condition";
"valueType.predicate.comparison.operator.allMatch"                  = "all meet condition";
"valueType.predicate.comparison.operator.anyMatches"                = "any meets conditon";
"valueType.predicate.comparison.operator.countEqualTo"              = "count is equal to";
"valueType.predicate.comparison.operator.countNotEqualTo"           = "count is not equal to";
"valueType.predicate.comparison.operator.countGreaterThan"          = "count is greater than";
"valueType.predicate.comparison.operator.countLessThan"             = "count is less than";
"valueType.predicate.comparison.operator.countBetween"              = "count is between";
"valueType.predicate.comparison.operator.anyOf"                     = "is any of";
"valueType.predicate.comparison.operator.notAnyOf"                  = "is not any of";
"valueType.predicate.comparison.operator.overlapsStatusTimeFrame"   = "overlaps with Status Time Frame";
"valueType.predicate.comparison.operator.overlapsToday"             = "overlaps with today";
"valueType.predicate.comparison.operator.overlapsThisWeek"          = "overlaps with this week";
"valueType.predicate.comparison.operator.overlapsThisMonth"         = "overlaps with this month";
"valueType.predicate.comparison.operator.overlapsThisYear"          = "overlaps with this year";
"valueType.predicate.comparison.operator.overlapsYesterday"         = "overlaps with yesterday";
"valueType.predicate.comparison.operator.overlapsLastWeek"          = "overlaps with last week";
"valueType.predicate.comparison.operator.overlapsLastMonth"         = "overlaps with last month";
"valueType.predicate.comparison.operator.overlapsLastYear"          = "overlaps with last year";
"valueType.predicate.comparison.operator.overlapsTomorrow"          = "overlaps with tomorrow";
"valueType.predicate.comparison.operator.overlapsNextWeek"          = "overlaps with next week";
"valueType.predicate.comparison.operator.overlapsNextMonth"         = "overlaps with next month";
"valueType.predicate.comparison.operator.overlapsNextYear"          = "overlaps with next year";
"valueType.predicate.comparison.operator.overlaps"                  = "overlaps with range";
"valueType.predicate.comparison.operator.doesNotOverlap"            = "does not overlap with range";

// When the "between" operator is selected, the predicate editor presents two values fields.
// The following string is used as a conjunction between the fields.
// For example:
// Activity: expectedDuration is between 2 days and 3 days
"predicate.comparison.value.between.conjunction"                    = "and";

// A compound predicate combines other predicates with the logical operations and / or / not
"valueType.predicate.compound.type.and"                             = "and";
"valueType.predicate.compound.type.or"                              = "or";
"valueType.predicate.compound.type.not"                             = "not";