Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

works #9

Merged
merged 167 commits into from
Oct 25, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
167 commits
Select commit Hold shift + click to select a range
c8902ff
chore(package): update es6-promise to version 3.3.1
greenkeeperio-bot Sep 14, 2016
afecfd3
chore(package): update cloudinary to version 1.4.2
greenkeeperio-bot Sep 15, 2016
fe13f3c
Merge pull request #3491 from keystonejs/greenkeeper-cloudinary-1.4.2
JedWatson Sep 16, 2016
a8f5b67
Merge pull request #3485 from keystonejs/greenkeeper-es6-promise-3.3.1
JedWatson Sep 16, 2016
454f155
chore(package): update express-request-language to version 1.1.7
greenkeeperio-bot Sep 16, 2016
f9eb25b
Merge pull request #3490 from keystonejs/greenkeeper-express-request-…
JedWatson Sep 16, 2016
faaa723
Add API File and Image Guide
christroutner Sep 17, 2016
ff94f05
chore(package): update react-color to version 2.3.0
greenkeeperio-bot Sep 18, 2016
a396bda
Merge pull request #3497 from keystonejs/greenkeeper-react-color-2.3.0
JedWatson Sep 18, 2016
0f779c7
chore(package): update mime-types to version 2.1.12
greenkeeperio-bot Sep 18, 2016
22c8ce3
Use the new Admin UI List Screen Page Object API.
webteckie Sep 19, 2016
74b9cd2
Merge pull request #3499 from keystonejs/greenkeeper-mime-types-2.1.12
JedWatson Sep 19, 2016
0075909
Merge pull request #3496 from christroutner/patch-1
JedWatson Sep 19, 2016
6020ca6
Updating client readme to reflect change from Jade to EJS
JedWatson Sep 18, 2016
3312b56
Changing location option from geocodeGoogle to enableImprove
JedWatson Sep 19, 2016
ad7c4e0
chore(package): update sinon to version 1.17.6
greenkeeperio-bot Sep 19, 2016
c8103a4
chore(package): update lodash to version 4.16.0
greenkeeperio-bot Sep 19, 2016
ffa89d1
Merge pull request #3503 from keystonejs/greenkeeper-lodash-4.16.0
JedWatson Sep 20, 2016
134fcd9
Merge pull request #3502 from keystonejs/greenkeeper-sinon-1.17.6
JedWatson Sep 20, 2016
e07e5e8
Ensuring a clean item state after update in the Admin API
JedWatson Sep 20, 2016
7d864b5
chore(package): update react-addons-test-utils to version 15.3.2
greenkeeperio-bot Sep 20, 2016
d5013c5
chore(package): update react to version 15.3.2
greenkeeperio-bot Sep 20, 2016
a4c3002
chore(package): update browserify-middleware to version 7.1.0
greenkeeperio-bot Sep 20, 2016
8e3fa7a
chore(package): update superagent to version 2.3.0
greenkeeperio-bot Sep 20, 2016
9a7adcc
chore(package): update mongoose to version 4.6.1
greenkeeperio-bot Sep 20, 2016
2ea5c97
Update dependency on keystone-nightwatch-e2e
webteckie Sep 20, 2016
ec51dfd
Column view now ignores relationship filters on sorting by relationship
Noviny Sep 21, 2016
e8cb66a
Merge pull request #3511 from keystonejs/greenkeeper-mongoose-4.6.1
JedWatson Sep 21, 2016
fdfe5c5
Merge pull request #3510 from keystonejs/greenkeeper-superagent-2.3.0
JedWatson Sep 21, 2016
ccd2218
Merge pull request #3509 from keystonejs/greenkeeper-browserify-middl…
JedWatson Sep 21, 2016
de6ed56
Merge pull request #3508 from keystonejs/greenkeeper-react-15.3.2
JedWatson Sep 21, 2016
c29ba68
Merge pull request #3507 from keystonejs/greenkeeper-react-addons-tes…
JedWatson Sep 21, 2016
c83cc0a
chore(package): update react-color to version 2.3.1
greenkeeperio-bot Sep 21, 2016
5a6530b
chore(package): update cloudinary to version 1.4.3
greenkeeperio-bot Sep 21, 2016
6120533
Merge pull request #3516 from keystonejs/greenkeeper-react-color-2.3.1
JedWatson Sep 22, 2016
3482727
Merge pull request #3517 from keystonejs/greenkeeper-cloudinary-1.4.3
JedWatson Sep 22, 2016
2f2d14e
Updating dependencies
JedWatson Sep 22, 2016
60f8598
Updating bundled packages
JedWatson Sep 22, 2016
ef17f07
chore(package): update react-router-redux to version 4.0.6
greenkeeperio-bot Sep 22, 2016
d83da54
Merge pull request #3513 from keystonejs/Resolve-issue-#3512
JedWatson Sep 23, 2016
254bbe6
Merge pull request #3500 from keystonejs/e2e-use-improved-po-api
JedWatson Sep 23, 2016
0bb6ee6
Merge pull request #3518 from keystonejs/greenkeeper-react-router-red…
JedWatson Sep 23, 2016
f88df69
Adding basic required validation for Location fields
JedWatson Sep 24, 2016
c894250
v4.0.0-beta.3
JedWatson Sep 25, 2016
08167e5
chore(package): update lodash to version 4.16.2
greenkeeperio-bot Sep 26, 2016
149d21a
Merge pull request #3523 from keystonejs/greenkeeper-lodash-4.16.2
JedWatson Sep 26, 2016
cb3a4f4
chore(package): update es6-promise to version 4.0.2
greenkeeperio-bot Sep 27, 2016
25679c1
chore(package): update mocha to version 3.1.0
greenkeeperio-bot Sep 27, 2016
0a46d32
Merge pull request #3530 from keystonejs/greenkeeper-mocha-3.1.0
JedWatson Sep 27, 2016
cbd87b3
Merge pull request #3527 from keystonejs/greenkeeper-es6-promise-4.0.2
JedWatson Sep 27, 2016
d308e3a
More refactoring around the admin UI page object usage.
webteckie Sep 24, 2016
0884367
Form/Field test object command refactoring.
webteckie Sep 24, 2016
2509d41
Refactor more tests to use the updated PO api.
webteckie Sep 28, 2016
294f732
test(e2e): Refactor the remaining tests
jstockwin Sep 28, 2016
eb21173
Update keystone-nightwatch-e2e to 0.1.8
jstockwin Sep 28, 2016
8f7fde3
test(e2e): Use new default model test config options
jstockwin Sep 28, 2016
33acd9f
Merge pull request #3531 from keystonejs/e2e-use-improved-po-api
JedWatson Sep 28, 2016
f5021b9
chore(package): update babel-core to version 6.16.0
greenkeeperio-bot Sep 28, 2016
2b1cd44
chore(package): update babel-preset-es2015 to version 6.16.0
greenkeeperio-bot Sep 28, 2016
238ef34
chore(package): update babel-preset-react to version 6.16.0
greenkeeperio-bot Sep 29, 2016
5d0d287
chore(package): update babel-preset-stage-2 to version 6.16.0
greenkeeperio-bot Sep 29, 2016
50f0290
Fix ItemView's componentDidMount function. Fixes #3528
jstockwin Sep 29, 2016
136b624
test(e2e): Add extra assertions to Relationship test to ensure #3528 …
jstockwin Sep 29, 2016
68934b0
Merge pull request #3540 from keystonejs/fix-relationship-links
JedWatson Sep 29, 2016
696aaee
Merge pull request #3536 from keystonejs/greenkeeper-babel-core-6.16.0
JedWatson Sep 29, 2016
b7c2adb
Merge pull request #3537 from keystonejs/greenkeeper-babel-preset-es2…
JedWatson Sep 29, 2016
8134821
Merge pull request #3539 from keystonejs/greenkeeper-babel-preset-sta…
JedWatson Sep 29, 2016
72dabfe
chore(package): update babel-preset-react to version 6.16.0
greenkeeperio-bot Sep 29, 2016
e61d893
Merge branch 'master' into greenkeeper-babel-preset-react-6.16.0
JedWatson Sep 29, 2016
f9563d7
Merge remote-tracking branch 'origin/greenkeeper-babel-preset-react-6…
JedWatson Sep 29, 2016
f036ee6
Merge pull request #3538 from keystonejs/greenkeeper-babel-preset-rea…
JedWatson Sep 29, 2016
90001b8
Fix re-ordering over multiple pages. Fixes #3494
jstockwin Sep 29, 2016
30d0d87
Fix deleting items over multiple pages. Fixes #3541
jstockwin Sep 29, 2016
e211f0d
chore(package): update sanitize-filename to version 1.6.1
greenkeeperio-bot Sep 29, 2016
7a37e91
Re-implement management mode "Select All", fixes #3374
jstockwin Sep 29, 2016
eaf35c2
Merge pull request #3544 from keystonejs/greenkeeper-sanitize-filenam…
JedWatson Sep 30, 2016
f9cf75b
Merge pull request #3546 from keystonejs/select-all
JedWatson Sep 30, 2016
ba978d0
chore(package): update core-assert to version 0.2.1
greenkeeperio-bot Sep 30, 2016
e92832e
Merge pull request #3547 from keystonejs/greenkeeper-core-assert-0.2.1
JedWatson Oct 1, 2016
d5aa363
chore(package): update babel-core to version 6.17.0
greenkeeperio-bot Oct 1, 2016
ec665ab
chore(package): update babel-preset-stage-2 to version 6.17.0
greenkeeperio-bot Oct 1, 2016
4b7e7bb
Fix Tiny bug in Html field when using dependsOn #3551
iamfozzy Oct 2, 2016
49c2293
Fix eslint.
iamfozzy Oct 2, 2016
f930934
Remove todo - it's done!
iamfozzy Oct 2, 2016
824ae04
Remove extra evalDependsOn
iamfozzy Oct 2, 2016
87a89b4
Merge pull request #3552 from keystonejs/greenkeeper-babel-core-6.17.0
JedWatson Oct 2, 2016
1bdb414
Merge pull request #3553 from keystonejs/greenkeeper-babel-preset-sta…
JedWatson Oct 2, 2016
dbe6ade
Merge pull request #3542 from keystonejs/fix-deleting-pagination
JedWatson Oct 2, 2016
86e99b8
Merge pull request #3554 from stuartforster/fix/tiny-dependson
JedWatson Oct 2, 2016
033e1d1
chore(package): update redux-saga to version 0.12.0
greenkeeperio-bot Oct 2, 2016
ff9c4d9
chore(package): update es6-promise to version 4.0.4
greenkeeperio-bot Oct 3, 2016
15765ec
Merge pull request #3556 from keystonejs/greenkeeper-es6-promise-4.0.4
JedWatson Oct 3, 2016
e33fb37
Merge pull request #3555 from keystonejs/greenkeeper-redux-saga-0.12.0
JedWatson Oct 3, 2016
edd0adc
chore(package): update lodash to version 4.16.3
greenkeeperio-bot Oct 3, 2016
cfbfade
chore(package): update codeclimate-test-reporter to version 0.4.0
greenkeeperio-bot Oct 3, 2016
f202da8
Merge pull request #3557 from keystonejs/greenkeeper-lodash-4.16.3
JedWatson Oct 3, 2016
38cacdc
Merge pull request #3558 from keystonejs/greenkeeper-codeclimate-test…
JedWatson Oct 3, 2016
df84404
Merge pull request #3543 from keystonejs/fix-sorting-pagination
JedWatson Oct 3, 2016
5f1164a
Leverage the latest PO api refactoring.
webteckie Oct 4, 2016
07435cc
Bump keystone-nightwatch-e2e dependency.
webteckie Oct 4, 2016
ff57049
clone Keystone.csrf.header before passing to xhr
benkroeger Oct 5, 2016
81c1b20
chore(package): update watch to version 0.19.3
greenkeeperio-bot Oct 5, 2016
9f2f1e8
chore(package): update react-day-picker to version 2.5.0
greenkeeperio-bot Oct 6, 2016
171be0c
Merge pull request #3569 from benkroeger/fix-3545
JedWatson Oct 6, 2016
307e8e8
Merge pull request #3570 from keystonejs/greenkeeper-watch-0.19.3
JedWatson Oct 6, 2016
93e7d4c
Merge pull request #3574 from keystonejs/greenkeeper-react-day-picker…
JedWatson Oct 6, 2016
2e6c05a
chore(package): update lodash to version 4.16.4
greenkeeperio-bot Oct 6, 2016
d13e33e
chore(package): update watch to version 1.0.1
greenkeeperio-bot Oct 6, 2016
0132d57
Merge pull request #3561 from keystonejs/e2e-use-improved-po-api
jstockwin Oct 6, 2016
26cb27d
Adding connect-mongo to devDeps to make developing with npm link less…
JedWatson Oct 7, 2016
eac4036
Merge pull request #3576 from keystonejs/greenkeeper-lodash-4.16.4
JedWatson Oct 8, 2016
8848d10
Add: drag and drop on on related items
andrewlinfoot Oct 8, 2016
fc36e94
Merge remote-tracking branch 'upstream/master'
andrewlinfoot Oct 8, 2016
b1223c9
chore(package): update react-color to version 2.3.3
greenkeeperio-bot Oct 8, 2016
697a9c6
New group for app level testing and misc refactoring (#3579)
webteckie Oct 9, 2016
f089a02
Merge pull request #3581 from keystonejs/greenkeeper-react-color-2.3.3
JedWatson Oct 9, 2016
a3ecc1a
Merge pull request #3577 from keystonejs/greenkeeper-watch-1.0.1
JedWatson Oct 9, 2016
88cf366
Add: sort previews on relationship sorting
andrewlinfoot Oct 9, 2016
e4f2a3e
Add: cancelling a drag and drop resets items on relationship sorting
andrewlinfoot Oct 9, 2016
bf7197e
Refactor home screen tests to make use of the latest home screen page…
webteckie Oct 9, 2016
7f06648
Merge remote-tracking branch 'upstream/master'
andrewlinfoot Oct 9, 2016
1566958
Fix Item reducer initial state test
andrewlinfoot Oct 9, 2016
11e5015
chore(package): update aphrodite to version 0.6.0
greenkeeperio-bot Oct 9, 2016
e4d9467
chore(package): update mocha to version 3.1.1
greenkeeperio-bot Oct 10, 2016
dc9cc77
Merge pull request #3588 from keystonejs/greenkeeper-mocha-3.1.1
JedWatson Oct 10, 2016
d2ac6e8
Merge pull request #3585 from andrewlinfoot/master
JedWatson Oct 10, 2016
3fec27e
Merge pull request #3587 from keystonejs/greenkeeper-aphrodite-0.6.0
JedWatson Oct 10, 2016
04ecab8
Merge branch 'master' into e2e-refactor-home-screen-tests
JedWatson Oct 10, 2016
4d412b2
Adding TODO with comment
JedWatson Oct 10, 2016
a95af39
Merge pull request #3584 from keystonejs/e2e-refactor-home-screen-tests
JedWatson Oct 10, 2016
9a087a0
chore(package): update mocha to version 3.1.2
greenkeeperio-bot Oct 11, 2016
538f9dc
Merge pull request #3591 from keystonejs/greenkeeper-mocha-3.1.2
JedWatson Oct 11, 2016
f9a5ab6
Support letsencrypt-express v2
wmertens Oct 12, 2016
442cdeb
chore(package): update async to version 2.1.1
greenkeeperio-bot Oct 12, 2016
17e359b
Merge pull request #3596 from keystonejs/greenkeeper-async-2.1.1
JedWatson Oct 13, 2016
9e40c97
chore(package): update letsencrypt-express to version 2.0.5
greenkeeperio-bot Oct 14, 2016
29b6cbb
chore(package): update react-color to version 2.3.4
greenkeeperio-bot Oct 14, 2016
7fc0e0a
Merge pull request #3594 from Yaska/fix-letsencrypt
JedWatson Oct 14, 2016
b1fba19
Ignoring yarn.lock
JedWatson Oct 14, 2016
ce6348d
Merge pull request #3602 from keystonejs/greenkeeper-react-color-2.3.4
JedWatson Oct 14, 2016
26bb73c
Fixing linter issue from #3594
JedWatson Oct 14, 2016
91978b8
Merge pull request #3601 from keystonejs/greenkeeper-letsencrypt-expr…
JedWatson Oct 14, 2016
3225a1e
chore(package): update es6-promise to version 4.0.5
greenkeeperio-bot Oct 14, 2016
d614beb
chore(package): update express-request-language to version 1.1.8
greenkeeperio-bot Oct 15, 2016
c1201f4
Merge pull request #3608 from keystonejs/greenkeeper-express-request-…
JedWatson Oct 15, 2016
a96b3d2
Updating bundled packages
JedWatson Oct 15, 2016
2a7067a
chore(package): update async to version 2.1.2
greenkeeperio-bot Oct 16, 2016
3dc2df8
chore(package): update mongoose to version 4.6.4
greenkeeperio-bot Oct 17, 2016
26a3d0b
Merge pull request #3611 from keystonejs/greenkeeper-async-2.1.2
JedWatson Oct 17, 2016
05cc8c1
Merge pull request #3613 from keystonejs/greenkeeper-mongoose-4.6.4
JedWatson Oct 17, 2016
b34078c
chore(package): update enzyme to version 2.5.1
greenkeeperio-bot Oct 17, 2016
671be90
chore(package): update supertest to version 2.0.1
greenkeeperio-bot Oct 19, 2016
5b2b2f6
SSL: Make "force" actually work
wmertens Oct 19, 2016
d71ffbb
Merge pull request #3623 from Yaska/fix-force-ssl
JedWatson Oct 20, 2016
679abd0
Merge pull request #3622 from keystonejs/greenkeeper-supertest-2.0.1
JedWatson Oct 20, 2016
0d4af14
Merge pull request #3615 from keystonejs/greenkeeper-enzyme-2.5.1
JedWatson Oct 20, 2016
4e085bf
chore(package): update react-color to version 2.4.0
greenkeeperio-bot Oct 20, 2016
6fe2d7e
Merge pull request #3626 from keystonejs/greenkeeper-react-color-2.4.0
JedWatson Oct 21, 2016
480fc09
chore(package): update browserify to version 13.1.1
greenkeeperio-bot Oct 22, 2016
514666b
chore(package): update uglify-js to version 2.7.4
greenkeeperio-bot Oct 23, 2016
9bb254a
More improvements around e2e framework API consistency (#3628)
webteckie Oct 24, 2016
f0e8724
chore(package): update mongoose to version 4.6.5
greenkeeperio-bot Oct 24, 2016
0f4dbb9
Merge pull request #3631 from keystonejs/greenkeeper-mongoose-4.6.5
JedWatson Oct 24, 2016
a0c12a7
Merge pull request #3630 from keystonejs/greenkeeper-uglify-js-2.7.4
JedWatson Oct 24, 2016
eb99099
Merge pull request #3627 from keystonejs/greenkeeper-browserify-13.1.1
JedWatson Oct 24, 2016
fa41485
Merge pull request #3560 from keystonejs/greenkeeper-es6-promise-4.0.5
JedWatson Oct 24, 2016
023c098
Updating moment
JedWatson Oct 24, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,5 @@ admin/public/styles/keystone.min.css
reports

test/e2e/drivers/*

yarn.lock
15 changes: 11 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,35 @@ matrix:
script:
- npm run test-e2e-saucelabs-group
env:
- JOB=e2e GROUP=group005Fields
- JOB=e2e GROUP=group006Fields
- node_js: '6'
addons:
sauce_connect: true
script:
- npm run test-e2e-saucelabs-group
env:
- JOB=e2e GROUP=group004Item
- JOB=e2e GROUP=group005Item
- node_js: '6'
addons:
sauce_connect: true
script:
- npm run test-e2e-saucelabs-group
env:
- JOB=e2e GROUP=group003List
- JOB=e2e GROUP=group004List
- node_js: '6'
addons:
sauce_connect: true
script:
- npm run test-e2e-saucelabs-group
env:
- JOB=e2e GROUP=group002Home
- JOB=e2e GROUP=group003Home
- node_js: '6'
addons:
sauce_connect: true
script:
- npm run test-e2e-saucelabs-group
env:
- JOB=e2e GROUP=group002App
- node_js: '6'
addons:
sauce_connect: true
Expand Down
87 changes: 82 additions & 5 deletions admin/client/App/screens/Item/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,15 @@ import {
LOAD_DATA,
DATA_LOADING_SUCCESS,
DATA_LOADING_ERROR,
DELETE_ITEM,
DRAG_MOVE_ITEM,
DRAG_RESET_ITEMS,
LOAD_RELATIONSHIP_DATA,
} from './constants';

import {
loadItems,
} from '../List/actions';

/**
* Select an item
*
Expand Down Expand Up @@ -55,6 +61,23 @@ export function loadItemData () {
};
}

export function loadRelationshipItemData ({ columns, refList, relationship, relatedItemId }) {
return (dispatch, getState) => {
refList.loadItems({
columns: columns,
filters: [{
field: refList.fields[relationship.refPath],
value: { value: relatedItemId },
}],
}, (err, items) => {
// // TODO: indicate pagination & link to main list view
// this.setState({ items });
dispatch(relationshipDataLoaded(relationship.path, items));
});
};
}


/**
* Called when data of the current item is loaded
*
Expand All @@ -68,6 +91,14 @@ export function dataLoaded (data) {
};
}

export function relationshipDataLoaded (path, data) {
return {
type: LOAD_RELATIONSHIP_DATA,
relationshipPath: path,
data,
};
};

/**
* Called when there was an error during the loading of the current item data,
* will retry loading the data ever NETWORK_ERROR_RETRY_DELAY milliseconds
Expand Down Expand Up @@ -108,11 +139,57 @@ export function deleteItem (id, router) {
if (err) {
alert('Error deleting item, please try again!');
} else {
dispatch({
type: DELETE_ITEM,
id,
});
dispatch(loadItems());
}
});
};
}

export function reorderItems ({ columns, refList, relationship, relatedItemId, item, prevSortOrder, newSortOrder }) {
return (dispatch, getState) => {
// Send the item, previous sortOrder and the new sortOrder
// we should get the proper list and new page results in return
refList.reorderItems(
item,
prevSortOrder,
newSortOrder,
{
columns: columns,
filters: [{
field: refList.fields[relationship.refPath],
value: { value: relatedItemId },
}],
},
(err, items) => {
dispatch(relationshipDataLoaded(relationship.path, items));
// If err, flash the row alert
// if (err) {
// dispatch(resetItems(item.id));
// // return this.resetItems(this.findItemById[item.id]);
// } else {
// dispatch(itemsLoaded(items));
// dispatch(setRowAlert({
// success: item.id,
// fail: false,
// }));
// }
}
);
};
}

export function moveItem ({ prevIndex, newIndex, relationshipPath, newSortOrder }) {
return {
type: DRAG_MOVE_ITEM,
prevIndex,
newIndex,
relationshipPath,
newSortOrder,
};
}

export function resetItems () {
return {
type: DRAG_RESET_ITEMS,
};
}
6 changes: 0 additions & 6 deletions admin/client/App/screens/Item/components/EditForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -259,12 +259,6 @@ var EditForm = React.createClass({
if (typeof Fields[field.type] !== 'function') {
return React.createElement(InvalidFieldType, { type: field.type, path: field.path, key: field.path });
}
if (props.dependsOn) {
props.currentDependencies = {};
Object.keys(props.dependsOn).forEach(dep => {
props.currentDependencies[dep] = this.state.values[dep];
});
}
props.key = field.path;
if (index === 0 && this.state.focusFirstField) {
props.autoFocus = true;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
import React from 'react';
import { Link } from 'react-router';
import { Columns } from 'FieldTypes';
import { Alert, Spinner } from 'elemental';

import DragDrop from './RelatedItemsListDragDrop';
import ListRow from './RelatedItemsListRow';

import { loadRelationshipItemData } from '../../actions';
import { TABLE_CONTROL_COLUMN_WIDTH } from '../../../../../constants';

const RelatedItemsList = React.createClass({
propTypes: {
dispatch: React.PropTypes.func.isRequired,
dragNewSortOrder: React.PropTypes.number,
items: React.PropTypes.array,
list: React.PropTypes.object.isRequired,
refList: React.PropTypes.object.isRequired,
relatedItemId: React.PropTypes.string.isRequired,
Expand All @@ -20,13 +28,28 @@ const RelatedItemsList = React.createClass({
componentDidMount () {
this.loadItems();
},
isSortable () {
// Check if the related items should be sortable. The referenced list has to
// be sortable and it has to set the current list as it's sortContext.
const { refList, list, relationship } = this.props;
const sortContext = refList.sortContext;
if (refList.sortable && sortContext) {
const parts = sortContext.split(':');
if (parts[0] === list.key && parts[1] === relationship.path) {
return true;
}
}
return false;
},
getColumns () {
const { relationship, refList } = this.props;
const columns = refList.expandColumns(refList.defaultColumns);
return columns.filter(i => i.path !== relationship.refPath);
},
loadItems () {
const { refList, relatedItemId, relationship } = this.props;
const { columns } = this.state;
// TODO: Move error to redux store
if (!refList.fields[relationship.refPath]) {
const err = (
<Alert type="danger">
Expand All @@ -35,26 +58,33 @@ const RelatedItemsList = React.createClass({
);
return this.setState({ err });
}
refList.loadItems({
columns: this.state.columns,
filters: [{
field: refList.fields[relationship.refPath],
value: { value: relatedItemId },
}],
}, (err, items) => {
// TODO: indicate pagination & link to main list view
this.setState({ items });
});
this.props.dispatch(loadRelationshipItemData({ columns, refList, relatedItemId, relationship }));
},
renderItems () {
return this.state.items.results.length ? (
const tableBody = (this.isSortable()) ? (
<DragDrop
columns={this.state.columns}
items={this.props.items}
{...this.props}
/>
) : (
<tbody>
{this.props.items.results.map((item) => {
return (<ListRow
key={item.id}
columns={this.state.columns}
item={item}
refList={this.props.refList}
/>);
})}
</tbody>
);
return this.props.items.results.length ? (
<div className="ItemList-wrapper">
<table cellPadding="0" cellSpacing="0" className="Table ItemList">
{this.renderTableCols()}
{this.renderTableHeaders()}
<tbody>
{this.state.items.results.map(this.renderTableRow)}
</tbody>
{tableBody}
</table>
</div>
) : (
Expand All @@ -69,16 +99,16 @@ const RelatedItemsList = React.createClass({
const cells = this.state.columns.map((col) => {
return <th key={col.path}>{col.label}</th>;
});

// add sort col when available
if (this.isSortable()) {
cells.unshift(
<th width={TABLE_CONTROL_COLUMN_WIDTH} key="sortable"></th>
);
}

return <thead><tr>{cells}</tr></thead>;
},
renderTableRow (item) {
const cells = this.state.columns.map((col, i) => {
const ColumnType = Columns[col.type] || Columns.__unrecognised__;
const linkTo = !i ? `${Keystone.adminPath}/${this.props.refList.path}/${item.id}` : undefined;
return <ColumnType key={col.path} list={this.props.refList} col={col} data={item} linkTo={linkTo} />;
});
return <tr key={'i' + item.id}>{cells}</tr>;
},
render () {
if (this.state.err) {
return <div className="Relationship">{this.state.err}</div>;
Expand All @@ -87,7 +117,7 @@ const RelatedItemsList = React.createClass({
return (
<div className="Relationship">
<h3 className="Relationship__link"><Link to={listHref}>{this.props.refList.label}</Link></h3>
{this.state.items ? this.renderItems() : <Spinner size="sm" />}
{this.props.items ? this.renderItems() : <Spinner size="sm" />}
</div>
);
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import React, { Component, PropTypes } from 'react';
import { DragDropContext } from 'react-dnd';
import HTML5Backend from 'react-dnd-html5-backend';
import { Sortable } from './RelatedItemsListRow';

class RelatedItemsListDragDrop extends Component {
render () {
const { items } = this.props;
return (
<tbody>
{items.results.map((item, i) => {
return (<Sortable
key={item.id}
index={i}
item={item}
{...this.props}
/>);
})}
</tbody>
);
}
};
RelatedItemsListDragDrop.propTypes = {
columns: PropTypes.array.isRequired,
dispatch: React.PropTypes.func.isRequired,
dragNewSortOrder: React.PropTypes.number,
items: PropTypes.array.isRequired,
list: PropTypes.object.isRequired,
refList: PropTypes.object.isRequired,
relatedItemId: PropTypes.string.isRequired,
relationship: PropTypes.object.isRequired,
};

module.exports = DragDropContext(HTML5Backend)(RelatedItemsListDragDrop);
Loading