mirror of
https://github.com/nasa/openmct.git
synced 2024-12-20 05:37:53 +00:00
Re-implement the event generator as a new-style plugin - Mct4552 (#4620)
Updates Event Generator to ES6 classes and current API. Co-authored-by: Andrew Henry <akhenry@gmail.com> Co-authored-by: John Hill <john.c.hill@nasa.gov>
This commit is contained in:
parent
384af89d4c
commit
ba2a6030c2
@ -20,43 +20,45 @@
|
|||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
/**
|
class EventMetadataProvider {
|
||||||
* Module defining EventTelemetry.
|
constructor() {
|
||||||
* Created by chacskaylo on 06/18/2015.
|
this.METADATA_BY_TYPE = {
|
||||||
* Modified by shale on 06/23/2015.
|
'eventGenerator': {
|
||||||
*/
|
values: [
|
||||||
define(
|
{
|
||||||
['../data/transcript.json'],
|
key: "name",
|
||||||
function (messages) {
|
name: "Name",
|
||||||
"use strict";
|
format: "string"
|
||||||
|
},
|
||||||
var firstObservedTime = Date.now();
|
{
|
||||||
|
key: "utc",
|
||||||
function EventTelemetry(request, interval) {
|
name: "Time",
|
||||||
|
format: "utc",
|
||||||
var latestObservedTime = Date.now(),
|
hints: {
|
||||||
count = Math.floor((latestObservedTime - firstObservedTime) / interval),
|
domain: 1
|
||||||
generatorData = {};
|
}
|
||||||
|
},
|
||||||
generatorData.getPointCount = function () {
|
{
|
||||||
return count;
|
key: "message",
|
||||||
};
|
name: "Message",
|
||||||
|
format: "string"
|
||||||
generatorData.getDomainValue = function (i, domain) {
|
}
|
||||||
return i * interval
|
]
|
||||||
+ (domain !== 'delta' ? firstObservedTime : 0);
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
generatorData.getRangeValue = function (i, range) {
|
|
||||||
var domainDelta = this.getDomainValue(i) - firstObservedTime,
|
|
||||||
ind = i % messages.length;
|
|
||||||
|
|
||||||
return messages[ind] + " - [" + domainDelta.toString() + "]";
|
|
||||||
};
|
|
||||||
|
|
||||||
return generatorData;
|
|
||||||
}
|
|
||||||
|
|
||||||
return EventTelemetry;
|
|
||||||
}
|
}
|
||||||
);
|
|
||||||
|
supportsMetadata(domainObject) {
|
||||||
|
return Object.prototype.hasOwnProperty.call(this.METADATA_BY_TYPE, domainObject.type);
|
||||||
|
}
|
||||||
|
|
||||||
|
getMetadata(domainObject) {
|
||||||
|
return Object.assign(
|
||||||
|
{},
|
||||||
|
domainObject.telemetry,
|
||||||
|
this.METADATA_BY_TYPE[domainObject.type]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default EventMetadataProvider;
|
96
example/eventGenerator/EventTelemetryProvider.js
Normal file
96
example/eventGenerator/EventTelemetryProvider.js
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2022, United States Government
|
||||||
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
|
* Administration. All rights reserved.
|
||||||
|
*
|
||||||
|
* Open MCT 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 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module defining EventTelemetryProvider. Created by chacskaylo on 06/18/2015.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import messages from './transcript.json';
|
||||||
|
|
||||||
|
class EventTelemetryProvider {
|
||||||
|
constructor() {
|
||||||
|
this.defaultSize = 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
generateData(firstObservedTime, count, startTime, duration, name) {
|
||||||
|
const millisecondsSinceStart = startTime - firstObservedTime;
|
||||||
|
const utc = Math.floor(startTime / duration) * duration;
|
||||||
|
const ind = count % messages.length;
|
||||||
|
const message = messages[ind] + " - [" + millisecondsSinceStart + "]";
|
||||||
|
|
||||||
|
return {
|
||||||
|
name,
|
||||||
|
utc,
|
||||||
|
message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
supportsRequest(domainObject) {
|
||||||
|
return domainObject.type === 'eventGenerator';
|
||||||
|
}
|
||||||
|
|
||||||
|
supportsSubscribe(domainObject) {
|
||||||
|
return domainObject.type === 'eventGenerator';
|
||||||
|
}
|
||||||
|
|
||||||
|
subscribe(domainObject, callback) {
|
||||||
|
const duration = domainObject.telemetry.duration * 1000;
|
||||||
|
const firstObservedTime = Date.now();
|
||||||
|
let count = 0;
|
||||||
|
|
||||||
|
const interval = setInterval(() => {
|
||||||
|
const startTime = Date.now();
|
||||||
|
const datum = this.generateData(firstObservedTime, count, startTime, duration, domainObject.name);
|
||||||
|
count += 1;
|
||||||
|
callback(datum);
|
||||||
|
}, duration);
|
||||||
|
|
||||||
|
return function () {
|
||||||
|
clearInterval(interval);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
request(domainObject, options) {
|
||||||
|
let start = options.start;
|
||||||
|
const end = Math.min(Date.now(), options.end); // no future values
|
||||||
|
const duration = domainObject.telemetry.duration * 1000;
|
||||||
|
const size = options.size ? options.size : this.defaultSize;
|
||||||
|
const data = [];
|
||||||
|
const firstObservedTime = Date.now();
|
||||||
|
let count = 0;
|
||||||
|
|
||||||
|
if (options.strategy === 'latest' || options.size === 1) {
|
||||||
|
start = end;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (start <= end && data.length < size) {
|
||||||
|
const startTime = Date.now() + count;
|
||||||
|
data.push(this.generateData(firstObservedTime, count, startTime, duration, domainObject.name));
|
||||||
|
start += duration;
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Promise.resolve(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default EventTelemetryProvider;
|
@ -1,80 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2022, United States Government
|
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
* Administration. All rights reserved.
|
|
||||||
*
|
|
||||||
* Open MCT 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 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
define([
|
|
||||||
"./src/EventTelemetryProvider"
|
|
||||||
], function (
|
|
||||||
EventTelemetryProvider
|
|
||||||
) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
return {
|
|
||||||
name: "example/eventGenerator",
|
|
||||||
definition: {
|
|
||||||
"name": "Event Message Generator",
|
|
||||||
"description": "For development use. Creates sample event message data that mimics a live data stream.",
|
|
||||||
"extensions": {
|
|
||||||
"components": [
|
|
||||||
{
|
|
||||||
"implementation": EventTelemetryProvider,
|
|
||||||
"type": "provider",
|
|
||||||
"provides": "telemetryService",
|
|
||||||
"depends": [
|
|
||||||
"$q",
|
|
||||||
"$timeout"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"types": [
|
|
||||||
{
|
|
||||||
"key": "eventGenerator",
|
|
||||||
"name": "Event Message Generator",
|
|
||||||
"cssClass": "icon-generator-events",
|
|
||||||
"description": "For development use. Creates sample event message data that mimics a live data stream.",
|
|
||||||
"priority": 10,
|
|
||||||
"features": "creation",
|
|
||||||
"model": {
|
|
||||||
"telemetry": {}
|
|
||||||
},
|
|
||||||
"telemetry": {
|
|
||||||
"source": "eventGenerator",
|
|
||||||
"domains": [
|
|
||||||
{
|
|
||||||
"key": "utc",
|
|
||||||
"name": "Timestamp",
|
|
||||||
"format": "utc"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"ranges": [
|
|
||||||
{
|
|
||||||
"key": "message",
|
|
||||||
"name": "Message",
|
|
||||||
"format": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
|
42
example/eventGenerator/plugin.js
Normal file
42
example/eventGenerator/plugin.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2022, United States Government
|
||||||
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
|
* Administration. All rights reserved.
|
||||||
|
*
|
||||||
|
* Open MCT 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 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
import EventTelmetryProvider from './EventTelemetryProvider';
|
||||||
|
import EventMetadataProvider from './EventMetadataProvider';
|
||||||
|
|
||||||
|
export default function EventGeneratorPlugin(options) {
|
||||||
|
return function install(openmct) {
|
||||||
|
openmct.types.addType("eventGenerator", {
|
||||||
|
name: "Event Message Generator",
|
||||||
|
description: "For development use. Creates sample event message data that mimics a live data stream.",
|
||||||
|
cssClass: "icon-generator-events",
|
||||||
|
creatable: true,
|
||||||
|
initialize: function (object) {
|
||||||
|
object.telemetry = {
|
||||||
|
duration: 5
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
openmct.telemetry.addProvider(new EventTelmetryProvider());
|
||||||
|
openmct.telemetry.addProvider(new EventMetadataProvider());
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
69
example/eventGenerator/pluginSpec.js
Normal file
69
example/eventGenerator/pluginSpec.js
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2022, United States Government
|
||||||
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
|
* Administration. All rights reserved.
|
||||||
|
*
|
||||||
|
* Open MCT 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 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
import EventMessageGeneratorPlugin from './plugin.js';
|
||||||
|
import {
|
||||||
|
createOpenMct,
|
||||||
|
resetApplicationState
|
||||||
|
} from '../../src/utils/testing';
|
||||||
|
|
||||||
|
describe('the plugin', () => {
|
||||||
|
let openmct;
|
||||||
|
const mockDomainObject = {
|
||||||
|
identifier: {
|
||||||
|
namespace: '',
|
||||||
|
key: 'some-value'
|
||||||
|
},
|
||||||
|
telemetry: {
|
||||||
|
duration: 0
|
||||||
|
},
|
||||||
|
type: 'eventGenerator'
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach((done) => {
|
||||||
|
const options = {};
|
||||||
|
openmct = createOpenMct();
|
||||||
|
openmct.install(new EventMessageGeneratorPlugin(options));
|
||||||
|
openmct.on('start', done);
|
||||||
|
openmct.startHeadless();
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await resetApplicationState(openmct);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('the plugin', () => {
|
||||||
|
it("supports subscription", (done) => {
|
||||||
|
const unsubscribe = openmct.telemetry.subscribe(mockDomainObject, (telemetry) => {
|
||||||
|
expect(telemetry).not.toEqual(null);
|
||||||
|
expect(telemetry.message).toContain('CC: Eagle, Houston');
|
||||||
|
expect(unsubscribe).not.toEqual(null);
|
||||||
|
unsubscribe();
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("supports requests", async () => {
|
||||||
|
const telemetry = await openmct.telemetry.request(mockDomainObject);
|
||||||
|
expect(telemetry[0].message).toContain('CC: Eagle, Houston');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -1,118 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2022, United States Government
|
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
* Administration. All rights reserved.
|
|
||||||
*
|
|
||||||
* Open MCT 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 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Module defining EventTelemetryProvider. Created by chacskaylo on 06/18/2015.
|
|
||||||
*/
|
|
||||||
define(
|
|
||||||
["./EventTelemetry"],
|
|
||||||
function (EventTelemetry) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @constructor
|
|
||||||
*/
|
|
||||||
function EventTelemetryProvider($q, $timeout) {
|
|
||||||
var subscriptions = [],
|
|
||||||
genInterval = 1000,
|
|
||||||
generating = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
function matchesSource(request) {
|
|
||||||
return request.source === "eventGenerator";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Used internally; this will be repacked by doPackage
|
|
||||||
function generateData(request) {
|
|
||||||
return {
|
|
||||||
key: request.key,
|
|
||||||
telemetry: new EventTelemetry(request, genInterval)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
function doPackage(results) {
|
|
||||||
var packaged = {};
|
|
||||||
results.forEach(function (result) {
|
|
||||||
packaged[result.key] = result.telemetry;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Format as expected (sources -> keys -> telemetry)
|
|
||||||
return { eventGenerator: packaged };
|
|
||||||
}
|
|
||||||
|
|
||||||
function requestTelemetry(requests) {
|
|
||||||
return $timeout(function () {
|
|
||||||
return doPackage(requests.filter(matchesSource).map(generateData));
|
|
||||||
}, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleSubscriptions(timeout) {
|
|
||||||
subscriptions.forEach(function (subscription) {
|
|
||||||
var requests = subscription.requests;
|
|
||||||
subscription.callback(doPackage(
|
|
||||||
requests.filter(matchesSource).map(generateData)
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function startGenerating() {
|
|
||||||
generating = true;
|
|
||||||
$timeout(function () {
|
|
||||||
handleSubscriptions();
|
|
||||||
if (generating && subscriptions.length > 0) {
|
|
||||||
startGenerating();
|
|
||||||
} else {
|
|
||||||
generating = false;
|
|
||||||
}
|
|
||||||
}, genInterval);
|
|
||||||
}
|
|
||||||
|
|
||||||
function subscribe(callback, requests) {
|
|
||||||
var subscription = {
|
|
||||||
callback: callback,
|
|
||||||
requests: requests
|
|
||||||
};
|
|
||||||
function unsubscribe() {
|
|
||||||
subscriptions = subscriptions.filter(function (s) {
|
|
||||||
return s !== subscription;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
subscriptions.push(subscription);
|
|
||||||
if (!generating) {
|
|
||||||
startGenerating();
|
|
||||||
}
|
|
||||||
|
|
||||||
return unsubscribe;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
requestTelemetry: requestTelemetry,
|
|
||||||
subscribe: subscribe
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return EventTelemetryProvider;
|
|
||||||
}
|
|
||||||
);
|
|
@ -81,6 +81,7 @@
|
|||||||
openmct.install(openmct.plugins.Espresso());
|
openmct.install(openmct.plugins.Espresso());
|
||||||
openmct.install(openmct.plugins.MyItems());
|
openmct.install(openmct.plugins.MyItems());
|
||||||
openmct.install(openmct.plugins.Generator());
|
openmct.install(openmct.plugins.Generator());
|
||||||
|
openmct.install(openmct.plugins.EventGeneratorPlugin());
|
||||||
openmct.install(openmct.plugins.ExampleImagery());
|
openmct.install(openmct.plugins.ExampleImagery());
|
||||||
openmct.install(openmct.plugins.PlanLayout());
|
openmct.install(openmct.plugins.PlanLayout());
|
||||||
openmct.install(openmct.plugins.Timeline());
|
openmct.install(openmct.plugins.Timeline());
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
const testsContext = require.context('.', true, /\/(src|platform)\/.*Spec.js$/);
|
const testsContext = require.context('.', true, /\/(src|platform|\.\/example)\/.*Spec.js$/);
|
||||||
|
|
||||||
testsContext.keys().forEach(testsContext);
|
testsContext.keys().forEach(testsContext);
|
||||||
|
@ -44,7 +44,6 @@ const DEFAULTS = [
|
|||||||
|
|
||||||
define([
|
define([
|
||||||
'../../adapter/bundle',
|
'../../adapter/bundle',
|
||||||
'../../../example/eventGenerator/bundle',
|
|
||||||
'../../../example/export/bundle',
|
'../../../example/export/bundle',
|
||||||
'../../../example/forms/bundle',
|
'../../../example/forms/bundle',
|
||||||
'../../../example/identity/bundle',
|
'../../../example/identity/bundle',
|
||||||
|
@ -28,6 +28,7 @@ define([
|
|||||||
'./ISOTimeFormat/plugin',
|
'./ISOTimeFormat/plugin',
|
||||||
'./myItems/plugin',
|
'./myItems/plugin',
|
||||||
'../../example/generator/plugin',
|
'../../example/generator/plugin',
|
||||||
|
'../../example/eventGenerator/plugin',
|
||||||
'./autoflow/AutoflowTabularPlugin',
|
'./autoflow/AutoflowTabularPlugin',
|
||||||
'./timeConductor/plugin',
|
'./timeConductor/plugin',
|
||||||
'../../example/imagery/plugin',
|
'../../example/imagery/plugin',
|
||||||
@ -85,6 +86,7 @@ define([
|
|||||||
ISOTimeFormat,
|
ISOTimeFormat,
|
||||||
MyItems,
|
MyItems,
|
||||||
GeneratorPlugin,
|
GeneratorPlugin,
|
||||||
|
EventGeneratorPlugin,
|
||||||
AutoflowPlugin,
|
AutoflowPlugin,
|
||||||
TimeConductorPlugin,
|
TimeConductorPlugin,
|
||||||
ExampleImagery,
|
ExampleImagery,
|
||||||
@ -196,6 +198,7 @@ define([
|
|||||||
return GeneratorPlugin;
|
return GeneratorPlugin;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
plugins.EventGeneratorPlugin = EventGeneratorPlugin.default;
|
||||||
plugins.ExampleImagery = ExampleImagery.default;
|
plugins.ExampleImagery = ExampleImagery.default;
|
||||||
plugins.ImageryPlugin = ImageryPlugin;
|
plugins.ImageryPlugin = ImageryPlugin;
|
||||||
plugins.Plot = PlotPlugin.default;
|
plugins.Plot = PlotPlugin.default;
|
||||||
|
Loading…
Reference in New Issue
Block a user