diff --git a/default/methods/attribute/attribute_template_list.py b/default/methods/attribute/attribute_template_list.py index bf6f93296..5f20d045e 100644 --- a/default/methods/attribute/attribute_template_list.py +++ b/default/methods/attribute/attribute_template_list.py @@ -39,7 +39,8 @@ def api_attribute_template_list(project_string_id): session = session, group_id = input['group_id'], project_id = project.id, - return_kind = "objects" + return_kind = "objects", + limit = None ) group_list_serialized = [] diff --git a/frontend/src/helpers/tree_view/construct_tree.ts b/frontend/src/helpers/tree_view/construct_tree.ts index 4a5d3b0d5..107a9d7e8 100644 --- a/frontend/src/helpers/tree_view/construct_tree.ts +++ b/frontend/src/helpers/tree_view/construct_tree.ts @@ -42,40 +42,35 @@ export const build_path = (array: Array, parent_id, path) => { } export const construct_tree = (node_list: Array): Array => { - root_path = []; + root_path = [] const node_list_working_copy = [...node_list] const node_wait_list = [] const tree = []; + const check_list = []; node_list_working_copy.map(item => { const render_item = item.get_render_data() if (!render_item.parent) { tree.push(render_item) } else { - const returned_path = build_path(tree, render_item.parent, []) - let track_item: any = tree - returned_path.map(q_item => { - track_item = track_item[q_item] - }) - if (returned_path && returned_path.length !== 0 && track_item) { - track_item.children.push(render_item) - } else { - node_wait_list.push(render_item) - } + node_wait_list.push(render_item) } }) while (node_wait_list.length !== 0) { + root_path = [] const render_item = node_wait_list.shift() const returned_path = build_path(tree, render_item.parent, []) let track_item: any = tree - returned_path.map(q_item => { + root_path.map(q_item => { track_item = track_item[q_item] }) if (returned_path && returned_path.length !== 0 && track_item) { track_item.children.push(render_item) - } else { + } else if (node_wait_list.find(item => item.id === render_item.parent)) { node_wait_list.push(render_item) + } else { + check_list.push(render_item) } } diff --git a/shared/database/attribute/attribute_template.py b/shared/database/attribute/attribute_template.py index 3b7761d37..055c14f6e 100644 --- a/shared/database/attribute/attribute_template.py +++ b/shared/database/attribute/attribute_template.py @@ -105,7 +105,7 @@ def list(session, group_id, mode = "from_group", archived = False, - limit = 100, + limit = None, return_kind = "objects" ): """ @@ -126,10 +126,14 @@ def list(session, # query = query.order_by(Attribute_Template.display_order) if return_kind == "count": - return query.limit(limit).count() + if limit: + query = query.limit(limit) + return query.count() if return_kind == "objects": - return query.limit(limit).all() + if limit: + query = query.limit(limit) + return query.all() def serialize(self): """ diff --git a/shared/database/attribute/attribute_template_group.py b/shared/database/attribute/attribute_template_group.py index bbd1edd78..718f2dd8e 100644 --- a/shared/database/attribute/attribute_template_group.py +++ b/shared/database/attribute/attribute_template_group.py @@ -225,7 +225,7 @@ def list(session, project_id, archived = False, recursive = False, - limit = 100, + limit = None, return_kind = "objects", is_root = None, is_global = None @@ -251,8 +251,10 @@ def list(session, # Future if recursive == True: + if limit: + query = query.limit(limit) - root_group_list = query.limit(limit).all() + root_group_list = query.all() for group in root_group_list: # Caching / have_children? flag on attribute group? @@ -273,12 +275,13 @@ def list(session, return serialized ## end future - + if limit: + query = query.limit(limit) if return_kind == "count": - return query.limit(limit).count() + return query.count() if return_kind == "objects": - return query.limit(limit).all() + return query.all() def generate_unselected_attribute_answer(self, nested_data = None, nested_result = None): if not self.tree_data: