Merged vista fixes into filter branch
This commit is contained in:
@@ -40,6 +40,7 @@ define([
|
||||
possibleValues: [1,2,3,4]
|
||||
}
|
||||
]
|
||||
|
||||
},
|
||||
{
|
||||
key: "cos",
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title></title>
|
||||
<script src="dist/openmct.js"></script>
|
||||
<link rel="stylesheet" href="dist/openmct.css">
|
||||
<link rel="stylesheet" href="dist/styles/openmct.css">
|
||||
<link rel="icon" type="image/png" href="dist/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="dist/favicons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="dist/favicons/favicon-16x16.png" sizes="16x16">
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"eventemitter3": "^1.2.0",
|
||||
"exports-loader": "^0.7.0",
|
||||
"express": "^4.13.1",
|
||||
"fast-sass-loader": "^1.4.5",
|
||||
"fast-sass-loader": "1.4.6",
|
||||
"file-loader": "^1.1.11",
|
||||
"file-saver": "^1.3.8",
|
||||
"git-rev-sync": "^1.4.0",
|
||||
|
||||
@@ -158,7 +158,7 @@ define([
|
||||
|
||||
return {
|
||||
evaluate: function (datum, property) {
|
||||
return limitEvaluator.evaluate(datum, property.key);
|
||||
return limitEvaluator.evaluate(datum, property && property.key);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -28,14 +28,22 @@ define([
|
||||
describe('Telemetry API', function () {
|
||||
var openmct;
|
||||
var telemetryAPI;
|
||||
var mockTypeService;
|
||||
|
||||
beforeEach(function () {
|
||||
openmct = {
|
||||
time: jasmine.createSpyObj('timeAPI', [
|
||||
'timeSystem',
|
||||
'bounds'
|
||||
]),
|
||||
$injector: jasmine.createSpyObj('injector', [
|
||||
'get'
|
||||
])
|
||||
};
|
||||
mockTypeService = jasmine.createSpyObj('typeService', [
|
||||
'getType'
|
||||
]);
|
||||
openmct.$injector.get.and.returnValue(mockTypeService);
|
||||
openmct.time.timeSystem.and.returnValue({key: 'system'});
|
||||
openmct.time.bounds.and.returnValue({start: 0, end: 1});
|
||||
telemetryAPI = new TelemetryAPI(openmct);
|
||||
@@ -296,5 +304,233 @@ define([
|
||||
);
|
||||
});
|
||||
});
|
||||
describe('metadata', function () {
|
||||
let mockMetadata = {};
|
||||
let mockObjectType = {
|
||||
typeDef: {}
|
||||
};
|
||||
beforeEach(function () {
|
||||
telemetryAPI.addProvider({
|
||||
key: 'mockMetadataProvider',
|
||||
supportsMetadata() {
|
||||
return true;
|
||||
},
|
||||
getMetadata() {
|
||||
return mockMetadata;
|
||||
}
|
||||
});
|
||||
mockTypeService.getType.and.returnValue(mockObjectType);
|
||||
})
|
||||
it('respects explicit priority', function () {
|
||||
mockMetadata.values = [
|
||||
{
|
||||
key: "name",
|
||||
name: "Name",
|
||||
hints: {
|
||||
priority: 2
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
key: "timestamp",
|
||||
name: "Timestamp",
|
||||
hints: {
|
||||
priority: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "sin",
|
||||
name: "Sine",
|
||||
hints: {
|
||||
priority: 4
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "cos",
|
||||
name: "Cosine",
|
||||
hints: {
|
||||
priority: 3
|
||||
}
|
||||
}
|
||||
];
|
||||
let metadata = telemetryAPI.getMetadata({});
|
||||
let values = metadata.values();
|
||||
|
||||
values.forEach((value, index) => {
|
||||
expect(value.hints.priority).toBe(index + 1);
|
||||
});
|
||||
});
|
||||
it('if no explicit priority, defaults to order defined', function () {
|
||||
mockMetadata.values = [
|
||||
{
|
||||
key: "name",
|
||||
name: "Name"
|
||||
|
||||
},
|
||||
{
|
||||
key: "timestamp",
|
||||
name: "Timestamp"
|
||||
},
|
||||
{
|
||||
key: "sin",
|
||||
name: "Sine"
|
||||
},
|
||||
{
|
||||
key: "cos",
|
||||
name: "Cosine"
|
||||
}
|
||||
];
|
||||
let metadata = telemetryAPI.getMetadata({});
|
||||
let values = metadata.values();
|
||||
|
||||
values.forEach((value, index) => {
|
||||
expect(value.key).toBe(mockMetadata.values[index].key);
|
||||
});
|
||||
});
|
||||
it('respects domain priority', function () {
|
||||
mockMetadata.values = [
|
||||
{
|
||||
key: "name",
|
||||
name: "Name"
|
||||
|
||||
},
|
||||
{
|
||||
key: "timestamp-utc",
|
||||
name: "Timestamp UTC",
|
||||
hints: {
|
||||
domain: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "timestamp-local",
|
||||
name: "Timestamp Local",
|
||||
hints: {
|
||||
domain: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "sin",
|
||||
name: "Sine",
|
||||
hints: {
|
||||
range: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "cos",
|
||||
name: "Cosine",
|
||||
hints: {
|
||||
range: 1
|
||||
}
|
||||
}
|
||||
];
|
||||
let metadata = telemetryAPI.getMetadata({});
|
||||
let values = metadata.valuesForHints(['domain']);
|
||||
|
||||
expect(values[0].key).toBe('timestamp-local');
|
||||
expect(values[1].key).toBe('timestamp-utc');
|
||||
});
|
||||
it('respects range priority', function () {
|
||||
mockMetadata.values = [
|
||||
{
|
||||
key: "name",
|
||||
name: "Name"
|
||||
|
||||
},
|
||||
{
|
||||
key: "timestamp-utc",
|
||||
name: "Timestamp UTC",
|
||||
hints: {
|
||||
domain: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "timestamp-local",
|
||||
name: "Timestamp Local",
|
||||
hints: {
|
||||
domain: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "sin",
|
||||
name: "Sine",
|
||||
hints: {
|
||||
range: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "cos",
|
||||
name: "Cosine",
|
||||
hints: {
|
||||
range: 1
|
||||
}
|
||||
}
|
||||
];
|
||||
let metadata = telemetryAPI.getMetadata({});
|
||||
let values = metadata.valuesForHints(['range']);
|
||||
|
||||
expect(values[0].key).toBe('cos');
|
||||
expect(values[1].key).toBe('sin');
|
||||
});
|
||||
it('respects priority and domain ordering', function () {
|
||||
mockMetadata.values = [
|
||||
{
|
||||
key: "id",
|
||||
name: "ID",
|
||||
hints: {
|
||||
priority: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "name",
|
||||
name: "Name",
|
||||
hints: {
|
||||
priority: 1
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
key: "timestamp-utc",
|
||||
name: "Timestamp UTC",
|
||||
hints: {
|
||||
domain: 2,
|
||||
priority: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "timestamp-local",
|
||||
name: "Timestamp Local",
|
||||
hints: {
|
||||
domain: 1,
|
||||
priority: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "timestamp-pst",
|
||||
name: "Timestamp PST",
|
||||
hints: {
|
||||
domain: 3,
|
||||
priority: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
key: "sin",
|
||||
name: "Sine"
|
||||
},
|
||||
{
|
||||
key: "cos",
|
||||
name: "Cosine"
|
||||
}
|
||||
];
|
||||
let metadata = telemetryAPI.getMetadata({});
|
||||
let values = metadata.valuesForHints(['priority', 'domain']);
|
||||
[
|
||||
'timestamp-utc',
|
||||
'timestamp-local',
|
||||
'timestamp-pst'
|
||||
].forEach((key, index) => {
|
||||
expect(values[index].key).toBe(key);
|
||||
});
|
||||
});
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
@@ -116,12 +116,12 @@ define([
|
||||
return hints.every(hasHint, metadata);
|
||||
}
|
||||
var matchingMetadata = this.valueMetadatas.filter(hasHints);
|
||||
var sortedMetadata = _.sortBy(matchingMetadata, function (metadata) {
|
||||
return hints.map(function (hint) {
|
||||
let iteratees = hints.map(hint => {
|
||||
return (metadata) => {
|
||||
return metadata.hints[hint];
|
||||
});
|
||||
}
|
||||
});
|
||||
return sortedMetadata;
|
||||
return _.sortByAll(matchingMetadata, ...iteratees);
|
||||
};
|
||||
|
||||
TelemetryMetadataManager.prototype.getFilterableValues = function () {
|
||||
|
||||
@@ -49,7 +49,7 @@ define(function () {
|
||||
|
||||
getFormattedValue(telemetryDatum) {
|
||||
let formattedValue = this.formatter.format(telemetryDatum);
|
||||
if (typeof formattedValue !== 'string') {
|
||||
if (formattedValue !== undefined && typeof formattedValue !== 'string') {
|
||||
return formattedValue.toString();
|
||||
} else {
|
||||
return formattedValue;
|
||||
|
||||
@@ -44,7 +44,7 @@ define([], function () {
|
||||
|
||||
getRowLimitClass() {
|
||||
if (!this.rowLimitClass) {
|
||||
let limitEvaluation = this.limitEvaluator.evaluate(this.datum);
|
||||
let limitEvaluation = this.limitEvaluator.evaluate(this.datum);
|
||||
this.rowLimitClass = limitEvaluation && limitEvaluation.cssClass;
|
||||
}
|
||||
return this.rowLimitClass;
|
||||
|
||||
@@ -9,7 +9,7 @@ const EventEmitter = require('EventEmitter');
|
||||
|
||||
function paramsToObject(searchParams) {
|
||||
let params = {};
|
||||
for ([key, value] of searchParams.entries()) {
|
||||
for (let [key, value] of searchParams.entries()) {
|
||||
if (params[key]) {
|
||||
if (!Array.isArray(params[key])) {
|
||||
params[key] = [params[key]];
|
||||
|
||||
@@ -83,8 +83,19 @@ const webpackConfig = {
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name: '[name].[ext]',
|
||||
useRelativePath: true,
|
||||
outputPath: 'assets/'
|
||||
outputPath(url, resourcePath, context) {
|
||||
if (/\.(jpg|jpeg|png|svg)$/.test(url)) {
|
||||
return `images/${url}`
|
||||
}
|
||||
if (/\.ico$/.test(url)) {
|
||||
return `icons/${url}`
|
||||
}
|
||||
if (/\.(woff2?|eot|ttf)$/.test(url)) {
|
||||
return `fonts/${url}`
|
||||
} else {
|
||||
return `${url}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user