mirror of
https://github.com/nasa/openmct.git
synced 2024-12-24 23:36:41 +00:00
554 lines
21 KiB
JavaScript
554 lines
21 KiB
JavaScript
/*****************************************************************************
|
|
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
* as represented by the Administrator of the National Aeronautics and Space
|
|
* Administration. All rights reserved.
|
|
*
|
|
* Open MCT Web is licensed 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.
|
|
*
|
|
* Open MCT Web includes source code licensed under additional open source
|
|
* 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.
|
|
*****************************************************************************/
|
|
/*global define*/
|
|
|
|
define([
|
|
"./src/actions/ExportTimelineAsCSVAction",
|
|
"./src/controllers/TimelineController",
|
|
"./src/controllers/TimelineGraphController",
|
|
"./src/controllers/TimelineDateTimeController",
|
|
"./src/controllers/TimelineZoomController",
|
|
"./src/controllers/TimelineTickController",
|
|
"./src/controllers/TimelineTableController",
|
|
"./src/controllers/TimelineGanttController",
|
|
"./src/controllers/ActivityModeValuesController",
|
|
"./src/capabilities/ActivityTimespanCapability",
|
|
"./src/capabilities/TimelineTimespanCapability",
|
|
"./src/capabilities/UtilizationCapability",
|
|
"./src/capabilities/GraphCapability",
|
|
"./src/capabilities/CostCapability",
|
|
"./src/directives/MCTSwimlaneDrop",
|
|
"./src/directives/MCTSwimlaneDrag",
|
|
"./src/services/ObjectLoader",
|
|
"text!./res/templates/values.html",
|
|
"text!./res/templates/timeline.html",
|
|
"text!./res/templates/activity-gantt.html",
|
|
"text!./res/templates/tabular-swimlane-cols-tree.html",
|
|
"text!./res/templates/tabular-swimlane-cols-data.html",
|
|
"text!./res/templates/resource-graphs.html",
|
|
"text!./res/templates/resource-graph-labels.html",
|
|
"text!./res/templates/legend-item.html",
|
|
"text!./res/templates/ticks.html",
|
|
"text!./res/templates/controls/datetime.html",
|
|
'legacyRegistry'
|
|
], function (
|
|
ExportTimelineAsCSVAction,
|
|
TimelineController,
|
|
TimelineGraphController,
|
|
TimelineDateTimeController,
|
|
TimelineZoomController,
|
|
TimelineTickController,
|
|
TimelineTableController,
|
|
TimelineGanttController,
|
|
ActivityModeValuesController,
|
|
ActivityTimespanCapability,
|
|
TimelineTimespanCapability,
|
|
UtilizationCapability,
|
|
GraphCapability,
|
|
CostCapability,
|
|
MCTSwimlaneDrop,
|
|
MCTSwimlaneDrag,
|
|
ObjectLoader,
|
|
valuesTemplate,
|
|
timelineTemplate,
|
|
activityGanttTemplate,
|
|
tabularSwimlaneColsTreeTemplate,
|
|
tabularSwimlaneColsDataTemplate,
|
|
resourceGraphsTemplate,
|
|
resourceGraphLabelsTemplate,
|
|
legendItemTemplate,
|
|
ticksTemplate,
|
|
datetimeTemplate,
|
|
legacyRegistry
|
|
) {
|
|
"use strict";
|
|
|
|
legacyRegistry.register("platform/features/timeline", {
|
|
"name": "Timelines",
|
|
"description": "Resources, templates, CSS, and code for Timelines.",
|
|
"resources": "res",
|
|
"extensions": {
|
|
"actions": [
|
|
{
|
|
"key": "timeline.export",
|
|
"name": "Export Timeline as CSV",
|
|
"category": "contextual",
|
|
"implementation": ExportTimelineAsCSVAction,
|
|
"depends": [ "exportService", "notificationService" ]
|
|
}
|
|
],
|
|
"constants": [
|
|
{
|
|
"key": "TIMELINE_MINIMUM_DURATION",
|
|
"description": "The minimum duration to display in a timeline view (one hour.)",
|
|
"value": 3600000
|
|
},
|
|
{
|
|
"key": "TIMELINE_MAXIMUM_OFFSCREEN",
|
|
"description": "Maximum amount, in pixels, of a Gantt bar which may go off screen.",
|
|
"value": 1000
|
|
},
|
|
{
|
|
"key": "TIMELINE_ZOOM_CONFIGURATION",
|
|
"description": "Describes major tick sizes in milliseconds, and width in pixels.",
|
|
"value": {
|
|
"levels": [
|
|
1000,
|
|
2000,
|
|
5000,
|
|
10000,
|
|
20000,
|
|
30000,
|
|
60000,
|
|
120000,
|
|
300000,
|
|
600000,
|
|
1200000,
|
|
1800000,
|
|
3600000,
|
|
7200000,
|
|
14400000,
|
|
28800000,
|
|
43200000,
|
|
86400000
|
|
],
|
|
"width": 200
|
|
}
|
|
}
|
|
],
|
|
"types": [
|
|
{
|
|
"key": "timeline",
|
|
"name": "Timeline",
|
|
"glyph": "S",
|
|
"description": "A container for arranging Timelines and Activities in time.",
|
|
"features": [
|
|
"creation"
|
|
],
|
|
"contains": [
|
|
"timeline",
|
|
"activity"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "Start date/time",
|
|
"control": "timeline-datetime",
|
|
"required": true,
|
|
"property": [
|
|
"start"
|
|
],
|
|
"options": [
|
|
"SET"
|
|
]
|
|
},
|
|
{
|
|
"name": "Battery capacity (Watt-hours)",
|
|
"control": "textfield",
|
|
"required": false,
|
|
"conversion": "number",
|
|
"property": [
|
|
"capacity"
|
|
],
|
|
"pattern": "^-?\\d+(\\.\\d*)?$"
|
|
}
|
|
],
|
|
"model": {
|
|
"composition": []
|
|
}
|
|
},
|
|
{
|
|
"key": "activity",
|
|
"name": "Activity",
|
|
"glyph": "a",
|
|
"features": [
|
|
"creation"
|
|
],
|
|
"contains": [
|
|
"activity"
|
|
],
|
|
"description": "An action that takes place in time. You can define a start time and duration. Activities can be nested within other Activities, or within Timelines.",
|
|
"properties": [
|
|
{
|
|
"name": "Start date/time",
|
|
"control": "timeline-datetime",
|
|
"required": true,
|
|
"property": [
|
|
"start"
|
|
],
|
|
"options": [
|
|
"SET"
|
|
]
|
|
},
|
|
{
|
|
"name": "Duration",
|
|
"control": "duration",
|
|
"required": true,
|
|
"property": [
|
|
"duration"
|
|
]
|
|
}
|
|
],
|
|
"model": {
|
|
"composition": [],
|
|
"relationships": {
|
|
"modes": []
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"key": "mode",
|
|
"name": "Activity Mode",
|
|
"glyph": "A",
|
|
"features": [
|
|
"creation"
|
|
],
|
|
"description": "Define resource utilizations over time, then apply to an Activity.",
|
|
"model": {
|
|
"resources": {
|
|
"comms": 0,
|
|
"power": 0
|
|
}
|
|
},
|
|
"properties": [
|
|
{
|
|
"name": "Comms (Kbps)",
|
|
"control": "textfield",
|
|
"conversion": "number",
|
|
"pattern": "^-?\\d+(\\.\\d*)?$",
|
|
"property": [
|
|
"resources",
|
|
"comms"
|
|
]
|
|
},
|
|
{
|
|
"name": "Power (watts)",
|
|
"control": "textfield",
|
|
"conversion": "number",
|
|
"pattern": "^-?\\d+(\\.\\d*)?$",
|
|
"property": [
|
|
"resources",
|
|
"power"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"views": [
|
|
{
|
|
"key": "values",
|
|
"name": "Values",
|
|
"glyph": "A",
|
|
"template": valuesTemplate,
|
|
"type": "mode",
|
|
"uses": [
|
|
"cost"
|
|
],
|
|
"editable": false
|
|
},
|
|
{
|
|
"key": "timeline",
|
|
"name": "Timeline",
|
|
"glyph": "S",
|
|
"type": "timeline",
|
|
"description": "A timeline view of Timelines and Activities.",
|
|
"template": timelineTemplate,
|
|
"editable": true,
|
|
"toolbar": {
|
|
"sections": [
|
|
{
|
|
"items": [
|
|
{
|
|
"method": "add",
|
|
"glyph": "+",
|
|
"control": "menu-button",
|
|
"text": "Add",
|
|
"options": [
|
|
{
|
|
"name": "Timeline",
|
|
"glyph": "S",
|
|
"key": "timeline"
|
|
},
|
|
{
|
|
"name": "Activity",
|
|
"glyph": "a",
|
|
"key": "activity"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"items": [
|
|
{
|
|
"glyph": "é",
|
|
"description": "Graph resource utilization",
|
|
"control": "button",
|
|
"method": "toggleGraph"
|
|
},
|
|
{
|
|
"glyph": "A",
|
|
"control": "dialog-button",
|
|
"description": "Apply Activity Modes...",
|
|
"title": "Apply Activity Modes",
|
|
"dialog": {
|
|
"control": "selector",
|
|
"name": "Modes",
|
|
"type": "mode"
|
|
},
|
|
"property": "modes"
|
|
},
|
|
{
|
|
"glyph": "è",
|
|
"description": "Edit Activity Link",
|
|
"title": "Activity Link",
|
|
"control": "dialog-button",
|
|
"dialog": {
|
|
"control": "textfield",
|
|
"name": "Link",
|
|
"pattern": "^(ftp|https?)\\:\\/\\/\\w+(\\.\\w+)*(\\:\\d+)?(\\/\\S*)*$"
|
|
},
|
|
"property": "link"
|
|
},
|
|
{
|
|
"glyph": "G",
|
|
"description": "Edit Properties...",
|
|
"control": "button",
|
|
"method": "properties"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"items": [
|
|
{
|
|
"method": "remove",
|
|
"description": "Remove item",
|
|
"control": "button",
|
|
"glyph": "Z"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"stylesheets": [
|
|
{
|
|
"stylesheetUrl": "css/timeline.css"
|
|
},
|
|
{
|
|
"stylesheetUrl": "css/timeline-espresso.css",
|
|
"theme": "espresso"
|
|
},
|
|
{
|
|
"stylesheetUrl": "css/timeline-snow.css",
|
|
"theme": "snow"
|
|
}
|
|
],
|
|
"representations": [
|
|
{
|
|
"key": "gantt",
|
|
"template": activityGanttTemplate,
|
|
"uses": [
|
|
"timespan",
|
|
"type"
|
|
]
|
|
}
|
|
],
|
|
"templates": [
|
|
{
|
|
"key": "timeline-tabular-swimlane-cols-tree",
|
|
"priority": "mandatory",
|
|
"template": tabularSwimlaneColsTreeTemplate
|
|
},
|
|
{
|
|
"key": "timeline-tabular-swimlane-cols-data",
|
|
"priority": "mandatory",
|
|
"template": tabularSwimlaneColsDataTemplate
|
|
},
|
|
{
|
|
"key": "timeline-resource-graphs",
|
|
"priority": "mandatory",
|
|
"template": resourceGraphsTemplate
|
|
},
|
|
{
|
|
"key": "timeline-resource-graph-labels",
|
|
"priority": "mandatory",
|
|
"template": resourceGraphLabelsTemplate
|
|
},
|
|
{
|
|
"key": "timeline-legend-item",
|
|
"priority": "mandatory",
|
|
"template": legendItemTemplate
|
|
},
|
|
{
|
|
"key": "timeline-ticks",
|
|
"priority": "mandatory",
|
|
"template": ticksTemplate
|
|
}
|
|
],
|
|
"controls": [
|
|
{
|
|
"key": "timeline-datetime",
|
|
"template": datetimeTemplate
|
|
},
|
|
{
|
|
"key": "duration",
|
|
"template": datetimeTemplate
|
|
}
|
|
],
|
|
"controllers": [
|
|
{
|
|
"key": "TimelineController",
|
|
"implementation": TimelineController,
|
|
"depends": [
|
|
"$scope",
|
|
"$q",
|
|
"objectLoader",
|
|
"TIMELINE_MINIMUM_DURATION"
|
|
]
|
|
},
|
|
{
|
|
"key": "TimelineGraphController",
|
|
"implementation": TimelineGraphController,
|
|
"depends": [
|
|
"$scope",
|
|
"resources[]"
|
|
]
|
|
},
|
|
{
|
|
"key": "TimelineDateTimeController",
|
|
"implementation": TimelineDateTimeController,
|
|
"depends": [
|
|
"$scope"
|
|
]
|
|
},
|
|
{
|
|
"key": "TimelineZoomController",
|
|
"implementation": TimelineZoomController,
|
|
"depends": [
|
|
"$scope",
|
|
"TIMELINE_ZOOM_CONFIGURATION"
|
|
]
|
|
},
|
|
{
|
|
"key": "TimelineTickController",
|
|
"implementation": TimelineTickController
|
|
},
|
|
{
|
|
"key": "TimelineTableController",
|
|
"implementation": TimelineTableController
|
|
},
|
|
{
|
|
"key": "TimelineGanttController",
|
|
"implementation": TimelineGanttController,
|
|
"depends": [
|
|
"TIMELINE_MAXIMUM_OFFSCREEN"
|
|
]
|
|
},
|
|
{
|
|
"key": "ActivityModeValuesController",
|
|
"implementation": ActivityModeValuesController,
|
|
"depends": [
|
|
"resources[]"
|
|
]
|
|
}
|
|
],
|
|
"capabilities": [
|
|
{
|
|
"key": "timespan",
|
|
"implementation": ActivityTimespanCapability,
|
|
"depends": [
|
|
"$q"
|
|
]
|
|
},
|
|
{
|
|
"key": "timespan",
|
|
"implementation": TimelineTimespanCapability,
|
|
"depends": [
|
|
"$q"
|
|
]
|
|
},
|
|
{
|
|
"key": "utilization",
|
|
"implementation": UtilizationCapability,
|
|
"depends": [
|
|
"$q"
|
|
]
|
|
},
|
|
{
|
|
"key": "graph",
|
|
"implementation": GraphCapability,
|
|
"depends": [
|
|
"$q"
|
|
]
|
|
},
|
|
{
|
|
"key": "cost",
|
|
"implementation": CostCapability
|
|
}
|
|
],
|
|
"directives": [
|
|
{
|
|
"key": "mctSwimlaneDrop",
|
|
"implementation": MCTSwimlaneDrop,
|
|
"depends": [
|
|
"dndService"
|
|
]
|
|
},
|
|
{
|
|
"key": "mctSwimlaneDrag",
|
|
"implementation": MCTSwimlaneDrag,
|
|
"depends": [
|
|
"dndService"
|
|
]
|
|
}
|
|
],
|
|
"services": [
|
|
{
|
|
"key": "objectLoader",
|
|
"implementation": ObjectLoader,
|
|
"depends": [
|
|
"$q"
|
|
]
|
|
}
|
|
],
|
|
"resources": [
|
|
{
|
|
"key": "power",
|
|
"name": "Power",
|
|
"units": "watts"
|
|
},
|
|
{
|
|
"key": "comms",
|
|
"name": "Comms",
|
|
"units": "Kbps"
|
|
},
|
|
{
|
|
"key": "battery",
|
|
"name": "Battery State-of-Charge",
|
|
"units": "%"
|
|
}
|
|
]
|
|
}
|
|
});
|
|
});
|