blob: 412068167e06f30c5a5c5404f7498c92d4dedecf [file] [log] [blame]
/**
* 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.
*/
var App = require('app');
var dateUtil = require('utils/date/date');
App.ServiceConfigVersion = DS.Model.extend({
MAX_NOTES_LENGTH: 80,
serviceName: DS.attr('string'),
displayName: Em.computed.formatRole('serviceName', true),
groupName: DS.attr('string'),
groupId: DS.attr('string'),
version: DS.attr('number'),
createTime: DS.attr('number'),
rawCreateTime: DS.attr('number'),
author: DS.attr('string'),
notes: DS.attr('string'),
service: DS.belongsTo('App.Service'),
hosts: DS.attr('array'),
index: DS.attr('number'),
isCurrent: DS.attr('boolean'),
isDisplayed: DS.attr('boolean'),
stackVersion: DS.attr('string'),
isCompatible: DS.attr('boolean'),
canBeMadeCurrent: Em.computed.and('isCompatible', '!isCurrent'),
isDefault: Em.computed.equal('groupName', 'Default'),
currentTooltip: Em.computed.i18nFormat('dashboard.configHistory.table.current.tooltip', 'displayName', 'configGroupName'),
/**
* @type {string}
*/
configGroupName: function () {
return this.get('isDefault') ? App.ServiceConfigGroup.defaultGroupName : this.get('groupName');
}.property('groupName','isDefault'),
/**
* @type {Boolean}
*/
isConfigGroupDeleted: function () {
return this.get('groupName') === App.ServiceConfigGroup.deletedGroupName;
}.property('groupName'),
/**
* @type {string}
*/
authorFormatted: Em.computed.truncate('author', 15, 15),
/**
* @type {string}
*/
fullNotes: function () {
return (typeof this.get('notes') === 'string') ?
(this.get('notes') || Em.I18n.t('dashboard.configHistory.table.notes.no')) :
Em.I18n.t('dashboard.configHistory.table.notes.no');
}.property('notes'),
/**
* @type {string}
*/
briefNotes: Em.computed.truncate('fullNotes', 81, 81, ''),
/**
* @type {boolean}
*/
moreNotesExists: Em.computed.notEqualProperties('fullNotes', 'briefNotes'),
/**
* @type {string}
*/
versionText: Em.computed.i18nFormat('dashboard.configHistory.table.version.versionText', 'version'),
/**
* @type {string}
*/
makeCurrentButtonText: Em.computed.i18nFormat('dashboard.configHistory.info-bar.revert.versionButton', 'versionText'),
/**
* @type {string}
*/
createdDate: function () {
return dateUtil.dateFormat(this.get('createTime'));
}.property('createTime'),
/**
* @type {string}
*/
timeSinceCreated: function () {
return $.timeago(this.get('rawCreateTime'));
}.property('rawCreateTime'),
/**
* determine whether ServiceConfigVersion is requested from server
*/
isRequested: DS.attr('boolean'),
/**
* @type {boolean}
*/
isRestartRequired: function () {
if (this.get('service.isRestartRequired') && this.get('isCurrent')) {
var hostNames = this.get('hosts');
if (!hostNames.length) return false;
for (var i = 0; i < hostNames.length; i++) {
if (Object.keys(this.get('service.restartRequiredHostsAndComponents')).contains(hostNames[i])) {
return true;
}
}
}
return false;
}.property('service.isRestartRequired','isDefault', 'isCurrent', 'hosts', 'service.restartRequiredHostsAndComponents', 'router.mainServiceInfoConfigsController.configGroups'),
/**
* {{view: string, compare: string, revert: string}} disabledActionMessages
*/
disabledActionMessages: function () {
return {
view: (this.get('isDisplayed')) ? Em.I18n.t('dashboard.configHistory.info-bar.view.button.disabled') : '',
compare: (this.get('isDisplayed')) ? Em.I18n.t('dashboard.configHistory.info-bar.compare.button.disabled') : '',
revert: (this.get('isCurrent')) ? Em.I18n.t('dashboard.configHistory.info-bar.revert.button.disabled') : ''
}
}.property('isDisplayed', 'isCurrent'),
/**
* {{view: (string|boolean), compare: (string|boolean), revert: (string|boolean)}} disabledActionAttr
*/
disabledActionAttr: function () {
return {
view: (this.get('isDisplayed')) ? 'disabled' : false,
compare: (this.get('isDisabled') || this.get('isDisplayed')) ? 'disabled' : false,
revert: (this.get('isDisabled') || this.get('isCurrent')) ? 'disabled' : false
}
}.property('isDisplayed', 'isCurrent', 'isDisabled')
});
App.ServiceConfigVersion.FIXTURES = [];