page structure (navigation) + small stuff

This commit is contained in:
exodus4d
2014-12-13 17:36:41 +01:00
parent a930d5d4a0
commit 8ba0a75cce
19 changed files with 1491 additions and 326 deletions

View File

@@ -2,14 +2,19 @@
<dictionary name="exodus4d">
<words>
<w>addclass</w>
<w>bootbox</w>
<w>cytaclysmic</w>
<w>dashstyle</w>
<w>fontawesome</w>
<w>jqueryui</w>
<w>killboard</w>
<w>killmail</w>
<w>nonblock</w>
<w>scrollbar</w>
<w>scrollbars</w>
<w>slidebar</w>
<w>slidebars</w>
<w>tbody</w>
<w>textarea</w>
</words>
</dictionary>

BIN
img/grid_20x20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="description" content="EvE-Online wormhole mapping tool">
<meta name="description" content="eve-online wormhole mapping tool">
<meta name="keywords" content="eve,wormhole,mapping,tool,mmo,space,game,igb">
<meta name="author" content="Exodus 4D">
@@ -15,6 +15,8 @@
</head>
<body class="pf-body">
<!-- Hey Bob! Where is all the magic? -->
<script data-main="js/app" src="js/lib/require.js"></script>
</body>

View File

@@ -2,9 +2,9 @@
* Init
*/
define(["jquery"], function($) {
define(['jquery'], function($) {
"use strict";
'use strict';
var Config = {
url:{
@@ -141,6 +141,726 @@ define(["jquery"], function($) {
}
}
},
// system effects
systemEffects:{
wh: {
magnetar: {
1: [
{
effect: 'Damage',
value: '+30%'
},{
effect: 'Missile explosion radius',
value: '+15%'
},{
effect: 'Drone Tracking',
value: '-15%'
},{
effect: 'Targeting Range',
value: '-15%'
},{
effect: 'Tracking Speed',
value: '-15%'
},{
effect: 'Target Painter Strength',
value: '-15%'
}
],
2: [
{
effect: 'Damage',
value: '+44%'
},{
effect: 'Missile explosion radius',
value: '+22%'
},{
effect: 'Drone Tracking',
value: '-22%'
},{
effect: 'Targeting Range',
value: '-22%'
},{
effect: 'Tracking Speed',
value: '-22%'
},{
effect: 'Target Painter Strength',
value: '-22%'
}
],
3: [
{
effect: 'Damage',
value: '+58%'
},{
effect: 'Missile explosion radius',
value: '+29%'
},{
effect: 'Drone Tracking',
value: '-29%'
},{
effect: 'Targeting Range',
value: '-29%'
},{
effect: 'Tracking Speed',
value: '-29%'
},{
effect: 'Target Painter Strength',
value: '-29%'
}
],
4: [
{
effect: 'Damage',
value: '+72%'
},{
effect: 'Missile explosion radius',
value: '+36%'
},{
effect: 'Drone Tracking',
value: '-36%'
},{
effect: 'Targeting Range',
value: '-36%'
},{
effect: 'Tracking Speed',
value: '-36%'
},{
effect: 'Target Painter Strength',
value: '-36%'
}
],
5: [
{
effect: 'Damage',
value: '+86%'
},{
effect: 'Missile explosion radius',
value: '+43%'
},{
effect: 'Drone Tracking',
value: '-43%'
},{
effect: 'Targeting Range',
value: '-43%'
},{
effect: 'Tracking Speed',
value: '-43%'
},{
effect: 'Target Painter Strength',
value: '-43%'
}
],
6: [
{
effect: 'Damage',
value: '+100%'
},{
effect: 'Missile explosion radius',
value: '+50%'
},{
effect: 'Drone Tracking',
value: '-50%'
},{
effect: 'Targeting Range',
value: '-50%'
},{
effect: 'Tracking Speed',
value: '-50%'
},{
effect: 'Target Painter Strength',
value: '-50%'
}
]
},
redGiant: {
1: [
{
effect: 'Heat Damage',
value: '+15%'
},{
effect: 'Overload Bonus',
value: '+30%'
},{
effect: 'Smart Bomb Range',
value: '+30%'
},{
effect: 'Smart Bomb Damage',
value: '+30%'
},{
effect: 'Bomb Damage',
value: '+30%'
}
],
2: [
{
effect: 'Heat Damage',
value: '+22%'
},{
effect: 'Overload Bonus',
value: '+44%'
},{
effect: 'Smart Bomb Range',
value: '+44%'
},{
effect: 'Smart Bomb Damage',
value: '+44%'
},{
effect: 'Bomb Damage',
value: '+44%'
}
],
3: [
{
effect: 'Heat Damage',
value: '+29%'
},{
effect: 'Overload Bonus',
value: '+58%'
},{
effect: 'Smart Bomb Range',
value: '+58%'
},{
effect: 'Smart Bomb Damage',
value: '+58%'
},{
effect: 'Bomb Damage',
value: '+58%'
}
],
4: [
{
effect: 'Heat Damage',
value: '+36%'
},{
effect: 'Overload Bonus',
value: '+72%'
},{
effect: 'Smart Bomb Range',
value: '+72%'
},{
effect: 'Smart Bomb Damage',
value: '+72%'
},{
effect: 'Bomb Damage',
value: '+72%'
}
],
5: [
{
effect: 'Heat Damage',
value: '+43%'
},{
effect: 'Overload Bonus',
value: '+86%'
},{
effect: 'Smart Bomb Range',
value: '+86%'
},{
effect: 'Smart Bomb Damage',
value: '+86%'
},{
effect: 'Bomb Damage',
value: '+86%'
}
],
6: [
{
effect: 'Heat Damage',
value: '+50%'
},{
effect: 'Overload Bonus',
value: '+100%'
},{
effect: 'Smart Bomb Range',
value: '+100%'
},{
effect: 'Smart Bomb Damage',
value: '+100%'
},{
effect: 'Bomb Damage',
value: '+100%'
}
]
},
pulsar: {
1: [
{
effect: 'Shield HP',
value: '+30%'
},{
effect: 'Armor Resists',
value: '-15%'
},{
effect: 'Capacitor recharge',
value: '-15%'
},{
effect: 'Signature',
value: '+30%'
},{
effect: 'NOS / Neut Drain Amount',
value: '+30%'
}
],
2: [
{
effect: 'Shield HP',
value: '+44%'
},{
effect: 'Armor Resists',
value: '-22%'
},{
effect: 'Capacitor recharge',
value: '-22%'
},{
effect: 'Signature',
value: '+44%'
},{
effect: 'NOS / Neut Drain Amount',
value: '+44%'
}
],
3: [
{
effect: 'Shield HP',
value: '+58%'
},{
effect: 'Armor Resists',
value: '-29%'
},{
effect: 'Capacitor recharge',
value: '-29%'
},{
effect: 'Signature',
value: '+58%'
},{
effect: 'NOS / Neut Drain Amount',
value: '+58%'
}
],
4: [
{
effect: 'Shield HP',
value: '+72%'
},{
effect: 'Armor Resists',
value: '-36%'
},{
effect: 'Capacitor recharge',
value: '-36%'
},{
effect: 'Signature',
value: '+72%'
},{
effect: 'NOS / Neut Drain Amount',
value: '+72%'
}
],
5: [
{
effect: 'Shield HP',
value: '+86%'
},{
effect: 'Armor Resists',
value: '-43%'
},{
effect: 'Capacitor recharge',
value: '-43%'
},{
effect: 'Signature',
value: '+86%'
},{
effect: 'NOS / Neut Drain Amount',
value: '+86%'
}
],
6: [
{
effect: 'Shield HP',
value: '+100%'
},{
effect: 'Armor Resists',
value: '-50%'
},{
effect: 'Capacitor recharge',
value: '-50%'
},{
effect: 'Signature',
value: '+100%'
},{
effect: 'NOS / Neut Drain Amount',
value: '+100%'
}
]
},
wolfRyet: {
1: [
{
effect: 'Armor HP',
value: '+30%'
},{
effect: 'Shield Resist',
value: '-15%'
},{
effect: 'Small Weapon Damage',
value: '+60%'
},{
effect: 'Signature Size',
value: '-15%'
}
],
2: [
{
effect: 'Armor HP',
value: '+44%'
},{
effect: 'Shield Resist',
value: '-22%'
},{
effect: 'Small Weapon Damage',
value: '+88%'
},{
effect: 'Signature Size',
value: '-22%'
}
],
3: [
{
effect: 'Armor HP',
value: '+58%'
},{
effect: 'Shield Resist',
value: '-29%'
},{
effect: 'Small Weapon Damage',
value: '+116%'
},{
effect: 'Signature Size',
value: '-29%'
}
],
4: [
{
effect: 'Armor HP',
value: '+72%'
},{
effect: 'Shield Resist',
value: '-36%'
},{
effect: 'Small Weapon Damage',
value: '+144%'
},{
effect: 'Signature Size',
value: '-36%'
}
],
5: [
{
effect: 'Armor HP',
value: '+86%'
},{
effect: 'Shield Resist',
value: '-43%'
},{
effect: 'Small Weapon Damage',
value: '+172%'
},{
effect: 'Signature Size',
value: '-43%'
}
],
6: [
{
effect: 'Armor HP',
value: '+100%'
},{
effect: 'Shield Resist',
value: '-50%'
},{
effect: 'Small Weapon Damage',
value: '+200%'
},{
effect: 'Signature Size',
value: '-50%'
}
]
},
cataclysmic: {
1: [
{
effect: 'Local armor repair amount',
value: '-15%'
},{
effect: 'Local shield boost amount',
value: '-15%'
},{
effect: 'Shield transfer amount',
value: '+30%'
},{
effect: 'Remote repair amount',
value: '+30%'
},{
effect: 'Capacitor capacity',
value: '+30%'
},{
effect: 'Capacitor recharge time',
value: '+15%'
},{
effect: 'Remote Capacitor Transmitter amount',
value: '-15%'
}
],
2: [
{
effect: 'Local armor repair amount',
value: '-22%'
},{
effect: 'Local shield boost amount',
value: '-22%'
},{
effect: 'Shield transfer amount',
value: '+44%'
},{
effect: 'Remote repair amount',
value: '+44%'
},{
effect: 'Capacitor capacity',
value: '+44%'
},{
effect: 'Capacitor recharge time',
value: '+22%'
},{
effect: 'Remote Capacitor Transmitter amount',
value: '-22%'
}
],
3: [
{
effect: 'Local armor repair amount',
value: '-29%'
},{
effect: 'Local shield boost amount',
value: '-29%'
},{
effect: 'Shield transfer amount',
value: '+58%'
},{
effect: 'Remote repair amount',
value: '+58%'
},{
effect: 'Capacitor capacity',
value: '+58%'
},{
effect: 'Capacitor recharge time',
value: '+29%'
},{
effect: 'Remote Capacitor Transmitter amount',
value: '-29%'
}
],
4: [
{
effect: 'Local armor repair amount',
value: '-36%'
},{
effect: 'Local shield boost amount',
value: '-36%'
},{
effect: 'Shield transfer amount',
value: '+72%'
},{
effect: 'Remote repair amount',
value: '+72%'
},{
effect: 'Capacitor capacity',
value: '+72%'
},{
effect: 'Capacitor recharge time',
value: '+36%'
},{
effect: 'Remote Capacitor Transmitter amount',
value: '-36%'
}
],
5: [
{
effect: 'Local armor repair amount',
value: '-43%'
},{
effect: 'Local shield boost amount',
value: '-43%'
},{
effect: 'Shield transfer amount',
value: '+86%'
},{
effect: 'Remote repair amount',
value: '+86%'
},{
effect: 'Capacitor capacity',
value: '+86%'
},{
effect: 'Capacitor recharge time',
value: '+43%'
},{
effect: 'Remote Capacitor Transmitter amount',
value: '-43%'
}
],
6: [
{
effect: 'Local armor repair amount',
value: '-50%'
},{
effect: 'Local shield boost amount',
value: '-50%'
},{
effect: 'Shield transfer amount',
value: '+100%'
},{
effect: 'Remote repair amount',
value: '+100%'
},{
effect: 'Capacitor capacity',
value: '+100%'
},{
effect: 'Capacitor recharge time',
value: '+50%'
},{
effect: 'Remote Capacitor Transmitter amount',
value: '-50%'
}
]
},
blackHole: {
1: [
{
effect: 'Missile velocity',
value: '+15%'
},{
effect: 'Missile Explosion Velocity',
value: '+30%'
},{
effect: 'Ship velocity',
value: '+30%'
},{
effect: 'Stasis Webifier Strength',
value: '-15%'
},{
effect: 'Inertia',
value: '+15%'
},{
effect: 'Targeting range',
value: '+30%'
}
],
2: [
{
effect: 'Missile velocity',
value: '+22%'
},{
effect: 'Missile Explosion Velocity',
value: '+44%'
},{
effect: 'Ship velocity',
value: '+44%'
},{
effect: 'Stasis Webifier Strength',
value: '-22%'
},{
effect: 'Inertia',
value: '+22%'
},{
effect: 'Targeting range',
value: '+44%'
}
],
3: [
{
effect: 'Missile velocity',
value: '+29%'
},{
effect: 'Missile Explosion Velocity',
value: '+58%'
},{
effect: 'Ship velocity',
value: '+58%'
},{
effect: 'Stasis Webifier Strength',
value: '-29%'
},{
effect: 'Inertia',
value: '+29%'
},{
effect: 'Targeting range',
value: '+58%'
}
],
4: [
{
effect: 'Missile velocity',
value: '+36%'
},{
effect: 'Missile Explosion Velocity',
value: '+72%'
},{
effect: 'Ship velocity',
value: '+72%'
},{
effect: 'Stasis Webifier Strength',
value: '-36%'
},{
effect: 'Inertia',
value: '+36%'
},{
effect: 'Targeting range',
value: '+72%'
}
],
5: [
{
effect: 'Missile velocity',
value: '+43%'
},{
effect: 'Missile Explosion Velocity',
value: '+86%'
},{
effect: 'Ship velocity',
value: '+86%'
},{
effect: 'Stasis Webifier Strength',
value: '-43%'
},{
effect: 'Inertia',
value: '+43%'
},{
effect: 'Targeting range',
value: '+86%'
}
],
6: [
{
effect: 'Missile velocity',
value: '+50%'
},{
effect: 'Missile Explosion Velocity',
value: '+100%'
},{
effect: 'Ship velocity',
value: '+100%'
},{
effect: 'Stasis Webifier Strength',
value: '-50%'
},{
effect: 'Inertia',
value: '+50%'
},{
effect: 'Targeting range',
value: '+100%'
}
]
}
}
},
// signature groups
signatureGroups: {

View File

@@ -1,113 +1,22 @@
define(['jquery', 'app/render', 'app/ccp', 'slidebars', 'app/module_map'], function($, Render, CCP) {
/**
* Main Application
*/
define([
'jquery',
'app/render',
'app/ccp',
'app/page',
'slidebars',
'app/module_map'
], function($, Render, CCP) {
'use strict';
var config = {
// page structure slidebars-menu classes
pageId: 'sb-site',
pageSlidebarClass: 'sb-slidebar',
pageSlidebarLeftClass: 'sb-left',
pageSlidebarRightClass: 'sb-right',
pageSlideLeftWidth: '150px',
pageSlideRightWidth: '150px',
// page structure
pageClass: 'pf-site',
pageHeaderId: 'pf-site-head',
// header
headClass: 'pf-head',
headMenuClass: 'pf-head-menu',
headMapClass: 'pf-head-map',
// map module
mapModuleId: 'pf-map-module',
// helper element
dynamicElementWrapperId: 'pf-dialog-wrapper'
mapModuleId: 'pf-map-module'
};
/**
* load main page structure elements and navigation container into body
*/
$.fn.loadPageStructure = function(){
// menu right
$(this).prepend(
$('<div>', {
class: [config.pageSlidebarClass, config.pageSlidebarRightClass, 'sb-style-push', 'sb-width-custom'].join(' ')
}).attr('data-sb-width', config.pageSlideRightWidth).text('right')
);
// menu left
$(this).prepend(
$('<div>', {
class: [config.pageSlidebarClass, config.pageSlidebarLeftClass, 'sb-style-push', 'sb-width-custom'].join(' ')
}).attr('data-sb-width', config.pageSlideLeftWidth).text('left')
);
// main page
$(this).prepend(
$('<div>', {
id: config.pageId,
class: config.pageClass
}).append(
$('<div>', {
id: config.mapModuleId
})
).append(
$('<div>', {
id: config.dynamicElementWrapperId
})
)
);
// load header
$('.' + config.pageClass).loadHeader();
};
/**
* load page header
*/
$.fn.loadHeader = function(){
var pageElement = $(this);
var moduleConfig = {
name: 'modules/header',
position: pageElement,
link: 'prepend',
functions: {
after: function(){
// init slide menus
var slideMenu = new $.slidebars({
scrollLock: false
});
$('.' + config.headMenuClass).on('click', function() {
slideMenu.slidebars.toggle('left');
});
$('.' + config.headMapClass).on('click', function() {
slideMenu.slidebars.toggle('right');
});
}
}
};
var moduleData = {
id: config.pageHeaderId,
userName: 'Exodus 4D'
};
Render.showModule(moduleConfig, moduleData);
};
$(function() {
CCP.requestTrust();
@@ -350,7 +259,7 @@ define(['jquery', 'app/render', 'app/ccp', 'slidebars', 'app/module_map'], funct
// update map module ========================================
setTimeout(
function() {
// $('#' + config.mapModuleId).updateMapModule(userData);
$('#' + config.mapModuleId).updateMapModule(userData);
console.log('update map done');
}, 500);

View File

@@ -20,9 +20,11 @@ define([
y: 0
},
mapSnapToGrid: false, // Snap systems to grid while dragging
mapTabContentClass: 'pf-map-tab-content', // Tab-Content element (parent element)
mapWrapperClass: 'pf-map-wrapper', // wrapper div (scrollable)
mapClass: 'pf-map', // class for all maps
mapGridClass: 'pf-grid-small', // class for map grid snapping
mapIdPrefix: 'pf-map-', // id prefix for all maps
systemIdPrefix: 'pf-system-', // id prefix for a system
systemClass: 'pf-system', // class for all systems
@@ -134,7 +136,7 @@ define([
wh: {
cssClass: 'pf-map-connection-wh'
},
wh_eol: {
eol: {
cssClass: 'pf-map-connection-wh-eol'
},
wh_reduced: {
@@ -143,8 +145,27 @@ define([
wh_critical: {
cssClass: 'pf-map-connection-wh-critical'
},
frig: {
cssClass: 'pf-map-connection-frig'
frigate: {
cssClass: 'pf-map-connection-frig',
paintStyle: {
dashstyle: '0.9'
},
overlays:[
[ 'Label',
{
label: 'frig',
cssClass: ['pf-map-connection-overlay', 'frig'].join(' ')
} ]
]
},
preserve_mass: {
overlays:[
[ 'Label',
{
label: '<i class="fa fa-warning"></i>&nbsp;save mass',
cssClass: ['pf-map-connection-overlay', 'mass'].join(' ')
} ]
]
}
}
};
@@ -343,7 +364,7 @@ define([
var mapContainer = $('<div>', {
id: config.mapIdPrefix + mapConfig.config.id,
class: config.mapClass
class: [config.mapClass].join(' ')
}).attr('data-mapid', mapConfig.config.id);
mapWrapper.append(mapContainer);
@@ -392,7 +413,6 @@ define([
targetConfig.scope = map.Defaults.Scope;
map.makeTarget(systems, targetConfig);
};
/**
@@ -566,10 +586,25 @@ define([
$(e.target).find('.' + config.systemHeadNameClass).editable('option', 'placement', placement);
},
drag: function(e){
// while drag
drag: function(e, ui){
// if active make system snapping to a fixed grid
if(config.mapSnapToGrid){
var snapTolerance = $(this).draggable('option', 'snapTolerance');
var topRemainder = ui.position.top % 20;
var leftRemainder = ui.position.left % 20;
if (topRemainder <= snapTolerance) {
ui.position.top = ui.position.top - topRemainder;
}
if (leftRemainder <= snapTolerance) {
ui.position.left = ui.position.left - leftRemainder;
}
map.repaint( e.target );
}
}
});
@@ -677,9 +712,9 @@ define([
var moduleData = {
id: config.connectionContextMenuId,
items: [
{icon: 'fa-eraser', action: 'delete', text: 'delete'},
{icon: 'fa-info-circle', action: 'info', text: 'info'},
{divider: true},
{icon: 'fa-plane', action: 'frigate', text: 'frigate hole'},
{icon: 'fa-warning', action: 'preserve_mass', text: 'preserve mass'},
{text: 'change status', subitems: [
{subIcon: 'fa-clock-o', subAction: 'eol', subText: 'toggle EOL'},
{subDivider: true},
@@ -687,7 +722,9 @@ define([
{subIcon: 'fa-adjust', subAction: 'status_reduced', subText: 'stage 1 (reduced)'},
{subIcon: 'fa-circle-o', subAction: 'status_critical', subText: 'stage 2 (critical)'}
]}
]},
{divider: true},
{icon: 'fa-eraser', action: 'delete', text: 'delete'},
]
};
@@ -944,6 +981,27 @@ define([
});
// catch menu events ====================================================
// toggle "snap to grid" option
$(container).on('pf:menuGrid', function(e, data){
config.mapSnapToGrid = !config.mapSnapToGrid;
// toggle grid class
$(this).toggleClass(config.mapGridClass);
// toggle button class
$(data.button).toggleClass('active');
var notificationText = 'disabled';
if(config.mapSnapToGrid){
notificationText = 'enabled';
}
Util.showNotify({title: 'Grid snapping', text: notificationText, type: 'info'});
});
};
@@ -985,10 +1043,10 @@ define([
}
});
break;
case 'eol':
// toggle eol-status of a connection
activeConnection.toggleType('wh_eol');
case 'frigate': // set as frigate hole
case 'preserve_mass': // set "preserve mass
case 'eol': // set "end of life"
activeConnection.toggleType( action );
// for some reason a new observer is needed ?!
setConnectionObserver(map, activeConnection);
break;
@@ -1293,7 +1351,7 @@ define([
// });
// init custom scrollbars
parentElement.initMapScrollbar()
parentElement.initMapScrollbar();
Util.showNotify({title: 'Map initialized', text: mapConfig.config.name + ' - loaded', type: 'success'});

View File

@@ -40,7 +40,9 @@ define([
systemInfoModuleClass: 'pf-system-info-module', // module wrapper
systemInfoRoutesClass: 'pf-system-info-routes', // wrapper for trade hub routes
systemInfoGraphsClass: 'pf-system-info-graphs', // wrapper for graphs
systemInfoGraphKillsClass: 'pf-system-info-graph-kills', // class for system kill graph
systemInfoTableClass: 'pf-system-info-table', // class for system info table
systemInfoTableEffectRowClass: 'pf-system-info-effect-row', // class for system info table effect row
systemInfoRoutesTableClass: 'pf-system-route-table', // class for route tables
systemInfoRoutesTableRowPrefix: 'pf-system-info-routes-row-', // prefix class for a row in the route table
systemSecurityClassPrefix: 'pf-system-security-', // prefix class for system security level (color)
@@ -171,13 +173,23 @@ define([
* @param mapModule
* @returns {*}
*/
var getMaps = function(mapModule){
$.fn.getMaps = function(){
var maps = $(mapModule).find('.' + config.mapClass);
var maps = $(this).find('.' + config.mapClass);
return maps;
};
/**
* get the current active map for
* @returns {*}
*/
$.fn.getActiveMap = function(){
var map = $(this).find('.active.' + config.mapTabContentClass + ' .' + config.mapClass);
return map;
};
/**
* get all TabElements in this map module
@@ -221,7 +233,9 @@ define([
// highlite a mapTab
$(this).on('pf:highlightTab', function(e, data){
// update Tab Content with system data information
highlightTab(e.target, data);
// not used jet
// highlightTab(e.target, data);
});
@@ -436,6 +450,8 @@ define([
// clear all
signatureTable.clear().draw();
moduleElement.updateScannedSignaturesBar({showNotice: false});
Util.showNotify({title: 'Signatures cleared', text: signatureCount + ' signatures deleted', type: 'success'});
}
});
@@ -647,7 +663,7 @@ define([
updatedBy: 'Exodus 4D' //newSignatureData[k].updatedBy
};
row.addTooltip( tooltipData );
row.addRowTooltip( tooltipData );
notificationCounter.added++;
}
@@ -669,7 +685,7 @@ define([
* adds a popup tooltip with signature information to rows
* @param data
*/
$.fn.addTooltip = function(data){
$.fn.addRowTooltip = function(data){
if(
data.addedBy.length > 0 &&
@@ -917,6 +933,9 @@ define([
$(this).prepend(moduleElement);
var effectName = Util.getEffectInfoForSystem(system.effect, 'name');
var effectClass = Util.getEffectInfoForSystem(system.effect, 'class');
// confirm dialog
var moduleConfig = {
name: 'modules/system_info',
@@ -933,6 +952,27 @@ define([
$(moduleElement).find('.' + config.systemInfoRoutesClass).updateSystemInfoRoutes(system.name, ['Jita', 'Amarr', 'Rens', 'Dodixie']);
}
// init system effect popover
var systemEffectData = Util.getSystemEffectData( system.security, system.effect);
if(systemEffectData !== false){
var systemInfoTable = $(moduleElement).find('.' + config.systemInfoTableClass);
// transform data into table
var systemEffectTable = Util.getSystemEffectTable( systemEffectData );
systemInfoTable.popover({
html: true,
trigger: 'hover',
placement: 'top',
delay: 200,
title: 'System effects',
content: systemEffectTable
});
}
// load kill statistic chart
$(moduleElement).find('.' + config.systemInfoGraphsClass).updateSystemInfoGraphs(system.id);
@@ -955,30 +995,68 @@ define([
tableClass: config.systemInfoTableClass,
securityClass: Util.getSecurityClassForSystem( system.security ),
trueSecClass: Util.getTrueSecClassForSystem( system.trueSec ),
effectName: Util.getEffectInfoForSystem(system.effect, 'name'),
effectClass: Util.getEffectInfoForSystem(system.effect, 'class')
effectName: effectName,
effectClass: effectClass
};
Render.showModule(moduleConfig, moduleData);
};
/**
* get label element with given content
* @param text
* @returns {*|XMLList}
*/
var getLabel = function(text, options){
var label = $('<span>', {
class: ['label', options.type, options.align].join(' ')
}).text( text );
return label;
};
/**
* updates the system info graph
* @param systemId
*/
$.fn.updateSystemInfoGraphs = function(systemId){
var parentElement = $(this);
parentElement.empty();
var graphElement = $('<div>');
var graphElement = $('<div>', {
class: config.systemInfoGraphKillsClass
});
parentElement.append(graphElement);
var showHours = 24;
var maxKillmailCount = 200; // limited by API
var labelOptions = {
align: 'center-block'
};
// private function draws a "system kills" graph
var drawGraph = function(data){
var tableData = data.tableData;
var label = '';
if(data.count === 0){
labelOptions.type = 'label-success';
label = getLabel( 'No kills found within 24h', labelOptions );
graphElement.prepend( label );
// reduce height
graphElement.animate({
height: '30px'
}, 200);
return;
}
// draw chart
Morris.Bar({
element: graphElement,
@@ -987,7 +1065,7 @@ define([
gridTextColor: '#3c3f41',
gridTextFamily: 'Oxygen Bold',
hideHover: true,
data: data,
data: tableData,
xkey: 'label',
ykeys: ['kills'],
labels: ['kills'],
@@ -996,7 +1074,7 @@ define([
parseTime: false,
barColors: function (row, series, type) {
if (type === 'bar') {
// hightlite last row -> recent kills found
// highlight last row -> recent kills found
if(this.xmax === row.x){
return '#c2760c';
}
@@ -1007,18 +1085,10 @@ define([
});
// show hint for recent kills
if(data[data.length - 1].kills > 0){
graphElement.prepend(
$('<h6>').append(
$('<span>', {
class: 'label label-warning center-block'
}).text( data[data.length - 1].kills + ' kills within the last hour!')
)
);
if(tableData[tableData.length - 1].kills > 0){
labelOptions.type = 'label-warning';
label = getLabel( tableData[tableData.length - 1].kills + ' kills within the last hour!', labelOptions );
graphElement.prepend( label );
}
};
@@ -1080,8 +1150,8 @@ define([
// the API wont return more than 200KMs ! - remember last bar block with complete KM information
var lastCompleteDiffHourData = 0;
// loop kills and count kills by hour
// loop kills and count kills by hour
for(var i = 0; i < kbData.length; i++){
var match = kbData[i].killTime.match(/^(\d+)-(\d+)-(\d+) (\d+)\:(\d+)\:(\d+)$/);
var killDate = new Date(match[1], match[2] - 1, match[3], match[4], match[5], match[6]);
@@ -1109,7 +1179,11 @@ define([
// change order
chartData.reverse();
cache.systemKillsGraphData[cacheKey] = chartData;
// fill cache
cache.systemKillsGraphData[cacheKey] = {};
cache.systemKillsGraphData[cacheKey].tableData = chartData;
cache.systemKillsGraphData[cacheKey].count = kbData.length;
drawGraph( cache.systemKillsGraphData[cacheKey] );
parentElement.hideLoadingAnimation();
@@ -1755,7 +1829,7 @@ define([
$.fn.updateMapModule = function(userData){
// get all active map elements for module
var mapElements = getMaps(this);
var mapElements = $(this).getMaps();
var currentUserData = null;
@@ -1787,7 +1861,7 @@ define([
};
/**
* load all structrure elements into a TabsContent div (tab body)
* load all structure elements into a TabsContent div (tab body)
*/
$.fn.initContentStructure = function(){

280
js/app/page.js Normal file
View File

@@ -0,0 +1,280 @@
/**
* page structure
*/
define([
'jquery',
'app/init',
'app/util',
'app/render',
'bootbox',
'slidebars',
'app/module_map'
], function($, Init, Util, Render, bootbox) {
'use strict';
var config = {
// page structure slidebars-menu classes
pageId: 'sb-site',
pageSlidebarClass: 'sb-slidebar',
pageSlidebarLeftClass: 'sb-left',
pageSlidebarRightClass: 'sb-right',
pageSlideLeftWidth: '150px',
pageSlideRightWidth: '150px',
// page structure
pageClass: 'pf-site',
// header
pageHeaderId: 'pf-head', // id for page head
headClass: 'pf-head', // class for page head
headMenuClass: 'pf-head-menu', // class for page head menu button (left)
headMapClass: 'pf-head-map', // class for page head map button (right)
// map module
mapModuleId: 'pf-map-module', // main map module
// system effect dialog
systemEffectDialogWrapper: 'pf-system-effect-dialog-wrapper', // class for system effect dialog
// helper element
dynamicElementWrapperId: 'pf-dialog-wrapper'
};
/**
* load main page structure elements and navigation container into body
*/
$.fn.loadPageStructure = function(){
// menu left
$(this).prepend(
$('<div>', {
class: [config.pageSlidebarClass, config.pageSlidebarLeftClass, 'sb-style-push', 'sb-width-custom'].join(' ')
}).attr('data-sb-width', config.pageSlideLeftWidth)
);
// menu right
$(this).prepend(
$('<div>', {
class: [config.pageSlidebarClass, config.pageSlidebarRightClass, 'sb-style-push', 'sb-width-custom'].join(' ')
}).attr('data-sb-width', config.pageSlideRightWidth)
);
// main page
$(this).prepend(
$('<div>', {
id: config.pageId,
class: config.pageClass
}).append(
$('<div>', {
id: config.mapModuleId
})
).append(
$('<div>', {
id: config.dynamicElementWrapperId
})
)
);
// load header
$('.' + config.pageClass).loadHeader();
// load left menu
$('.' + config.pageSlidebarLeftClass).loadLeftMenu();
// load right menu
$('.' + config.pageSlidebarRightClass).loadRightMenu();
// set document observer for global events
setDocumentObserver();
};
/**
* load left menu content options
*/
$.fn.loadLeftMenu = function(){
$(this).append(
$('<div>', {
class: 'list-group'
}).append(
$('<a>', {
class: 'list-group-item',
href: '#'
}).html('&nbsp;&nbsp;Home').prepend(
$('<i>',{
class: 'fa fa-home fa-fw'
})
)
).append(
$('<a>', {
class: 'list-group-item',
href: '#'
}).html('&nbsp;&nbsp;Effect info').prepend(
$('<i>',{
class: 'fa fa-cogs fa-fw'
})
).on('click', function(){
$(document).triggerMenuEvent('ShowSystemEffectInfo');
})
).append(
$('<a>', {
class: 'list-group-item',
href: '#'
}).html('&nbsp;&nbsp;Logout').prepend(
$('<i>',{
class: 'fa fa-power-off fa-fw'
})
)
)
);
};
/**
* load right content options
*/
$.fn.loadRightMenu = function(){
$(this).append(
$('<div>', {
class: 'list-group'
}).append(
$('<a>', {
class: 'list-group-item',
href: '#'
}).html('&nbsp;&nbsp;Grid snap').prepend(
$('<i>',{
class: 'fa fa-th fa-fw'
})
).on('click', function(){
$('#' + config.mapModuleId).getActiveMap().triggerMenuEvent('Grid', {button: this});
})
)
);
};
$.fn.triggerMenuEvent = function(event, data){
if(data === undefined){
data = {};
}
$(this).trigger('pf:menu' + event, [data]);
};
/**
* load page header
*/
$.fn.loadHeader = function(){
var pageElement = $(this);
var moduleConfig = {
name: 'modules/header',
position: pageElement,
link: 'prepend',
functions: {
after: function(){
// init slide menus
var slideMenu = new $.slidebars({
scrollLock: false
});
$('.' + config.headMenuClass).on('click', function() {
slideMenu.slidebars.toggle('left');
});
$('.' + config.headMapClass).on('click', function() {
slideMenu.slidebars.toggle('right');
});
}
}
};
var moduleData = {
id: config.pageHeaderId,
userName: 'Exodus 4D'
};
Render.showModule(moduleConfig, moduleData);
};
/**
* catch all global document events
*/
var setDocumentObserver = function(){
$(document).on('pf:menuShowSystemEffectInfo', function(e){
// show system effects info box
var dialogWrapperElement = $('<div>', {
class: config.systemEffectDialogWrapper
});
$.each( Init.systemEffects.wh, function( effectName, effectData ) {
var table = $('<table>', {
class: ['table', 'table-condensed'].join(' ')
});
var tbody = $('<tbody>');
var thead = $('<thead>');
var rows = [];
// get formatted system effect name
var systemEffectName = Util.getEffectInfoForSystem(effectName, 'name');
var systemEffectClass = Util.getEffectInfoForSystem(effectName, 'class');
$.each( effectData, function( areaId, areaData ) {
if(areaId === '1'){
rows.push( $('<tr>') );
thead.append( rows[0] );
rows[0].append(
$('<td>').html( '&nbsp;&nbsp;' + systemEffectName).prepend(
$('<i>', {
class: ['fa', 'fa-square', 'fa-fw', systemEffectClass].join(' ')
})
)
);
}
rows[0].append( $('<td>', {
class: ['text-right', 'col-xs-1'].join(' ')
}).text( 'C' + areaId ));
$.each( areaData, function( i, data ) {
if(areaId === '1'){
rows.push( $('<tr>') );
tbody.append(rows[i + 1]);
// add label
rows[i + 1].append( $('<td>').text( data.effect ));
}
rows[i + 1].append( $('<td>', {
class: 'text-right'
}).text( data.value ));
});
});
dialogWrapperElement.append( table.append( thead ).append( tbody ) );
});
bootbox.dialog({
title: 'System effect information',
message: dialogWrapperElement
});
});
}
});

View File

@@ -56,7 +56,7 @@ define(['jquery', 'app/init'], function($, Init) {
/**
* get all form Values as object
* this incluces all xEditable fields
* this includes all xEditable fields
* @returns {{}}
*/
$.fn.getFormValues = function(){
@@ -103,6 +103,55 @@ define(['jquery', 'app/init'], function($, Init) {
return effectInfo;
};
/**
* get system effect data by system security and system class
* @param secureity
* @param effect
* @returns {boolean}
*/
var getSystemEffectData = function(securety, effect){
var areaId = getAreaIdBySecurity(securety);
var data = false;
if(
Init.systemEffects &&
Init.systemEffects.wh[effect] &&
Init.systemEffects.wh[effect][areaId]
){
data = Init.systemEffects.wh[effect][areaId];
}
return data;
};
var getSystemEffectTable = function(data){
var table = '';
if(data.length > 0){
table += '<table>';
for(var i = 0; i < data.length; i++){
table += '<tr>';
table += '<td>';
table += data[i].effect;
table += '</td>';
table += '<td class="text-right">';
table += data[i].value;
table += '</td>';
table += '</tr>';
}
table += '</table>';
}
return table;
};
/**
* get a css class for the security level of a system
* @param sec
@@ -264,6 +313,8 @@ define(['jquery', 'app/init'], function($, Init) {
showNotify: showNotify,
getEffectInfoForSystem: getEffectInfoForSystem,
getSystemEffectData: getSystemEffectData,
getSystemEffectTable: getSystemEffectTable,
getSecurityClassForSystem: getSecurityClassForSystem,
getTrueSecClassForSystem: getTrueSecClassForSystem,
getStatusInfoForSystem: getStatusInfoForSystem,

View File

@@ -130,7 +130,7 @@ $table-bg-accent: #f9f9f9;
$table-bg-hover: #ecf3f8;
$table-bg-active: $table-bg-hover;
$table-border-color: #ddd;
$table-border-color: $gray-dark;
//== Buttons
@@ -574,12 +574,12 @@ $progress-bar-info-bg: $brand-info;
//
//##
$list-group-bg: #fff;
$list-group-border: #ddd;
$list-group-bg: $gray-lighter;
$list-group-border: $gray-light;
$list-group-border-radius: $border-radius-base;
$list-group-hover-bg: #f5f5f5;
$list-group-active-color: $component-active-color;
$list-group-hover-bg: $gray-light;
$list-group-active-color: $gray-lightest;
$list-group-active-bg: $component-active-bg;
$list-group-active-border: $list-group-active-bg;
$list-group-active-text-color: lighten($list-group-active-bg, 40%);
@@ -649,7 +649,7 @@ $well-border: darken($well-bg, 7%);
//
//##
$badge-color: #fff;
$badge-color: $gray-lightest;
$badge-link-hover-color: #fff;
$badge-bg: $gray-light;

View File

@@ -21,11 +21,9 @@
.list-group-item {
position: relative;
display: block;
padding: 10px 15px;
// Place the border on the list items and negative margin up for better styling
margin-bottom: -1px;
padding: 7px 15px;
background-color: $list-group-bg;
border: 1px solid $list-group-border;
border-bottom: 1px solid $list-group-border;
// Round the first and last items
&:first-child {
@@ -63,6 +61,7 @@ a.list-group-item {
&:focus {
text-decoration: none;
background-color: $list-group-hover-bg;
color: $gray-darkest;
}
// Active class on item itself, not parent

View File

@@ -365,7 +365,7 @@
.navbar-text {
@include navbar-vertical-align($line-height-computed);
@media (min-width: $grid-float-breakpoint) {
//@media (min-width: $grid-float-breakpoint) {
float: left;
margin-left: $navbar-padding-horizontal;
margin-right: $navbar-padding-horizontal;
@@ -374,7 +374,7 @@
&.navbar-right:last-child {
margin-right: 0;
}
}
//}
}
// Alternate navbars

View File

@@ -17,6 +17,7 @@ th {
.table {
width: 100%;
margin-bottom: 0;
border-spacing: 0;
// Cells
> thead,
> tbody,
@@ -34,7 +35,7 @@ th {
// Bottom align for column headings
> thead > tr > th {
vertical-align: bottom;
border-bottom: 2px solid $table-border-color;
border-bottom: 0px solid $table-border-color;
}
// Remove top border from thead by default
> caption + thead,

View File

@@ -44,12 +44,21 @@ a{
opacity: 0.5;
}
// page structure ================================================
.pf-site{
// page menu ================================================
.sb-left{
.list-group-item{
@include box-shadow(inset -10px 0px 5px -5px rgba(0,0,0,0.4));
}
}
// Maps module ===================================================
.sb-right{
.list-group-item{
@include box-shadow(inset 10px 0px 5px -5px rgba(0,0,0,0.4));
}
}
// maps module ===================================================
#pf-map-module{
// Tabs (colored)
@@ -176,7 +185,7 @@ a{
color: $system-color-sec-1-0;
}
// System security level =============================================
// system security level =============================================
.pf-system-sec{
margin-right: 5px;
@@ -234,7 +243,19 @@ a{
color: $teal;
}
// Tooltip ======================================================
// system effect info dialog
.pf-system-effect-dialog-wrapper{
.table{
margin: 15px 0;
font-size: 10px;
td{
text-transform: capitalize;
}
}
}
// tooltip ======================================================
.tooltip-inner{
opacity: 1;
color: $teal;

View File

@@ -36,7 +36,7 @@
overflow: auto;
padding: 5px;
margin: 0 10px;
background: rgba($gray-darker, 0.95);
background: rgba($gray-darker, 0.93);
box-shadow:inset -1px 1px 6px 0 rgba($black, 0.8);
@include border-bottom-radius(5px);
@@ -47,9 +47,14 @@
}
}
.pf-map{
// 20x20px grid background
.pf-grid-small{
background-image: url("#{$base-url}/grid_20x20.png") !important;
}
width: 1200px;
.pf-map{
width: 2000px;
height: 500px;
position: relative;
@@ -217,17 +222,6 @@
}
}
svg.pf-map-connection-frig {
path:not(first-child){
stroke: $gray;
}
path:first-child{
stroke: $gray-lighter;
}
}
// Connection status ============================================
svg.pf-map-connection-eol {
@@ -237,6 +231,24 @@
}
}
// Connection overlay ===========================================
.pf-map-connection-overlay{
padding: 1px 4px;
font-size: 10.4px;
@include border-radius(3px);
}
.frig{
background-color: $orange-light;
color: $gray-darkest;
}
.mass{
background-color: $red-darker;
color: #eaeaea;
}
}
// dialoges =======================================================

View File

@@ -1,101 +1,122 @@
// breadcrumb ============================================================
.breadcrumb{
li{
text-transform: capitalize;
}
}
.pf-system-info-module{
// system info table =====================================================
.pf-system-info-table{
padding-right: 7px;
}
// system info killboard graph ===========================================
.pf-system-info-graphs > div{
width: 100%;
height: 150px;
padding: 10px 0;
position: relative;
}
// routes table ==========================================================
.pf-system-route-table{
font-size: 10px;
}
// signature table =======================================================
.pf-sig-table{
font-size: 10px;
.pf-sig-table-edit-name-input{
text-transform: uppercase;
}
// signature timer/date counter head
th.pf-sig-table-counter{
padding-right: 20px !important;
}
// signature timer/date counter
.pf-sig-table-counter{
text-align: right;
.pf-digit-counter-small{
width: 20px;
display: inline-block;
font-size: 10px;
}
.pf-digit-counter-large{
width: 26px;
display: inline-block;
font-size: 10px;
// breadcrumb ============================================================
.breadcrumb{
li{
text-transform: capitalize;
}
}
// row Tooltip
.popover-content{
table{
border-spacing: 0;
tr{
background-color: $gray;
// system info table =====================================================
.pf-system-info-table{
padding-right: 7px;
}
&:not(:last-child){
// system effects popover ================================================
.popover table{
color: $gray-lighter;
font-size: 10px;
td{
padding: 0 5px;
}
}
// system info killboard graph ===========================================
.pf-system-info-graph-kills{
width: 100%;
height: 150px;
padding: 10px 0;
position: relative;
}
// routes table ==========================================================
.pf-system-route-table{
font-size: 10px;
}
}
.pf-sig-table-module{
// signature table =======================================================
.pf-sig-table{
font-size: 10px;
.pf-sig-table-edit-name-input{
text-transform: uppercase;
}
// signature timer/date counter head
th.pf-sig-table-counter{
padding-right: 20px !important;
}
// signature timer/date counter
.pf-sig-table-counter{
text-align: right;
.pf-digit-counter-small{
width: 20px;
display: inline-block;
font-size: 10px;
}
.pf-digit-counter-large{
width: 26px;
display: inline-block;
font-size: 10px;
}
}
// row Tooltip
.popover-content{
table{
border-spacing: 0;
tr{
background-color: $gray;
&:not(:last-child){
td{
border-bottom: 1px solid $gray-dark;
}
}
td{
border-bottom: 1px solid $gray-dark;
}
}
padding: 2px 5px;
td{
padding: 2px 5px;
&:first-child{
color: $gray-light;
}
&:first-child{
color: $gray-light;
}
&:last-child{
color: $gray-lighter;
&:last-child{
color: $gray-lighter;
}
}
}
}
}
}
}
// table icon toolbar
.pf-sig-table-tools{
height: 45px;
// table icon toolbar
.pf-sig-table-tools{
height: 45px;
.btn:not(:last-child){
margin-right: 10px;
.btn:not(:last-child){
margin-right: 10px;
}
}
.pf-sig-table-tools-action{
height: 75px;
display: none; // triggered by js
}
}
.pf-sig-table-tools-action{
height: 75px;
display: none; // triggered by js
}

View File

@@ -1224,6 +1224,62 @@ input[type="text"]:focus + .input-group-addon {
border-right-width:0px;
}
/*
* DROPDOWN MENU
*/
.dropdown-menu-xs {
min-width:37px;
}
.dropdown-menu-xs>li>a {
padding: 3px 10px;
}.dropdown-menu-xs>li>a:hover i {
color:#fff !important;
}
/* Dropdown menu extended */
.dropdown-submenu {
position: relative;
}
.dropdown-submenu>.dropdown-menu {
top: 0;
left: 100%;
margin-top: -6px;
margin-left: -1px;
}
.dropdown-submenu:hover>.dropdown-menu {
display: block;
}
.dropdown-submenu>a:after {
display: block;
content: " ";
float: right;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
border-width: 5px 0 5px 5px;
border-left-color: $gray-darker;
margin-top: 5px;
margin-right: -10px;
}
.dropdown-submenu:hover>a:after {
border-left-color: $gray-lighter;
}
.dropdown-submenu.pull-left {
float: none;
}
.dropdown-submenu.pull-left>.dropdown-menu {
left: -100%;
margin-left: 10px;
}
/*
* CUSTOM BUTTON
*/

View File

@@ -3,21 +3,6 @@
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header pull-left">
<!--
<button type="button" class="btn btn-default navbar-btn pull-left">
<i class="fa fa-bars fa-lg fa-fw"></i>
</button>
-->
<!--
<button type="button " class="navbar-toggle collapsed navbar-btn" data-toggle="collapse" data-target="#pf-navbar-collapse">
<i class="fa fa-globe fa-lg fa-fw" style=""></i>
</button>
-->
<!--
<a class="navbar-toggle navbar-brand pull-right" href="#">
Menu&nbsp;<i class="fa fa-globe fa-lg fa-fw"></i>
</a> -->
<a class="navbar-brand pf-head-menu" href="#">
<i class="fa fa-bars fa-lg fa-fw"></i>&nbsp;Menu
<!-- <img src="https://image.eveonline.com/Type/17738_32.png" /> -->
@@ -27,10 +12,13 @@
<div class="navbar-header pull-right">
<!--
<ul class="nav navbar-nav">
<li ><a href="#">Test <span class="sr-only">(current)</span></a></li>
<li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
</ul>
-->
<p class="navbar-text"><span class="badge bg-color bg-color-teal">7</span>&nbsp;&nbsp;&nbsp;online</p>
<p class="navbar-text">Signed in as {{userName}}</p>
<a class="navbar-brand pf-head-map" href="#">
Map&nbsp;<i class="fa fa-globe fa-lg fa-fw"></i>
@@ -40,39 +28,5 @@
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<!--
<div class="collapse navbar-collapse" id="pf-navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li><a href="#">Separated link</a></li>
<li class="divider"></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Link</a></li>
</ul>
<p class="navbar-text navbar-right">Signed in as {{userName}}</p>
</div>
-->
</div><!-- /.container-fluid -->
</div>
</div>

View File

@@ -19,21 +19,23 @@
</div>
<div class="col-xs-12 col-sm-5">
<table class="table table-condensed {{tableClass}}">
<thead>
<tr>
<th>Name</th>
<th class="text-right">
{{#system.alias}}
{{system.alias}}
{{/system.alias}}
{{^system.alias}}
{{system.name}}
{{/system.alias}}
[ <span class="{{securityClass}}">{{system.security}}</span> ]
</th>
</tr>
</thead>
<tbody>
<tr>
<td>Name</td>
<td class="text-right">
{{#system.alias}}
{{system.alias}}
{{/system.alias}}
{{^system.alias}}
{{system.name}}
{{/system.alias}}
[ <span class="{{securityClass}}">{{system.security}}</span> ]
</td>
</tr>
{{#effectName}}
<tr>
<tr class="pf-system-info-effect-row">
<td>Effect</td>
<td class="text-right">{{effectName}} <i class="fa fa-square pf-system-effect {{effectClass}}"></i></td>
</tr>