/***************************************************************************** * 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*)*$", "cssclass": "l-input-lg" }, "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": "%" } ] } }); });