mirror of
https://github.com/nasa/openmct.git
synced 2025-06-27 11:32:13 +00:00
Compare commits
141 Commits
api-gestur
...
plot-impor
Author | SHA1 | Date | |
---|---|---|---|
3ead4375c8 | |||
386cb1c3af | |||
553989638d | |||
088bd565d9 | |||
c0df73265c | |||
de971772e3 | |||
d4785446f1 | |||
54ac81b98e | |||
08d31cc493 | |||
d749a6693b | |||
e6f4098ed0 | |||
fb1b765002 | |||
bfec434369 | |||
14df350994 | |||
7442768ced | |||
77c7bdfdec | |||
07d9769966 | |||
385b6177b2 | |||
7f68d26433 | |||
d7b44f8d09 | |||
c4cd36e15b | |||
618a6e7e8d | |||
63a8c91f71 | |||
e59020fec7 | |||
a2e424203a | |||
16853644cb | |||
2272766c57 | |||
1d9cdea2d4 | |||
715219c44d | |||
00dc2875bf | |||
8703f363b8 | |||
26210eaa50 | |||
a4a1cb5e05 | |||
9570f2f7a1 | |||
eb4ded39b3 | |||
7deb3cd025 | |||
06779e6cd9 | |||
7f43c0bf1a | |||
bfa3bbcdc7 | |||
2baf3f8bb0 | |||
10ac13ac5c | |||
138cb199bb | |||
374c363a78 | |||
e9cb5cd639 | |||
bc7d92ee0d | |||
78f49784a0 | |||
8754c438cc | |||
1419c75503 | |||
ca8cad0a74 | |||
a3a55d3b48 | |||
e66f818996 | |||
ae5ef33487 | |||
59c5430579 | |||
6d52f094d9 | |||
740db8da75 | |||
68abc15ed5 | |||
bb47feb517 | |||
469820fb0f | |||
92dd99b26c | |||
9fe1923189 | |||
42ddb38629 | |||
fe60d7abbc | |||
54b975f242 | |||
7f75e089e8 | |||
8e8c66280f | |||
d3d874e209 | |||
ce561e1598 | |||
7290601a37 | |||
ea5a85ffd1 | |||
eb196ea521 | |||
b6a8078634 | |||
e53b34ed60 | |||
13ffa3e3c4 | |||
0e3b629d90 | |||
23216e5aee | |||
5b366e91c1 | |||
aa336dfd57 | |||
556296096d | |||
e4aaa860a3 | |||
2079a74ab2 | |||
4b86439b8a | |||
a4d8e8ff90 | |||
3674808a13 | |||
10c0c29f64 | |||
fa1a942184 | |||
e205bf1fa4 | |||
cecd708dd1 | |||
aa36417590 | |||
e6c78f6d8b | |||
747afa6200 | |||
019cdde1c6 | |||
c7e26a231a | |||
f3b519d47b | |||
c472ab044b | |||
008f1387ed | |||
6ed76708ec | |||
c2ff81bad1 | |||
a6c3d98ddd | |||
603e990755 | |||
586901aee7 | |||
449923feae | |||
ae461f71b4 | |||
5243b3748d | |||
82a661b884 | |||
f5a92f66db | |||
0417b7e32d | |||
7c9a6bd817 | |||
a58c484d71 | |||
43b92647fb | |||
e8eb34f5c3 | |||
fa57688709 | |||
5ac377ec6a | |||
c523480b48 | |||
4dc09975d0 | |||
29a472ae5d | |||
3e2fd8967a | |||
9e429802c2 | |||
6cfee100d7 | |||
eeb214204d | |||
b41ceab51e | |||
10b0f43fc1 | |||
593c1adf56 | |||
2d1ee80322 | |||
7555eab1e3 | |||
4923bcbd85 | |||
5a7fdf82ac | |||
a5f6940d67 | |||
4571205871 | |||
34c3763421 | |||
e45a686c5a | |||
1c33157fb8 | |||
ed6ae23dc0 | |||
23839b05b0 | |||
6aed3bb0b5 | |||
1ae62cde05 | |||
4e7e5bb783 | |||
efc46613bb | |||
218ef16160 | |||
fb0a577d16 | |||
19b5e7c781 | |||
cb242d8efb |
2
.gitignore
vendored
2
.gitignore
vendored
@ -36,3 +36,5 @@ protractor/logs
|
|||||||
|
|
||||||
# npm-debug log
|
# npm-debug log
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
|
|
||||||
|
package-lock.json
|
||||||
|
2
API.md
2
API.md
@ -505,7 +505,7 @@ MCT, it will be pre-configured to use the UTC time system, which is installed an
|
|||||||
|
|
||||||
The time bounds of an Open MCT application are defined as numbers, and a Time
|
The time bounds of an Open MCT application are defined as numbers, and a Time
|
||||||
System gives meaning and context to these numbers so that they can be correctly
|
System gives meaning and context to these numbers so that they can be correctly
|
||||||
interpreted. Time Systems are javscript objects that provide some information
|
interpreted. Time Systems are JavaScript objects that provide some information
|
||||||
about the current time reference frame. An example of defining and registering
|
about the current time reference frame. An example of defining and registering
|
||||||
a new time system is given below:
|
a new time system is given below:
|
||||||
|
|
||||||
|
@ -4,12 +4,6 @@ deployment:
|
|||||||
commands:
|
commands:
|
||||||
- npm install canvas nomnoml
|
- npm install canvas nomnoml
|
||||||
- ./build-docs.sh
|
- ./build-docs.sh
|
||||||
- git fetch --unshallow
|
|
||||||
- git push git@heroku.com:openmctweb-demo.git $CIRCLE_SHA1:refs/heads/master
|
|
||||||
openmct-demo:
|
|
||||||
branch: live_demo
|
|
||||||
heroku:
|
|
||||||
appname: openmct-demo
|
|
||||||
openmctweb-staging-deux:
|
openmctweb-staging-deux:
|
||||||
branch: mobile
|
branch: mobile
|
||||||
heroku:
|
heroku:
|
||||||
|
@ -30,7 +30,8 @@ define([
|
|||||||
amplitude: 1,
|
amplitude: 1,
|
||||||
period: 10,
|
period: 10,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
dataRateInHz: 1
|
dataRateInHz: 1,
|
||||||
|
phase: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
function GeneratorProvider() {
|
function GeneratorProvider() {
|
||||||
@ -50,9 +51,12 @@ define([
|
|||||||
'amplitude',
|
'amplitude',
|
||||||
'period',
|
'period',
|
||||||
'offset',
|
'offset',
|
||||||
'dataRateInHz'
|
'dataRateInHz',
|
||||||
|
'phase',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
request = request || {};
|
||||||
|
|
||||||
var workerRequest = {};
|
var workerRequest = {};
|
||||||
|
|
||||||
props.forEach(function (prop) {
|
props.forEach(function (prop) {
|
||||||
@ -67,7 +71,7 @@ define([
|
|||||||
}
|
}
|
||||||
workerRequest[prop] = Number(workerRequest[prop]);
|
workerRequest[prop] = Number(workerRequest[prop]);
|
||||||
});
|
});
|
||||||
|
workerRequest.name = domainObject.name;
|
||||||
return workerRequest;
|
return workerRequest;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -78,8 +82,8 @@ define([
|
|||||||
return this.workerInterface.request(workerRequest);
|
return this.workerInterface.request(workerRequest);
|
||||||
};
|
};
|
||||||
|
|
||||||
GeneratorProvider.prototype.subscribe = function (domainObject, callback, request) {
|
GeneratorProvider.prototype.subscribe = function (domainObject, callback) {
|
||||||
var workerRequest = this.makeWorkerRequest(domainObject, request);
|
var workerRequest = this.makeWorkerRequest(domainObject, {});
|
||||||
return this.workerInterface.subscribe(workerRequest, callback);
|
return this.workerInterface.subscribe(workerRequest, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
80
example/generator/StateGeneratorProvider.js
Normal file
80
example/generator/StateGeneratorProvider.js
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2017, 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([
|
||||||
|
|
||||||
|
], function (
|
||||||
|
|
||||||
|
) {
|
||||||
|
|
||||||
|
function StateGeneratorProvider() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function pointForTimestamp(timestamp, duration, name) {
|
||||||
|
return {
|
||||||
|
name: name,
|
||||||
|
utc: Math.floor(timestamp / duration) * duration,
|
||||||
|
value: Math.floor(timestamp / duration) % 2
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
StateGeneratorProvider.prototype.supportsSubscribe = function (domainObject) {
|
||||||
|
return domainObject.type === 'example.state-generator';
|
||||||
|
};
|
||||||
|
|
||||||
|
StateGeneratorProvider.prototype.subscribe = function (domainObject, callback) {
|
||||||
|
var duration = domainObject.telemetry.duration * 1000;
|
||||||
|
|
||||||
|
var interval = setInterval(function () {
|
||||||
|
var now = Date.now();
|
||||||
|
callback(pointForTimestamp(now, duration, domainObject.name));
|
||||||
|
}, duration);
|
||||||
|
|
||||||
|
return function () {
|
||||||
|
clearInterval(interval);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
StateGeneratorProvider.prototype.supportsRequest = function (domainObject, options) {
|
||||||
|
return domainObject.type === 'example.state-generator';
|
||||||
|
};
|
||||||
|
|
||||||
|
StateGeneratorProvider.prototype.request = function (domainObject, options) {
|
||||||
|
var start = options.start;
|
||||||
|
var end = options.end;
|
||||||
|
var duration = domainObject.telemetry.duration * 1000;
|
||||||
|
if (options.strategy === 'latest' || options.size === 1) {
|
||||||
|
start = end;
|
||||||
|
}
|
||||||
|
var data = [];
|
||||||
|
while (start <= end && data.length < 5000) {
|
||||||
|
data.push(pointForTimestamp(start, duration, domainObject.name));
|
||||||
|
start += 5000;
|
||||||
|
}
|
||||||
|
return Promise.resolve(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
return StateGeneratorProvider;
|
||||||
|
|
||||||
|
});
|
@ -62,10 +62,11 @@
|
|||||||
self.postMessage({
|
self.postMessage({
|
||||||
id: message.id,
|
id: message.id,
|
||||||
data: {
|
data: {
|
||||||
|
name: data.name,
|
||||||
utc: nextStep,
|
utc: nextStep,
|
||||||
yesterday: nextStep - 60*60*24*1000,
|
yesterday: nextStep - 60*60*24*1000,
|
||||||
sin: sin(nextStep, data.period, data.amplitude, data.offset),
|
sin: sin(nextStep, data.period, data.amplitude, data.offset, data.phase),
|
||||||
cos: cos(nextStep, data.period, data.amplitude, data.offset)
|
cos: cos(nextStep, data.period, data.amplitude, data.offset, data.phase)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
nextStep += step;
|
nextStep += step;
|
||||||
@ -82,33 +83,35 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onRequest(message) {
|
function onRequest(message) {
|
||||||
var data = message.data;
|
var request = message.data;
|
||||||
if (data.end == undefined) {
|
if (request.end == undefined) {
|
||||||
data.end = Date.now();
|
request.end = Date.now();
|
||||||
}
|
}
|
||||||
if (data.start == undefined){
|
if (request.start == undefined){
|
||||||
data.start = data.end - FIFTEEN_MINUTES;
|
request.start = request.end - FIFTEEN_MINUTES;
|
||||||
}
|
}
|
||||||
|
|
||||||
var now = Date.now();
|
var now = Date.now();
|
||||||
var start = data.start;
|
var start = request.start;
|
||||||
var end = data.end > now ? now : data.end;
|
var end = request.end > now ? now : request.end;
|
||||||
var amplitude = data.amplitude;
|
var amplitude = request.amplitude;
|
||||||
var period = data.period;
|
var period = request.period;
|
||||||
var offset = data.offset;
|
var offset = request.offset;
|
||||||
var dataRateInHz = data.dataRateInHz;
|
var dataRateInHz = request.dataRateInHz;
|
||||||
|
var phase = request.phase;
|
||||||
|
|
||||||
var step = 1000 / dataRateInHz;
|
var step = 1000 / dataRateInHz;
|
||||||
var nextStep = start - (start % step) + step;
|
var nextStep = start - (start % step) + step;
|
||||||
|
|
||||||
var data = [];
|
var data = [];
|
||||||
|
|
||||||
for (; nextStep < end; nextStep += step) {
|
for (; nextStep < end && data.length < 5000; nextStep += step) {
|
||||||
data.push({
|
data.push({
|
||||||
|
name: request.name,
|
||||||
utc: nextStep,
|
utc: nextStep,
|
||||||
yesterday: nextStep - 60*60*24*1000,
|
yesterday: nextStep - 60*60*24*1000,
|
||||||
sin: sin(nextStep, period, amplitude, offset),
|
sin: sin(nextStep, period, amplitude, offset, phase),
|
||||||
cos: cos(nextStep, period, amplitude, offset)
|
cos: cos(nextStep, period, amplitude, offset, phase)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
self.postMessage({
|
self.postMessage({
|
||||||
@ -117,14 +120,14 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function cos(timestamp, period, amplitude, offset) {
|
function cos(timestamp, period, amplitude, offset, phase) {
|
||||||
return amplitude *
|
return amplitude *
|
||||||
Math.cos(timestamp / period / 1000 * Math.PI * 2) + offset;
|
Math.cos(phase + (timestamp / period / 1000 * Math.PI * 2)) + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
function sin(timestamp, period, amplitude, offset) {
|
function sin(timestamp, period, amplitude, offset, phase) {
|
||||||
return amplitude *
|
return amplitude *
|
||||||
Math.sin(timestamp / period / 1000 * Math.PI * 2) + offset;
|
Math.sin(phase + (timestamp / period / 1000 * Math.PI * 2)) + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendError(error, message) {
|
function sendError(error, message) {
|
||||||
|
@ -23,10 +23,12 @@
|
|||||||
|
|
||||||
define([
|
define([
|
||||||
"./GeneratorProvider",
|
"./GeneratorProvider",
|
||||||
"./SinewaveLimitCapability"
|
"./SinewaveLimitCapability",
|
||||||
|
"./StateGeneratorProvider"
|
||||||
], function (
|
], function (
|
||||||
GeneratorProvider,
|
GeneratorProvider,
|
||||||
SinewaveLimitCapability
|
SinewaveLimitCapability,
|
||||||
|
StateGeneratorProvider
|
||||||
) {
|
) {
|
||||||
|
|
||||||
var legacyExtensions = {
|
var legacyExtensions = {
|
||||||
@ -46,6 +48,75 @@ define([
|
|||||||
openmct.legacyExtension(type, extension)
|
openmct.legacyExtension(type, extension)
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
openmct.types.addType("example.state-generator", {
|
||||||
|
name: "State Generator",
|
||||||
|
description: "For development use. Generates test enumerated telemetry by cycling through a given set of states",
|
||||||
|
cssClass: "icon-telemetry",
|
||||||
|
creatable: true,
|
||||||
|
form: [
|
||||||
|
{
|
||||||
|
name: "State Duration (seconds)",
|
||||||
|
control: "textfield",
|
||||||
|
cssClass: "l-input-sm l-numeric",
|
||||||
|
key: "duration",
|
||||||
|
required: true,
|
||||||
|
property: [
|
||||||
|
"telemetry",
|
||||||
|
"duration"
|
||||||
|
],
|
||||||
|
pattern: "^\\d*(\\.\\d*)?$"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
initialize: function (object) {
|
||||||
|
object.telemetry = {
|
||||||
|
duration: 5,
|
||||||
|
values: [
|
||||||
|
{
|
||||||
|
key: "name",
|
||||||
|
name: "Name"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "utc",
|
||||||
|
name: "Time",
|
||||||
|
format: "utc",
|
||||||
|
hints: {
|
||||||
|
domain: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "state",
|
||||||
|
source: "value",
|
||||||
|
name: "State",
|
||||||
|
format: "enum",
|
||||||
|
enumerations: [
|
||||||
|
{
|
||||||
|
value: 0,
|
||||||
|
string: "OFF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 1,
|
||||||
|
string: "ON"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
hints: {
|
||||||
|
range: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "value",
|
||||||
|
name: "Value",
|
||||||
|
hints: {
|
||||||
|
range: 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
openmct.telemetry.addProvider(new StateGeneratorProvider());
|
||||||
|
|
||||||
openmct.types.addType("generator", {
|
openmct.types.addType("generator", {
|
||||||
name: "Sine Wave Generator",
|
name: "Sine Wave Generator",
|
||||||
description: "For development use. Generates example streaming telemetry data using a simple sine wave algorithm.",
|
description: "For development use. Generates example streaming telemetry data using a simple sine wave algorithm.",
|
||||||
@ -99,6 +170,18 @@ define([
|
|||||||
"dataRateInHz"
|
"dataRateInHz"
|
||||||
],
|
],
|
||||||
pattern: "^\\d*(\\.\\d*)?$"
|
pattern: "^\\d*(\\.\\d*)?$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Phase (radians)",
|
||||||
|
control: "textfield",
|
||||||
|
cssClass: "l-input-sm l-numeric",
|
||||||
|
key: "phase",
|
||||||
|
required: true,
|
||||||
|
property: [
|
||||||
|
"telemetry",
|
||||||
|
"phase"
|
||||||
|
],
|
||||||
|
pattern: "^\\d*(\\.\\d*)?$"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
initialize: function (object) {
|
initialize: function (object) {
|
||||||
@ -107,7 +190,12 @@ define([
|
|||||||
amplitude: 1,
|
amplitude: 1,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
dataRateInHz: 1,
|
dataRateInHz: 1,
|
||||||
|
phase: 0,
|
||||||
values: [
|
values: [
|
||||||
|
{
|
||||||
|
key: "name",
|
||||||
|
name: "Name"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
key: "utc",
|
key: "utc",
|
||||||
name: "Time",
|
name: "Time",
|
||||||
@ -142,6 +230,7 @@ define([
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
openmct.telemetry.addProvider(new GeneratorProvider());
|
openmct.telemetry.addProvider(new GeneratorProvider());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -48,8 +48,9 @@ define([
|
|||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18748.jpg"
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18748.jpg"
|
||||||
];
|
];
|
||||||
|
|
||||||
function pointForTimestamp(timestamp) {
|
function pointForTimestamp(timestamp, name) {
|
||||||
return {
|
return {
|
||||||
|
name: name,
|
||||||
utc: Math.floor(timestamp / 5000) * 5000,
|
utc: Math.floor(timestamp / 5000) * 5000,
|
||||||
url: IMAGE_SAMPLES[Math.floor(timestamp / 5000) % IMAGE_SAMPLES.length]
|
url: IMAGE_SAMPLES[Math.floor(timestamp / 5000) % IMAGE_SAMPLES.length]
|
||||||
};
|
};
|
||||||
@ -61,7 +62,7 @@ define([
|
|||||||
},
|
},
|
||||||
subscribe: function (domainObject, callback) {
|
subscribe: function (domainObject, callback) {
|
||||||
var interval = setInterval(function () {
|
var interval = setInterval(function () {
|
||||||
callback(pointForTimestamp(Date.now()));
|
callback(pointForTimestamp(Date.now(), domainObject.name));
|
||||||
}, 5000);
|
}, 5000);
|
||||||
|
|
||||||
return function (interval) {
|
return function (interval) {
|
||||||
@ -79,8 +80,8 @@ define([
|
|||||||
var start = options.start;
|
var start = options.start;
|
||||||
var end = options.end;
|
var end = options.end;
|
||||||
var data = [];
|
var data = [];
|
||||||
while (start < end) {
|
while (start <= end && data.length < 5000) {
|
||||||
data.push(pointForTimestamp(start));
|
data.push(pointForTimestamp(start, domainObject.name));
|
||||||
start += 5000;
|
start += 5000;
|
||||||
}
|
}
|
||||||
return Promise.resolve(data);
|
return Promise.resolve(data);
|
||||||
@ -93,7 +94,7 @@ define([
|
|||||||
options.strategy === 'latest';
|
options.strategy === 'latest';
|
||||||
},
|
},
|
||||||
request: function (domainObject, options) {
|
request: function (domainObject, options) {
|
||||||
return Promise.resolve([pointForTimestamp(Date.now())]);
|
return Promise.resolve([pointForTimestamp(Date.now(), domainObject.name)]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -109,6 +110,10 @@ define([
|
|||||||
initialize: function (object) {
|
initialize: function (object) {
|
||||||
object.telemetry = {
|
object.telemetry = {
|
||||||
values: [
|
values: [
|
||||||
|
{
|
||||||
|
name: 'Name',
|
||||||
|
key: 'name'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'Time',
|
name: 'Time',
|
||||||
key: 'utc',
|
key: 'utc',
|
||||||
|
@ -16,6 +16,7 @@ define([
|
|||||||
{ "key": "styleguide.intro", "name": "Introduction", "cssClass": "icon-page", "description": "Introduction and overview to the style guide" },
|
{ "key": "styleguide.intro", "name": "Introduction", "cssClass": "icon-page", "description": "Introduction and overview to the style guide" },
|
||||||
{ "key": "styleguide.standards", "name": "Standards", "cssClass": "icon-page", "description": "" },
|
{ "key": "styleguide.standards", "name": "Standards", "cssClass": "icon-page", "description": "" },
|
||||||
{ "key": "styleguide.colors", "name": "Colors", "cssClass": "icon-page", "description": "" },
|
{ "key": "styleguide.colors", "name": "Colors", "cssClass": "icon-page", "description": "" },
|
||||||
|
{ "key": "styleguide.status", "name": "status", "cssClass": "icon-page", "description": "Limits, telemetry paused, etc." },
|
||||||
{ "key": "styleguide.glyphs", "name": "Glyphs", "cssClass": "icon-page", "description": "Glyphs overview" },
|
{ "key": "styleguide.glyphs", "name": "Glyphs", "cssClass": "icon-page", "description": "Glyphs overview" },
|
||||||
{ "key": "styleguide.controls", "name": "Controls", "cssClass": "icon-page", "description": "Buttons, selects, HTML controls" },
|
{ "key": "styleguide.controls", "name": "Controls", "cssClass": "icon-page", "description": "Buttons, selects, HTML controls" },
|
||||||
{ "key": "styleguide.input", "name": "Text Inputs", "cssClass": "icon-page", "description": "Various text inputs" },
|
{ "key": "styleguide.input", "name": "Text Inputs", "cssClass": "icon-page", "description": "Various text inputs" },
|
||||||
@ -25,6 +26,7 @@ define([
|
|||||||
{ "key": "styleguide.intro", "type": "styleguide.intro", "templateUrl": "templates/intro.html", "editable": false },
|
{ "key": "styleguide.intro", "type": "styleguide.intro", "templateUrl": "templates/intro.html", "editable": false },
|
||||||
{ "key": "styleguide.standards", "type": "styleguide.standards", "templateUrl": "templates/standards.html", "editable": false },
|
{ "key": "styleguide.standards", "type": "styleguide.standards", "templateUrl": "templates/standards.html", "editable": false },
|
||||||
{ "key": "styleguide.colors", "type": "styleguide.colors", "templateUrl": "templates/colors.html", "editable": false },
|
{ "key": "styleguide.colors", "type": "styleguide.colors", "templateUrl": "templates/colors.html", "editable": false },
|
||||||
|
{ "key": "styleguide.status", "type": "styleguide.status", "templateUrl": "templates/status.html", "editable": false },
|
||||||
{ "key": "styleguide.glyphs", "type": "styleguide.glyphs", "templateUrl": "templates/glyphs.html", "editable": false },
|
{ "key": "styleguide.glyphs", "type": "styleguide.glyphs", "templateUrl": "templates/glyphs.html", "editable": false },
|
||||||
{ "key": "styleguide.controls", "type": "styleguide.controls", "templateUrl": "templates/controls.html", "editable": false },
|
{ "key": "styleguide.controls", "type": "styleguide.controls", "templateUrl": "templates/controls.html", "editable": false },
|
||||||
{ "key": "styleguide.input", "type": "styleguide.input", "templateUrl": "templates/input.html", "editable": false },
|
{ "key": "styleguide.input", "type": "styleguide.input", "templateUrl": "templates/input.html", "editable": false },
|
||||||
@ -47,6 +49,7 @@ define([
|
|||||||
"intro",
|
"intro",
|
||||||
"standards",
|
"standards",
|
||||||
"colors",
|
"colors",
|
||||||
|
"status",
|
||||||
"glyphs",
|
"glyphs",
|
||||||
"styleguide:ui-elements"
|
"styleguide:ui-elements"
|
||||||
]
|
]
|
||||||
|
@ -28,8 +28,8 @@
|
|||||||
color: $colorKey;
|
color: $colorKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1, h2 {
|
h1, h2, strong, b {
|
||||||
color: pullForward($colorBodyFg, 20%);
|
color: pullForward($colorBodyFg, 50%);
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
@ -45,6 +45,10 @@
|
|||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
strong, b {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
.w-markup {
|
.w-markup {
|
||||||
//Wrap markup example "pre" element
|
//Wrap markup example "pre" element
|
||||||
background-color: $colorCode;
|
background-color: $colorCode;
|
||||||
@ -54,6 +58,12 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.w-mct-example {
|
||||||
|
div {
|
||||||
|
margin-bottom: $interiorMarginLg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
code,
|
code,
|
||||||
pre {
|
pre {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
@ -143,6 +153,17 @@
|
|||||||
|
|
||||||
// Example grid of glyphs
|
// Example grid of glyphs
|
||||||
.items-holder.grid {
|
.items-holder.grid {
|
||||||
|
table.details {
|
||||||
|
width: 100%;
|
||||||
|
td {
|
||||||
|
font-size: inherit;
|
||||||
|
&.label {
|
||||||
|
color: pushBack($colorBodyFg, 10%);
|
||||||
|
text-transform: uppercase;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
.item.glyph-item,
|
.item.glyph-item,
|
||||||
.item.swatch-item {
|
.item.swatch-item {
|
||||||
margin-bottom: 50px;
|
margin-bottom: 50px;
|
||||||
@ -155,15 +176,6 @@
|
|||||||
margin: $interiorMarginLg 0;
|
margin: $interiorMarginLg 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.details td {
|
|
||||||
font-size: inherit;
|
|
||||||
&.label {
|
|
||||||
color: pushBack($colorBodyFg, 10%);
|
|
||||||
text-transform: uppercase;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.item.glyph-item {
|
.item.glyph-item {
|
||||||
|
@ -48,7 +48,9 @@
|
|||||||
{ 'meaning': 'General usage plus symbol; used in timer object', 'cssClass': 'icon-plus', 'cssContent': 'e926', 'htmlEntity': '&#xe926' },
|
{ 'meaning': 'General usage plus symbol; used in timer object', 'cssClass': 'icon-plus', 'cssContent': 'e926', 'htmlEntity': '&#xe926' },
|
||||||
{ 'meaning': 'Delete', 'cssClass': 'icon-trash', 'cssContent': 'e927', 'htmlEntity': '&#xe927' },
|
{ 'meaning': 'Delete', 'cssClass': 'icon-trash', 'cssContent': 'e927', 'htmlEntity': '&#xe927' },
|
||||||
{ 'meaning': 'Close, remove', 'cssClass': 'icon-x', 'cssContent': 'e928', 'htmlEntity': '&#xe928' },
|
{ 'meaning': 'Close, remove', 'cssClass': 'icon-x', 'cssContent': 'e928', 'htmlEntity': '&#xe928' },
|
||||||
{ 'meaning': 'Enclosing, inclusive; used in Time Conductor', 'cssClass': 'icon-brackets', 'cssContent': 'e929', 'htmlEntity': '&#xe929' }
|
{ 'meaning': 'Enclosing, inclusive; used in Time Conductor', 'cssClass': 'icon-brackets', 'cssContent': 'e929', 'htmlEntity': '&#xe929' },
|
||||||
|
{ 'meaning': 'Something is targeted', 'cssClass': 'icon-crosshair', 'cssContent': 'e930', 'htmlEntity': '&#xe930' },
|
||||||
|
{ 'meaning': 'Draggable', 'cssClass': 'icon-grippy', 'cssContent': 'e931', 'htmlEntity': '&#xe931' }
|
||||||
]; controls= [{ 'meaning': 'Reset zoom/pam', 'cssClass': 'icon-arrows-out', 'cssContent': 'e1000', 'htmlEntity': '&#xe1000' },
|
]; controls= [{ 'meaning': 'Reset zoom/pam', 'cssClass': 'icon-arrows-out', 'cssContent': 'e1000', 'htmlEntity': '&#xe1000' },
|
||||||
{ 'meaning': 'Expand vertically', 'cssClass': 'icon-arrows-right-left', 'cssContent': 'e1001', 'htmlEntity': '&#xe1001' },
|
{ 'meaning': 'Expand vertically', 'cssClass': 'icon-arrows-right-left', 'cssContent': 'e1001', 'htmlEntity': '&#xe1001' },
|
||||||
{ 'meaning': 'View scrolling', 'cssClass': 'icon-arrows-up-down', 'cssContent': 'e1002', 'htmlEntity': '&#xe1002' },
|
{ 'meaning': 'View scrolling', 'cssClass': 'icon-arrows-up-down', 'cssContent': 'e1002', 'htmlEntity': '&#xe1002' },
|
||||||
@ -84,10 +86,17 @@
|
|||||||
{ 'meaning': 'Image thumbs strip; view items grid', 'cssClass': 'icon-thumbs-strip', 'cssContent': 'e1033', 'htmlEntity': '&#xe1033' },
|
{ 'meaning': 'Image thumbs strip; view items grid', 'cssClass': 'icon-thumbs-strip', 'cssContent': 'e1033', 'htmlEntity': '&#xe1033' },
|
||||||
{ 'meaning': 'Two part item, both parts', 'cssClass': 'icon-two-parts-both', 'cssContent': 'e1034', 'htmlEntity': '&#xe1034' },
|
{ 'meaning': 'Two part item, both parts', 'cssClass': 'icon-two-parts-both', 'cssContent': 'e1034', 'htmlEntity': '&#xe1034' },
|
||||||
{ 'meaning': 'Two part item, one only', 'cssClass': 'icon-two-parts-one-only', 'cssContent': 'e1035', 'htmlEntity': '&#xe1035' },
|
{ 'meaning': 'Two part item, one only', 'cssClass': 'icon-two-parts-one-only', 'cssContent': 'e1035', 'htmlEntity': '&#xe1035' },
|
||||||
|
{ 'meaning': 'Resync', 'cssClass': 'icon-resync', 'cssContent': 'e1036', 'htmlEntity': '&#xe1036' },
|
||||||
|
{ 'meaning': 'Reset', 'cssClass': 'icon-reset', 'cssContent': 'e1037', 'htmlEntity': '&#xe1037' },
|
||||||
{ 'meaning': 'Clear', 'cssClass': 'icon-x-in-circle', 'cssContent': 'e1038', 'htmlEntity': '&#xe1038' },
|
{ 'meaning': 'Clear', 'cssClass': 'icon-x-in-circle', 'cssContent': 'e1038', 'htmlEntity': '&#xe1038' },
|
||||||
{ 'meaning': 'Brightness', 'cssClass': 'icon-brightness', 'cssContent': 'e1039', 'htmlEntity': '&#xe1039' },
|
{ 'meaning': 'Brightness', 'cssClass': 'icon-brightness', 'cssContent': 'e1039', 'htmlEntity': '&#xe1039' },
|
||||||
{ 'meaning': 'Contrast', 'cssClass': 'icon-contrast', 'cssContent': 'e1040', 'htmlEntity': '&#xe1040' },
|
{ 'meaning': 'Contrast', 'cssClass': 'icon-contrast', 'cssContent': 'e1040', 'htmlEntity': '&#xe1040' },
|
||||||
{ 'meaning': 'Expand', 'cssClass': 'icon-expand', 'cssContent': 'e1041', 'htmlEntity': '&#xe1041' }
|
{ 'meaning': 'Expand', 'cssClass': 'icon-expand', 'cssContent': 'e1041', 'htmlEntity': '&#xe1041' },
|
||||||
|
{ 'meaning': 'View items in a tabular list', 'cssClass': 'icon-list-view', 'cssContent': 'e1042', 'htmlEntity': '&#xe1042' },
|
||||||
|
{ 'meaning': 'Snap an object corner to a grid', 'cssClass': 'icon-grid-snap-to', 'cssContent': 'e1043', 'htmlEntity': '&#xe1043' },
|
||||||
|
{ 'meaning': 'Do not snap an object corner to a grid', 'cssClass': 'icon-grid-snap-no', 'cssContent': 'e1044', 'htmlEntity': '&#xe1044' },
|
||||||
|
{ 'meaning': 'Show an object frame in a Display Layout', 'cssClass': 'icon-frame-show', 'cssContent': 'e1045', 'htmlEntity': '&#xe1045' },
|
||||||
|
{ 'meaning': 'Do not show an object frame in a Display Layout', 'cssClass': 'icon-frame-hide', 'cssContent': 'e1046', 'htmlEntity': '&#xe1046' }
|
||||||
]; objects= [{ 'meaning': 'Activity', 'cssClass': 'icon-activity', 'cssContent': 'e1100', 'htmlEntity': '&#xe1100' },
|
]; objects= [{ 'meaning': 'Activity', 'cssClass': 'icon-activity', 'cssContent': 'e1100', 'htmlEntity': '&#xe1100' },
|
||||||
{ 'meaning': 'Activity Mode', 'cssClass': 'icon-activity-mode', 'cssContent': 'e1101', 'htmlEntity': '&#xe1101' },
|
{ 'meaning': 'Activity Mode', 'cssClass': 'icon-activity-mode', 'cssContent': 'e1101', 'htmlEntity': '&#xe1101' },
|
||||||
{ 'meaning': 'Auto-flow Tabular view', 'cssClass': 'icon-autoflow-tabular', 'cssContent': 'e1102', 'htmlEntity': '&#xe1102' },
|
{ 'meaning': 'Auto-flow Tabular view', 'cssClass': 'icon-autoflow-tabular', 'cssContent': 'e1102', 'htmlEntity': '&#xe1102' },
|
||||||
@ -117,7 +126,9 @@
|
|||||||
{ 'meaning': 'Timeline object', 'cssClass': 'icon-timeline', 'cssContent': 'e1126', 'htmlEntity': '&#xe1126' },
|
{ 'meaning': 'Timeline object', 'cssClass': 'icon-timeline', 'cssContent': 'e1126', 'htmlEntity': '&#xe1126' },
|
||||||
{ 'meaning': 'Timer object', 'cssClass': 'icon-timer', 'cssContent': 'e1127', 'htmlEntity': '&#xe1127' },
|
{ 'meaning': 'Timer object', 'cssClass': 'icon-timer', 'cssContent': 'e1127', 'htmlEntity': '&#xe1127' },
|
||||||
{ 'meaning': 'Data Topic', 'cssClass': 'icon-topic', 'cssContent': 'e1128', 'htmlEntity': '&#xe1128' },
|
{ 'meaning': 'Data Topic', 'cssClass': 'icon-topic', 'cssContent': 'e1128', 'htmlEntity': '&#xe1128' },
|
||||||
{ 'meaning': 'Fixed Position object', 'cssClass': 'icon-box-with-dashed-lines', 'cssContent': 'e1129', 'htmlEntity': '&#xe1129' }
|
{ 'meaning': 'Fixed Position object', 'cssClass': 'icon-box-with-dashed-lines', 'cssContent': 'e1129', 'htmlEntity': '&#xe1129' },
|
||||||
|
{ 'meaning': 'Summary Widget', 'cssClass': 'icon-summary-widget', 'cssContent': 'e1130', 'htmlEntity': '&#xe1130' },
|
||||||
|
{ 'meaning': 'Notebook object', 'cssClass': 'icon-notebook', 'cssContent': 'e1131', 'htmlEntity': '&#xe1131' }
|
||||||
];
|
];
|
||||||
"></div>
|
"></div>
|
||||||
|
|
||||||
@ -141,8 +152,8 @@
|
|||||||
<h2>How to Use Glyphs</h2>
|
<h2>How to Use Glyphs</h2>
|
||||||
<div class="cols cols1-1">
|
<div class="cols cols1-1">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<p>The easiest way to use a glyph is to include its CSS class in element. The CSS adds a psuedo <code>:before</code> HTML element to whatever element it's attached to that makes proper use of the symbols font.</p>
|
<p>The easiest way to use a glyph is to include its CSS class in an element. The CSS adds a psuedo <code>:before</code> HTML element to whatever element it's attached to that makes proper use of the symbols font.</p>
|
||||||
<p>Alternately, you can use the <code>.ui-symbol</code> class in an object that contains encoded HTML entities. This method is only recommended if you cannot use the aforementioned CSS class approach for some reason.</p>
|
<p>Alternately, you can use the <code>.ui-symbol</code> class in an object that contains encoded HTML entities. This method is only recommended if you cannot use the aforementioned CSS class approach.</p>
|
||||||
</div>
|
</div>
|
||||||
<mct-example><a class="s-button icon-gear" title="Settings"></a>
|
<mct-example><a class="s-button icon-gear" title="Settings"></a>
|
||||||
<br /><br />
|
<br /><br />
|
||||||
@ -160,8 +171,8 @@
|
|||||||
<div class="item glyph-item" ng-repeat="glyph in general">
|
<div class="item glyph-item" ng-repeat="glyph in general">
|
||||||
<div class="glyph" ng-class="glyph.cssClass"></div>
|
<div class="glyph" ng-class="glyph.cssClass"></div>
|
||||||
<table class="details">
|
<table class="details">
|
||||||
<tr><td class="label">Meaning</td><td class="value">{{glyph.meaning}}</td></tr>
|
|
||||||
<tr><td class="label">Class</td><td class="value">.{{glyph.cssClass}}</td></tr>
|
<tr><td class="label">Class</td><td class="value">.{{glyph.cssClass}}</td></tr>
|
||||||
|
<tr><td class="label">Meaning</td><td class="value">{{glyph.meaning}}</td></tr>
|
||||||
<tr><td class="label">CSS Content</td><td class="value">\{{glyph.cssContent}}</td></tr>
|
<tr><td class="label">CSS Content</td><td class="value">\{{glyph.cssContent}}</td></tr>
|
||||||
<tr><td class="label">HTML Entity</td><td class="value">{{glyph.htmlEntity}}</td></tr>
|
<tr><td class="label">HTML Entity</td><td class="value">{{glyph.htmlEntity}}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
@ -176,8 +187,8 @@
|
|||||||
<div class="item glyph-item" ng-repeat="glyph in controls">
|
<div class="item glyph-item" ng-repeat="glyph in controls">
|
||||||
<div class="glyph" ng-class="glyph.cssClass"></div>
|
<div class="glyph" ng-class="glyph.cssClass"></div>
|
||||||
<table class="details">
|
<table class="details">
|
||||||
<tr><td class="label">Meaning</td><td class="value">{{glyph.meaning}}</td></tr>
|
|
||||||
<tr><td class="label">Class</td><td class="value">.{{glyph.cssClass}}</td></tr>
|
<tr><td class="label">Class</td><td class="value">.{{glyph.cssClass}}</td></tr>
|
||||||
|
<tr><td class="label">Meaning</td><td class="value">{{glyph.meaning}}</td></tr>
|
||||||
<tr><td class="label">CSS Content</td><td class="value">\{{glyph.cssContent}}</td></tr>
|
<tr><td class="label">CSS Content</td><td class="value">\{{glyph.cssContent}}</td></tr>
|
||||||
<tr><td class="label">HTML Entity</td><td class="value">{{glyph.htmlEntity}}</td></tr>
|
<tr><td class="label">HTML Entity</td><td class="value">{{glyph.htmlEntity}}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
@ -192,8 +203,8 @@
|
|||||||
<div class="item glyph-item" ng-repeat="glyph in objects">
|
<div class="item glyph-item" ng-repeat="glyph in objects">
|
||||||
<div class="glyph" ng-class="glyph.cssClass"></div>
|
<div class="glyph" ng-class="glyph.cssClass"></div>
|
||||||
<table class="details">
|
<table class="details">
|
||||||
<tr><td class="label">Meaning</td><td class="value">{{glyph.meaning}}</td></tr>
|
|
||||||
<tr><td class="label">Class</td><td class="value">.{{glyph.cssClass}}</td></tr>
|
<tr><td class="label">Class</td><td class="value">.{{glyph.cssClass}}</td></tr>
|
||||||
|
<tr><td class="label">Meaning</td><td class="value">{{glyph.meaning}}</td></tr>
|
||||||
<tr><td class="label">CSS Content</td><td class="value">\{{glyph.cssContent}}</td></tr>
|
<tr><td class="label">CSS Content</td><td class="value">\{{glyph.cssContent}}</td></tr>
|
||||||
<tr><td class="label">HTML Entity</td><td class="value">{{glyph.htmlEntity}}</td></tr>
|
<tr><td class="label">HTML Entity</td><td class="value">{{glyph.htmlEntity}}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
<pre></pre>
|
<pre></pre>
|
||||||
</span>
|
</span>
|
||||||
<h3>Example</h3>
|
<h3>Example</h3>
|
||||||
<div></div>
|
<div class="w-mct-example"></div>
|
||||||
</div>
|
</div>
|
||||||
|
142
example/styleguide/res/templates/status.html
Normal file
142
example/styleguide/res/templates/status.html
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
<!--
|
||||||
|
Open MCT, Copyright (c) 2014-2016, 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.
|
||||||
|
-->
|
||||||
|
<style>
|
||||||
|
.w-mct-example div[class*="s-limit"],
|
||||||
|
.w-mct-example div[class*="s-status"],
|
||||||
|
.w-mct-example div[class*="s-unsynced"],
|
||||||
|
.w-mct-example span[class*="s-limit"] {
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 3px 7px;
|
||||||
|
}
|
||||||
|
.w-mct-example table {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div class="l-style-guide s-text">
|
||||||
|
<p class="doc-title">Open MCT Style Guide</p>
|
||||||
|
<h1>Status Indication</h1>
|
||||||
|
|
||||||
|
<div class="l-section">
|
||||||
|
<h2>Overview</h2>
|
||||||
|
<p>Many elements in Open MCT need to articulate a dynamic status; Open MCT provides the following styles and conventions to handle this:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Limits</strong>: when telemetry values exceed minimum or maximum values, they can be violating limits. Limit styles include both color and iconography; color is used to indicate severity while icons are used to indicate direction, upper or lower.</li>
|
||||||
|
<li><strong>Status</strong>: Open MCT also provides a number or built-in Status styles allowing telemetry or other displayed information to be visually classified by type. Common uses for these classes are to visually denote event records.</li>
|
||||||
|
<li><strong>Synchronization</strong>: When the system is displaying real-time data, it is very important that displays clearly indicate when they are not doing so, such as when a plot if frozen while panning or zooming. Open MCT provides a style for this.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="l-section">
|
||||||
|
<h2>Limits</h2>
|
||||||
|
<div class="cols cols1-1">
|
||||||
|
<div class="col">
|
||||||
|
<p>Limit CSS classes can be applied to any block or inline element. Open MCT limit classes set color and optionally an icon, but don't effect other properties. Yellow and red limit classes can be used as is, or allow the application of any custom icon available in Open MCT's glyphs library. "Level" limit classes - upper and lower - always use an icon in addition to a color; Open MCT doesn't support level limits without color.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Color only</li>
|
||||||
|
<ul>
|
||||||
|
<li><code>s-limit-yellow</code>: A yellow limit.</li>
|
||||||
|
<li><code>s-limit-red</code>: A red limit.</li>
|
||||||
|
</ul>
|
||||||
|
<li>Color and icon</li>
|
||||||
|
<ul>
|
||||||
|
<li><code>s-limit-yellow-icon</code>: A yellow limit with icon.</li>
|
||||||
|
<li><code>s-limit-red-icon</code>: A red limit with icon.</li>
|
||||||
|
</ul>
|
||||||
|
<li>Upper and lower limit indicators. Must be used with a color limit class to be visible.</li>
|
||||||
|
<ul>
|
||||||
|
<li><code>s-limit-upr</code>: Upper limit.
|
||||||
|
</li>
|
||||||
|
<li><code>s-limit-lwr</code>: Lower limit.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<mct-example><div class="s-limit-yellow">Yellow limit</div>
|
||||||
|
<div class="s-limit-red">Red limit</div>
|
||||||
|
<div class="s-limit-yellow-icon">Yellow limit with icon</div>
|
||||||
|
<div class="s-limit-red-icon">Red limit with icon</div>
|
||||||
|
<div class="s-limit-yellow s-limit-lwr">Lower yellow limit</div>
|
||||||
|
<div class="s-limit-red s-limit-upr">Upper red limit</div>
|
||||||
|
<div class="s-limit-red icon-bell">Red Limit with a custom icon</div>
|
||||||
|
<div>Some text with an <span class="s-limit-yellow-icon">inline element</span> showing a yellow limit.</div>
|
||||||
|
|
||||||
|
<!-- Limits applied in a table -->
|
||||||
|
<table>
|
||||||
|
<tr class='header'><td>Name</td><td>Value 1</td><td>Value 2</td></tr>
|
||||||
|
<tr><td>ENG_PWR 4991</td><td>7.023</td><td class="s-limit-yellow s-limit-upr">70.23</td></tr>
|
||||||
|
<tr><td>ENG_PWR 4992</td><td>49.784</td><td class="s-limit-red s-limit-lwr">-121.22</td></tr>
|
||||||
|
<tr><td>ENG_PWR 4993</td><td class="s-limit-yellow icon-bell">0.451</td><td>1.007</td></tr>
|
||||||
|
</table>
|
||||||
|
</mct-example>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="l-section">
|
||||||
|
<h2>Status</h2>
|
||||||
|
<div class="cols cols1-1">
|
||||||
|
<div class="col">
|
||||||
|
<p>Classes here can be applied to elements as needed.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Color only</li>
|
||||||
|
<ul>
|
||||||
|
<li><code>s-status-warning-hi</code></li>
|
||||||
|
<li><code>s-status-warning-lo</code></li>
|
||||||
|
<li><code>s-status-diagnostic</code></li>
|
||||||
|
<li><code>s-status-info</code></li>
|
||||||
|
<li><code>s-status-ok</code></li>
|
||||||
|
</ul>
|
||||||
|
<li>Color and icon</li>
|
||||||
|
<ul>
|
||||||
|
<li><code>s-status-warning-hi-icon</code></li>
|
||||||
|
<li><code>s-status-warning-lo-icon</code></li>
|
||||||
|
<li><code>s-status-diagnostic-icon</code></li>
|
||||||
|
<li><code>s-status-info-icon</code></li>
|
||||||
|
<li><code>s-status-ok-icon</code></li>
|
||||||
|
</ul>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<mct-example><div class="s-status-warning-hi">WARNING HI</div>
|
||||||
|
<div class="s-status-warning-lo">WARNING LOW</div>
|
||||||
|
<div class="s-status-diagnostic">DIAGNOSTIC</div>
|
||||||
|
<div class="s-status-info">INFO</div>
|
||||||
|
<div class="s-status-ok">OK</div>
|
||||||
|
<div class="s-status-warning-hi-icon">WARNING HI with icon</div>
|
||||||
|
<div class="s-status-warning-lo-icon">WARNING LOW with icon</div>
|
||||||
|
<div class="s-status-diagnostic-icon">DIAGNOSTIC with icon</div>
|
||||||
|
<div class="s-status-info-icon">INFO with icon</div>
|
||||||
|
<div class="s-status-ok-icon">OK with icon</div>
|
||||||
|
<div class="s-status-warning-hi icon-gear">WARNING HI with custom icon</div>
|
||||||
|
</mct-example>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="l-section">
|
||||||
|
<h2>Synchronization</h2>
|
||||||
|
<div class="cols cols1-1">
|
||||||
|
<div class="col">
|
||||||
|
<p>When the system is operating in real-time streaming mode, it is important for views that display real-time data to clearly articulate when they are not, such as when a user zooms or pans a plot view, freezing that view. In that case, the CSS class <code>s-unsynced</code> should be applied to that view.</p>
|
||||||
|
</div>
|
||||||
|
<mct-example><div class="s-unsynced">This element is unsynced</div>
|
||||||
|
</mct-example>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -34,6 +34,7 @@ define(
|
|||||||
pages['standards'] = { name: "Standards", type: "styleguide.standards", location: "styleguide:home" };
|
pages['standards'] = { name: "Standards", type: "styleguide.standards", location: "styleguide:home" };
|
||||||
pages['colors'] = { name: "Colors", type: "styleguide.colors", location: "styleguide:home" };
|
pages['colors'] = { name: "Colors", type: "styleguide.colors", location: "styleguide:home" };
|
||||||
pages['glyphs'] = { name: "Glyphs", type: "styleguide.glyphs", location: "styleguide:home" };
|
pages['glyphs'] = { name: "Glyphs", type: "styleguide.glyphs", location: "styleguide:home" };
|
||||||
|
pages['status'] = { name: "Status Indication", type: "styleguide.status", location: "styleguide:home" };
|
||||||
pages['controls'] = { name: "Controls", type: "styleguide.controls", location: "styleguide:ui-elements" };
|
pages['controls'] = { name: "Controls", type: "styleguide.controls", location: "styleguide:ui-elements" };
|
||||||
pages['input'] = { name: "Text Inputs", type: "styleguide.input", location: "styleguide:ui-elements" };
|
pages['input'] = { name: "Text Inputs", type: "styleguide.input", location: "styleguide:ui-elements" };
|
||||||
pages['menus'] = { name: "Menus", type: "styleguide.menus", location: "styleguide:ui-elements" };
|
pages['menus'] = { name: "Menus", type: "styleguide.menus", location: "styleguide:ui-elements" };
|
||||||
|
28
gulpfile.js
28
gulpfile.js
@ -46,9 +46,22 @@ var gulp = require('gulp'),
|
|||||||
name: 'bower_components/almond/almond.js',
|
name: 'bower_components/almond/almond.js',
|
||||||
include: paths.main.replace('.js', ''),
|
include: paths.main.replace('.js', ''),
|
||||||
wrap: {
|
wrap: {
|
||||||
startFile: "src/start.frag",
|
start: (function () {
|
||||||
|
var buildVariables = {
|
||||||
|
version: project.version,
|
||||||
|
timestamp: moment.utc(Date.now()).format(),
|
||||||
|
revision: fs.existsSync('.git') ? git.long() : 'Unknown',
|
||||||
|
branch: fs.existsSync('.git') ? git.branch() : 'Unknown'
|
||||||
|
};
|
||||||
|
return fs.readFileSync("src/start.frag", 'utf-8')
|
||||||
|
.replace(/@@(\w+)/g, function (match, key) {
|
||||||
|
return buildVariables[key];
|
||||||
|
});;
|
||||||
|
}()),
|
||||||
endFile: "src/end.frag"
|
endFile: "src/end.frag"
|
||||||
},
|
},
|
||||||
|
optimize: 'uglify2',
|
||||||
|
uglify2: { output: { comments: /@preserve/ } },
|
||||||
mainConfigFile: paths.main,
|
mainConfigFile: paths.main,
|
||||||
wrapShim: true
|
wrapShim: true
|
||||||
},
|
},
|
||||||
@ -58,14 +71,6 @@ var gulp = require('gulp'),
|
|||||||
},
|
},
|
||||||
sass: {
|
sass: {
|
||||||
sourceComments: true
|
sourceComments: true
|
||||||
},
|
|
||||||
replace: {
|
|
||||||
variables: {
|
|
||||||
version: project.version,
|
|
||||||
timestamp: moment.utc(Date.now()).format(),
|
|
||||||
revision: fs.existsSync('.git') ? git.long() : 'Unknown',
|
|
||||||
branch: fs.existsSync('.git') ? git.branch() : 'Unknown'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -76,16 +81,11 @@ if (process.env.NODE_ENV === 'development') {
|
|||||||
|
|
||||||
gulp.task('scripts', function () {
|
gulp.task('scripts', function () {
|
||||||
var requirejsOptimize = require('gulp-requirejs-optimize');
|
var requirejsOptimize = require('gulp-requirejs-optimize');
|
||||||
var replace = require('gulp-replace-task');
|
|
||||||
var header = require('gulp-header');
|
|
||||||
var comment = fs.readFileSync('src/about.frag');
|
|
||||||
|
|
||||||
return gulp.src(paths.main)
|
return gulp.src(paths.main)
|
||||||
.pipe(sourcemaps.init())
|
.pipe(sourcemaps.init())
|
||||||
.pipe(requirejsOptimize(options.requirejsOptimize))
|
.pipe(requirejsOptimize(options.requirejsOptimize))
|
||||||
.pipe(sourcemaps.write('.'))
|
.pipe(sourcemaps.write('.'))
|
||||||
.pipe(replace(options.replace))
|
|
||||||
.pipe(header(comment, options.replace.variables))
|
|
||||||
.pipe(gulp.dest(paths.dist));
|
.pipe(gulp.dest(paths.dist));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -39,10 +39,11 @@
|
|||||||
);
|
);
|
||||||
openmct.install(openmct.plugins.MyItems());
|
openmct.install(openmct.plugins.MyItems());
|
||||||
openmct.install(openmct.plugins.LocalStorage());
|
openmct.install(openmct.plugins.LocalStorage());
|
||||||
openmct.install(openmct.plugins.Espresso());
|
openmct.install(openmct.plugins.Snow());
|
||||||
openmct.install(openmct.plugins.Generator());
|
openmct.install(openmct.plugins.Generator());
|
||||||
openmct.install(openmct.plugins.ExampleImagery());
|
openmct.install(openmct.plugins.ExampleImagery());
|
||||||
openmct.install(openmct.plugins.UTCTimeSystem());
|
openmct.install(openmct.plugins.UTCTimeSystem());
|
||||||
|
openmct.install(openmct.plugins.ImportExport());
|
||||||
openmct.install(openmct.plugins.Conductor({
|
openmct.install(openmct.plugins.Conductor({
|
||||||
menuOptions: [
|
menuOptions: [
|
||||||
{
|
{
|
||||||
|
11
openmct.js
11
openmct.js
@ -19,7 +19,7 @@
|
|||||||
* this source code distribution or the Licensing information page available
|
* this source code distribution or the Licensing information page available
|
||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
/*global requirejs*/
|
/*global requirejs,BUILD_CONSTANTS*/
|
||||||
|
|
||||||
requirejs.config({
|
requirejs.config({
|
||||||
"paths": {
|
"paths": {
|
||||||
@ -91,12 +91,17 @@ requirejs.config({
|
|||||||
define([
|
define([
|
||||||
'./platform/framework/src/Main',
|
'./platform/framework/src/Main',
|
||||||
'./src/defaultRegistry',
|
'./src/defaultRegistry',
|
||||||
'./src/MCT'
|
'./src/MCT',
|
||||||
], function (Main, defaultRegistry, MCT) {
|
'./src/plugins/buildInfo/plugin'
|
||||||
|
], function (Main, defaultRegistry, MCT, buildInfo) {
|
||||||
var openmct = new MCT();
|
var openmct = new MCT();
|
||||||
|
|
||||||
openmct.legacyRegistry = defaultRegistry;
|
openmct.legacyRegistry = defaultRegistry;
|
||||||
|
|
||||||
|
if (typeof BUILD_CONSTANTS !== 'undefined') {
|
||||||
|
openmct.install(buildInfo(BUILD_CONSTANTS));
|
||||||
|
}
|
||||||
|
|
||||||
openmct.on('start', function () {
|
openmct.on('start', function () {
|
||||||
return new Main().run(defaultRegistry);
|
return new Main().run(defaultRegistry);
|
||||||
});
|
});
|
||||||
|
@ -21,13 +21,11 @@
|
|||||||
"bower": "^1.7.7",
|
"bower": "^1.7.7",
|
||||||
"git-rev-sync": "^1.4.0",
|
"git-rev-sync": "^1.4.0",
|
||||||
"glob": ">= 3.0.0",
|
"glob": ">= 3.0.0",
|
||||||
"gulp": "^3.9.0",
|
"gulp": "^3.9.1",
|
||||||
"gulp-header": "^1.8.8",
|
|
||||||
"gulp-jscs": "^3.0.2",
|
"gulp-jscs": "^3.0.2",
|
||||||
"gulp-jshint": "^2.0.0",
|
"gulp-jshint": "^2.0.0",
|
||||||
"gulp-jshint-html-reporter": "^0.1.3",
|
"gulp-jshint-html-reporter": "^0.1.3",
|
||||||
"gulp-rename": "^1.2.2",
|
"gulp-rename": "^1.2.2",
|
||||||
"gulp-replace-task": "^0.11.0",
|
|
||||||
"gulp-requirejs-optimize": "^0.3.1",
|
"gulp-requirejs-optimize": "^0.3.1",
|
||||||
"gulp-sass": "^2.2.0",
|
"gulp-sass": "^2.2.0",
|
||||||
"gulp-sourcemaps": "^1.6.0",
|
"gulp-sourcemaps": "^1.6.0",
|
||||||
|
@ -26,6 +26,7 @@ define([
|
|||||||
"./src/InspectorPaneController",
|
"./src/InspectorPaneController",
|
||||||
"./src/BrowseObjectController",
|
"./src/BrowseObjectController",
|
||||||
"./src/MenuArrowController",
|
"./src/MenuArrowController",
|
||||||
|
"./src/ObjectHeaderController",
|
||||||
"./src/navigation/NavigationService",
|
"./src/navigation/NavigationService",
|
||||||
"./src/navigation/NavigateAction",
|
"./src/navigation/NavigateAction",
|
||||||
"./src/navigation/OrphanNavigationHandler",
|
"./src/navigation/OrphanNavigationHandler",
|
||||||
@ -36,6 +37,7 @@ define([
|
|||||||
"text!./res/templates/browse-object.html",
|
"text!./res/templates/browse-object.html",
|
||||||
"text!./res/templates/items/grid-item.html",
|
"text!./res/templates/items/grid-item.html",
|
||||||
"text!./res/templates/browse/object-header.html",
|
"text!./res/templates/browse/object-header.html",
|
||||||
|
"text!./res/templates/browse/object-header-frame.html",
|
||||||
"text!./res/templates/menu-arrow.html",
|
"text!./res/templates/menu-arrow.html",
|
||||||
"text!./res/templates/back-arrow.html",
|
"text!./res/templates/back-arrow.html",
|
||||||
"text!./res/templates/items/items.html",
|
"text!./res/templates/items/items.html",
|
||||||
@ -48,6 +50,7 @@ define([
|
|||||||
InspectorPaneController,
|
InspectorPaneController,
|
||||||
BrowseObjectController,
|
BrowseObjectController,
|
||||||
MenuArrowController,
|
MenuArrowController,
|
||||||
|
ObjectHeaderController,
|
||||||
NavigationService,
|
NavigationService,
|
||||||
NavigateAction,
|
NavigateAction,
|
||||||
OrphanNavigationHandler,
|
OrphanNavigationHandler,
|
||||||
@ -58,6 +61,7 @@ define([
|
|||||||
browseObjectTemplate,
|
browseObjectTemplate,
|
||||||
gridItemTemplate,
|
gridItemTemplate,
|
||||||
objectHeaderTemplate,
|
objectHeaderTemplate,
|
||||||
|
objectHeaderFrameTemplate,
|
||||||
menuArrowTemplate,
|
menuArrowTemplate,
|
||||||
backArrowTemplate,
|
backArrowTemplate,
|
||||||
itemsTemplate,
|
itemsTemplate,
|
||||||
@ -107,7 +111,9 @@ define([
|
|||||||
"depends": [
|
"depends": [
|
||||||
"$scope",
|
"$scope",
|
||||||
"agentService",
|
"agentService",
|
||||||
"$window"
|
"$window",
|
||||||
|
"$location",
|
||||||
|
"$attrs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -134,7 +140,16 @@ define([
|
|||||||
"$scope",
|
"$scope",
|
||||||
"agentService",
|
"agentService",
|
||||||
"$window",
|
"$window",
|
||||||
"navigationService"
|
"navigationService",
|
||||||
|
"$location",
|
||||||
|
"$attrs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ObjectHeaderController",
|
||||||
|
"implementation": ObjectHeaderController,
|
||||||
|
"depends": [
|
||||||
|
"$scope"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -169,6 +184,13 @@ define([
|
|||||||
"type"
|
"type"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "object-header-frame",
|
||||||
|
"template": objectHeaderFrameTemplate,
|
||||||
|
"uses": [
|
||||||
|
"type"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "menu-arrow",
|
"key": "menu-arrow",
|
||||||
"template": menuArrowTemplate,
|
"template": menuArrowTemplate,
|
||||||
|
@ -24,9 +24,9 @@
|
|||||||
<mct-include key="'topbar-browse'"></mct-include>
|
<mct-include key="'topbar-browse'"></mct-include>
|
||||||
<div class="abs holder holder-main browse-area s-browse-area browse-wrapper"
|
<div class="abs holder holder-main browse-area s-browse-area browse-wrapper"
|
||||||
ng-controller="PaneController as modelPaneTree"
|
ng-controller="PaneController as modelPaneTree"
|
||||||
ng-class="modelPaneTree.visible() ? 'pane-tree-showing' : 'pane-tree-hidden'">
|
ng-class="modelPaneTree.visible() ? 'pane-tree-showing' : 'pane-tree-hidden'" hide-parameter="hideTree">
|
||||||
<mct-split-pane class='abs contents'
|
<mct-split-pane class='abs contents'
|
||||||
anchor='left'>
|
anchor='left' alias="leftSide">
|
||||||
<div class='split-pane-component treeview pane left'>
|
<div class='split-pane-component treeview pane left'>
|
||||||
<div class="abs holder l-flex-col holder-treeview-elements">
|
<div class="abs holder l-flex-col holder-treeview-elements">
|
||||||
<mct-representation key="'create-button'"
|
<mct-representation key="'create-button'"
|
||||||
@ -58,9 +58,10 @@
|
|||||||
|
|
||||||
<div class='holder holder-object-and-inspector abs' id='content-area'
|
<div class='holder holder-object-and-inspector abs' id='content-area'
|
||||||
ng-controller="InspectorPaneController as modelPaneInspect"
|
ng-controller="InspectorPaneController as modelPaneInspect"
|
||||||
ng-class="modelPaneInspect.visible() ? 'pane-inspect-showing' : 'pane-inspect-hidden'">
|
ng-class="modelPaneInspect.visible() ? 'pane-inspect-showing' : 'pane-inspect-hidden'"
|
||||||
|
hide-parameter="hideInspector">
|
||||||
|
|
||||||
<mct-split-pane class='l-object-and-inspector contents abs' anchor='right'>
|
<mct-split-pane class='l-object-and-inspector contents abs' anchor='right' alias="rightSide">
|
||||||
<div class='split-pane-component t-object pane primary-pane left'>
|
<div class='split-pane-component t-object pane primary-pane left'>
|
||||||
<mct-representation mct-object="navigatedObject"
|
<mct-representation mct-object="navigatedObject"
|
||||||
key="navigatedObject.getCapability('status').get('editing') ? 'edit-object' : 'browse-object'"
|
key="navigatedObject.getCapability('status').get('editing') ? 'edit-object' : 'browse-object'"
|
||||||
@ -87,4 +88,3 @@
|
|||||||
</div>
|
</div>
|
||||||
<mct-include key="'bottombar'"></mct-include>
|
<mct-include key="'bottombar'"></mct-include>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
<!--
|
||||||
|
Open MCT, Copyright (c) 2014-2017, 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.
|
||||||
|
-->
|
||||||
|
<span class='type-icon flex-elem {{type.getCssClass()}}'></span>
|
||||||
|
<span class="l-elem-wrapper l-flex-row flex-elem grows" ng-controller="ObjectHeaderController as controller">
|
||||||
|
<span ng-if="parameters.mode" class='action flex-elem'>{{parameters.mode}}</span>
|
||||||
|
<span class='title-label flex-elem holder flex-can-shrink s-input-inline'>{{model.name}}</span>
|
||||||
|
<span class='t-object-alert t-alert-unsynced flex-elem holder' title='This object is not currently displaying real-time data'></span>
|
||||||
|
<mct-representation
|
||||||
|
key="'menu-arrow'"
|
||||||
|
mct-object='domainObject'
|
||||||
|
class="flex-elem context-available-w"></mct-representation>
|
||||||
|
</span>
|
@ -20,16 +20,16 @@
|
|||||||
at runtime from the About dialog for additional information.
|
at runtime from the About dialog for additional information.
|
||||||
-->
|
-->
|
||||||
<span class='type-icon flex-elem {{type.getCssClass()}}'></span>
|
<span class='type-icon flex-elem {{type.getCssClass()}}'></span>
|
||||||
<span class="l-elem-wrapper l-flex-row flex-elem grows">
|
<span class="l-elem-wrapper l-flex-row flex-elem grows" ng-controller="ObjectHeaderController as controller">
|
||||||
<span ng-if="parameters.mode" class='action flex-elem'>{{parameters.mode}}</span>
|
<span ng-if="parameters.mode" class='action flex-elem'>{{parameters.mode}}</span>
|
||||||
<span class='title-label flex-elem holder flex-can-shrink'>{{model.name}}</span>
|
<span ng-attr-contenteditable="{{ controller.editable ? true : undefined }}"
|
||||||
|
class='title-label flex-elem holder flex-can-shrink s-input-inline'
|
||||||
|
ng-click="controller.edit()"
|
||||||
|
ng-blur="controller.updateName($event)"
|
||||||
|
ng-keypress="controller.updateName($event)">{{model.name}}</span>
|
||||||
<span class='t-object-alert t-alert-unsynced flex-elem holder' title='This object is not currently displaying real-time data'></span>
|
<span class='t-object-alert t-alert-unsynced flex-elem holder' title='This object is not currently displaying real-time data'></span>
|
||||||
<mct-representation
|
<mct-representation
|
||||||
key="'menu-arrow'"
|
key="'menu-arrow'"
|
||||||
mct-object='domainObject'
|
mct-object='domainObject'
|
||||||
class="flex-elem context-available-w"></mct-representation>
|
class="flex-elem context-available-w"></mct-representation>
|
||||||
</span>
|
</span>
|
||||||
<a class="s-button icon-expand t-btn-view-large"
|
|
||||||
title="View large"
|
|
||||||
mct-trigger-modal>
|
|
||||||
</a>
|
|
||||||
|
@ -25,8 +25,8 @@
|
|||||||
* @namespace platform/commonUI/browse
|
* @namespace platform/commonUI/browse
|
||||||
*/
|
*/
|
||||||
define(
|
define(
|
||||||
[],
|
['lodash'],
|
||||||
function () {
|
function (_) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The BrowseController is used to populate the initial scope in Browse
|
* The BrowseController is used to populate the initial scope in Browse
|
||||||
@ -157,12 +157,28 @@ define(
|
|||||||
// (e.g. bookmarks to pages in OpenMCT) and prevent them. Instead,
|
// (e.g. bookmarks to pages in OpenMCT) and prevent them. Instead,
|
||||||
// navigate to the path ourselves, which results in it being
|
// navigate to the path ourselves, which results in it being
|
||||||
// properly set.
|
// properly set.
|
||||||
$scope.$on('$routeChangeStart', function (event, route) {
|
$scope.$on('$routeChangeStart', function (event, route, oldRoute) {
|
||||||
if (route.$$route === $route.current.$$route) {
|
if (route.$$route === $route.current.$$route) {
|
||||||
if (route.pathParams.ids &&
|
if (route.pathParams.ids &&
|
||||||
route.pathParams.ids !== $route.current.pathParams.ids) {
|
route.pathParams.ids !== $route.current.pathParams.ids) {
|
||||||
|
|
||||||
|
var otherParams = _.omit(route.params, 'ids');
|
||||||
|
var oldOtherParams = _.omit(oldRoute.params, 'ids');
|
||||||
|
var deletedParams = _.omit(oldOtherParams, _.keys(otherParams));
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
navigateToPath(route.pathParams.ids.split('/'));
|
|
||||||
|
navigateToPath(route.pathParams.ids.split('/'))
|
||||||
|
.then(function () {
|
||||||
|
if (!_.isEqual(otherParams, oldOtherParams)) {
|
||||||
|
_.forEach(otherParams, function (v, k) {
|
||||||
|
$location.search(k, v);
|
||||||
|
});
|
||||||
|
_.forEach(deletedParams, function (k) {
|
||||||
|
$location.search(k, null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
navigateToPath([]);
|
navigateToPath([]);
|
||||||
}
|
}
|
||||||
|
@ -35,9 +35,8 @@ define(
|
|||||||
* @param navigationService
|
* @param navigationService
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
function InspectorPaneController($scope, agentService, $window, navigationService) {
|
function InspectorPaneController($scope, agentService, $window, navigationService, $location, $attrs) {
|
||||||
PaneController.call(this, $scope, agentService, $window);
|
PaneController.call(this, $scope, agentService, $window, $location, $attrs);
|
||||||
|
|
||||||
var statusListener,
|
var statusListener,
|
||||||
self = this;
|
self = this;
|
||||||
|
|
||||||
|
92
platform/commonUI/browse/src/ObjectHeaderController.js
Normal file
92
platform/commonUI/browse/src/ObjectHeaderController.js
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2017, 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(
|
||||||
|
[],
|
||||||
|
function () {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controller to provide the ability to inline edit an object name.
|
||||||
|
*
|
||||||
|
* @constructor
|
||||||
|
* @memberof platform/commonUI/browse
|
||||||
|
*/
|
||||||
|
function ObjectHeaderController($scope) {
|
||||||
|
this.$scope = $scope;
|
||||||
|
this.domainObject = $scope.domainObject;
|
||||||
|
this.editable = this.allowEdit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the object name on blur and enter keypress events.
|
||||||
|
*
|
||||||
|
* @param event the mouse event
|
||||||
|
*/
|
||||||
|
ObjectHeaderController.prototype.updateName = function (event) {
|
||||||
|
if (!event || !event.currentTarget) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.type === 'blur') {
|
||||||
|
this.updateModel(event);
|
||||||
|
} else if (event.which === 13) {
|
||||||
|
this.updateModel(event);
|
||||||
|
event.currentTarget.blur();
|
||||||
|
window.getSelection().removeAllRanges();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the model.
|
||||||
|
*
|
||||||
|
* @param event the mouse event
|
||||||
|
* @param private
|
||||||
|
*/
|
||||||
|
ObjectHeaderController.prototype.updateModel = function (event) {
|
||||||
|
var name = event.currentTarget.textContent.replace(/\n/g, ' ');
|
||||||
|
|
||||||
|
if (name.length === 0) {
|
||||||
|
name = "Unnamed " + this.domainObject.getCapability("type").typeDef.name;
|
||||||
|
event.currentTarget.textContent = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (name !== this.domainObject.getModel().name) {
|
||||||
|
this.domainObject.getCapability('mutation').mutate(function (model) {
|
||||||
|
model.name = name;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the domain object is editable.
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @return true if object is editable
|
||||||
|
*/
|
||||||
|
ObjectHeaderController.prototype.allowEdit = function () {
|
||||||
|
var type = this.domainObject && this.domainObject.getCapability('type');
|
||||||
|
return !!(type && type.hasFeature('creation'));
|
||||||
|
};
|
||||||
|
|
||||||
|
return ObjectHeaderController;
|
||||||
|
}
|
||||||
|
);
|
@ -31,12 +31,17 @@ define(
|
|||||||
* @constructor
|
* @constructor
|
||||||
* @memberof platform/commonUI/browse
|
* @memberof platform/commonUI/browse
|
||||||
*/
|
*/
|
||||||
function PaneController($scope, agentService, $window) {
|
function PaneController($scope, agentService, $window, $location, $attrs) {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.agentService = agentService;
|
this.agentService = agentService;
|
||||||
|
var hideParameterPresent = $location.search().hasOwnProperty($attrs.hideParameter);
|
||||||
|
|
||||||
// Fast and cheap: if this has been opened in a new window, hide panes by default
|
if ($attrs.hideParameter && hideParameterPresent) {
|
||||||
this.state = !$window.opener;
|
this.state = false;
|
||||||
|
$location.search($attrs.hideParameter, undefined);
|
||||||
|
} else {
|
||||||
|
this.state = true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback to invoke when any selection occurs in the tree.
|
* Callback to invoke when any selection occurs in the tree.
|
||||||
@ -70,7 +75,7 @@ define(
|
|||||||
* @returns {boolean} true when visible
|
* @returns {boolean} true when visible
|
||||||
*/
|
*/
|
||||||
PaneController.prototype.visible = function () {
|
PaneController.prototype.visible = function () {
|
||||||
return this.state;
|
return !!this.state;
|
||||||
};
|
};
|
||||||
|
|
||||||
return PaneController;
|
return PaneController;
|
||||||
|
@ -38,6 +38,7 @@ define(
|
|||||||
|
|
||||||
this.urlService = urlService;
|
this.urlService = urlService;
|
||||||
this.open = function () {
|
this.open = function () {
|
||||||
|
arguments[0] += "&hideTree=true&hideInspector=true";
|
||||||
$window.open.apply($window, arguments);
|
$window.open.apply($window, arguments);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -33,7 +33,9 @@ define(
|
|||||||
mockNavigationService,
|
mockNavigationService,
|
||||||
mockNavigationUnlistener,
|
mockNavigationUnlistener,
|
||||||
mockStatusUnlistener,
|
mockStatusUnlistener,
|
||||||
controller;
|
controller,
|
||||||
|
mockLocation,
|
||||||
|
mockAttrs;
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
mockScope = jasmine.createSpyObj("$scope", ["$on"]);
|
mockScope = jasmine.createSpyObj("$scope", ["$on"]);
|
||||||
@ -71,7 +73,12 @@ define(
|
|||||||
mockDomainObject.hasCapability.andReturn(true);
|
mockDomainObject.hasCapability.andReturn(true);
|
||||||
mockDomainObject.getCapability.andReturn(mockStatusCapability);
|
mockDomainObject.getCapability.andReturn(mockStatusCapability);
|
||||||
|
|
||||||
controller = new InspectorPaneController(mockScope, mockAgentService, mockWindow, mockNavigationService);
|
mockLocation = jasmine.createSpyObj('location', ['search']);
|
||||||
|
mockLocation.search.andReturn({});
|
||||||
|
|
||||||
|
mockAttrs = {};
|
||||||
|
|
||||||
|
controller = new InspectorPaneController(mockScope, mockAgentService, mockWindow, mockNavigationService, mockLocation, mockAttrs);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("listens for changes to navigation and attaches a status" +
|
it("listens for changes to navigation and attaches a status" +
|
||||||
|
137
platform/commonUI/browse/test/ObjectHeaderControllerSpec.js
Normal file
137
platform/commonUI/browse/test/ObjectHeaderControllerSpec.js
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2017, 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/ObjectHeaderController"],
|
||||||
|
function (ObjectHeaderController) {
|
||||||
|
|
||||||
|
describe("The object header controller", function () {
|
||||||
|
var mockScope,
|
||||||
|
mockDomainObject,
|
||||||
|
mockCapabilities,
|
||||||
|
mockMutationCapability,
|
||||||
|
mockTypeCapability,
|
||||||
|
mockEvent,
|
||||||
|
mockCurrentTarget,
|
||||||
|
model,
|
||||||
|
controller;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
mockMutationCapability = jasmine.createSpyObj("mutation", ["mutate"]);
|
||||||
|
mockTypeCapability = jasmine.createSpyObj("type", ["typeDef", "hasFeature"]);
|
||||||
|
mockTypeCapability.typeDef = { name: ""};
|
||||||
|
mockTypeCapability.hasFeature.andCallFake(function (feature) {
|
||||||
|
return feature === 'creation';
|
||||||
|
});
|
||||||
|
|
||||||
|
mockCapabilities = {
|
||||||
|
mutation: mockMutationCapability,
|
||||||
|
type: mockTypeCapability
|
||||||
|
};
|
||||||
|
|
||||||
|
model = {
|
||||||
|
name: "Test name"
|
||||||
|
};
|
||||||
|
mockDomainObject = jasmine.createSpyObj("domainObject", ["getCapability", "getModel"]);
|
||||||
|
mockDomainObject.getModel.andReturn(model);
|
||||||
|
mockDomainObject.getCapability.andCallFake(function (key) {
|
||||||
|
return mockCapabilities[key];
|
||||||
|
});
|
||||||
|
|
||||||
|
mockScope = {
|
||||||
|
domainObject: mockDomainObject
|
||||||
|
};
|
||||||
|
|
||||||
|
mockCurrentTarget = jasmine.createSpyObj("currentTarget", ["blur", "textContent"]);
|
||||||
|
mockCurrentTarget.blur.andReturn(mockCurrentTarget);
|
||||||
|
|
||||||
|
mockEvent = {
|
||||||
|
which: {},
|
||||||
|
type: {},
|
||||||
|
currentTarget: mockCurrentTarget
|
||||||
|
};
|
||||||
|
|
||||||
|
controller = new ObjectHeaderController(mockScope);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("updates the model with new name on blur", function () {
|
||||||
|
mockEvent.type = "blur";
|
||||||
|
mockCurrentTarget.textContent = "New name";
|
||||||
|
controller.updateName(mockEvent);
|
||||||
|
|
||||||
|
expect(mockMutationCapability.mutate).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("updates the model with a default for blank names", function () {
|
||||||
|
mockEvent.type = "blur";
|
||||||
|
mockCurrentTarget.textContent = "";
|
||||||
|
controller.updateName(mockEvent);
|
||||||
|
|
||||||
|
expect(mockCurrentTarget.textContent.length).not.toEqual(0);
|
||||||
|
expect(mockMutationCapability.mutate).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not update the model if the same name", function () {
|
||||||
|
mockEvent.type = "blur";
|
||||||
|
mockCurrentTarget.textContent = mockDomainObject.getModel().name;
|
||||||
|
controller.updateName(mockEvent);
|
||||||
|
|
||||||
|
expect(mockMutationCapability.mutate).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("updates the model on enter keypress event only", function () {
|
||||||
|
mockCurrentTarget.textContent = "New name";
|
||||||
|
controller.updateName(mockEvent);
|
||||||
|
|
||||||
|
expect(mockMutationCapability.mutate).not.toHaveBeenCalled();
|
||||||
|
|
||||||
|
mockEvent.which = 13;
|
||||||
|
controller.updateName(mockEvent);
|
||||||
|
|
||||||
|
expect(mockMutationCapability.mutate).toHaveBeenCalledWith(jasmine.any(Function));
|
||||||
|
|
||||||
|
mockMutationCapability.mutate.mostRecentCall.args[0](model);
|
||||||
|
|
||||||
|
expect(mockDomainObject.getModel().name).toBe("New name");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("blurs the field on enter key press", function () {
|
||||||
|
mockCurrentTarget.textContent = "New name";
|
||||||
|
mockEvent.which = 13;
|
||||||
|
controller.updateName(mockEvent);
|
||||||
|
|
||||||
|
expect(mockEvent.currentTarget.blur).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("allows editting name when object is creatable", function () {
|
||||||
|
expect(controller.allowEdit()).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("disallows editting name when object is non-creatable", function () {
|
||||||
|
mockTypeCapability.hasFeature.andReturn(false);
|
||||||
|
|
||||||
|
expect(controller.allowEdit()).toBe(false);
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
@ -29,7 +29,9 @@ define(
|
|||||||
mockAgentService,
|
mockAgentService,
|
||||||
mockDomainObjects,
|
mockDomainObjects,
|
||||||
mockWindow,
|
mockWindow,
|
||||||
controller;
|
controller,
|
||||||
|
mockLocation,
|
||||||
|
mockAttrs;
|
||||||
|
|
||||||
// We want to reinstantiate for each test case
|
// We want to reinstantiate for each test case
|
||||||
// because device state can influence constructor-time behavior
|
// because device state can influence constructor-time behavior
|
||||||
@ -37,7 +39,9 @@ define(
|
|||||||
return new PaneController(
|
return new PaneController(
|
||||||
mockScope,
|
mockScope,
|
||||||
mockAgentService,
|
mockAgentService,
|
||||||
mockWindow
|
mockWindow,
|
||||||
|
mockLocation,
|
||||||
|
mockAttrs
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,6 +63,11 @@ define(
|
|||||||
["isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape"]
|
["isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape"]
|
||||||
);
|
);
|
||||||
mockWindow = jasmine.createSpyObj("$window", ["open"]);
|
mockWindow = jasmine.createSpyObj("$window", ["open"]);
|
||||||
|
|
||||||
|
mockLocation = jasmine.createSpyObj('location', ['search']);
|
||||||
|
mockLocation.search.andReturn({});
|
||||||
|
|
||||||
|
mockAttrs = {};
|
||||||
});
|
});
|
||||||
|
|
||||||
it("is initially visible", function () {
|
it("is initially visible", function () {
|
||||||
@ -86,6 +95,24 @@ define(
|
|||||||
// Tree should have collapsed
|
// Tree should have collapsed
|
||||||
expect(controller.visible()).toBeFalsy();
|
expect(controller.visible()).toBeFalsy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("specifying hideParameter", function () {
|
||||||
|
beforeEach(function () {
|
||||||
|
mockAttrs = {hideParameter: 'hideTree'};
|
||||||
|
});
|
||||||
|
|
||||||
|
it("sets pane state to false when in location.search", function () {
|
||||||
|
mockLocation.search.andReturn({'hideTree': true});
|
||||||
|
expect(instantiateController().visible()).toBe(false);
|
||||||
|
expect(mockLocation.search).toHaveBeenCalledWith('hideTree', undefined);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("sets state to true when not found in location.search", function () {
|
||||||
|
mockLocation.search.andReturn({});
|
||||||
|
expect(instantiateController().visible()).toBe(true);
|
||||||
|
expect(mockLocation.search).not.toHaveBeenCalledWith('hideTree', undefined);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<div class="s-menu-button major create-button" ng-click="createController.toggle()">
|
<div class="s-menu-button major create-button" ng-click="createController.toggle()">
|
||||||
<span class="title-label">Create</span>
|
<span class="title-label">Create</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="menu super-menu" ng-show="createController.isActive()">
|
<div class="menu super-menu l-create-menu" ng-show="createController.isActive()">
|
||||||
<mct-representation mct-object="domainObject" key="'create-menu'">
|
<mct-representation mct-object="domainObject" key="'create-menu'">
|
||||||
</mct-representation>
|
</mct-representation>
|
||||||
</div>
|
</div>
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
this source code distribution or the Licensing information page available
|
this source code distribution or the Licensing information page available
|
||||||
at runtime from the About dialog for additional information.
|
at runtime from the About dialog for additional information.
|
||||||
-->
|
-->
|
||||||
<div class="contents" ng-controller="CreateMenuController">
|
<div class="w-menu" ng-controller="CreateMenuController">
|
||||||
<div class="pane left menu-items">
|
<div class="col menu-items">
|
||||||
<ul>
|
<ul>
|
||||||
<li ng-repeat="createAction in createActions" ng-click="createAction.perform()">
|
<li ng-repeat="createAction in createActions" ng-click="createAction.perform()">
|
||||||
<a ng-mouseover="representation.activeMetadata = createAction.getMetadata()"
|
<a ng-mouseover="representation.activeMetadata = createAction.getMetadata()"
|
||||||
@ -31,13 +31,15 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="pane right menu-item-description">
|
<div class="col menu-item-description">
|
||||||
<div class="desc-area icon {{ representation.activeMetadata.cssClass }}"></div>
|
<div class="desc-area icon {{ representation.activeMetadata.cssClass }}"></div>
|
||||||
<div class="desc-area title">
|
<div class="w-title-desc">
|
||||||
{{representation.activeMetadata.name}}
|
<div class="desc-area title">
|
||||||
</div>
|
{{representation.activeMetadata.name}}
|
||||||
<div class="desc-area description">
|
</div>
|
||||||
{{representation.activeMetadata.description}}
|
<div class="desc-area description">
|
||||||
|
{{representation.activeMetadata.description}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -121,6 +121,9 @@ define([
|
|||||||
};
|
};
|
||||||
|
|
||||||
UTCTimeFormat.prototype.parse = function (text) {
|
UTCTimeFormat.prototype.parse = function (text) {
|
||||||
|
if (typeof text === 'number') {
|
||||||
|
return text;
|
||||||
|
}
|
||||||
return moment.utc(text, DATE_FORMATS).valueOf();
|
return moment.utc(text, DATE_FORMATS).valueOf();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -374,7 +374,8 @@ define([
|
|||||||
"depends": [
|
"depends": [
|
||||||
"$parse",
|
"$parse",
|
||||||
"$log",
|
"$log",
|
||||||
"$interval"
|
"$interval",
|
||||||
|
"$window"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1,207 +1,144 @@
|
|||||||
{
|
{
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"name": "openmct-symbols-12px",
|
"name": "openmct-symbols-12px",
|
||||||
"lastOpened": 1467322505818,
|
"lastOpened": 0,
|
||||||
"created": 1467322503679
|
"created": 1502213994889
|
||||||
},
|
},
|
||||||
"iconSets": [
|
"iconSets": [
|
||||||
{
|
{
|
||||||
"selection": [
|
"selection": [
|
||||||
{
|
{
|
||||||
"order": 4,
|
"order": 9,
|
||||||
"id": 2,
|
"id": 6,
|
||||||
"prevSize": 12,
|
"name": "icon12-crosshair",
|
||||||
"code": 59671,
|
"prevSize": 12,
|
||||||
"name": "icon12-eye-open",
|
"code": 59696,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 7,
|
"order": 6,
|
||||||
"id": 5,
|
"id": 3,
|
||||||
"prevSize": 12,
|
"prevSize": 12,
|
||||||
"code": 921607,
|
"code": 921865,
|
||||||
"name": "icon12-pane-collapse-left",
|
"name": "icon12-folder",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
}
|
||||||
{
|
],
|
||||||
"order": 8,
|
"id": 0,
|
||||||
"id": 4,
|
"metadata": {
|
||||||
"prevSize": 12,
|
"name": "openmct-symbols-12px",
|
||||||
"code": 921608,
|
"importSize": {
|
||||||
"name": "icon12-pane-collapse-right",
|
"width": 384,
|
||||||
"tempChar": ""
|
"height": 384
|
||||||
},
|
},
|
||||||
{
|
"designer": "Charles Hacskaylo"
|
||||||
"order": 6,
|
},
|
||||||
"id": 3,
|
"height": 1024,
|
||||||
"prevSize": 12,
|
"prevSize": 12,
|
||||||
"code": 921865,
|
"icons": [
|
||||||
"name": "icon12-folder",
|
{
|
||||||
"tempChar": ""
|
"id": 6,
|
||||||
}
|
"paths": [
|
||||||
],
|
"M597.333 0h-170.667v256h170.667v-256z",
|
||||||
"id": 0,
|
"M1024 426.667h-256v170.667h256v-170.667z",
|
||||||
"metadata": {
|
"M597.333 768h-170.667v256h170.667v-256z",
|
||||||
"name": "openmct-symbols-12px",
|
"M256 426.667h-256v170.667h256v-170.667z"
|
||||||
"importSize": {
|
],
|
||||||
"width": 320,
|
"attrs": [
|
||||||
"height": 384
|
{},
|
||||||
},
|
{},
|
||||||
"designer": "Charles Hacskaylo"
|
{},
|
||||||
},
|
{}
|
||||||
"height": 1024,
|
],
|
||||||
"prevSize": 12,
|
"isMulticolor": false,
|
||||||
"icons": [
|
"isMulticolor2": false,
|
||||||
{
|
"grid": 0,
|
||||||
"id": 2,
|
"tags": [
|
||||||
"paths": [
|
"icon12-crosshair"
|
||||||
"M512 86c-257.92 0-471.28 185.147-506.667 426 35.493 240.853 248.853 426 506.667 426s471.28-185.147 506.667-426c-35.387-240.853-248.747-426-506.667-426zM738.373 685.2c-131.048 109.517-321.699 109.517-452.747 0-53.328-44.749-90.832-105.477-106.96-173.2 16.101-67.707 53.565-128.435 106.853-173.2 131.048-109.517 321.699-109.517 452.747 0 53.368 44.733 90.909 105.464 107.067 173.2-16.128 67.723-53.632 128.451-106.96 173.2z",
|
],
|
||||||
"M682.667 512c0 94.257-76.41 170.667-170.667 170.667s-170.667-76.41-170.667-170.667c0-94.257 76.41-170.667 170.667-170.667s170.667 76.41 170.667 170.667z"
|
"colorPermutations": {
|
||||||
],
|
"1161751": [
|
||||||
"attrs": [],
|
{},
|
||||||
"isMulticolor": false,
|
{},
|
||||||
"grid": 0,
|
{},
|
||||||
"tags": [
|
{}
|
||||||
"icon12-eye-open"
|
]
|
||||||
],
|
}
|
||||||
"colorPermutations": {
|
},
|
||||||
"1161751": [
|
{
|
||||||
{
|
"id": 3,
|
||||||
"f": 0
|
"paths": [
|
||||||
},
|
"M938.667 170.667h-341.333l-110.32-110.32c-33.2-33.2-98.667-60.347-145.68-60.347h-256c-47.073 0.136-85.197 38.26-85.333 85.32l-0 341.346c0.136-47.073 38.26-85.197 85.32-85.333l853.346-0c47.073 0.136 85.197 38.26 85.333 85.32l0-170.654c-0.136-47.073-38.26-85.197-85.32-85.333z",
|
||||||
{
|
"M85.333 426.667h853.333c47.128 0 85.333 38.205 85.333 85.333v426.667c0 47.128-38.205 85.333-85.333 85.333h-853.333c-47.128 0-85.333-38.205-85.333-85.333v-426.667c0-47.128 38.205-85.333 85.333-85.333z"
|
||||||
"f": 0
|
],
|
||||||
}
|
"attrs": [],
|
||||||
]
|
"isMulticolor": false,
|
||||||
}
|
"grid": 0,
|
||||||
},
|
"tags": [
|
||||||
{
|
"icon12-folder"
|
||||||
"id": 5,
|
],
|
||||||
"paths": [
|
"colorPermutations": {
|
||||||
"M0 0h170.667v1024h-170.667v-1024z",
|
"1161751": [
|
||||||
"M853.333 256h-256v-256l-341.333 426.667 341.333 426.667v-256h256v-341.333z"
|
{
|
||||||
],
|
"f": 0
|
||||||
"attrs": [
|
},
|
||||||
{
|
{
|
||||||
"opacity": 1
|
"f": 0
|
||||||
},
|
}
|
||||||
{
|
]
|
||||||
"opacity": 1
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"isMulticolor": false,
|
"invisible": false,
|
||||||
"width": 853,
|
"colorThemes": [
|
||||||
"grid": 0,
|
[
|
||||||
"tags": [
|
[
|
||||||
"icon12-pane-collapse-left"
|
0,
|
||||||
],
|
0,
|
||||||
"colorPermutations": {
|
0,
|
||||||
"1161751": [
|
1
|
||||||
{},
|
],
|
||||||
{}
|
[
|
||||||
]
|
0,
|
||||||
}
|
161,
|
||||||
},
|
75,
|
||||||
{
|
1
|
||||||
"id": 4,
|
]
|
||||||
"paths": [
|
]
|
||||||
"M682.667 0h170.667v1024h-170.667v-1024z",
|
],
|
||||||
"M0 256h256v-256l341.333 426.667-341.333 426.667v-256h-256v-341.333z"
|
"colorThemeIdx": 0
|
||||||
],
|
}
|
||||||
"attrs": [
|
],
|
||||||
{
|
"preferences": {
|
||||||
"opacity": 1
|
"showGlyphs": true,
|
||||||
},
|
"showCodes": true,
|
||||||
{
|
"showQuickUse": true,
|
||||||
"opacity": 1
|
"showQuickUse2": true,
|
||||||
}
|
"showSVGs": true,
|
||||||
],
|
"fontPref": {
|
||||||
"isMulticolor": false,
|
"prefix": "icon-",
|
||||||
"width": 853,
|
"metadata": {
|
||||||
"grid": 0,
|
"fontFamily": "openmct-symbols-12px",
|
||||||
"tags": [
|
"majorVersion": 1,
|
||||||
"icon12-pane-collapse-right"
|
"minorVersion": 0
|
||||||
],
|
},
|
||||||
"colorPermutations": {
|
"metrics": {
|
||||||
"1161751": [
|
"emSize": 1024,
|
||||||
{},
|
"baseline": 6.25,
|
||||||
{}
|
"whitespace": 50
|
||||||
]
|
},
|
||||||
}
|
"embed": false
|
||||||
},
|
},
|
||||||
{
|
"imagePref": {
|
||||||
"id": 3,
|
"prefix": "icon-",
|
||||||
"paths": [
|
"png": true,
|
||||||
"M938.667 170.667h-341.333l-110.32-110.32c-33.2-33.2-98.667-60.347-145.68-60.347h-256c-47.073 0.136-85.197 38.26-85.333 85.32l-0 341.346c0.136-47.073 38.26-85.197 85.32-85.333l853.346-0c47.073 0.136 85.197 38.26 85.333 85.32l0-170.654c-0.136-47.073-38.26-85.197-85.32-85.333z",
|
"useClassSelector": true,
|
||||||
"M85.333 426.667h853.333c47.128 0 85.333 38.205 85.333 85.333v426.667c0 47.128-38.205 85.333-85.333 85.333h-853.333c-47.128 0-85.333-38.205-85.333-85.333v-426.667c0-47.128 38.205-85.333 85.333-85.333z"
|
"color": 0,
|
||||||
],
|
"bgColor": 16777215
|
||||||
"attrs": [],
|
},
|
||||||
"isMulticolor": false,
|
"historySize": 100,
|
||||||
"grid": 0,
|
"gridSize": 16
|
||||||
"tags": [
|
},
|
||||||
"icon12-folder"
|
"uid": -1,
|
||||||
],
|
"time": 1502216581486
|
||||||
"colorPermutations": {
|
|
||||||
"1161751": [
|
|
||||||
{
|
|
||||||
"f": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"f": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"invisible": false,
|
|
||||||
"colorThemes": [
|
|
||||||
[
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
1
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
161,
|
|
||||||
75,
|
|
||||||
1
|
|
||||||
]
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"colorThemeIdx": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"preferences": {
|
|
||||||
"showGlyphs": true,
|
|
||||||
"showCodes": true,
|
|
||||||
"showQuickUse": true,
|
|
||||||
"showQuickUse2": true,
|
|
||||||
"showSVGs": true,
|
|
||||||
"fontPref": {
|
|
||||||
"prefix": "icon-",
|
|
||||||
"metadata": {
|
|
||||||
"fontFamily": "openmct-symbols-12px",
|
|
||||||
"majorVersion": 1,
|
|
||||||
"minorVersion": 0
|
|
||||||
},
|
|
||||||
"metrics": {
|
|
||||||
"emSize": 1024,
|
|
||||||
"baseline": 6.25,
|
|
||||||
"whitespace": 50
|
|
||||||
},
|
|
||||||
"embed": false
|
|
||||||
},
|
|
||||||
"imagePref": {
|
|
||||||
"prefix": "icon-",
|
|
||||||
"png": true,
|
|
||||||
"useClassSelector": true,
|
|
||||||
"color": 0,
|
|
||||||
"bgColor": 16777215
|
|
||||||
},
|
|
||||||
"historySize": 100,
|
|
||||||
"gridSize": 16
|
|
||||||
},
|
|
||||||
"uid": -1
|
|
||||||
}
|
}
|
@ -2,7 +2,7 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"name": "openmct-symbols-16px",
|
"name": "openmct-symbols-16px",
|
||||||
"lastOpened": 0,
|
"lastOpened": 0,
|
||||||
"created": 1497475810461
|
"created": 1506973656040
|
||||||
},
|
},
|
||||||
"iconSets": [
|
"iconSets": [
|
||||||
{
|
{
|
||||||
@ -252,13 +252,29 @@
|
|||||||
"code": 59689,
|
"code": 59689,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"order": 134,
|
||||||
|
"id": 114,
|
||||||
|
"name": "icon-crosshair",
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 59696,
|
||||||
|
"tempChar": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"order": 127,
|
||||||
|
"id": 109,
|
||||||
|
"name": "icon-grippy-v2",
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 59697,
|
||||||
|
"tempChar": ""
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"order": 48,
|
"order": 48,
|
||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"name": "icon-arrows-out",
|
"name": "icon-arrows-out",
|
||||||
"id": 43,
|
"id": 43,
|
||||||
"code": 921600,
|
"code": 921600,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 49,
|
"order": 49,
|
||||||
@ -266,7 +282,7 @@
|
|||||||
"name": "icon-arrows-right-left",
|
"name": "icon-arrows-right-left",
|
||||||
"id": 44,
|
"id": 44,
|
||||||
"code": 921601,
|
"code": 921601,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 50,
|
"order": 50,
|
||||||
@ -274,7 +290,7 @@
|
|||||||
"name": "icon-arrows-up-down",
|
"name": "icon-arrows-up-down",
|
||||||
"id": 45,
|
"id": 45,
|
||||||
"code": 921602,
|
"code": 921602,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 9,
|
"order": 9,
|
||||||
@ -282,7 +298,7 @@
|
|||||||
"name": "icon-bullet",
|
"name": "icon-bullet",
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"code": 921604,
|
"code": 921604,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 25,
|
"order": 25,
|
||||||
@ -290,7 +306,7 @@
|
|||||||
"name": "icon-calendar",
|
"name": "icon-calendar",
|
||||||
"id": 20,
|
"id": 20,
|
||||||
"code": 921605,
|
"code": 921605,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 30,
|
"order": 30,
|
||||||
@ -298,7 +314,7 @@
|
|||||||
"name": "icon-chain-links",
|
"name": "icon-chain-links",
|
||||||
"id": 25,
|
"id": 25,
|
||||||
"code": 921606,
|
"code": 921606,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 109,
|
"order": 109,
|
||||||
@ -306,7 +322,7 @@
|
|||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921607,
|
"code": 921607,
|
||||||
"name": "icon-pane-collapse-left",
|
"name": "icon-pane-collapse-left",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 110,
|
"order": 110,
|
||||||
@ -314,7 +330,7 @@
|
|||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921608,
|
"code": 921608,
|
||||||
"name": "icon-pane-collapse-right",
|
"name": "icon-pane-collapse-right",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 5,
|
"order": 5,
|
||||||
@ -322,7 +338,7 @@
|
|||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921609,
|
"code": 921609,
|
||||||
"name": "icon-download",
|
"name": "icon-download",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 60,
|
"order": 60,
|
||||||
@ -330,7 +346,7 @@
|
|||||||
"name": "icon-duplicate",
|
"name": "icon-duplicate",
|
||||||
"id": 55,
|
"id": 55,
|
||||||
"code": 921616,
|
"code": 921616,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 61,
|
"order": 61,
|
||||||
@ -338,7 +354,7 @@
|
|||||||
"name": "icon-folder-new",
|
"name": "icon-folder-new",
|
||||||
"id": 56,
|
"id": 56,
|
||||||
"code": 921617,
|
"code": 921617,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 64,
|
"order": 64,
|
||||||
@ -346,7 +362,7 @@
|
|||||||
"name": "icon-fullscreen-expand",
|
"name": "icon-fullscreen-expand",
|
||||||
"id": 59,
|
"id": 59,
|
||||||
"code": 921618,
|
"code": 921618,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 63,
|
"order": 63,
|
||||||
@ -354,7 +370,7 @@
|
|||||||
"name": "icon-fullscreen-collapse",
|
"name": "icon-fullscreen-collapse",
|
||||||
"id": 58,
|
"id": 58,
|
||||||
"code": 921619,
|
"code": 921619,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 67,
|
"order": 67,
|
||||||
@ -362,7 +378,7 @@
|
|||||||
"name": "icon-layers",
|
"name": "icon-layers",
|
||||||
"id": 62,
|
"id": 62,
|
||||||
"code": 921620,
|
"code": 921620,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 69,
|
"order": 69,
|
||||||
@ -370,7 +386,7 @@
|
|||||||
"name": "icon-line-horz",
|
"name": "icon-line-horz",
|
||||||
"id": 64,
|
"id": 64,
|
||||||
"code": 921621,
|
"code": 921621,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 73,
|
"order": 73,
|
||||||
@ -378,7 +394,7 @@
|
|||||||
"name": "icon-magnify",
|
"name": "icon-magnify",
|
||||||
"id": 68,
|
"id": 68,
|
||||||
"code": 921622,
|
"code": 921622,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 71,
|
"order": 71,
|
||||||
@ -386,7 +402,7 @@
|
|||||||
"name": "icon-magnify-in",
|
"name": "icon-magnify-in",
|
||||||
"id": 66,
|
"id": 66,
|
||||||
"code": 921623,
|
"code": 921623,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 72,
|
"order": 72,
|
||||||
@ -394,7 +410,7 @@
|
|||||||
"name": "icon-magnify-out",
|
"name": "icon-magnify-out",
|
||||||
"id": 67,
|
"id": 67,
|
||||||
"code": 921624,
|
"code": 921624,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 74,
|
"order": 74,
|
||||||
@ -402,7 +418,7 @@
|
|||||||
"name": "icon-menu",
|
"name": "icon-menu",
|
||||||
"id": 69,
|
"id": 69,
|
||||||
"code": 921625,
|
"code": 921625,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 75,
|
"order": 75,
|
||||||
@ -410,7 +426,7 @@
|
|||||||
"name": "icon-move",
|
"name": "icon-move",
|
||||||
"id": 70,
|
"id": 70,
|
||||||
"code": 921632,
|
"code": 921632,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 76,
|
"order": 76,
|
||||||
@ -418,7 +434,7 @@
|
|||||||
"name": "icon-new-window",
|
"name": "icon-new-window",
|
||||||
"id": 71,
|
"id": 71,
|
||||||
"code": 921633,
|
"code": 921633,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 26,
|
"order": 26,
|
||||||
@ -426,7 +442,7 @@
|
|||||||
"name": "icon-paint-bucket",
|
"name": "icon-paint-bucket",
|
||||||
"id": 21,
|
"id": 21,
|
||||||
"code": 921634,
|
"code": 921634,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 81,
|
"order": 81,
|
||||||
@ -434,7 +450,7 @@
|
|||||||
"name": "icon-pause",
|
"name": "icon-pause",
|
||||||
"id": 76,
|
"id": 76,
|
||||||
"code": 921635,
|
"code": 921635,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 82,
|
"order": 82,
|
||||||
@ -442,7 +458,7 @@
|
|||||||
"name": "icon-pencil",
|
"name": "icon-pencil",
|
||||||
"id": 77,
|
"id": 77,
|
||||||
"code": 921636,
|
"code": 921636,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 84,
|
"order": 84,
|
||||||
@ -450,7 +466,7 @@
|
|||||||
"name": "icon-play",
|
"name": "icon-play",
|
||||||
"id": 79,
|
"id": 79,
|
||||||
"code": 921637,
|
"code": 921637,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 85,
|
"order": 85,
|
||||||
@ -458,7 +474,7 @@
|
|||||||
"name": "icon-plot-resource",
|
"name": "icon-plot-resource",
|
||||||
"id": 80,
|
"id": 80,
|
||||||
"code": 921638,
|
"code": 921638,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 27,
|
"order": 27,
|
||||||
@ -466,7 +482,7 @@
|
|||||||
"name": "icon-pointer-left",
|
"name": "icon-pointer-left",
|
||||||
"id": 22,
|
"id": 22,
|
||||||
"code": 921639,
|
"code": 921639,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 28,
|
"order": 28,
|
||||||
@ -474,7 +490,7 @@
|
|||||||
"name": "icon-pointer-right",
|
"name": "icon-pointer-right",
|
||||||
"id": 23,
|
"id": 23,
|
||||||
"code": 921640,
|
"code": 921640,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 32,
|
"order": 32,
|
||||||
@ -482,7 +498,7 @@
|
|||||||
"name": "icon-refresh",
|
"name": "icon-refresh",
|
||||||
"id": 27,
|
"id": 27,
|
||||||
"code": 921641,
|
"code": 921641,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 16,
|
"order": 16,
|
||||||
@ -490,7 +506,7 @@
|
|||||||
"name": "icon-save",
|
"name": "icon-save",
|
||||||
"id": 11,
|
"id": 11,
|
||||||
"code": 921648,
|
"code": 921648,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 88,
|
"order": 88,
|
||||||
@ -498,7 +514,7 @@
|
|||||||
"name": "icon-sine",
|
"name": "icon-sine",
|
||||||
"id": 83,
|
"id": 83,
|
||||||
"code": 921649,
|
"code": 921649,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 102,
|
"order": 102,
|
||||||
@ -506,7 +522,7 @@
|
|||||||
"name": "icon-T",
|
"name": "icon-T",
|
||||||
"id": 84,
|
"id": 84,
|
||||||
"code": 921650,
|
"code": 921650,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 92,
|
"order": 92,
|
||||||
@ -514,7 +530,7 @@
|
|||||||
"name": "icon-thumbs-strip",
|
"name": "icon-thumbs-strip",
|
||||||
"id": 87,
|
"id": 87,
|
||||||
"code": 921651,
|
"code": 921651,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 96,
|
"order": 96,
|
||||||
@ -522,7 +538,7 @@
|
|||||||
"name": "icon-two-parts-both",
|
"name": "icon-two-parts-both",
|
||||||
"id": 91,
|
"id": 91,
|
||||||
"code": 921652,
|
"code": 921652,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 97,
|
"order": 97,
|
||||||
@ -530,7 +546,7 @@
|
|||||||
"name": "icon-two-parts-one-only",
|
"name": "icon-two-parts-one-only",
|
||||||
"id": 92,
|
"id": 92,
|
||||||
"code": 921653,
|
"code": 921653,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 21,
|
"order": 21,
|
||||||
@ -538,7 +554,7 @@
|
|||||||
"name": "icon-resync",
|
"name": "icon-resync",
|
||||||
"id": 16,
|
"id": 16,
|
||||||
"code": 921654,
|
"code": 921654,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 120,
|
"order": 120,
|
||||||
@ -546,7 +562,7 @@
|
|||||||
"name": "icon-reset",
|
"name": "icon-reset",
|
||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921655,
|
"code": 921655,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 121,
|
"order": 121,
|
||||||
@ -554,7 +570,7 @@
|
|||||||
"name": "icon-x-in-circle",
|
"name": "icon-x-in-circle",
|
||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921656,
|
"code": 921656,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 118,
|
"order": 118,
|
||||||
@ -562,7 +578,7 @@
|
|||||||
"name": "icon-brightness",
|
"name": "icon-brightness",
|
||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921657,
|
"code": 921657,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 119,
|
"order": 119,
|
||||||
@ -570,7 +586,7 @@
|
|||||||
"name": "icon-contrast",
|
"name": "icon-contrast",
|
||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921664,
|
"code": 921664,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 124,
|
"order": 124,
|
||||||
@ -578,15 +594,63 @@
|
|||||||
"name": "icon-expand",
|
"name": "icon-expand",
|
||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921665,
|
"code": 921665,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 123,
|
"order": 125,
|
||||||
"id": 107,
|
"id": 107,
|
||||||
"name": "icon-list-view",
|
"name": "icon-list-view",
|
||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921666,
|
"code": 921666,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"order": 133,
|
||||||
|
"id": 112,
|
||||||
|
"name": "icon-grid-snap-to",
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 921667,
|
||||||
|
"tempChar": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"order": 128,
|
||||||
|
"id": 113,
|
||||||
|
"name": "icon-grid-snap-no",
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 921668,
|
||||||
|
"tempChar": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"order": 131,
|
||||||
|
"id": 110,
|
||||||
|
"name": "icon-frame-show",
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 921669,
|
||||||
|
"tempChar": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"order": 130,
|
||||||
|
"id": 111,
|
||||||
|
"name": "icon-frame-hide",
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 921670,
|
||||||
|
"tempChar": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"order": 138,
|
||||||
|
"id": 115,
|
||||||
|
"name": "icon-import",
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 921671,
|
||||||
|
"tempChar": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"order": 136,
|
||||||
|
"id": 116,
|
||||||
|
"name": "icon-export",
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 921672,
|
||||||
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 37,
|
"order": 37,
|
||||||
@ -594,7 +658,7 @@
|
|||||||
"name": "icon-activity",
|
"name": "icon-activity",
|
||||||
"id": 32,
|
"id": 32,
|
||||||
"code": 921856,
|
"code": 921856,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 36,
|
"order": 36,
|
||||||
@ -602,7 +666,7 @@
|
|||||||
"name": "icon-activity-mode",
|
"name": "icon-activity-mode",
|
||||||
"id": 31,
|
"id": 31,
|
||||||
"code": 921857,
|
"code": 921857,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 52,
|
"order": 52,
|
||||||
@ -610,7 +674,7 @@
|
|||||||
"name": "icon-autoflow-tabular",
|
"name": "icon-autoflow-tabular",
|
||||||
"id": 47,
|
"id": 47,
|
||||||
"code": 921858,
|
"code": 921858,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 55,
|
"order": 55,
|
||||||
@ -618,7 +682,7 @@
|
|||||||
"name": "icon-clock",
|
"name": "icon-clock",
|
||||||
"id": 50,
|
"id": 50,
|
||||||
"code": 921859,
|
"code": 921859,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 58,
|
"order": 58,
|
||||||
@ -626,7 +690,7 @@
|
|||||||
"name": "icon-database",
|
"name": "icon-database",
|
||||||
"id": 53,
|
"id": 53,
|
||||||
"code": 921860,
|
"code": 921860,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 57,
|
"order": 57,
|
||||||
@ -634,7 +698,7 @@
|
|||||||
"name": "icon-database-query",
|
"name": "icon-database-query",
|
||||||
"id": 52,
|
"id": 52,
|
||||||
"code": 921861,
|
"code": 921861,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 17,
|
"order": 17,
|
||||||
@ -642,7 +706,7 @@
|
|||||||
"name": "icon-dataset",
|
"name": "icon-dataset",
|
||||||
"id": 12,
|
"id": 12,
|
||||||
"code": 921862,
|
"code": 921862,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 22,
|
"order": 22,
|
||||||
@ -650,7 +714,7 @@
|
|||||||
"name": "icon-datatable",
|
"name": "icon-datatable",
|
||||||
"id": 17,
|
"id": 17,
|
||||||
"code": 921863,
|
"code": 921863,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 59,
|
"order": 59,
|
||||||
@ -658,7 +722,7 @@
|
|||||||
"name": "icon-dictionary",
|
"name": "icon-dictionary",
|
||||||
"id": 54,
|
"id": 54,
|
||||||
"code": 921864,
|
"code": 921864,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 62,
|
"order": 62,
|
||||||
@ -666,7 +730,7 @@
|
|||||||
"name": "icon-folder",
|
"name": "icon-folder",
|
||||||
"id": 57,
|
"id": 57,
|
||||||
"code": 921865,
|
"code": 921865,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 66,
|
"order": 66,
|
||||||
@ -674,7 +738,7 @@
|
|||||||
"name": "icon-image",
|
"name": "icon-image",
|
||||||
"id": 61,
|
"id": 61,
|
||||||
"code": 921872,
|
"code": 921872,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 68,
|
"order": 68,
|
||||||
@ -682,7 +746,7 @@
|
|||||||
"name": "icon-layout",
|
"name": "icon-layout",
|
||||||
"id": 63,
|
"id": 63,
|
||||||
"code": 921873,
|
"code": 921873,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 77,
|
"order": 77,
|
||||||
@ -690,7 +754,7 @@
|
|||||||
"name": "icon-object",
|
"name": "icon-object",
|
||||||
"id": 72,
|
"id": 72,
|
||||||
"code": 921874,
|
"code": 921874,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 78,
|
"order": 78,
|
||||||
@ -698,7 +762,7 @@
|
|||||||
"name": "icon-object-unknown",
|
"name": "icon-object-unknown",
|
||||||
"id": 73,
|
"id": 73,
|
||||||
"code": 921875,
|
"code": 921875,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 79,
|
"order": 79,
|
||||||
@ -706,7 +770,7 @@
|
|||||||
"name": "icon-packet",
|
"name": "icon-packet",
|
||||||
"id": 74,
|
"id": 74,
|
||||||
"code": 921876,
|
"code": 921876,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 80,
|
"order": 80,
|
||||||
@ -714,15 +778,15 @@
|
|||||||
"name": "icon-page",
|
"name": "icon-page",
|
||||||
"id": 75,
|
"id": 75,
|
||||||
"code": 921877,
|
"code": 921877,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 114,
|
"order": 135,
|
||||||
"id": 99,
|
"id": 99,
|
||||||
"name": "icon-plot-overlay",
|
"name": "icon-plot-overlay",
|
||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921878,
|
"code": 921878,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 113,
|
"order": 113,
|
||||||
@ -730,7 +794,7 @@
|
|||||||
"name": "icon-plot-stacked",
|
"name": "icon-plot-stacked",
|
||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921879,
|
"code": 921879,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 10,
|
"order": 10,
|
||||||
@ -738,7 +802,7 @@
|
|||||||
"name": "icon-session",
|
"name": "icon-session",
|
||||||
"id": 5,
|
"id": 5,
|
||||||
"code": 921880,
|
"code": 921880,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 24,
|
"order": 24,
|
||||||
@ -746,7 +810,7 @@
|
|||||||
"name": "icon-tabular",
|
"name": "icon-tabular",
|
||||||
"id": 19,
|
"id": 19,
|
||||||
"code": 921881,
|
"code": 921881,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 7,
|
"order": 7,
|
||||||
@ -754,7 +818,7 @@
|
|||||||
"name": "icon-tabular-lad",
|
"name": "icon-tabular-lad",
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"code": 921888,
|
"code": 921888,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 6,
|
"order": 6,
|
||||||
@ -762,7 +826,7 @@
|
|||||||
"name": "icon-tabular-lad-set",
|
"name": "icon-tabular-lad-set",
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"code": 921889,
|
"code": 921889,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 8,
|
"order": 8,
|
||||||
@ -770,7 +834,7 @@
|
|||||||
"name": "icon-tabular-realtime",
|
"name": "icon-tabular-realtime",
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"code": 921890,
|
"code": 921890,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 23,
|
"order": 23,
|
||||||
@ -778,7 +842,7 @@
|
|||||||
"name": "icon-tabular-scrolling",
|
"name": "icon-tabular-scrolling",
|
||||||
"id": 18,
|
"id": 18,
|
||||||
"code": 921891,
|
"code": 921891,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 112,
|
"order": 112,
|
||||||
@ -786,7 +850,7 @@
|
|||||||
"name": "icon-telemetry",
|
"name": "icon-telemetry",
|
||||||
"id": 86,
|
"id": 86,
|
||||||
"code": 921892,
|
"code": 921892,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 90,
|
"order": 90,
|
||||||
@ -794,7 +858,7 @@
|
|||||||
"name": "icon-telemetry-panel",
|
"name": "icon-telemetry-panel",
|
||||||
"id": 85,
|
"id": 85,
|
||||||
"code": 921893,
|
"code": 921893,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 93,
|
"order": 93,
|
||||||
@ -802,7 +866,7 @@
|
|||||||
"name": "icon-timeline",
|
"name": "icon-timeline",
|
||||||
"id": 88,
|
"id": 88,
|
||||||
"code": 921894,
|
"code": 921894,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 116,
|
"order": 116,
|
||||||
@ -810,7 +874,7 @@
|
|||||||
"name": "icon-timer-v1.5",
|
"name": "icon-timer-v1.5",
|
||||||
"prevSize": 24,
|
"prevSize": 24,
|
||||||
"code": 921895,
|
"code": 921895,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 11,
|
"order": 11,
|
||||||
@ -818,7 +882,7 @@
|
|||||||
"name": "icon-topic",
|
"name": "icon-topic",
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"code": 921896,
|
"code": 921896,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 115,
|
"order": 115,
|
||||||
@ -826,7 +890,23 @@
|
|||||||
"name": "icon-box-with-dashed-lines",
|
"name": "icon-box-with-dashed-lines",
|
||||||
"id": 29,
|
"id": 29,
|
||||||
"code": 921897,
|
"code": 921897,
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"order": 126,
|
||||||
|
"id": 108,
|
||||||
|
"name": "icon-summary-widget",
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 921904,
|
||||||
|
"tempChar": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"order": 139,
|
||||||
|
"id": 117,
|
||||||
|
"name": "icon-notebook",
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 921905,
|
||||||
|
"tempChar": ""
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
@ -1473,6 +1553,92 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": 114,
|
||||||
|
"paths": [
|
||||||
|
"M574-2h-128v320h128v-320z",
|
||||||
|
"M1022 446h-320v128h320v-128z",
|
||||||
|
"M574 702h-128v320h128v-320z",
|
||||||
|
"M318 446h-320v128h320v-128z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"isMulticolor2": false,
|
||||||
|
"grid": 16,
|
||||||
|
"tags": [
|
||||||
|
"icon-crosshair"
|
||||||
|
],
|
||||||
|
"colorPermutations": {
|
||||||
|
"1161751207457516161751": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 109,
|
||||||
|
"paths": [
|
||||||
|
"M146.4 182.8c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M146.4 402.2c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M146.4 621.8c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M146.4 841.2c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M365.8 73.2c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M365.8 292.6c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M365.8 512c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M365.8 731.4c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M365.8 950.8c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M585.2 182.8c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M585.2 402.2c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M585.2 621.8c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z",
|
||||||
|
"M585.2 841.2c0 40.427-32.773 73.2-73.2 73.2s-73.2-32.773-73.2-73.2c0-40.427 32.773-73.2 73.2-73.2s73.2 32.773 73.2 73.2z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"width": 586,
|
||||||
|
"isMulticolor": false,
|
||||||
|
"isMulticolor2": false,
|
||||||
|
"grid": 16,
|
||||||
|
"tags": [
|
||||||
|
"icon-grippy-v2"
|
||||||
|
],
|
||||||
|
"colorPermutations": {
|
||||||
|
"1161751207457516161751": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"paths": [
|
"paths": [
|
||||||
"M0 512l256 256v-512z",
|
"M0 512l256 256v-512z",
|
||||||
@ -2416,6 +2582,177 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": 112,
|
||||||
|
"paths": [
|
||||||
|
"M382 830h448v-448h-448v448zM510 510h192v192h-192v-192z",
|
||||||
|
"M-2 574h320v64h-320v-64z",
|
||||||
|
"M894 574h128v64h-128v-64z",
|
||||||
|
"M574-2h64v320h-64v-320z",
|
||||||
|
"M574 894h64v128h-64v-128z",
|
||||||
|
"M574 574h64v64h-64v-64z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"grid": 16,
|
||||||
|
"tags": [
|
||||||
|
"icon-grid-snap-to"
|
||||||
|
],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"isMulticolor2": false,
|
||||||
|
"colorPermutations": {
|
||||||
|
"1161751207457516161751": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 113,
|
||||||
|
"paths": [
|
||||||
|
"M768 576h192v64h-192v-64z",
|
||||||
|
"M256 576h192v64h-192v-64z",
|
||||||
|
"M0 576h192v64h-192v-64z",
|
||||||
|
"M640 512h-64v64h-64v64h64v64h64v-64h64v-64h-64z",
|
||||||
|
"M576 256h64v192h-64v-192z",
|
||||||
|
"M576 0h64v192h-64v-192z",
|
||||||
|
"M576 768h64v192h-64v-192z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"isMulticolor2": false,
|
||||||
|
"grid": 16,
|
||||||
|
"tags": [
|
||||||
|
"icon-grid-snap-no"
|
||||||
|
],
|
||||||
|
"colorPermutations": {
|
||||||
|
"1161751207457516161751": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 110,
|
||||||
|
"paths": [
|
||||||
|
"M0 64v896h1024v-896h-1024zM896 832h-768v-640h768v640z",
|
||||||
|
"M192 256h384v128h-384v-128z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"grid": 16,
|
||||||
|
"tags": [
|
||||||
|
"icon-frame-show"
|
||||||
|
],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"isMulticolor2": false,
|
||||||
|
"colorPermutations": {
|
||||||
|
"1161751207457516161751": [
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 111,
|
||||||
|
"paths": [
|
||||||
|
"M128 190h420l104-128h-652v802.4l128-157.4z",
|
||||||
|
"M896 830h-420l-104 128h652v-802.4l-128 157.4z",
|
||||||
|
"M832-2l-832 1024h192l832-1024z",
|
||||||
|
"M392 382l104-128h-304v128z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"grid": 16,
|
||||||
|
"tags": [
|
||||||
|
"icon-frame-hide"
|
||||||
|
],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"isMulticolor2": false,
|
||||||
|
"colorPermutations": {
|
||||||
|
"1161751207457516161751": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 115,
|
||||||
|
"paths": [
|
||||||
|
"M832 192.4v639.4c0 0.2-0.2 0.2-0.4 0.4h-319.6v192h320c105.6 0 192-86.4 192-192v-640.2c0-105.6-86.4-192-192-192h-320v192h319.6c0.2 0 0.4 0.2 0.4 0.4z",
|
||||||
|
"M192 704v192l384-384-384-384v192h-192v384z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"grid": 16,
|
||||||
|
"tags": [
|
||||||
|
"icon-import"
|
||||||
|
],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"isMulticolor2": false,
|
||||||
|
"colorPermutations": {
|
||||||
|
"1161751207457516161751": [
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 116,
|
||||||
|
"paths": [
|
||||||
|
"M192 831.66v-639.32l0.34-0.34h319.66v-192h-320c-105.6 0-192 86.4-192 192v640c0 105.6 86.4 192 192 192h320v-192h-319.66z",
|
||||||
|
"M1024 512l-384-384v192h-192v384h192v192l384-384z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"isMulticolor2": false,
|
||||||
|
"grid": 16,
|
||||||
|
"tags": [
|
||||||
|
"icon-export"
|
||||||
|
],
|
||||||
|
"colorPermutations": {
|
||||||
|
"1161751207457516161751": [
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"paths": [
|
"paths": [
|
||||||
"M576 64h-256l320 320h-290.256c-44.264-76.516-126.99-128-221.744-128h-128v512h128c94.754 0 177.48-51.484 221.744-128h290.256l-320 320h256l448-448-448-448z"
|
"M576 64h-256l320 320h-290.256c-44.264-76.516-126.99-128-221.744-128h-128v512h128c94.754 0 177.48-51.484 221.744-128h290.256l-320 320h256l448-448-448-448z"
|
||||||
@ -3175,6 +3512,49 @@
|
|||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 108,
|
||||||
|
"paths": [
|
||||||
|
"M896 0h-768c-70.4 0-128 57.6-128 128v768c0 70.4 57.6 128 128 128h768c70.4 0 128-57.6 128-128v-768c0-70.4-57.6-128-128-128zM847.8 610.4l-82.6 143.2-189.6-131.6 19.2 230h-165.4l19.2-230-189.6 131.6-82.6-143.2 208.6-98.4-208.8-98.4 82.6-143.2 189.6 131.6-19.2-230h165.4l-19.2 230 189.6-131.6 82.6 143.2-208.6 98.4 208.8 98.4z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"isMulticolor2": false,
|
||||||
|
"grid": 16,
|
||||||
|
"tags": [
|
||||||
|
"icon-summary-widget"
|
||||||
|
],
|
||||||
|
"colorPermutations": {
|
||||||
|
"1161751207457516161751": [
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 117,
|
||||||
|
"paths": [
|
||||||
|
"M896 110.8c0-79.8-55.4-127.4-123-105.4l-773 250.6h896v-145.2z",
|
||||||
|
"M896 320h-896v576c0 70.4 57.6 128 128 128h768c70.4 0 128-57.6 128-128v-448c0-70.4-57.6-128-128-128zM832 832h-384v-320h384v320z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"isMulticolor2": false,
|
||||||
|
"grid": 16,
|
||||||
|
"tags": [
|
||||||
|
"icon-notebook"
|
||||||
|
],
|
||||||
|
"colorPermutations": {
|
||||||
|
"1161751207457516161751": [
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"colorThemes": [
|
"colorThemes": [
|
||||||
|
Binary file not shown.
@ -7,8 +7,6 @@
|
|||||||
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||||
<missing-glyph horiz-adv-x="1024" />
|
<missing-glyph horiz-adv-x="1024" />
|
||||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||||
<glyph unicode="" glyph-name="icon12-eye-open" d="M512 852.667c-257.92 0-471.28-185.147-506.667-426 35.493-240.853 248.853-426 506.667-426s471.28 185.147 506.667 426c-35.387 240.853-248.747 426-506.667 426zM738.373 253.467c-131.048-109.517-321.699-109.517-452.747 0-53.328 44.749-90.832 105.477-106.96 173.2 16.101 67.707 53.565 128.435 106.853 173.2 131.048 109.517 321.699 109.517 452.747 0 53.368-44.733 90.909-105.464 107.067-173.2-16.128-67.723-53.632-128.451-106.96-173.2zM682.667 426.667c0-94.257-76.41-170.667-170.667-170.667s-170.667 76.41-170.667 170.667c0 94.257 76.41 170.667 170.667 170.667s170.667-76.41 170.667-170.667z" />
|
<glyph unicode="" glyph-name="icon12-crosshair" d="M597.333 938.667h-170.667v-256h170.667v256zM1024 512h-256v-170.667h256v170.667zM597.333 170.667h-170.667v-256h170.667v256zM256 512h-256v-170.667h256v170.667z" />
|
||||||
<glyph unicode="󡀇" glyph-name="icon12-pane-collapse-left" horiz-adv-x="853" d="M0 938.667h170.667v-1024h-170.667v1024zM853.333 682.667h-256v256l-341.333-426.667 341.333-426.667v256h256v341.333z" />
|
|
||||||
<glyph unicode="󡀈" glyph-name="icon12-pane-collapse-right" horiz-adv-x="853" d="M682.667 938.667h170.667v-1024h-170.667v1024zM0 682.667h256v256l341.333-426.667-341.333-426.667v256h-256v341.333z" />
|
|
||||||
<glyph unicode="󡄉" glyph-name="icon12-folder" d="M938.667 768h-341.333l-110.32 110.32c-33.2 33.2-98.667 60.347-145.68 60.347h-256c-47.073-0.136-85.197-38.26-85.333-85.32v-341.346c0.136 47.073 38.26 85.197 85.32 85.333h853.346c47.073-0.136 85.197-38.26 85.333-85.32v170.654c-0.136 47.073-38.26 85.197-85.32 85.333zM85.333 512h853.333c47.128 0 85.333-38.205 85.333-85.333v-426.667c0-47.128-38.205-85.333-85.333-85.333h-853.333c-47.128 0-85.333 38.205-85.333 85.333v426.667c0 47.128 38.205 85.333 85.333 85.333z" />
|
<glyph unicode="󡄉" glyph-name="icon12-folder" d="M938.667 768h-341.333l-110.32 110.32c-33.2 33.2-98.667 60.347-145.68 60.347h-256c-47.073-0.136-85.197-38.26-85.333-85.32v-341.346c0.136 47.073 38.26 85.197 85.32 85.333h853.346c47.073-0.136 85.197-38.26 85.333-85.32v170.654c-0.136 47.073-38.26 85.197-85.32 85.333zM85.333 512h853.333c47.128 0 85.333-38.205 85.333-85.333v-426.667c0-47.128-38.205-85.333-85.333-85.333h-853.333c-47.128 0-85.333 38.205-85.333 85.333v426.667c0 47.128 38.205 85.333 85.333 85.333z" />
|
||||||
</font></defs></svg>
|
</font></defs></svg>
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -37,6 +37,8 @@
|
|||||||
<glyph unicode="" glyph-name="icon-trash" d="M832 832h-192.36v64c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-64h-191.64c-105.6 0-192-72-192-160s0-160 0-160h64v-384c0-105.6 86.4-192 192-192h512c105.6 0 192 86.4 192 192v384h64c0 0 0 72 0 160s-86.4 160-192 160zM320 128h-128v384h128v-384zM576 128h-128v384h128v-384zM832 128h-128v384h128v-384z" />
|
<glyph unicode="" glyph-name="icon-trash" d="M832 832h-192.36v64c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-64h-191.64c-105.6 0-192-72-192-160s0-160 0-160h64v-384c0-105.6 86.4-192 192-192h512c105.6 0 192 86.4 192 192v384h64c0 0 0 72 0 160s-86.4 160-192 160zM320 128h-128v384h128v-384zM576 128h-128v384h128v-384zM832 128h-128v384h128v-384z" />
|
||||||
<glyph unicode="" glyph-name="icon-x" d="M384 448l-365.332-365.332c-24.89-24.89-24.89-65.62 0-90.51l37.49-37.49c24.89-24.89 65.62-24.89 90.51 0 0 0 365.332 365.332 365.332 365.332l365.332-365.332c24.89-24.89 65.62-24.89 90.51 0l37.49 37.49c24.89 24.89 24.89 65.62 0 90.51l-365.332 365.332c0 0 365.332 365.332 365.332 365.332 24.89 24.89 24.89 65.62 0 90.51l-37.49 37.49c-24.89 24.89-65.62 24.89-90.51 0 0 0-365.332-365.332-365.332-365.332l-365.332 365.332c-24.89 24.89-65.62 24.89-90.51 0l-37.49-37.49c-24.89-24.89-24.89-65.62 0-90.51 0 0 365.332-365.332 365.332-365.332z" />
|
<glyph unicode="" glyph-name="icon-x" d="M384 448l-365.332-365.332c-24.89-24.89-24.89-65.62 0-90.51l37.49-37.49c24.89-24.89 65.62-24.89 90.51 0 0 0 365.332 365.332 365.332 365.332l365.332-365.332c24.89-24.89 65.62-24.89 90.51 0l37.49 37.49c24.89 24.89 24.89 65.62 0 90.51l-365.332 365.332c0 0 365.332 365.332 365.332 365.332 24.89 24.89 24.89 65.62 0 90.51l-37.49 37.49c-24.89 24.89-65.62 24.89-90.51 0 0 0-365.332-365.332-365.332-365.332l-365.332 365.332c-24.89 24.89-65.62 24.89-90.51 0l-37.49-37.49c-24.89-24.89-24.89-65.62 0-90.51 0 0 365.332-365.332 365.332-365.332z" />
|
||||||
<glyph unicode="" glyph-name="icon-brackets" d="M832 960h-192v-192h191.66l0.34-0.34v-639.32l-0.34-0.34h-191.66v-192h192c105.6 0 192 86.4 192 192v640c0 105.6-86.4 192-192 192zM384 128h-191.66l-0.34 0.34v639.32l0.34 0.34h191.66v192h-192c-105.6 0-192-86.4-192-192v-640c0-105.6 86.4-192 192-192h192v192z" />
|
<glyph unicode="" glyph-name="icon-brackets" d="M832 960h-192v-192h191.66l0.34-0.34v-639.32l-0.34-0.34h-191.66v-192h192c105.6 0 192 86.4 192 192v640c0 105.6-86.4 192-192 192zM384 128h-191.66l-0.34 0.34v639.32l0.34 0.34h191.66v192h-192c-105.6 0-192-86.4-192-192v-640c0-105.6 86.4-192 192-192h192v192z" />
|
||||||
|
<glyph unicode="" glyph-name="icon-crosshair" d="M574 962h-128v-320h128v320zM1022 514h-320v-128h320v128zM574 258h-128v-320h128v320zM318 514h-320v-128h320v128z" />
|
||||||
|
<glyph unicode="" glyph-name="icon-grippy-v2" horiz-adv-x="586" d="M146.4 777.2c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM146.4 557.8c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM146.4 338.2c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM146.4 118.8c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM365.8 886.8c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM365.8 667.4c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM365.8 448c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM365.8 228.6c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM365.8 9.2c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM585.2 777.2c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM585.2 557.8c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM585.2 338.2c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2zM585.2 118.8c0-40.427-32.773-73.2-73.2-73.2s-73.2 32.773-73.2 73.2c0 40.427 32.773 73.2 73.2 73.2s73.2-32.773 73.2-73.2z" />
|
||||||
<glyph unicode="󡀀" glyph-name="icon-arrows-out" d="M0 448l256-256v512zM512 960l-256-256h512zM512-64l256 256h-512zM768 704v-512l256 256z" />
|
<glyph unicode="󡀀" glyph-name="icon-arrows-out" d="M0 448l256-256v512zM512 960l-256-256h512zM512-64l256 256h-512zM768 704v-512l256 256z" />
|
||||||
<glyph unicode="󡀁" glyph-name="icon-arrows-right-left" d="M1024 448l-448-512v1024zM448 960l-448-512 448-512z" />
|
<glyph unicode="󡀁" glyph-name="icon-arrows-right-left" d="M1024 448l-448-512v1024zM448 960l-448-512 448-512z" />
|
||||||
<glyph unicode="󡀂" glyph-name="icon-arrows-up-down" d="M512 960l512-448h-1024zM0 384l512-448 512 448z" />
|
<glyph unicode="󡀂" glyph-name="icon-arrows-up-down" d="M512 960l512-448h-1024zM0 384l512-448 512 448z" />
|
||||||
@ -79,6 +81,12 @@
|
|||||||
<glyph unicode="󡁀" glyph-name="icon-contrast" d="M512 960c-282.78 0-512-229.24-512-512s229.22-512 512-512 512 229.24 512 512-229.22 512-512 512zM783.52 176.48c-69.111-69.481-164.785-112.481-270.502-112.481-0.358 0-0.716 0-1.074 0.001l0.055 768c212.070-0.010 383.982-171.929 383.982-384 0-106.034-42.977-202.031-112.462-271.52z" />
|
<glyph unicode="󡁀" glyph-name="icon-contrast" d="M512 960c-282.78 0-512-229.24-512-512s229.22-512 512-512 512 229.24 512 512-229.22 512-512 512zM783.52 176.48c-69.111-69.481-164.785-112.481-270.502-112.481-0.358 0-0.716 0-1.074 0.001l0.055 768c212.070-0.010 383.982-171.929 383.982-384 0-106.034-42.977-202.031-112.462-271.52z" />
|
||||||
<glyph unicode="󡁁" glyph-name="icon-expand" d="M960 960c0 0 0 0 0 0h-320v-128h165.4l-210.6-210.8c-25-25-25-65.6 0-90.6 12.4-12.4 28.8-18.8 45.2-18.8s32.8 6.2 45.2 18.8l210.8 210.8v-165.4h128v384h-64zM896 154.6l-210.8 210.6c-25 25-65.6 25-90.6 0s-25-65.6 0-90.6l210.8-210.6h-165.4v-128h384v384h-128v-165.4zM218.6 832h165.4v128h-320c0 0 0 0 0 0h-64v-384h128v165.4l210.8-210.8c12.4-12.4 28.8-18.8 45.2-18.8s32.8 6.2 45.2 18.8c25 25 25 65.6 0 90.6l-210.6 210.8zM338.8 365.2l-210.8-210.6v165.4h-128v-384h384v128h-165.4l210.8 210.8c25 25 25 65.6 0 90.6-25.2 24.8-65.6 24.8-90.6-0.2z" />
|
<glyph unicode="󡁁" glyph-name="icon-expand" d="M960 960c0 0 0 0 0 0h-320v-128h165.4l-210.6-210.8c-25-25-25-65.6 0-90.6 12.4-12.4 28.8-18.8 45.2-18.8s32.8 6.2 45.2 18.8l210.8 210.8v-165.4h128v384h-64zM896 154.6l-210.8 210.6c-25 25-65.6 25-90.6 0s-25-65.6 0-90.6l210.8-210.6h-165.4v-128h384v384h-128v-165.4zM218.6 832h165.4v128h-320c0 0 0 0 0 0h-64v-384h128v165.4l210.8-210.8c12.4-12.4 28.8-18.8 45.2-18.8s32.8 6.2 45.2 18.8c25 25 25 65.6 0 90.6l-210.6 210.8zM338.8 365.2l-210.8-210.6v165.4h-128v-384h384v128h-165.4l210.8 210.8c25 25 25 65.6 0 90.6-25.2 24.8-65.6 24.8-90.6-0.2z" />
|
||||||
<glyph unicode="󡁂" glyph-name="icon-list-view" d="M0 896h1024v-128h-1024v128zM0 640h1024v-128h-1024v128zM0 384h1024v-128h-1024v128zM0 128h1024v-128h-1024v128z" />
|
<glyph unicode="󡁂" glyph-name="icon-list-view" d="M0 896h1024v-128h-1024v128zM0 640h1024v-128h-1024v128zM0 384h1024v-128h-1024v128zM0 128h1024v-128h-1024v128z" />
|
||||||
|
<glyph unicode="󡁃" glyph-name="icon-grid-snap-to" d="M382 130h448v448h-448v-448zM510 450h192v-192h-192v192zM-2 386h320v-64h-320v64zM894 386h128v-64h-128v64zM574 962h64v-320h-64v320zM574 66h64v-128h-64v128zM574 386h64v-64h-64v64z" />
|
||||||
|
<glyph unicode="󡁄" glyph-name="icon-grid-snap-no" d="M768 384h192v-64h-192v64zM256 384h192v-64h-192v64zM0 384h192v-64h-192v64zM640 448h-64v-64h-64v-64h64v-64h64v64h64v64h-64zM576 704h64v-192h-64v192zM576 960h64v-192h-64v192zM576 192h64v-192h-64v192z" />
|
||||||
|
<glyph unicode="󡁅" glyph-name="icon-frame-show" d="M0 896v-896h1024v896h-1024zM896 128h-768v640h768v-640zM192 704h384v-128h-384v128z" />
|
||||||
|
<glyph unicode="󡁆" glyph-name="icon-frame-hide" d="M128 770h420l104 128h-652v-802.4l128 157.4zM896 130h-420l-104-128h652v802.4l-128-157.4zM832 962l-832-1024h192l832 1024zM392 578l104 128h-304v-128z" />
|
||||||
|
<glyph unicode="󡁇" glyph-name="icon-import" d="M832 767.6v-639.4c0-0.2-0.2-0.2-0.4-0.4h-319.6v-192h320c105.6 0 192 86.4 192 192v640.2c0 105.6-86.4 192-192 192h-320v-192h319.6c0.2 0 0.4-0.2 0.4-0.4zM192 256v-192l384 384-384 384v-192h-192v-384z" />
|
||||||
|
<glyph unicode="󡁈" glyph-name="icon-export" d="M192 128.34v639.32l0.34 0.34h319.66v192h-320c-105.6 0-192-86.4-192-192v-640c0-105.6 86.4-192 192-192h320v192h-319.66zM1024 448l-384 384v-192h-192v-384h192v-192l384 384z" />
|
||||||
<glyph unicode="󡄀" glyph-name="icon-activity" d="M576 896h-256l320-320h-290.256c-44.264 76.516-126.99 128-221.744 128h-128v-512h128c94.754 0 177.48 51.484 221.744 128h290.256l-320-320h256l448 448-448 448z" />
|
<glyph unicode="󡄀" glyph-name="icon-activity" d="M576 896h-256l320-320h-290.256c-44.264 76.516-126.99 128-221.744 128h-128v-512h128c94.754 0 177.48 51.484 221.744 128h290.256l-320-320h256l448 448-448 448z" />
|
||||||
<glyph unicode="󡄁" glyph-name="icon-activity-mode" d="M512 960c-214.866 0-398.786-132.372-474.744-320h90.744c56.86 0 107.938-24.724 143.094-64h240.906l-192 192h256l320-320-320-320h-256l192 192h-240.906c-35.156-39.276-86.234-64-143.094-64h-90.744c75.958-187.628 259.878-320 474.744-320 282.77 0 512 229.23 512 512s-229.23 512-512 512z" />
|
<glyph unicode="󡄁" glyph-name="icon-activity-mode" d="M512 960c-214.866 0-398.786-132.372-474.744-320h90.744c56.86 0 107.938-24.724 143.094-64h240.906l-192 192h256l320-320-320-320h-256l192 192h-240.906c-35.156-39.276-86.234-64-143.094-64h-90.744c75.958-187.628 259.878-320 474.744-320 282.77 0 512 229.23 512 512s-229.23 512-512 512z" />
|
||||||
<glyph unicode="󡄂" glyph-name="icon-autoflow-tabular" d="M192 960c-105.6 0-192-86.4-192-192v-640c0-105.6 86.4-192 192-192h64v1024h-64zM384 960h256v-1024h-256v1024zM832 960h-64v-704h256v512c0 105.6-86.4 192-192 192z" />
|
<glyph unicode="󡄂" glyph-name="icon-autoflow-tabular" d="M192 960c-105.6 0-192-86.4-192-192v-640c0-105.6 86.4-192 192-192h64v1024h-64zM384 960h256v-1024h-256v1024zM832 960h-64v-704h256v512c0 105.6-86.4 192-192 192z" />
|
||||||
@ -109,4 +117,6 @@
|
|||||||
<glyph unicode="󡄧" glyph-name="icon-timer-v1.5" horiz-adv-x="896" d="M576 813.4v82.58c0 35.346-28.654 64-64 64h-128c-35.346 0-64-28.654-64-64v-82.58c-185.040-55.080-320-226.48-320-429.42 0-247.42 200.58-448 448-448s448 200.58 448 448c0 202.96-135 374.4-320 429.42zM468 363.98l-263.76-211c-57.105 59.935-92.24 141.251-92.24 230.772 0 0.080 0 0.16 0 0.24 0 185.268 150.72 335.988 336 335.988 6.72 0 13.38-0.22 20-0.62v-355.38z" />
|
<glyph unicode="󡄧" glyph-name="icon-timer-v1.5" horiz-adv-x="896" d="M576 813.4v82.58c0 35.346-28.654 64-64 64h-128c-35.346 0-64-28.654-64-64v-82.58c-185.040-55.080-320-226.48-320-429.42 0-247.42 200.58-448 448-448s448 200.58 448 448c0 202.96-135 374.4-320 429.42zM468 363.98l-263.76-211c-57.105 59.935-92.24 141.251-92.24 230.772 0 0.080 0 0.16 0 0.24 0 185.268 150.72 335.988 336 335.988 6.72 0 13.38-0.22 20-0.62v-355.38z" />
|
||||||
<glyph unicode="󡄨" glyph-name="icon-topic" d="M454.36 483.36l86.3 86.3c9.088 8.965 21.577 14.502 35.36 14.502s26.272-5.537 35.366-14.507l86.294-86.294c19.328-19.358 42.832-34.541 69.047-44.082l1.313 171.722-57.64 57.64c-34.407 34.33-81.9 55.558-134.35 55.558s-99.943-21.228-134.354-55.562l-86.296-86.297c-9.088-8.965-21.577-14.502-35.36-14.502s-26.272 5.537-35.366 14.507l-28.674 28.654v-172.14c19.045-7.022 41.040-11.084 63.984-11.084 52.463 0 99.966 21.239 134.379 55.587zM505.64 412.64l-86.3-86.3c-9.088-8.965-21.577-14.502-35.36-14.502s-26.272 5.537-35.366 14.507l-86.294 86.294c-2 2-4.2 4-6.36 6v-197.36c33.664-30.72 78.65-49.537 128.031-49.537 52.44 0 99.923 21.22 134.333 55.541l86.296 86.296c9.088 8.965 21.577 14.502 35.36 14.502s26.272-5.537 35.366-14.507l86.294-86.294c2-2 4.2-4 6.36-6v197.36c-33.664 30.72-78.65 49.537-128.031 49.537-52.44 0-99.923-21.22-134.333-55.541zM832 960h-128v-192h127.66l0.34-0.34v-639.32l-0.34-0.34h-127.66v-192h128c105.6 0 192 86.4 192 192v640c0 105.6-86.4 192-192 192zM320 128h-127.66l-0.34 0.34v639.32l0.34 0.34h127.66v192h-128c-105.6 0-192-86.4-192-192v-640c0-105.6 86.4-192 192-192h128v192z" />
|
<glyph unicode="󡄨" glyph-name="icon-topic" d="M454.36 483.36l86.3 86.3c9.088 8.965 21.577 14.502 35.36 14.502s26.272-5.537 35.366-14.507l86.294-86.294c19.328-19.358 42.832-34.541 69.047-44.082l1.313 171.722-57.64 57.64c-34.407 34.33-81.9 55.558-134.35 55.558s-99.943-21.228-134.354-55.562l-86.296-86.297c-9.088-8.965-21.577-14.502-35.36-14.502s-26.272 5.537-35.366 14.507l-28.674 28.654v-172.14c19.045-7.022 41.040-11.084 63.984-11.084 52.463 0 99.966 21.239 134.379 55.587zM505.64 412.64l-86.3-86.3c-9.088-8.965-21.577-14.502-35.36-14.502s-26.272 5.537-35.366 14.507l-86.294 86.294c-2 2-4.2 4-6.36 6v-197.36c33.664-30.72 78.65-49.537 128.031-49.537 52.44 0 99.923 21.22 134.333 55.541l86.296 86.296c9.088 8.965 21.577 14.502 35.36 14.502s26.272-5.537 35.366-14.507l86.294-86.294c2-2 4.2-4 6.36-6v197.36c-33.664 30.72-78.65 49.537-128.031 49.537-52.44 0-99.923-21.22-134.333-55.541zM832 960h-128v-192h127.66l0.34-0.34v-639.32l-0.34-0.34h-127.66v-192h128c105.6 0 192 86.4 192 192v640c0 105.6-86.4 192-192 192zM320 128h-127.66l-0.34 0.34v639.32l0.34 0.34h127.66v192h-128c-105.6 0-192-86.4-192-192v-640c0-105.6 86.4-192 192-192h128v192z" />
|
||||||
<glyph unicode="󡄩" glyph-name="icon-box-with-dashed-lines" d="M0 576h128v-256h-128v256zM128 831.78l0.22 0.22h191.78v128h-192c-70.606-0.215-127.785-57.394-128-127.979v-192.021h128v191.78zM128 64.22v191.78h-128v-192c0.215-70.606 57.394-127.785 127.979-128h192.021v128h-191.78zM384 960h256v-128h-256v128zM896 64.22l-0.22-0.22h-191.78v-128h192c70.606 0.215 127.785 57.394 128 127.979v192.021h-128v-191.78zM896 960h-192v-128h191.78l0.22-0.22v-191.78h128v192c-0.215 70.606-57.394 127.785-127.979 128zM896 576h128v-256h-128v256zM384 64h256v-128h-256v128zM256 704h512v-512h-512v512z" />
|
<glyph unicode="󡄩" glyph-name="icon-box-with-dashed-lines" d="M0 576h128v-256h-128v256zM128 831.78l0.22 0.22h191.78v128h-192c-70.606-0.215-127.785-57.394-128-127.979v-192.021h128v191.78zM128 64.22v191.78h-128v-192c0.215-70.606 57.394-127.785 127.979-128h192.021v128h-191.78zM384 960h256v-128h-256v128zM896 64.22l-0.22-0.22h-191.78v-128h192c70.606 0.215 127.785 57.394 128 127.979v192.021h-128v-191.78zM896 960h-192v-128h191.78l0.22-0.22v-191.78h128v192c-0.215 70.606-57.394 127.785-127.979 128zM896 576h128v-256h-128v256zM384 64h256v-128h-256v128zM256 704h512v-512h-512v512z" />
|
||||||
|
<glyph unicode="󡄰" glyph-name="icon-summary-widget" d="M896 960h-768c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128zM847.8 349.6l-82.6-143.2-189.6 131.6 19.2-230h-165.4l19.2 230-189.6-131.6-82.6 143.2 208.6 98.4-208.8 98.4 82.6 143.2 189.6-131.6-19.2 230h165.4l-19.2-230 189.6 131.6 82.6-143.2-208.6-98.4 208.8-98.4z" />
|
||||||
|
<glyph unicode="󡄱" glyph-name="icon-notebook" d="M896 849.2c0 79.8-55.4 127.4-123 105.4l-773-250.6h896v145.2zM896 640h-896v-576c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v448c0 70.4-57.6 128-128 128zM832 128h-384v320h384v-320z" />
|
||||||
</font></defs></svg>
|
</font></defs></svg>
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 44 KiB |
Binary file not shown.
Binary file not shown.
@ -21,7 +21,7 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
/********************************************* COLUMN LAYOUTS STYLES */
|
/********************************************* COLUMN LAYOUTS STYLES */
|
||||||
/*@mixin cols($totalCols, $span) {
|
@mixin cols($totalCols, $span) {
|
||||||
$cw: 100% / $totalCols;
|
$cw: 100% / $totalCols;
|
||||||
min-width: (500px / $totalCols) * $span;
|
min-width: (500px / $totalCols) * $span;
|
||||||
@if ($totalCols != $span) {
|
@if ($totalCols != $span) {
|
||||||
@ -89,7 +89,7 @@
|
|||||||
@include clearfix;
|
@include clearfix;
|
||||||
padding: $interiorMargin 0;
|
padding: $interiorMargin 0;
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
|
|
||||||
/********************************************* FLEX STYLES */
|
/********************************************* FLEX STYLES */
|
||||||
.l-flex-row,
|
.l-flex-row,
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
/************************** FEATURES */
|
/************************** FEATURES */
|
||||||
$enableImageryThumbs: false; // Set to true if historical imagery thumbnails are supported
|
$enableImageryThumbs: true; // Set to true if historical imagery thumbnails are supported
|
||||||
|
|
||||||
/************************** VERY INFLUENTIAL GLOBAL DIMENSIONS */
|
/************************** VERY INFLUENTIAL GLOBAL DIMENSIONS */
|
||||||
$bodyMargin: 10px;
|
$bodyMargin: 10px;
|
||||||
@ -82,7 +82,7 @@ $tabularTdPadTB: 2px;
|
|||||||
/*************** Imagery */
|
/*************** Imagery */
|
||||||
$imageMainControlBarH: 25px;
|
$imageMainControlBarH: 25px;
|
||||||
$imageThumbsD: 120px;
|
$imageThumbsD: 120px;
|
||||||
$imageThumbsWrapperH: $imageThumbsD * 1.4;
|
$imageThumbsWrapperH: 155px;
|
||||||
$imageThumbPad: 1px;
|
$imageThumbPad: 1px;
|
||||||
/*************** Ticks */
|
/*************** Ticks */
|
||||||
$ticksH: 25px;
|
$ticksH: 25px;
|
||||||
@ -99,7 +99,7 @@ $plotXBarH: 32px;
|
|||||||
$plotLegendH: 20px;
|
$plotLegendH: 20px;
|
||||||
$plotSwatchD: 8px;
|
$plotSwatchD: 8px;
|
||||||
// 1: Top, 2: right, 3: bottom, 4: left
|
// 1: Top, 2: right, 3: bottom, 4: left
|
||||||
$plotDisplayArea: ($plotLegendH + $interiorMargin, 0, $plotXBarH, $plotYBarW);
|
$plotDisplayArea: (0, 0, $plotXBarH, $plotYBarW);
|
||||||
/* min plot height is based on user testing to find minimum useful height */
|
/* min plot height is based on user testing to find minimum useful height */
|
||||||
$plotMinH: 95px;
|
$plotMinH: 95px;
|
||||||
/*************** Bubbles */
|
/*************** Bubbles */
|
||||||
@ -111,7 +111,9 @@ $bubbleMaxW: 300px;
|
|||||||
$reqSymbolW: 15px;
|
$reqSymbolW: 15px;
|
||||||
$reqSymbolM: $interiorMargin * 2;
|
$reqSymbolM: $interiorMargin * 2;
|
||||||
$reqSymbolFontSize: 0.75em;
|
$reqSymbolFontSize: 0.75em;
|
||||||
$inputTextP: 3px 5px;
|
$inputTextPTopBtm: 3px;
|
||||||
|
$inputTextPLeftRight: 5px;
|
||||||
|
$inputTextP: $inputTextPTopBtm $inputTextPLeftRight;
|
||||||
/*************** Wait Spinner Defaults */
|
/*************** Wait Spinner Defaults */
|
||||||
$waitSpinnerD: 32px;
|
$waitSpinnerD: 32px;
|
||||||
$waitSpinnerTreeD: 20px;
|
$waitSpinnerTreeD: 20px;
|
||||||
|
@ -21,32 +21,11 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
.t-fixed-position {
|
.t-fixed-position {
|
||||||
&.l-fixed-position {
|
&.l-fixed-position {
|
||||||
position: absolute;
|
@extend .abs;
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
width: auto;
|
|
||||||
height: auto;
|
|
||||||
|
|
||||||
.l-grid-holder {
|
|
||||||
position: relative;
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
.l-grid {
|
|
||||||
position: absolute;
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
pointer-events: none;
|
|
||||||
z-index: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.l-fixed-position-item {
|
.l-fixed-position-item {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
border: 1px solid transparent;
|
|
||||||
|
|
||||||
&.s-not-selected {
|
&.s-not-selected {
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
@ -73,6 +52,7 @@
|
|||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
$p: 1px;
|
$p: 1px;
|
||||||
line-height: 100%;
|
line-height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
&.l-static-text {
|
&.l-static-text {
|
||||||
padding: $p;
|
padding: $p;
|
||||||
}
|
}
|
||||||
@ -105,37 +85,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.l-fixed-position-item-handle {
|
|
||||||
$brd: 1px solid $colorKey;
|
|
||||||
background: rgba($colorKey, 0.5);
|
|
||||||
cursor: crosshair;
|
|
||||||
border: $brd;
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.edit-mode .t-fixed-position {
|
.s-status-editing {
|
||||||
&.l-fixed-position {
|
.l-fixed-position-item-handle.edit-corner { display: block; }
|
||||||
.l-grid-holder {
|
|
||||||
.l-grid {
|
|
||||||
&.l-grid-x {
|
|
||||||
@include bgTicks($colorGridLines, 'x');
|
|
||||||
}
|
|
||||||
|
|
||||||
&.l-grid-y {
|
|
||||||
@include bgTicks($colorGridLines, 'y');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.l-fixed-position-item {
|
|
||||||
&:not(.s-selected) {
|
|
||||||
border: 1px dotted rgba($colorKey, 0.75);
|
|
||||||
&:hover {
|
|
||||||
border: 1px dotted rgba($colorKey, 1.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
* Use https://icomoon.io/app with icomoon-project-openmct-symbols-12px.json
|
* Use https://icomoon.io/app with icomoon-project-openmct-symbols-12px.json
|
||||||
* to generate font files
|
* to generate font files
|
||||||
*/
|
*/
|
||||||
font-family: 'symbolsfont 12px';
|
font-family: 'symbolsfont-12px';
|
||||||
src: url($dirCommonRes + 'fonts/symbols/openmct-symbols-12px.eot');
|
src: url($dirCommonRes + 'fonts/symbols/openmct-symbols-12px.eot');
|
||||||
src: url($dirCommonRes + 'fonts/symbols/openmct-symbols-12px.eot?#iefix') format('embedded-opentype'),
|
src: url($dirCommonRes + 'fonts/symbols/openmct-symbols-12px.eot?#iefix') format('embedded-opentype'),
|
||||||
url($dirCommonRes + 'fonts/symbols/openmct-symbols-12px.woff') format('woff'),
|
url($dirCommonRes + 'fonts/symbols/openmct-symbols-12px.woff') format('woff'),
|
||||||
@ -234,6 +234,12 @@ a.disabled {
|
|||||||
color: rgba(#fff, 0.2);
|
color: rgba(#fff, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.comma-list span {
|
||||||
|
&:not(:first-child) {
|
||||||
|
&:before { content: ', '; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.test-stripes {
|
.test-stripes {
|
||||||
@include bgDiagonalStripes();
|
@include bgDiagonalStripes();
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,24 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2017, 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.
|
||||||
|
*****************************************************************************/
|
||||||
@mixin glyphBefore($unicode, $family: 'symbolsfont') {
|
@mixin glyphBefore($unicode, $family: 'symbolsfont') {
|
||||||
&:before {
|
&:before {
|
||||||
content: $unicode;
|
content: $unicode;
|
||||||
@ -44,6 +65,8 @@ $glyph-icon-plus: '\e926';
|
|||||||
$glyph-icon-trash: '\e927';
|
$glyph-icon-trash: '\e927';
|
||||||
$glyph-icon-x: '\e928';
|
$glyph-icon-x: '\e928';
|
||||||
$glyph-icon-brackets: '\e929';
|
$glyph-icon-brackets: '\e929';
|
||||||
|
$glyph-icon-crosshair: '\e930';
|
||||||
|
$glyph-icon-grippy: '\e931';
|
||||||
$glyph-icon-arrows-out: '\e1000';
|
$glyph-icon-arrows-out: '\e1000';
|
||||||
$glyph-icon-arrows-right-left: '\e1001';
|
$glyph-icon-arrows-right-left: '\e1001';
|
||||||
$glyph-icon-arrows-up-down: '\e1002';
|
$glyph-icon-arrows-up-down: '\e1002';
|
||||||
@ -86,6 +109,12 @@ $glyph-icon-brightness: '\e1039';
|
|||||||
$glyph-icon-contrast: '\e1040';
|
$glyph-icon-contrast: '\e1040';
|
||||||
$glyph-icon-expand: '\e1041';
|
$glyph-icon-expand: '\e1041';
|
||||||
$glyph-icon-list-view: '\e1042';
|
$glyph-icon-list-view: '\e1042';
|
||||||
|
$glyph-icon-grid-snap-to: '\e1043';
|
||||||
|
$glyph-icon-grid-snap-no: '\e1044';
|
||||||
|
$glyph-icon-frame-show: '\e1045';
|
||||||
|
$glyph-icon-frame-hide: '\e1046';
|
||||||
|
$glyph-icon-import: '\e1047';
|
||||||
|
$glyph-icon-export: '\e1048';
|
||||||
$glyph-icon-activity: '\e1100';
|
$glyph-icon-activity: '\e1100';
|
||||||
$glyph-icon-activity-mode: '\e1101';
|
$glyph-icon-activity-mode: '\e1101';
|
||||||
$glyph-icon-autoflow-tabular: '\e1102';
|
$glyph-icon-autoflow-tabular: '\e1102';
|
||||||
@ -116,6 +145,8 @@ $glyph-icon-timeline: '\e1126';
|
|||||||
$glyph-icon-timer: '\e1127';
|
$glyph-icon-timer: '\e1127';
|
||||||
$glyph-icon-topic: '\e1128';
|
$glyph-icon-topic: '\e1128';
|
||||||
$glyph-icon-box-with-dashed-lines: '\e1129';
|
$glyph-icon-box-with-dashed-lines: '\e1129';
|
||||||
|
$glyph-icon-summary-widget: '\e1130';
|
||||||
|
$glyph-icon-notebook: '\e1131';
|
||||||
|
|
||||||
/************************** 16 PX CLASSES */
|
/************************** 16 PX CLASSES */
|
||||||
|
|
||||||
@ -149,6 +180,8 @@ $glyph-icon-box-with-dashed-lines: '\e1129';
|
|||||||
.icon-trash { @include glyphBefore($glyph-icon-trash); }
|
.icon-trash { @include glyphBefore($glyph-icon-trash); }
|
||||||
.icon-x { @include glyphBefore($glyph-icon-x); }
|
.icon-x { @include glyphBefore($glyph-icon-x); }
|
||||||
.icon-brackets { @include glyphBefore($glyph-icon-brackets); }
|
.icon-brackets { @include glyphBefore($glyph-icon-brackets); }
|
||||||
|
.icon-crosshair { @include glyphBefore($glyph-icon-crosshair); }
|
||||||
|
.icon-grippy { @include glyphBefore($glyph-icon-grippy); }
|
||||||
.icon-arrows-out { @include glyphBefore($glyph-icon-arrows-out); }
|
.icon-arrows-out { @include glyphBefore($glyph-icon-arrows-out); }
|
||||||
.icon-arrows-right-left { @include glyphBefore($glyph-icon-arrows-right-left); }
|
.icon-arrows-right-left { @include glyphBefore($glyph-icon-arrows-right-left); }
|
||||||
.icon-arrows-up-down { @include glyphBefore($glyph-icon-arrows-up-down); }
|
.icon-arrows-up-down { @include glyphBefore($glyph-icon-arrows-up-down); }
|
||||||
@ -191,6 +224,12 @@ $glyph-icon-box-with-dashed-lines: '\e1129';
|
|||||||
.icon-contrast { @include glyphBefore($glyph-icon-contrast); }
|
.icon-contrast { @include glyphBefore($glyph-icon-contrast); }
|
||||||
.icon-expand { @include glyphBefore($glyph-icon-expand); }
|
.icon-expand { @include glyphBefore($glyph-icon-expand); }
|
||||||
.icon-list-view { @include glyphBefore($glyph-icon-list-view); }
|
.icon-list-view { @include glyphBefore($glyph-icon-list-view); }
|
||||||
|
.icon-grid-snap-to { @include glyphBefore($glyph-icon-grid-snap-to); }
|
||||||
|
.icon-grid-snap-no { @include glyphBefore($glyph-icon-grid-snap-no); }
|
||||||
|
.icon-frame-show { @include glyphBefore($glyph-icon-frame-show); }
|
||||||
|
.icon-frame-hide { @include glyphBefore($glyph-icon-frame-hide); }
|
||||||
|
.icon-import { @include glyphBefore($glyph-icon-import); }
|
||||||
|
.icon-export { @include glyphBefore($glyph-icon-export); }
|
||||||
.icon-activity { @include glyphBefore($glyph-icon-activity); }
|
.icon-activity { @include glyphBefore($glyph-icon-activity); }
|
||||||
.icon-activity-mode { @include glyphBefore($glyph-icon-activity-mode); }
|
.icon-activity-mode { @include glyphBefore($glyph-icon-activity-mode); }
|
||||||
.icon-autoflow-tabular { @include glyphBefore($glyph-icon-autoflow-tabular); }
|
.icon-autoflow-tabular { @include glyphBefore($glyph-icon-autoflow-tabular); }
|
||||||
@ -221,10 +260,9 @@ $glyph-icon-box-with-dashed-lines: '\e1129';
|
|||||||
.icon-timer { @include glyphBefore($glyph-icon-timer); }
|
.icon-timer { @include glyphBefore($glyph-icon-timer); }
|
||||||
.icon-topic { @include glyphBefore($glyph-icon-topic); }
|
.icon-topic { @include glyphBefore($glyph-icon-topic); }
|
||||||
.icon-box-with-dashed-lines { @include glyphBefore($glyph-icon-box-with-dashed-lines); }
|
.icon-box-with-dashed-lines { @include glyphBefore($glyph-icon-box-with-dashed-lines); }
|
||||||
|
.icon-summary-widget { @include glyphBefore($glyph-icon-summary-widget); }
|
||||||
|
.icon-notebook { @include glyphBefore($glyph-icon-notebook); }
|
||||||
|
|
||||||
/************************** 12 PX CLASSES */
|
/************************** 12 PX CLASSES */
|
||||||
|
.icon-crosshair-12px { @include glyphBefore($glyph-icon-crosshair,'symbolsfont-12px'); }
|
||||||
.icon-eye-open-12px { @include glyphBefore($glyph-icon-eye-open,'symbolsfont-12px'); }
|
|
||||||
.icon-collapse-pane-left-12px { @include glyphBefore($glyph-icon-collapse-pane-left,'symbolsfont-12px'); }
|
|
||||||
.icon-collapse-pane-right-12px { @include glyphBefore($glyph-icon-collapse-pane-right,'symbolsfont-12px'); }
|
|
||||||
.icon-folder-12px { @include glyphBefore($glyph-icon-folder,'symbolsfont-12px'); }
|
.icon-folder-12px { @include glyphBefore($glyph-icon-folder,'symbolsfont-12px'); }
|
||||||
|
@ -44,6 +44,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.t-alert-unsynced {
|
||||||
|
@extend .icon-alert-triangle;
|
||||||
|
color: $colorPausedBg;
|
||||||
|
}
|
||||||
|
|
||||||
.bar .ui-symbol {
|
.bar .ui-symbol {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
@ -81,18 +87,5 @@
|
|||||||
@include transform(scale(0.3));
|
@include transform(scale(0.3));
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* .t-item-icon-glyph {
|
|
||||||
&:after {
|
|
||||||
color: $colorIconLink;
|
|
||||||
content: '\e921'; //$glyph-icon-link;
|
|
||||||
height: auto; width: auto;
|
|
||||||
position: absolute;
|
|
||||||
left: 0; top: 0; right: 0; bottom: 20%;
|
|
||||||
@include transform-origin(bottom left);
|
|
||||||
@include transform(scale(0.3));
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,5 +26,6 @@
|
|||||||
display: block;
|
display: block;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,6 +53,7 @@
|
|||||||
.l-inspector-part {
|
.l-inspector-part {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding-right: $interiorMargin;
|
padding-right: $interiorMargin;
|
||||||
|
|
||||||
.tree .form {
|
.tree .form {
|
||||||
margin-left: $treeVCW + $interiorMarginLg;
|
margin-left: $treeVCW + $interiorMarginLg;
|
||||||
}
|
}
|
||||||
@ -78,6 +79,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.form-row {
|
.form-row {
|
||||||
|
// To be replaced with .inspector-config, see below.
|
||||||
@include align-items(center);
|
@include align-items(center);
|
||||||
border: none !important;
|
border: none !important;
|
||||||
margin-bottom: 0 !important;
|
margin-bottom: 0 !important;
|
||||||
@ -99,15 +101,12 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul li {
|
|
||||||
margin-bottom: $interiorMarginLg;
|
|
||||||
}
|
|
||||||
|
|
||||||
em.t-inspector-part-header {
|
em.t-inspector-part-header {
|
||||||
border-radius: $basicCr;
|
border-radius: $basicCr;
|
||||||
background-color: $colorInspectorSectionHeaderBg;
|
background-color: $colorInspectorSectionHeaderBg;
|
||||||
color: $colorInspectorSectionHeaderFg;
|
color: $colorInspectorSectionHeaderFg;
|
||||||
margin-bottom: $interiorMargin;
|
margin-top: $interiorMarginLg;
|
||||||
|
//margin-bottom: $interiorMargin;
|
||||||
padding: floor($formTBPad * .75) $formLRPad;
|
padding: floor($formTBPad * .75) $formLRPad;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
@ -201,3 +200,102 @@ mct-representation:not(.s-status-editing) .l-inspect {
|
|||||||
pointer-events: inherit;
|
pointer-events: inherit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NEW COMPACT FORM, FOR USE IN INSPECTOR
|
||||||
|
// ul > li > label, control
|
||||||
|
// Make a new UL for each form section
|
||||||
|
// Allow control-first, controls-below
|
||||||
|
|
||||||
|
.l-inspect .tree ul li,
|
||||||
|
.inspector-config ul li {
|
||||||
|
padding: 2px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.inspector-config {
|
||||||
|
$labelW: 40%;
|
||||||
|
$minW: $labelW;
|
||||||
|
ul {
|
||||||
|
margin-bottom: $interiorMarginLg;
|
||||||
|
li {
|
||||||
|
@include display(flex);
|
||||||
|
@include flex-wrap(wrap);
|
||||||
|
@include align-items(center);
|
||||||
|
label,
|
||||||
|
.control {
|
||||||
|
@include display(flex);
|
||||||
|
min-width: $minW;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
line-height: inherit;
|
||||||
|
padding: $interiorMarginSm 0;
|
||||||
|
width: $labelW;
|
||||||
|
}
|
||||||
|
.control {
|
||||||
|
@include flex-grow(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(.section-header) {
|
||||||
|
&:not(.connects-to-previous) {
|
||||||
|
//border-top: 1px solid $colorFormLines;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.connects-to-previous {
|
||||||
|
padding-top: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.section-header {
|
||||||
|
margin-top: $interiorMarginLg;
|
||||||
|
border-top: 1px solid $colorFormLines;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.controls-first {
|
||||||
|
.control {
|
||||||
|
@include flex-grow(0);
|
||||||
|
margin-right: $interiorMargin;
|
||||||
|
min-width: 0;
|
||||||
|
order: 1;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
@include flex-grow(1);
|
||||||
|
order: 2;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.controls-under {
|
||||||
|
display: block;
|
||||||
|
.control, label {
|
||||||
|
display: block;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul li {
|
||||||
|
border-top: none !important;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-error {
|
||||||
|
// Block element that visually flags an error and contains a message
|
||||||
|
background-color: $colorFormFieldErrorBg;
|
||||||
|
color: $colorFormFieldErrorFg;
|
||||||
|
border-radius: $basicCr;
|
||||||
|
display: block;
|
||||||
|
padding: 1px 6px;
|
||||||
|
&:before {
|
||||||
|
content: $glyph-icon-alert-triangle;
|
||||||
|
display: inline;
|
||||||
|
font-family: symbolsfont;
|
||||||
|
margin-right: $interiorMarginSm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tree .inspector-config {
|
||||||
|
margin-left: $treeVCW + $interiorMarginLg;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
@mixin limitGlyph($iconColor, $glyph: $glyph-icon-alert-triangle) {
|
|
||||||
&:before {
|
|
||||||
color: $iconColor;
|
|
||||||
content: $glyph;
|
|
||||||
font-family: symbolsfont;
|
|
||||||
font-size: 0.8em;
|
|
||||||
display: inline;
|
|
||||||
margin-right: $interiorMarginSm;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.s-limit-red { background: $colorLimitRedBg !important; }
|
|
||||||
.s-limit-yellow { background: $colorLimitYellowBg !important; }
|
|
||||||
|
|
||||||
// Handle limit when applied to a tr
|
|
||||||
tr[class*="s-limit"] {
|
|
||||||
&.s-limit-red td:first-child {
|
|
||||||
@include limitGlyph($colorLimitRedIc);
|
|
||||||
}
|
|
||||||
&.s-limit-yellow td:first-child {
|
|
||||||
@include limitGlyph($colorLimitYellowIc);
|
|
||||||
}
|
|
||||||
&.s-limit-upr td:first-child:before { content: $glyph-icon-arrow-double-up; }
|
|
||||||
&.s-limit-lwr td:first-child:before { content: $glyph-icon-arrow-double-down; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle limit when applied directly to a non-tr element
|
|
||||||
// Assume this is applied to the element that displays the limit value
|
|
||||||
:not(tr)[class*="s-limit"] {
|
|
||||||
&.s-limit-red {
|
|
||||||
@include limitGlyph($colorLimitRedIc);
|
|
||||||
}
|
|
||||||
&.s-limit-yellow {
|
|
||||||
@include limitGlyph($colorLimitYellowIc);
|
|
||||||
}
|
|
||||||
&.s-limit-upr:before { content: $glyph-icon-arrow-double-up; }
|
|
||||||
&.s-limit-lwr:before { content: $glyph-icon-arrow-double-down; }
|
|
||||||
}
|
|
@ -27,7 +27,7 @@
|
|||||||
@import "about";
|
@import "about";
|
||||||
@import "text";
|
@import "text";
|
||||||
@import "icons";
|
@import "icons";
|
||||||
@import "limits";
|
@import "status";
|
||||||
@import "data-status";
|
@import "data-status";
|
||||||
@import "helpers/bubbles";
|
@import "helpers/bubbles";
|
||||||
@import "helpers/splitter";
|
@import "helpers/splitter";
|
||||||
@ -70,6 +70,7 @@
|
|||||||
@import "fixed-position";
|
@import "fixed-position";
|
||||||
@import "lists/tabular";
|
@import "lists/tabular";
|
||||||
@import "plots/plots-main";
|
@import "plots/plots-main";
|
||||||
|
@import "plots/legend";
|
||||||
@import "iframe";
|
@import "iframe";
|
||||||
@import "views";
|
@import "views";
|
||||||
@import "items/item";
|
@import "items/item";
|
||||||
|
@ -316,23 +316,28 @@
|
|||||||
text-shadow: $shdwItemText;
|
text-shadow: $shdwItemText;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin input-base($bg: $colorInputBg, $fg: $colorInputFg, $shdw: rgba(black, 0.6) 0 1px 3px) {
|
@mixin input-base() {
|
||||||
@include appearance(none);
|
@include appearance(none);
|
||||||
border-radius: $controlCr;
|
border-radius: $controlCr;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
box-shadow: inset $shdw;
|
&:focus { outline: 0; }
|
||||||
background: $bg;
|
|
||||||
border: none;
|
|
||||||
color: $fg;
|
|
||||||
outline: none;
|
|
||||||
&.error {
|
&.error {
|
||||||
background-color: $colorFormFieldErrorBg;
|
background-color: $colorFormFieldErrorBg;
|
||||||
color: $colorFormFieldErrorFg;
|
color: $colorFormFieldErrorFg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin nice-input($bg: $colorInputBg, $fg: $colorInputFg) {
|
@mixin s-input($bg: $colorInputBg, $fg: $colorInputFg, $shdw: rgba(black, 0.6) 0 1px 3px) {
|
||||||
@include input-base($bg, $fg);
|
@include input-base();
|
||||||
|
background: $bg;
|
||||||
|
box-shadow: inset $shdw;
|
||||||
|
color: $fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin nice-input($bg: $colorInputBg, $fg: $colorInputFg, $shdw: rgba(black, 0.6) 0 1px 3px) {
|
||||||
|
@include s-input($bg, $fg, $shdw);
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin contextArrow() {
|
@mixin contextArrow() {
|
||||||
@ -344,7 +349,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@mixin nice-textarea($bg: $colorBodyBg, $fg: $colorBodyFg) {
|
@mixin nice-textarea($bg: $colorBodyBg, $fg: $colorBodyFg) {
|
||||||
@include input-base($bg, $fg);
|
@include nice-input($bg, $fg);
|
||||||
padding: $interiorMargin;
|
padding: $interiorMargin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
85
platform/commonUI/general/res/sass/_status.scss
Normal file
85
platform/commonUI/general/res/sass/_status.scss
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2017, 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
/*************************************************** MIXINS */
|
||||||
|
@mixin formulateStatusColors($c) {
|
||||||
|
// Sets bg and icon colors for elements
|
||||||
|
background: rgba($c, 0.4) !important;
|
||||||
|
&:before { color: $c !important; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************** GENERAL */
|
||||||
|
.s-limit-yellow,
|
||||||
|
.s-limit-red,
|
||||||
|
.s-limit-yellow-icon,
|
||||||
|
.s-limit-red-icon,
|
||||||
|
.s-status-warning-lo,
|
||||||
|
.s-status-warning-hi,
|
||||||
|
.s-status-diagnostic,
|
||||||
|
.s-status-command,
|
||||||
|
.s-status-info,
|
||||||
|
.s-status-ok,
|
||||||
|
.s-status-warning-lo-icon,
|
||||||
|
.s-status-warning-hi-icon,
|
||||||
|
.s-status-diagnostic-icon,
|
||||||
|
.s-status-command-icon,
|
||||||
|
.s-status-info-icon,
|
||||||
|
.s-status-ok-icon {
|
||||||
|
@include trans-prop-nice($props: background, $dur: 500ms);
|
||||||
|
&:before {
|
||||||
|
content:'';
|
||||||
|
font-family: symbolsfont;
|
||||||
|
font-size: 0.8em;
|
||||||
|
margin-right: $interiorMarginSm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************** LIMITS */
|
||||||
|
.s-limit-yellow, .s-limit-yellow-icon {
|
||||||
|
@include formulateStatusColors($colorWarningLo);
|
||||||
|
}
|
||||||
|
|
||||||
|
.s-limit-red, .s-limit-red-icon {
|
||||||
|
@include formulateStatusColors($colorWarningHi);
|
||||||
|
}
|
||||||
|
|
||||||
|
.s-limit-upr:before { content: $glyph-icon-arrow-double-up; }
|
||||||
|
.s-limit-lwr:before { content: $glyph-icon-arrow-double-down; }
|
||||||
|
.s-limit-yellow-icon:before,
|
||||||
|
.s-limit-red-icon:before { content: $glyph-icon-alert-triangle; }
|
||||||
|
|
||||||
|
/*************************************************** STATUS */
|
||||||
|
.s-status-warning-hi, .s-status-warning-hi-icon { @include formulateStatusColors($colorWarningHi); }
|
||||||
|
.s-status-warning-lo, .s-status-warning-lo-icon { @include formulateStatusColors($colorWarningLo); }
|
||||||
|
.s-status-diagnostic, .s-status-diagnostic-icon { @include formulateStatusColors($colorDiagnostic); }
|
||||||
|
.s-status-info, .s-status-info-icon { @include formulateStatusColors($colorInfo); }
|
||||||
|
.s-status-ok, .s-status-ok-icon { @include formulateStatusColors($colorOk); }
|
||||||
|
|
||||||
|
.s-status-warning-hi-icon:before { content: $glyph-icon-alert-triangle; }
|
||||||
|
.s-status-warning-lo-icon:before { content: $glyph-icon-alert-rect; }
|
||||||
|
.s-status-diagnostic-icon:before { content: $glyph-icon-eye-open; }
|
||||||
|
.s-status-info-icon:before { content: $glyph-icon-info; }
|
||||||
|
.s-status-ok-icon:before { content: $glyph-icon-check; }
|
||||||
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.l-view-section {
|
.l-view-section {
|
||||||
|
//@include test(orange, 0.1);
|
||||||
@include absPosDefault(0);
|
@include absPosDefault(0);
|
||||||
h2 {
|
h2 {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
@ -33,7 +33,6 @@ $pad: $interiorMargin * $baseRatio;
|
|||||||
height: $btnStdH;
|
height: $btnStdH;
|
||||||
line-height: $btnStdH;
|
line-height: $btnStdH;
|
||||||
padding: 0 $pad;
|
padding: 0 $pad;
|
||||||
vertical-align: top;
|
|
||||||
|
|
||||||
&.labeled:before {
|
&.labeled:before {
|
||||||
// Icon when it's included
|
// Icon when it's included
|
||||||
|
@ -19,11 +19,22 @@
|
|||||||
* this source code distribution or the Licensing information page available
|
* this source code distribution or the Licensing information page available
|
||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.s-palette-item {
|
||||||
|
$colorSelectedColor: #fff;
|
||||||
|
@include txtShdwSubtle(0.8);
|
||||||
|
@include trans-prop-nice-fade(0.25s);
|
||||||
|
border: 1px solid transparent;
|
||||||
|
&:hover {
|
||||||
|
@include trans-prop-nice-fade(0);
|
||||||
|
border-color: $colorSelectedColor !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.l-color-palette {
|
.l-color-palette {
|
||||||
$d: 16px;
|
$d: 16px;
|
||||||
$colorsPerRow: 10;
|
$colorsPerRow: 10;
|
||||||
$m: 1;
|
$m: 1;
|
||||||
$colorSelectedColor: #fff;
|
|
||||||
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: $interiorMargin !important;
|
padding: $interiorMargin !important;
|
||||||
@ -35,10 +46,6 @@
|
|||||||
|
|
||||||
.l-palette-item {
|
.l-palette-item {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
@include txtShdwSubtle(0.8);
|
|
||||||
@include trans-prop-nice-fade(0.25s);
|
|
||||||
border: 1px solid transparent;
|
|
||||||
color: $colorSelectedColor;
|
|
||||||
display: block;
|
display: block;
|
||||||
float: left;
|
float: left;
|
||||||
height: $d; width: $d;
|
height: $d; width: $d;
|
||||||
@ -51,13 +58,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.s-palette-item {
|
|
||||||
&:hover {
|
|
||||||
@include trans-prop-nice-fade(0);
|
|
||||||
border-color: $colorSelectedColor !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.l-palette-item-label {
|
.l-palette-item-label {
|
||||||
margin-left: $interiorMargin;
|
margin-left: $interiorMargin;
|
||||||
}
|
}
|
||||||
@ -69,10 +69,21 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.l-inline-color-palette {
|
||||||
|
// Is an <li>
|
||||||
|
.l-palette-row {
|
||||||
|
@include display(flex);
|
||||||
|
width: 100%;
|
||||||
|
.l-palette-item {
|
||||||
|
@include display(flex);
|
||||||
|
@include flex(1 0 auto);
|
||||||
|
margin: 1px;
|
||||||
|
&:before {
|
||||||
|
content: '';
|
||||||
|
padding-top: 75%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -72,6 +72,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hyperlink objects
|
||||||
|
.s-hyperlink {
|
||||||
|
.label {
|
||||||
|
font-size: 0.8rem !important;
|
||||||
|
}
|
||||||
|
&:not(.s-button) {
|
||||||
|
color: $colorKey;
|
||||||
|
&:hover { color: $colorKeyHov; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.s-icon-button {
|
.s-icon-button {
|
||||||
// Clickable icon elements that have hover
|
// Clickable icon elements that have hover
|
||||||
@extend .ui-symbol;
|
@extend .ui-symbol;
|
||||||
@ -139,6 +150,26 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/******************************************************** VIEW CONTROLS */
|
||||||
|
// Expand/collapse > and v arrows, used in tree and plot legend
|
||||||
|
// Moved this over from a tree-only context 5/18/17
|
||||||
|
|
||||||
|
.view-control {
|
||||||
|
@extend .ui-symbol;
|
||||||
|
cursor: pointer;
|
||||||
|
height: 1em; width: 1em;
|
||||||
|
line-height: inherit;
|
||||||
|
&:before {
|
||||||
|
position: absolute;
|
||||||
|
@include trans-prop-nice(transform, 100ms);
|
||||||
|
content: $glyph-icon-arrow-right;
|
||||||
|
@include transform-origin(center);
|
||||||
|
}
|
||||||
|
&.expanded:before {
|
||||||
|
@include transform(rotate(90deg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************** CUSTOM CHECKBOXES */
|
/******************************************************** CUSTOM CHECKBOXES */
|
||||||
label.checkbox.custom,
|
label.checkbox.custom,
|
||||||
label.radio.custom {
|
label.radio.custom {
|
||||||
@ -223,12 +254,16 @@ textarea {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************** INPUTS */
|
/******************************************************** INPUTS */
|
||||||
|
%input-base {
|
||||||
|
@include input-base();
|
||||||
|
}
|
||||||
|
|
||||||
input[type="text"],
|
input[type="text"],
|
||||||
input[type="search"],
|
input[type="search"],
|
||||||
input[type="number"] {
|
input[type="number"] {
|
||||||
@include nice-input();
|
@include nice-input();
|
||||||
vertical-align: baseline;
|
vertical-align: baseline;
|
||||||
padding: $inputTextP;
|
padding: $inputTextPTopBtm $inputTextPLeftRight;
|
||||||
&.numeric {
|
&.numeric {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
@ -272,6 +307,32 @@ textarea.lg { position: relative; height: 300px; }
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*[contenteditable].s-input-inline,
|
||||||
|
input[type="text"].s-input-inline,
|
||||||
|
.s-input-inline input[type="text"] {
|
||||||
|
// A text input or contenteditable element that indicates edit affordance on hover and looks like an input on focus
|
||||||
|
@extend %input-base;
|
||||||
|
@include trans-prop-nice((padding, box-shadow), 250ms);
|
||||||
|
background: none;
|
||||||
|
box-shadow: none;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
min-width: 20px;
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
padding-left: $inputTextPLeftRight;
|
||||||
|
padding-right: $inputTextPLeftRight;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
border-color: rgba($colorBodyFg, 0.2);
|
||||||
|
}
|
||||||
|
&:focus {
|
||||||
|
@include s-input();
|
||||||
|
border-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************** SELECTS */
|
/******************************************************** SELECTS */
|
||||||
.select {
|
.select {
|
||||||
@include btnSubtle($bg: $colorSelectBg);
|
@include btnSubtle($bg: $colorSelectBg);
|
||||||
@ -287,6 +348,7 @@ textarea.lg { position: relative; height: 300px; }
|
|||||||
select {
|
select {
|
||||||
@include appearance(none);
|
@include appearance(none);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
&:focus { outline: 0; }
|
||||||
background: none;
|
background: none;
|
||||||
color: $colorSelectFg;
|
color: $colorSelectFg;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@ -298,9 +360,8 @@ textarea.lg { position: relative; height: 300px; }
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
&:before {
|
&:before {
|
||||||
//@include contextArrow();
|
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
color: rgba($colorSelectFg, percentToDecimal($contrastInvokeMenuPercent));
|
color: rgba($colorInvokeMenu, percentToDecimal($contrastInvokeMenuPercent));
|
||||||
display: block;
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: $interiorMargin; top: 0;
|
right: $interiorMargin; top: 0;
|
||||||
@ -695,11 +756,6 @@ textarea {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.view-switcher,
|
|
||||||
.t-btn-view-large {
|
|
||||||
@include trans-prop-nice-fade($controlFadeMs);
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************** BROWSER ELEMENTS */
|
/******************************************************** BROWSER ELEMENTS */
|
||||||
body.desktop {
|
body.desktop {
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
@ -717,11 +773,15 @@ body.desktop {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.overlay ::-webkit-scrollbar-thumb {
|
.overlay ::-webkit-scrollbar-thumb {
|
||||||
$lr: 15%;
|
|
||||||
background: $scrollbarThumbColorOverlay;
|
background: $scrollbarThumbColorOverlay;
|
||||||
&:hover { background: $scrollbarThumbColorOverlayHov; }
|
&:hover { background: $scrollbarThumbColorOverlayHov; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.menu ::-webkit-scrollbar-thumb {
|
||||||
|
background: $scrollbarThumbColorMenu;
|
||||||
|
&:hover { background: $scrollbarThumbColorMenuHov; }
|
||||||
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar-corner {
|
::-webkit-scrollbar-corner {
|
||||||
background: $scrollbarTrackColorBg;
|
background: $scrollbarTrackColorBg;
|
||||||
}
|
}
|
||||||
|
@ -21,92 +21,87 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
/******************************************************** MENU BUTTONS */
|
/******************************************************** MENU BUTTONS */
|
||||||
.s-menu-button {
|
.s-menu-button {
|
||||||
// Formerly .btn-menu
|
// Formerly .btn-menu
|
||||||
@extend .s-button;
|
@extend .s-button;
|
||||||
span.l-click-area {
|
span.l-click-area {
|
||||||
// In markup, this element should not enclose anything.
|
// In markup, this element should not enclose anything.
|
||||||
@extend .abs;
|
@extend .abs;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
font-size: 16px; //120%;
|
font-size: 16px; //120%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-label {
|
.title-label {
|
||||||
margin-left: $interiorMarginSm;
|
margin-left: $interiorMarginSm;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-swatch {
|
.color-swatch {
|
||||||
// Used in color menu buttons in toolbar
|
// Used in color menu buttons in toolbar
|
||||||
$d: 10px;
|
$d: 10px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
border: 1px solid rgba($colorBtnFg, 0.2);
|
border: 1px solid rgba($colorBtnFg, 0.2);
|
||||||
height: $d; width: $d;
|
height: $d;
|
||||||
|
width: $d;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
margin-left: $interiorMarginSm;
|
margin-left: $interiorMarginSm;
|
||||||
margin-top: -2px;
|
margin-top: -2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:after {
|
&:after {
|
||||||
// Adds the downward facing 'context available / invoke menu' arrow element
|
// Adds the downward facing 'context available / invoke menu' arrow element
|
||||||
@include contextArrow();
|
@include contextArrow();
|
||||||
color: rgba($colorInvokeMenu, percentToDecimal($contrastInvokeMenuPercent));
|
color: rgba($colorInvokeMenu, percentToDecimal($contrastInvokeMenuPercent));
|
||||||
}
|
}
|
||||||
|
|
||||||
&.create-button {
|
&.create-button {
|
||||||
@extend .icon-plus;
|
@extend .icon-plus;
|
||||||
.title-label {
|
.title-label {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu {
|
.menu {
|
||||||
left: 0;
|
left: 0;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************** MENUS THEMSELVES */
|
/******************************************************** MENUS THEMSELVES */
|
||||||
.menu-element {
|
.menu-element {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
|
||||||
|
|
||||||
.s-menu {
|
|
||||||
border-radius: $basicCr;
|
|
||||||
@include containerSubtle($colorMenuBg, $colorMenuFg);
|
|
||||||
@include boxShdw($shdwMenu);
|
|
||||||
@include txtShdw($shdwMenuText);
|
|
||||||
padding: $interiorMarginSm 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu {
|
.menu {
|
||||||
// TODO: reduce size of icons
|
border-radius: $basicCr;
|
||||||
@extend .s-menu;
|
@include containerSubtle($colorMenuBg, $colorMenuFg);
|
||||||
display: block;
|
@include boxShdw($shdwMenu);
|
||||||
position: absolute;
|
@include txtShdw($shdwMenuText);
|
||||||
z-index: 10;
|
padding: $interiorMarginSm 0;
|
||||||
ul {
|
display: block;
|
||||||
@include menuUlReset();
|
position: absolute;
|
||||||
li {
|
z-index: 10;
|
||||||
box-sizing: border-box;
|
ul {
|
||||||
border-top: 1px solid pullForward($colorMenuBg, 10%);
|
@include menuUlReset();
|
||||||
|
li {
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-top: 1px solid pullForward($colorMenuBg, 10%);
|
||||||
color: $colorMenuFg;
|
color: $colorMenuFg;
|
||||||
//color: pullForward($colorMenuBg, 60%);
|
line-height: $menuLineH;
|
||||||
line-height: $menuLineH;
|
padding: $interiorMarginSm $interiorMargin * 2 $interiorMarginSm ($interiorMargin * 2) + $treeTypeIconW;
|
||||||
padding: $interiorMarginSm $interiorMargin * 2 $interiorMarginSm ($interiorMargin * 2) + $treeTypeIconW;
|
position: relative;
|
||||||
position: relative;
|
white-space: nowrap;
|
||||||
white-space: nowrap;
|
&:first-child {
|
||||||
&:first-child {
|
border: none;
|
||||||
border: none;
|
}
|
||||||
}
|
&:hover {
|
||||||
&:hover {
|
background: $colorMenuHovBg;
|
||||||
background: $colorMenuHovBg;
|
color: $colorMenuHovFg;
|
||||||
color: $colorMenuHovFg;
|
|
||||||
&:before {
|
&:before {
|
||||||
color: $colorMenuHovIc;
|
color: $colorMenuHovIc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&:before {
|
&:before {
|
||||||
@extend .ui-symbol;
|
@extend .ui-symbol;
|
||||||
@extend .type-icon;
|
@extend .type-icon;
|
||||||
@ -114,8 +109,8 @@
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
left: $interiorMargin * 2;
|
left: $interiorMargin * 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu,
|
.menu,
|
||||||
@ -123,94 +118,97 @@
|
|||||||
.context-menu,
|
.context-menu,
|
||||||
.super-menu,
|
.super-menu,
|
||||||
.s-menu-button .menu {
|
.s-menu-button .menu {
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
ul li {
|
ul li {
|
||||||
a.menu-item-a {
|
a.menu-item-a {
|
||||||
color: $colorMenuFg;
|
color: $colorMenuFg;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
&:before,
|
&:before,
|
||||||
a.menu-item-a:before {
|
a.menu-item-a:before {
|
||||||
color: $colorMenuIc;
|
color: $colorMenuIc;
|
||||||
left: $interiorMargin;
|
left: $interiorMargin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.checkbox-menu {
|
.checkbox-menu {
|
||||||
// Used in search dropdown in tree
|
// Used in search dropdown in tree
|
||||||
@extend .context-menu;
|
@extend .context-menu;
|
||||||
ul li {
|
ul li {
|
||||||
padding-left: 50px;
|
padding-left: 50px;
|
||||||
.checkbox {
|
.checkbox {
|
||||||
$d: 0.7rem;
|
$d: 0.7rem;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: $interiorMargin;
|
left: $interiorMargin;
|
||||||
top: ($menuLineH - $d) / 1.5;
|
top: ($menuLineH - $d) / 1.5;
|
||||||
em {
|
em {
|
||||||
height: $d;
|
height: $d;
|
||||||
width: $d;
|
width: $d;
|
||||||
&:before {
|
&:before {
|
||||||
font-size: 7px !important;
|
font-size: 7px !important;
|
||||||
height: $d;
|
height: $d;
|
||||||
width: $d;
|
width: $d;
|
||||||
line-height: $d;
|
line-height: $d;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&:before {
|
&:before {
|
||||||
// Type icon
|
// Type icon
|
||||||
left: 25px;
|
left: 25px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.super-menu,
|
||||||
|
.super-menu > mct-representation,
|
||||||
|
.super-menu > .contents {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.super-menu {
|
.super-menu {
|
||||||
$w: 500px;
|
$plw: 50%;
|
||||||
$h: $w - 20;
|
$prw: 100% - $plw;
|
||||||
$plw: 50%;
|
position: absolute;
|
||||||
$prw: 50%;
|
.w-menu {
|
||||||
display: block;
|
align-items: stretch;
|
||||||
width: $w;
|
display: flex;
|
||||||
height: $h;
|
flex-direction: row;
|
||||||
.contents {
|
margin: $interiorMarginLg;
|
||||||
@include absPosDefault($interiorMargin);
|
}
|
||||||
}
|
.col {
|
||||||
.pane {
|
box-sizing: border-box;
|
||||||
box-sizing: border-box;
|
flex: 1 1 auto;
|
||||||
&.menu-items {
|
overflow-x: hidden;
|
||||||
border-right: 1px solid pullForward($colorMenuBg, 10%);
|
&.menu-items {
|
||||||
left: 0;
|
border-right: 1px solid pullForward($colorMenuBg, 10%);
|
||||||
padding-right: $interiorMargin;
|
overflow-y: auto;
|
||||||
right: auto;
|
padding-right: $interiorMargin;
|
||||||
width: $plw;
|
width: $plw;
|
||||||
overflow-x: hidden;
|
ul {
|
||||||
overflow-y: auto;
|
li {
|
||||||
ul {
|
border-radius: $controlCr;
|
||||||
li {
|
padding-left: 30px;
|
||||||
border-radius: $controlCr;
|
border-top: none;
|
||||||
padding-left: 30px;
|
}
|
||||||
border-top: none;
|
}
|
||||||
}
|
}
|
||||||
}
|
&.menu-item-description {
|
||||||
}
|
$p: $interiorMargin * 3;
|
||||||
&.menu-item-description {
|
overflow-y: hidden;
|
||||||
left: auto;
|
padding: $p $p 0 $p;
|
||||||
right: 0;
|
width: $prw;
|
||||||
padding: $interiorMargin * 5;
|
|
||||||
width: $prw;
|
|
||||||
.desc-area {
|
.desc-area {
|
||||||
&.icon {
|
&.icon {
|
||||||
color: $colorCreateMenuLgIcon;
|
color: $colorCreateMenuLgIcon;
|
||||||
font-size: 8em;
|
|
||||||
margin-bottom: $interiorMargin * 3;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
&.title {
|
&.title {
|
||||||
color: $colorCreateMenuText;
|
color: $colorCreateMenuText;
|
||||||
font-size: 1.2em;
|
|
||||||
margin-bottom: $interiorMargin * 2;
|
|
||||||
}
|
}
|
||||||
&.description {
|
&.description {
|
||||||
color: pushBack($colorCreateMenuText, 20%);
|
color: pushBack($colorCreateMenuText, 20%);
|
||||||
@ -218,67 +216,104 @@
|
|||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.w-title-desc {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
overflow: hidden; // Height set in specific menu instances
|
||||||
|
}
|
||||||
|
|
||||||
|
// Specific menu instances
|
||||||
|
&.l-create-menu {
|
||||||
|
width: 500px;
|
||||||
|
.col {
|
||||||
|
max-height: 70vh;
|
||||||
|
}
|
||||||
|
.w-title-desc {
|
||||||
|
height: 190px;
|
||||||
|
}
|
||||||
|
.desc-area {
|
||||||
|
&.icon {
|
||||||
|
font-size: 8em;
|
||||||
|
height: 135px;
|
||||||
|
margin-bottom: $interiorMargin * 3;
|
||||||
|
}
|
||||||
|
&.title {
|
||||||
|
font-size: 1.2em;
|
||||||
|
margin-bottom: $interiorMargin * 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&.mini {
|
&.mini {
|
||||||
width: 400px;
|
width: 400px;
|
||||||
height: 300px;
|
.col {
|
||||||
.pane {
|
max-height: 50vh;
|
||||||
&.menu-items {
|
&.menu-items {
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
}
|
}
|
||||||
&.menu-item-description {
|
&.menu-item-description {
|
||||||
padding: $interiorMargin * 3;
|
$p: $interiorMargin * 2;
|
||||||
.desc-area {
|
padding: $p $p 0 $p;
|
||||||
&.icon {
|
}
|
||||||
font-size: 4em;
|
}
|
||||||
}
|
.w-title-desc {
|
||||||
&.title {
|
height: 180px;
|
||||||
font-size: 1em;
|
}
|
||||||
}
|
.desc-area {
|
||||||
}
|
&.icon {
|
||||||
|
font-size: 4em;
|
||||||
|
height: 70px;
|
||||||
|
margin-bottom: $interiorMargin * 3;
|
||||||
|
}
|
||||||
|
&.title {
|
||||||
|
font-size: 1em;
|
||||||
|
margin-bottom: $interiorMargin * 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.context-menu {
|
.context-menu {
|
||||||
font-size: 0.80rem;
|
font-size: 0.80rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.context-menu-holder,
|
.context-menu-holder,
|
||||||
.menu-holder {
|
.menu-holder {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 120;
|
z-index: 120;
|
||||||
.context-menu-wrapper {
|
.context-menu-wrapper {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
&.go-left .context-menu,
|
&.go-left .context-menu,
|
||||||
&.go-left .menu {
|
&.go-left .menu {
|
||||||
right: 0;
|
right: 0;
|
||||||
}
|
}
|
||||||
&.go-up .context-menu,
|
&.go-up .context-menu,
|
||||||
&.go-up .menu {
|
&.go-up .menu {
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.context-menu-holder {
|
.context-menu-holder {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
height: 200px;
|
height: 200px;
|
||||||
width: 170px;
|
width: 170px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-bar.right .menu,
|
.btn-bar.right .menu,
|
||||||
.menus-to-left .menu {
|
.menus-to-left .menu {
|
||||||
z-index: 79;
|
z-index: 79;
|
||||||
left: auto;
|
left: auto;
|
||||||
right: 0;
|
right: 0;
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.menus-up .menu {
|
.menus-up .menu {
|
||||||
bottom: $btnStdH; top: auto;
|
bottom: $btnStdH;
|
||||||
|
top: auto;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
// Status coloring
|
// Status coloring
|
||||||
.ok, .info {
|
.ok, .info {
|
||||||
.status-indicator {
|
.status-indicator {
|
||||||
color: $colorStatusInfo;
|
color: $colorInfo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,7 +120,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.status-indicator {
|
.status-indicator {
|
||||||
|
background: none !important;
|
||||||
margin-right: $interiorMarginSm;
|
margin-right: $interiorMarginSm;
|
||||||
|
&[class*='s-status']:before {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.count {
|
.count {
|
||||||
@ -224,15 +228,15 @@
|
|||||||
}
|
}
|
||||||
&.ok,
|
&.ok,
|
||||||
&.info {
|
&.info {
|
||||||
@include statusBannerColors($colorStatusInfo);
|
@include statusBannerColors($colorInfo);
|
||||||
}
|
}
|
||||||
&.caution,
|
&.caution,
|
||||||
&.warning,
|
&.warning,
|
||||||
&.alert {
|
&.alert {
|
||||||
@include statusBannerColors($colorStatusAlert);
|
@include statusBannerColors($colorWarningLo);
|
||||||
}
|
}
|
||||||
&.error {
|
&.error {
|
||||||
@include statusBannerColors($colorStatusError);
|
@include statusBannerColors($colorWarningHi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,15 +252,15 @@
|
|||||||
|
|
||||||
.message-severity-info .type-icon.message-type {
|
.message-severity-info .type-icon.message-type {
|
||||||
@extend .icon-info;
|
@extend .icon-info;
|
||||||
color: $colorStatusInfo;
|
color: $colorInfo;
|
||||||
}
|
}
|
||||||
.message-severity-alert .type-icon.message-type {
|
.message-severity-alert .type-icon.message-type {
|
||||||
@extend .icon-bell;
|
@extend .icon-bell;
|
||||||
color: $colorStatusAlert;
|
color: $colorWarningLo;
|
||||||
}
|
}
|
||||||
.message-severity-error .type-icon.message-type {
|
.message-severity-error .type-icon.message-type {
|
||||||
@extend .icon-alert-rect;
|
@extend .icon-alert-rect;
|
||||||
color: $colorStatusError;
|
color: $colorWarningHi;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Paths:
|
/* Paths:
|
||||||
@ -380,10 +384,6 @@ body.desktop .t-message-list {
|
|||||||
.object-header {
|
.object-header {
|
||||||
.t-object-alert {
|
.t-object-alert {
|
||||||
display: inline;
|
display: inline;
|
||||||
&.t-alert-unsynced {
|
|
||||||
@extend .icon-alert-triangle;
|
|
||||||
color: $colorPausedBg;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,12 +19,24 @@
|
|||||||
* this source code distribution or the Licensing information page available
|
* this source code distribution or the Licensing information page available
|
||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
.s-status-editing .l-object-wrapper,
|
.t-edit-handle-holder { display: none; }
|
||||||
.edit-main {
|
|
||||||
// .s-status-editing .l-object-wrapper is relevant to New Edit Mode;
|
.l-grid-holder {
|
||||||
// .edit-main is legacy for old edit mode.
|
display: none;
|
||||||
$handleD: 15px;
|
position: relative;
|
||||||
$cr: 5px;
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
.l-grid {
|
||||||
|
@extend .abs;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 0;
|
||||||
|
&.l-grid-y { background-position: 0 1px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.s-status-editing {
|
||||||
|
$handleD: 5px;
|
||||||
|
.t-edit-handle-holder { display: block; }
|
||||||
.edit-corner,
|
.edit-corner,
|
||||||
.edit-handle {
|
.edit-handle {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -32,81 +44,59 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.edit-corner {
|
.edit-corner {
|
||||||
|
background: rgba($colorSelectableSelectedPrimary, 0.5);
|
||||||
|
cursor: crosshair;
|
||||||
|
display: none; // Hide by default
|
||||||
|
border: 1px solid $colorSelectableSelectedPrimary;
|
||||||
width: $handleD;
|
width: $handleD;
|
||||||
height: $handleD;
|
height: $handleD;
|
||||||
|
$o: (-1 * $handleD) + 1px;
|
||||||
&:hover {
|
&:hover {
|
||||||
z-index: 11;
|
z-index: 11;
|
||||||
}
|
}
|
||||||
&.edit-resize-nw {
|
&.edit-resize-nw { top: $o; left: $o; }
|
||||||
border-bottom-right-radius: $cr;
|
&.edit-resize-ne { top: $o; right: $o; }
|
||||||
cursor: nw-resize;
|
&.edit-resize-se { bottom: $o; right: $o; }
|
||||||
top: 0; left: 0;
|
&.edit-resize-sw { bottom: $o; left: $o; }
|
||||||
}
|
|
||||||
&.edit-resize-ne {
|
|
||||||
border-bottom-left-radius: $cr;
|
|
||||||
cursor: ne-resize;
|
|
||||||
top: 0; right: 0;
|
|
||||||
}
|
|
||||||
&.edit-resize-se {
|
|
||||||
border-top-left-radius: $cr;
|
|
||||||
cursor: se-resize;
|
|
||||||
bottom: 0; right: 0;
|
|
||||||
}
|
|
||||||
&.edit-resize-sw {
|
|
||||||
border-top-right-radius: $cr;
|
|
||||||
cursor: sw-resize;
|
|
||||||
bottom: 0; left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.edit-handle {
|
.edit-handle.edit-move {
|
||||||
top: $handleD; right: $handleD; bottom: $handleD; left: $handleD;
|
// main move box for the whole frame element
|
||||||
&.edit-move {
|
$m: 0;
|
||||||
$m: 0; //$handleD;
|
left: $m;
|
||||||
cursor: move;
|
right: $m;
|
||||||
left: $m;
|
top: $m;
|
||||||
right: $m;
|
bottom: $m;
|
||||||
top: $m;
|
z-index: 1;
|
||||||
bottom: $m;
|
|
||||||
z-index: 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
&.edit-resize-n {
|
|
||||||
top: 0px; bottom: auto;
|
|
||||||
height: $handleD;
|
|
||||||
cursor: n-resize;
|
|
||||||
}
|
|
||||||
&.edit-resize-e {
|
|
||||||
right: 0px; left: auto;
|
|
||||||
width: $handleD;
|
|
||||||
cursor: e-resize;
|
|
||||||
}
|
|
||||||
&.edit-resize-s {
|
|
||||||
bottom: 0px; top: auto;
|
|
||||||
height: $handleD;
|
|
||||||
cursor: s-resize;
|
|
||||||
}
|
|
||||||
&.edit-resize-w {
|
|
||||||
left: 0px; right: auto;
|
|
||||||
width: $handleD;
|
|
||||||
cursor: w-resize;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.frame.child-frame.panel {
|
.frame.child-frame.panel {
|
||||||
&:hover {
|
&:hover {
|
||||||
@include boxShdwLarge();
|
|
||||||
border-color: $colorSelectableSelectedPrimary;
|
|
||||||
.view-switcher {
|
.view-switcher {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
.edit-corner {
|
|
||||||
background-color: rgba($colorKey, 0.8);
|
|
||||||
&:hover {
|
|
||||||
background-color: rgba($colorKey, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Editing Grids
|
||||||
|
.l-grid-holder {
|
||||||
|
display: block;
|
||||||
|
.l-grid {
|
||||||
|
&.l-grid-x { @include bgTicks($colorGridLines, 'x'); }
|
||||||
|
&.l-grid-y { @include bgTicks($colorGridLines, 'y'); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prevent nested frames from showing their grids
|
||||||
|
.t-frame-outer .l-grid-holder { display: none !important; }
|
||||||
|
|
||||||
|
// Prevent nested elements from showing s-hover-border
|
||||||
|
.t-frame-outer .s-hover-border {
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prevent nested frames from being selectable until we have proper sub-object editing
|
||||||
|
.t-frame-outer .t-frame-outer {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
@if $enableImageryThumbs == true {
|
@if $enableImageryThumbs == true {
|
||||||
bottom: $interiorMargin*2 + $imageThumbsWrapperH;
|
bottom: $interiorMargin*2 + $imageThumbsWrapperH;
|
||||||
}
|
}
|
||||||
min-height: 100px;
|
|
||||||
min-width: 150px;
|
min-width: 150px;
|
||||||
.l-image-main {
|
.l-image-main {
|
||||||
background-color: $colorPlotBg;
|
background-color: $colorPlotBg;
|
||||||
@ -22,7 +21,9 @@
|
|||||||
|
|
||||||
.l-image-thumbs-wrapper {
|
.l-image-thumbs-wrapper {
|
||||||
top: auto;
|
top: auto;
|
||||||
height: $imageThumbsWrapperH;
|
min-height: $imageThumbsWrapperH;
|
||||||
|
max-height: 60%;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.l-date,
|
.l-date,
|
||||||
@ -43,14 +44,16 @@
|
|||||||
.l-image-main-controlbar {
|
.l-image-main-controlbar {
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
line-height: inherit;
|
line-height: inherit;
|
||||||
.left, .right {
|
.l-datetime-w, .l-controls-w {
|
||||||
direction: rtl;
|
direction: rtl;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.left {
|
.l-datetime-w {
|
||||||
|
@include ellipsize();
|
||||||
|
margin-right: $interiorMarginSm;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
.right {
|
.l-controls-w {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
.l-date,
|
.l-date,
|
||||||
@ -82,20 +85,26 @@
|
|||||||
/*************************************** THUMBS */
|
/*************************************** THUMBS */
|
||||||
|
|
||||||
.l-image-thumbs-wrapper {
|
.l-image-thumbs-wrapper {
|
||||||
//@include test(green);
|
overflow-x: hidden;
|
||||||
direction: rtl;
|
overflow-y: auto;
|
||||||
overflow-x: auto;
|
|
||||||
overflow-y: hidden;
|
|
||||||
padding-bottom: $interiorMargin;
|
padding-bottom: $interiorMargin;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
z-index: 70;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.l-image-thumb-item {
|
.l-image-thumb-item {
|
||||||
@include transition(background-color, 0.25s);
|
@include transition(background-color, 0.25s);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
cursor: pointer;
|
||||||
|
direction: ltr;
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
font-size: 0.8em;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
position: relative;
|
margin-left: $interiorMarginSm;
|
||||||
|
position: relative;
|
||||||
|
text-align: left;
|
||||||
|
width: $imageThumbsD + $imageThumbPad*2;
|
||||||
|
white-space: normal;
|
||||||
.l-thumb,
|
.l-thumb,
|
||||||
.l-date,
|
.l-date,
|
||||||
.l-time {
|
.l-time {
|
||||||
@ -105,16 +114,9 @@
|
|||||||
.l-time {
|
.l-time {
|
||||||
padding: 2px 3px;
|
padding: 2px 3px;
|
||||||
}
|
}
|
||||||
cursor: pointer;
|
|
||||||
direction: ltr;
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 0.8em;
|
|
||||||
margin-left: $interiorMarginSm;
|
|
||||||
text-align: left;
|
|
||||||
width: $imageThumbsD + $imageThumbPad*2;
|
|
||||||
white-space: normal;
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: rgba(#fff, 0.2);
|
background: $colorThumbHoverBg;
|
||||||
.l-date,
|
.l-date,
|
||||||
.l-time {
|
.l-time {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
@ -138,6 +140,7 @@
|
|||||||
/*************************************** LOCAL CONTROLS */
|
/*************************************** LOCAL CONTROLS */
|
||||||
.l-local-controls {
|
.l-local-controls {
|
||||||
max-width: 200px;
|
max-width: 200px;
|
||||||
|
min-width: 100px;
|
||||||
width: 35%;
|
width: 35%;
|
||||||
input[type="range"] {
|
input[type="range"] {
|
||||||
display: block;
|
display: block;
|
||||||
@ -186,7 +189,8 @@
|
|||||||
/*************************************** WHEN IN FRAME */
|
/*************************************** WHEN IN FRAME */
|
||||||
.frame .t-imagery {
|
.frame .t-imagery {
|
||||||
.l-image-main-wrapper {
|
.l-image-main-wrapper {
|
||||||
bottom: 0;
|
bottom: 0 !important;
|
||||||
|
height: 100% !important;
|
||||||
.l-image-main-controlbar {
|
.l-image-main-controlbar {
|
||||||
font-size: 0.7em;
|
font-size: 0.7em;
|
||||||
}
|
}
|
||||||
@ -196,7 +200,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.l-image-thumbs-wrapper {
|
.l-image-thumbs-wrapper,
|
||||||
|
mct-splitter {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -129,9 +129,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.s-filter {
|
.s-filter {
|
||||||
input[type="search"] {
|
|
||||||
@include input-base();
|
|
||||||
}
|
|
||||||
.clear-icon,
|
.clear-icon,
|
||||||
.menu-icon,
|
.menu-icon,
|
||||||
&:before {
|
&:before {
|
||||||
|
@ -34,18 +34,7 @@ body.touch {
|
|||||||
line-height: $mobileTreeItemH !important;
|
line-height: $mobileTreeItemH !important;
|
||||||
.view-control {
|
.view-control {
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
margin-right: $interiorMargin;
|
width: ceil($mobileTreeItemH * 0.5);
|
||||||
width: ceil($mobileTreeItemH * 0.75);
|
|
||||||
&.has-children {
|
|
||||||
&:before {
|
|
||||||
content: $glyph-icon-arrow-down;
|
|
||||||
left: 50%;
|
|
||||||
@include transform(translateX(-50%) rotate(-90deg));
|
|
||||||
}
|
|
||||||
&.expanded:before {
|
|
||||||
@include transform(translateX(-50%) rotate(0deg));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.t-object-label {
|
.t-object-label {
|
||||||
line-height: inherit;
|
line-height: inherit;
|
||||||
|
@ -156,6 +156,8 @@
|
|||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
padding-right: $interiorMargin;
|
||||||
|
padding-bottom: $interiorMargin;
|
||||||
.field.l-input-med {
|
.field.l-input-med {
|
||||||
input[type='text'] {
|
input[type='text'] {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -193,6 +195,7 @@
|
|||||||
|
|
||||||
@include animToParams(overlayIn, $dur: $durLargeViewExpand, $delay: 0);
|
@include animToParams(overlayIn, $dur: $durLargeViewExpand, $delay: 0);
|
||||||
background: $colorBodyBg;
|
background: $colorBodyBg;
|
||||||
|
z-index: 101;
|
||||||
|
|
||||||
.abs.inner-holder {
|
.abs.inner-holder {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
@ -203,10 +206,19 @@
|
|||||||
@include animToParams(contentsIn, $dur: 50ms, $delay: $durLargeViewExpand * 1.25);
|
@include animToParams(contentsIn, $dur: 50ms, $delay: $durLargeViewExpand * 1.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hide View Large button
|
||||||
.t-btn-view-large {
|
.t-btn-view-large {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
z-index: 101;
|
|
||||||
|
// But show View Large button when it's nested inside a Layout
|
||||||
|
.t-frame-inner .t-frame-inner .t-btn-view-large { display: block; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// When multiple Large Views are visible, hide the blocker for all but the first
|
||||||
|
& + .l-large-view {
|
||||||
|
.blocker {
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
208
platform/commonUI/general/res/sass/plots/_legend.scss
Normal file
208
platform/commonUI/general/res/sass/plots/_legend.scss
Normal file
@ -0,0 +1,208 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2017, 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
.gl-plot {
|
||||||
|
.gl-plot-legend {
|
||||||
|
min-height: $plotLegendH;
|
||||||
|
|
||||||
|
.view-control {
|
||||||
|
font-size: 1em;
|
||||||
|
margin-right: $interiorMarginSm;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
table-layout: fixed;
|
||||||
|
tr {
|
||||||
|
display: table-row;
|
||||||
|
}
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
@include ellipsize(); // Note: this won't work if table-layout uses anything other than fixed.
|
||||||
|
display: table-cell;
|
||||||
|
padding: 1px 3px; // Tighter than standard tabular padding
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hover-on-plot {
|
||||||
|
// User is hovering over the plot to get a value at a point
|
||||||
|
.hover-value-enabled {
|
||||||
|
background-color: $legendHoverValueBg;
|
||||||
|
border-radius: $smallCr;
|
||||||
|
padding: 0 $interiorMarginSm;
|
||||||
|
&:before {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
&.cursor-hover,
|
||||||
|
.value-to-display-nearestTimestamp,
|
||||||
|
.value-to-display-nearestValue
|
||||||
|
{
|
||||||
|
@extend .icon-crosshair-12px;
|
||||||
|
&:before {
|
||||||
|
font-size: 9px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.value-to-display-min:before {
|
||||||
|
content: 'MIN ';
|
||||||
|
}
|
||||||
|
&.value-to-display-max:before {
|
||||||
|
content: 'MAX ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.plot-legend-collapsed .plot-wrapper-expanded-legend { display: none; }
|
||||||
|
&.plot-legend-expanded .plot-wrapper-collapsed-legend { display: none; }
|
||||||
|
|
||||||
|
/***************** GENERAL STYLES, ALL STATES */
|
||||||
|
.plot-legend-item {
|
||||||
|
// General styles for legend items, both expanded and collapsed legend states
|
||||||
|
.plot-series-color-swatch {
|
||||||
|
border-radius: $smallCr;
|
||||||
|
border: 1px solid $colorBodyBg;
|
||||||
|
display: inline-block;
|
||||||
|
height: $plotSwatchD;
|
||||||
|
width: $plotSwatchD;
|
||||||
|
}
|
||||||
|
.plot-series-name {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plot-series-value {
|
||||||
|
@include ellipsize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************** GENERAL STYLES, COLLAPSED */
|
||||||
|
&.plot-legend-collapsed {
|
||||||
|
// .plot-legend-item is a span of spans.
|
||||||
|
&.plot-legend-top .gl-plot-legend { margin-bottom: $interiorMargin; }
|
||||||
|
&.plot-legend-bottom .gl-plot-legend { margin-top: $interiorMargin; }
|
||||||
|
&.plot-legend-right .gl-plot-legend { margin-left: $interiorMargin; }
|
||||||
|
&.plot-legend-left .gl-plot-legend { margin-right: $interiorMargin; }
|
||||||
|
|
||||||
|
.plot-legend-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
&:not(:first-child) {
|
||||||
|
margin-left: $interiorMarginLg;
|
||||||
|
}
|
||||||
|
.plot-series-swatch-and-name,
|
||||||
|
.plot-series-value {
|
||||||
|
@include ellipsize();
|
||||||
|
flex: 1 1 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plot-series-swatch-and-name {
|
||||||
|
margin-right: $interiorMarginSm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plot-series-value {
|
||||||
|
text-align: left;
|
||||||
|
width: 170px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************** GENERAL STYLES, EXPANDED */
|
||||||
|
&.plot-legend-expanded {
|
||||||
|
.gl-plot-legend {
|
||||||
|
max-height: 70%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plot-wrapper-expanded-legend {
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.plot-legend-top .gl-plot-legend {
|
||||||
|
margin-bottom: $interiorMargin;
|
||||||
|
}
|
||||||
|
&.plot-legend-bottom .gl-plot-legend {
|
||||||
|
margin-top: $interiorMargin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************** TOP OR BOTTOM */
|
||||||
|
&.plot-legend-top,
|
||||||
|
&.plot-legend-bottom {
|
||||||
|
// General styles when legend is on the top or bottom
|
||||||
|
@extend .l-flex-col;
|
||||||
|
&.plot-legend-collapsed {
|
||||||
|
// COLLAPSED ON TOP OR BOTTOM
|
||||||
|
.plot-wrapper-collapsed-legend {
|
||||||
|
display: flex;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************** EITHER SIDE */
|
||||||
|
&.plot-legend-left,
|
||||||
|
&.plot-legend-right {
|
||||||
|
@extend .l-flex-row;
|
||||||
|
// If the legend is expanded, use flex-col instead so that the legend gets the width it needs.
|
||||||
|
&.plot-legend-expanded {
|
||||||
|
// EXPANDED, ON EITHER SIDE
|
||||||
|
@extend .l-flex-col;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.plot-legend-collapsed {
|
||||||
|
// COLLAPSED, ON EITHER SIDE
|
||||||
|
.gl-plot-legend {
|
||||||
|
max-height: inherit;
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
.plot-wrapper-collapsed-legend {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column nowrap;
|
||||||
|
min-width: 0;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.plot-legend-item {
|
||||||
|
margin-bottom: 1px;
|
||||||
|
margin-left: 0;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
.plot-series-swatch-and-name {
|
||||||
|
flex: 0 1 auto;
|
||||||
|
min-width: 20%;
|
||||||
|
}
|
||||||
|
.plot-series-value {
|
||||||
|
flex: 0 1 auto;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************** ON BOTTOM OR RIGHT */
|
||||||
|
&.plot-legend-right:not(.plot-legend-expanded),
|
||||||
|
&.plot-legend-bottom {
|
||||||
|
.gl-plot-legend {
|
||||||
|
order: 2;
|
||||||
|
}
|
||||||
|
.plot-wrapper-axis-and-display-area {
|
||||||
|
order: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -20,10 +20,42 @@
|
|||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
.abs.holder-plot {
|
.abs.holder-plot {
|
||||||
// Fend off the scrollbar when less than min-height;
|
right: $interiorMargin; // Fend off the scrollbar when less than min-height;
|
||||||
right: $interiorMargin;
|
.t-object-alert.t-alert-unsynced {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/********************************************* STACKED PLOT LAYOUT */
|
||||||
|
.t-plot-stacked {
|
||||||
|
.l-view-section {
|
||||||
|
// Make this a flex container
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column nowrap;
|
||||||
|
.gl-plot.child-frame {
|
||||||
|
mct-plot {
|
||||||
|
display: flex;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
flex: 1 1 auto;
|
||||||
|
&:not(:first-child) {
|
||||||
|
margin-top: $interiorMargin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.s-status-timeconductor-unsynced .holder-plot {
|
||||||
|
.t-object-alert.t-alert-unsynced {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.gl-plot {
|
.gl-plot {
|
||||||
color: $colorPlotFg;
|
color: $colorPlotFg;
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
@ -32,6 +64,19 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
min-height: $plotMinH;
|
min-height: $plotMinH;
|
||||||
|
|
||||||
|
/********************************************* AXIS AND DISPLAY AREA */
|
||||||
|
.plot-wrapper-axis-and-display-area {
|
||||||
|
margin-top: $interiorMargin; // Keep the top tick label from getting clipped
|
||||||
|
position: relative;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
.t-object-alert {
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
font-size: 1.5em;
|
||||||
|
top: $interiorMarginSm; left: $interiorMarginSm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.gl-plot-wrapper-display-area-and-x-axis {
|
.gl-plot-wrapper-display-area-and-x-axis {
|
||||||
// Holds the plot area and the X-axis only
|
// Holds the plot area and the X-axis only
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -49,7 +94,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.gl-plot-axis-area.gl-plot-x {
|
.gl-plot-axis-area.gl-plot-x {
|
||||||
//@include test(green);
|
|
||||||
top: auto;
|
top: auto;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
@ -63,7 +107,7 @@
|
|||||||
.gl-plot-axis-area {
|
.gl-plot-axis-area {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
&.gl-plot-y {
|
&.gl-plot-y {
|
||||||
top: $plotLegendH + $interiorMargin;
|
top: nth($plotDisplayArea, 1);
|
||||||
right: auto;
|
right: auto;
|
||||||
bottom: nth($plotDisplayArea, 3);
|
bottom: nth($plotDisplayArea, 3);
|
||||||
left: 0;
|
left: 0;
|
||||||
@ -158,17 +202,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.gl-plot-legend {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: auto;
|
|
||||||
left: 0;
|
|
||||||
height: $plotLegendH;
|
|
||||||
overflow-x: hidden;
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************** Limits and Out-of-Bounds data */
|
/****************************** Limits and Out-of-Bounds data */
|
||||||
|
|
||||||
.l-limit-bar,
|
.l-limit-bar,
|
||||||
@ -235,39 +268,6 @@
|
|||||||
border: 1px solid $colorPlotAreaBorder;
|
border: 1px solid $colorPlotAreaBorder;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gl-plot-legend,
|
|
||||||
.legend {
|
|
||||||
.plot-legend-item,
|
|
||||||
.legend-item {
|
|
||||||
display: inline-block;
|
|
||||||
margin-right: $interiorMarginLg;
|
|
||||||
margin-bottom: $interiorMarginSm;
|
|
||||||
span {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.plot-color-swatch,
|
|
||||||
.color-swatch {
|
|
||||||
border-radius: 2px;
|
|
||||||
display: inline-block;
|
|
||||||
height: $plotSwatchD;
|
|
||||||
width: $plotSwatchD;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.gl-plot-legend {
|
|
||||||
.plot-legend-item {
|
|
||||||
border-radius: $smallCr;
|
|
||||||
line-height: 1.5em;
|
|
||||||
padding: 0px $itemPadLR;
|
|
||||||
.plot-color-swatch {
|
|
||||||
border: 1px solid $colorBodyBg;
|
|
||||||
height: $plotSwatchD + 1;
|
|
||||||
width: $plotSwatchD + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tick {
|
.tick {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
border: 0 $colorPlotHash solid;
|
border: 0 $colorPlotHash solid;
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
ul.tree {
|
ul.tree {
|
||||||
@include menuUlReset();
|
@include menuUlReset();
|
||||||
@include user-select(none);
|
@include user-select(none);
|
||||||
li {
|
> li {
|
||||||
display: block;
|
display: block;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@ -54,18 +54,10 @@ ul.tree {
|
|||||||
color: $colorItemTreeVC;
|
color: $colorItemTreeVC;
|
||||||
font-size: 0.75em;
|
font-size: 0.75em;
|
||||||
margin-right: $interiorMargin;
|
margin-right: $interiorMargin;
|
||||||
height: 100%;
|
|
||||||
line-height: inherit;
|
|
||||||
width: $treeVCW;
|
width: $treeVCW;
|
||||||
&.has-children {
|
&.no-children {
|
||||||
&:before {
|
&:before {
|
||||||
position: absolute;
|
content:"";
|
||||||
@include trans-prop-nice(transform, 100ms);
|
|
||||||
content: "\e904";
|
|
||||||
@include transform-origin(center);
|
|
||||||
}
|
|
||||||
&.expanded:before {
|
|
||||||
@include transform(rotate(90deg));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,28 +23,43 @@
|
|||||||
$ohH: $btnFrameH;
|
$ohH: $btnFrameH;
|
||||||
$bc: $colorInteriorBorder;
|
$bc: $colorInteriorBorder;
|
||||||
&.child-frame.panel {
|
&.child-frame.panel {
|
||||||
background: $colorBodyBg;
|
|
||||||
border: 1px solid $bc;
|
|
||||||
z-index: 0; // Needed to prevent child-frame controls from showing through when another child-frame is above
|
z-index: 0; // Needed to prevent child-frame controls from showing through when another child-frame is above
|
||||||
&:hover {
|
&:not(.no-frame) {
|
||||||
border-color: lighten($bc, 10%);
|
background: $colorBodyBg;
|
||||||
|
border: 1px solid $bc;
|
||||||
|
&:hover {
|
||||||
|
border-color: lighten($bc, 10%);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.object-browse-bar {
|
.object-browse-bar {
|
||||||
font-size: 0.75em;
|
font-size: 0.75em;
|
||||||
height: $ohH;
|
height: $ohH;
|
||||||
line-height: $ohH;
|
line-height: $ohH;
|
||||||
|
.right {
|
||||||
|
@include trans-prop-nice-fade($controlFadeMs);
|
||||||
|
padding-left: $interiorMargin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.t-object-type-timer,
|
||||||
|
&.t-object-type-clock,
|
||||||
|
&.t-object-type-hyperlink {
|
||||||
|
// Hide the right side buttons for objects where they don't make sense
|
||||||
|
// Note that this will hide the view Switcher button if applied
|
||||||
|
// to an object that has it.
|
||||||
|
.object-browse-bar .right { display: none; }
|
||||||
}
|
}
|
||||||
|
|
||||||
> .object-holder.abs {
|
> .object-holder.abs {
|
||||||
top: $ohH + $interiorMargin;
|
top: $ohH + $interiorMargin;
|
||||||
}
|
}
|
||||||
.contents {
|
.contents {
|
||||||
$myM: $interiorMargin;
|
$m: $interiorMargin;
|
||||||
top: $myM;
|
top: $m;
|
||||||
right: $myM;
|
right: $m;
|
||||||
bottom: $myM;
|
bottom: $m;
|
||||||
left: $myM;
|
left: $m;
|
||||||
}
|
}
|
||||||
&.frame-template {
|
&.frame-template {
|
||||||
.s-button,
|
.s-button,
|
||||||
@ -67,19 +82,75 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.view-switcher {
|
.view-switcher {
|
||||||
margin-left: $interiorMargin; // Kick other top bar elements away when I'm present.
|
margin-right: $interiorMargin; // Kick other top bar elements away when I'm present.
|
||||||
// Hide the name when the view switcher is in a frame context
|
// Hide the name when the view switcher is in a frame context
|
||||||
.title-label {
|
.title-label {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.no-frame {
|
||||||
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
.object-browse-bar .right {
|
||||||
|
$m: 0; // $interiorMarginSm;
|
||||||
|
background: rgba(black, 0.3);
|
||||||
|
border-radius: $basicCr;
|
||||||
|
padding: $interiorMarginSm;
|
||||||
|
position: absolute;
|
||||||
|
top: $m; right: $m;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
&.t-frame-outer > .t-rep-frame {
|
||||||
|
&.contents {
|
||||||
|
$m: 2px;
|
||||||
|
top: $m;
|
||||||
|
right: $m;
|
||||||
|
bottom: $m;
|
||||||
|
left: $m;
|
||||||
|
}
|
||||||
|
> .t-frame-inner {
|
||||||
|
> .object-browse-bar .left {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
> .object-holder.abs {
|
||||||
|
top: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.t-frame-outer .s-input-inline {
|
||||||
|
// Prevent inline inputs from being edited when nested in a Layout
|
||||||
|
pointer-events: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/********************************************************** OBJECT TYPES */
|
||||||
|
.t-object-type-hyperlink {
|
||||||
|
.object-holder {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.l-hyperlink.s-button {
|
||||||
|
// When a hyperlink is a button in a frame, make it expand to fill out to the object-holder
|
||||||
|
@extend .abs;
|
||||||
|
.label {
|
||||||
|
@include ellipsize();
|
||||||
|
@include transform(translateY(-50%));
|
||||||
|
padding: 0 $interiorMargin;
|
||||||
|
position: absolute;
|
||||||
|
min-width: 0;
|
||||||
|
left: 0; right: 0;
|
||||||
|
text-align: center;
|
||||||
|
top: 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
body.desktop .frame {
|
body.desktop .frame {
|
||||||
// Hide local controls initially and show it them on hover when they're in an element that's in a frame context
|
// Hide local controls initially and show it them on hover when they're in an element that's in a frame context
|
||||||
// Frame template is used because we need to target the lowest nested frame
|
// Frame template is used because we need to target the lowest nested frame
|
||||||
.view-switcher,
|
.object-browse-bar .btn-bar {
|
||||||
.t-btn-view-large {
|
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
@ -87,8 +158,7 @@ body.desktop .frame {
|
|||||||
// Target the first descendant so that we only show the elements in the outermost container.
|
// Target the first descendant so that we only show the elements in the outermost container.
|
||||||
// Handles the case where we have layouts in layouts.
|
// Handles the case where we have layouts in layouts.
|
||||||
&:hover > .object-browse-bar {
|
&:hover > .object-browse-bar {
|
||||||
.view-switcher,
|
.btn-bar {
|
||||||
.t-btn-view-large {
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
pointer-events: inherit;
|
pointer-events: inherit;
|
||||||
}
|
}
|
||||||
|
@ -240,7 +240,9 @@ body.desktop .pane .mini-tab-icon.toggle-pane {
|
|||||||
.top-bar .buttons-main .s-button,
|
.top-bar .buttons-main .s-button,
|
||||||
.top-bar .s-menu-button,
|
.top-bar .s-menu-button,
|
||||||
.tool-bar .s-button,
|
.tool-bar .s-button,
|
||||||
.tool-bar .s-menu-button {
|
.tool-bar .s-menu-button,
|
||||||
|
.tool-bar .select,
|
||||||
|
.tool-bar .input-labeled {
|
||||||
$h: $btnToolbarH;
|
$h: $btnToolbarH;
|
||||||
height: $h;
|
height: $h;
|
||||||
line-height: $h;
|
line-height: $h;
|
||||||
|
@ -19,21 +19,36 @@
|
|||||||
* this source code distribution or the Licensing information page available
|
* this source code distribution or the Licensing information page available
|
||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
.s-selectable {
|
.s-hover-border {
|
||||||
border: 1px solid transparent;
|
border: 1px dotted transparent;
|
||||||
|
}
|
||||||
|
|
||||||
&.s-hover {
|
.s-status-editing {
|
||||||
// Styles when hovering over a selectable object
|
// Limit to editing mode until we have sub-object selection
|
||||||
border-color: $colorSelectableHov !important;
|
.s-hover-border {
|
||||||
|
// Show a border by default so user can see object bounds and empty objects
|
||||||
|
border: 1px dotted rgba($colorSelectableSelectedPrimary, 0.3) !important;
|
||||||
|
&:hover {
|
||||||
|
border-color: rgba($colorSelectableSelectedPrimary, 0.7) !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.s-selected {
|
.s-selected > .s-hover-border,
|
||||||
|
.s-selected.s-hover-border {
|
||||||
// Styles for a selected object. Also used by legacy Fixed Position/Panel objects.
|
// Styles for a selected object. Also used by legacy Fixed Position/Panel objects.
|
||||||
border-color: $colorSelectableSelectedPrimary !important;
|
border-color: $colorSelectableSelectedPrimary !important;
|
||||||
|
@include boxShdwLarge();
|
||||||
|
// Show edit-corners if you got 'em
|
||||||
|
.edit-corner {
|
||||||
|
display: block;
|
||||||
|
&:hover {
|
||||||
|
background-color: rgba($colorKey, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.s-moveable {
|
.s-selected > .s-moveable,
|
||||||
@include boxShdwLarge();
|
.s-selected.s-moveable {
|
||||||
cursor: move;
|
cursor: move;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -20,6 +20,7 @@
|
|||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
.tool-bar {
|
.tool-bar {
|
||||||
|
font-size: 0.7rem;
|
||||||
&.btn-bar {
|
&.btn-bar {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
@ -30,9 +31,7 @@
|
|||||||
input[type="search"],
|
input[type="search"],
|
||||||
input[type="number"] {
|
input[type="number"] {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
font-size: .8em;
|
|
||||||
height: $btnToolbarH;
|
height: $btnToolbarH;
|
||||||
margin-bottom: 1px;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
&.sm {
|
&.sm {
|
||||||
width: $btnToolbarH;
|
width: $btnToolbarH;
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
at runtime from the About dialog for additional information.
|
at runtime from the About dialog for additional information.
|
||||||
-->
|
-->
|
||||||
<!-- look at action-button for example -->
|
<!-- look at action-button for example -->
|
||||||
<span class="t-filter l-filter s-filter"
|
<span class="t-filter l-filter"
|
||||||
ng-controller="GetterSetterController">
|
ng-controller="GetterSetterController">
|
||||||
<input type="search"
|
<input type="search"
|
||||||
class="t-filter-input"
|
class="t-filter-input"
|
||||||
|
@ -108,8 +108,11 @@ define(
|
|||||||
|
|
||||||
getMetadata();
|
getMetadata();
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
|
var mutation = $scope.ngModel.selectedObject.getCapability('mutation');
|
||||||
|
var unlisten = mutation.listen(getMetadata);
|
||||||
|
$scope.$on('$destroy', unlisten);
|
||||||
|
}
|
||||||
return ObjectInspectorController;
|
return ObjectInspectorController;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -93,13 +93,21 @@ define(
|
|||||||
* @memberof platform/commonUI/general
|
* @memberof platform/commonUI/general
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
function MCTSplitPane($parse, $log, $interval) {
|
function MCTSplitPane($parse, $log, $interval, $window) {
|
||||||
function controller($scope, $element, $attrs) {
|
function controller($scope, $element, $attrs) {
|
||||||
var anchorKey = $attrs.anchor || DEFAULT_ANCHOR,
|
var anchorKey = $attrs.anchor || DEFAULT_ANCHOR,
|
||||||
|
positionParsed = $parse($attrs.position),
|
||||||
anchor,
|
anchor,
|
||||||
activeInterval,
|
activeInterval,
|
||||||
positionParsed = $parse($attrs.position),
|
position,
|
||||||
position; // Start undefined, until explicitly set
|
splitterSize,
|
||||||
|
|
||||||
|
alias = $attrs.alias !== undefined ?
|
||||||
|
"mctSplitPane-" + $attrs.alias : undefined,
|
||||||
|
|
||||||
|
//convert string to number from localStorage
|
||||||
|
userWidthPreference = $window.localStorage.getItem(alias) === null ?
|
||||||
|
undefined : Number($window.localStorage.getItem(alias));
|
||||||
|
|
||||||
// Get relevant size (height or width) of DOM element
|
// Get relevant size (height or width) of DOM element
|
||||||
function getSize(domElement) {
|
function getSize(domElement) {
|
||||||
@ -109,16 +117,18 @@ define(
|
|||||||
|
|
||||||
// Apply styles to child elements
|
// Apply styles to child elements
|
||||||
function updateChildren(children) {
|
function updateChildren(children) {
|
||||||
|
position = userWidthPreference || position;
|
||||||
|
|
||||||
// Pick out correct elements to update, flowing from
|
// Pick out correct elements to update, flowing from
|
||||||
// selected anchor edge.
|
// selected anchor edge.
|
||||||
var first = children.eq(anchor.reversed ? 2 : 0),
|
var first = children.eq(anchor.reversed ? 2 : 0),
|
||||||
splitter = children.eq(1),
|
splitter = children.eq(1),
|
||||||
last = children.eq(anchor.reversed ? 0 : 2),
|
last = children.eq(anchor.reversed ? 0 : 2),
|
||||||
splitterSize = getSize(splitter[0]),
|
|
||||||
firstSize;
|
firstSize;
|
||||||
|
|
||||||
|
splitterSize = getSize(splitter[0]);
|
||||||
first.css(anchor.edge, "0px");
|
first.css(anchor.edge, "0px");
|
||||||
first.css(anchor.dimension, (position - splitterSize) + 'px');
|
first.css(anchor.dimension, position + 'px');
|
||||||
|
|
||||||
// Get actual size (to obey min-width etc.)
|
// Get actual size (to obey min-width etc.)
|
||||||
firstSize = getSize(first[0]);
|
firstSize = getSize(first[0]);
|
||||||
@ -126,10 +136,9 @@ define(
|
|||||||
splitter.css(anchor.edge, firstSize + 'px');
|
splitter.css(anchor.edge, firstSize + 'px');
|
||||||
splitter.css(anchor.opposite, "auto");
|
splitter.css(anchor.opposite, "auto");
|
||||||
|
|
||||||
last.css(anchor.edge, (firstSize + splitterSize) + 'px');
|
last.css(anchor.edge, firstSize + splitterSize + 'px');
|
||||||
last.css(anchor.opposite, "0px");
|
last.css(anchor.opposite, '0px');
|
||||||
|
position = firstSize;
|
||||||
position = firstSize + splitterSize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update positioning of contained elements
|
// Update positioning of contained elements
|
||||||
@ -166,9 +175,22 @@ define(
|
|||||||
positionParsed.assign($scope, position);
|
positionParsed.assign($scope, position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setUserWidthPreference(value) {
|
||||||
|
if (alias) {
|
||||||
|
userWidthPreference = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function persistToLocalStorage(value) {
|
||||||
|
if (alias) {
|
||||||
|
$window.localStorage.setItem(alias, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Dynamically apply a CSS class to elements when the user
|
// Dynamically apply a CSS class to elements when the user
|
||||||
// is actively resizing
|
// is actively resizing
|
||||||
function toggleClass(classToToggle) {
|
function toggleClass(classToToggle) {
|
||||||
@ -196,18 +218,31 @@ define(
|
|||||||
activeInterval = $interval(function () {
|
activeInterval = $interval(function () {
|
||||||
getSetPosition(getSetPosition());
|
getSetPosition(getSetPosition());
|
||||||
}, POLLING_INTERVAL, 0, false);
|
}, POLLING_INTERVAL, 0, false);
|
||||||
|
|
||||||
// ...and stop polling when we're destroyed.
|
// ...and stop polling when we're destroyed.
|
||||||
$scope.$on('$destroy', function () {
|
$scope.$on('$destroy', function () {
|
||||||
$interval.cancel(activeInterval);
|
$interval.cancel(activeInterval);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// Interface exposed by controller, for mct-splitter to user
|
// Interface exposed by controller, for mct-splitter to user
|
||||||
return {
|
return {
|
||||||
position: getSetPosition,
|
|
||||||
toggleClass: toggleClass,
|
|
||||||
anchor: function () {
|
anchor: function () {
|
||||||
return anchor;
|
return anchor;
|
||||||
|
},
|
||||||
|
position: function (newPosition) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
return getSetPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
setUserWidthPreference(newPosition);
|
||||||
|
return getSetPosition(newPosition);
|
||||||
|
},
|
||||||
|
startResizing: function () {
|
||||||
|
toggleClass('resizing');
|
||||||
|
},
|
||||||
|
endResizing: function (finalPosition) {
|
||||||
|
persistToLocalStorage(finalPosition);
|
||||||
|
toggleClass('resizing');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -219,9 +254,7 @@ define(
|
|||||||
controller: ['$scope', '$element', '$attrs', controller]
|
controller: ['$scope', '$element', '$attrs', controller]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return MCTSplitPane;
|
return MCTSplitPane;
|
||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -37,15 +37,16 @@ define(
|
|||||||
*/
|
*/
|
||||||
function MCTSplitter() {
|
function MCTSplitter() {
|
||||||
function link(scope, element, attrs, mctSplitPane) {
|
function link(scope, element, attrs, mctSplitPane) {
|
||||||
var initialPosition;
|
var initialPosition,
|
||||||
|
newPosition;
|
||||||
|
|
||||||
element.addClass("splitter");
|
element.addClass("splitter");
|
||||||
|
|
||||||
scope.splitter = {
|
scope.splitter = {
|
||||||
// Begin moving this splitter
|
// Begin moving this splitter
|
||||||
startMove: function () {
|
startMove: function () {
|
||||||
|
mctSplitPane.startResizing();
|
||||||
initialPosition = mctSplitPane.position();
|
initialPosition = mctSplitPane.position();
|
||||||
mctSplitPane.toggleClass('resizing');
|
|
||||||
},
|
},
|
||||||
// Handle user changes to splitter position
|
// Handle user changes to splitter position
|
||||||
move: function (delta) {
|
move: function (delta) {
|
||||||
@ -55,12 +56,16 @@ define(
|
|||||||
(anchor.reversed ? -1 : 1);
|
(anchor.reversed ? -1 : 1);
|
||||||
|
|
||||||
// Update the position of this splitter
|
// Update the position of this splitter
|
||||||
mctSplitPane.position(initialPosition + pixelDelta);
|
newPosition = initialPosition + pixelDelta;
|
||||||
|
|
||||||
|
if (initialPosition !== newPosition) {
|
||||||
|
mctSplitPane.position(newPosition);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// Grab the event when the user is done moving
|
// Grab the event when the user is done moving
|
||||||
// the splitter and pass it on
|
// the splitter and pass it on
|
||||||
endMove: function () {
|
endMove: function () {
|
||||||
mctSplitPane.toggleClass('resizing');
|
mctSplitPane.endResizing(newPosition);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -83,4 +88,3 @@ define(
|
|||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -83,9 +83,9 @@ define([
|
|||||||
this.activeObject = domainObject;
|
this.activeObject = domainObject;
|
||||||
|
|
||||||
if (domainObject && domainObject.hasCapability('composition')) {
|
if (domainObject && domainObject.hasCapability('composition')) {
|
||||||
$(this.toggleView.elements()).addClass('has-children');
|
$(this.toggleView.elements()).removeClass('no-children');
|
||||||
} else {
|
} else {
|
||||||
$(this.toggleView.elements()).removeClass('has-children');
|
$(this.toggleView.elements()).addClass('no-children');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (domainObject && domainObject.hasCapability('status')) {
|
if (domainObject && domainObject.hasCapability('status')) {
|
||||||
|
@ -39,10 +39,18 @@ define(
|
|||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
mockScope = jasmine.createSpyObj(
|
mockScope = jasmine.createSpyObj(
|
||||||
"$scope",
|
"$scope",
|
||||||
["$watch"]
|
["$watch", "$on"]
|
||||||
);
|
);
|
||||||
mockScope.ngModel = {};
|
mockScope.ngModel = {};
|
||||||
mockScope.ngModel.selectedObject = 'mock selected object';
|
mockScope.ngModel.selectedObject = {
|
||||||
|
getCapability: function () {
|
||||||
|
return {
|
||||||
|
listen: function () {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
mockObjectService = jasmine.createSpyObj(
|
mockObjectService = jasmine.createSpyObj(
|
||||||
"objectService",
|
"objectService",
|
||||||
|
@ -38,7 +38,8 @@ define(
|
|||||||
mockLog,
|
mockLog,
|
||||||
mockInterval,
|
mockInterval,
|
||||||
mockParsed,
|
mockParsed,
|
||||||
mctSplitPane;
|
mctSplitPane,
|
||||||
|
mockWindow = {};
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
mockParse = jasmine.createSpy('$parse');
|
mockParse = jasmine.createSpy('$parse');
|
||||||
@ -48,13 +49,23 @@ define(
|
|||||||
mockInterval.cancel = jasmine.createSpy('mockCancel');
|
mockInterval.cancel = jasmine.createSpy('mockCancel');
|
||||||
mockParsed = jasmine.createSpy('parsed');
|
mockParsed = jasmine.createSpy('parsed');
|
||||||
mockParsed.assign = jasmine.createSpy('assign');
|
mockParsed.assign = jasmine.createSpy('assign');
|
||||||
|
|
||||||
mockParse.andReturn(mockParsed);
|
mockParse.andReturn(mockParsed);
|
||||||
|
|
||||||
|
mockWindow.localStorage = {
|
||||||
|
store: {},
|
||||||
|
setItem: function (key, value) {
|
||||||
|
this.store[key] = value;
|
||||||
|
},
|
||||||
|
getItem: function (key) {
|
||||||
|
return this.store[key];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
mctSplitPane = new MCTSplitPane(
|
mctSplitPane = new MCTSplitPane(
|
||||||
mockParse,
|
mockParse,
|
||||||
mockLog,
|
mockLog,
|
||||||
mockInterval
|
mockInterval,
|
||||||
|
mockWindow
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -85,7 +96,7 @@ define(
|
|||||||
jasmine.createSpyObj('$scope', ['$apply', '$watch', '$on']);
|
jasmine.createSpyObj('$scope', ['$apply', '$watch', '$on']);
|
||||||
mockElement =
|
mockElement =
|
||||||
jasmine.createSpyObj('element', JQLITE_METHODS);
|
jasmine.createSpyObj('element', JQLITE_METHODS);
|
||||||
testAttrs = {};
|
testAttrs = {alias: 'rightSide'};
|
||||||
mockChildren =
|
mockChildren =
|
||||||
jasmine.createSpyObj('children', JQLITE_METHODS);
|
jasmine.createSpyObj('children', JQLITE_METHODS);
|
||||||
mockFirstPane =
|
mockFirstPane =
|
||||||
@ -129,7 +140,7 @@ define(
|
|||||||
|
|
||||||
it("exposes its splitter's initial position", function () {
|
it("exposes its splitter's initial position", function () {
|
||||||
expect(controller.position()).toEqual(
|
expect(controller.position()).toEqual(
|
||||||
mockFirstPane[0].offsetWidth + mockSplitter[0].offsetWidth
|
mockFirstPane[0].offsetWidth
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -142,10 +153,14 @@ define(
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("allows classes to be toggled on contained elements", function () {
|
it("applies resizing class to children when resizing", function () {
|
||||||
controller.toggleClass('resizing');
|
controller.startResizing();
|
||||||
expect(mockChildren.toggleClass)
|
expect(mockChildren.toggleClass).toHaveBeenCalledWith('resizing');
|
||||||
.toHaveBeenCalledWith('resizing');
|
});
|
||||||
|
|
||||||
|
it("removes resizing class from children when resizing action ends", function () {
|
||||||
|
controller.endResizing(0);
|
||||||
|
expect(mockChildren.toggleClass).toHaveBeenCalledWith('resizing');
|
||||||
});
|
});
|
||||||
|
|
||||||
it("allows positions to be set", function () {
|
it("allows positions to be set", function () {
|
||||||
@ -153,7 +168,7 @@ define(
|
|||||||
controller.position(testValue);
|
controller.position(testValue);
|
||||||
expect(mockFirstPane.css).toHaveBeenCalledWith(
|
expect(mockFirstPane.css).toHaveBeenCalledWith(
|
||||||
'width',
|
'width',
|
||||||
(testValue - mockSplitter[0].offsetWidth) + 'px'
|
(testValue) + 'px'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -185,11 +200,11 @@ define(
|
|||||||
mockFirstPane[0].offsetWidth += 100;
|
mockFirstPane[0].offsetWidth += 100;
|
||||||
// Should not reflect the change yet
|
// Should not reflect the change yet
|
||||||
expect(controller.position()).not.toEqual(
|
expect(controller.position()).not.toEqual(
|
||||||
mockFirstPane[0].offsetWidth + mockSplitter[0].offsetWidth
|
mockFirstPane[0].offsetWidth
|
||||||
);
|
);
|
||||||
mockInterval.mostRecentCall.args[0]();
|
mockInterval.mostRecentCall.args[0]();
|
||||||
expect(controller.position()).toEqual(
|
expect(controller.position()).toEqual(
|
||||||
mockFirstPane[0].offsetWidth + mockSplitter[0].offsetWidth
|
mockFirstPane[0].offsetWidth
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -198,6 +213,12 @@ define(
|
|||||||
fireOn('$destroy');
|
fireOn('$destroy');
|
||||||
expect(mockInterval.cancel).toHaveBeenCalled();
|
expect(mockInterval.cancel).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("saves user preference to localStorage when user is done resizing", function () {
|
||||||
|
controller.endResizing(100);
|
||||||
|
expect(Number(mockWindow.localStorage.getItem('mctSplitPane-rightSide'))).toEqual(100);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -57,7 +57,7 @@ define(
|
|||||||
testAttrs = {};
|
testAttrs = {};
|
||||||
mockSplitPane = jasmine.createSpyObj(
|
mockSplitPane = jasmine.createSpyObj(
|
||||||
'mctSplitPane',
|
'mctSplitPane',
|
||||||
['position', 'toggleClass', 'anchor']
|
['position', 'startResizing', 'endResizing', 'anchor']
|
||||||
);
|
);
|
||||||
|
|
||||||
mctSplitter.link(
|
mctSplitter.link(
|
||||||
@ -86,9 +86,9 @@ define(
|
|||||||
mockScope.splitter.startMove();
|
mockScope.splitter.startMove();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("adds a 'resizing' class", function () {
|
it("tell's the splitter when it is resizing", function () {
|
||||||
expect(mockSplitPane.toggleClass)
|
expect(mockSplitPane.startResizing)
|
||||||
.toHaveBeenCalledWith('resizing');
|
.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("repositions during drag", function () {
|
it("repositions during drag", function () {
|
||||||
@ -97,11 +97,10 @@ define(
|
|||||||
.toHaveBeenCalledWith(testPosition + 10);
|
.toHaveBeenCalledWith(testPosition + 10);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("removes the 'resizing' class when finished", function () {
|
it("tell's the splitter when it is done resizing", function () {
|
||||||
mockSplitPane.toggleClass.reset();
|
mockScope.splitter.move([10,0]);
|
||||||
mockScope.splitter.endMove();
|
mockScope.splitter.endMove();
|
||||||
expect(mockSplitPane.toggleClass)
|
expect(mockSplitPane.endResizing).toHaveBeenCalledWith(testPosition + 10);
|
||||||
.toHaveBeenCalledWith('resizing');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -53,9 +53,15 @@ $timeControllerToiLineColor: #00c2ff;
|
|||||||
$timeControllerToiLineColorHov: #fff;
|
$timeControllerToiLineColorHov: #fff;
|
||||||
$colorTransLucBg: #666; // Used as a visual blocking element over variable backgrounds, like imagery
|
$colorTransLucBg: #666; // Used as a visual blocking element over variable backgrounds, like imagery
|
||||||
|
|
||||||
// General Colors
|
// Foundation Colors
|
||||||
$colorAlt1: #ffc700;
|
$colorAlt1: #ffc700;
|
||||||
$colorAlert: #ff3c00;
|
$colorAlert: #ff3c00;
|
||||||
|
$colorWarningHi: #cc0000;
|
||||||
|
$colorWarningLo: #ff9900;
|
||||||
|
$colorDiagnostic: #a4b442;
|
||||||
|
$colorCommand: #3693bd;
|
||||||
|
$colorInfo: #2294a2;
|
||||||
|
$colorOk: #33cc33;
|
||||||
$colorIconLink: #49dedb;
|
$colorIconLink: #49dedb;
|
||||||
$colorPausedBg: #c56f01;
|
$colorPausedBg: #c56f01;
|
||||||
$colorPausedFg: #fff;
|
$colorPausedFg: #fff;
|
||||||
@ -84,8 +90,8 @@ $colorCreateMenuText: $colorMenuFg;
|
|||||||
// Form colors
|
// Form colors
|
||||||
$colorCheck: $colorKey;
|
$colorCheck: $colorKey;
|
||||||
$colorFormRequired: $colorAlt1;
|
$colorFormRequired: $colorAlt1;
|
||||||
$colorFormValid: #33cc33;
|
$colorFormValid: $colorOk;
|
||||||
$colorFormError: #990000;
|
$colorFormError: $colorWarningHi;
|
||||||
$colorFormInvalid: #ff3300;
|
$colorFormInvalid: #ff3300;
|
||||||
$colorFormFieldErrorBg: $colorFormError;
|
$colorFormFieldErrorBg: $colorFormError;
|
||||||
$colorFormFieldErrorFg: rgba(#fff, 0.6);
|
$colorFormFieldErrorFg: rgba(#fff, 0.6);
|
||||||
@ -109,8 +115,8 @@ $colorInspectorSectionHeaderFg: pullForward($colorInspectorBg, 40%);
|
|||||||
// Status colors, mainly used for messaging and item ancillary symbols
|
// Status colors, mainly used for messaging and item ancillary symbols
|
||||||
$colorStatusFg: #ccc;
|
$colorStatusFg: #ccc;
|
||||||
$colorStatusDefault: #ccc;
|
$colorStatusDefault: #ccc;
|
||||||
$colorStatusInfo: #62ba72;
|
$colorStatusInfo: $colorInfo;
|
||||||
$colorStatusAlert: #ffa66d;
|
$colorStatusAlert: $colorAlert;
|
||||||
$colorStatusError: #d4585c;
|
$colorStatusError: #d4585c;
|
||||||
$colorStatusAvailable: $colorKey;
|
$colorStatusAvailable: $colorKey;
|
||||||
$colorStatusBtnBg: $colorBtnBg;
|
$colorStatusBtnBg: $colorBtnBg;
|
||||||
@ -125,14 +131,14 @@ $animPausedPulseDur: 500ms;
|
|||||||
$colorSelectBg: $colorBtnBg;
|
$colorSelectBg: $colorBtnBg;
|
||||||
$colorSelectFg: $colorBtnFg;
|
$colorSelectFg: $colorBtnFg;
|
||||||
|
|
||||||
// Limits and staleness colors
|
// Limits, status and staleness colors
|
||||||
$colorTelemFresh: pullForward($colorBodyFg, 20%);
|
$colorTelemFresh: pullForward($colorBodyFg, 20%);
|
||||||
$colorTelemStale: pushBack($colorBodyFg, 20%);
|
$colorTelemStale: pushBack($colorBodyFg, 20%);
|
||||||
$styleTelemStale: italic;
|
$styleTelemStale: italic;
|
||||||
$colorLimitYellowBg: rgba(#ffaa00, 0.3);
|
$colorLimitYellowBg: rgba($colorWarningLo, 0.3);
|
||||||
$colorLimitYellowIc: #ffaa00;
|
$colorLimitYellowIc: $colorWarningLo;
|
||||||
$colorLimitRedBg: rgba(red, 0.3);
|
$colorLimitRedBg: rgba($colorWarningHi, 0.3);
|
||||||
$colorLimitRedIc: red;
|
$colorLimitRedIc: $colorWarningHi;
|
||||||
|
|
||||||
// Bubble colors
|
// Bubble colors
|
||||||
$colorInfoBubbleBg: #ddd;
|
$colorInfoBubbleBg: #ddd;
|
||||||
@ -175,6 +181,8 @@ $colorPlotHash: $colorTick;
|
|||||||
$stylePlotHash: dashed;
|
$stylePlotHash: dashed;
|
||||||
$colorPlotAreaBorder: $colorInteriorBorder;
|
$colorPlotAreaBorder: $colorInteriorBorder;
|
||||||
$colorPlotLabelFg: pushBack($colorPlotFg, 20%);
|
$colorPlotLabelFg: pushBack($colorPlotFg, 20%);
|
||||||
|
$legendCollapsedNameMaxW: 50%;
|
||||||
|
$legendHoverValueBg: rgba($colorBodyFg, 0.1);
|
||||||
|
|
||||||
// Tree
|
// Tree
|
||||||
$colorItemTreeHoverBg: pullForward($colorBodyBg, $hoverRatioPercent);
|
$colorItemTreeHoverBg: pullForward($colorBodyBg, $hoverRatioPercent);
|
||||||
@ -191,14 +199,19 @@ $colorItemTreeVCHover: pullForward($colorItemTreeVC, 20%);
|
|||||||
$colorItemTreeSelectedVC: $colorItemTreeVC;
|
$colorItemTreeSelectedVC: $colorItemTreeVC;
|
||||||
$shdwItemTreeIcon: 0.6;
|
$shdwItemTreeIcon: 0.6;
|
||||||
|
|
||||||
|
// Images
|
||||||
|
$colorThumbHoverBg: $colorItemTreeHoverBg;
|
||||||
|
|
||||||
// Scrollbar
|
// Scrollbar
|
||||||
$scrollbarTrackSize: 10px;
|
$scrollbarTrackSize: 7px;
|
||||||
$scrollbarTrackShdw: rgba(#000, 0.7) 0 1px 5px;
|
$scrollbarTrackShdw: rgba(#000, 0.5) 0 1px 5px;
|
||||||
$scrollbarTrackColorBg: rgba(#000, 0.4);
|
$scrollbarTrackColorBg: transparent; //rgba(#000, 0.4);
|
||||||
$scrollbarThumbColor: pullForward($colorBodyBg, 10%);
|
$scrollbarThumbColor: pullForward($colorBodyBg, 10%);
|
||||||
$scrollbarThumbColorHov: pullForward($scrollbarThumbColor, 2%);
|
$scrollbarThumbColorHov: pullForward($scrollbarThumbColor, 2%);
|
||||||
$scrollbarThumbColorOverlay: pullForward($colorOvrBg, 10%);
|
$scrollbarThumbColorOverlay: pullForward($colorOvrBg, 10%);
|
||||||
$scrollbarThumbColorOverlayHov: pullForward($scrollbarThumbColorOverlay, 2%);
|
$scrollbarThumbColorOverlayHov: pullForward($scrollbarThumbColorOverlay, 2%);
|
||||||
|
$scrollbarThumbColorMenu: pullForward($colorMenuBg, 20%);
|
||||||
|
$scrollbarThumbColorMenuHov: pullForward($scrollbarThumbColorMenu, 2%);
|
||||||
|
|
||||||
// Splitter
|
// Splitter
|
||||||
// All splitterD* values MUST both be either odd or even numbers
|
// All splitterD* values MUST both be either odd or even numbers
|
||||||
|
@ -13,3 +13,10 @@
|
|||||||
// For dark interfaces, darker things move back - opposite for light interfaces
|
// For dark interfaces, darker things move back - opposite for light interfaces
|
||||||
@return darken($c, $p);
|
@return darken($c, $p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@function bgFg($c) {
|
||||||
|
// Given a single color, return valid background and foreground versions of that color
|
||||||
|
$bg: darken($c, 20%);
|
||||||
|
$fg: lighten($c, 20%);
|
||||||
|
@return $bg, $fg;
|
||||||
|
}
|
||||||
|
@ -53,9 +53,15 @@ $timeControllerToiLineColor: $colorBodyFg;
|
|||||||
$timeControllerToiLineColorHov: #0052b5;
|
$timeControllerToiLineColorHov: #0052b5;
|
||||||
$colorTransLucBg: #666; // Used as a visual blocking element over variable backgrounds, like imagery
|
$colorTransLucBg: #666; // Used as a visual blocking element over variable backgrounds, like imagery
|
||||||
|
|
||||||
// General Colors
|
// Foundation Colors
|
||||||
$colorAlt1: #776ba2;
|
$colorAlt1: #776ba2;
|
||||||
$colorAlert: #ff3c00;
|
$colorAlert: #ff3c00;
|
||||||
|
$colorWarningHi: #990000;
|
||||||
|
$colorWarningLo: #ff9900;
|
||||||
|
$colorDiagnostic: #a4b442;
|
||||||
|
$colorCommand: #3693bd;
|
||||||
|
$colorInfo: #2294a2;
|
||||||
|
$colorOk: #33cc33;
|
||||||
$colorIconLink: #49dedb;
|
$colorIconLink: #49dedb;
|
||||||
$colorPausedBg: #ff9900;
|
$colorPausedBg: #ff9900;
|
||||||
$colorPausedFg: #fff;
|
$colorPausedFg: #fff;
|
||||||
@ -84,8 +90,8 @@ $colorCreateMenuText: $colorBodyFg;
|
|||||||
// Form colors
|
// Form colors
|
||||||
$colorCheck: $colorKey;
|
$colorCheck: $colorKey;
|
||||||
$colorFormRequired: $colorKey;
|
$colorFormRequired: $colorKey;
|
||||||
$colorFormValid: #33cc33;
|
$colorFormValid: $colorOk;
|
||||||
$colorFormError: #990000;
|
$colorFormError: $colorWarningHi;
|
||||||
$colorFormInvalid: #ff2200;
|
$colorFormInvalid: #ff2200;
|
||||||
$colorFormFieldErrorBg: $colorFormError;
|
$colorFormFieldErrorBg: $colorFormError;
|
||||||
$colorFormFieldErrorFg: rgba(#fff, 0.6);
|
$colorFormFieldErrorFg: rgba(#fff, 0.6);
|
||||||
@ -107,7 +113,7 @@ $colorInspectorSectionHeaderBg: pullForward($colorInspectorBg, 5%);
|
|||||||
$colorInspectorSectionHeaderFg: pullForward($colorInspectorBg, 40%);
|
$colorInspectorSectionHeaderFg: pullForward($colorInspectorBg, 40%);
|
||||||
|
|
||||||
// Status colors, mainly used for messaging and item ancillary symbols
|
// Status colors, mainly used for messaging and item ancillary symbols
|
||||||
$colorStatusFg: #fff;
|
$colorStatusFg: #999;
|
||||||
$colorStatusDefault: #ccc;
|
$colorStatusDefault: #ccc;
|
||||||
$colorStatusInfo: #60ba7b;
|
$colorStatusInfo: #60ba7b;
|
||||||
$colorStatusAlert: #ffb66c;
|
$colorStatusAlert: #ffb66c;
|
||||||
@ -175,6 +181,8 @@ $colorPlotHash: $colorTick;
|
|||||||
$stylePlotHash: dashed;
|
$stylePlotHash: dashed;
|
||||||
$colorPlotAreaBorder: $colorInteriorBorder;
|
$colorPlotAreaBorder: $colorInteriorBorder;
|
||||||
$colorPlotLabelFg: pushBack($colorPlotFg, 20%);
|
$colorPlotLabelFg: pushBack($colorPlotFg, 20%);
|
||||||
|
$legendCollapsedNameMaxW: 50%;
|
||||||
|
$legendHoverValueBg: rgba($colorBodyFg, 0.2);
|
||||||
|
|
||||||
// Tree
|
// Tree
|
||||||
$colorItemTreeHoverBg: pullForward($colorBodyBg, $hoverRatioPercent);
|
$colorItemTreeHoverBg: pullForward($colorBodyBg, $hoverRatioPercent);
|
||||||
@ -191,14 +199,19 @@ $colorItemTreeVCHover: $colorKey;
|
|||||||
$colorItemTreeSelectedVC: $colorBodyBg;
|
$colorItemTreeSelectedVC: $colorBodyBg;
|
||||||
$shdwItemTreeIcon: none;
|
$shdwItemTreeIcon: none;
|
||||||
|
|
||||||
|
// Images
|
||||||
|
$colorThumbHoverBg: $colorItemTreeHoverBg;
|
||||||
|
|
||||||
// Scrollbar
|
// Scrollbar
|
||||||
$scrollbarTrackSize: 10px;
|
$scrollbarTrackSize: 7px;
|
||||||
$scrollbarTrackShdw: rgba(#000, 0.2) 0 1px 2px;
|
$scrollbarTrackShdw: rgba(#000, 0.2) 0 1px 2px;
|
||||||
$scrollbarTrackColorBg: rgba(#000, 0.2);
|
$scrollbarTrackColorBg: rgba(#000, 0.2);
|
||||||
$scrollbarThumbColor: darken($colorBodyBg, 50%);
|
$scrollbarThumbColor: darken($colorBodyBg, 50%);
|
||||||
$scrollbarThumbColorHov: $colorKey;
|
$scrollbarThumbColorHov: $colorKey;
|
||||||
$scrollbarThumbColorOverlay: darken($colorOvrBg, 50%);
|
$scrollbarThumbColorOverlay: darken($colorOvrBg, 50%);
|
||||||
$scrollbarThumbColorOverlayHov: $scrollbarThumbColorHov;
|
$scrollbarThumbColorOverlayHov: $scrollbarThumbColorHov;
|
||||||
|
$scrollbarThumbColorMenu: pullForward($colorMenuBg, 10%);
|
||||||
|
$scrollbarThumbColorMenuHov: pullForward($scrollbarThumbColorMenu, 2%);
|
||||||
|
|
||||||
// Splitter
|
// Splitter
|
||||||
// All splitterD* values MUST both be either odd or even numbers
|
// All splitterD* values MUST both be either odd or even numbers
|
||||||
|
@ -12,3 +12,11 @@
|
|||||||
// For dark interfaces, darker things move back - opposite for light interfaces
|
// For dark interfaces, darker things move back - opposite for light interfaces
|
||||||
@return lighten($c, $p);
|
@return lighten($c, $p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@function bgFg($c) {
|
||||||
|
// Given a single color, return valid background and foreground versions of that color
|
||||||
|
$bg: darken($c, 20%);
|
||||||
|
$fg: lighten($c, 20%);
|
||||||
|
@return $bg, $fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -94,31 +94,6 @@ define([
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"versions": [
|
|
||||||
{
|
|
||||||
"name": "Version",
|
|
||||||
"value": "@@version",
|
|
||||||
"priority": 999
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Built",
|
|
||||||
"value": "@@timestamp",
|
|
||||||
"description": "The date on which this version of the client was built.",
|
|
||||||
"priority": 990
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Revision",
|
|
||||||
"value": "@@revision",
|
|
||||||
"description": "A unique revision identifier for the client sources.",
|
|
||||||
"priority": 995
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Branch",
|
|
||||||
"value": "@@branch",
|
|
||||||
"description": "The name of the branch that was used during the build.",
|
|
||||||
"priority": 994
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"components": [
|
"components": [
|
||||||
{
|
{
|
||||||
"provides": "objectService",
|
"provides": "objectService",
|
||||||
|
@ -65,6 +65,20 @@ define(['csv'], function (CSV) {
|
|||||||
this.saveAs(blob, filename);
|
this.saveAs(blob, filename);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Export an object as a JSON file. Triggers a download using the function
|
||||||
|
* provided when the ExportService was instantiated.
|
||||||
|
*
|
||||||
|
* @param {Object} obj an object to be exported as JSON
|
||||||
|
* @param {ExportOptions} [options] additional parameters for the file
|
||||||
|
* export
|
||||||
|
*/
|
||||||
|
ExportService.prototype.exportJSON = function (obj, options) {
|
||||||
|
var filename = (options && options.filename) || "test-export.json";
|
||||||
|
var jsonText = JSON.stringify(obj);
|
||||||
|
var blob = new Blob([jsonText], {type: "application/json"});
|
||||||
|
this.saveAs(blob, filename);
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* Additional parameters for file export.
|
* Additional parameters for file export.
|
||||||
* @typedef ExportOptions
|
* @typedef ExportOptions
|
||||||
|
@ -23,10 +23,13 @@
|
|||||||
define([
|
define([
|
||||||
"moment-timezone",
|
"moment-timezone",
|
||||||
"./src/indicators/ClockIndicator",
|
"./src/indicators/ClockIndicator",
|
||||||
|
"./src/indicators/FollowIndicator",
|
||||||
"./src/services/TickerService",
|
"./src/services/TickerService",
|
||||||
|
"./src/services/TimerService",
|
||||||
"./src/controllers/ClockController",
|
"./src/controllers/ClockController",
|
||||||
"./src/controllers/TimerController",
|
"./src/controllers/TimerController",
|
||||||
"./src/controllers/RefreshingController",
|
"./src/controllers/RefreshingController",
|
||||||
|
"./src/actions/FollowTimerAction",
|
||||||
"./src/actions/StartTimerAction",
|
"./src/actions/StartTimerAction",
|
||||||
"./src/actions/RestartTimerAction",
|
"./src/actions/RestartTimerAction",
|
||||||
"./src/actions/StopTimerAction",
|
"./src/actions/StopTimerAction",
|
||||||
@ -37,10 +40,13 @@ define([
|
|||||||
], function (
|
], function (
|
||||||
MomentTimezone,
|
MomentTimezone,
|
||||||
ClockIndicator,
|
ClockIndicator,
|
||||||
|
FollowIndicator,
|
||||||
TickerService,
|
TickerService,
|
||||||
|
TimerService,
|
||||||
ClockController,
|
ClockController,
|
||||||
TimerController,
|
TimerController,
|
||||||
RefreshingController,
|
RefreshingController,
|
||||||
|
FollowTimerAction,
|
||||||
StartTimerAction,
|
StartTimerAction,
|
||||||
RestartTimerAction,
|
RestartTimerAction,
|
||||||
StopTimerAction,
|
StopTimerAction,
|
||||||
@ -80,6 +86,11 @@ define([
|
|||||||
"CLOCK_INDICATOR_FORMAT"
|
"CLOCK_INDICATOR_FORMAT"
|
||||||
],
|
],
|
||||||
"priority": "preferred"
|
"priority": "preferred"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"implementation": FollowIndicator,
|
||||||
|
"depends": ["timerService"],
|
||||||
|
"priority": "fallback"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"services": [
|
"services": [
|
||||||
@ -90,6 +101,11 @@ define([
|
|||||||
"$timeout",
|
"$timeout",
|
||||||
"now"
|
"now"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "timerService",
|
||||||
|
"implementation": TimerService,
|
||||||
|
"depends": ["openmct"]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"controllers": [
|
"controllers": [
|
||||||
@ -134,6 +150,15 @@ define([
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"actions": [
|
"actions": [
|
||||||
|
{
|
||||||
|
"key": "timer.follow",
|
||||||
|
"implementation": FollowTimerAction,
|
||||||
|
"depends": ["timerService"],
|
||||||
|
"category": "contextual",
|
||||||
|
"name": "Follow Timer",
|
||||||
|
"cssClass": "icon-clock",
|
||||||
|
"priority": "optional"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "timer.start",
|
"key": "timer.start",
|
||||||
"implementation": StartTimerAction,
|
"implementation": StartTimerAction,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2009-2016, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -21,39 +21,36 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
define(
|
define(
|
||||||
["./SubPlot"],
|
[],
|
||||||
function (SubPlot) {
|
function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility factory; wraps the SubPlot constructor and adds
|
* Designates a specific timer for following. Timelines, for example,
|
||||||
* in a reference to the telemetryFormatter, which will be
|
* use the actively followed timer to display a time-of-interest line
|
||||||
* used to represent telemetry values (timestamps or data
|
* and interpret time conductor bounds in the Timeline's relative
|
||||||
* values) as human-readable strings.
|
* time frame.
|
||||||
* @memberof platform/features/plot
|
*
|
||||||
|
* @implements {Action}
|
||||||
|
* @memberof platform/features/clock
|
||||||
* @constructor
|
* @constructor
|
||||||
|
* @param {ActionContext} context the context for this action
|
||||||
*/
|
*/
|
||||||
function SubPlotFactory(telemetryFormatter) {
|
function FollowTimerAction(timerService, context) {
|
||||||
this.telemetryFormatter = telemetryFormatter;
|
var domainObject =
|
||||||
|
context.domainObject &&
|
||||||
|
context.domainObject.useCapability('adapter');
|
||||||
|
this.perform =
|
||||||
|
timerService.setTimer.bind(timerService, domainObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
FollowTimerAction.appliesTo = function (context) {
|
||||||
* Instantiate a new sub-plot.
|
var model =
|
||||||
* @param {DomainObject[]} telemetryObjects the domain objects
|
(context.domainObject && context.domainObject.getModel()) ||
|
||||||
* which will be plotted in this sub-plot
|
{};
|
||||||
* @param {PlotPanZoomStack} panZoomStack the stack of pan-zoom
|
|
||||||
* states which is applicable to this sub-plot
|
return model.type === 'timer';
|
||||||
* @returns {SubPlot} the instantiated sub-plot
|
|
||||||
* @method
|
|
||||||
*/
|
|
||||||
SubPlotFactory.prototype.createSubPlot = function (telemetryObjects, panZoomStack) {
|
|
||||||
return new SubPlot(
|
|
||||||
telemetryObjects,
|
|
||||||
panZoomStack,
|
|
||||||
this.telemetryFormatter
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return SubPlotFactory;
|
return FollowTimerAction;
|
||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2009-2016, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -20,21 +20,38 @@
|
|||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
define([], function () {
|
define(
|
||||||
function AdaptedViewController($scope, openmct) {
|
['moment'],
|
||||||
function refresh(legacyObject) {
|
function (moment) {
|
||||||
if (!legacyObject) {
|
var NO_TIMER = "No timer being followed";
|
||||||
$scope.view = undefined;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var domainObject = legacyObject.useCapability('adapter');
|
/**
|
||||||
var providers = openmct.mainViews.get(domainObject);
|
* Indicator that displays the active timer, as well as its
|
||||||
$scope.view = providers[0] && providers[0].view(domainObject);
|
* current state.
|
||||||
|
* @implements {Indicator}
|
||||||
|
* @memberof platform/features/clock
|
||||||
|
*/
|
||||||
|
function FollowIndicator(timerService) {
|
||||||
|
this.timerService = timerService;
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.$watch('domainObject', refresh);
|
FollowIndicator.prototype.getGlyphClass = function () {
|
||||||
}
|
return "";
|
||||||
|
};
|
||||||
|
|
||||||
return AdaptedViewController;
|
FollowIndicator.prototype.getCssClass = function () {
|
||||||
});
|
return (this.timerService.getTimer()) ? "icon-timer s-status-ok" : "icon-timer";
|
||||||
|
};
|
||||||
|
|
||||||
|
FollowIndicator.prototype.getText = function () {
|
||||||
|
var timer = this.timerService.getTimer();
|
||||||
|
return (timer) ? 'Following timer ' + timer.getModel().name : NO_TIMER;
|
||||||
|
};
|
||||||
|
|
||||||
|
FollowIndicator.prototype.getDescription = function () {
|
||||||
|
return "";
|
||||||
|
};
|
||||||
|
|
||||||
|
return FollowIndicator;
|
||||||
|
}
|
||||||
|
);
|
113
platform/features/clock/src/services/TimerService.js
Normal file
113
platform/features/clock/src/services/TimerService.js
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2009-2016, 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(['EventEmitter'], function (EventEmitter) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tracks the currently-followed Timer object. Used by
|
||||||
|
* timelines et al to synchronize to a particular timer.
|
||||||
|
*
|
||||||
|
* The TimerService emits `change` events when the active timer
|
||||||
|
* is changed.
|
||||||
|
*/
|
||||||
|
function TimerService(openmct) {
|
||||||
|
EventEmitter.apply(this);
|
||||||
|
this.time = openmct.time;
|
||||||
|
this.objects = openmct.objects;
|
||||||
|
}
|
||||||
|
|
||||||
|
TimerService.prototype = Object.create(EventEmitter.prototype);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set (or clear, if `timer` is undefined) the currently active timer.
|
||||||
|
* @param {DomainObject} timer the new active timer
|
||||||
|
* @emits change
|
||||||
|
*/
|
||||||
|
TimerService.prototype.setTimer = function (timer) {
|
||||||
|
this.timer = timer;
|
||||||
|
this.emit('change');
|
||||||
|
|
||||||
|
if (this.stopObserving) {
|
||||||
|
this.stopObserving();
|
||||||
|
delete this.stopObserving;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timer) {
|
||||||
|
this.stopObserving =
|
||||||
|
this.objects.observe(timer, '*', this.setTimer.bind(this));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the currently active timer.
|
||||||
|
* @return {DomainObject} the active timer
|
||||||
|
* @emits change
|
||||||
|
*/
|
||||||
|
TimerService.prototype.getTimer = function () {
|
||||||
|
return this.timer;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if there is a currently active timer.
|
||||||
|
* @return {boolean} true if there is a timer
|
||||||
|
*/
|
||||||
|
TimerService.prototype.hasTimer = function () {
|
||||||
|
return !!this.timer;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert the provided timestamp to milliseconds relative to
|
||||||
|
* the active timer.
|
||||||
|
* @return {number} milliseconds since timer start
|
||||||
|
*/
|
||||||
|
TimerService.prototype.convert = function (timestamp) {
|
||||||
|
var clock = this.time.clock();
|
||||||
|
var canConvert = this.hasTimer() &&
|
||||||
|
!!clock &&
|
||||||
|
this.timer.timerState !== 'stopped';
|
||||||
|
|
||||||
|
if (!canConvert) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
var now = clock.currentValue();
|
||||||
|
var delta = this.timer.timerState === 'paused' ?
|
||||||
|
now - this.timer.pausedTime : 0;
|
||||||
|
var epoch = this.timer.timestamp;
|
||||||
|
|
||||||
|
return timestamp - epoch - delta;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the value of the active clock, adjusted to be relative to the active
|
||||||
|
* timer. If there is no clock or no active timer, this will return
|
||||||
|
* `undefined`.
|
||||||
|
* @return {number} milliseconds since the start of the active timer
|
||||||
|
*/
|
||||||
|
TimerService.prototype.now = function () {
|
||||||
|
var clock = this.time.clock();
|
||||||
|
return clock && this.convert(clock.currentValue());
|
||||||
|
};
|
||||||
|
|
||||||
|
return TimerService;
|
||||||
|
});
|
@ -0,0 +1,87 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2009-2016, 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/actions/FollowTimerAction"
|
||||||
|
], function (FollowTimerAction) {
|
||||||
|
var TIMER_SERVICE_METHODS =
|
||||||
|
['setTimer', 'getTimer', 'clearTimer', 'on', 'off'];
|
||||||
|
|
||||||
|
describe("The Follow Timer action", function () {
|
||||||
|
var testContext;
|
||||||
|
var testModel;
|
||||||
|
var testAdaptedObject;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
testModel = {};
|
||||||
|
testContext = { domainObject: jasmine.createSpyObj('domainObject', [
|
||||||
|
'getModel',
|
||||||
|
'useCapability'
|
||||||
|
]) };
|
||||||
|
testAdaptedObject = { foo: 'bar' };
|
||||||
|
testContext.domainObject.getModel.andReturn(testModel);
|
||||||
|
testContext.domainObject.useCapability.andCallFake(function (c) {
|
||||||
|
return c === 'adapter' && testAdaptedObject;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("is applicable to timers", function () {
|
||||||
|
testModel.type = "timer";
|
||||||
|
expect(FollowTimerAction.appliesTo(testContext)).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("is inapplicable to non-timers", function () {
|
||||||
|
testModel.type = "folder";
|
||||||
|
expect(FollowTimerAction.appliesTo(testContext)).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when instantiated", function () {
|
||||||
|
var mockTimerService;
|
||||||
|
var action;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
mockTimerService = jasmine.createSpyObj(
|
||||||
|
'timerService',
|
||||||
|
TIMER_SERVICE_METHODS
|
||||||
|
);
|
||||||
|
action = new FollowTimerAction(mockTimerService, testContext);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not interact with the timer service", function () {
|
||||||
|
TIMER_SERVICE_METHODS.forEach(function (method) {
|
||||||
|
expect(mockTimerService[method]).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("and performed", function () {
|
||||||
|
beforeEach(function () {
|
||||||
|
action.perform();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("sets the active timer", function () {
|
||||||
|
expect(mockTimerService.setTimer)
|
||||||
|
.toHaveBeenCalledWith(testAdaptedObject);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,61 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2009-2016, 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/indicators/FollowIndicator"], function (FollowIndicator) {
|
||||||
|
var TIMER_SERVICE_METHODS =
|
||||||
|
['setTimer', 'getTimer', 'clearTimer', 'on', 'off'];
|
||||||
|
|
||||||
|
describe("The timer-following indicator", function () {
|
||||||
|
var mockTimerService;
|
||||||
|
var indicator;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
mockTimerService =
|
||||||
|
jasmine.createSpyObj('timerService', TIMER_SERVICE_METHODS);
|
||||||
|
indicator = new FollowIndicator(mockTimerService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("implements the Indicator interface", function () {
|
||||||
|
expect(indicator.getGlyphClass()).toEqual(jasmine.any(String));
|
||||||
|
expect(indicator.getCssClass()).toEqual(jasmine.any(String));
|
||||||
|
expect(indicator.getText()).toEqual(jasmine.any(String));
|
||||||
|
expect(indicator.getDescription()).toEqual(jasmine.any(String));
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when a timer is set", function () {
|
||||||
|
var testModel;
|
||||||
|
var mockDomainObject;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
testModel = { name: "some timer!" };
|
||||||
|
mockDomainObject = jasmine.createSpyObj('timer', ['getModel']);
|
||||||
|
mockDomainObject.getModel.andReturn(testModel);
|
||||||
|
mockTimerService.getTimer.andReturn(mockDomainObject);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("displays the timer's name", function () {
|
||||||
|
expect(indicator.getText().indexOf(testModel.name))
|
||||||
|
.not.toEqual(-1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
77
platform/features/clock/test/services/TimerServiceSpec.js
Normal file
77
platform/features/clock/test/services/TimerServiceSpec.js
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2009-2016, 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/services/TimerService'
|
||||||
|
], function (TimerService) {
|
||||||
|
describe("TimerService", function () {
|
||||||
|
var callback;
|
||||||
|
var mockmct;
|
||||||
|
var timerService;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
callback = jasmine.createSpy('callback');
|
||||||
|
mockmct = {
|
||||||
|
time: { clock: jasmine.createSpy('clock') },
|
||||||
|
objects: { observe: jasmine.createSpy('observe') }
|
||||||
|
};
|
||||||
|
timerService = new TimerService(mockmct);
|
||||||
|
timerService.on('change', callback);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("initially emits no change events", function () {
|
||||||
|
expect(callback).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("reports no current timer", function () {
|
||||||
|
expect(timerService.getTimer()).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("setTimer", function () {
|
||||||
|
var testTimer;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
testTimer = { name: "I am some timer; you are nobody." };
|
||||||
|
timerService.setTimer(testTimer);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("emits a change event", function () {
|
||||||
|
expect(callback).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("reports the current timer", function () {
|
||||||
|
expect(timerService.getTimer()).toBe(testTimer);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("observes changes to an object", function () {
|
||||||
|
var newTimer = { name: "I am another timer." };
|
||||||
|
expect(mockmct.objects.observe).toHaveBeenCalledWith(
|
||||||
|
testTimer,
|
||||||
|
'*',
|
||||||
|
jasmine.any(Function)
|
||||||
|
);
|
||||||
|
mockmct.objects.observe.mostRecentCall.args[2](newTimer);
|
||||||
|
expect(timerService.getTimer()).toBe(newTimer);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -1,7 +1,7 @@
|
|||||||
$ueTimeConductorH: (25px, 16px, 20px); // Heights for Ticks, Data Visualization, Controls elements
|
$ueTimeConductorH: (25px, 16px, 20px); // Heights for Ticks, Data Visualization, Controls elements
|
||||||
$ueTimeConductorRtH: (25px, 3px, 20px); // Heights for elements in Real-time mode
|
$ueTimeConductorRtH: (25px, 3px, 20px); // Heights for elements in Real-time mode
|
||||||
$timeCondInputTimeSysDefW: 165px; // Default width for datetime value inputs
|
$timeCondInputTimeSysDefW: 165px; // Default width for datetime value inputs
|
||||||
$timeCondInputDeltaDefW: 60px; // Default width for delta value inputs, typically 00:00:00
|
$timeCondInputDeltaDefW: 65px; // Default width for delta value inputs, typically 00:00:00
|
||||||
$timeCondTOIIconD: 12px; // height and width of icon used for TOI indicator
|
$timeCondTOIIconD: 12px; // height and width of icon used for TOI indicator
|
||||||
$timeCondTOIValOffset: 0px;
|
$timeCondTOIValOffset: 0px;
|
||||||
$ticksBlockerFadeW: 50px;
|
$ticksBlockerFadeW: 50px;
|
||||||
|
@ -162,9 +162,6 @@
|
|||||||
.l-time-conductor-inputs {
|
.l-time-conductor-inputs {
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
}
|
}
|
||||||
input[type="text"] {
|
|
||||||
@include trans-prop-nice(padding, 250ms);
|
|
||||||
}
|
|
||||||
.time-range-input input[type="text"] {
|
.time-range-input input[type="text"] {
|
||||||
width: $timeCondInputTimeSysDefW;
|
width: $timeCondInputTimeSysDefW;
|
||||||
}
|
}
|
||||||
@ -290,18 +287,6 @@
|
|||||||
|
|
||||||
.l-time-conductor-inputs-holder {
|
.l-time-conductor-inputs-holder {
|
||||||
.l-time-range-input-w {
|
.l-time-range-input-w {
|
||||||
input[type="text"]:not(.error) {
|
|
||||||
background: transparent;
|
|
||||||
box-shadow: none;
|
|
||||||
border-radius: 0;
|
|
||||||
padding-left: 0;
|
|
||||||
padding-right: 0;
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
@include nice-input();
|
|
||||||
padding: $inputTextP;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.icon-calendar {
|
.icon-calendar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@ -309,8 +294,11 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
&.end-date {
|
&.end-date {
|
||||||
|
// Displays the current time
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
input[type="text"] {
|
input[type="text"] {
|
||||||
|
background: none;
|
||||||
|
box-shadow: none;
|
||||||
color: pullForward($colorTimeCondKeyBg, 5%);
|
color: pullForward($colorTimeCondKeyBg, 5%);
|
||||||
margin-right: $interiorMargin;
|
margin-right: $interiorMargin;
|
||||||
tab-index: -1;
|
tab-index: -1;
|
||||||
|
@ -19,11 +19,11 @@
|
|||||||
this source code distribution or the Licensing information page available
|
this source code distribution or the Licensing information page available
|
||||||
at runtime from the About dialog for additional information.
|
at runtime from the About dialog for additional information.
|
||||||
-->
|
-->
|
||||||
<div class="contents">
|
<div class="w-menu">
|
||||||
<div class="pane left menu-items">
|
<div class="col menu-items">
|
||||||
<ul>
|
<ul>
|
||||||
<li ng-repeat="metadata in ngModel.options"
|
<li ng-repeat="metadata in ngModel.options"
|
||||||
ng-click="ngModel.selected = metadata">
|
ng-click="ngModel.select(metadata)">
|
||||||
<a ng-mouseover="ngModel.activeMetadata = metadata"
|
<a ng-mouseover="ngModel.activeMetadata = metadata"
|
||||||
ng-mouseleave="ngModel.activeMetadata = undefined"
|
ng-mouseleave="ngModel.activeMetadata = undefined"
|
||||||
class="menu-item-a {{metadata.cssClass}}">
|
class="menu-item-a {{metadata.cssClass}}">
|
||||||
@ -32,13 +32,15 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="pane right menu-item-description">
|
<div class="col menu-item-description">
|
||||||
<div class="desc-area ui-symbol icon type-icon {{ngModel.activeMetadata.cssClass}}"></div>
|
<div class="desc-area ui-symbol icon type-icon {{ngModel.activeMetadata.cssClass}}"></div>
|
||||||
<div class="desc-area title">
|
<div class="w-title-desc">
|
||||||
{{ngModel.activeMetadata.name}}
|
<div class="desc-area title">
|
||||||
</div>
|
{{ngModel.activeMetadata.name}}
|
||||||
<div class="desc-area description">
|
</div>
|
||||||
{{ngModel.activeMetadata.description}}
|
<div class="desc-area description">
|
||||||
|
{{ngModel.activeMetadata.description}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
ng-click="modeController.toggle()">
|
ng-click="modeController.toggle()">
|
||||||
<span class="title-label">{{ngModel.selected.name}}</span>
|
<span class="title-label">{{ngModel.selected.name}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="menu super-menu mini mode-selector-menu"
|
<div class="menu super-menu mini l-mode-selector-menu"
|
||||||
ng-show="modeController.isActive()">
|
ng-show="modeController.isActive()">
|
||||||
<mct-include key="'mode-menu'"
|
<mct-include key="'mode-menu'"
|
||||||
ng-model="ngModel">
|
ng-model="ngModel">
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
ng-model="boundsModel"
|
ng-model="boundsModel"
|
||||||
ng-blur="tcController.setOffsetsFromView(boundsModel)"
|
ng-blur="tcController.setOffsetsFromView(boundsModel)"
|
||||||
field="'startOffset'"
|
field="'startOffset'"
|
||||||
class="hrs-min-input">
|
class="s-input-inline hrs-min-input">
|
||||||
</mct-control>
|
</mct-control>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
@ -71,7 +71,7 @@
|
|||||||
ng-model="boundsModel"
|
ng-model="boundsModel"
|
||||||
ng-blur="tcController.setOffsetsFromView(boundsModel)"
|
ng-blur="tcController.setOffsetsFromView(boundsModel)"
|
||||||
field="'endOffset'"
|
field="'endOffset'"
|
||||||
class="hrs-min-input">
|
class="s-input-inline hrs-min-input">
|
||||||
</mct-control>
|
</mct-control>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user