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
This commit is contained in:
Timur Sufiev 2015-03-24 14:08:34 +03:00
parent 1454a2792d
commit c00a281adb
2 changed files with 67 additions and 23 deletions

View File

@ -6,7 +6,8 @@
angular.module('mistral') angular.module('mistral')
.factory('mistral.workbook.models', .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 models = {};
var varlistValueFactory = function(json, parameters) { var varlistValueFactory = function(json, parameters) {
@ -63,6 +64,10 @@
} }
}); });
return self; return self;
},
toJSON: function() {
var json = fields.frozendict.toJSON.apply(this, arguments);
return json.value;
} }
}, { }, {
'type': { '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': { 'name': {
'@class': fields.string.extend({}, { '@class': fields.string.extend({}, {
'@meta': { '@meta': {
@ -115,7 +126,7 @@
} }
}) })
}, },
'baseInput': { 'base-input': {
'@class': fields.frozendict.extend({}, { '@class': fields.frozendict.extend({}, {
'@required': false, '@required': false,
'@meta': { '@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': { '@meta': {
'baseKey': 'task', 'baseKey': 'task',
'baseName': 'Task ', 'baseName': 'Task ',
@ -194,7 +211,7 @@
} }
}) })
}, },
'onError': { 'on-error': {
'@class': fields.list.extend({}, { '@class': fields.list.extend({}, {
'@meta': { '@meta': {
'title': 'On error', 'title': 'On error',
@ -205,7 +222,7 @@
} }
}) })
}, },
'onSuccess': { 'on-success': {
'@class': fields.list.extend({}, { '@class': fields.list.extend({}, {
'@meta': { '@meta': {
'title': 'On success', 'title': 'On success',
@ -216,7 +233,7 @@
} }
}) })
}, },
'onComplete': { 'on-complete': {
'@class': fields.list.extend({}, { '@class': fields.list.extend({}, {
'@meta': { '@meta': {
'title': 'On complete', 'title': 'On complete',
@ -228,12 +245,22 @@
}) })
}, },
'policies': { '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': { '@meta': {
'index': 8 'index': 8
}, },
'@required': false, '@required': false,
'waitBefore': { 'wait-before': {
'@class': fields.number.extend({}, { '@class': fields.number.extend({}, {
'@required': false, '@required': false,
'@meta': { '@meta': {
@ -243,7 +270,7 @@
} }
}) })
}, },
'waitAfter': { 'wait-after': {
'@class': fields.number.extend({}, { '@class': fields.number.extend({}, {
'@required': false, '@required': false,
'@meta': { '@meta': {
@ -262,7 +289,7 @@
} }
}) })
}, },
'retryCount': { 'retry-count': {
'@class': fields.number.extend({}, { '@class': fields.number.extend({}, {
'@required': false, '@required': false,
'@meta': { '@meta': {
@ -272,7 +299,7 @@
} }
}) })
}, },
'retryDelay': { 'retry-delay': {
'@class': fields.number.extend({}, { '@class': fields.number.extend({}, {
'@required': false, '@required': false,
'@meta': { '@meta': {
@ -282,7 +309,7 @@
} }
}) })
}, },
'retryBreakOn': { 'retry-break-on': {
'@class': fields.number.extend({}, { '@class': fields.number.extend({}, {
'@required': false, '@required': false,
'@meta': { '@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': { 'name': {
'@class': fields.string.extend({}, { '@class': fields.string.extend({}, {
'@meta': { '@meta': {
@ -337,7 +370,7 @@
} }
}) })
}, },
'taskDefaults': { 'task-defaults': {
'@class': fields.frozendict.extend({}, { '@class': fields.frozendict.extend({}, {
'@required': false, '@required': false,
'@meta': { '@meta': {
@ -345,7 +378,7 @@
'group': true, 'group': true,
'additive': false 'additive': false
}, },
'onError': { 'on-error': {
'@class': models.yaqllist.extend({}, { '@class': models.yaqllist.extend({}, {
'@meta': { '@meta': {
'title': 'On error', 'title': 'On error',
@ -353,7 +386,7 @@
} }
}) })
}, },
'onSuccess': { 'on-success': {
'@class': models.yaqllist.extend({}, { '@class': models.yaqllist.extend({}, {
'@meta': { '@meta': {
'title': 'On success', 'title': 'On success',
@ -361,7 +394,7 @@
} }
}) })
}, },
'onComplete': { 'on-complete': {
'@class': models.yaqllist.extend({}, { '@class': models.yaqllist.extend({}, {
'@meta': { '@meta': {
'title': 'On complete', 'title': 'On complete',
@ -396,13 +429,13 @@
}, { }, {
'version': { 'version': {
'@class': fields.number.extend({}, { '@class': fields.number.extend({}, {
'@enum': [2], '@enum': [2.0],
'@meta': { '@meta': {
'index': 2, 'index': 2,
'panelIndex': 0, 'panelIndex': 0,
'row': 1 'row': 1
}, },
'@default': 2 '@default': 2.0
}) })
}, },
'name': { 'name': {
@ -451,4 +484,4 @@
return models; return models;
}]) }])
})(); })();

View File

@ -72,14 +72,25 @@
return item; return item;
} }
function pop(obj, key) {
if ( obj.hasOwnProperty(key) ) {
var value = obj[key];
delete obj[key];
return value;
} else {
return undefined;
}
}
return { return {
getMeta: getMeta, getMeta: getMeta,
getNewId: getNewId, getNewId: getNewId,
groupByMetaKey: groupByMetaKey, groupByMetaKey: groupByMetaKey,
makeTitle: makeTitle, makeTitle: makeTitle,
getNextIDSuffix: getNextIDSuffix, getNextIDSuffix: getNextIDSuffix,
enhanceItemWithID: enhanceItemWithID enhanceItemWithID: enhanceItemWithID,
pop: pop
} }
}) })
})(); })();