23adad684b
* Adds model layer changes around HealthChecks 1. Makes a HealthCheck model fragment and uses it in ServiceInstances and Nodes 2. Manually adds a relationship between a ServiceInstance and its potential ServiceInstanceProxy 3. Misc changes related to the above such as an Exposed property on MeshChecks, MeshChecks itself * Add a potential temporary endpoint to distinguish ProxyServiceInstance * Fix up Node search bar class * Add search/sort/filter logic * Fixup Service default sort key * Add Healthcheck search/sort/filtering * Tweak CSS add a default Type of 'Serf' when type is blank * Fix up tests and new test support * Add ability to search on Service/Node name depending on where you are * Fixup CheckID search predicate * Use computed for DataCollection to use caching * Alpha sort the Type menu * Temporary fix for new non-changing style Ember Proxys * Only special case EventSource proxies
49 lines
1.8 KiB
JavaScript
49 lines
1.8 KiB
JavaScript
import Service from '@ember/service';
|
|
import service from 'consul-ui/sort/comparators/service';
|
|
import serviceInstance from 'consul-ui/sort/comparators/service-instance';
|
|
import upstreamInstance from 'consul-ui/sort/comparators/upstream-instance';
|
|
import acl from 'consul-ui/sort/comparators/acl';
|
|
import kv from 'consul-ui/sort/comparators/kv';
|
|
import healthCheck from 'consul-ui/sort/comparators/health-check';
|
|
import intention from 'consul-ui/sort/comparators/intention';
|
|
import token from 'consul-ui/sort/comparators/token';
|
|
import role from 'consul-ui/sort/comparators/role';
|
|
import policy from 'consul-ui/sort/comparators/policy';
|
|
import nspace from 'consul-ui/sort/comparators/nspace';
|
|
import node from 'consul-ui/sort/comparators/node';
|
|
|
|
// returns an array of Property:asc, Property:desc etc etc
|
|
const directionify = arr => {
|
|
return arr.reduce((prev, item) => prev.concat([`${item}:asc`, `${item}:desc`]), []);
|
|
};
|
|
// Specify a list of sortable properties, when called with a property
|
|
// returns an array ready to be passed to ember @sort
|
|
// properties(['Potential', 'Sortable', 'Properties'])('Sortable:asc') => ['Sortable:asc']
|
|
export const properties = (props = []) => key => {
|
|
const comparables = directionify(props);
|
|
return [comparables.find(item => item === key) || comparables[0]];
|
|
};
|
|
const options = {
|
|
properties,
|
|
directionify,
|
|
};
|
|
const comparators = {
|
|
service: service(options),
|
|
['service-instance']: serviceInstance(options),
|
|
['upstream-instance']: upstreamInstance(options),
|
|
['health-check']: healthCheck(options),
|
|
acl: acl(options),
|
|
kv: kv(options),
|
|
intention: intention(options),
|
|
token: token(options),
|
|
role: role(options),
|
|
policy: policy(options),
|
|
nspace: nspace(options),
|
|
node: node(options),
|
|
};
|
|
export default class SortService extends Service {
|
|
comparator(type) {
|
|
return comparators[type];
|
|
}
|
|
}
|