http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/services/alert-messages.js ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/alert-messages.js b/contrib/views/hive20/src/main/resources/ui/app/services/alert-messages.js new file mode 100644 index 0000000..ed4cff1 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/services/alert-messages.js @@ -0,0 +1,144 @@ +/** + * 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. + */ + +import Ember from 'ember'; + + +/** + Shows alert flash and also creates `alert` objects in store. If creation of + `alert` objects in store pass `options.flashOnly` as `true`. The options + required for creating the `alert` objects are: + ``` + options.message: message field returned by the API server. + options.status : Status XHR request if the message is a response to XHR request. Defaults to -1. + options.error: Detailed error to be displayed. + ``` + Options required for ember-cli-flash can also be passed in the alertOptions to override the + default behaviour. +*/ +export default Ember.Service.extend({ + flashMessages: Ember.inject.service('flash-messages'), + store: Ember.inject.service('store'), + alertsChanged: false, + + currentUnreadMessages: function() { + return this.get('store').peekAll('alert').filter((entry) => { + return entry.get('read') === false; + }); + }, + + setUnreadMessagesToRead: function() { + this.currentUnreadMessages().forEach((entry) => { + entry.set('read', true); + }); + this.toggleProperty('alertsChanged'); + }, + + currentMessagesCount: Ember.computed('alertsChanged', function() { + return this.currentUnreadMessages().get('length'); + }), + + success: function(message, options = {}, alertOptions = {}) { + this._processMessage('success', message, options, alertOptions); + }, + + warn: function(message, options = {}, alertOptions = {}) { + this._processMessage('warn', message, options, alertOptions); + }, + + info: function(message, options = {}, alertOptions = {}) { + this._processMessage('info', message, options, alertOptions); + }, + + danger: function(message, options = {}, alertOptions = {}) { + this._processMessage('danger', message, options, alertOptions); + }, + + clearMessages: function() { + this.get('flashMessages').clearMessages(); + }, + + _processMessage: function(type, message, options, alertOptions) { + this._clearMessagesIfRequired(alertOptions); + let alertRecord = this._createAlert(message, type, options, alertOptions); + if(alertRecord) { + this.toggleProperty('alertsChanged'); + message = this._addDetailsToMessage(message, alertRecord); + } + switch (type) { + case 'success': + this.get('flashMessages').success(message, this._getOptions(alertOptions)); + break; + case 'warn': + this.get('flashMessages').warning(message, this._getOptions(alertOptions)); + break; + case 'info': + this.get('flashMessages').info(message, this._getOptions(alertOptions)); + break; + case 'danger': + this.get('flashMessages').danger(message, this._getOptions(alertOptions)); + } + }, + + _addDetailsToMessage: function(message, record) { + let id = record.get('id'); + let suffix = `<a href="#/messages/${id}">(details)</a>`; + return message + " " + suffix; + }, + + _createAlert: function(message, type, options, alertOptions) { + var data = {}; + data.message = message; + data.responseMessage = options.message || ''; + data.id = this._getNextAlertId(); + data.type = type; + data.status = options.status || -1; + data.trace = this._getDetailedError(options.trace); + delete options.status; + delete options.error; + + if(alertOptions.flashOnly === true) { + return; + } + return this.get('store').createRecord('alert', data); + }, + + _getDetailedError: function(error) { + return error || ''; + }, + + _getOptions: function(options = {}) { + var defaultOptions = { + priority: 100, + showProgress: true, + timeout: 6000 + }; + return Ember.merge(defaultOptions, options); + }, + + _getNextAlertId: function() { + return this.get('store').peekAll('alert').get('length') + 1; + }, + + _clearMessagesIfRequired: function(options = {}) { + var stackMessages = options.stackMessages || false; + if(stackMessages !== true) { + this.clearMessages(); + } + } +});
http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/services/create-table.js ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/create-table.js b/contrib/views/hive20/src/main/resources/ui/app/services/create-table.js new file mode 100644 index 0000000..135f96a --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/services/create-table.js @@ -0,0 +1,182 @@ +/** + * 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. + */ + +import Ember from 'ember'; + +export default Ember.Service.extend({ + store: Ember.inject.service(), + + submitCreateTable(database, settings) { + let detailedInfo = this._getDetailedInfo(settings); + let storageInfo = this._getStorageInfo(settings); + let columns = this._getColumns(settings); + let partitionColumns = this._getPartitionColumns(settings); + + let tableInfo = Ember.Object.create({ + database: database, + table: settings.name, + columns: columns, + partitionInfo: { columns: partitionColumns }, + detailedInfo: detailedInfo, + storageInfo: storageInfo + }); + return new Promise((resolve, reject) => { + this.get('store').adapterFor('table').createTable(tableInfo).then((data) => { + this.get('store').pushPayload({job: data}); + resolve(this.get('store').peekRecord('job', data.id)); + }, (err) => { + reject(err); + }); + }); + }, + + waitForJobToComplete(jobId, after) { + return new Ember.RSVP.Promise((resolve, reject) => { + Ember.run.later(() => { + this.get('store').findRecord('job', jobId, {reload: true}) + .then((job) => { + let status = job.get('status').toLowerCase(); + if (status === 'succeeded') { + this._fetchDummyResult(jobId); + resolve(); + } else if (status === 'error') { + reject() + } else { + resolve(this.waitForJobToComplete(jobId, after)); + } + }, (error) => { + reject(error); + }); + }, after); + }); + }, + + _fetchDummyResult(jobId) { + this.get('store').adapterFor('job').fetchResult(jobId); + }, + + _getDetailedInfo(settings) { + let detailedInfo = {}; + detailedInfo['parameters'] = this._getTableProperties(settings); + + if (!Ember.isEmpty(settings.settings.location)) { + detailedInfo['location'] = settings.settings.location; + } + + return detailedInfo; + + }, + + _getStorageInfo(settings) { + const storageSettings = settings.settings; + let storageInfo = {}; + let parameters = {}; + + + + if (!(Ember.isEmpty(storageSettings.fileFormat) || Ember.isEmpty(storageSettings.fileFormat.type))) { + storageInfo.fileFormat = storageSettings.fileFormat.type; + if (storageSettings.fileFormat.type === 'CUSTOM Serde') { + storageInfo.inputFormat = storageSettings.inputFormat; + storageInfo.outputFormat = storageSettings.outputFormat; + } + } + + if (!Ember.isEmpty(storageSettings.rowFormat)) { + let addParameters = false; + if (!Ember.isEmpty(storageSettings.rowFormat.fieldTerminatedBy)) { + parameters['field.delim'] = String.fromCharCode(storageSettings.rowFormat.fieldTerminatedBy.id); + addParameters = true; + } + + if (!Ember.isEmpty(storageSettings.rowFormat.linesTerminatedBy)) { + parameters['line.delim'] = String.fromCharCode(storageSettings.rowFormat.linesTerminatedBy.id); + addParameters = true; + } + + if (!Ember.isEmpty(storageSettings.rowFormat.nullDefinedAs)) { + parameters['serialization.null.format'] = String.fromCharCode(storageSettings.rowFormat.fieldTerminatedBy.id); + addParameters = true; + } + + if (!Ember.isEmpty(storageSettings.rowFormat.escapeDefinedAs)) { + parameters['escape.delim'] = String.fromCharCode(storageSettings.rowFormat.linesTerminatedBy.id); + addParameters = true; + } + + if (addParameters) { + storageInfo.parameters = parameters; + } + } + + if (!Ember.isEmpty(settings.settings.numBuckets)) { + storageInfo['numBuckets'] = settings.settings.numBuckets; + } + + let clusteredColumnNames = settings.columns.filterBy('isClustered', true).map((column) => { + return column.get('name'); + }); + + if (clusteredColumnNames.length > 0) { + storageInfo['bucketCols'] = clusteredColumnNames; + } + + return storageInfo; + }, + + _getColumns(settings) { + return settings.columns.filterBy('isPartitioned', false).map((column) => { + return { + name: column.get('name'), + type: column.get('type.label'), + comment: column.get('comment'), + precision: column.get('precision'), + scale: column.get('scale') + } + }); + }, + + _getPartitionColumns(settings) { + return settings.columns.filterBy('isPartitioned', true).map((column) => { + return { + name: column.get('name'), + type: column.get('type.label'), + comment: column.get('comment'), + precision: column.get('precision'), + scale: column.get('scale') + } + }); + }, + + _getTableProperties(settings) { + let properties = {}; + settings.properties.forEach(function (property) { + properties[property.key] = property.value; + }); + + if (settings.settings.transactional) { + if (Ember.isEmpty(properties['transactional'])) { + properties['transactional'] = true; + } + } + + return properties; + } + + +}); http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/services/jobs.js ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/jobs.js b/contrib/views/hive20/src/main/resources/ui/app/services/jobs.js new file mode 100644 index 0000000..4928e5c --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/services/jobs.js @@ -0,0 +1,28 @@ +/** + * 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. + */ + +import Ember from 'ember'; + +export default Ember.Service.extend({ + store: Ember.inject.service(), + getQuery(jobId) { + return this.get('store').findRecord('job', jobId).then((job) => { + return this.get('store').findRecord('file', job.get('queryFile')); + }) + } +}); http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/services/keep-alive.js ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/keep-alive.js b/contrib/views/hive20/src/main/resources/ui/app/services/keep-alive.js new file mode 100644 index 0000000..6bb12fb --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/services/keep-alive.js @@ -0,0 +1,31 @@ +/** + * 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. + */ + +import Ember from 'ember'; + +export default Ember.Service.extend({ + store: Ember.inject.service(), + initialize: function() { + this.schedulePing(); + }, + + schedulePing() { + this.get('store').adapterFor('ping').ping(); + Ember.run.later(this.schedulePing.bind(this), 60000); + } +}); http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/services/query.js ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/query.js b/contrib/views/hive20/src/main/resources/ui/app/services/query.js new file mode 100644 index 0000000..5a2f62d --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/services/query.js @@ -0,0 +1,45 @@ +/** + * 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. + */ + +import Ember from 'ember'; + +export default Ember.Service.extend({ + + store: Ember.inject.service(), + + createJob(payload){ + return new Promise( (resolve, reject) => { + this.get('store').adapterFor('query').createJob(payload).then(function(data) { + resolve(data); + }, function(err) { + reject(err); + }); + }); + }, + getJob(jobId, dateSubmitted, firstCall){ + let self = this; + return new Promise( (resolve, reject) => { + this.get('store').adapterFor('query').getJob(jobId, dateSubmitted, firstCall).then(function(data) { + resolve(data); + }, function(err) { + reject(err); + }); + }); + } + +}); http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss b/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss new file mode 100644 index 0000000..812ae92 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss @@ -0,0 +1,774 @@ +/** + * 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. + */ + +@import 'bootstrap-overrides'; +@import 'fonts'; + +@import "ember-modal-dialog/ember-modal-structure"; +@import "ember-modal-dialog/ember-modal-appearance"; + +@import "power-select-overrides"; + + +.ember-modal-dialog { + box-shadow: 0 0 5px grey; + padding: 0; +} +.ember-modal-overlay.translucent { + z-index: 110; + background-color: rgba(#808080, .77); +} + + +.main-wrapper { + padding: 5px 0; + background-color: #fff; + height: 100%; +} + +.fa-2 { + font-size: 2em; +} + +$database-search-background: lighten($body-bg, 10%); +$database-search-text-color: $gray; +.database-search, .multiple-database-search { + color: $database-search-text-color; + padding: 10px; + border: 1px solid darken($database-search-background, 25%); + background-color: $database-search-background; + border-collapse: collapse; + margin-bottom: 10px; + + p { + margin-bottom: 5px; + } + + .btn { + color: $database-search-text-color; + } + + .ember-power-select-trigger{ + border: 1px solid darken($database-search-background, 25%); + line-height: 3.2em; + } + + .ember-power-select-trigger-multiple-input { + font-size: 18px; + padding: 0 16px; + } +} + +.ember-power-select-option[aria-current="true"]{ + color: #555; + background-color: #f5f5f5; +} + +.ember-power-select-multiple-option { + border-radius: 3px; + border: 1px solid #ddd; + color: #555; + background-color: #e4e4e4; + padding: 0 4px; + display: inline-block; + line-height: 2; + float: left; + margin: 5px 0 2px 3px; +} + +.ember-power-select-dropdown.ember-basic-dropdown-content--below, .ember-power-select-dropdown.ember-basic-dropdown-content--in-place { + border-top: none; + border-bottom: 1px solid #64A5ED; + border-top-left-radius: 0; + border-top-right-radius: 0; + border: 1px solid darken($database-search-background, 25%); +} + + +.database-search-drawer { + position: absolute; + max-height: 300px; + width: calc(100% - 157px); + z-index: 1000; + background-color: $database-search-background; + border: 1px solid darken($database-search-background, 25%); + overflow-y: auto; + border-top: none; + + .list-group { + margin: 0; + font-size: 1.2em; + .list-group-item { + border-color: darken($database-search-background, 10%); + i { + &.noshow { + visibility: hidden; + } + } + } + } +} + +$list-filter-header-background: lighten($body-bg, 10%); +$list-filter-text-color: $gray; + +.list-filter { + color: $list-filter-text-color; + .list-header { + p { + margin: 0; + } + padding: 15px 10px; + background-color: $list-filter-header-background; + border: 1px solid darken($list-filter-header-background, 15%); + } + .am-view-list-item { + &.active { + color: inherit; + background-color: #FEF5DD; + border: 1px solid darken($list-filter-header-background, 15%); + } + } +} + +.table-list { + .list-group-item { + background-color: lighten($body-bg, 10%); + } +} + +.search-bar { + padding: 0 10px; + background-color: darken($list-filter-header-background, 10%); + position: relative; + input { + width: calc(100% - 2.5em); + height: 2.8em; + background-color: transparent; + border: none; + margin-right: 10px; + outline: none; + } + + a { + color: inherit; + } +} + +$table-info-background: lighten($body-bg, 10%); +.table-info { + + background-color: $body-bg; + .table-header { + border: 1px solid darken($table-info-background, 15%); + p { + margin: 0; + } + padding: 15px 15px; + background-color: $table-info-background; + } + .table-body { + table { + background-color: $table-info-background; + margin: 0; + border: none; + + thead { + background-color: $gray-dark; + color: #fff; + } + } + } +} + +.table-name-input { + padding-top: 10px; + margin-bottom: -1px; + border-bottom: 1px solid darken($table-info-background, 25%); +} + +pre { + &.table-info-json { + border: none; + background-color: inherit; + } +} + +.dipayan { + .CodeMirror { + height: 100vh; + } +} + +.dipayan123 { + background-color: lighten($body-bg, 5%); + height: calc(100vh - 180px); + overflow-y: scroll; +} + +.hv-dropdown { + position: absolute; + .dropdown-menu { + margin-top: -1px; + padding: 0; + min-width: 200px; + a { + line-height: 1.5em; + font-size: 1em; + padding: 5px 15px 5px 15px; + &:hover { + background-color: #FEF5DD; + } + i { + padding-right: 10px; + } + } + } + + &.tables-dropdown { + z-index: 100; + top: 8px; + right: 15px; + } + + &.database-dropdown { + top: 18px; + right: 30px; + } +} + +.new-settings { + background-color: #FEF5DD; + a { + text-decoration: none; + display: block; + width: 100% + } +} + +.create-table-inner { + //min-height: 400px; +} + +.create-table-controls { + padding-top: 15px; + padding-bottom: 15px; +} + +.column-precision { + width: 100%; + padding-top: 5px; + input { + width: 50%; + //padding-right: 5px; + } +} + +.query-editor { + border: 1px solid darken($database-search-background, 25%); + margin-right: 0; +} + +.query-editor-controls { + padding-top: 15px; + padding-bottom: 15px; +} + +.database-panel{ + + .panel-heading { + border: 1px solid #ddd; + } + .panel-default{ + border: 0; + .panel-body{ + padding: 0; + } + } + + .list-header{ + display: none; + } + + .empty { + border: 1px solid #ddd; + border-top: none; + padding: 10px 15px; + } +} + +.hdfs-viewer { + .modal-header { + p { + margin-top: 10px; + margin-bottom: 0; + } + } + .hdfs-viewer-wrap { + max-height: 300px; + border: 1px solid darken($table-info-background, 15%); + overflow-y: scroll; + } +} + +.create-table-advanced-wrap { + padding: 10px; +} + +.fileformat-custom-row { + margin-top: 10px; + border-top: 1px solid darken($table-info-background, 15%); + padding-top: 10px; +} + +.rowformat-custom-row { + a { + i { + margin-top: 10px; + } + } +} + +.alert { + &.create-table-error { + margin: 0; + } +} + + +.query-result-table{ + + .spinner, + .tip { + text-align: center + } + + .spinner { + margin: 15px auto; + width: 50px; + height: 50px; + font-size: 10px + } + + .spinner>div { + background-color: #dd6a58; + height: 100%; + width: 4px; + display: inline-block; + animation: sk-stretchdelay 1.2s infinite ease-in-out + } + + .spinner .rect2 { + animation-delay: -1.1s + } + + .spinner .rect3 { + animation-delay: -1s + } + + .spinner .rect4 { + animation-delay: -.9s + } + + .spinner .rect5 { + animation-delay: -.8s + } + + @keyframes sk-stretchdelay { + 0%, + 100%, + 40% { + transform: scaleY(.4); + -webkit-transform: scaleY(.4) + } + 20% { + transform: scaleY(1); + -webkit-transform: scaleY(1) + } + } + + .ember-light-table { + width: 95%; + margin: 0 auto; + border-collapse: collapse + } + + .ember-light-table .multi-select { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none + } + + .ember-light-table tfoot .lt-column { + border-top: 1px solid #DADADA + } + + .ember-light-table thead .lt-column { + border-bottom: 1px solid #DADADA + } + + .ember-light-table tfoot th.is-dragging, + .ember-light-table thead th.is-dragging { + opacity: .75; + background: #eee + } + + .ember-light-table tfoot th.is-drag-target.drag-right, + .ember-light-table thead th.is-drag-target.drag-right { + border-right: 1px dotted #DADADA + } + + .ember-light-table tfoot th.is-drag-target.drag-left, + .ember-light-table thead th.is-drag-target.drag-left { + border-left: 1px dotted #DADADA + } + + .ember-light-table .lt-column { + font-weight: 200; + font-size: 12px; + padding: 10px + } + + .ember-light-table .lt-column .lt-sort-icon { + width: 15px + } + + .ember-light-table .lt-column.lt-group-column { + border: none!important; + padding-bottom: 10px + } + + .ember-light-table .lt-column .lt-column-resizer { + border-right: 1px dashed #ccc; + border-left: 1px dashed #ccc + } + + .ember-light-table .lt-row { + height: 50px + } + + .ember-light-table .lt-row.is-selected { + background-color: #DEDEDE!important + } + + .ember-light-table .lt-row:not(.is-selected):hover { + background-color: #F5F4F4!important + } + + .ember-light-table .lt-row:last-of-type td { + border-bottom-width: 0 + } + + .ember-light-table .lt-row.lt-expanded-row:hover, + .ember-light-table .lt-row.lt-no-data:hover { + background-color: transparent!important + } + + .ember-light-table .lt-row.lt-expanded-row td, + .ember-light-table .lt-row.lt-no-data td { + padding: 15px + } + + .ember-light-table .lt-row td { + border-color: #DADADA; + border-width: 0 0 1px; + border-style: solid; + font-size: 13px; + padding: 0 10px + } + + tfoot tr>td { + border-top: 1px solid #DADADA; + padding: 10px 10px 0; + font-size: 13px + } + + tfoot form { + display: -ms-flexbox; + display: flex; + -ms-flex-pack: justify; + justify-content: space-between + } + + body, + html { + min-height: 100%; + min-width: 100%; + background-color: #F3F3F3; + height: 100% + } + + label { + font-weight: 600 + } + + .navbar.navbar-default { + background-color: #fff; + margin: 0 + } + + .navbar.navbar-default .navbar-brand { + color: #797979; + font-size: 16px; + font-weight: 400 + } + + .navbar.navbar-default .navbar-brand img { + height: 32px; + display: inline-block; + margin-top: -15px + } + + .navbar.navbar-default .navbar-brand span { + font-size: 12px; + vertical-align: super; + text-transform: uppercase; + color: #444 + } + + .navbar.navbar-default .navbar-nav>li>a { + font-size: 14px; + font-weight: 200 + } + + .navbar.navbar-default .navbar-nav>li>a.github { + font-size: 24px + } + + .navbar.navbar-default .navbar-nav>li>a:focus, + .navbar.navbar-default .navbar-nav>li>a:hover { + color: #dd6a58 + } + + .navbar.navbar-default .navbar-nav>.active>a, + .navbar.navbar-default .navbar-nav>.active>a:focus, + .navbar.navbar-default .navbar-nav>.active>a:hover { + color: #dd6a58; + background-color: transparent + } + + .panel { + width: 75%; + margin: 2.5% auto; + position: relative + } + + .panel .table-actions { + position: absolute; + left: -41px; + width: 40px; + background-color: #fff; + border-bottom-left-radius: 5px; + border-top-left-radius: 5px; + border: 1px solid #ccc; + border-right-width: 0; + top: 35%; + cursor: pointer + } + + .panel .table-actions .table-action { + font-size: 20px; + text-align: center; + display: block; + margin: 10px; + color: #191919; + opacity: .8 + } + + .panel .table-actions .table-action:active, + .panel .table-actions .table-action:hover { + opacity: 1 + } + + .panel .table-actions .table-action.delete { + color: #dd6a58 + } + + .panel .panel-heading { + background-color: #dd6a58; + padding: 0 + } + + .panel .panel-heading a { + color: #F9F9F9; + text-decoration: none + } + + .panel .panel-heading a .panel-title { + font-weight: 200; + padding: 15px + } + + .panel .code-snippet { + background-color: #f8f8f8; + max-height: 500px; + overflow: auto + } + + .panel .code-snippet .nav-tabs li>a { + color: #8A8A8A; + border-radius: 2px 2px 0 0; + font-size: 12px + } + + .panel .code-snippet .nav-tabs li.active>a { + background-color: #f8f8f8; + color: #696969 + } + + .panel .code-snippet .tab-content>.active { + padding: 15px 15px 0 + } + + .panel .code-snippet pre { + border: none; + margin: 0; + padding: 0 + } + + .table-container { + overflow-y: auto + } + + .table-container.fixed-header { + overflow-y: hidden; + margin-bottom: 15px + } + + .user-actions a { + color: #dd6a58; + padding-right: 10px; + font-size: 18px; + width: 30px; + text-decoration: none; + cursor: pointer; + padding-top: 10px + } + + .user-actions a:active, + .user-actions a:focus, + .user-actions a:hover { + color: #d95743 + } + + .user-avatar { + border-radius: 50%; + border: 1px solid #ccc + } + + .row-toggle { + color: #dd6a58; + cursor: pointer + } + + .row-toggle:active, + .row-toggle:focus, + .row-toggle:hover { + color: #d95743 + } + + .tip { + font-size: 13px; + color: #4E4E4E + } + + .tip .icon-info { + color: #dd6a58; + margin-right: 3px + } + + form .form-group input, + form .form-group select { + outline: 0; + display: block; + width: 100%; + padding: 0 15px; + border: 1px solid #d9d9d9; + color: #6E6E6E; + font-family: Roboto, sans-serif; + -webkti-box-sizing: border-box; + box-sizing: border-box; + font-size: 14px; + font-weight: 400; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transition: all .3s linear 0s; + box-shadow: none + } + + form .form-group input:focus, + form .form-group select:focus { + color: #333; + border-color: #b9b9b9; + outline: 0; + box-shadow: none; + -webkit-box-shadow: none + } + +} + +.flash-messages-wrap { + position: absolute; + width: 40%; + min-width: 575px; + left: 50%; + margin-left: -20%; + z-index: 1000; +} + +.flash-messages { + border-radius: $border-radius-large; + .alert-icon { + float: left; + margin-right: 15px; + } + + .alert-message-wrap { + display: table; + min-height: 56px; + .alert-message { + display: table-cell; + vertical-align: middle; + } + } + +} + +.jobs-status { + border-top: 1px solid darken($body-bg, 10%); + border-bottom: 1px solid darken($body-bg, 10%); + .strip { + margin-top: 25px; + } +} + +.jobs-table { + margin-top: 10px; +} + + + + + + + + + + http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/styles/bootstrap-overrides.scss ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/styles/bootstrap-overrides.scss b/contrib/views/hive20/src/main/resources/ui/app/styles/bootstrap-overrides.scss new file mode 100644 index 0000000..ee9d373 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/styles/bootstrap-overrides.scss @@ -0,0 +1,51 @@ +/** + * 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. + */ + +$font-family-sans-serif: 'Roboto', "Helvetica Neue", Helvetica, Arial, sans-serif; + +$body-bg: #e1e1e0; +$border-radius-base: 3px; +$border-radius-large: 4px; +$border-radius-small: 2px; + + +// nav-tabs +$nav-link-padding: 10px 20px !default; +$nav-tabs-border-color: darken($body-bg, 15%); +$nav-tabs-link-hover-border-color: darken($body-bg, 15%); +$nav-tabs-active-link-hover-bg: #fff; +$nav-tabs-active-link-hover-border-color: darken($body-bg, 15%); + +@import 'bootstrap'; + +.nav-tabs { + &.inverse { + li.active { + a { + background-color: $gray-dark; + color: #fff; + } + } + } + li { + a { + font-weight: bold; + color: darken($body-bg, 50%); + } + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/styles/fonts.scss ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/styles/fonts.scss b/contrib/views/hive20/src/main/resources/ui/app/styles/fonts.scss new file mode 100644 index 0000000..c22e38b --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/styles/fonts.scss @@ -0,0 +1,31 @@ +/** + * 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. + */ + +/* roboto-regular - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: url('../fonts/roboto/roboto-v15-latin-regular.eot'); /* IE9 Compat Modes */ + src: local('Roboto'), local('Roboto-Regular'), + url('../fonts/roboto/roboto-v15-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/roboto/roboto-v15-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/roboto/roboto-v15-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/roboto/roboto-v15-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/roboto/roboto-v15-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */ +} http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/styles/power-select-overrides.scss ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/styles/power-select-overrides.scss b/contrib/views/hive20/src/main/resources/ui/app/styles/power-select-overrides.scss new file mode 100644 index 0000000..5a52887 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/styles/power-select-overrides.scss @@ -0,0 +1,24 @@ +/** + * 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. + */ + +$ember-power-select-border-color: #64A5ED; +$ember-power-select-border-radius: 0; +$ember-power-select-line-height: 2.25; + + +@import 'ember-power-select'; http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/application.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/application.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/application.hbs new file mode 100644 index 0000000..7d6259c --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/application.hbs @@ -0,0 +1,42 @@ +{{! +* 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="container-fluid"> + <div class="flash-messages-wrap"> + {{#each flashMessages.queue as |flash|}} + {{alert-message flash=flash}} + {{/each}} + </div> + <div class="row"> + <div class="col-md-12"> + {{top-application-bar}} + {{#tabs-pane tabs=tabs as |tab|}} + {{tabs-item tab=tab tabs=tabs}} + {{/tabs-pane}} + </div> + </div> + <div class="row"> + <div class="main-wrapper clearfix"> + <div class="col-md-12"> + {{outlet}} + </div> + + </div> + </div> + +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/.gitkeep ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/.gitkeep b/contrib/views/hive20/src/main/resources/ui/app/templates/components/.gitkeep new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/alert-message-display.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/alert-message-display.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/alert-message-display.hbs new file mode 100644 index 0000000..8dfa913 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/alert-message-display.hbs @@ -0,0 +1,34 @@ +{{! +* 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. +}} + + +<p><strong>{{{title}}}</strong></p> +<div> + <pre class="prettyprint"> + <small> + {{shortenedValue}} + {{#if shorten}} + {{#unless expanded}} + <a href="#" {{action "toggleExpanded"}}>(more...)</a> + {{else}} + <a href="#" {{action "toggleExpanded"}}>(less...)</a> + {{/unless}} + {{/if}} + </small> + </pre> +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/alert-message.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/alert-message.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/alert-message.hbs new file mode 100644 index 0000000..ce8d941 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/alert-message.hbs @@ -0,0 +1,34 @@ +{{! +* 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={{alert-message-context-class flash.type "clearfix alert alert-dismissible alert-"}}> + <button type="button" class="close" {{action "closeAlert"}}><span aria-hidden="true">×</span></button> + <div class="alert-icon wrap-message"> + {{#fa-stack size=2}} + {{fa-icon "circle-thin" stack=2}} + {{fa-icon (alert-message-icon-class flash.type) stack=1}} + {{/fa-stack}} + </div> + <div class="alert-message-wrap wrap-message"> + <div class="alert-message"> + {{{flash.message}}} + </div> + </div> + +</div> + http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/column-item.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/column-item.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/column-item.hbs new file mode 100644 index 0000000..96cf5ab --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/column-item.hbs @@ -0,0 +1,124 @@ +{{! +* 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. +}} + +<td> + <div class="{{if column.nameError 'has-error'}}"> + {{input type="text" class="form-control" value=column.name disabled=(not column.editing)}} + {{#if column.nameError}} + <span class="help-block">{{column.nameError.error}}</span> + {{/if}} + </div> + +</td> +<td> + {{#power-select + disabled=notEditing + selected=column.type + options=datatypes + searchField="label" + searchPlaceholder="Enter data type" + onchange=(action "typeSelectionMade") as |parameter|}} + {{parameter.label}} + {{/power-select}} +</td> +<td> + {{#if (or hasPrecision hasScale)}} + <div class="row"> + {{#if hasPrecision}} + <div class="{{if hasScale 'col-md-6' 'col-md-12'}}"> + <div class="{{if column.precisionError 'has-error'}}"> + {{input type="text" class="form-control" placeholder="Precision" value=column.precision disabled=(not column.editing)}} + {{#if column.precisionError}} + <span class="help-block">{{column.precisionError.error}}</span> + {{/if}} + </div> + </div> + {{/if}} + {{#if hasScale}} + <div class="{{if hasPrecision 'col-md-6' 'col-md-12'}}"> + <div class="{{if column.scaleError 'has-error'}}"> + {{input type="text" class="form-control" placeholder="Scale" value=column.scale disabled=(not column.editing)}} + {{#if column.scaleError}} + <span class="help-block">{{column.scaleError.error}}</span> + {{/if}} + </div> + </div> + {{/if}} + </div> + {{/if}} + +</td> +<td> + <div class="text-center"> + <a {{action "advanceOptionToggle"}}>{{fa-icon "cog" size="lg"}}</a> + </div> + {{#if advancedOption}} + {{#modal-dialog + close="advanceOptionToggle" + translucentOverlay=true + clickOutsideToClose=true + container-class="modal-dialog"}} + <div class="modal-content"> + <div class="modal-header text-danger"> + <button type="button" class="close" {{action "advanceOptionToggle"}}><span aria-hidden="true">×</span></button> + <h4 class="modal-title">{{fa-icon "cog" size="lg"}} Advance Column Options</h4> + </div> + <div class="modal-body"> + <div class="form-horizontal"> + <div class="form-group"> + <label for="inputPassword3" class="col-sm-2 control-label">Comment</label> + <div class="col-sm-10"> + {{input type="text" class="form-control" placeholder="Comment" value=column.comment disabled=(not column.editing)}} + </div> + </div> + + <div class="form-group"> + <div class="col-sm-offset-2 col-sm-10"> + <div class="checkbox"> + <label> + {{input type="checkbox" checked=column.isPartitioned disabled=(not column.editing)}} Partitioned + </label> + </div> + </div> + <div class="col-sm-offset-2 col-sm-10"> + <div class="checkbox"> + <label> + {{input type="checkbox" checked=column.isClustered disabled=(not column.editing)}} Clustering + </label> + </div> + </div> + </div> + </div> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-success" {{action "advanceOptionToggle"}}>{{fa-icon "check"}} Done</button> + </div> + </div> + {{/modal-dialog}} + {{/if}} +</td> +<td> + <div class="text-center"> + {{#unless column.editing}} + <button class="btn btn-success" {{action "edit"}}>{{fa-icon "check"}} Edit</button> + {{/unless}} + <button class="btn btn-danger" {{action "delete"}}>{{fa-icon "times"}} Delete</button> + </div> + + +</td> http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/create-table.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/create-table.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/create-table.hbs new file mode 100644 index 0000000..f369783 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/create-table.hbs @@ -0,0 +1,63 @@ +{{! +* 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="row"> + <div class="col-md-12 form-horizontal table-name-input"> + <div class="form-group {{if hasTableNameError 'has-error'}}"> + <label class="col-md-1 control-label">Name</label> + <div class="col-md-11"> + {{input type="text" class="form-control" placeholder="Table name" value=tableName}} + {{#if hasTableNameError}} + <span class="help-block">Name cannot be empty</span> + {{/if}} + </div> + </div> + </div> +</div> + +{{#tabs-pane tabs=tabs inverse=true as |tab|}} + {{tabs-item tab=tab tabs=tabs activate="activate"}} +{{/tabs-pane}} + +<div class="create-table-inner"> + <div class="row"> + {{#each tabs as |tab|}} + {{#if tab.active}} + {{#if (eq tab.link "create.table.columns")}} + {{#if hasEmptyColumnsError}} + <div class="alert alert-danger create-table-error"> + {{emptyColumnsErrorText}} + </div> + {{/if}} + {{table-columns columns=columns shouldAddBuckets=shouldAddBuckets}} + {{/if}} + {{#if (eq tab.link "create.table.properties")}} + {{table-properties properties=properties}} + {{/if}} + {{#if (eq tab.link "create.table.advanced")}} + {{table-advanced-settings settings=settings shouldAddBuckets=shouldAddBuckets errors=settingErrors}} + {{/if}} + {{/if}} + {{/each}} + </div> + +</div> +<div class="create-table-controls"> + <button class="btn btn-success" {{action "create"}}>{{fa-icon "plus"}} Create</button> + <button class="btn btn-warning" {{action "cancel"}}>{{fa-icon "times"}} Cancel</button> +</div> http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-drop-confirm.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-drop-confirm.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-drop-confirm.hbs new file mode 100644 index 0000000..efb54ac --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-drop-confirm.hbs @@ -0,0 +1,37 @@ +{{! +* 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. +}} + +{{#modal-dialog +close="cancel" +translucentOverlay=true +clickOutsideToClose=true +container-class="modal-dialog"}} + <div class="modal-content"> + <div class="modal-header text-danger"> + <button type="button" class="close" {{action "cancel"}}><span aria-hidden="true">×</span></button> + <h4 class="modal-title">{{fa-icon "exclamation-triangle" size="lg"}} Confirm</h4> + </div> + <div class="modal-body text-center"> + <p class="">Are you sure you want to drop <span class="text-uppercase"><strong>'{{name}}'</strong></span> database?</p> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" {{action "cancel"}}>{{fa-icon "times"}} Cancel</button> + <button type="button" class="btn btn-primary" {{action "confirm"}}>{{fa-icon "check"}} Confirm</button> + </div> + </div><!-- /.modal-content --> +{{/modal-dialog}} http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-not-empty.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-not-empty.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-not-empty.hbs new file mode 100644 index 0000000..e11e898 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-not-empty.hbs @@ -0,0 +1,38 @@ +{{! +* 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. +}} + +{{#modal-dialog +close="close" +translucentOverlay=true +clickOutsideToClose=true +container-class="modal-dialog"}} + <div class="modal-content"> + <div class="modal-header text-danger"> + <button type="button" class="close" {{action "close"}}><span aria-hidden="true">×</span></button> + <h4 class="modal-title">{{fa-icon "exclamation-triangle" size="lg"}} Error</h4> + </div> + <div class="modal-body text-center"> + <p class="">Cannot drop database. Database <span class="text-uppercase"><strong>'{{name}}'</strong></span> is not empty !</p> + <div class="clearfix"> + <div class="col-md-offset-4 col-md-4"> + <button type="button" class="btn btn-warning btn-block" {{action "close"}}>{{fa-icon "times"}} Ok</button> + </div> + </div> + </div> + </div><!-- /.modal-content --> +{{/modal-dialog}} http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-search-bar.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-search-bar.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-search-bar.hbs new file mode 100644 index 0000000..d4ac704 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/database-search-bar.hbs @@ -0,0 +1,57 @@ +{{! +* 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="col-md-2"> + <p class="text-left text-uppercase"><strong>{{heading}}</strong></p> + <p class="text-left text-muted"><small>{{subHeading}}</small></p> +</div> +<div class="col-md-9"> + <div class="input-group input-group-lg"> + {{#unless extendDrawer }} + {{input type="text" class="form-control display" value=selectedDatabase.name}} + {{else}} + {{input type="text" class="form-control search" value=filterText placeholder="Search Databases"}} + {{/unless}} + + {{#if enableSecondaryAction}} + <div class="input-group-btn"> + <button type="button" class="btn btn-default {{if extendDrawer 'active'}}" {{action 'secondaryActionClicked'}}>{{fa-icon secondaryActionFaIcon}} {{secondaryActionText}} <span class="caret"></span></button> + </div> + {{/if}} + </div> + {{#if extendDrawer }} + <div class="database-search-drawer"> + <div class="list-group"> + {{#each filteredDatabases as |database|}} + <a {{action "databaseClicked" database}} class="list-group-item {{if database.selected 'selected'}}"> + {{#if database.selected}} + <div class="pull-right"> + {{fa-icon "check" size="lg"}} + </div> + {{/if}} + + + {{fa-icon "database" size="lg"}} {{database.name}} + </a> + {{/each}} + </div> + + </div> + {{/if}} +</div> +{{yield}} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/edit-setting-item.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/edit-setting-item.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/edit-setting-item.hbs new file mode 100644 index 0000000..5138696 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/edit-setting-item.hbs @@ -0,0 +1,42 @@ +{{! +* 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. +}} + +<td> + {{#power-select + selected=selectedParam + options=hiveParameters + search=(action "searchAction") + searchField="name" + searchPlaceholder="Type the paramter" + onchange=(action "selectionMade") as |parameter|}} + {{parameter.name}} + {{/power-select}} +</td> +<td> + <div class="{{if invalid 'has-error'}}"> + {{input type="text" class="form-control" value=selectedValue}} + {{#if invalid}} + <span class="help-block">{{currentError}}</span> + {{/if}} + + </div> +</td> +<td> + <button class="btn btn-success" {{action "update"}}>{{fa-icon "save"}} update</button> + <button class="btn btn-danger" {{action "cancel"}}>{{fa-icon "times"}} cancel</button> +</td> http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/hdfs-viewer-modal.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/hdfs-viewer-modal.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/hdfs-viewer-modal.hbs new file mode 100644 index 0000000..f3dce67 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/hdfs-viewer-modal.hbs @@ -0,0 +1,50 @@ +{{! +* 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. +}} + +{{#modal-dialog + close="closeDirectoryViewer" + translucentOverlay=true + clickOutsideToClose=false + container-class="modal-dialog"}} + <div class="modal-content hdfs-viewer"> + <div class="modal-header"> + <div class="text-info"> + <button type="button" class="close" {{action "closeDirectoryViewer"}}><span aria-hidden="true">×</span></button> + <h4 class="modal-title">{{fa-icon "database" size="lg"}} Select location</h4> + </div> + {{#if (and showSelectedPath hdfsLocation)}} + <p><strong>Current path:</strong> {{hdfsLocation}}</p> + {{/if}} + + </div> + <div class="modal-body"> + <div class="hdfs-viewer-wrap"> + {{directory-viewer + config=config + errorAction="viewerError" + pathSelectAction="viewerSelectedPath" + }} + </div> + </div> + + <div class="modal-footer"> + <button type="button" class="btn btn-default" {{action "closeDirectoryViewer"}}>{{fa-icon "times"}} Close</button> + <button type="button" class="btn btn-primary" {{action "pathSelected"}}>{{fa-icon "check"}} Select</button> + </div> + </div><!-- /.modal-content --> +{{/modal-dialog}} http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/job-item.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/job-item.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/job-item.hbs new file mode 100644 index 0000000..291def6 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/job-item.hbs @@ -0,0 +1,33 @@ +{{! +* 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. +}} + +<tr> + <td>{{job.id}}</td> + <td>{{job.title}}</td> + <td>{{job.status}}</td> + <td>{{moment-from-now job.dateSubmitted}}</td> + <td>{{job.duration}}</td> + <td><a {{action "toggleExpandJob" job.id}}>{{fa-icon "expand"}}</a></td> +</tr> + +{{#if expanded}} + <tr> + <td colspan="6">{{queryFile.fileContent}}</td> + </tr> +{{/if}} + http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/jobs-browser.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/jobs-browser.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/jobs-browser.hbs new file mode 100644 index 0000000..84f16a7 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/jobs-browser.hbs @@ -0,0 +1,62 @@ +{{! +* 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="row jobs-status"> + <div class="col-md-12 "> + <div class="col-md-9"> + <div class="strip"> + <ul class="list-inline"> + {{#each-in statusCounts as |status count|}} + <li>{{count}} <span class="text-uppercase">{{status}}</span></li> + {{/each-in}} + </ul> + </div> + </div> + <div class="col-md-3"> + {{date-range-picker + start=startTime + end=endTime + opens="left" + applyAction=(action "setDateRange") + }} + </div> + </div> + +</div> + +<div class="row jobs-table"> + <div class="col-md-12"> + <table class="table table-striped"> + <thead> + <tr> + <th width="10%">Job Id</th> + <th width="30%">Title <span class="pull-right">Dipayan</span> </th> + <th width="10%">status</th> + <th width="25%">Start time</th> + <th width="20%" >Duration</th> + <th>Action</th> + </tr> + </thead> + <tbody> + {{#each jobs as |job| }} + {{job-item job=job}} + {{/each}} + </tbody> + </table> + </div> +</div> http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-filter.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-filter.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-filter.hbs new file mode 100644 index 0000000..6ab731a --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-filter.hbs @@ -0,0 +1,33 @@ +{{! +* 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="list-header clearfix"> + <div> + <p class="text-uppercase"><strong>{{header}} | {{items.length}}</strong></p> + </div> +</div> + +<div class="search-bar"> + {{input value=filterText class="search-query" placeholder=placeholder}} + {{#if emptyFilterText}} + <a {{action "enableFilter"}}>{{fa-icon "search" class="fa-flip-horizontal" size="lg"}}</a> + {{else}} + <a {{action "disableFilter"}}>{{fa-icon "times" class="fa-flip-horizontal" size="lg"}}</a> + {{/if}} +</div> +{{yield filteredItems}} http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-group.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-group.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-group.hbs new file mode 100644 index 0000000..bd88dbd --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-group.hbs @@ -0,0 +1,22 @@ +{{! +* 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. +}} + +{{#each items as |item|}} + {{yield item items}} +{{/each}} + http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-item.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-item.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-item.hbs new file mode 100644 index 0000000..4fbd86b --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/list-item.hbs @@ -0,0 +1,22 @@ +{{! +* 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. +}} + +{{#if item.icon}} + {{fa-icon item.icon size="lg"}} +{{/if}} +{{item.name}} http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/multiple-database-search-bar.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/multiple-database-search-bar.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/multiple-database-search-bar.hbs new file mode 100644 index 0000000..57001ed --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/multiple-database-search-bar.hbs @@ -0,0 +1,45 @@ +{{! +* 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="col-md-2"> + <p class="text-left text-uppercase"><strong>{{heading}}</strong></p> + <p class="text-left text-muted"><small>{{subHeading}}</small></p> +</div> +<div class="col-md-9"> + <div class="input-group-lg"> + + {{#power-select-multiple + placeholder="Search databases" + options=allDbs + selected=selectedDbs + onchange=(pipe-action (action (mut selectedDbs)) (action "updateTables")) + onkeydown=(action "createOnEnter") + as |number|}} + {{fa-icon "database"}} {{number}} + {{/power-select-multiple}} + + + <span class="input-group-btn" style="top: 0;right: 130px;position: absolute;"> + <button type="button" class="btn btn-default">{{fa-icon "folder"}} Browse <span class="caret"></span></button> + </span> + + + </div> +</div> + +{{yield}} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/property-item.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/property-item.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/property-item.hbs new file mode 100644 index 0000000..e0ba696 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/property-item.hbs @@ -0,0 +1,45 @@ +{{! +* 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. +}} + +<td> + <div class="{{if property.keyError 'has-error'}}"> + {{input type="text" class="form-control" value=property.key disabled=(not property.editing)}} + {{#if property.keyError}} + <span class="help-block">{{property.keyError.error}}</span> + {{/if}} + </div> + +</td> + +<td> + <div class="{{if property.valueError 'has-error'}}"> + {{input type="text" class="form-control" value=property.value disabled=(not property.editing)}} + {{#if property.valueError}} + <span class="help-block">{{property.valueError.error}}</span> + {{/if}} + </div> +</td> + +<td> + <div class="text-center"> + {{#unless property.editing}} + <button class="btn btn-success" {{action "edit"}}>{{fa-icon "check"}} Edit</button> + {{/unless}} + <button class="btn btn-danger" {{action "delete"}}>{{fa-icon "times"}} Delete</button> + </div> +</td> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/query-editor.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/query-editor.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/query-editor.hbs new file mode 100644 index 0000000..d9b9018 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/query-editor.hbs @@ -0,0 +1,21 @@ +{{! +* 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. +}} + +{{textarea id="code-mirror" rows="15" cols="20" value=currentQuery}} + +{{yield}} http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/query-result-table.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/query-result-table.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/query-result-table.hbs new file mode 100644 index 0000000..5001c99 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/query-result-table.hbs @@ -0,0 +1,53 @@ +{{! +* 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. +}} + +{{#if columns.length}} + <div class="clearfix" style="text-align: right"> + {{#if showPreviousButton}} + <button class="btn btn-success" {{action "goPrevPage" }}>{{fa-icon "arrow-left"}} </button> + {{/if}} + <button class="btn btn-success" {{action "goNextPage" }}>{{fa-icon "arrow-right"}} </button> + </div> +{{/if}} + +<div class="clearfix"> +{{#light-table table height='65vh' as |t|}} + {{#if columns.length}} + {{t.head + onColumnClick=(action 'onColumnClick') + iconAscending='fa fa-sort-asc' + iconDescending='fa fa-sort-desc' + fixed=true + }} + + {{#t.body + canSelect=false + onScrolledToBottom=(action 'onScrolledToBottom') + as |body| + }} + {{#if isLoading}} + {{#body.loader}} + {{table-loader}} + {{/body.loader}} + {{/if}} + {{/t.body}} + {{/if}} +{{/light-table}} +</div> + +{{yield}} http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/setting-item.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/setting-item.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/setting-item.hbs new file mode 100644 index 0000000..bc22b74 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/setting-item.hbs @@ -0,0 +1,28 @@ +{{! +* 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. +}} + +<td> + {{setting.key}} +</td> +<td> + {{setting.value}} +</td> +<td> + <button class="btn btn-success" {{action "edit"}}>{{fa-icon "edit"}} Edit</button> + <button class="btn btn-danger" {{action "delete"}}>{{fa-icon "trash"}} Delete</button> +</td> http://git-wip-us.apache.org/repos/asf/ambari/blob/853a1ce7/contrib/views/hive20/src/main/resources/ui/app/templates/components/setting-list.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/setting-list.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/setting-list.hbs new file mode 100644 index 0000000..c3f9c76 --- /dev/null +++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/setting-list.hbs @@ -0,0 +1,37 @@ +{{! +* 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. +}} + +<table class="table table-bordered table-hover"> + <thead> + <tr> + <th width="40%">KEY</th> + <th width="40%">VALUE</th> + <th width="20%">ACTIONS</th> + </tr> + </thead> + <tbody> + {{#each settings as |setting|}} + {{yield setting}} + {{/each}} + <tr class="new-settings text-center"> + <td colspan="3"> + <a {{action "addNewSettings"}}>{{fa-icon "plus"}} Add New</a> + </td> + </tr> + </tbody> +</table>
