Add form for all setting of an index
This commit is contained in:
parent
bb0069445a
commit
825d7caaa3
12 changed files with 71 additions and 14 deletions
|
|
@ -1,5 +1,5 @@
|
|||
<div class='mb-4'>
|
||||
<Form::Element @label={{namelize @name}} @errors={{array this.error}}>
|
||||
<Form::Element @label={{@label}} @errors={{array this.error}}>
|
||||
<MonacoEditor
|
||||
@value={{json-stringify this.value}}
|
||||
@language='json'
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ export default class FormIndexSettingComponent extends Component {
|
|||
|
||||
try {
|
||||
return this.args.index
|
||||
.updateSetting(this.args.name, JSON.parse(newValue))
|
||||
.updateSetting(JSON.parse(newValue), this.args.name)
|
||||
.then(this.toaster.taskToast);
|
||||
} catch (error) {
|
||||
this.error = error.error || error;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<LinkTo
|
||||
@route={{@route}}
|
||||
@models={{if @model (array @model) @models}}
|
||||
@models={{if @model (array @model) (if @models @models (array))}}
|
||||
@activeClass="text-primary border-b border-primary"
|
||||
class="flex items-center h-10 px-4 py-2 text-center text-base-2 no-underline bg-transparent whitespace-nowrap focus:outline-none"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -86,22 +86,42 @@ export default class Index {
|
|||
}
|
||||
|
||||
getSetting(name) {
|
||||
return query(`${this.path}/settings/${dasherize(name)}`);
|
||||
let url = `${this.path}/settings`;
|
||||
|
||||
if (name) {
|
||||
url = `${url}/${dasherize(name)}`;
|
||||
}
|
||||
|
||||
return query(url);
|
||||
}
|
||||
|
||||
updateSetting(name, value) {
|
||||
const method = ['faceting', 'pagination', 'typo-tolerance'].includes(name)
|
||||
? 'PATCH'
|
||||
: 'PUT';
|
||||
updateSetting(value, name) {
|
||||
const method =
|
||||
name === undefined ||
|
||||
['faceting', 'pagination', 'typo-tolerance'].includes(name)
|
||||
? 'PATCH'
|
||||
: 'PUT';
|
||||
|
||||
return query(`${this.path}/settings/${dasherize(name)}`, {
|
||||
let url = `${this.path}/settings`;
|
||||
|
||||
if (name) {
|
||||
url = `${url}/${dasherize(name)}`;
|
||||
}
|
||||
|
||||
return query(url, {
|
||||
method: method,
|
||||
body: JSON.stringify(value),
|
||||
});
|
||||
}
|
||||
|
||||
resetSetting(name) {
|
||||
return query(`${this.path}/settings/${dasherize(name)}`, {
|
||||
let url = `${this.path}/settings`;
|
||||
|
||||
if (name) {
|
||||
url = `${url}/${dasherize(name)}`;
|
||||
}
|
||||
|
||||
return query(url, {
|
||||
method: 'DELETE',
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,9 @@ Router.map(function () {
|
|||
this.route('admin', function () {
|
||||
this.route('indexes', function () {
|
||||
this.route('item', { path: '/:index_uid' }, function () {
|
||||
this.route('settings');
|
||||
this.route('settings', function () {
|
||||
this.route('specific');
|
||||
});
|
||||
this.route('info');
|
||||
this.route('edit');
|
||||
this.route('documents', function () {
|
||||
|
|
|
|||
3
app/routes/admin/indexes/item/settings/index.js
Normal file
3
app/routes/admin/indexes/item/settings/index.js
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
import Route from '@ember/routing/route';
|
||||
|
||||
export default class AdminIndexesItemSettingsIndexRoute extends Route {}
|
||||
3
app/routes/admin/indexes/item/settings/specific.js
Normal file
3
app/routes/admin/indexes/item/settings/specific.js
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
import Route from '@ember/routing/route';
|
||||
|
||||
export default class AdminIndexesItemSettingsSpecificRoute extends Route {}
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
{{#each @model.settingNames as |name|}}
|
||||
<IndexSetting @name={{name}} @index={{@model}} />
|
||||
{{/each}}
|
||||
<Tabs>
|
||||
<Tab @route="admin.indexes.item.settings.index" @text="All" />
|
||||
<Tab @route="admin.indexes.item.settings.specific" @text="Specific" />
|
||||
</Tabs>
|
||||
|
||||
{{outlet}}
|
||||
|
|
|
|||
1
app/templates/admin/indexes/item/settings/index.hbs
Normal file
1
app/templates/admin/indexes/item/settings/index.hbs
Normal file
|
|
@ -0,0 +1 @@
|
|||
<IndexSetting @index={{@model}} />
|
||||
3
app/templates/admin/indexes/item/settings/specific.hbs
Normal file
3
app/templates/admin/indexes/item/settings/specific.hbs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{{#each @model.settingNames as |name|}}
|
||||
<IndexSetting @name={{name}} @label={{namelize name}} @index={{@model}} />
|
||||
{{/each}}
|
||||
11
tests/unit/routes/admin/indexes/item/settings/index-test.js
Normal file
11
tests/unit/routes/admin/indexes/item/settings/index-test.js
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'meiliadmin/tests/helpers';
|
||||
|
||||
module('Unit | Route | admin/indexes/item/settings/index', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
test('it exists', function (assert) {
|
||||
let route = this.owner.lookup('route:admin/indexes/item/settings/index');
|
||||
assert.ok(route);
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'meiliadmin/tests/helpers';
|
||||
|
||||
module('Unit | Route | admin/indexes/item/settings/specific', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
test('it exists', function (assert) {
|
||||
let route = this.owner.lookup('route:admin/indexes/item/settings/specific');
|
||||
assert.ok(route);
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue