in ui-modules/blueprint-composer/app/components/spec-editor/spec-editor.directive.js [1236:1310]
function setModelFromLocalParameters() {
if (scope.state.parameters && scope.state.parameters.edit && scope.state.parameters.edit.item) {
let item = scope.state.parameters.edit.item;
scope.state.parameters.edit.errors = [];
if (scope.state.parameters.codeModeActive[item.name]) {
try {
let parsed = parseYamlOrJson(scope.state.parameters.edit.json);
checkNameChange(item.name, parsed.name);
if (JSON.stringify(item)==JSON.stringify(parsed)) {
// no change; don't change else we get a digest cycle
} else {
Object.keys(item).forEach((k) => delete item[k]);
Object.assign(item, parsed);
}
} catch (e) {
// $log.warn("ERROR parsing json", scope.state.parameters.edit.json, e);
scope.state.parameters.edit.errors.push({ message: "Invalid JSON for parameter" });
}
} else {
if (scope.state.parameters.edit.newName) {
if (blueprintService.isReservedKey(scope.state.parameters.edit.newName)) {
scope.state.parameters.edit.errors.push({ message: "Illegal key name" });
} else if (checkNameChange(item.name, scope.state.parameters.edit.newName)) {
item.oldName = item.name; // Parameter name change.
item.name = scope.state.parameters.edit.newName;
}
} else {
scope.state.parameters.edit.errors.push({ message: "Key name must not be blank" });
}
try {
let c = scope.state.parameters.edit.constraints ? JSON.parse(scope.state.parameters.edit.constraints) : [];
if (Array.isArray(c)) {
if (c.length==0) {
delete item['constraints'];
} else {
item.constraints = c;
}
} else {
scope.state.parameters.edit.errors.push({ message: "Constraint JSON must be a list" });
}
} catch (e) {
$log.warn("ERROR parsing constraints", scope.state.parameters.edit.constraints, e);
scope.state.parameters.edit.errors.push({ message: "Invalid constraint JSON" });
}
// empty values are removed
if (item.description === '') {
delete item['description'];
}
if (item.label === '') {
delete item['label'];
}
if (item.default === '') {
if (scope.state.parameters.edit.original.default!=='') {
// don't delete if default was explicitly set in yaml as "";
// this allows empty string defaults to be used (although you can't set them in the visual ui)
delete item['default'];
}
}
}
}
let localParams = scope.parameters;
let result = [];
for (let paramRef of localParams) {
if (angular.isUndefined(paramRef) || paramRef === null || paramRef.length < 1) {
continue;
}
result.push(paramRef);
}
scope.model.setParametersFromJson(result);
}