Quintiq file version 2.0
Component ListActiveGoals id:ListActiveGoals_223
{
  #keys: '[146140.1.1656894169]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorGeneral
    {
      #keys: '[146140.1.1656894170]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'shadow[Strategy]'
        FixedFilter: 'object.KPI().IsUsedByOptimizer() and object.Level() > 0'
        Source: 'DataHolderDialogData'
        Taborder: 0
        Transformation: 'KPIWeight'
      ]
    }
    #child: listActionBarPageGeneral_1
    Component DataSetLevelGeneral
    {
      #keys: '[146140.1.1656894172]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuGeneral_1
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPIName","title":"KPI","subtotals":"","tooltip":"","width":20,"display":"shown","attribute":"KPIName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Level","title":"Level","subtotals":"","tooltip":"","width":5,"display":"shown","editable":false,"attribute":"Level"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Weight","title":"Weight","subtotals":"","tooltip":"","width":7,"display":"shown","editable":false,"attribute":"Weight"}}]'
        ContextMenu: 'listContextMenuGeneral'
        SortCriteria: 'Level'
        Taborder: 2
      ]
    }
    Component UserConfigurableInformationActiveGoals
    {
      #keys: '[146140.1.1878702921]'
      BaseType: 'WebUserConfigurableInformation'
      Properties:
      [
        Identifier: 'KPIWeightActiveGoal'
        ObjectType: 'shadow[KPIWeight]'
        Precondition: "not object.KPIName() = 'Campaign' and not object.KPIName() = Translations::MP_GlobalParameters_KPIProcessMinimumQuantity()"
        Taborder: 3
        Tooltip: "VALUE(object.KPI().DescriptionUOM())VALUE(ifexpr( object.KPI().IsMaximize() and object.Level()=1, 'Having this bonus-driven goal on the first level may result in an unbounded and potentially infeasible plan.', ''))"
      ]
    }
    Component UserConfigurableInformationActiveGoalCampaign
    {
      #keys: '[146140.2.142759888]'
      BaseType: 'WebUserConfigurableInformation'
      Properties:
      [
        Identifier: 'KPIWeightActiveGoal'
        ObjectType: 'shadow[KPIWeight]'
        Precondition: "object.KPIName() = 'Campaign'"
        Taborder: 4
        Tooltip:
        [*
          VALUE(ifexpr( object.KPI().IsMaximize() and object.Level()=1, 'The campaign goal contains both penalty-driven and bonus-driven sub-goals. Placing it on the same level as other penalty-driven goals, such as unity capacity, might result in an unbounded or infeasible plan.',object.KPI().DescriptionUOM()))
          VALUE(ifexpr( object.KPI().IsMaximize() and object.Level()=1, 'Suggest prioritizing penalty-driven constraints and placing the campaign goal on a separate level.', ''))
        *]
      ]
    }
    Component UserConfigurableInformationProcessMinQty
    {
      #keys: '[145808.5.1040435828]'
      BaseType: 'WebUserConfigurableInformation'
      Properties:
      [
        Description: 'Warn a user when they add the process min quantity to a level > 1, because this is the same as adding to level 1'
        Identifier: 'KPIProcessMinQuantity'
        ObjectType: 'shadow[KPIWeight]'
        Precondition: 'object.KPIName() = Translations::MP_GlobalParameters_KPIProcessMinimumQuantity()'
        Taborder: 5
        Tooltip: "VALUE(object.KPI().DescriptionUOM())VALUE(ifexpr( object.Level() > 1, '. Process minimum quantity is implemented as a hard constraint. Putting it on a level > 1 is no different from including it on level 1', ''))"
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_ListActiveGoals_223_WebMenu_OnClick
    {
      #keys: '[146140.1.1656894157]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[9715.0.11388270]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
