From c00a281adb4033385c42c2a100b2829f754bdc4f Mon Sep 17 00:00:00 2001 From: Timur Sufiev Date: Tue, 24 Mar 2015 14:08:34 +0300 Subject: [PATCH] Fix the Workbook schema to conform the one expected by Mistral Override toJSON() method for some classes inside Workbook since it makes things simpler. Change-Id: Ia92597b3739e2e58e2e7d15c01bd143336c49e72 Closes-Bug: #1428768 --- .../mistral/js/mistral.workbook.models.js | 75 +++++++++++++------ merlin/static/merlin/js/merlin.utils.js | 15 +++- 2 files changed, 67 insertions(+), 23 deletions(-) diff --git a/extensions/mistral/static/mistral/js/mistral.workbook.models.js b/extensions/mistral/static/mistral/js/mistral.workbook.models.js index a20d0e9..fdb3eae 100644 --- a/extensions/mistral/static/mistral/js/mistral.workbook.models.js +++ b/extensions/mistral/static/mistral/js/mistral.workbook.models.js @@ -6,7 +6,8 @@ angular.module('mistral') .factory('mistral.workbook.models', - ['merlin.field.models', 'merlin.panel.models', function(fields, panel) { + ['merlin.field.models', 'merlin.panel.models', 'merlin.utils', + function(fields, panel, utils) { var models = {}; var varlistValueFactory = function(json, parameters) { @@ -63,6 +64,10 @@ } }); return self; + }, + toJSON: function() { + var json = fields.frozendict.toJSON.apply(this, arguments); + return json.value; } }, { 'type': { @@ -98,7 +103,13 @@ } }); - models.Action = fields.frozendict.extend({}, { + models.Action = fields.frozendict.extend({ + toJSON: function() { + var json = fields.frozendict.toJSON.apply(this, arguments); + delete json.name; + return json; + } + }, { 'name': { '@class': fields.string.extend({}, { '@meta': { @@ -115,7 +126,7 @@ } }) }, - 'baseInput': { + 'base-input': { '@class': fields.frozendict.extend({}, { '@required': false, '@meta': { @@ -142,7 +153,13 @@ } }); - models.Task = fields.frozendict.extend({}, { + models.Task = fields.frozendict.extend({ + toJSON: function() { + var json = fields.frozendict.toJSON.apply(this, arguments); + delete json.name; + return json; + } + }, { '@meta': { 'baseKey': 'task', 'baseName': 'Task ', @@ -194,7 +211,7 @@ } }) }, - 'onError': { + 'on-error': { '@class': fields.list.extend({}, { '@meta': { 'title': 'On error', @@ -205,7 +222,7 @@ } }) }, - 'onSuccess': { + 'on-success': { '@class': fields.list.extend({}, { '@meta': { 'title': 'On success', @@ -216,7 +233,7 @@ } }) }, - 'onComplete': { + 'on-complete': { '@class': fields.list.extend({}, { '@meta': { 'title': 'On complete', @@ -228,12 +245,22 @@ }) }, 'policies': { - '@class': fields.frozendict.extend({}, { + '@class': fields.frozendict.extend({ + toJSON: function() { + var json = fields.frozendict.toJSON.apply(this, arguments); + json.retry = { + count: utils.pop(json, 'retry-count'), + delay: utils.pop(json, 'retry-delay'), + 'break-on': utils.pop(json, 'retry-break-on') + }; + return json; + } + }, { '@meta': { 'index': 8 }, '@required': false, - 'waitBefore': { + 'wait-before': { '@class': fields.number.extend({}, { '@required': false, '@meta': { @@ -243,7 +270,7 @@ } }) }, - 'waitAfter': { + 'wait-after': { '@class': fields.number.extend({}, { '@required': false, '@meta': { @@ -262,7 +289,7 @@ } }) }, - 'retryCount': { + 'retry-count': { '@class': fields.number.extend({}, { '@required': false, '@meta': { @@ -272,7 +299,7 @@ } }) }, - 'retryDelay': { + 'retry-delay': { '@class': fields.number.extend({}, { '@required': false, '@meta': { @@ -282,7 +309,7 @@ } }) }, - 'retryBreakOn': { + 'retry-break-on': { '@class': fields.number.extend({}, { '@required': false, '@meta': { @@ -296,7 +323,13 @@ } }); - models.Workflow = fields.frozendict.extend({}, { + models.Workflow = fields.frozendict.extend({ + toJSON: function() { + var json = fields.frozendict.toJSON.apply(this, arguments); + delete json.name; + return json; + } + }, { 'name': { '@class': fields.string.extend({}, { '@meta': { @@ -337,7 +370,7 @@ } }) }, - 'taskDefaults': { + 'task-defaults': { '@class': fields.frozendict.extend({}, { '@required': false, '@meta': { @@ -345,7 +378,7 @@ 'group': true, 'additive': false }, - 'onError': { + 'on-error': { '@class': models.yaqllist.extend({}, { '@meta': { 'title': 'On error', @@ -353,7 +386,7 @@ } }) }, - 'onSuccess': { + 'on-success': { '@class': models.yaqllist.extend({}, { '@meta': { 'title': 'On success', @@ -361,7 +394,7 @@ } }) }, - 'onComplete': { + 'on-complete': { '@class': models.yaqllist.extend({}, { '@meta': { 'title': 'On complete', @@ -396,13 +429,13 @@ }, { 'version': { '@class': fields.number.extend({}, { - '@enum': [2], + '@enum': [2.0], '@meta': { 'index': 2, 'panelIndex': 0, 'row': 1 }, - '@default': 2 + '@default': 2.0 }) }, 'name': { @@ -451,4 +484,4 @@ return models; }]) -})(); \ No newline at end of file +})(); diff --git a/merlin/static/merlin/js/merlin.utils.js b/merlin/static/merlin/js/merlin.utils.js index efd3e11..0b0685a 100644 --- a/merlin/static/merlin/js/merlin.utils.js +++ b/merlin/static/merlin/js/merlin.utils.js @@ -72,14 +72,25 @@ return item; } + function pop(obj, key) { + if ( obj.hasOwnProperty(key) ) { + var value = obj[key]; + delete obj[key]; + return value; + } else { + return undefined; + } + } + return { getMeta: getMeta, getNewId: getNewId, groupByMetaKey: groupByMetaKey, makeTitle: makeTitle, getNextIDSuffix: getNextIDSuffix, - enhanceItemWithID: enhanceItemWithID + enhanceItemWithID: enhanceItemWithID, + pop: pop } }) -})(); \ No newline at end of file +})();