Skip to content

Commit

Permalink
Add toolbar html structure to testplan page
Browse files Browse the repository at this point in the history
  • Loading branch information
RMadjev committed Aug 5, 2020
1 parent b9f1f2c commit 9cd7b37
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 58 deletions.
50 changes: 0 additions & 50 deletions tcms/testplans/static/testplans/js/get.js
Expand Up @@ -44,9 +44,6 @@ function drawTestCases(testCases, testPlanId, permissions) {
container.append(getTestCaseRowContent(testCaseRowDocumentFragment.cloneNode(true), testCases[testCaseId], permissions));
}
attachEvents(testCases, testPlanId, permissions);
if (permissions['perm-change-testcase']) {
drawStatusAndPriority();
}
} else {
container.append(noCasesTemplate[0].innerHTML);
}
Expand Down Expand Up @@ -195,50 +192,3 @@ function attachEvents(testCases, testPlanId, permissions) {
return $(ev.target).closest('.js-testcase-row').data('testcase-pk');
}
}

function drawStatusAndPriority() {

jsonRPC('TestCaseStatus.filter', {}, function(statuses) {
const listItemTemplateFragment = $('#menu-status-item')[0].content;

var listItemsNodes = [];

for (var i = 0; i < statuses.length; i++) {
var liElement = $(listItemTemplateFragment.cloneNode(true)),
testCaseStatus = statuses[i];

liElement.find('a').text(testCaseStatus.name);
liElement.find('a')[0].dataset.id = testCaseStatus.id;
listItemsNodes.push(liElement);
}

$('.js-test-case-menu-status').each(function() {
for (var i = 0; i < listItemsNodes.length; i++) {
// clone must be used, because items will be added only to the first TC
$(this).append(listItemsNodes[i].clone());
}
});
});

jsonRPC('Priority.filter', {}, function(priorities) {
const listItemTemplateFragment = $('#menu-priority-item')[0].content;

var listItemsNodes = [];

for (var i = 0; i < priorities.length; i++) {
var liElement = $(listItemTemplateFragment.cloneNode(true)),
priority = priorities[i];

liElement.find('a').text(priority.value);
liElement.find('a')[0].dataset.id = priority.id;
listItemsNodes.push(liElement);
}

$('.js-test-case-menu-priority').each(function() {
for (var i = 0; i < listItemsNodes.length; i++) {
// clone must be used, because items will be added only to the first TC
$(this).append(listItemsNodes[i].clone());
}
});
});
}
108 changes: 100 additions & 8 deletions tcms/testplans/templates/testplans/get.html
Expand Up @@ -89,7 +89,100 @@ <h2 class="card-pf-title">
</h2>
</div>
<div class="card-pf-body">
<div id="confirmed-testcases" class="list-group list-view-pf list-view-pf-view"></div>
<div class="container-fluid">
<div class="row toolbar-pf">
<div class="col-sm-12 toolbar-pf-filter">
<form class="toolbar-pf-actions">
<div class="form-group" style="margin-right:20px">
<input type="checkbox">
</div>
<div class="form-group toolbar-pf-filter">
<label class="sr-only" for="filter">{% trans 'Name' %}</label>
<div class="input-group">
<div class="input-group-btn">
<button type="button" class="btn btn-default dropdown-toggle"
id="input-filter-button"
data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
{% trans 'Name' %}<span
class="caret"></span></button>
<ul class="dropdown-menu">
<li class="selected"><a href="#">{% trans 'Name' %}</a></li>
<li><a href="#">{% trans 'Category' %}</a></li>
<li><a href="#">{% trans 'Priority' %}</a></li>
<li><a href="#">{% trans 'Author' %}</a></li>
<li><a href="#">{% trans 'Default tester' %}</a></li>
</ul>
</div><!-- /btn-group -->
<input type="text" class="form-control" id="filter"
placeholder="{% trans 'Filter By Name...' %}">
</div><!-- /input-group -->
</div>
<div class="form-group">
<div class="dropdown btn-group">
<div class="dropdown btn-group ">
<button type="button" class="btn btn-default dropdown-toggle"
id="filter-button"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">{% trans 'Name' %}<span
class="caret"></span></button>
<ul class="dropdown-menu">
<li class="selected"><a href="#">{% trans 'Name' %}</a></li>
<li><a href="#">{% trans 'ID' %}</a></li>
<li><a href="#">{% trans 'Status' %}</a></li>
<li><a href="#">{% trans 'Priority' %}</a></li>
</ul>
</div>
<button class="btn btn-link" type="button">
<span class="fa fa-sort-alpha-asc"></span>
</button>
</div>
</div>
<div class="form-group">
<button class="btn btn-default"
type="button">{% trans 'New TestRun' %}</button>
<button class="btn btn-default" type="button">{% trans 'Clone' %}</button>
<button class="btn btn-default"
type="button">{% trans 'Default tester' %}</button>
<div class="dropdown btn-group">
<button type="button" class="btn btn-default dropdown-toggle"
id="filter-button"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">{% trans 'Status' %}<span
class="caret"></span>
</button>
<ul class="dropdown-menu js-toolbar-status">
{% for status in statues %}
<li><a data-id="{{ status.id }}">{{ status.name }}</a></li>
{% endfor %}
</ul>
</div>
<div class="dropdown btn-group">
<button type="button" class="btn btn-default dropdown-toggle"
id="filter-button"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">{% trans 'Priority' %}<span
class="caret"></span></button>
<ul class="dropdown-menu js-toolbar-priority">
{% for priority in priorities %}
<li><a data-id="{{ priority.id }}">{{ priority.value }}</a></li>
{% endfor %}
</ul>
</div>
</div>
<div class="form-group">
<button class="btn btn-default paddingLeft"
type="button">{% trans 'Delete' %}</button>
</div>
</form>
</div><!-- /col -->
</div><!-- /row -->
</div>
<div id="confirmed-testcases" class="list-group list-view-pf list-view-pf-view">
</div>
</div>
</div>
</div>
Expand Down Expand Up @@ -135,17 +228,17 @@ <h2 class="card-pf-title">
<li class="dropdown-submenu dropdown-menu-left">
<a tabindex="-1" href="#">{% trans 'Priority' %}</a>
<ul class="dropdown-menu js-test-case-menu-priority">
<template id="menu-priority-item">
<li><a data-id=""></a></li>
</template>
{% for priority in priorities %}
<li><a data-id="{{ priority.id }}">{{ priority.value }}</a></li>
{% endfor %}
</ul>
</li>
<li class="dropdown-submenu dropdown-menu-left">
<a tabindex="-1" href="#">{% trans 'Status' %}</a>
<ul class="dropdown-menu js-test-case-menu-status">
<template id="menu-status-item">
<li><a data-id=""></a></li>
</template>
{% for status in statues %}
<li><a data-id="{{ status.id }}">{{ status.name }}</a></li>
{% endfor %}
</ul>
</li>
<li><a class="js-test-case-menu-edit">{% trans 'Edit' %}</a></li>
Expand Down Expand Up @@ -211,7 +304,6 @@ <h2 class="card-pf-title">
</template>

<script src="{% static 'typeahead.js/dist/typeahead.jquery.min.js' %}"></script>

<script src="{% static 'js/utils.js' %}"></script>
<script src="{% static 'js/jsonrpc.js' %}"></script>
<script src="{% static 'js/tags.js' %}"></script>
Expand Down
4 changes: 4 additions & 0 deletions tcms/testplans/views.py
Expand Up @@ -16,6 +16,8 @@
from tcms.core.response import ModifySettingsTemplateResponse
from tcms.testplans.forms import ClonePlanForm, NewPlanForm, PlanNotifyFormSet, SearchPlanForm
from tcms.testplans.models import PlanType, TestPlan
from tcms.testcases.models import TestCaseStatus
from tcms.management.models import Priority


@method_decorator(permission_required('testplans.add_testplan'), name='dispatch')
Expand Down Expand Up @@ -152,6 +154,8 @@ def render_to_response(self, context, **response_kwargs):

def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['statues'] = TestCaseStatus.objects.all()
context['priorities'] = Priority.objects.all()
# todo: this can be passed to the new template and consumed
# in the JavaScript when rendering test cases based on status
# confirmed_status = TestCaseStatus.get_confirmed()
Expand Down

0 comments on commit 9cd7b37

Please sign in to comment.