Upgrade project contracts to latest specs

This commit is contained in:
2018-01-07 07:37:08 -03:00
parent c7e57a0254
commit a0fa59380c
3 changed files with 36 additions and 23 deletions
+19 -7
View File
@@ -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_actions: []
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,13 +49,14 @@ 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')
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')
@@ -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 ||= []
+3 -2
View File
@@ -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', ->
+1 -1
View File
@@ -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