mirror of https://github.com/rancher/ui.git
93 lines
2.6 KiB
JavaScript
93 lines
2.6 KiB
JavaScript
import Resource from 'ember-api-store/models/resource';
|
|
|
|
export default Resource.extend({
|
|
availableActions: function() {
|
|
var a = this.get('actionLinks');
|
|
if ( !a )
|
|
{
|
|
return [];
|
|
}
|
|
|
|
var choices = [
|
|
{ label: 'Delete', icon: 'icon icon-trash', action: 'promptDelete', enabled: !!a.remove, altAction: 'delete' },
|
|
{ label: 'Restore', icon: 'icon icon-medicalcross', action: 'restore', enabled: !!a.restore },
|
|
{ label: 'Purge', icon: '', action: 'purge', enabled: !!a.purge },
|
|
{ divider: true },
|
|
{ label: 'View in API', icon: 'icon icon-externallink', action: 'goToApi', enabled: true },
|
|
];
|
|
|
|
return choices;
|
|
}.property('actionLinks.{remove,restore,purge,update}'),
|
|
issuedDate: function() {
|
|
return new Date(this.get('issuedAt'));
|
|
}.property('issuedAt'),
|
|
|
|
expiresDate: function() {
|
|
return new Date(this.get('expiresAt'));
|
|
}.property('expiresAt'),
|
|
|
|
expiresSoon: function() {
|
|
var diff = (this.get('expiresDate')).getTime() - (new Date()).getTime();
|
|
var days = diff/(86400*1000);
|
|
return days <= 8;
|
|
}.property('expiresDate'),
|
|
|
|
displayIssuer: function() {
|
|
return (this.get('issuer')||'').split(/,/)[0].replace(/^CN=/i,'');
|
|
}.property('issuer'),
|
|
|
|
isValid: function() {
|
|
var now = new Date();
|
|
return this.get('expiresDate') > now && this.get('issuedDate') < now;
|
|
}.property('expiresDate','issuedDate'),
|
|
|
|
displaySans: function() {
|
|
// subjectAlternativeNames can be null:
|
|
return (this.get('subjectAlternativeNames')||[]).slice().removeObject(this.get('CN'));
|
|
}.property('CN','subjectAlternativeNames.[]'),
|
|
|
|
countableSans: function() {
|
|
var sans = this.get('displaySans').slice();
|
|
if ( this.get('CN') )
|
|
{
|
|
sans.pushObject(this.get('CN'));
|
|
}
|
|
|
|
var commonBases = sans.filter((name) => {
|
|
return name.indexOf('*.') === 0 || name.indexOf('www.') === 0;
|
|
}).map((name) => {
|
|
return name.substr(2);
|
|
});
|
|
|
|
return this.get('displaySans').slice().removeObjects(commonBases);
|
|
}.property('displaySans.[]','CN'),
|
|
|
|
displayDetailedName: function() {
|
|
var name = (this.get('name') || '('+this.get('id')+')');
|
|
var str = name;
|
|
var cn = this.get('CN');
|
|
var sans = this.get('countableSans.length');
|
|
|
|
var more = '';
|
|
if ( cn )
|
|
{
|
|
if ( cn !== name )
|
|
{
|
|
more += cn;
|
|
}
|
|
|
|
if ( sans > 0 )
|
|
{
|
|
more += ' + ' + sans + ' other' + (sans === 1 ? '' : 's');
|
|
}
|
|
}
|
|
|
|
if ( more )
|
|
{
|
|
str += ' (' + more + ')';
|
|
}
|
|
|
|
return str;
|
|
}.property('id','name','CN','countableSans.length')
|
|
});
|