diff options
| author | rr- | 2017-03-04 16:55:53 +0100 |
|---|---|---|
| committer | rr- | 2017-03-04 16:55:53 +0100 |
| commit | 49feb932f35fbc5bdb6b09eb3f881a7c9df1e3ab (patch) | |
| tree | e65dff331015a7bc4da99e61a925db8894f7bb9d /client/js | |
| parent | 5681fd11efe93b5b2a1719f16c9f253ffd508842 (diff) | |
client/tags: merging can now also add aliases
Diffstat (limited to 'client/js')
| -rw-r--r-- | client/js/controllers/tag_controller.js | 23 | ||||
| -rw-r--r-- | client/js/models/tag.js | 10 | ||||
| -rw-r--r-- | client/js/views/tag_merge_view.js | 7 |
3 files changed, 28 insertions, 12 deletions
diff --git a/client/js/controllers/tag_controller.js b/client/js/controllers/tag_controller.js index c1de3a3..d33e3d7 100644 --- a/client/js/controllers/tag_controller.js +++ b/client/js/controllers/tag_controller.js @@ -97,16 +97,19 @@ class TagController { _evtMerge(e) { this._view.clearMessages(); this._view.disableForm(); - e.detail.tag.merge(e.detail.targetTagName).then(() => { - this._view.showSuccess('Tag merged.'); - this._view.enableForm(); - router.replace( - uri.formatClientLink('tag', e.detail.targetTagName, 'merge'), - null, false); - }, error => { - this._view.showError(error.message); - this._view.enableForm(); - }); + e.detail.tag + .merge(e.detail.targetTagName, e.detail.addAlias) + .then(() => { + this._view.showSuccess('Tag merged.'); + this._view.enableForm(); + router.replace( + uri.formatClientLink( + 'tag', e.detail.targetTagName, 'merge'), + null, false); + }, error => { + this._view.showError(error.message); + this._view.enableForm(); + }); } _evtDelete(e) { diff --git a/client/js/models/tag.js b/client/js/models/tag.js index 1a15693..ccfe6b2 100644 --- a/client/js/models/tag.js +++ b/client/js/models/tag.js @@ -75,7 +75,7 @@ class Tag extends events.EventTarget { }); } - merge(targetName) { + merge(targetName, addAlias) { return api.get(uri.formatApiLink('tag', targetName)) .then(response => { return api.post(uri.formatApiLink('tag-merge'), { @@ -85,6 +85,14 @@ class Tag extends events.EventTarget { mergeTo: targetName, }); }).then(response => { + if (!addAlias) { + return Promise.resolve(response); + } + return api.put(uri.formatApiLink('tag', targetName), { + version: response.version, + names: response.names.concat(this._names), + }); + }).then(response => { this._updateFromResponse(response); this.dispatchEvent(new CustomEvent('change', { detail: { diff --git a/client/js/views/tag_merge_view.js b/client/js/views/tag_merge_view.js index 711716c..87ffb47 100644 --- a/client/js/views/tag_merge_view.js +++ b/client/js/views/tag_merge_view.js @@ -51,6 +51,7 @@ class TagMergeView extends events.EventTarget { detail: { tag: this._tag, targetTagName: this._targetTagFieldNode.value, + addAlias: this._addAliasCheckboxNode.checked, }, })); } @@ -60,7 +61,11 @@ class TagMergeView extends events.EventTarget { } get _targetTagFieldNode() { - return this._formNode.querySelector('.target input'); + return this._formNode.querySelector('input[name=target-tag]'); + } + + get _addAliasCheckboxNode() { + return this._formNode.querySelector('input[name=alias]'); } } |