186 lines
5.2 KiB
JavaScript
186 lines
5.2 KiB
JavaScript
/**
|
|
*
|
|
* (c) Copyright 2016 Hewlett Packard Enterprise Development Company LP
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
* not use self file except in compliance with the License. You may obtain
|
|
* a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
|
|
(function () {
|
|
'use strict';
|
|
|
|
angular
|
|
.module('designatedashboard.resources.os-designate-zone.actions')
|
|
.factory('designatedashboard.resources.os-designate-zone.actions.common-forms', service);
|
|
|
|
service.$inject = [
|
|
];
|
|
|
|
/**
|
|
* Service to return a schema form config for action forms. Especially useful for forms
|
|
* like create and update that differ only in the readonly state of certain form fields.
|
|
*
|
|
* @returns {object} A schema form config
|
|
*/
|
|
function service() {
|
|
var service = {
|
|
getCreateFormConfig: getCreateFormConfig,
|
|
getUpdateFormConfig: getUpdateFormConfig
|
|
};
|
|
|
|
return service;
|
|
|
|
/////////////////
|
|
|
|
/*
|
|
* Returns the create zone form config
|
|
* @returns {{schema, form, model}|*}
|
|
*/
|
|
function getCreateFormConfig() {
|
|
return getCreateUpdateFormConfig(false);
|
|
}
|
|
|
|
/*
|
|
* Return the update zone form config
|
|
* @returns {{schema, form, model}|*}
|
|
*/
|
|
function getUpdateFormConfig() {
|
|
return getCreateUpdateFormConfig(true);
|
|
}
|
|
|
|
/*
|
|
* Return the create/update zone form. The two forms are identical except for
|
|
* during update, some fields are read-only.
|
|
*
|
|
* @param readonly - sets readonly value on form fields that change between update and create
|
|
* @returns {object} a schema form config, including default model
|
|
*/
|
|
function getCreateUpdateFormConfig(readonly) {
|
|
return {
|
|
schema: {
|
|
type: "object",
|
|
properties: {
|
|
name: {
|
|
type: "string",
|
|
pattern: /^.+\.$/
|
|
},
|
|
description: {
|
|
type: "string"
|
|
},
|
|
email: {
|
|
type: "string",
|
|
format: "email",
|
|
pattern: /^[^@]+@[^@]+$/
|
|
},
|
|
type: {
|
|
type: "string",
|
|
enum: [
|
|
"PRIMARY",
|
|
"SECONDARY"
|
|
]
|
|
},
|
|
ttl: {
|
|
type: "integer",
|
|
minimum: 1,
|
|
maximum: 2147483647
|
|
},
|
|
masters: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
properties: {
|
|
address: {
|
|
type: "string"
|
|
}
|
|
}
|
|
},
|
|
minItems: 1,
|
|
uniqueItems: true
|
|
}
|
|
}
|
|
},
|
|
form: [
|
|
{
|
|
key: "name",
|
|
readonly: readonly,
|
|
title: gettext("Name"),
|
|
description: gettext("Zone name ending in '.'"),
|
|
validationMessage: gettext("Zone must end with '.'"),
|
|
placeholder: "example.com.",
|
|
type: "text",
|
|
required: true
|
|
},
|
|
{
|
|
key: "description",
|
|
type: "textarea",
|
|
title: gettext("Description"),
|
|
description: gettext("Details about the zone.")
|
|
},
|
|
{
|
|
key: "email",
|
|
title: gettext("Email Address"),
|
|
description: gettext("Email address to contact the zone owner."),
|
|
validationMessage: gettext("Email address must contain a single '@' character"),
|
|
type: "text",
|
|
condition: "model.type == 'PRIMARY'",
|
|
required: true
|
|
},
|
|
{
|
|
key: "ttl",
|
|
title: gettext("TTL"),
|
|
description: gettext("Time To Live in seconds."),
|
|
type: "number",
|
|
condition: "model.type == 'PRIMARY'",
|
|
required: true
|
|
},
|
|
{
|
|
key: "type",
|
|
readonly: readonly,
|
|
title: gettext("Type"),
|
|
description: gettext("Select the type of zone"),
|
|
type: "select",
|
|
titleMap: [
|
|
{
|
|
value: "PRIMARY",
|
|
name: gettext("Primary")
|
|
},
|
|
{
|
|
value: "SECONDARY",
|
|
name: gettext("Secondary")
|
|
}
|
|
]
|
|
},
|
|
{
|
|
key: "masters",
|
|
readonly: readonly,
|
|
title: gettext("Masters"),
|
|
type: "array",
|
|
description: gettext("DNS master(s) for the Secondary zone."),
|
|
condition: "model.type == 'SECONDARY'",
|
|
add: gettext("Add Master"),
|
|
items: [
|
|
{
|
|
key: "masters[].address",
|
|
title: gettext("IP Address")
|
|
}
|
|
]
|
|
}
|
|
],
|
|
model: {
|
|
type: "PRIMARY",
|
|
ttl: 3600
|
|
}
|
|
};
|
|
}
|
|
}
|
|
})();
|