diff options
| author | rr- | 2017-01-03 21:58:32 +0100 |
|---|---|---|
| committer | rr- | 2017-01-03 21:58:32 +0100 |
| commit | 58fabc6e3608e29430f45a7bfef6f347b6471c9b (patch) | |
| tree | fcbe69cd23d4483c2746355acb2142cdb9c3eb03 /client | |
| parent | 9edaaffec230130566289deb16cc79ee37597a9e (diff) | |
client/merge: add search button
Diffstat (limited to 'client')
| -rw-r--r-- | client/css/post-detail-view.styl | 10 | ||||
| -rw-r--r-- | client/html/post_merge_side.tpl | 14 | ||||
| -rw-r--r-- | client/js/views/post_merge_view.js | 48 |
3 files changed, 44 insertions, 28 deletions
diff --git a/client/css/post-detail-view.styl b/client/css/post-detail-view.styl index 32e7497..98c3424 100644 --- a/client/css/post-detail-view.styl +++ b/client/css/post-detail-view.styl @@ -14,9 +14,6 @@ .right-post-container width: 47% float: right - input[type=text] - width: 8em - margin-top: -2px .post-mirror margin-bottom: 1em &:after @@ -31,3 +28,10 @@ margin-right: 0.35em .target-post, .target-post-content margin: 1em 0 + header + margin-bottom: 1em + label + display: inline-block + margin-top: 2px + input[type=text] + width: 6em diff --git a/client/html/post_merge_side.tpl b/client/html/post_merge_side.tpl index 60cc080..cebc3bb 100644 --- a/client/html/post_merge_side.tpl +++ b/client/html/post_merge_side.tpl @@ -1,8 +1,12 @@ -<% if (ctx.editable) { %> - <p>Post # <input type='text' pattern='^[0-9]+$' value='<%- ctx.post ? ctx.post.id : '' %>'/></p> -<% } else { %> - <p>Post # <input type='text' pattern='^[0-9]+$' value='<%- ctx.post ? ctx.post.id : '' %>' readonly/></p> -<% } %> +<header> + <label for='merge-id-<%- ctx.name %>'>Post #</label> + <% if (ctx.editable) { %> + <input type='text' id='merge-id-<%-ctx.name %>' pattern='^[0-9]+$' value='<%- ctx.post ? ctx.post.id : '' %>'/> + <input type='button' value='Search'/> + <% } else { %> + <input type='text' id='merge-id-<%-ctx.name %>' pattern='^[0-9]+$' value='<%- ctx.post ? ctx.post.id : '' %>' readonly/> + <% } %> +</header> <% if (ctx.post) { %> <div class='post-thumbnail'> diff --git a/client/js/views/post_merge_view.js b/client/js/views/post_merge_view.js index fb17527..04ed21d 100644 --- a/client/js/views/post_merge_view.js +++ b/client/js/views/post_merge_view.js @@ -53,25 +53,28 @@ class PostMergeView extends events.EventTarget { } _refreshLeftSide() { - views.replaceContent( - this._leftSideNode, - sideTemplate(Object.assign({}, this._ctx, { - post: this._leftPost, - name: 'left', - editable: false}))); + this._refreshSide(this._leftPost, this._leftSideNode, 'left', false); } _refreshRightSide() { + this._refreshSide(this._rightPost, this._rightSideNode, 'right', true); + } + + _refreshSide(post, sideNode, sideName, isEditable) { views.replaceContent( - this._rightSideNode, + sideNode, sideTemplate(Object.assign({}, this._ctx, { - post: this._rightPost, - name: 'right', - editable: true}))); + post: post, + name: sideName, + editable: isEditable}))); - if (this._targetPostFieldNode) { - this._targetPostFieldNode.addEventListener( - 'keydown', e => this._evtTargetPostFieldKeyDown(e)); + let postIdNode = sideNode.querySelector('input[type=text]'); + let searchButtonNode = sideNode.querySelector('input[type=button]'); + if (isEditable) { + postIdNode.addEventListener( + 'keydown', e => this._evtPostSearchFieldKeyDown(e)); + searchButtonNode.addEventListener( + 'click', e => this._evtPostSearchButtonClick(e, postIdNode)); } } @@ -94,7 +97,7 @@ class PostMergeView extends events.EventTarget { })); } - _evtTargetPostFieldKeyDown(e) { + _evtPostSearchFieldKeyDown(e) { const key = e.which; if (key !== KEY_RETURN) { return; @@ -103,7 +106,17 @@ class PostMergeView extends events.EventTarget { e.preventDefault(); this.dispatchEvent(new CustomEvent('select', { detail: { - postId: this._targetPostFieldNode.value, + postId: e.target.value, + }, + })); + } + + _evtPostSearchButtonClick(e, textNode) { + e.target.blur(); + e.preventDefault(); + this.dispatchEvent(new CustomEvent('select', { + detail: { + postId: textNode.value, }, })); } @@ -119,11 +132,6 @@ class PostMergeView extends events.EventTarget { get _rightSideNode() { return this._hostNode.querySelector('.right-post-container'); } - - get _targetPostFieldNode() { - return this._formNode.querySelector( - '.post-mirror input:not([readonly])[type=text]'); - } } module.exports = PostMergeView; |