Upgrade project contracts to latest specs
This commit is contained in:
@@ -22,17 +22,25 @@ export default ModalBase.extend
|
||||
project = @get('model')
|
||||
component = @
|
||||
project_name = String(project.get('name')).replace(/[\W_]/g, '-')
|
||||
is_batch_project = project.get('instance_scope') is 'batch'
|
||||
@set 'download_file_name', "PANDA-contract-#{project_name}.json"
|
||||
@set 'contract', DS.PromiseObject.create
|
||||
promise: new Ember.RSVP.Promise (resolve) ->
|
||||
contract =
|
||||
generating_project: project.get('id')
|
||||
identifier: project.get('identifier')
|
||||
contract_version: 'v1'
|
||||
instance_scope: project.get('instance_scope')
|
||||
workflow_groups: []
|
||||
identifier: project.get('identifier')
|
||||
workflow_groups: []
|
||||
workflow_actions: []
|
||||
scenarios: []
|
||||
scenarios: []
|
||||
if instance_type = project.get('workflow_instance_type.name')
|
||||
contract.instance_type = instance_type
|
||||
if is_batch_project
|
||||
contract.batch_size_lower_value = project.get('batch_size_lower_value')
|
||||
contract.batch_size_upper_value = project.get('batch_size_upper_value')
|
||||
if reference_date_day_of_week = project.get('reference_date_day_of_week')
|
||||
contract.reference_date_day_of_week = reference_date_day_of_week
|
||||
project.get('sorted_workflow_groups').forEach (workflow_group) ->
|
||||
workflow_group_object =
|
||||
name: workflow_group.get('name')
|
||||
@@ -41,23 +49,24 @@ export default ModalBase.extend
|
||||
offset_base: workflow_group.get('offset_base.identifier') || null # no undefined
|
||||
scenarios: workflow_group.get('project_scenarios').mapBy('identifier')
|
||||
add_offset_to workflow_group_object, ['offset', 'duration', 'batch_element_threshold'], workflow_group
|
||||
if project.get('instance_scope') is 'batch'
|
||||
if is_batch_project
|
||||
add_offset_to workflow_group_object, 'batch_element_threshold', workflow_group
|
||||
contract.workflow_groups.push workflow_group_object
|
||||
project.get('sorted_workflow_action_definitions').forEach (workflow_action_definition) ->
|
||||
workflow_action_definition_object =
|
||||
identifier: workflow_action_definition.get('identifier')
|
||||
title: workflow_action_definition.get('title')
|
||||
extra_info: workflow_action_definition.get('extra_info')
|
||||
value_type: workflow_action_definition.get('value_type')
|
||||
identifier: workflow_action_definition.get('identifier')
|
||||
title: workflow_action_definition.get('title')
|
||||
position: workflow_action_definition.get('position')
|
||||
extra_info: workflow_action_definition.get('extra_info')
|
||||
value_type: workflow_action_definition.get('value_type')
|
||||
value_type_select_options: workflow_action_definition.get('value_type_select_options')
|
||||
overdue_coulance: workflow_action_definition.get('overdue_coulance')
|
||||
offset_type: workflow_action_definition.get('offset_type')
|
||||
workflow_group: workflow_action_definition.get('workflow_group.identifier') || null # no undefined
|
||||
confirms_workflow_action: workflow_action_definition.get('confirms_workflow_action_definition.identifier') || null # no undefined
|
||||
completes_group: workflow_action_definition.get('completes_group')
|
||||
organization: workflow_action_definition.get('organization.identifier')
|
||||
scenarios: workflow_action_definition.get('project_scenarios').mapBy('identifier')
|
||||
overdue_coulance: workflow_action_definition.get('overdue_coulance')
|
||||
offset_type: workflow_action_definition.get('offset_type')
|
||||
workflow_group: workflow_action_definition.get('workflow_group.identifier') || null # no undefined
|
||||
confirms_workflow_action: workflow_action_definition.get('confirms_workflow_action_definition.identifier') || null # no undefined
|
||||
completes_group: workflow_action_definition.get('completes_group')
|
||||
organization: workflow_action_definition.get('organization.identifier')
|
||||
scenarios: workflow_action_definition.get('project_scenarios').mapBy('identifier')
|
||||
contract.workflow_actions.push workflow_action_definition_object
|
||||
|
||||
workflow_action_definition.get('workflow_action_offsets').forEach (workflow_action_offset) ->
|
||||
@@ -66,14 +75,17 @@ export default ModalBase.extend
|
||||
if base_identifier = workflow_action_offset.get('base_workflow_action_definition.identifier')
|
||||
offset_object.base_workflow_action = base_identifier
|
||||
add_offset_to offset_object, 'offset', workflow_action_offset
|
||||
if project.get('instance_scope') is 'batch'
|
||||
if is_batch_project
|
||||
add_offset_to offset_object, 'batch_element_threshold', workflow_action_offset
|
||||
workflow_action_definition_object.action_offsets.push offset_object
|
||||
|
||||
if workflow_action_definition.get('offset_type') is 'attached'
|
||||
workflow_action_definition_object.attached_to =
|
||||
identifier: workflow_action_definition.get('workflow_action_connection.base_workflow_action_definition.identifier')
|
||||
conditional_value: workflow_action_definition.get('workflow_action_connection.conditional_base_value')
|
||||
workflow_action_definition.get('workflow_action_connections').forEach (workflow_action_connection) ->
|
||||
workflow_action_definition_object.action_connections ||= []
|
||||
connection_object =
|
||||
identifier: workflow_action_connection.get('base_workflow_action_definition.identifier')
|
||||
connection_type: workflow_action_connection.get('connection_type')
|
||||
conditional_value: workflow_action_connection.get('conditional_base_value')
|
||||
workflow_action_definition_object.action_connections.push connection_object
|
||||
|
||||
workflow_action_definition.get('workflow_action_constraints').forEach (workflow_action_constraint) ->
|
||||
workflow_action_definition_object.action_constraints ||= []
|
||||
|
||||
@@ -26,8 +26,9 @@ export default DS.Model.extend
|
||||
sorted_workflow_groups: Ember.computed.sort('workflow_groups', 'workflowGroupSort')
|
||||
sorted_workflow_action_definitions: Ember.computed 'workflow_groups.@each.position', 'workflow_action_definitions.@each.position', ->
|
||||
@get('workflow_action_definitions').map((r) ->
|
||||
base = r.get('workflow_group.position') || 100000
|
||||
r.set('absolute_sorter', base + r.get('position'))
|
||||
base = r.get('workflow_group.position')
|
||||
base = 100 unless Number.isFinite(base) # more than 100 groups is stupid, more than 200 actions in a group as well
|
||||
r.set('absolute_sorter', (200 * base) + r.get('position'))
|
||||
r
|
||||
).sortBy 'absolute_sorter'
|
||||
unassigned_workflow_action_definitions: Ember.computed 'workflow_action_definitions.@each.workflow_group.id', ->
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
and project cloning.
|
||||
In addition to this some other important objectives will be backup and project history logging.
|
||||
if contract.isFulfilled
|
||||
= format-json value=contract.content top_title='Contract'
|
||||
= format-json value=contract.content top_title='Contract' nesting_level=1
|
||||
else
|
||||
.ui.icon.message
|
||||
i.notched.circle.loading.icon
|
||||
|
||||
Reference in New Issue
Block a user