chmod all files, rsync for deploy, cdn support, build page borked
@@ -10,7 +10,7 @@
|
||||
# Activate mod_expires for this directory
|
||||
ExpiresActive on
|
||||
|
||||
ExpiresDefault "access plus 365 days"
|
||||
ExpiresDefault "access"
|
||||
ExpiresByType text/html "access"
|
||||
ExpiresByType application/json "access"
|
||||
</IfModule>
|
||||
0
app/icons/coriolis.svg
Normal file → Executable file
|
Before Width: | Height: | Size: 852 B After Width: | Height: | Size: 852 B |
0
app/icons/github-mark.svg
Normal file → Executable file
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
app/icons/mount-F.svg
Normal file → Executable file
|
Before Width: | Height: | Size: 417 B After Width: | Height: | Size: 417 B |
0
app/icons/mount-G.svg
Normal file → Executable file
|
Before Width: | Height: | Size: 258 B After Width: | Height: | Size: 258 B |
0
app/icons/mount-T.svg
Normal file → Executable file
|
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 326 B |
0
app/images/bay-1920x1080.jpg
Normal file → Executable file
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
0
app/images/deep-space-1920x1080.jpg
Normal file → Executable file
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
0
app/images/logo/android-chrome-144x144.png
Normal file → Executable file
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
0
app/images/logo/android-chrome-192x192.png
Normal file → Executable file
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
0
app/images/logo/android-chrome-72x72.png
Normal file → Executable file
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
0
app/images/logo/android-chrome-96x96.png
Normal file → Executable file
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
0
app/images/logo/apple-touch-icon-114x114.png
Normal file → Executable file
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
0
app/images/logo/apple-touch-icon-120x120.png
Normal file → Executable file
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
0
app/images/logo/apple-touch-icon-144x144.png
Normal file → Executable file
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
0
app/images/logo/apple-touch-icon-152x152.png
Normal file → Executable file
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
0
app/images/logo/apple-touch-icon-180x180.png
Normal file → Executable file
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
0
app/images/logo/apple-touch-icon-76x76.png
Normal file → Executable file
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
0
app/images/logo/apple-touch-icon-precomposed.png
Normal file → Executable file
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
0
app/images/logo/apple-touch-icon.png
Normal file → Executable file
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
0
app/images/logo/browserconfig.xml
Normal file → Executable file
0
app/images/logo/favicon-194x194.png
Normal file → Executable file
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
0
app/images/logo/favicon-96x96.png
Normal file → Executable file
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
0
app/images/logo/favicon.ico
Normal file → Executable file
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 361 KiB |
0
app/images/logo/manifest.json
Normal file → Executable file
0
app/images/logo/mstile-144x144.png
Normal file → Executable file
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
0
app/images/logo/mstile-150x150.png
Normal file → Executable file
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
0
app/images/logo/mstile-310x150.png
Normal file → Executable file
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
0
app/images/logo/mstile-310x310.png
Normal file → Executable file
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
0
app/images/logo/mstile-70x70.png
Normal file → Executable file
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
1
app/index.html
Normal file → Executable file
@@ -1,7 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html ng-app="app" ng-strict-di="true">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title ng-bind="title">Coriolis</title>
|
||||
<link rel="stylesheet" href="/app.css">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/images/logo/apple-touch-icon-76x76.png">
|
||||
|
||||
0
app/js/app.js
Normal file → Executable file
0
app/js/config.js
Normal file → Executable file
19
app/js/controllers/controller-comparison.js
Normal file → Executable file
@@ -18,7 +18,7 @@ angular.module('app').controller('ComparisonController', ['lodash', '$rootScope'
|
||||
*/
|
||||
$scope.addBuild = function (shipId, buildName, code) {
|
||||
var data = Ships[shipId]; // Get ship properties
|
||||
var code = code? code : Persist.builds[shipId][buildName]; // Retrieve build code if not passed
|
||||
code = code? code : Persist.builds[shipId][buildName]; // Retrieve build code if not passed
|
||||
var b = new Ship(shipId, data.properties, data.slots); // Create a new Ship instance
|
||||
Serializer.toShip(b, code); // Populate components from code
|
||||
// Extend ship instance and add properties below
|
||||
@@ -153,7 +153,7 @@ angular.module('app').controller('ComparisonController', ['lodash', '$rootScope'
|
||||
$scope.desc
|
||||
);
|
||||
return $state.href('comparison', {code: code}, {absolute:true});
|
||||
};
|
||||
}
|
||||
|
||||
/* Event listeners */
|
||||
$scope.$on('close', function() {
|
||||
@@ -161,20 +161,21 @@ angular.module('app').controller('ComparisonController', ['lodash', '$rootScope'
|
||||
});
|
||||
|
||||
/* Initialization */
|
||||
var shipId, buildName, comparisonData;
|
||||
if ($scope.compareMode) {
|
||||
if ($scope.name == 'all') {
|
||||
for (var shipId in Persist.builds) {
|
||||
for (var buildName in Persist.builds[shipId]) {
|
||||
for (shipId in Persist.builds) {
|
||||
for (buildName in Persist.builds[shipId]) {
|
||||
$scope.addBuild(shipId, buildName);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (var shipId in Persist.builds) {
|
||||
for (var buildName in Persist.builds[shipId]) {
|
||||
for (shipId in Persist.builds) {
|
||||
for (buildName in Persist.builds[shipId]) {
|
||||
$scope.unusedBuilds.push({id: shipId, buildName: buildName, name: Ships[shipId].properties.name});
|
||||
}
|
||||
}
|
||||
var comparisonData = Persist.getComparison($scope.name);
|
||||
comparisonData = Persist.getComparison($scope.name);
|
||||
if (comparisonData) {
|
||||
defaultFacets = comparisonData.facets;
|
||||
comparisonData.builds.forEach(function (b) {
|
||||
@@ -185,9 +186,9 @@ angular.module('app').controller('ComparisonController', ['lodash', '$rootScope'
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
var comparisonData = Serializer.toComparison($stateParams.code);
|
||||
comparisonData = Serializer.toComparison($stateParams.code);
|
||||
defaultFacets = comparisonData.f;
|
||||
$scope.name = comparisonData.n
|
||||
$scope.name = comparisonData.n;
|
||||
$scope.predicate = comparisonData.p;
|
||||
$scope.desc = comparisonData.d;
|
||||
comparisonData.b.forEach(function (build) {
|
||||
|
||||
0
app/js/controllers/controller-delete.js
Normal file → Executable file
0
app/js/controllers/controller-error.js
Normal file → Executable file
0
app/js/controllers/controller-export.js
Normal file → Executable file
0
app/js/controllers/controller-import.js
Normal file → Executable file
0
app/js/controllers/controller-link.js
Normal file → Executable file
0
app/js/controllers/controller-modal.js
Normal file → Executable file
0
app/js/controllers/controller-outfit.js
Normal file → Executable file
0
app/js/controllers/controller-shipyard.js
Normal file → Executable file
0
app/js/directives/directive-area-chart.js
Normal file → Executable file
4
app/js/directives/directive-bar-chart.js
Normal file → Executable file
@@ -1,4 +1,4 @@
|
||||
angular.module('app').directive('barChart', ['$rootScope', function ($rootScope) {
|
||||
angular.module('app').directive('barChart', function () {
|
||||
|
||||
function bName (build) {
|
||||
return build.buildName + '\n' + build.name;
|
||||
@@ -118,4 +118,4 @@ angular.module('app').directive('barChart', ['$rootScope', function ($rootScope)
|
||||
|
||||
}
|
||||
};
|
||||
}]);
|
||||
});
|
||||
0
app/js/directives/directive-comparison-table.js
Normal file → Executable file
0
app/js/directives/directive-component-select.js
Normal file → Executable file
0
app/js/directives/directive-header.js
Normal file → Executable file
0
app/js/directives/directive-slot-hardpoint.js
Normal file → Executable file
0
app/js/directives/directive-slot-internal.js
Normal file → Executable file
14
app/js/factory-utils.js
Normal file → Executable file
@@ -12,12 +12,12 @@ angular.module('app').factory('Utils', ['$state','$http', function ($state, $htt
|
||||
}
|
||||
|
||||
function comparisonBBCode(facets, builds, link) {
|
||||
var colCount = 2, i,j,k, l = [];
|
||||
var colCount = 2, b, i, j, k, f, fl, p, pl, l = [];
|
||||
|
||||
for (i = 0; i < facets.length; i++) {
|
||||
if (facets[i].active) {
|
||||
var f = facets[i];
|
||||
var p = f.props;
|
||||
f = facets[i];
|
||||
p = f.props;
|
||||
|
||||
if (p.length == 1) {
|
||||
l.push('[th][B][COLOR=#FF8C0D]', f.title, '[/COLOR][/B][/th]');
|
||||
@@ -33,15 +33,15 @@ angular.module('app').factory('Utils', ['$state','$http', function ($state, $htt
|
||||
l.push('[/tr]\n');
|
||||
|
||||
for (i = 0; i < builds.length; i++) {
|
||||
var b = builds[i];
|
||||
b = builds[i];
|
||||
//var href = $state.href('outfit',{shipId: b.id, code: b.code, bn: b.buildName}, {absolute: true});
|
||||
l.push('[tr][td]', b.name,'[/td][td]', b.buildName ,'[/td]');
|
||||
|
||||
for (j = 0, fl = facets.length; j < fl; j++) {
|
||||
if (facets[j].active) {
|
||||
var f = facets[j];
|
||||
var p = f.props;
|
||||
for (var k = 0, pl = p.length; k < pl; k++) {
|
||||
f = facets[j];
|
||||
p = f.props;
|
||||
for (k = 0, pl = p.length; k < pl; k++) {
|
||||
l.push('[td="align: right"]', f.fmt(b[p[k]]), ' [size=-2]', f.unit, '[/size][/td]');
|
||||
}
|
||||
}
|
||||
|
||||
8
app/js/service-persist.js
Normal file → Executable file
@@ -90,10 +90,10 @@ angular.module('app').service('Persist', ['$window','lodash', function ($window,
|
||||
this.comparisons[name] = {
|
||||
facets: facets,
|
||||
builds: _.map(builds, function (b) { return {shipId: b.id, buildName: b.buildName }; })
|
||||
}
|
||||
};
|
||||
localStorage.setItem(LS_KEY_COMPARISONS, angular.toJson(this.comparisons));
|
||||
this.state.hasComparisons = true;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* [getComparison description]
|
||||
@@ -105,7 +105,7 @@ angular.module('app').service('Persist', ['$window','lodash', function ($window,
|
||||
return this.comparisons[name];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Removes the comparison from localstorage.
|
||||
@@ -117,7 +117,7 @@ angular.module('app').service('Persist', ['$window','lodash', function ($window,
|
||||
localStorage.setItem(LS_KEY_COMPARISONS, angular.toJson(this.comparisons));
|
||||
this.state.hasComparisons = Object.keys(this.comparisons).length > 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Delete all builds and comparisons from localStorage
|
||||
|
||||
4
app/js/service-serializer.js
Normal file → Executable file
@@ -68,11 +68,11 @@ angular.module('app').service('Serializer', ['lodash', function (_) {
|
||||
p: predicate,
|
||||
d: desc? 1 : 0
|
||||
})).replace(/\//g,'-');
|
||||
}
|
||||
};
|
||||
|
||||
this.toComparison = function (code) {
|
||||
return angular.fromJson(LZString.decompressFromBase64(code.replace(/-/g,'/')));
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Utility function to retrieve a safe string for selected component for a slot.
|
||||
|
||||
0
app/js/shipyard/factory-component-set.js
Normal file → Executable file
0
app/js/shipyard/factory-ship.js
Normal file → Executable file
0
app/js/shipyard/module-shipyard.js
Normal file → Executable file
0
app/js/shipyard/service-components.js
Normal file → Executable file
0
app/less/app.less
Normal file → Executable file
0
app/less/background-images.less
Normal file → Executable file
0
app/less/buttons.less
Normal file → Executable file
0
app/less/chart-tooltip.less
Normal file → Executable file
0
app/less/charts.less
Normal file → Executable file
6
app/less/colors.less
Normal file → Executable file
@@ -20,6 +20,12 @@
|
||||
@secondary-bg: fadeout(darken(@secondary, @bgDarken), @bgTransparency); // Brown background
|
||||
@warning-bg: fadeout(darken(@warning, @bgDarken), @bgTransparency); // Dark Red
|
||||
|
||||
|
||||
.fg {
|
||||
color: @fg;
|
||||
fill: @fg;
|
||||
}
|
||||
|
||||
.disabled {
|
||||
color: @disabled;
|
||||
fill: @disabled;
|
||||
|
||||
0
app/less/comparison.less
Normal file → Executable file
0
app/less/error.less
Normal file → Executable file
0
app/less/fonts.less
Normal file → Executable file
2
app/less/header.less
Normal file → Executable file
@@ -80,7 +80,7 @@ header {
|
||||
text-decoration: none;
|
||||
|
||||
&.name {
|
||||
font-family: Helvetica, sans-serif;
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
&:visited {
|
||||
|
||||
0
app/less/icons.less
Normal file → Executable file
4
app/less/list.less
Normal file → Executable file
@@ -68,8 +68,4 @@
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(n+2) {
|
||||
border-top: 1px solid @primary;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
0
app/less/modal.less
Normal file → Executable file
19
app/less/outfit.less
Normal file → Executable file
@@ -17,15 +17,13 @@
|
||||
|
||||
input {
|
||||
background: none;
|
||||
color: @primary-disabled;
|
||||
outline: none;
|
||||
line-height: 1.5em;
|
||||
font-size: 0.8em;
|
||||
border: 1px solid @primary-disabled;
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
padding: 0.5em;
|
||||
&:hover, &:focus {
|
||||
|
||||
&:focus {
|
||||
border: 1px solid @primary;
|
||||
color: @primary;
|
||||
}
|
||||
@@ -54,13 +52,12 @@
|
||||
|
||||
#summary {
|
||||
.user-select-none();
|
||||
float: right;
|
||||
min-width: 40em;
|
||||
margin: 0.25em;
|
||||
border-top: 2px solid @primary;
|
||||
border-bottom: 2px solid @primary;
|
||||
background-color: @primary-bg;
|
||||
text-align: left;
|
||||
margin: 0;
|
||||
border-collapse: collapse;
|
||||
|
||||
tbody td {
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
.toggle {
|
||||
|
||||
0
app/less/select.less
Normal file → Executable file
0
app/less/shipyard.less
Normal file → Executable file
0
app/less/slot.less
Normal file → Executable file
0
app/less/sortable.less
Normal file → Executable file
0
app/less/table.less
Normal file → Executable file
16
app/less/utilities.less
Normal file → Executable file
@@ -29,3 +29,19 @@
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.vertical {
|
||||
-webkit-transform: rotate(-90deg);
|
||||
-moz-transform: rotate(-90deg);
|
||||
-ms-transform: rotate(-90deg);
|
||||
-o-transform: rotate(-90deg);
|
||||
transform: rotate(-90deg);
|
||||
|
||||
-webkit-transform-origin: 50% 50%;
|
||||
-moz-transform-origin: 50% 50%;
|
||||
-ms-transform-origin: 50% 50%;
|
||||
-o-transform-origin: 50% 50%;
|
||||
transform-origin: 50% 50%;
|
||||
|
||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
|
||||
}
|
||||
2
app/views/_header.html
Normal file → Executable file
@@ -58,6 +58,4 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <a href="#" class="r" target="_blank" title="Reddit Thread"><svg class="icon xl"><use xlink:href="#reddit"></use></svg></a> -->
|
||||
|
||||
</header>
|
||||
0
app/views/_modal.html
Normal file → Executable file
0
app/views/_slot-hardpoint.html
Normal file → Executable file
2
app/views/_slot-internal.html
Normal file → Executable file
@@ -9,6 +9,8 @@
|
||||
<div class="l" ng-if="c.c.bins">{{c.c.bins}} <u>Bins</u></div>
|
||||
<div class="l" ng-if="c.c.rate">Rate: {{$r.fRound4(c.c.rate/1000)}} <u>T/s</u></div>
|
||||
<div class="l" ng-if="c.c.ammo">Ammo: {{c.c.ammo}}</div>
|
||||
<div class="l" ng-if="c.c.cells">Cells: {{c.c.cells}}</div>
|
||||
<div class="l" ng-if="c.c.recharge">Recharge: {{c.c.recharge}} <u>Mj</u></div>
|
||||
<div class="l" ng-if="c.c.repair">Repair: {{c.c.repair}}</div>
|
||||
<div class="l" ng-if="c.c.range">{{c.c.range}} <u>KM</u></div>
|
||||
<div class="l" ng-if="c.c.rangeRating">Range: {{c.c.rangeRating}}</div>
|
||||
|
||||
9
app/views/modal-about.html
Normal file → Executable file
@@ -4,8 +4,13 @@
|
||||
|
||||
<p>Coriolis was created for non-commercial purposes. It is not endorsed by nor reflects the views or opinions of Frontier Developments.</p>
|
||||
|
||||
<h2>Github</h2>
|
||||
<a href="https://github.com/cmmcleod/coriolis" target="_blank" title="Coriolis Github Project">github.com/cmmcleod/coriolis</a>
|
||||
<div>
|
||||
<a class="l" style="margin: 0.4em" href="https://github.com/cmmcleod/coriolis" target="_blank" title="Coriolis Github Project">
|
||||
<svg class="icon fg xl"><use xlink:href="#github-mark"></use></svg>
|
||||
</a>
|
||||
<h2>Github</h2>
|
||||
<a href="https://github.com/cmmcleod/coriolis" target="_blank" title="Coriolis Github Project">github.com/cmmcleod/coriolis</a>
|
||||
</div>
|
||||
<p>
|
||||
Coriolis is an open source project. Checkout the list of upcoming features and to-do list on github.
|
||||
Any and all contributions and feedback are welcome. If you encounter any bugs please report them and provide as much detail as possible.
|
||||
|
||||
0
app/views/modal-delete.html
Normal file → Executable file
2
app/views/modal-export.html
Normal file → Executable file
@@ -1,5 +1,5 @@
|
||||
<h2 ng-bind="title"></h2>
|
||||
<div>
|
||||
<textarea class="cb json" ng-focus="onTextClick($event)" ng-bind="export"></textarea>
|
||||
<textarea class="cb json" ng-click="onTextClick($event)" ng-bind="export"></textarea>
|
||||
</div>
|
||||
<button class="r dismiss" ng-click="dismiss()">Close</button>
|
||||
0
app/views/modal-import.html
Normal file → Executable file
4
app/views/modal-link.html
Normal file → Executable file
@@ -1,9 +1,9 @@
|
||||
<h2>Permalink</h2>
|
||||
<br>
|
||||
<h3>URL</h3>
|
||||
<input ng-model="url" size="70" ng-focus="onTextClick($event)">
|
||||
<input ng-model="url" size="70" ng-click="onTextClick($event)">
|
||||
<br><br>
|
||||
<h3>Shortened</h3>
|
||||
<input ng-model="shortenedUrl" size="25" ng-focus="onTextClick($event)">
|
||||
<input ng-model="shortenedUrl" size="25" ng-click="onTextClick($event)">
|
||||
<br><br>
|
||||
<button class="r dismiss" ng-click="dismiss()">Close</button>
|
||||
|
||||
2
app/views/page-comparison.html
Normal file → Executable file
@@ -48,7 +48,7 @@
|
||||
<table>
|
||||
<thead><tr><th colspan="2">Available</th></tr></thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="b in unusedBuilds | orderBy:'[0]'" ng-click="addBuild(b.id, b.buildName)">
|
||||
<tr ng-repeat="b in unusedBuilds | orderBy:'name'" ng-click="addBuild(b.id, b.buildName)">
|
||||
<td class="tl" ng-bind="b.name"></td><td class="tl" ng-bind="b.buildName"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
0
app/views/page-error.html
Normal file → Executable file
142
app/views/page-outfit.html
Normal file → Executable file
@@ -1,12 +1,63 @@
|
||||
<div id="outfit">
|
||||
|
||||
<div id="overview" class="list">
|
||||
<h1 ng-bind="ship.name"></h1>
|
||||
<div id="build">
|
||||
<input ng-model="buildName" ng-change="bnChange()" placeholder="Enter Build Name" maxlength="50" />
|
||||
<button ng-click="saveBuild()" ng-disabled="!buildName || savedCode && code == savedCode">
|
||||
<svg class="icon lg "><use xlink:href="#floppy-disk"></use></svg> Save
|
||||
</button>
|
||||
<button ng-click="reloadBuild()" ng-disabled="!savedCode || code == savedCode">
|
||||
<svg class="icon lg"><use xlink:href="#spinner11"></use></svg> Reload
|
||||
</button>
|
||||
<button class="danger" ng-click="deleteBuild()" ng-disabled="!savedCode">
|
||||
<svg class="icon lg"><use xlink:href="#bin"></use></svg>
|
||||
</button>
|
||||
<button ui-sref="outfit({shipId: ship.id,code:null, bn: buildName})" ng-disabled="!code">
|
||||
<svg class="icon lg"><use xlink:href="#switch"></use></svg> Reset
|
||||
</button>
|
||||
<button ng-disabled="!code">
|
||||
<svg class="icon lg"><use xlink:href="#embed"></use></svg> Forum
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table id="summary">
|
||||
<thead>
|
||||
<tr class="main">
|
||||
<th colspan="3">Manuverability</th><th colspan="2">Mass</th><th rowspan="2">Cargo</th><th rowspan="2">Fuel</th>
|
||||
<th rowspan="2">Armour</th><th rowspan="2">Shields</th><th colspan="2">Jump Range</th><th rowspan="2">Insurance</th><th rowspan="2">Cost</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Agility</th><th>Thrusters</th><th>Boost</th><th class="lft">Unladen</th><th>Laden</th><th>Unladen</th><th>Laden</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{ship.agility}}/10</td>
|
||||
<td>{{fRound(ship.speed)}} <u>m/s</u></td>
|
||||
<td>{{fRound(ship.boost)}} <u>m/s</u></td>
|
||||
<td>{{fRound(ship.unladenMass)}} <u>T</u></td>
|
||||
<td>{{fRound(ship.ladenMass)}} <u>T</u></td>
|
||||
<td>{{fRound(ship.cargoCapacity)}} <u>T</u></td>
|
||||
<td>{{fRound(ship.fuelCapacity)}} <u>T</u></td>
|
||||
<td>{{ship.armourTotal}} ({{ship.armour}} + {{ship.armourAdded}})</td>
|
||||
<td>{{fRound(ship.shieldStrength)}} <u>Mj</u> ({{fRPct(ship.shieldMultiplier)}})</td>
|
||||
<td>{{fRound(ship.unladenJumpRange)}} <u>LY</u></td>
|
||||
<td>{{fRound(ship.ladenJumpRange)}} <u>LY</u></td>
|
||||
<td>{{fCrd(ship.totalCost * insurance.current.pct)}} <u>CR</u></td>
|
||||
<td>{{fCrd(ship.totalCost)}} <u>CR</u></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div id="hardpoints" class="slot-group">
|
||||
<h1>HardPoints</h1>
|
||||
<h1 class="vertical">HardPoints</h1>
|
||||
<div class="slot" ng-repeat="h in ship.hardpoints" ng-click="selectSlot($event, h)" ng-class="{selected: selectedSlot==h}">
|
||||
<div slot-hardpoint class="details" hp="h" size="HPC[h.maxClass]" lbl="hgMap[h.c.grp]"></div>
|
||||
<div class="select" ng-class="{hardpoint: h.maxClass > 0}" ng-if="selectedSlot==h" ng-click="select('h',h,$event)">
|
||||
<div component-select s="h" groups="availCS.getHps(h.maxClass)"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -80,9 +131,9 @@
|
||||
<div class="l">Power Distributor</div>
|
||||
<div class="r">{{pd.id}}</div>
|
||||
<div class="cb"></div>
|
||||
<div class="l">Sys: {{pd.c.weaponcapacity}} <u>Mj</u> {{pd.c.weaponrecharge}} <u>Mj/s</u></div>
|
||||
<div class="l">Wep: {{pd.c.systemcapacity}} <u>Mj</u> {{pd.c.systemrecharge}} <u>Mj/s</u></div>
|
||||
<div class="l">Eng: {{pd.c.enginecapacity}} <u>Mj</u> {{pd.c.enginerecharge}}<u>Mj/s</u></div>
|
||||
<div class="l">Sys: {{pd.c.weaponcapacity}} <u>Mj</u> / {{pd.c.weaponrecharge}} <u>MW</u></div>
|
||||
<div class="l">Wep: {{pd.c.systemcapacity}} <u>Mj</u> / {{pd.c.systemrecharge}} <u>MW</u></div>
|
||||
<div class="l">Eng: {{pd.c.enginecapacity}} <u>Mj</u> / {{pd.c.enginerecharge}} <u>MW</u></div>
|
||||
<div class="r cr">{{pd.c.mass}} <u>T</u></div>
|
||||
</div>
|
||||
<div component-select class="select" s="pd" opts="availCS.common[4]" ng-if="selectedSlot==pd" ng-click="select('c',pd,$event)"></div>
|
||||
@@ -119,71 +170,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="summary">
|
||||
<div id="overview" class="list">
|
||||
<h1 ng-bind="ship.name"></h1>
|
||||
<div id="build">
|
||||
<input ng-model="buildName" ng-change="bnChange()" placeholder="Enter Build Name" maxlength="50" />
|
||||
<button ng-click="saveBuild()" ng-disabled="!buildName || savedCode && code == savedCode">
|
||||
<svg class="icon lg "><use xlink:href="#floppy-disk"></use></svg> Save
|
||||
</button>
|
||||
<button ng-click="reloadBuild()" ng-disabled="!savedCode || code == savedCode">
|
||||
<svg class="icon lg"><use xlink:href="#spinner11"></use></svg> Load
|
||||
</button>
|
||||
<button class="danger" ng-click="deleteBuild()" ng-disabled="!savedCode">
|
||||
<svg class="icon lg"><use xlink:href="#bin"></use></svg>
|
||||
</button>
|
||||
<button ui-sref="outfit({shipId: ship.id,code:null, bn: buildName})" ng-disabled="!code">
|
||||
<svg class="icon lg"><use xlink:href="#switch"></use></svg> Reset
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="list">
|
||||
<div class="header">Maneuverability</div>
|
||||
<div class="summary">
|
||||
<div class="item"><div class="lbl">Boost</div><div class="val">{{fRound(ship.boost)}} <u>m/s</u></div></div>
|
||||
<div class="item"><div class="lbl">Speed</div><div class="val">{{fRound(ship.speed)}} <u>m/s</u></div></div>
|
||||
<div class="item"><div class="lbl">Agility</div><div class="val">{{ship.agility}} / 10</div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="list">
|
||||
<div class="header">Shields</div>
|
||||
<div class="summary">
|
||||
<!-- TODO: Implement Shield Recharge rate
|
||||
<div class="item"><div class="lbl">Recharge Rate</div><div class="val">{{fRound(0)}} <u>Mj/s</u></div></div>
|
||||
/-->
|
||||
<div class="item"><div class="lbl">Strength</div><div class="val">{{fRound(ship.shieldStrength)}} <u>Mj</u></div></div>
|
||||
<div class="item"><div class="lbl">Multiplier</div><div class="val">{{fRPct(ship.shieldMultiplier)}}</div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="list">
|
||||
<div class="header">Armor</div>
|
||||
<div class="summary">
|
||||
<div class="item"><div class="lbl">Total</div><div class="val">{{ship.armourTotal}}</div></div>
|
||||
<div class="item"><div class="lbl">Added</div><div class="val">{{ship.armourAdded}}</div></div>
|
||||
<div class="item"><div class="lbl">Base</div><div class="val">{{ship.armour}}</div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="list">
|
||||
<div class="header">Mass</div>
|
||||
<div class="summary">
|
||||
<div class="item"><div class="lbl">Laden</div><div class="val">{{fRound(ship.ladenMass)}} <u>T</u></div></div>
|
||||
<div class="item"><div class="lbl">Unladen</div><div class="val">{{fRound(ship.unladenMass)}} <u>T</u></div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="list">
|
||||
<div class="header">Capacity</div>
|
||||
<div class="summary">
|
||||
<div class="item"><div class="lbl">Cargo</div><div class="val">{{fRound(ship.cargoCapacity)}} <u>T</u></div></div>
|
||||
<div class="item"><div class="lbl">Fuel</div><div class="val">{{fRound(ship.fuelCapacity)}} <u>T</u></div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cb">
|
||||
<div class="list" ship="ship">
|
||||
<div class="header toggle" ng-click="powerExp = !powerExp">Power Use</div>
|
||||
<div class="items" ng-if="!powerExp">
|
||||
@@ -224,22 +211,11 @@
|
||||
</div>
|
||||
|
||||
<div class="list">
|
||||
<div class="header toggle" ng-click="rangeExp = !rangeExp">Jump Range</div>
|
||||
<div class="items cen" ng-if="!rangeExp">
|
||||
<div class="header toggle">Jump Range</div>
|
||||
<div class="items cen">
|
||||
<div class="chart" area-chart config="jrChart" series="jrSeries" width="500" height="250"></div>
|
||||
</div>
|
||||
<div class="summary toggle" ng-click="rangeExp = !rangeExp">
|
||||
<div class="item">
|
||||
<div class="lbl">Laden</div>
|
||||
<div class="val">{{fRound(ship.ladenJumpRange)}} <u>LY</u></div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="lbl">Unladen</div>
|
||||
<div class="val">{{fRound(ship.unladenJumpRange)}} <u>LY</u></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="list">
|
||||
<div class="header toggle" ng-click="costsExpanded = !costsExpanded">Costs</div>
|
||||
<div class="items" ng-if="!costsExpanded">
|
||||
|
||||