Some more sorting hacks and new request activate fix

This commit is contained in:
Gregory Schier
2016-07-20 20:58:52 -07:00
parent bb6e385971
commit 329656f0e2
10 changed files with 52 additions and 28 deletions

View File

@@ -38,7 +38,7 @@ class RequestSwitcherModal extends ModalComponent {
} else {
// Create the request if nothing matched
const name = this.state.searchString;
const parentId = this.props.newRequestParentID;
const parentId = this.props.newRequestParentId;
db.requestCreate({name, parentId}).then(request => {
this._activateRequest(request);

View File

@@ -60,7 +60,7 @@ class RequestUrlBar extends Component {
<Input
ref="input"
type="text"
placeholder="http://echo.insomnia.rest/status/200"
placeholder="https://api.myproduct.com/v1/users"
value={url}
onChange={url => this._handleUrlChange(url)}/>
</form>

View File

@@ -51,6 +51,14 @@ class ResponsePane extends Component {
</div>
)
}
if (!request) {
return (
<section className="response-pane pane">
<header className="pane__header"></header>
<div className="pane__body pane__body--placeholder text-center pad"></div>
</section>
)
}
if (!response) {
return (

View File

@@ -81,6 +81,7 @@ class Sidebar extends Component {
key={requestGroup._id}
isActive={isActive}
moveRequestGroup={moveRequestGroup}
moveRequest={moveRequest}
toggleRequestGroup={toggleRequestGroup}
addRequestToRequestGroup={addRequestToRequestGroup}
numChildren={child.children.length}

View File

@@ -22,10 +22,10 @@ class SidebarRequestGroupRow extends Component {
}
render () {
const {
connectDragSource,
connectDropTarget,
moveRequest,
children,
requestGroup,
isActive,
@@ -73,10 +73,8 @@ class SidebarRequestGroupRow extends Component {
<ul className="sidebar__list">
{!expanded || children.length > 0 ? null : (
<SidebarRequestRow
activateRequest={() => {
}}
moveRequest={() => {
}}
activateRequest={() => null}
moveRequest={moveRequest}
isActive={false}
request={null}
requestGroup={requestGroup}
@@ -94,6 +92,7 @@ SidebarRequestGroupRow.propTypes = {
toggleRequestGroup: PropTypes.func.isRequired,
addRequestToRequestGroup: PropTypes.func.isRequired,
moveRequestGroup: PropTypes.func.isRequired,
moveRequest: PropTypes.func.isRequired,
// Other
isActive: PropTypes.bool.isRequired,

View File

@@ -48,7 +48,7 @@ class SidebarRequestRow extends Component {
if (!request) {
node = (
<li className={classes} onKeyDown={this._onKeyDown.bind(this)}>
<li className={classes}>
<div className="sidebar__item" tabIndex={0}>
<button className="sidebar__clickable"
onClick={() => db.requestCreate({parentId: requestGroup._id})}>
@@ -130,10 +130,18 @@ function isAbove (monitor, component) {
const dragTarget = {
drop (props, monitor, component) {
const {request} = monitor.getItem();
const targetRequest = props.request;
const {requestGroup} = props;
const requestGroupId = requestGroup ? requestGroup._id : null;
const parentId = targetRequest ? targetRequest.parentId : requestGroupId;
const targetId = targetRequest ? targetRequest._id : null;
if (isAbove(monitor, component)) {
props.moveRequest(monitor.getItem().request, props.request, 1);
props.moveRequest(request, parentId, targetId, 1);
} else {
props.moveRequest(monitor.getItem().request, props.request, -1);
props.moveRequest(request, parentId, targetId, -1);
}
},
hover (props, monitor, component) {

View File

@@ -169,23 +169,29 @@ class App extends Component {
})
}
_moveRequest (requestToMove, requestToTarget, targetOffset) {
_moveRequest (requestToMove, parentId, targetId, targetOffset) {
// Oh God, this function is awful...
if (requestToMove._id === requestToTarget._id) {
// Nothing to do
if (requestToMove._id === targetId) {
// Nothing to do. We are in the same spot as we started
return;
}
if (targetId === null) {
// We are moving to an empty area. No sorting required
db.requestUpdate(requestToMove, {parentId});
return;
}
// NOTE: using requestToTarget's parentId so we can switch parents!
db.requestFindByParentId(requestToTarget.parentId).then(requests => {
db.requestFindByParentId(parentId).then(requests => {
requests = requests.sort((a, b) => a.metaSortKey < b.metaSortKey ? -1 : 1);
// Find the index of request B so we can re-order and save everything
for (let i = 0; i < requests.length; i++) {
const request = requests[i];
if (request._id === requestToTarget._id) {
if (request._id === targetId) {
let before, after;
if (targetOffset < 0) {
// We're moving to below
@@ -207,11 +213,11 @@ class App extends Component {
console.warn('-- Recreating Sort Keys --');
requests.map((r, i) => {
db.requestUpdate(r, {metaSortKey: i * 100, parentId: requestToTarget.parentId});
db.requestUpdate(r, {metaSortKey: i * 100, parentId});
});
} else {
const metaSortKey = afterKey - (afterKey - beforeKey) / 2;
db.requestUpdate(requestToMove, {metaSortKey, parentId: requestToTarget.parentId});
db.requestUpdate(requestToMove, {metaSortKey, parentId});
}
break;

View File

@@ -102,11 +102,12 @@ class WorkspaceDropdown extends Component {
<DropdownDivider name="Current Workspace"/>
{/*<li>*/}
{/*<button onClick={e => db.requestCreate({parentId: workspace._id})}>*/}
{/*<i className="fa fa-plus-circle"></i> New Request*/}
{/*</button>*/}
{/*</li>*/}
<li>
<button
onClick={e => db.requestCreateAndActivate(workspace, {parentId: workspace._id})}>
<i className="fa fa-plus-circle"></i> New Request
</button>
</li>
<li>
<button onClick={e => this._requestGroupCreate() }>
@@ -159,7 +160,7 @@ class WorkspaceDropdown extends Component {
</button>
</li>
{/*<li>*/}
{/*<button><i className="fa fa-blank"></i> Open New Window</button>*/}
{/*<button><i className="fa fa-blank"></i> Open New Window</button>*/}
{/*</li>*/}
</ul>
</Dropdown>

View File

@@ -11,8 +11,9 @@
}
.tag {
width: 4.5em;
border: 1px solid !important;
padding: $padding-xxs !important;
width: 4em;
padding-left: 0;
margin-right: 0;
text-align: left;
}
}

View File

@@ -294,13 +294,13 @@ function docCreate (type, idPrefix, patch = {}) {
export function requestCreateAndActivate (workspace, patch = {}) {
return requestCreate(patch).then(r => {
workspaceUpdate(workspace, {activeRequestId: r._id});
workspaceUpdate(workspace, {metaActiveRequestId: r._id});
})
}
export function requestCopyAndActivate (workspace, request) {
return requestCopy(request).then(r => {
workspaceUpdate(workspace, {activeRequestId: r._id});
workspaceUpdate(workspace, {metaActiveRequestId: r._id});
})
}