Skip to content

Commit ff600ae

Browse files
tischsoicŁukasz Serwatka
authored andcommitted
EZP-30289: Content Tree does not load when root location has no items (#159)
* EZP-30289: Fix generatingSubtree in Content Tree for root location with no children * Fix limit in root * Add try catch
1 parent 03ef681 commit ff600ae

File tree

6 files changed

+19
-12
lines changed

6 files changed

+19
-12
lines changed

Resources/public/js/ContentTree.module.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Resources/public/js/ContentTree.module.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Resources/public/js/MultiFileUpload.module.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Resources/public/js/SubItems.module.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Resources/public/js/UniversalDiscovery.module.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/modules/content-tree/content.tree.module.js

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export default class ContentTreeModule extends Component {
1515
this.handleCollapseAllItems = this.handleCollapseAllItems.bind(this);
1616
this.limitSubitemsInSubtree = this.limitSubitemsInSubtree.bind(this);
1717

18+
try {
1819
const savedSubtree = this.readSubtree();
1920

2021
this.items = props.preloadedLocations;
@@ -24,11 +25,16 @@ export default class ContentTreeModule extends Component {
2425
this.clipTooDeepSubtreeBranches(this.subtree[0], props.treeMaxDepth - 1);
2526
this.subtree[0].children.forEach(this.limitSubitemsInSubtree);
2627
this.saveSubtree();
28+
} catch(error) {
29+
this.items = [];
30+
this.subtree = this.generateInitialSubtree();
31+
this.saveSubtree();
32+
}
2733
}
2834

2935
componentDidMount() {
3036
if (this.items.length) {
31-
this.subtree = this.generateSubtree(this.items);
37+
this.subtree = this.generateSubtree(this.items, true);
3238
this.saveSubtree();
3339

3440
return;
@@ -41,7 +47,7 @@ export default class ContentTreeModule extends Component {
4147

4248
setInitialItemsState(location) {
4349
this.items = [location];
44-
this.subtree = this.generateSubtree(this.items);
50+
this.subtree = this.generateSubtree(this.items, true);
4551

4652
this.saveSubtree();
4753
this.forceUpdate();
@@ -241,22 +247,23 @@ export default class ContentTreeModule extends Component {
241247
];
242248
}
243249

244-
generateSubtree(items) {
250+
generateSubtree(items, isRoot) {
245251
const itemsWithoutLeafs = [];
246252
const { subitemsLoadLimit, subitemsLimit } = this.props;
247253

248254
for (const item of items) {
249-
const isLeaf = !item.subitems.length;
255+
const subitemsCount = item.subitems.length;
256+
const isLeaf = !subitemsCount;
250257

251-
if (!isLeaf) {
252-
const limit = Math.ceil(item.subitems.length / subitemsLoadLimit) * subitemsLoadLimit;
258+
if (!isLeaf || isRoot) {
259+
const limit = subitemsCount ? Math.ceil(subitemsCount / subitemsLoadLimit) * subitemsLoadLimit : subitemsLoadLimit;
253260

254261
itemsWithoutLeafs.push({
255262
'_media-type': 'application/vnd.ez.api.ContentTreeLoadSubtreeRequestNode',
256263
locationId: item.locationId,
257264
limit: Math.min(subitemsLimit, limit),
258265
offset: 0,
259-
children: this.generateSubtree(item.subitems),
266+
children: this.generateSubtree(item.subitems, false),
260267
});
261268
}
262269
}

0 commit comments

Comments
 (0)