186 lines
5.3 KiB
JavaScript
186 lines
5.3 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
|
|
}
|
|
};
|
|
}
|
|
}
|
|
})();
|