{
  "eventsAndFunctions": [
    {
      "algorithm": {
        "parameters": [],
        "statements": [
          {
            "command": "Execute",
            "expression": "refresh()"
          }
        ],
        "typeReturn": "any",
        "variables": []
      },
      "name": "main_init"
    },
    {
      "algorithm": {
        "parameters": [
          {
            "name": "recordData",
            "type": "any"
          }
        ],
        "statements": [
          {
            "command": "Return",
            "expression": "{text: Concat(\"<span class='blz-text-red'>\", ^recordData.properties.goalValues.remainingValue, \"</span>\")}"
          }
        ],
        "typeReturn": "obj(icon:string, text:string)",
        "variables": []
      },
      "name": "goalsTreeGrid_renderColumn_remainingGoal"
    },
    {
      "algorithm": {
        "parameters": [
          {
            "name": "recordData",
            "type": "any"
          }
        ],
        "statements": [
          {
            "command": "Set",
            "expression": "Concat(\"<span class='blz-responsive-col-12 blz-text-bold blz-text-indent-\",^recordData.indent,\"'style='line-height: 16px;'>\", ^recordData.text, \"</span>\")",
            "variableName": "text"
          },
          {
            "command": "Set",
            "expression": "\"<section id='editGoal' parameter='' onclick=\\\"RecordActionTreeGrid(this)\\\">[Icon:edit.svg]</section>\"",
            "variableName": "editButton"
          },
          {
            "command": "Set",
            "expression": "\"<section id='removeGoal' parameter='' onclick=\\\"RecordActionTreeGrid(this)\\\">[Icon:remove.svg]</section>\"",
            "variableName": "removeButton"
          },
          {
            "command": "Set",
            "expression": "Concat(\"<section class='blz-tree-grid-toolbar'>\", ^editButton, ^removeButton, \"</section>\")",
            "variableName": "toolbar"
          },
          {
            "command": "Return",
            "expression": "{text: Concat(^toolbar, ^text)}"
          }
        ],
        "typeReturn": "obj(icon:string, text:string)",
        "variables": [
          {
            "name": "text",
            "type": "string"
          },
          {
            "name": "addButton",
            "type": "string"
          },
          {
            "name": "editButton",
            "type": "string"
          },
          {
            "name": "removeButton",
            "type": "string"
          },
          {
            "name": "toolbar",
            "type": "string"
          }
        ]
      },
      "name": "goalsTreeGrid_renderColumn_rootNode"
    },
    {
      "algorithm": {
        "parameters": [],
        "statements": [
          {
            "command": "ReadModel",
            "modelVariableName": "plan",
            "variableName": "plan"
          },
          {
            "buttons": "ok-cancel",
            "command": "Open",
            "expressionIcon": "\"fork.svg\"",
            "expressionStartModel": "{planId:^plan.id}",
            "expressionTitle": "\"[[SetMainGoal]]\"",
            "mode": "right-drawer",
            "size": "default",
            "uiComponentName": "CmpSpMainGoalEditor"
          },
          {
            "children": [
              {
                "command": "Execute",
                "expression": "refresh()"
              },
              {
                "command": "CloseCurrent"
              }
            ],
            "command": "OnOk",
            "variableNameOpenedModel": "openedModel"
          }
        ],
        "typeReturn": "any",
        "variables": [
          {
            "name": "plan",
            "type": "ExtStrategicPlanMng.Plan"
          },
          {
            "name": "openedModel",
            "type": "any"
          }
        ]
      },
      "name": "goalsTreeGrid_handlerAction_addMainGoal"
    },
    {
      "algorithm": {
        "parameters": [
          {
            "name": "recordRef",
            "type": "string"
          },
          {
            "name": "arg",
            "type": "string"
          }
        ],
        "statements": [],
        "typeReturn": "any",
        "variables": []
      },
      "name": "goalsTreeGrid_handlerRecordAction_removeGoal"
    },
    {
      "algorithm": {
        "parameters": [
          {
            "name": "recordRef",
            "type": "string"
          },
          {
            "name": "arg",
            "type": "string"
          }
        ],
        "statements": [
          {
            "command": "ReadModel",
            "modelVariableName": "plan",
            "variableName": "plan"
          },
          {
            "command": "ReadRecord",
            "expressionRecordRef": "^recordRef",
            "variableName": "goalNode",
            "widgetName": "goalsTreeGrid"
          },
          {
            "command": "Set",
            "expression": "^goalNode.properties",
            "variableName": "mainGoal"
          },
          {
            "buttons": "ok-cancel",
            "command": "Open",
            "expressionIcon": "\"edit.svg\"",
            "expressionStartModel": "{planId:^plan.id, mainGoalId:^mainGoal.id}",
            "expressionTitle": "Concat(\"[[Edit]]\", \"[[Goal]]\")",
            "mode": "right-drawer",
            "size": "default",
            "uiComponentName": "CmpSpMainGoalEditor"
          },
          {
            "children": [
              {
                "command": "CloseCurrent"
              },
              {
                "command": "Execute",
                "expression": "refresh()"
              }
            ],
            "command": "OnOk",
            "variableNameOpenedModel": "openedModel"
          }
        ],
        "typeReturn": "any",
        "variables": [
          {
            "name": "goalNode",
            "type": "TreeNode"
          },
          {
            "name": "mainGoal",
            "type": "ExtStrategicPlanMng.MainGoal"
          },
          {
            "name": "plan",
            "type": "ExtStrategicPlanMng.Plan"
          },
          {
            "name": "openedModel",
            "type": "any"
          }
        ]
      },
      "name": "goalsTreeGrid_handlerRecordAction_editGoal"
    },
    {
      "algorithm": {
        "parameters": [],
        "statements": [
          {
            "command": "Execute",
            "expression": "refresh()"
          }
        ],
        "typeReturn": "any",
        "variables": []
      },
      "name": "goalsTreeGrid_handlerAction_refresh"
    },
    {
      "algorithm": {
        "parameters": [
          {
            "name": "args",
            "type": "ArgsLoadRecords"
          }
        ],
        "statements": [
          {
            "command": "ReadModel",
            "modelVariableName": "plan",
            "variableName": "plan"
          },
          {
            "command": "Set",
            "expression": "[]",
            "variableName": "nodes"
          },
          {
            "command": "Set",
            "expression": "ExtStrategicPlanMng.PlanMainGoalList(^plan.id, {name:^args.searchText, limit:^args.limit, offset:^args.offset, fields: [\"Goals\"]})",
            "variableName": "listGoals"
          },
          {
            "command": "Set",
            "expression": "Sort(^listGoals, [id])",
            "variableName": "listGoals"
          },
          {
            "children": [
              {
                "command": "Set",
                "expression": "{\n    text: ^mainGoal.name,\n    properties: {\n        id: ^mainGoal.id,\n        name: ^mainGoal.name,\n        type:^mainGoal.type,\n        description: ^mainGoal.description,\n        filters: ^mainGoal.filters,\n        goalValues: getGoalValues(^mainGoal),\n        m1:0, \n        m2:0,\n        m3:0,\n        m4:0,\n        m5:0,\n        m6:0,\n        m7:0,\n        m8:0,\n        m9:0,\n        m10:0,\n        m11:0,\n        m12:0\n    }\n}",
                "variableName": "rootNode"
              },
              {
                "children": [
                  {
                    "command": "Set",
                    "expression": "[]",
                    "variableName": "rootNode.children"
                  },
                  {
                    "command": "Execute",
                    "expression": "setGoalsChilds(^mainGoal.goals, ^rootNode)"
                  }
                ],
                "command": "If",
                "expression": "IsNotNull(^mainGoal.goals) && Count(^mainGoal.goals) > 0"
              },
              {
                "command": "Push",
                "expressionItem": "rootNode",
                "variableNameList": "nodes"
              }
            ],
            "command": "ForEach",
            "expressionList": "listGoals",
            "variableNameItem": "mainGoal"
          },
          {
            "command": "Return",
            "expression": "^nodes"
          }
        ],
        "typeReturn": "any",
        "variables": [
          {
            "name": "listGoals",
            "type": "list(ExtStrategicPlanMng.MainGoal)"
          },
          {
            "name": "rootNode",
            "type": "TreeNode"
          },
          {
            "name": "plan",
            "type": "ExtStrategicPlanMng.Plan"
          },
          {
            "name": "nodes",
            "type": "list(TreeNode)"
          },
          {
            "name": "mainGoal",
            "type": "ExtStrategicPlanMng.MainGoal"
          }
        ]
      },
      "name": "getGoals"
    },
    {
      "algorithm": {
        "parameters": [
          {
            "name": "listGoals",
            "type": "list(ExtStrategicPlanMng.Goal)"
          },
          {
            "name": "rootNode",
            "type": "TreeNode"
          }
        ],
        "statements": [
          {
            "children": [
              {
                "command": "Set",
                "expression": "{\n    text: ^goal.assignTo.name,\n    properties: {\n        id: ^goal.id,\n        name: ^goal.name,\n        type:^goal.type,\n        period: ^goal.period,\n        description: ^goal.description,\n        filters: ^goal.filters,\n        fixedAmount: ^goal.fixedAmount,\n        percentageAmount: ^goal.percentageAmount,\n        goalValues: getGoalValues(^goal),\n        m1:0, \n        m2:0,\n        m3:0,\n        m4:0,\n        m5:0,\n        m6:0,\n        m7:0,\n        m8:0,\n        m9:0,\n        m10:0,\n        m11:0,\n        m12:0\n    }\n}",
                "variableName": "childNode"
              },
              {
                "command": "Push",
                "expressionItem": "childNode",
                "variableNameList": "rootNode.children"
              },
              {
                "children": [
                  {
                    "command": "Set",
                    "expression": "[]",
                    "variableName": "childNode.children"
                  },
                  {
                    "command": "Execute",
                    "expression": "setGoalsChilds(^goal.goals, ^childNode)"
                  }
                ],
                "command": "If",
                "expression": "IsNotNull(^goal.goals)"
              }
            ],
            "command": "ForEach",
            "expressionList": "listGoals",
            "variableNameItem": "goal"
          }
        ],
        "typeReturn": "any",
        "variables": [
          {
            "name": "goal",
            "type": "ExtStrategicPlanMng.Goal"
          },
          {
            "name": "childNode",
            "type": "TreeNode"
          }
        ]
      },
      "name": "setGoalsChilds"
    },
    {
      "algorithm": {
        "parameters": [
          {
            "name": "goal",
            "type": "ExtStrategicPlanMng.Goal"
          }
        ],
        "statements": [
          {
            "command": "Set",
            "expression": "0",
            "variableName": "remainingValue"
          },
          {
            "command": "Set",
            "expression": "0",
            "variableName": "assignedValue"
          },
          {
            "command": "Set",
            "expression": "{name: ^goal.name, goalValue: ^goal.goalValue}",
            "variableName": "data"
          },
          {
            "children": [
              {
                "children": [
                  {
                    "command": "Set",
                    "expression": "^remainingValue + Nvl(^childGoal.goalValue, 0)",
                    "variableName": "remainingValue"
                  }
                ],
                "command": "ForEach",
                "expressionList": "^goal.goals",
                "variableNameItem": "childGoal"
              }
            ],
            "command": "If",
            "expression": "IsNotNull(^goal.goals)"
          },
          {
            "command": "Set",
            "expression": "^goal.goalValue - ^remainingValue",
            "variableName": "assignedValue"
          },
          {
            "command": "Set",
            "expression": "^remainingValue",
            "variableName": "data.remainingValue"
          },
          {
            "children": [
              {
                "command": "Set",
                "expression": "\"red\"",
                "variableName": "data.remainingClass"
              }
            ],
            "command": "If",
            "expression": "data.remainingValue > 0"
          },
          {
            "command": "Set",
            "expression": "^assignedValue",
            "variableName": "data.assignedValue"
          },
          {
            "command": "Return",
            "expression": "^data"
          }
        ],
        "typeReturn": "any",
        "variables": [
          {
            "name": "data",
            "type": "any"
          },
          {
            "name": "assignedValue",
            "type": "decimal"
          },
          {
            "name": "remainingValue",
            "type": "decimal"
          },
          {
            "name": "childGoal",
            "type": "ExtStrategicPlanMng.Goal"
          }
        ]
      },
      "name": "getGoalValues"
    },
    {
      "algorithm": {
        "parameters": [],
        "statements": [
          {
            "command": "SetValue",
            "expression": "getGoals({})",
            "widgetName": "goalsTreeGrid"
          }
        ],
        "typeReturn": "any",
        "variables": []
      },
      "name": "refresh"
    }
  ],
  "model": [
    {
      "name": "plan",
      "required": false,
      "type": "ExtStrategicPlanMng.Plan"
    }
  ],
  "root": {
    "children": [
      {
        "children": [
          {
            "actions": [
              {
                "icon": "add.svg",
                "key": "addMainGoal",
                "text": "[[Add]] [[MainGoal]]"
              },
              {
                "icon": "reload.svg",
                "key": "refresh",
                "text": "[[Refresh]]"
              }
            ],
            "columns": [
              {
                "align": "right",
                "bindText": "text",
                "format": "Money:2",
                "key": "rootNode"
              },
              {
                "align": "center",
                "bindText": "properties.goalValues.goalValue",
                "clicksToEdit": true,
                "columnSize": 50,
                "format": "Number:2",
                "header": "[[TotalGoal]]",
                "key": "totalGoal"
              },
              {
                "align": "center",
                "bindText": "properties.goalValues.remainingValue",
                "format": "Number:2",
                "header": "[[RemainingGoal]]",
                "key": "remainingGoal"
              },
              {
                "align": "center",
                "format": "Number:2",
                "header": "[[ProductType]]",
                "key": "productType"
              },
              {
                "align": "center",
                "bindText": "properties.m1",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M1",
                "key": "m1"
              },
              {
                "align": "center",
                "bindText": "properties.m2",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M2",
                "key": "m2"
              },
              {
                "align": "center",
                "bindText": "properties.m3",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M3",
                "key": "m3"
              },
              {
                "align": "center",
                "bindText": "properties.m4",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M4",
                "key": "m4"
              },
              {
                "align": "center",
                "bindText": "properties.m5",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M5",
                "key": "m5"
              },
              {
                "align": "center",
                "bindText": "properties.m6",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M6",
                "key": "m6"
              },
              {
                "align": "center",
                "bindText": "properties.m7",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M7",
                "key": "m7"
              },
              {
                "align": "center",
                "bindText": "properties.m8",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M8",
                "key": "m8"
              },
              {
                "align": "center",
                "bindText": "properties.m9",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M9",
                "key": "m9"
              },
              {
                "align": "center",
                "bindText": "properties.m10",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M10",
                "key": "m10"
              },
              {
                "align": "center",
                "bindText": "properties.m11",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M11",
                "key": "m11"
              },
              {
                "align": "center",
                "bindText": "properties.m12",
                "clicksToEdit": true,
                "format": "Number:2",
                "header": "M12",
                "key": "m12"
              }
            ],
            "cssClass": "blz-show-actions-hover",
            "name": "goalsTreeGrid",
            "recordActions": [
              {
                "key": "editGoal",
                "text": "[[EditGoal]]"
              },
              {
                "key": "removeGoal",
                "text": "[[RemoveGoal]]"
              }
            ],
            "title": "[[EmptyTitle]]",
            "widget": "TreeGrid",
            "withSearch": true
          }
        ],
        "cssClass": "blz-area-default",
        "layout": "fit"
      }
    ],
    "layout": "responsive"
  },
  "routing": null,
  "unused": []
}