diff --git a/ui/core/app/router.js b/ui/core/app/router.js index e75a090bf..3bb38ebbe 100644 --- a/ui/core/app/router.js +++ b/ui/core/app/router.js @@ -24,7 +24,7 @@ Router.map(function () { }); this.route('groups', function() { - this.route('group', { path: 'group_id' }, function() {}); + this.route('group', { path: ':group_id' }, function() {}); this.route('new'); }); }); diff --git a/ui/core/app/routes/orgs/org/groups/group.js b/ui/core/app/routes/orgs/org/groups/group.js index c6eba762d..98c6b65c9 100644 --- a/ui/core/app/routes/orgs/org/groups/group.js +++ b/ui/core/app/routes/orgs/org/groups/group.js @@ -1,4 +1,64 @@ import Route from '@ember/routing/route'; +import { inject as service } from '@ember/service'; +import { action } from '@ember/object'; export default class OrgsOrgGroupsGroupRoute extends Route { + // =services + + @service intl; + @service notify; + + // =methods + + /** + * Return a group with id + * @param {object} params + * @return {Promise{GroupModel}} + */ + model({ group_id: id }) { + return this.store.findRecord('group', id); + } + + // =actions + + /** + * Rollback changes on group. + * @param {GroupModel} group + */ + @action + cancel(group) { + group.rollbackAttributes(); + } + + /** + * Handle saving a group. + * @param {GroupModel} group + * @param {Event} e + */ + @action + async save(group) { + try { + await group.save(); + this.notify.success(this.intl.t('notify.save-success')); + } catch (error) { + // TODO: replace with translated strings + this.notify.error(error.message, { closeAfter: null }); + } + } + + /** + * Delete group and redirect to groups index. + * @param {GroupModel} group + */ + @action + async delete(group) { + try { + await group.destroyRecord(); + this.transitionTo('orgs.org.groups'); + this.notify.success(this.intl.t('notify.group.delete-success')); + } catch (error) { + // TODO: replace with translated strings + this.notify.error(error.message, { closeAfter: null }); + } + } } diff --git a/ui/core/app/routes/orgs/org/groups/group/index.js b/ui/core/app/routes/orgs/org/groups/group/index.js new file mode 100644 index 000000000..521f73a9c --- /dev/null +++ b/ui/core/app/routes/orgs/org/groups/group/index.js @@ -0,0 +1,4 @@ +import Route from '@ember/routing/route'; + +export default class OrgsOrgGroupsGroupIndexRoute extends Route { +} diff --git a/ui/core/app/routes/orgs/org/groups/index.js b/ui/core/app/routes/orgs/org/groups/index.js index c15b0d470..9c566dfa0 100644 --- a/ui/core/app/routes/orgs/org/groups/index.js +++ b/ui/core/app/routes/orgs/org/groups/index.js @@ -1,4 +1,3 @@ import Route from '@ember/routing/route'; -export default class OrgsOrgGroupsIndexRoute extends Route { -} +export default class OrgsOrgGroupsIndexRoute extends Route {} diff --git a/ui/core/app/templates/orgs/org/groups/group.hbs b/ui/core/app/templates/orgs/org/groups/group.hbs index e2147cab0..2b05f838d 100644 --- a/ui/core/app/templates/orgs/org/groups/group.hbs +++ b/ui/core/app/templates/orgs/org/groups/group.hbs @@ -1 +1,3 @@ -{{outlet}} \ No newline at end of file +{{title @model.name}} + +{{outlet}} diff --git a/ui/core/app/templates/orgs/org/groups/group/index.hbs b/ui/core/app/templates/orgs/org/groups/group/index.hbs new file mode 100644 index 000000000..71b756e0c --- /dev/null +++ b/ui/core/app/templates/orgs/org/groups/group/index.hbs @@ -0,0 +1,23 @@ + + + +

{{t "resources.group"}}

+
+ + + + + + {{t 'actions.delete'}} + + + +
diff --git a/ui/core/tests/unit/routes/orgs/org/groups/group/index-test.js b/ui/core/tests/unit/routes/orgs/org/groups/group/index-test.js new file mode 100644 index 000000000..2496b24bf --- /dev/null +++ b/ui/core/tests/unit/routes/orgs/org/groups/group/index-test.js @@ -0,0 +1,11 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; + +module('Unit | Route | orgs/org/groups/group/index', function(hooks) { + setupTest(hooks); + + test('it exists', function(assert) { + let route = this.owner.lookup('route:orgs/org/groups/group/index'); + assert.ok(route); + }); +}); diff --git a/ui/core/translations/en-us.yaml b/ui/core/translations/en-us.yaml index ab1aaf9c4..2ba26634a 100644 --- a/ui/core/translations/en-us.yaml +++ b/ui/core/translations/en-us.yaml @@ -61,6 +61,7 @@ notify: delete-success: Deleted role successfully. group: create-success: Group created succesfully. + delete-success: Deleted group successfully. dev: default-org: Default Org menu-item: Menu item