designate-dashboard/designatedashboard/static/designatedashboard/resources/os-designate-zone/os-designate-zone.module.js

205 lines
5.6 KiB
JavaScript

/**
* (c) Copyright 2016 Hewlett Packard Enterprise Development LP
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this 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';
/**
* @ngdoc overview
* @ngname designatedashboard.resources.os-designate-zone
*
* @description
* Provides all of the services and widgets required
* to support and display DNS (designate) zone related content.
*/
angular
.module('designatedashboard.resources.os-designate-zone', [
'ngRoute',
'designatedashboard.resources.os-designate-zone.actions',
'designatedashboard.resources.os-designate-zone.details'
])
.constant(
'designatedashboard.resources.os-designate-zone.resourceType',
'OS::Designate::Zone')
.config(config)
.run(run);
config.$inject = ['$provide', '$windowProvider'];
function config($provide, $windowProvider) {
var path = $windowProvider.$get().STATIC_URL + 'designatedashboard/resources/os-designate-zone/';
$provide.constant('designatedashboard.resources.os-designate-zone.basePath', path);
}
run.$inject = [
'horizon.app.core.detailRoute',
'horizon.framework.conf.resource-type-registry.service',
'designatedashboard.resources.os-designate-zone.api',
'designatedashboard.resources.os-designate-zone.resourceType',
'designatedashboard.resources.util'
];
function run(detailRoute,
registry,
zoneApi,
resourceTypeString,
util) {
var resourceType = registry.getResourceType(resourceTypeString);
resourceType
.setNames(gettext('DNS Zone'), gettext('DNS Zones'))
.setListFunction(listZones)
.setProperty('action', {
label: gettext('Action'),
filters: ['lowercase', 'noName'],
values: util.actionMap()
})
.setProperty('attributes', {
label: gettext('Attributes')
})
.setProperty('created_at', {
label: gettext('Created At'),
filters: ['noValue']
})
.setProperty('description', {
label: gettext('Description'),
filters: ['noName']
})
.setProperty('email', {
label: gettext('Email'),
filters: ['noName']
})
.setProperty('id', {
label: gettext('ID')
})
.setProperty('masters', {
label: gettext('Masters'),
filters: ['noValue']
})
.setProperty('name', {
label: gettext('Name'),
filters: ['noName']
})
.setProperty('pool_id', {
label: gettext('Pool ID')
})
.setProperty('project_id', {
label: gettext('Project ID')
})
.setProperty('serial', {
label: gettext('Serial'),
filters: ['noValue']
})
.setProperty('status', {
label: gettext('Status'),
filters: ['lowercase', 'noName'],
values: util.statusMap()
})
.setProperty('transferred_at', {
label: gettext('Transferred At'),
filters: ['noValue']
})
.setProperty('ttl', {
label: gettext('Time To Live'),
filters: ['noValue']
})
.setProperty('type', {
label: gettext('Type'),
filters: ['lowercase', 'noName'],
values: typeMap()
})
.setProperty('updated_at', {
label: gettext('Updated At'),
filters: ['noValue']
})
.setProperty('version', {
label: gettext('Version'),
filters: ['noValue']
});
resourceType
.tableColumns
.append({
id: 'name',
priority: 1,
sortDefault: true,
template: '<a ng-href="{$ \'' + detailRoute + 'OS::Designate::Zone/\' + item.id $}">{$ item.name $}</a>'
})
.append({
id: 'type',
filters: ['lowercase'],
values: typeMap(),
priority: 2
})
.append({
id: 'status',
filters: ['lowercase'],
values: util.statusMap(),
priority: 2
});
resourceType
.filterFacets
.append({
label: gettext('Name'),
name: 'name',
isServer: false,
singleton: true,
persistent: false
})
.append({
label: gettext('Type'),
name: 'type',
isServer: false,
singleton: true,
persistent: false,
options: [
{label: gettext('Primary'), key: 'primary'},
{label: gettext('Secondary'), key: 'secondary'}
]
})
.append({
label: gettext('Status'),
name: 'status',
isServer: false,
singleton: true,
persistent: false,
options: [
{label: gettext('Active'), key: 'active'},
{label: gettext('Pending'), key: 'pending'}
]
});
function typeMap() {
return {
'primary': gettext('Primary'),
'secondary': gettext('Secondary')
}
}
function listZones() {
return zoneApi.list().then(function onList(response) {
// listFunctions are expected to return data in "items"
response.data.items = response.data.zones;
util.addTimestampIds(response.data.items, 'id', 'updated_at');
return response;
});
}
}
})();