Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/application/diff/DiffInline.js
| /** | /** | ||||
| * @provides phabricator-diff-inline | * @provides phabricator-diff-inline | ||||
| * @requires javelin-dom | * @requires javelin-dom | ||||
| * @javelin | * @javelin | ||||
| */ | */ | ||||
| JX.install('DiffInline', { | JX.install('DiffInline', { | ||||
| construct : function() { | construct : function() { | ||||
| }, | }, | ||||
| members: { | members: { | ||||
| _id: null, | _id: null, | ||||
| _phid: null, | _phid: null, | ||||
| _changesetID: null, | _changesetID: null, | ||||
| _row: null, | _row: null, | ||||
| _hidden: false, | |||||
| _number: null, | _number: null, | ||||
| _length: null, | _length: null, | ||||
| _displaySide: null, | _displaySide: null, | ||||
| _isNewFile: null, | _isNewFile: null, | ||||
| _undoRow: null, | _undoRow: null, | ||||
| _replyToCommentPHID: null, | _replyToCommentPHID: null, | ||||
| _originalText: null, | _originalText: null, | ||||
| _snippet: null, | _snippet: null, | ||||
| _isDeleted: false, | _isDeleted: false, | ||||
| _isInvisible: false, | _isInvisible: false, | ||||
| _isLoading: false, | _isLoading: false, | ||||
| _changeset: null, | _changeset: null, | ||||
| _isCollapsed: false, | |||||
| _isDraft: null, | _isDraft: null, | ||||
| _isFixed: null, | _isFixed: null, | ||||
| _isEditing: false, | _isEditing: false, | ||||
| _isNew: false, | _isNew: false, | ||||
| _isSynthetic: false, | _isSynthetic: false, | ||||
| bindToRow: function(row) { | bindToRow: function(row) { | ||||
| this._row = row; | this._row = row; | ||||
| var row_data = JX.Stratcom.getData(row); | var row_data = JX.Stratcom.getData(row); | ||||
| row_data.inline = this; | row_data.inline = this; | ||||
| this._hidden = row_data.hidden || false; | this._isCollapsed = row_data.hidden || false; | ||||
| // TODO: Get smarter about this once we do more editing, this is pretty | // TODO: Get smarter about this once we do more editing, this is pretty | ||||
| // hacky. | // hacky. | ||||
| var comment = JX.DOM.find(row, 'div', 'differential-inline-comment'); | var comment = JX.DOM.find(row, 'div', 'differential-inline-comment'); | ||||
| var data = JX.Stratcom.getData(comment); | var data = JX.Stratcom.getData(comment); | ||||
| this._id = data.id; | this._id = data.id; | ||||
| this._phid = data.phid; | this._phid = data.phid; | ||||
| ▲ Show 20 Lines • Show All 167 Lines • ▼ Show 20 Lines | members: { | ||||
| canDone: function() { | canDone: function() { | ||||
| if (!JX.DOM.scry(this._row, 'input', 'differential-inline-done').length) { | if (!JX.DOM.scry(this._row, 'input', 'differential-inline-done').length) { | ||||
| return false; | return false; | ||||
| } | } | ||||
| return true; | return true; | ||||
| }, | }, | ||||
| canHide: function() { | canCollapse: function() { | ||||
| if (!JX.DOM.scry(this._row, 'a', 'hide-inline').length) { | if (!JX.DOM.scry(this._row, 'a', 'hide-inline').length) { | ||||
| return false; | return false; | ||||
| } | } | ||||
| return true; | return true; | ||||
| }, | }, | ||||
| getRawText: function() { | getRawText: function() { | ||||
| Show All 12 Lines | _newRow: function() { | ||||
| var row = JX.$N('tr', attributes); | var row = JX.$N('tr', attributes); | ||||
| JX.Stratcom.getData(row).inline = this; | JX.Stratcom.getData(row).inline = this; | ||||
| this._row = row; | this._row = row; | ||||
| this._id = null; | this._id = null; | ||||
| this._phid = null; | this._phid = null; | ||||
| this._hidden = false; | this._isCollapsed = false; | ||||
| this._originalText = null; | this._originalText = null; | ||||
| return row; | return row; | ||||
| }, | }, | ||||
| setHidden: function(hidden) { | setCollapsed: function(collapsed) { | ||||
| this._hidden = hidden; | this._isCollapsed = collapsed; | ||||
| JX.DOM.alterClass(this._row, 'inline-hidden', this._hidden); | |||||
| var op; | var op; | ||||
| if (hidden) { | if (collapsed) { | ||||
| op = 'hide'; | op = 'hide'; | ||||
| } else { | } else { | ||||
| op = 'show'; | op = 'show'; | ||||
| } | } | ||||
| var inline_uri = this._getInlineURI(); | var inline_uri = this._getInlineURI(); | ||||
| var comment_id = this._id; | var comment_id = this._id; | ||||
| new JX.Workflow(inline_uri, {op: op, ids: comment_id}) | new JX.Workflow(inline_uri, {op: op, ids: comment_id}) | ||||
| .setHandler(JX.bag) | .setHandler(JX.bag) | ||||
| .start(); | .start(); | ||||
| this._redraw(); | |||||
| this._didUpdate(true); | this._didUpdate(true); | ||||
| }, | }, | ||||
| isHidden: function() { | isCollapsed: function() { | ||||
| return this._hidden; | return this._isCollapsed; | ||||
| }, | }, | ||||
| toggleDone: function() { | toggleDone: function() { | ||||
| var uri = this._getInlineURI(); | var uri = this._getInlineURI(); | ||||
| var data = { | var data = { | ||||
| op: 'done', | op: 'done', | ||||
| id: this._id | id: this._id | ||||
| }; | }; | ||||
| ▲ Show 20 Lines • Show All 402 Lines • ▼ Show 20 Lines | _didUpdate: function(local_only) { | ||||
| // Emit a resize event so that UI elements like the keyboard focus | // Emit a resize event so that UI elements like the keyboard focus | ||||
| // reticle can redraw properly. | // reticle can redraw properly. | ||||
| JX.Stratcom.invoke('resize'); | JX.Stratcom.invoke('resize'); | ||||
| }, | }, | ||||
| _redraw: function() { | _redraw: function() { | ||||
| var is_invisible = (this._isInvisible || this._isDeleted); | var is_invisible = (this._isInvisible || this._isDeleted); | ||||
| var is_loading = (this._isLoading); | var is_loading = this._isLoading; | ||||
| var is_collapsed = this._isCollapsed; | |||||
| var row = this._row; | var row = this._row; | ||||
| JX.DOM.alterClass(row, 'differential-inline-hidden', is_invisible); | JX.DOM.alterClass(row, 'differential-inline-hidden', is_invisible); | ||||
| JX.DOM.alterClass(row, 'differential-inline-loading', is_loading); | JX.DOM.alterClass(row, 'differential-inline-loading', is_loading); | ||||
| JX.DOM.alterClass(row, 'inline-hidden', is_collapsed); | |||||
| }, | }, | ||||
| _removeRow: function(row) { | _removeRow: function(row) { | ||||
| JX.DOM.remove(row.node); | JX.DOM.remove(row.node); | ||||
| for (var ii = 0; ii < row.listeners.length; ii++) { | for (var ii = 0; ii < row.listeners.length; ii++) { | ||||
| row.listeners[ii].remove(); | row.listeners[ii].remove(); | ||||
| } | } | ||||
| }, | }, | ||||
| Show All 9 Lines | |||||