2015-05-13 22:58:22 +00:00
|
|
|
<!--
|
2021-03-29 16:56:52 +00:00
|
|
|
Open MCT, Copyright (c) 2014-2023, United States Government
|
2015-05-13 22:58:22 +00:00
|
|
|
as represented by the Administrator of the National Aeronautics and Space
|
|
|
|
Administration. All rights reserved.
|
|
|
|
|
2016-07-12 23:21:58 +00:00
|
|
|
Open MCT is licensed under the Apache License, Version 2.0 (the
|
2015-05-13 22:58:22 +00:00
|
|
|
"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.
|
|
|
|
|
2016-07-12 23:21:58 +00:00
|
|
|
Open MCT includes source code licensed under additional open source
|
2015-05-13 22:58:22 +00:00
|
|
|
licenses. See the Open Source Licenses file (LICENSES.md) included with
|
|
|
|
this source code distribution or the Licensing information page available
|
|
|
|
at runtime from the About dialog for additional information.
|
|
|
|
-->
|
2016-08-22 18:38:17 +00:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
2018-05-25 18:19:27 +00:00
|
|
|
<head>
|
|
|
|
<meta charset="utf-8" />
|
|
|
|
<meta
|
|
|
|
name="viewport"
|
|
|
|
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no"
|
|
|
|
/>
|
|
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
|
|
<title></title>
|
2018-08-07 21:47:50 +00:00
|
|
|
<script src="dist/openmct.js"></script>
|
2019-08-30 22:51:52 +00:00
|
|
|
<link
|
|
|
|
rel="icon"
|
|
|
|
type="image/png"
|
|
|
|
href="dist/favicons/favicon-96x96.png"
|
|
|
|
sizes="96x96"
|
|
|
|
type="image/x-icon"
|
|
|
|
/>
|
|
|
|
<link
|
|
|
|
rel="icon"
|
|
|
|
type="image/png"
|
|
|
|
href="dist/favicons/favicon-32x32.png"
|
|
|
|
sizes="32x32"
|
|
|
|
type="image/x-icon"
|
|
|
|
/>
|
|
|
|
<link
|
|
|
|
rel="icon"
|
|
|
|
type="image/png"
|
|
|
|
href="dist/favicons/favicon-16x16.png"
|
|
|
|
sizes="16x16"
|
|
|
|
type="image/x-icon"
|
2023-05-18 21:54:46 +00:00
|
|
|
/>
|
2020-11-06 21:58:57 +00:00
|
|
|
<style type="text/css">
|
|
|
|
@keyframes splash-spinner {
|
|
|
|
0% {
|
|
|
|
transform: translate(-50%, -50%) rotate(0deg);
|
|
|
|
}
|
|
|
|
100% {
|
|
|
|
transform: translate(-50%, -50%) rotate(360deg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#splash-screen {
|
|
|
|
background-color: black;
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
z-index: 10000;
|
|
|
|
}
|
|
|
|
|
|
|
|
#splash-screen:before {
|
|
|
|
animation-name: splash-spinner;
|
|
|
|
animation-duration: 0.5s;
|
|
|
|
animation-iteration-count: infinite;
|
|
|
|
animation-timing-function: linear;
|
|
|
|
border-radius: 50%;
|
|
|
|
border-color: rgba(255, 255, 255, 0.25);
|
|
|
|
border-top-color: white;
|
|
|
|
border-style: solid;
|
|
|
|
border-width: 10px;
|
|
|
|
content: '';
|
|
|
|
display: block;
|
|
|
|
opacity: 0.25;
|
|
|
|
position: absolute;
|
|
|
|
left: 50%;
|
|
|
|
top: 50%;
|
|
|
|
height: 100px;
|
|
|
|
width: 100px;
|
|
|
|
}
|
|
|
|
</style>
|
2018-05-25 18:19:27 +00:00
|
|
|
</head>
|
2023-07-19 18:22:23 +00:00
|
|
|
<body>
|
|
|
|
<div id="app"></div>
|
|
|
|
</body>
|
2018-08-07 21:47:50 +00:00
|
|
|
<script>
|
2020-06-30 19:10:35 +00:00
|
|
|
const THIRTY_SECONDS = 30 * 1000;
|
2020-10-29 00:46:28 +00:00
|
|
|
const ONE_MINUTE = THIRTY_SECONDS * 2;
|
|
|
|
const FIVE_MINUTES = ONE_MINUTE * 5;
|
|
|
|
const FIFTEEN_MINUTES = FIVE_MINUTES * 3;
|
|
|
|
const THIRTY_MINUTES = FIFTEEN_MINUTES * 2;
|
|
|
|
const ONE_HOUR = THIRTY_MINUTES * 2;
|
|
|
|
const TWO_HOURS = ONE_HOUR * 2;
|
|
|
|
const ONE_DAY = ONE_HOUR * 24;
|
2019-02-07 19:36:37 +00:00
|
|
|
|
2020-04-21 22:23:43 +00:00
|
|
|
openmct.install(openmct.plugins.LocalStorage());
|
2022-04-22 21:58:08 +00:00
|
|
|
|
2022-01-20 21:56:17 +00:00
|
|
|
openmct.install(openmct.plugins.example.Generator());
|
|
|
|
openmct.install(openmct.plugins.example.EventGeneratorPlugin());
|
|
|
|
openmct.install(openmct.plugins.example.ExampleImagery());
|
2022-06-03 20:12:42 +00:00
|
|
|
openmct.install(openmct.plugins.example.ExampleTags());
|
2021-11-15 22:20:02 +00:00
|
|
|
|
2019-12-11 22:27:13 +00:00
|
|
|
openmct.install(openmct.plugins.Espresso());
|
2018-08-07 21:47:50 +00:00
|
|
|
openmct.install(openmct.plugins.MyItems());
|
2023-03-16 17:34:31 +00:00
|
|
|
openmct.install(
|
|
|
|
openmct.plugins.PlanLayout({
|
|
|
|
creatable: true
|
|
|
|
})
|
2018-08-07 21:47:50 +00:00
|
|
|
);
|
|
|
|
openmct.install(openmct.plugins.Timeline());
|
2019-03-29 05:21:27 +00:00
|
|
|
openmct.install(openmct.plugins.Hyperlink());
|
2018-08-07 21:47:50 +00:00
|
|
|
openmct.install(openmct.plugins.UTCTimeSystem());
|
2020-06-30 19:10:35 +00:00
|
|
|
openmct.install(
|
|
|
|
openmct.plugins.AutoflowView({
|
|
|
|
type: 'telemetry.panel'
|
2020-10-29 00:46:28 +00:00
|
|
|
})
|
2023-05-18 21:54:46 +00:00
|
|
|
);
|
2020-10-29 00:46:28 +00:00
|
|
|
openmct.install(
|
2020-06-30 19:10:35 +00:00
|
|
|
openmct.plugins.DisplayLayout({
|
2020-10-29 00:46:28 +00:00
|
|
|
showAsView: ['summary-widget', 'example.imagery']
|
2020-06-30 19:10:35 +00:00
|
|
|
})
|
2023-05-18 21:54:46 +00:00
|
|
|
);
|
2020-06-30 19:10:35 +00:00
|
|
|
openmct.install(
|
|
|
|
openmct.plugins.Conductor({
|
|
|
|
menuOptions: [
|
2018-08-07 21:47:50 +00:00
|
|
|
{
|
|
|
|
name: 'Fixed',
|
|
|
|
timeSystem: 'utc',
|
2020-10-29 00:46:28 +00:00
|
|
|
bounds: {
|
|
|
|
start: Date.now() - THIRTY_MINUTES,
|
|
|
|
end: Date.now()
|
2023-05-18 21:54:46 +00:00
|
|
|
},
|
2020-10-29 00:46:28 +00:00
|
|
|
// commonly used bounds can be stored in history
|
|
|
|
// bounds (start and end) can accept either a milliseconds number
|
|
|
|
// or a callback function returning a milliseconds number
|
|
|
|
// a function is useful for invoking Date.now() at exact moment of preset selection
|
|
|
|
presets: [
|
|
|
|
{
|
|
|
|
label: 'Last Day',
|
|
|
|
bounds: {
|
|
|
|
start: () => Date.now() - ONE_DAY,
|
|
|
|
end: () => Date.now()
|
2018-08-07 21:47:50 +00:00
|
|
|
}
|
2023-05-18 21:54:46 +00:00
|
|
|
},
|
|
|
|
{
|
2020-06-30 19:10:35 +00:00
|
|
|
label: 'Last 2 hours',
|
2020-10-29 00:46:28 +00:00
|
|
|
bounds: {
|
|
|
|
start: () => Date.now() - TWO_HOURS,
|
2020-06-30 19:10:35 +00:00
|
|
|
end: () => Date.now()
|
2023-05-18 21:54:46 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
2020-06-30 19:10:35 +00:00
|
|
|
label: 'Last hour',
|
2020-10-29 00:46:28 +00:00
|
|
|
bounds: {
|
|
|
|
start: () => Date.now() - ONE_HOUR,
|
2020-06-30 19:10:35 +00:00
|
|
|
end: () => Date.now()
|
2023-05-18 21:54:46 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
2020-06-30 19:10:35 +00:00
|
|
|
// maximum recent bounds to retain in conductor history
|
2020-12-04 18:34:19 +00:00
|
|
|
records: 10
|
2020-06-30 19:10:35 +00:00
|
|
|
// maximum duration between start and end bounds
|
|
|
|
// for utc-based time systems this is in milliseconds
|
2020-12-04 18:34:19 +00:00
|
|
|
// limit: ONE_DAY
|
2023-05-18 21:54:46 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'Realtime',
|
2018-08-07 21:47:50 +00:00
|
|
|
timeSystem: 'utc',
|
|
|
|
clock: 'local',
|
|
|
|
clockOffsets: {
|
2019-02-07 19:36:37 +00:00
|
|
|
start: -THIRTY_MINUTES,
|
2020-10-29 00:46:28 +00:00
|
|
|
end: THIRTY_SECONDS
|
2023-05-18 21:54:46 +00:00
|
|
|
},
|
2020-10-29 00:46:28 +00:00
|
|
|
presets: [
|
2023-05-18 21:54:46 +00:00
|
|
|
{
|
2020-10-29 00:46:28 +00:00
|
|
|
label: '1 Hour',
|
|
|
|
bounds: {
|
|
|
|
start: -ONE_HOUR,
|
|
|
|
end: THIRTY_SECONDS
|
2023-05-18 21:54:46 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
2020-10-29 00:46:28 +00:00
|
|
|
label: '30 Minutes',
|
|
|
|
bounds: {
|
2019-02-07 19:36:37 +00:00
|
|
|
start: -THIRTY_MINUTES,
|
2020-10-29 00:46:28 +00:00
|
|
|
end: THIRTY_SECONDS
|
2023-05-18 21:54:46 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
2020-10-29 00:46:28 +00:00
|
|
|
label: '15 Minutes',
|
|
|
|
bounds: {
|
|
|
|
start: -FIFTEEN_MINUTES,
|
|
|
|
end: THIRTY_SECONDS
|
2023-05-18 21:54:46 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
2020-10-29 00:46:28 +00:00
|
|
|
label: '5 Minutes',
|
|
|
|
bounds: {
|
|
|
|
start: -FIVE_MINUTES,
|
|
|
|
end: THIRTY_SECONDS
|
2023-05-18 21:54:46 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
2020-10-29 00:46:28 +00:00
|
|
|
label: '1 Minute',
|
|
|
|
bounds: {
|
|
|
|
start: -ONE_MINUTE,
|
|
|
|
end: THIRTY_SECONDS
|
2023-05-18 21:54:46 +00:00
|
|
|
}
|
|
|
|
}
|
2018-08-07 21:47:50 +00:00
|
|
|
]
|
2023-05-18 21:54:46 +00:00
|
|
|
}
|
|
|
|
]
|
2018-08-07 21:47:50 +00:00
|
|
|
})
|
|
|
|
);
|
|
|
|
openmct.install(openmct.plugins.SummaryWidget());
|
|
|
|
openmct.install(openmct.plugins.Notebook());
|
2019-08-28 22:55:51 +00:00
|
|
|
openmct.install(openmct.plugins.LADTable());
|
2019-03-12 19:20:03 +00:00
|
|
|
openmct.install(openmct.plugins.Filters(['table', 'telemetry.plot.overlay']));
|
2019-03-11 15:56:56 +00:00
|
|
|
openmct.install(openmct.plugins.ObjectMigration());
|
2020-07-17 23:48:14 +00:00
|
|
|
openmct.install(
|
|
|
|
openmct.plugins.ClearData(
|
2022-02-18 14:48:48 +00:00
|
|
|
['table', 'telemetry.plot.overlay', 'telemetry.plot.stacked', 'example.imagery'],
|
2022-06-06 20:43:20 +00:00
|
|
|
{ indicator: true }
|
2023-05-18 21:54:46 +00:00
|
|
|
)
|
2020-07-17 23:48:14 +00:00
|
|
|
);
|
2021-09-15 18:01:40 +00:00
|
|
|
openmct.install(openmct.plugins.Clock({ enableClockIndicator: true }));
|
2021-11-09 22:41:42 +00:00
|
|
|
openmct.install(openmct.plugins.Timer());
|
2022-04-05 21:48:32 +00:00
|
|
|
openmct.install(openmct.plugins.Timelist());
|
2022-05-24 19:00:39 +00:00
|
|
|
openmct.install(openmct.plugins.BarChart());
|
|
|
|
openmct.install(openmct.plugins.ScatterPlot());
|
2023-04-18 22:32:29 +00:00
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
|
|
openmct.start();
|
|
|
|
});
|
2018-08-07 21:47:50 +00:00
|
|
|
</script>
|
2015-05-13 22:58:22 +00:00
|
|
|
</html>
|