mirror of
https://github.com/status-im/consul.git
synced 2025-01-11 06:16:08 +00:00
Add support for specifying future services and wildcards
This commit is contained in:
parent
55bc45832e
commit
5575455053
@ -18,18 +18,31 @@ export default Controller.extend({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
|
createNewLabel: function(term) {
|
||||||
|
return `Use a future Consul Service called '${term}'`;
|
||||||
|
},
|
||||||
change: function(e, value, _target) {
|
change: function(e, value, _target) {
|
||||||
// normalize back to standard event
|
// normalize back to standard event
|
||||||
const target = e.target || { ..._target, ...{ name: e, value: value } };
|
const target = e.target || { ..._target, ...{ name: e, value: value } };
|
||||||
switch (target.name) {
|
switch (target.name) {
|
||||||
case 'Action':
|
case 'Action':
|
||||||
set(this.changeset, target.name, target.value);
|
set(this.changeset, target.name, target.value);
|
||||||
console.log(target.name, target.value, get(this.changeset, target.name));
|
|
||||||
break;
|
break;
|
||||||
case 'SourceName':
|
case 'SourceName':
|
||||||
case 'DestinationName':
|
case 'DestinationName':
|
||||||
set(this.changeset, target.name, get(target.value, 'Name'));
|
let name = target.value;
|
||||||
set(this, target.name, target.value);
|
let selected = target.value;
|
||||||
|
if (typeof name !== 'string') {
|
||||||
|
name = get(target.value, 'Name');
|
||||||
|
}
|
||||||
|
const match = get(this, 'items').filterBy('Name', name);
|
||||||
|
if (match.length === 0) {
|
||||||
|
selected = { Name: name };
|
||||||
|
const items = [selected].concat(this.items.toArray());
|
||||||
|
set(this, 'items', items);
|
||||||
|
}
|
||||||
|
set(this.changeset, target.name, name);
|
||||||
|
set(this, target.name, selected);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -20,6 +20,13 @@ export default Route.extend(WithIntentionActions, {
|
|||||||
item: this.item,
|
item: this.item,
|
||||||
items: get(this, 'servicesRepo').findAllByDatacenter(this.modelFor('dc').dc.Name),
|
items: get(this, 'servicesRepo').findAllByDatacenter(this.modelFor('dc').dc.Name),
|
||||||
intents: ['allow', 'deny'],
|
intents: ['allow', 'deny'],
|
||||||
|
}).then(function(model) {
|
||||||
|
return {
|
||||||
|
...model,
|
||||||
|
...{
|
||||||
|
items: [{ Name: '*' }].concat(model.items.toArray()),
|
||||||
|
},
|
||||||
|
};
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
setupController: function(controller, model) {
|
setupController: function(controller, model) {
|
||||||
|
@ -14,6 +14,13 @@ export default Route.extend(WithAclActions, {
|
|||||||
item: get(this, 'repo').findBySlug(params.id, this.modelFor('dc').dc.Name),
|
item: get(this, 'repo').findBySlug(params.id, this.modelFor('dc').dc.Name),
|
||||||
items: get(this, 'servicesRepo').findAllByDatacenter(this.modelFor('dc').dc.Name),
|
items: get(this, 'servicesRepo').findAllByDatacenter(this.modelFor('dc').dc.Name),
|
||||||
intents: ['allow', 'deny'],
|
intents: ['allow', 'deny'],
|
||||||
|
}).then(function(model) {
|
||||||
|
return {
|
||||||
|
...model,
|
||||||
|
...{
|
||||||
|
items: [{ Name: '*' }].concat(model.items.toArray()),
|
||||||
|
},
|
||||||
|
};
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
setupController: function(controller, model) {
|
setupController: function(controller, model) {
|
||||||
|
@ -2,28 +2,40 @@
|
|||||||
<fieldset>
|
<fieldset>
|
||||||
<label class="type-text{{if item.error.SourceName ' has-error'}}">
|
<label class="type-text{{if item.error.SourceName ' has-error'}}">
|
||||||
<span>Source Service</span>
|
<span>Source Service</span>
|
||||||
{{#power-select
|
{{#power-select-with-create
|
||||||
options=items
|
options=items
|
||||||
searchField='Name'
|
searchField='Name'
|
||||||
selected=SourceName
|
selected=SourceName
|
||||||
searchPlaceholder='Type service name'
|
searchPlaceholder='Type service name'
|
||||||
onchange=(action 'change' 'SourceName') as |service|
|
buildSuggestion=(action 'createNewLabel')
|
||||||
|
oncreate=(action 'change' 'SourceName')
|
||||||
|
onchange=(action 'change' 'SourceName') as |service search|
|
||||||
}}
|
}}
|
||||||
{{service.Name}}
|
{{#if (eq service.Name '*') }}
|
||||||
{{/power-select}}
|
* (All Services)
|
||||||
|
{{else}}
|
||||||
|
{{service.Name}}
|
||||||
|
{{/if}}
|
||||||
|
{{/power-select-with-create}}
|
||||||
<em>Choose a Consul Service, write in a future Consul Service, or write any Service URL</em>
|
<em>Choose a Consul Service, write in a future Consul Service, or write any Service URL</em>
|
||||||
</label>
|
</label>
|
||||||
<label class="type-text{{if item.error.DestinationName ' has-error'}}">
|
<label class="type-text{{if item.error.DestinationName ' has-error'}}">
|
||||||
<span>Destination Service</span>
|
<span>Destination Service</span>
|
||||||
{{#power-select
|
{{#power-select-with-create
|
||||||
options=items
|
options=items
|
||||||
searchField='Name'
|
searchField='Name'
|
||||||
selected=DestinationName
|
selected=DestinationName
|
||||||
searchPlaceholder='Type service name'
|
searchPlaceholder='Type service name'
|
||||||
|
buildSuggestion=(action 'createNewLabel')
|
||||||
|
oncreate=(action 'change' 'DestinationName')
|
||||||
onchange=(action 'change' 'DestinationName') as |service|
|
onchange=(action 'change' 'DestinationName') as |service|
|
||||||
}}
|
}}
|
||||||
{{service.Name}}
|
{{#if (eq service.Name '*') }}
|
||||||
{{/power-select}}
|
* (All Services)
|
||||||
|
{{else}}
|
||||||
|
{{service.Name}}
|
||||||
|
{{/if}}
|
||||||
|
{{/power-select-with-create}}
|
||||||
<em>Choose a Consul Service, write in a future Consul Service, or write any Service URL</em>
|
<em>Choose a Consul Service, write in a future Consul Service, or write any Service URL</em>
|
||||||
</label>
|
</label>
|
||||||
<div role="radiogroup" class={{if item.error.Action ' has-error'}}>
|
<div role="radiogroup" class={{if item.error.Action ' has-error'}}>
|
||||||
|
@ -73,6 +73,7 @@
|
|||||||
"ember-math-helpers": "^2.4.0",
|
"ember-math-helpers": "^2.4.0",
|
||||||
"ember-pluralize": "^0.2.0",
|
"ember-pluralize": "^0.2.0",
|
||||||
"ember-power-select": "^2.0.2",
|
"ember-power-select": "^2.0.2",
|
||||||
|
"ember-power-select-with-create": "^0.6.0",
|
||||||
"ember-resolver": "^4.0.0",
|
"ember-resolver": "^4.0.0",
|
||||||
"ember-sinon-qunit": "^2.1.0",
|
"ember-sinon-qunit": "^2.1.0",
|
||||||
"ember-source": "~2.18.2",
|
"ember-source": "~2.18.2",
|
||||||
|
@ -3640,6 +3640,25 @@ ember-pluralize@^0.2.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ember-cli-babel "5.1.5"
|
ember-cli-babel "5.1.5"
|
||||||
|
|
||||||
|
ember-power-select-with-create@^0.6.0:
|
||||||
|
version "0.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ember-power-select-with-create/-/ember-power-select-with-create-0.6.0.tgz#40ac701276379b78efbaedc33fb5f82e49f80674"
|
||||||
|
dependencies:
|
||||||
|
ember-cli-babel "^6.6.0"
|
||||||
|
ember-cli-htmlbars "^2.0.1"
|
||||||
|
ember-power-select "^2.0.0"
|
||||||
|
|
||||||
|
ember-power-select@^2.0.0:
|
||||||
|
version "2.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/ember-power-select/-/ember-power-select-2.0.3.tgz#a44b62d74ca286e1fdc4b8f3b0ea9a7cf53f34ed"
|
||||||
|
dependencies:
|
||||||
|
ember-basic-dropdown "^1.0.0"
|
||||||
|
ember-cli-babel "^6.11.0"
|
||||||
|
ember-cli-htmlbars "^2.0.1"
|
||||||
|
ember-concurrency "^0.8.19"
|
||||||
|
ember-text-measurer "^0.4.0"
|
||||||
|
ember-truth-helpers "^2.0.0"
|
||||||
|
|
||||||
ember-power-select@^2.0.2:
|
ember-power-select@^2.0.2:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/ember-power-select/-/ember-power-select-2.0.2.tgz#e8c9a4f266b5a32847e859ddd4db5b2f95108ee8"
|
resolved "https://registry.yarnpkg.com/ember-power-select/-/ember-power-select-2.0.2.tgz#e8c9a4f266b5a32847e859ddd4db5b2f95108ee8"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user