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">
