You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mr...@apache.org on 2017/11/27 23:29:36 UTC
[24/30] ambari git commit: Merge trunk with feature branch and fix
some UT compilation issues (mradhakrishnan)
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/create.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/create.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/create.html
index c5410c1..82f90b3 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/create.html
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/create.html
@@ -15,110 +15,237 @@
* See the License for the specific language governing permissions and
* limitations under the License.
-->
-<form class="form-horizontal" role="form" name="form.instanceCreateForm" novalidate>
+<form role="form" id="create-instance-form" name="form.instanceCreateForm" novalidate>
<div class="modal-header">
- <h3 class="modal-title">{{'views.createViewInstance' | translate}}</h3>
+ <h1 class="modal-title">
+ <span ng-if="!instanceClone">
+ {{'views.create' | translate}}
+ </span>
+ <span ng-if="instanceClone">
+ {{'views.clone' | translate}}
+ </span>
+ </h1>
</div>
-<div class="modal-body createViewModal">
- <div class="view-header">
- <img src="http://placehold.it/64x64" alt="" class="icon-big">
- <img src="http://placehold.it/32x32" alt="" class="icon-small">
- <div class="description">
- <h3>{{view.ViewVersionInfo.view_name}}</h3>
- <span>{{view.ViewVersionInfo.label}} | Version: {{view.ViewVersionInfo.version}}</span>
+<div class="modal-body" ng-hide="isLoading">
+
+ <div class="row">
+
+ <div class="form-group col-sm-6" ng-class="{ 'has-error': form.instanceCreateForm.view.$error.required && form.instanceCreateForm.submitted }">
+ <label for="view">
+ {{'views.createInstance.selectView' | translate}}<span>*</span>
+ <i class="fa fa-question-circle" aria-hidden="true"></i>
+ </label>
+ <select
+ ng-disabled="instanceClone"
+ class="form-control"
+ id="view"
+ name="view"
+ ng-model="formData.view"
+ ng-change="updateVersionOptions()"
+ ng-options="item.label for item in viewOptions"
+ required>
+ </select>
+ <span class="help-block validation-block" ng-show='form.instanceCreateForm.view.$error.required && form.instanceCreateForm.submitted'>
+ {{'common.alerts.fieldRequired' | translate}}
+ </span>
+ </div>
+
+ <div class="form-group col-sm-6" ng-class="{ 'has-error': form.instanceCreateForm.version.$error.required && form.instanceCreateForm.submitted }">
+ <label for="version">
+ {{'views.createInstance.selectVersion' | translate}}<span>*</span>
+ <i class="fa fa-question-circle" aria-hidden="true"></i>
+ </label>
+ <select
+ ng-disabled="instanceClone"
+ class="form-control"
+ id="version"
+ name="version"
+ ng-model="formData.version"
+ ng-change="updateSettingsList()"
+ ng-options="item.label for item in versionOptions">
+ </select>
+ <span class="help-block validation-block" ng-show='form.instanceCreateForm.version.$error.required && form.instanceCreateForm.submitted'>
+ {{'common.alerts.fieldRequired' | translate}}
+ </span>
</div>
</div>
-
- <div class="panel panel-default">
- <div class="panel-heading">
- <h3 class="panel-title">{{'common.details' | translate}}</h3>
- </div>
- <div class="panel-body">
- <div class="form-group"
- ng-class="{'has-error' : ( (form.instanceCreateForm.instanceNameInput.$error.required || form.instanceCreateForm.instanceNameInput.$error.pattern) && form.instanceCreateForm.submitted) || instanceExists }"
- >
- <label for="" class="control-labe col-sm-2">{{'views.instanceName' | translate}}</label>
- <div class="col-sm-10">
- <input type="text" class="form-control" name="instanceNameInput" ng-pattern="nameValidationPattern" required ng-model="instance.instance_name">
- <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.instanceNameInput.$error.required && form.instanceCreateForm.submitted'>
- {{'common.alerts.fieldRequired' | translate}}
- </div>
- <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.instanceNameInput.$error.pattern && form.instanceCreateForm.submitted'>
- {{'common.alerts.noSpecialChars' | translate}}
- </div>
- <div class="alert alert-danger no-margin-bottom top-margin" ng-show='instanceExists'>
- {{'views.alerts.instanceExists' | translate}}
- </div>
- </div>
- </div>
- <div class="form-group"
- ng-class="{'has-error' : ( (form.instanceCreateForm.displayLabel.$error.required || form.instanceCreateForm.displayLabel.$error.pattern) && form.instanceCreateForm.submitted)}">
- <label for="" class="control-labe col-sm-2">{{'common.displayLabel' | translate}}</label>
- <div class="col-sm-10">
- <input type="text" class="form-control" name="displayLabel" ng-model="instance.label" required ng-pattern="nameValidationPattern">
+ <div class="details-section">
+ <h2>{{'common.details' | translate}}</h2>
+ <div class="form-group"
+ ng-class="{ 'has-error': (form.instanceCreateForm.instanceName.$error.required || form.instanceCreateForm.instanceName.$error.pattern || isInstanceExists) && form.instanceCreateForm.submitted }">
+ <label for="instanceName">
+ {{'views.instanceName' | translate}}<span>*</span>
+ <i class="fa fa-question-circle" aria-hidden="true"></i>
+ </label>
+ <input type="text" class="form-control"
+ ng-model="formData.instanceName"
+ name="instanceName"
+ id="instanceName"
+ ng-change="checkIfInstanceExist()"
+ ng-pattern="nameValidationPattern" required>
+ <span class="help-block validation-block"
+ ng-show='form.instanceCreateForm.instanceName.$error.required && form.instanceCreateForm.submitted'>
+ {{'common.alerts.fieldRequired' | translate}}
+ </span>
+ <span class="help-block validation-block"
+ ng-show='form.instanceCreateForm.instanceName.$error.pattern && form.instanceCreateForm.submitted'>
+ {{'common.alerts.noSpecialChars' | translate}}
+ </span>
+ <span class="help-block validation-block" ng-show='isInstanceExists && form.instanceCreateForm.submitted'>
+ {{'views.alerts.instanceExists' | translate}}
+ </span>
+ </div>
- <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.displayLabel.$error.required && form.instanceCreateForm.submitted'>
- {{'common.alerts.fieldRequired' | translate}}
- </div>
- <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.displayLabel.$error.pattern && form.instanceCreateForm.submitted'>
- {{'common.alerts.noSpecialChars' | translate}}
- </div>
- </div>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-10 col-sm-offset-2">
- <button class="btn btn-default" ng-click="isAdvancedClosed = !isAdvancedClosed">{{'views.advanced' | translate}}</button>
- </div>
- </div>
- <div collapse="isAdvancedClosed">
- <div class="form-group">
- <div class="col-sm-10 col-sm-offset-2">
- <div class="checkbox">
- <label>
- <input type="checkbox" ng-model='instance.visible'> {{'views.visible' | translate}}
- </label>
- </div>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-10 col-sm-offset-2">
- <label for="" class="control-label col-sm-2">{{'views.icon' | translate}}</label>
- <div class="col-sm-10">
- <input type="text" class="form-control" name="iconUrl" ng-model="instance.icon_path">
- </div>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-10 col-sm-offset-2">
- <label for="" class="control-label col-sm-2">{{'views.icon64' | translate}}</label>
- <div class="col-sm-10">
- <input type="text" class="form-control" name="icon64Url" ng-model="instance.icon64_path">
- </div>
- </div>
- </div>
- </div>
+ <div class="form-group" ng-class="{ 'has-error': form.instanceCreateForm.displayName.$error.required && form.instanceCreateForm.submitted }">
+ <label for="displayName">
+ {{'views.displayName' | translate}}<span>*</span>
+ <i class="fa fa-question-circle" aria-hidden="true"></i>
+ </label>
+ <input type="text" class="form-control" required
+ name="displayName"
+ ng-model="formData.displayName"
+ id="displayName">
+ <span class="help-block validation-block" ng-show='form.instanceCreateForm.displayName.$error.required && form.instanceCreateForm.submitted'>
+ {{'common.alerts.fieldRequired' | translate}}
+ </span>
</div>
- <div class="panel panel-default">
- <div class="panel-heading">
- <h3 class="panel-title">{{'views.configuration' | translate}}</h3>
- </div>
- <div class="panel-body">
- <div class="form-group" ng-repeat="parameter in instance.properties"
- ng-class="{'has-error' : (form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted)}" >
- <label for="" class="col-sm-3 control-label">{{parameter.description}}</label>
- <div class="col-sm-9">
- <input type="text" class="form-control" name="{{parameter.name}}" ng-required="parameter.required" ng-model="parameter.value">
- <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted'>
- {{'common.alerts.fieldRequired' | translate}}
- </div>
+ <div class="form-group" ng-class="{ 'has-error': form.instanceCreateForm.description.$error.required && form.instanceCreateForm.submitted }">
+ <label for="description">
+ {{'views.description' | translate}}<span>*</span>
+ <i class="fa fa-question-circle" aria-hidden="true"></i>
+ </label>
+ <input type="text" class="form-control" required
+ name="description"
+ ng-model="formData.description"
+ id="description">
+ <span class="help-block validation-block" ng-show='form.instanceCreateForm.description.$error.required && form.instanceCreateForm.submitted'>
+ {{'common.alerts.fieldRequired' | translate}}
+ </span>
+ </div>
+
+ <div class="form-group checkbox">
+ <input type="checkbox" class="form-control"
+ name="visible"
+ ng-model="formData.visible"
+ id="visible">
+ <label for="visible">
+ {{'views.visible' | translate}}
+ <i class="fa fa-question-circle" aria-hidden="true"></i>
+ </label>
+ </div>
+ </div>
+
+ <div class="settings-section" ng-show="nonClusterSettingsCount">
+ <h2>{{'views.settings' | translate}}</h2>
+ <div class="form-group"
+ ng-repeat="parameter in formData.settings | filter: { clusterConfig: false }"
+ ng-class="{ 'has-error': (form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted) || form.instanceCreateForm[parameter.name].validationError }">
+ <label ng-attr-for="{{parameter.name}}">
+ {{parameter.label || parameter.displayName}}{{parameter.required ? '*' : ''}}
+ </label>
+ <input class="form-control"
+ type="{{parameter.masked ? 'password' : 'text'}}"
+ ng-required="parameter.required"
+ ng-change="form.instanceCreateForm[parameter.name].validationError=''"
+ ng-attr-name="{{parameter.name}}"
+ popover="{{parameter.description}}"
+ popover-title="{{parameter.name}}"
+ popover-trigger="mouseenter"
+ placeholder="{{parameter.placeholder}}"
+ ng-model="parameter.value"
+ ng-attr-id="{{parameter.name}}">
+ <span class="help-block validation-block" ng-show='form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted'>
+ {{'common.alerts.fieldRequired' | translate}}
+ </span>
+ <span class="help-block validation-block" ng-show='form.instanceCreateForm[parameter.name].validationError'>
+ {{form.instanceCreateForm[parameter.name].validationMessage}}
+ </span>
+ </div>
+ </div>
+
+ <div class="cluster-type-section">
+ <h2>{{'views.clusterConfiguration' | translate}}</h2>
+ <div class="form-group">
+ <label for="clusterType">
+ {{'views.createInstance.clusterType' | translate}}?
+ <i class="fa fa-question-circle" aria-hidden="true"></i>
+ </label>
+ <div>
+ <div class="btn-group" role="group" id="clusterType">
+ <button type="button" class="btn btn-default"
+ ng-class="clusterType === 'LOCAL_AMBARI' && 'active'"
+ ng-click="switchClusterType('LOCAL_AMBARI')">
+ {{'common.local' | translate}}
+ </button>
+ <button type="button" class="btn btn-default"
+ ng-class="clusterType === 'REMOTE_AMBARI' && 'active'"
+ ng-click="switchClusterType('REMOTE_AMBARI')">
+ {{'common.remote' | translate}}
+ </button>
+ <button type="button" class="btn btn-default"
+ ng-if="clusterSettingsCount && clusterConfigurable"
+ ng-class="clusterType === 'NONE' && 'active'"
+ ng-click="switchClusterType('NONE')">
+ {{'views.custom' | translate}}
+ </button>
</div>
</div>
+ </div>
+ <div class="row">
+ <div class="form-group col-sm-6" ng-class="{ 'has-error': form.instanceCreateForm.clusterName.$error.required && form.instanceCreateForm.submitted }">
+ <label for="clusterName">
+ {{'views.clusterName' | translate}}<span>*</span>
+ <i class="fa fa-question-circle" aria-hidden="true"></i>
+ </label>
+ <select
+ ng-required="clusterType !== 'NONE'"
+ ng-disabled="clusterType === 'NONE'"
+ name="clusterName"
+ ng-options="item.label for item in clusterOptions"
+ class="form-control"
+ ng-model="formData.clusterName"
+ id="clusterName">
+ </select>
+ <span class="help-block validation-block" ng-show='form.instanceCreateForm.clusterName.$error.required && form.instanceCreateForm.submitted'>
+ {{'common.alerts.fieldRequired' | translate}}
+ </span>
+ </div>
+ </div>
+ <div class="cluster-configurations-section" ng-show="clusterSettingsCount && clusterConfigurable">
+ <div class="form-group"
+ ng-repeat="parameter in formData.settings | filter: { clusterConfig: true }"
+ ng-class="{ 'has-error': (form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted) || form.instanceCreateForm[parameter.name].validationError }">
+ <label ng-attr-for="{{parameter.name}}">
+ {{parameter.label || parameter.displayName}}{{parameter.required ? '*' : ''}}
+ </label>
+ <input class="form-control"
+ ng-disabled="clusterType !== 'NONE'"
+ type="{{parameter.masked ? 'password' : 'text'}}"
+ ng-required="clusterType === 'NONE' && parameter.required"
+ ng-change="form.instanceCreateForm[parameter.name].validationError=''"
+ ng-attr-name="{{parameter.name}}"
+ popover="{{parameter.description}}"
+ popover-title="{{parameter.name}}"
+ popover-trigger="mouseenter"
+ placeholder="{{parameter.placeholder}}"
+ ng-model="parameter.value"
+ ng-attr-id="{{parameter.name}}">
+ <span class="help-block validation-block" ng-show="form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted && (clusterType === 'NONE')">
+ {{'common.alerts.fieldRequired' | translate}}
+ </span>
+ <span class="help-block validation-block" ng-show='form.instanceCreateForm[parameter.name].validationError'>
+ {{form.instanceCreateForm[parameter.name].validationMessage}}
+ </span>
</div>
</div>
-
+ </div>
+
+
+</div>
+<div ng-if="isLoading" class="spinner-container">
+ <i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
</div>
<div class="modal-footer">
<button class="btn btn-default" ng-click="cancel()">{{'common.controls.cancel' | translate}}</button>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/edit.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/edit.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/edit.html
deleted file mode 100644
index aab526e..0000000
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/edit.html
+++ /dev/null
@@ -1,138 +0,0 @@
-<!--
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you 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.
--->
-
-<div class="modal-header">
- <h3 class="modal-title">{{'views.edit' | translate}} {{instance.ViewInstanceInfo.view_name}}: {{instance.ViewInstanceInfo.label}}</h3>
-</div>
-<div class="modal-body">
- <div class="panel panel-default">
- <div class="panel-heading clearfix">
- <h3 class="panel-title pull-left">{{'views.settings' | translate}}</h3>
- <div class="pull-right">
- <a href ng-click="edit.editSettingsDisabled = !edit.editSettingsDisabled" ng-show="edit.editSettingsDisabled"> <span class="glyphicon glyphicon-cog"></span> {{'views.edit' | translate}}</a>
- </div>
- </div>
- <div class="panel-body">
- <form class="form-horizontal">
- <fieldset ng-disabled="edit.editSettingsDisabled">
- <div class="form-group">
- <label for="" class="col-sm-2 control-label">{{'views.instanceId' | translate}}</label>
- <label for="" class="col-sm-10 control-label text-left">{{instance.ViewInstanceInfo.instance_name}}</label>
- </div>
- <div class="form-group">
- <label for="" class="col-sm-2 control-label">{{'views.displayName' | translate}}</label>
- <div class="col-sm-10"><input type="text" class="form-control" placeholder="{{'views.displayName' | translate}}" ng-model="settings.label"></div>
- </div>
- <div class="form-group">
- <div class="col-sm-offset-2 col-sm-10">
- <div class="checkbox">
- <label>
- <input type="checkbox" ng-model="settings.visible"> {{'views.visible' | translate}}
- </label>
- </div>
- </div>
- </div>
- <div class="form-group" ng-hide="edit.editSettingsDisabled">
- <div class="col-sm-offset-2 col-sm-10">
- <button class="btn btn-default pull-right left-margin" ng-click="cancelSettings()">{{'common.controls.cancel' | translate}}</button>
- <button class="btn btn-primary pull-right" ng-click="saveSettings()">{{'common.controls.save' | translate}}</button>
- </div>
- </div>
- </fieldset>
- </form>
- </div>
- </div>
-
- <div class="panel panel-default views-permissions-panel" style="">
- <div class="panel-heading clearfix">
- <h3 class="panel-title pull-left">{{'views.permissions' | translate}}</h3>
- <div class="pull-right">
- <a href ng-click="edit.editPermissionDisabled = !edit.editPermissionDisabled" ng-show="edit.editPermissionDisabled"> <span class="glyphicon glyphicon-cog"></span> {{'views.edit' | translate}}</a>
- </div>
- </div>
- <div class="panel-body">
- <form class="form-horizontal">
- <div class="form-group">
- <div class="col-sm-2"></div>
- <label class="col-sm-5 control-label text-left">{{'common.users' | translate}}</label>
- <label class="col-sm-5 control-label text-left">{{'common.groups' | translate}}</label>
- </div>
- <div class="form-group" ng-repeat="permission in permissions">
- <label class="col-sm-2 control-label">{{permission.PermissionInfo.permission_name}}</label>
- <div class="col-sm-5" ng-switch="edit.editPermissionDisabled">
- <textarea name="" id="" cols="30" rows="4" class="form-control" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].USER" ng-switch-when="false"></textarea>
- <div class="well" ng-switch-when="true">
- <span ng-repeat="user in permission.USER">
- <link-to route="users.show" id="{{user}}">{{user}}</link-to>
- <button type="button" class="close remove-button"
- ng-click="removePermission(permission.name, 'USER', user)"><span aria-hidden="true">×</span><span class="sr-only">{{'common.controls.close' | translate}}</span></button>
- {{$last ? '' :', '}}
- </span>
- </div>
- </div>
- <div class="col-sm-5" ng-switch="edit.editPermissionDisabled">
- <textarea name="" id="" cols="30" rows="4" class="form-control" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].GROUP" ng-switch-when="false"></textarea>
- <div class="well" ng-switch-when="true">
- <span ng-repeat="group in permission.GROUP">
- <link-to route="groups.edit" id="{{group}}" >{{group}}</link-to>
- <button type="button" class="close remove-button"
- ng-click="removePermission(permission.name, 'GROUP', group)"><span aria-hidden="true">×</span><span class="sr-only">{{'common.controls.close' | translate}}</span></button>
- {{$last ? '' :', '}}
- </span>
- </div>
- </div>
- </div>
- <div class="form-group" ng-hide="edit.editPermissionDisabled">
- <div class="col-sm-offset-2 col-sm-10">
- <button class="btn btn-default pull-right left-margin" ng-click="cancelPermissions()">{{'common.controls.cancel' | translate}}</button>
- <button class="btn btn-primary pull-right" ng-click="savePermissions()">{{'common.controls.save' | translate}}</button>
- </div>
- </div>
- </form>
-
- </div>
- </div>
-
- <div class="panel panel-default">
- <div class="panel-heading clearfix">
- <h3 class="panel-title pull-left">{{'views.configuration' | translate}}</h3>
- <div class="pull-right">
- <a href ng-click="edit.editConfigurationDisabled = !edit.editConfigurationDisabled" ng-show="edit.editConfigurationDisabled"> <span class="glyphicon glyphicon-cog"></span> {{'views.edit' | translate}}</a>
- </div>
- </div>
- <div class="panel-body">
- <form action="" class="form-horizontal">
- <fieldset ng-disabled="edit.editConfigurationDisabled">
- <div class="form-group" ng-repeat="(propertyName, propertyValue) in configuration">
- <label for="" class="control-label col-sm-3">{{propertyName}}</label>
- <div class="col-sm-9"><input type="text" class="form-control" ng-model="configuration[propertyName]"></div>
- </div>
- <div class="form-group" ng-hide="edit.editConfigurationDisabled">
- <div class="col-sm-offset-2 col-sm-10">
- <button class="btn btn-default pull-right left-margin" ng-click="cancelConfiguration()">{{'common.controls.cancel' | translate}}</button>
- <button class="btn btn-primary pull-right" ng-click="saveConfiguration()">{{'common.controls.save' | translate}}</button>
- </div>
- </div>
- </fieldset>
- </form>
- </div>
- </div>
-</div>
-<div class="modal-footer">
- <button class="btn btn-default" ng-click="close()">{{'common.controls.save' | translate}}</button>
-</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/viewsList.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/viewsList.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/viewsList.html
new file mode 100644
index 0000000..04901f1
--- /dev/null
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/viewsList.html
@@ -0,0 +1,151 @@
+<!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you 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.
+-->
+
+<div id="views-table">
+
+ <div class="clearfix">
+ <div class="pull-right">
+ <button ng-disabled="views.length === 0" ng-click="createInstance();" class="btn btn-default">
+ {{'views.create' | translate}}
+ </button>
+ </div>
+ </div>
+
+ <table class="table table-striped table-hover">
+ <thead>
+ <tr class="fix-bottom">
+ <th class="col-md-2">
+ <span>{{'common.name' | translate}}</span>
+ </th>
+ <th class="col-md-3">
+ <span>{{'urls.url' | translate}}</span>
+ </th>
+ <th class="col-md-2">
+ <span>{{'views.table.viewType' | translate}}</span>
+ </th>
+ <th class="col-md-2">
+ <span>{{'urls.viewInstance' | translate}}</span>
+ </th>
+ <th class="col-md-2 entity-actions">
+ <span>{{'common.actions' | translate}}</span>
+ </th>
+ </tr>
+ <tr class="fix-top">
+ <th>
+ <div class="search-container">
+ <input type="text" class="form-control" placeholder="{{'common.any' | translate}}"
+ ng-model="instanceNameFilter" ng-change="filterInstances()">
+ <button type="button" class="close clearfilter" ng-show="instanceNameFilter"
+ ng-click="instanceNameFilter=''; filterInstances()">
+ <span aria-hidden="true">×</span>
+ <span class="sr-only">{{'common.controls.close' | translate}}</span>
+ </button>
+ </div>
+ </th>
+ <th>
+ <div class="search-container">
+ <input type="text" class="form-control" placeholder="{{'common.any' | translate}}"
+ ng-model="instanceUrlFilter" ng-change="filterInstances()">
+ <button type="button" class="close clearfilter" ng-show="instanceUrlFilter"
+ ng-click="instanceUrlFilter=''; filterInstances()">
+ <span aria-hidden="true">×</span>
+ <span class="sr-only">{{'common.controls.close' | translate}}</span>
+ </button>
+ </div>
+ </th>
+ <th>
+ <select class="form-control typefilter v-small-input"
+ ng-model="instanceTypeFilter"
+ ng-options="item.label for item in typeFilterOptions"
+ ng-change="filterInstances()">
+ </select>
+ </th>
+ <th></th>
+ <th></th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <tr ng-repeat="instance in instances | filter : { isShowed: true }">
+ <td>
+ <span>{{instance.short_url_name}}</span>
+ </td>
+ <td>
+ <a target="_blank"
+ href="{{fromSiteRoot('/#/main/view/' + instance.view_name + '/' + instance.short_url)}}">/main/view/{{instance.view_name}}/{{instance.short_url}}
+ <i class="fa fa-external-link" aria-hidden="true"></i></a>
+ </td>
+ <td>
+ <span>{{instance.view_name}} {{"{"+instance.version+"}"}} </span>
+ </td>
+ <td>
+ <span>{{instance.instance_name}}</span>
+ </td>
+ <td class="entity-actions" ng-switch="instance.versionObj.status">
+ <span ng-switch-when="PENDING">
+ <i class="viewstatus pending"></i>
+ {{'views.pending' | translate}}
+ </span>
+ <span ng-switch-when="DEPLOYING">
+ <div class="viewstatus deploying">
+ <div class="rect1"></div>
+ <div class="rect2"></div>
+ <div class="rect3"></div>
+ </div>
+ {{'views.deploying' | translate}}
+ </span>
+
+ <span ng-switch-when="DEPLOYED">
+ <a href="#/views/{{instance.view_name}}/versions/{{instance.version}}/instances/{{instance.instance_name}}/edit">
+ <i class="fa fa-pencil"></i>
+ </a>
+ <a href ng-click="cloneInstance(instance);">
+ <i class="fa fa-copy"></i>
+ </a>
+ <a href ng-click="deleteInstance(instance)">
+ <i class="fa fa-trash-o"></i>
+ </a>
+ </span>
+ <span ng-switch-when="ERROR" class="error" tooltip="{{'views.alerts.deployError' | translate}}">
+ <i class="fa fa-exclamation-triangle"></i>
+ {{'common.error' | translate}}
+ </span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <div ng-if="isLoading" class="spinner-container">
+ <i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
+ </div>
+ <div class="alert empty-table-alert col-sm-12" ng-show="!tableInfo.filtered && !isLoading">
+ {{'views.emptyTable'| translate}}
+ </div>
+ <div class="col-sm-12 table-bar" ng-show="instances.length >= minInstanceForPagination">
+ <div class="pull-left filtered-info">
+ <span>{{'common.filterInfo' | translate: '{showed: tableInfo.showed, total: tableInfo.filtered, term: urs.urls}'}}</span>
+ <span ng-show="isNotEmptyFilter">- <a href ng-click="clearFilters()">{{'common.controls.clearFilters' | translate}}</a></span>
+ </div>
+ <div class="pull-right left-margin">
+ <pagination class="paginator" total-items="tableInfo.filtered" max-size="maxVisiblePages" items-per-page="instancesPerPage" ng-model="currentPage" ng-change="pageChanged()"></pagination>
+ </div>
+ <div class="pull-right">
+ <select class="form-control" ng-model="instancesPerPage" ng-change="resetPagination()" ng-options="currOption for currOption in [10, 25, 50, 100]"></select>
+ </div>
+ </div>
+
+</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/authentication/main.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/authentication/main.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/authentication/main.html
index fddedb9..0275a21 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/authentication/main.html
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/authentication/main.html
@@ -58,10 +58,8 @@
</div>
</div>
<div class="form-group">
+ <input type="checkbox" id="ssl" ng-model="connectivity.ssl" class="col-sm-8">
<label for="ssl" class="control-label col-sm-4">{{'authentication.connectivity.ssl' | translate}}</label>
- <div class="col-sm-8">
- <input type="checkbox" id="ssl" ng-model="connectivity.ssl">
- </div>
</div>
<div class="form-group">
<label for="trust-store" class="control-label col-sm-4">{{'authentication.connectivity.trustStore.label' | translate}}</label>
@@ -121,12 +119,12 @@
<form class="form-horizontal" ng-submit="detectAttributes()">
<div class="form-group col-sm-12">{{'authentication.attributes.detection.label' | translate}}</div>
<div class="form-group">
+ <input type="radio" id="manual-detection" name="detection" ng-model="attributes.detection" ng-disabled="isAttributeDetectionRunning" value="manual">
<label for="manual-detection" class="col-sm-12">
- <input type="radio" id="manual-detection" name="detection" ng-model="attributes.detection" ng-disabled="isAttributeDetectionRunning" value="manual">
{{'authentication.attributes.detection.options.manual' | translate}}
</label>
+ <input type="radio" id="auto-detection" name="detection" ng-model="attributes.detection" ng-disabled="isAttributeDetectionRunning" value="auto">
<label for="auto-detection" class="col-sm-12">
- <input type="radio" id="auto-detection" name="detection" ng-model="attributes.detection" ng-disabled="isAttributeDetectionRunning" value="auto">
{{'authentication.attributes.detection.options.auto' | translate}}
</label>
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html
new file mode 100644
index 0000000..ead73c3
--- /dev/null
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html
@@ -0,0 +1,87 @@
+<!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you 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.
+-->
+
+<div id="cluster-information">
+ <div ng-show="cluster.Clusters.provisioning_state !== 'INSTALLED'">
+ <div class="welcome-header">
+ <h1>{{'main.title' | translate}}</h1>
+ <span>{{'main.noClusterDescription' | translate}}</span>
+ </div>
+ <div class="create-cluster-section">
+ <h2>{{'main.createCluster.title' | translate}}</h2>
+ <div>
+ <span>
+ {{'main.createCluster.description' | translate}}
+ </span>
+ </div>
+ <div><i class="fa fa-cloud" aria-hidden="true"></i></div>
+ <div>
+ <a href="{{fromSiteRoot('/#/installer/step0')}}" class="btn btn-primary">
+ {{'main.createCluster.launchInstallWizard' | translate}}
+ </a>
+ </div>
+ </div>
+ </div>
+
+ <div ng-show="cluster.Clusters.provisioning_state === 'INSTALLED'">
+ <form class="row" name="editClusterNameForm" ng-submit="confirmClusterNameChange()">
+ <div class="form-group col-xs-4 cluster-name"
+ ng-class="{'has-error': editClusterNameForm.clusterName.$invalid}">
+ <label for="clusterName">{{'views.clusterName' | translate}}*</label>
+ <input type="text"
+ class="form-control"
+ id="clusterName"
+ name="clusterName"
+ ng-change="toggleSaveButton()"
+ ng-model="edit.clusterName"
+ required
+ autofocus
+ ng-pattern="/^\w*$/"
+ ng-maxlength="80"
+ tooltip="{{'common.renameClusterTip' | translate}}"
+ tooltip-trigger="focus"
+ tooltip-placement="bottom"
+ ng-class="{edited: isClusterNameEdited}">
+ <button
+ type="submit"
+ ng-class="{'disabled': editClusterNameForm.clusterName.$invalid}"
+ class="btn btn-default pull-right"
+ ng-show="isClusterNameEdited">
+ {{'common.controls.save' | translate}}
+ </button>
+ </div>
+ </form>
+ <div>
+ <div class="row dev-blueprint">
+ <div class="col-sm-11"><span>{{'clusters.devBlueprint' | translate}}</span></div>
+ <div class="col-sm-1">
+ <div class="btn btn-default pull-right" ng-click="downloadBlueprint()">{{"common.download" | translate}}
+ </div>
+ </div>
+ </div>
+ <textarea type="text"
+ rows="20"
+ class="form-control"
+ name="blueprint_text"
+ ng-model="blueprint"
+ ng-disabled="true"
+ ng-readonly="true">
+ </textarea>
+ </div>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/exportBlueprint.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/exportBlueprint.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/exportBlueprint.html
deleted file mode 100644
index 6ccbffe..0000000
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/exportBlueprint.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you 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.
--->
-<div class="cluster-manage-access-pane" data-ng-init="getBlueprint()" ng-controller="ExportBlueprintCtrl">
- <div class="clearfix">
- <ol class="breadcrumb pull-left">
- <li class="active">{{clusterName}} {{'common.blueprint' | translate}}</li>
- </ol>
- <div class="pull-right top-margin-4">
- <div class="pull-right top-margin-4">
- <div class="btn btn-default" ng-click="downloadBlueprint()">{{"common.download" | translate}}</div>
- </div>
- </div>
- </div>
- <hr>
- <div>
- <textarea type="text"
- rows="20"
- class="form-control"
- name="blueprint_text"
- ng-model="blueprint"
- ng-disabled="true"
- ng-readonly="true">
- </textarea>
- </div>
-</div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/manageAccess.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/manageAccess.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/manageAccess.html
deleted file mode 100644
index a399eff..0000000
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/manageAccess.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!--
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you 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.
--->
-
-<div class="cluster-manage-access-pane">
- <div class="clearfix">
- <ol class="breadcrumb pull-left">
- <li class="active">{{clusterName}} {{'common.roles' | translate}}</li>
- </ol>
- </div>
- <hr>
- <div class="pull-right">
- <div class="layout-switch-icon-wrapper">
- <i class="glyphicon glyphicon-th-large layout-switch-icon"></i>
- <p class="label-block">{{'common.blockViewLabel' | translate}}</p>
- </div>
- <div class="layout-switch-icon-wrapper disabled">
- <i class="glyphicon glyphicon-list layout-switch-icon" ng-click="switchToList()" tooltip-html-unsafe="{{'clusters.switchToList' | translate}}"></i>
- <p class="label-list">{{'common.listViewLabel' | translate}}</p>
- </div>
- </div>
- <table class="table">
- <thead>
- <tr>
- <th class="col-sm-2" width="20%">
- <label>{{'common.roles' | translate}}</label>
- <i class="glyphicon glyphicon-question-sign green-icon cursor-pointer" ng-click="showHelpPage()"></i>
- </th>
- <th class="col-sm-5" width="40%"><label>{{'clusters.assignRoles' | translate: '{term: getConstant("common.users")}'}}</label></th>
- <th class="col-sm-5" width="40%"><label>{{'clusters.assignRoles' | translate: '{term: getConstant("common.groups")}'}}</label></th>
- </tr>
- </thead>
- <tbody>
- <tr ng-repeat="permission in permissions">
- <td><label class="" tooltip="{{permission.PermissionInfo.permission_name}}">{{permission.PermissionInfo.permission_label}}</label></td>
- <td>
- <div class="" ng-switch="isEditMode">
- <editable-list items-source="permissionsEdit[permission.PermissionInfo.permission_name].USER" resource-type="User" editable="true"></editable-list>
- </div>
- </td>
- <td>
- <div class="" ng-switch="isEditMode">
- <editable-list items-source="permissionsEdit[permission.PermissionInfo.permission_name].GROUP" resource-type="Group" editable="true"></editable-list>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-</div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/userAccessList.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/userAccessList.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/userAccessList.html
deleted file mode 100644
index 8b29157..0000000
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/userAccessList.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!--
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you 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.
--->
-
-<div class="users-pane">
- <div class="clearfix">
- <ol class="breadcrumb pull-left">
- <li class="active">{{clusterId}} {{'common.roles' | translate}}</li>
- </ol>
- </div>
- <hr>
- <div class="pull-right">
- <div class="layout-switch-icon-wrapper disabled">
- <i class="glyphicon glyphicon-th-large layout-switch-icon" ng-click="switchToBlock()" tooltip-html-unsafe="{{'clusters.switchToBlock' | translate}}"></i>
- <p class="label-block">{{'common.blockViewLabel' | translate}}</p>
- </div>
- <div class="layout-switch-icon-wrapper">
- <i class="glyphicon glyphicon-list layout-switch-icon"></i>
- <p class="label-list">{{'common.listViewLabel' | translate}}</p>
- </div>
- </div>
- <ul class="nav nav-pills">
- <li ng-class="{'active': isUserActive}"><a ng-click="switchToUser()">{{'common.users' | translate}}</a></li>
- <li ng-class="{'active': !isUserActive}"><a ng-click="switchToGroup()">{{'common.groups' | translate}}</a></li>
- </ul>
- <br/>
- <table class="table table-striped table-hover">
- <thead>
- <tr>
- <th class="role-name-column">
- <div class="search-container">
- <label for="">{{'common.name' | translate}}</label>
- <input type="text" class="form-control namefilter" placeholder="{{'common.any' | translate}}" ng-model="currentNameFilter" ng-change="resetPagination()">
- <button type="button" class="close clearfilter" ng-show="currentNameFilter" ng-click="currentNameFilter=''; resetPagination()">
- <span aria-hidden="true">×</span><span class="sr-only">{{'common.controls.close' | translate}}</span>
- </button>
- </div>
- </th>
- <th>
- <label for="">{{'clusters.role' | translate}}</label>
- <i class="glyphicon glyphicon-question-sign green-icon cursor-pointer" ng-click="showHelpPage()"></i>
- <select class="form-control statusfilter"
- ng-model="currentRoleFilter"
- ng-options="item.label for item in roleFilterOptions"
- ng-change="resetPagination()">
- </select>
- </th>
- </tr>
- </thead>
- <tbody>
- <tr ng-repeat="user in users">
- <td>
- <a href="#/{{user.url}}">{{user.principal_name}}</a>
- </td>
- <td>
- <div ng-show="!user.editable">{{user.permission_label}}</div>
- <select class="form-control role-select" ng-show="user.editable" ng-model="user.permission_name"
- ng-options="role.permission_name as role.permission_label for role in roleValueOptions">
- </select>
- <span ng-show="user.principal_type != $parent.currentTypeFilter.value"> {{'common.fromGroupMark' | translate}}</span>
- <span ng-show="user.permission_name != user.original_perm">
- <button class="btn btn-default btn-xs cancel" ng-click="cancel(user)">
- <span class="glyphicon glyphicon-remove cancel"></span>
- </button>
- <button class="btn btn-primary btn-xs" ng-click="save(user)">
- <span class="glyphicon glyphicon-ok"></span>
- </button>
- </span>
- </td>
- </tr>
- </tbody>
- </table>
- <div class="alert alert-info col-sm-12" ng-show="!users.length">
- {{'common.alerts.nothingToDisplay' | translate: '{term: (isUserActive ? constants.users : constants.groups)}'}}
- </div>
- <div class="col-sm-12 table-bar">
- <div class="pull-left filtered-info">
- <span>{{'common.filterInfo' | translate: '{showed: tableInfo.showed, total: tableInfo.total, term: (isUserActive ? constants.users : constants.groups)}'}}</span>
- <span ng-show="isNotEmptyFilter">- <a href ng-click="clearFilters()">{{'common.controls.clearFilters' | translate}}</a></span>
- </div>
- <div class="pull-right left-margin">
- <pagination class="paginator" total-items="totalUsers" max-size="maxVisiblePages" items-per-page="usersPerPage" ng-model="currentPage" ng-change="pageChanged()"></pagination>
- </div>
- <div class="pull-right">
- <select class="form-control" ng-model="usersPerPage" ng-change="usersPerPageChanges()" ng-options="currOption for currOption in [10, 25, 50, 100]"></select>
- </div>
- </div>
-</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/create.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/create.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/create.html
deleted file mode 100644
index 9a0e0fb..0000000
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/create.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you 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.
--->
-<ol class="breadcrumb">
- <li><a href="#/groups">{{'common.groups' | translate}}</a></li>
- <li class="active">{{'groups.createLocal' | translate}}</li>
-</ol>
-<hr>
-<form class="form-horizontal" role="form" novalidate name="form" autocomplete="off">
- <div class="form-group" ng-class="{'has-error' : (form.group_name.$error.required || form.group_name.$error.pattern) && form.submitted}">
- <label for="groupname" class="col-sm-2 control-label">{{'groups.name' | translate}}</label>
- <div class="col-sm-10">
- <input type="text" id="groupname" class="form-control groupname-input" name="group_name" placeholder="{{'groups.name' | translate}}" ng-model="group.group_name" required ng-pattern="/^([a-zA-Z0-9._\s]+)$/" autocomplete="off">
- <div class="alert alert-danger top-margin" ng-show="form.group_name.$error.required && form.submitted">
- {{'common.alerts.fieldIsRequired' | translate}}
- </div>
- <div class="alert alert-danger top-margin" ng-show="form.group_name.$error.pattern && form.submitted">
- {{'common.alerts.onlySimpleChars' | translate}}
- </div>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-offset-2 col-sm-10">
- <button class="btn btn-primary groupcreate-btn pull-right left-margin" ng-click="createGroup()">{{'common.controls.save' | translate}}</button>
- <a href ng-click="cancel()" class="btn btn-default pull-right cancel-button">{{'common.controls.cancel' | translate}}</a>
- </div>
- </div>
-
-</form>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html
deleted file mode 100644
index 1aafd03..0000000
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!--
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you 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.
--->
-
-<div class="clearfix">
- <ol class="breadcrumb pull-left">
- <li><a href="#/groups">{{'common.groups' | translate}}</a></li>
- <li class="active">{{group.group_name}}</li>
- </ol>
- <div class="pull-right top-margin-4">
- <div ng-switch="group.group_type != 'LOCAL'">
- <button ng-switch-when="true" class="btn disabled deletegroup-btn deleteuser-btn" tooltip="{{'common.cannotDelete' | translate: '{term: constants.group}'}}">{{'common.delete' | translate: '{term: constants.group}'}}</button>
- <button ng-switch-when="false" class="btn btn-danger deletegroup-btn" ng-click="deleteGroup(group)">{{'common.delete' | translate: '{term: constants.group}'}}</button>
- </div>
-
- </div>
-</div>
-<hr>
-<form class="form-horizontal group-edit" role="form" novalidate name="form" >
- <div class="form-group">
- <label for="" class="col-sm-2 control-label">{{'common.type' | translate}}</label>
- <div class="col-sm-10">
- <label for="" class="control-label">{{group.groupTypeName | translate}}</label>
- </div>
- </div>
- <div class="form-group">
- <label for="members" class="col-sm-2 control-label">{{group.groupTypeName | translate}} {{'groups.members' | translate}}</label>
- <div class="col-sm-10">
- <editable-list items-source="group.editingUsers" resource-type="User" editable="group.group_type == 'LOCAL'"></editable-list>
- </div>
- </div>
-
- <div class="form-group">
- <label for="" class="col-sm-2 control-label">{{'common.privileges' | translate}}</label>
- <div class="col-sm-10">
- <table class="table" ng-hide="hidePrivileges">
- <thead>
- <tr>
- <th>{{'common.cluster' | translate}}</th>
- <th>{{'common.clusterRole' | translate}}</th>
- </tr>
- </thead>
- <tbody>
- <tr ng-repeat="(name, privilege) in privileges.clusters">
- <td>
- <span class="glyphicon glyphicon-cloud"></span>
- <a href="#/clusters/{{name}}/manageAccess">{{name}}</a>
- </td>
- <td>
- <span tooltip="{{item}}" ng-repeat="item in privilege">{{item | translate}}{{$last ? '' : ', '}}</span>
- </td>
- </tr>
- <tr>
- <td ng-show="noClusterPriv">{{'common.alerts.noPrivileges' | translate: '{term: constants.cluster}'}}</td>
- </tr>
- </tbody>
- <thead class="view-permission-header">
- <tr>
- <th>{{'common.view' | translate}}</th>
- <th>{{'common.viewPermissions' | translate}}</th>
- </tr>
- </thead>
- <tbody>
- <tr ng-repeat="(name, privilege) in privileges.views">
- <td>
- <span class="glyphicon glyphicon-th"></span>
- <a href="#/views/{{privilege.view_name}}/versions/{{privilege.version}}/instances/{{name}}/edit">{{name}}</a>
- </td>
- <td>
- <span tooltip="{{item}}" ng-repeat="item in privilege.privileges">{{item | translate}}{{$last ? '' : ', '}}</span>
- </td>
- <td>
- <i class="fa fa-trash-o" aria-hidden="true" ng-click="removePrivilege(name, privilege);"></i>
- </td>
- </tr>
- <tr>
- <td ng-show="noViewPriv">{{'common.alerts.noPrivileges' | translate: '{term: constants.view}'}}</td>
- </tr>
- </tbody>
- </table>
- <div class="alert alert-info hide-soft" ng-class="{'visible' : !privileges}">{{'common.alerts.noPrivilegesDescription' | translate: '{term: constants.group.toLowerCase()}'}}</div>
- </div>
- </div>
-</form>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/list.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/list.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/list.html
deleted file mode 100644
index 8457065..0000000
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/list.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!--
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you 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.
--->
-<div class="groups-pane">
- <div class="clearfix">
- <ol class="breadcrumb pull-left">
- <li class="active">{{'common.groups' | translate}}</li>
- </ol>
- <div class="pull-right top-margin-4">
- <link-to route="groups.create" class="btn btn-primary creategroup-btn"><span class="glyphicon glyphicon-plus"></span> {{'groups.createLocal' | translate}}</link-to>
- </div>
- </div>
- <hr>
- <table class="table table-striped table-hover col-sm-12">
- <thead>
- <tr>
- <th class="col-sm-8">
- <div class="search-container">
- <label for="">{{'groups.name' | translate}}</label>
- <input type="text" class="form-control namefilter" placeholder="{{'common.any' | translate}}" ng-model="currentNameFilter" ng-change="resetPagination()">
- <button type="button" class="close" ng-show="currentNameFilter" ng-click="currentNameFilter=''; resetPagination()"><span aria-hidden="true">×</span><span class="sr-only">{{'common.controls.close' | translate}}</span></button>
- </div>
- </th>
- <th class="col-sm-2">
- <label for="">{{'common.type' | translate}}</label>
- <select class="form-control typefilter"
- ng-model="currentTypeFilter"
- ng-options="item.label for item in typeFilterOptions"
- ng-change="resetPagination();">
- </select>
- </th>
- <th class="col-sm-2 vertical-top">
- <label for="">{{'groups.members' | translate}}</label>
- </th>
- </tr>
- </thead>
- <tbody>
- <tr ng-repeat="group in groups">
- <td class="col-sm-8">
- <link-to route="groups.edit" class="link-to-group" id="{{group.group_name}}">{{group.group_name}}</link-to>
- </td>
- <td class="col-sm-2">{{group.groupTypeName | translate}}</td>
- <td class="col-sm-2">{{'groups.membersPlural' | translate: '{n: group.members && group.members.length || 0}'}}</td>
- </tr>
- </tbody>
- </table>
- <div ng-if="isLoading" class="spinner-container">
- <i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
- </div>
- <div class="alert alert-info col-sm-12" ng-show="!groups.length && !isLoading">
- {{'common.alerts.nothingToDisplay' | translate: '{term: constants.groups}'}}
- </div>
- <div class="col-sm-12 table-bar">
- <div class="pull-left filtered-info">
- <span>{{'common.filterInfo' | translate: '{showed: tableInfo.showed, total: tableInfo.total, term: constants.groups}'}}</span>
- <span ng-show="isNotEmptyFilter">- <a href ng-click="clearFilters()">{{'common.controls.clearFilters' | translate}}</a></span>
- </div>
- <div class="pull-right left-margin">
- <pagination class="paginator" total-items="totalGroups" max-size="maxVisiblePages" items-per-page="groupsPerPage" ng-model="currentPage" ng-change="pageChanged()"></pagination>
- </div>
- <div class="pull-right">
- <select class="form-control" ng-model="groupsPerPage" ng-change="groupsPerPageChanges()" ng-options="currOption for currOption in [10, 25, 50, 100]"></select>
- </div>
- </div>
-</div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html
deleted file mode 100644
index a7fc18a..0000000
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!--
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you 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.
--->
-<div class="left-navbar" xmlns="http://www.w3.org/1999/html">
- <div class="panel panel-default">
- <div class="panel-heading"><span class="glyphicon glyphicon-cloud"></span> {{'common.clusters' | translate}}</div>
- <div class="panel-body">
- <div class="cluster-section" ng-show="cluster">
- <div id="cluster-name" ng-switch on="editCluster.editingName">
- <h5 ng-switch-when="false"><div title={{cluster.Clusters.cluster_name}} class="clusterDisplayName">{{clusterDisplayName()}}</div>
- <i ng-show="cluster.Clusters.provisioning_state == 'INSTALLED'"
- ng-click="toggleEditName()"
- class="glyphicon glyphicon-edit pull-right edit-cluster-name renameCluster" tooltip="{{'common.renameCluster' | translate}}">
- </i>
- </h5>
-
- <form ng-keyup="toggleEditName($event)"
- tabindex="1"
- name="editClusterNameForm"
- class="editClusterNameForm"
- ng-switch-when="true"
- ng-submit="editCluster.name !== cluster.Clusters.cluster_name && editClusterNameForm.newClusterName.$valid && confirmClusterNameChange()">
- <div class="form-group"
- ng-class="{'has-error': editClusterNameForm.newClusterName.$invalid && !editClusterNameForm.newClusterName.$pristine }">
- <input
- autofocus
- type="text"
- name="newClusterName"
- ng-required="true"
- ng-pattern="/^\w*$/"
- ng-trim="false"
- ng-model="editCluster.name"
- class="form-control input-sm"
- ng-maxlength="80"
- tooltip="{{'common.renameClusterTip' | translate}}"
- tooltip-trigger="focus">
- <button ng-click="toggleEditName()"
- class="btn btn-xs">
- <i class="glyphicon glyphicon-remove"></i>
- </button>
- <button
- type="submit"
- class="btn btn-primary btn-xs"
- ng-class="{'disabled': editClusterNameForm.newClusterName.$invalid || editCluster.name == cluster.Clusters.cluster_name}">
- <i class="glyphicon glyphicon-ok"></i>
- </button>
- </div>
- </form>
-
- </div>
-
- <ul class="nav nav-pills nav-stacked" ng-show="cluster.Clusters.provisioning_state == 'INSTALLED' ">
- <li ng-class="{active: isActive('clusters.manageAccess') || isActive('clusters.userAccessList')}">
- <a href="#/clusters/{{cluster.Clusters.cluster_name}}/manageAccess" class="permissions">{{'common.roles' | translate}}</a>
- </li>
- <li><a href="{{fromSiteRoot('/#/dashboard')}}" class="gotodashboard">{{'common.goToDashboard' | translate}}</a></li>
- <li ng-class="{active: isActive('clusters.exportBlueprint')}">
- <a href="#/clusters/{{cluster.Clusters.cluster_name}}/exportBlueprint" class="exportblueprint">{{'common.exportBlueprint' | translate}}</a>
- </li>
- </ul>
- <span class="cluster-installation-progress-label" ng-show="cluster.Clusters.provisioning_state == 'INIT'"><a href="{{fromSiteRoot('/#/')}}">{{'common.clusterCreationInProgress' | translate}}</a></span>
- </div>
-
-
- <div ng-hide="cluster">
- <ul class="nav nav-pills nav-stacked">
- <li><p class="noclusters">{{'common.noClusters' | translate}}</p></li>
- </ul>
- </div>
- <ul class="nav nav-pills nav-stacked" >
- <li ng-class="{active: isActive('stackVersions.list')}" ng-show="cluster && totalRepos > 0">
- <a href="#/stackVersions">{{'common.versions' | translate}}</a>
- </li>
- <li ng-class="{active: isActive('remoteClusters.list')}">
- <a href="#/remoteClusters">{{'common.remoteClusters' | translate}}</a>
- </li>
- </ul>
- </div>
- </div>
-
- <div class="panel panel-default">
- <div class="panel-heading"><span class="glyphicon glyphicon-th"></span> {{'common.views' | translate}}</div>
- <div class="panel-body">
- <ul class="nav nav-pills nav-stacked">
- <li ng-class="{active: isActive('views.list')}"><link-to route="views.list" class="viewslist-link">{{'common.views' | translate}}</link-to></li>
- <li ng-class="{active: isActive('views.listViewUrls') || isActive('views.createViewUrl') || isActive('views.editViewUrl') }"><link-to route="views.listViewUrls" class="viewslistviewurls-link">{{'common.viewUrls' | translate}}</link-to></li>
- </ul>
- </div>
- </div>
-
-
- <div class="panel panel-default">
- <div class="panel-heading"><span class="glyphicon glyphicon-user"></span> {{'common.userGroupManagement' | translate}}</div>
- <div class="panel-body">
- <ul class="nav nav-pills nav-stacked">
- <li ng-class="{active: isActive('users.list')}"><link-to route="users.list" class="userslist-link">{{'common.users' | translate}}</link-to></li>
- <li ng-class="{active: isActive('groups.list')}"><link-to route="groups.list" class="groupslist-link">{{'common.groups' | translate}}</link-to></li>
- </ul>
- </div>
- </div>
-
- <div class="panel panel-default" ng-show="settings.isLoginActivitiesSupported || settings.isLDAPConfigurationSupported">
- <div class="panel-heading"><span class="glyphicon glyphicon-cog"></span> {{'common.settings' | translate}}</div>
- <div class="panel-body">
- <ul class="nav nav-pills nav-stacked">
- <li ng-class="{active: isActive('authentication.main')}" ng-show="settings.isLDAPConfigurationSupported"><link-to route="authentication.main">{{'common.authentication' | translate}}</link-to></li>
- <li ng-class="{active: isActive('loginActivities.loginMessage')}" ng-show="settings.isLoginActivitiesSupported"><link-to route="loginActivities.loginMessage">{{'common.loginActivities.loginActivities' | translate}}</link-to></li>
- </ul>
- </div>
- </div>
-</div>
-
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/main.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/main.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/main.html
deleted file mode 100644
index 3bdb80e..0000000
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/main.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!--
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you 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.
--->
-<div class="panel panel-default mainpage">
- <div class="panel-body">
- <h1>{{'main.title' | translate}}</h1>
-
- <div ng-if="isLoaded" id="main-operations-boxes" class="row thumbnails">
- <p ng-hide="cluster">{{'main.noClusterDescription' | translate}}</p>
-
- <p ng-show="cluster">{{'main.hasClusterDescription' | translate}}</p>
-
- <!--Clusters-->
- <div ng-show="cluster" class="col-sm-11 thumbnail">
- <h4 class="title">{{'main.operateCluster.title' | translate}}</h4>
-
- <div class="description">{{'main.operateCluster.description' | translate}}</div>
- <div class="glyphicon glyphicon-cloud"></div>
- <div class="buttons">
- <span ng-class="{active: isActive('clusters.manageAccess')}">
- <a ng-show="cluster.Clusters.provisioning_state != 'INSTALLED'" href class="btn btn-primary permission-button"
- ng-disabled="cluster.Clusters.provisioning_state != 'INSTALLED' ">{{'main.operateCluster.manageRoles' |
- translate}}</a>
- <a ng-show="cluster.Clusters.provisioning_state == 'INSTALLED'"
- href="#/clusters/{{cluster.Clusters.cluster_name}}/userAccessList"
- class="btn btn-primary permission-button"
- ng-disabled="cluster.Clusters.provisioning_state != 'INSTALLED' ">{{'main.operateCluster.manageRoles' |
- translate}}</a>
- </span>
- <span>
- <a ng-show="cluster.Clusters.provisioning_state != 'INSTALLED'" href
- class="btn btn-primary go-dashboard-button"
- ng-disabled="cluster.Clusters.provisioning_state != 'INSTALLED' ">{{'common.goToDashboard' |
- translate}}</a>
- <a ng-show="cluster.Clusters.provisioning_state == 'INSTALLED'"
- href="{{fromSiteRoot('/#/main/dashboard/metrics')}}" class="btn btn-primary go-dashboard-button"
- ng-disabled="cluster.Clusters.provisioning_state != 'INSTALLED' ">{{'common.goToDashboard' |
- translate}}</a>
- </span>
- </div>
- </div>
- <div ng-hide="cluster" class="col-sm-11 thumbnail">
- <h4 class="title">{{'main.createCluster.title' | translate}}</h4>
-
- <div class="description">{{'main.createCluster.description' | translate}}</div>
- <div class="glyphicon glyphicon-cloud"></div>
- <div class="buttons"><a href="{{fromSiteRoot('/#/installer/step0')}}"
- class="btn btn-primary create-cluster-button">{{'main.createCluster.launchInstallWizard'
- | translate}}</a></div>
- </div>
-
- <!--Manage Users and groups-->
- <div class="col-sm-5 thumbnail">
- <h4 class="title">{{'main.manageUsersAndGroups.title' | translate}}</h4>
-
- <div class="description">{{'main.manageUsersAndGroups.description' | translate}}</div>
- <div class="glyphicon glyphicon-user"></div>
- <div class="buttons">
- <span ng-class="{active: isActive('users.list')}"><link-to route="users.list"
- class="btn btn-primary userslist-button">
- {{'common.users' | translate}}
- </link-to></span>
- <span ng-class="{active: isActive('groups.list')}"><link-to route="groups.list"
- class="btn btn-primary groupslist-button">
- {{'common.groups' | translate}}
- </link-to></span>
- </div>
- </div>
-
- <!--Deploy Views-->
- <div class="col-sm-5 thumbnail">
- <h4 class="title">{{'main.deployViews.title' | translate}}</h4>
-
- <div class="description">{{'main.deployViews.description' | translate}}</div>
- <div class="glyphicon glyphicon-th"></div>
- <div ng-class="{active: isActive('views.list')}" class="buttons">
- <link-to route="views.list" class="btn btn-primary viewslist-button">{{'common.views' | translate}}</link-to>
- </div>
- </div>
- </div>
- </div>
-</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/modals/AddVersionModal.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/modals/AddVersionModal.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/modals/AddVersionModal.html
index 457be7b..be11e1a 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/modals/AddVersionModal.html
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/modals/AddVersionModal.html
@@ -20,9 +20,10 @@
</div>
<br>
<div class="clearfix register-version-options" ng-click="selectedLocalOption.index=1">
- <div class="option-radio-button">
- <label class="option-label">
- <input type="radio" ng-model="selectedLocalOption.index" value="1"> {{'versions.uploadFile' | translate}}
+ <div class="option-radio-button checkbox">
+ <input type="radio" id="upload-file" ng-model="selectedLocalOption.index" value="1">
+ <label for="upload-file" class="option-label">
+ {{'versions.uploadFile' | translate}}
</label>
</div>
<div class="col-sm-7 choose-file-input">
@@ -31,9 +32,10 @@
</div>
</div>
<div class="clearfix register-version-options bottom-margin" ng-click="selectedLocalOption.index=2">
- <div class="option-radio-button">
- <label class="option-label">
- <input type="radio" ng-model="selectedLocalOption.index" value="2"> {{'versions.enterURL' | translate}}
+ <div class="option-radio-button checkbox">
+ <input type="radio" id="entire-url" ng-model="selectedLocalOption.index" value="2">
+ <label for="entire-url" class="option-label">
+ {{'versions.enterURL' | translate}}
</label>
</div>
<div class="col-sm-9">
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/list.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/list.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/list.html
index 3bbf09d..59d8acb 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/list.html
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/list.html
@@ -18,17 +18,12 @@
<div class="users-pane">
<div class="clearfix">
- <ol class="breadcrumb pull-left">
- <li class="active">{{'common.remoteClusters' | translate}}</li>
- </ol>
- <div class="pull-right top-margin-4">
- <a href="#/remoteClusters/create" class="btn btn-primary">
- <span class="glyphicon glyphicon-plus"></span>
+ <div class="pull-right">
+ <a href="#/remoteClusters/create" class="btn btn-default">
{{'views.registerRemoteCluster' | translate}}
</a>
</div>
</div>
- <hr>
<table class="table table-striped table-hover">
<thead>
<tr>
@@ -63,7 +58,7 @@
<div ng-if="isLoading" class="spinner-container">
<i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
</div>
- <div class="alert alert-info col-sm-12" ng-show="!remoteClusters.length && !isLoading">
+ <div class="alert empty-table-alert col-sm-12" ng-show="!remoteClusters.length && !isLoading">
{{'common.alerts.noRemoteClusterDisplay' | translate}}
</div>
<div class="col-sm-12 table-bar">
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/sideNav.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/sideNav.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/sideNav.html
new file mode 100644
index 0000000..98a95cd
--- /dev/null
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/sideNav.html
@@ -0,0 +1,99 @@
+<!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you 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.
+-->
+
+<div id="side-nav" class="navigation-bar navigation-bar-fit-height">
+ <div class="navigation-bar-container">
+ <ul class="side-nav-header nav nav-pills nav-stacked">
+ <li class="navigation-header active">
+ <a href="{{fromSiteRoot('/#/main/dashboard')}}" class="ambari-logo">
+ <img src="/img/ambari-logo.png" alt="{{'common.apacheAmbari' | translate}}" title="{{'common.apacheAmbari' | translate}}" data-qa="ambari-logo">
+ </a>
+ <div class="btn-group">
+ <a href="{{fromSiteRoot('/#/main/dashboard')}}" class="ambari-header-link" title="{{'common.apacheAmbari' | translate}}" data-qa="ambari-title">
+ <span class="ambari-header">
+ {{'common.ambari' | translate}}
+ </span>
+ </a>
+ </div>
+ </li>
+ </ul>
+ <ul class="nav side-nav-menu nav-pills nav-stacked">
+ <li class="mainmenu-li active" ng-show="cluster.Clusters.provisioning_state === 'INSTALLED'">
+ <a title="{{'common.dashboard' | translate}}" rel="tooltip" data-placement="right" href="{{fromSiteRoot('/#/dashboard')}}" class="gotodashboard">
+ <i class="navigation-icon fa fa-tachometer" aria-hidden="true"></i>
+ <span class="navigation-menu-item">{{'common.dashboard' | translate}}</span>
+ </a>
+ </li>
+ <li class="mainmenu-li dropdown has-sub-menu">
+ <a title="{{'common.clusterManagement' | translate}}" data-toggle="collapse-sub-menu" rel="tooltip" data-placement="right">
+ <span class="toggle-icon glyphicon glyphicon-menu-down pull-right"></span>
+ <i class="navigation-icon fa fa-cloud" aria-hidden="true"></i>
+ <span class="navigation-menu-item">{{'common.clusterManagement' | translate}}</span>
+ </a>
+ <ul class="sub-menu nav nav-pills nav-stacked">
+ <li class="submenu-li" ng-class="{active: isActive('clusters.clusterInformation')}">
+ <a href="#/clusterInformation" class="clusterInformation">
+ {{'common.clusterInformation' | translate}}
+ </a>
+ </li>
+ <li class="submenu-li" ng-class="{active: isActive('stackVersions.list')}" ng-show="cluster && totalRepos > 0">
+ <a href="#/stackVersions">{{'common.versions' | translate}}</a>
+ </li>
+ <li class="submenu-li" ng-class="{active: isActive('remoteClusters.list')}">
+ <a href="#/remoteClusters">{{'common.remoteClusters' | translate}}</a>
+ </li>
+ </ul>
+ </li>
+ <li class="mainmenu-li" ng-class="{active: isActive('userManagement.main')}">
+ <link-to route="userManagement.main" class="userslist-link" title="{{'common.users' | translate}}" rel="tooltip" data-placement="right">
+ <i class="navigation-icon fa fa-users" aria-hidden="true"></i>
+ <span class="navigation-menu-item">{{'common.users' | translate}}</span>
+ </link-to>
+ </li>
+ <li class="mainmenu-li" ng-class="{active: isActive('views.list')}">
+ <link-to route="views.list" class="viewslist-link" title="{{'common.views' | translate}}" rel="tooltip" data-placement="right">
+ <i class="navigation-icon fa fa-th" aria-hidden="true"></i>
+ <span class="navigation-menu-item">{{'common.views' | translate}}</span>
+ </link-to>
+ </li>
+ <li class="mainmenu-li dropdown has-sub-menu" ng-show="settings.isLoginActivitiesSupported || settings.isLDAPConfigurationSupported">
+ <a title="{{'common.settings' | translate}}" data-toggle="collapse-sub-menu" rel="tooltip" data-placement="right">
+ <span class="toggle-icon glyphicon glyphicon-menu-down pull-right"></span>
+ <i class="navigation-icon glyphicon glyphicon-cog" aria-hidden="true"></i>
+ <span class="navigation-menu-item">{{'common.settings' | translate}}</span>
+ </a>
+ <ul class="sub-menu nav nav-pills nav-stacked">
+ <li class="submenu-li" ng-class="{active: isActive('authentication.main')}" ng-show="settings.isLDAPConfigurationSupported">
+ <link-to route="authentication.main">{{'common.authentication' | translate}}</link-to>
+ </li>
+ <li class="submenu-li" ng-class="{active: isActive('loginActivities.loginMessage')}" ng-show="settings.isLoginActivitiesSupported">
+ <link-to route="loginActivities.loginMessage">{{'common.loginActivities.loginActivities' | translate}}</link-to>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="side-nav-footer nav nav-pills nav-stacked">
+ <li class="navigation-footer">
+ <a href="#" data-toggle="collapse-side-nav">
+ <span class="navigation-icon fa fa-angle-double-left" aria-hidden="true"></span>
+ </a>
+ </li>
+ </ul>
+ </div>
+</div>
+
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html
index 3e788f8..cf5c516 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html
@@ -18,17 +18,12 @@
<div id="stack-versions">
<div class="clearfix">
- <ol class="breadcrumb pull-left">
- <li class="active">{{'common.versions' | translate}}</li>
- </ol>
- <div class="pull-right top-margin-4">
- <a href="#/stackVersions/create" class="btn btn-primary">
- <span class="glyphicon glyphicon-plus"></span>
+ <div class="pull-right">
+ <a href="#/stackVersions/create" class="btn btn-default">
{{'versions.register.title' | translate}}
</a>
</div>
</div>
- <hr/>
<table class="table table-striped table-hover">
<thead>
<tr>
@@ -99,11 +94,11 @@
<span class="label {{'status-' + repo.status}}">{{'versions.installed' | translate}}: {{repo.installedHosts}}/{{repo.totalHosts}}</span>
</div>
<div ng-show="!repo.cluster">
- <div class="btn-group display-inline-block" dropdown is-open="viewsdropdown.isopen" ng-mouseover="viewsdropdown.isopen=true" ng-mouseout="viewsdropdown.isopen=false" ng-init="viewsdropdown.isopen=false">
+ <div class="btn-group" ng-class="{open: viewsdropdown.isopen}" ng-mouseover="viewsdropdown.isopen=true" ng-mouseout="viewsdropdown.isopen=false" ng-init="viewsdropdown.isopen=false">
<a class="btn dropdown-toggle">
<span>{{'versions.installOn' | translate}}</span>
</a>
- <ul class="dropdown-menu" ng-show="viewsdropdown.isopen">
+ <ul class="dropdown-menu">
<li ng-repeat="cluster in dropDownClusters">
<a href="javascript:void(null)" ng-click="goToCluster()">
<span>{{cluster.Clusters.cluster_name}}</span>
@@ -113,14 +108,19 @@
</div>
</div>
</td>
- <td class="text-center"><input type="checkbox" data-ng-model="repo.hidden" data-ng-change="toggleVisibility(repo)" data-ng-disabled="!isHideCheckBoxEnabled(repo)"/></td>
+ <td class="text-center">
+ <div class="checkbox">
+ <input ng-attr-id="{{ 'hidden-' + repo.id }}" type="checkbox" class="form-control" data-ng-model="repo.hidden" data-ng-change="toggleVisibility(repo)" data-ng-disabled="!isHideCheckBoxEnabled(repo)"/>
+ <label ng-attr-for="{{ 'hidden-' + repo.id }}"><span></span></label>
+ </div>
+ </td>
</tr>
</tbody>
</table>
<div ng-if="isLoading" class="spinner-container">
<i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
</div>
- <div class="alert alert-info col-sm-12" ng-show="!repos.length && !isLoading">
+ <div class="alert empty-table-alert col-sm-12" ng-show="!repos.length && !isLoading">
{{'common.alerts.nothingToDisplay' | translate: '{term: getConstant("common.version")}'}}
</div>
<div class="col-sm-12 table-bar">