#165 - Added list view option for the dashboard. (#279)

* Added list view & grid view buttons on the dashboard, on click of which switches the view and avoids truncation of title of the page.

* Indentation fixed.
This commit is contained in:
Sangita Mane
2021-04-20 09:58:33 +02:00
committed by GitHub
parent b7d45c0913
commit 9a23b79d89
9 changed files with 553 additions and 469 deletions

File diff suppressed because one or more lines are too long

View File

@@ -27,6 +27,8 @@ $(document).ready(function(){
var graphContainer = $('[data-role="graph"]');
var dateSelectDropdownMenu = $('[data-role="date-select-dropdown-menu"]');
var legend = graphContainer.parent('.graph-container').find('.dashedLegend');
var list = localStorage.getItem("listview") || ""; // get choice or nothing
var graphOptions = {
series: {
@@ -397,4 +399,38 @@ $(document).ready(function(){
$.fn.collapse.Constructor.prototype.keydown
);
// List View
$('.btn-list').click(function () {
var elements = $("#grid-container .task-card");
for (i = 0; i < elements.length; i++) {
$(elements[i]).removeClass('col-md-4 col-sm-6');
$(elements[i]).addClass('col-md-12');
$(elements[i]).find('.gridview:nth-child(1)').addClass('listview col-md-9 col-sm-8');
$(elements[i]).find('.gridview:nth-child(2)').addClass('listview col-md-3 col-sm-4 task-actions clearfix');
$(elements[i]).find('.gridview').removeClass('gridview');
};
$('.view-btn').removeClass('btn-default')
$(this).addClass('btn-default');
localStorage.setItem("listview", "yes") //save the choice
});
// Grid View
$('.btn-grid').click(function () {
var elements = $("#grid-container .task-card");
for (i = 0; i < elements.length; i++) {
$(elements[i]).removeClass('col-md-12');
$(elements[i]).addClass('col-md-4 col-sm-6');
$(elements[i]).find('.listview').addClass('gridview')
$(elements[i]).find('.listview:nth-child(1)').removeClass('listview col-md-9 col-sm-8');
$(elements[i]).find('.listview:nth-child(2)').removeClass('listview col-md-3 col-sm-4 task-actions clearfix');
};
$('.view-btn').removeClass('btn-default')
$(this).addClass('btn-default')
localStorage.setItem("listview", "") //clears the choice
});
//load the view as per user's choice
if (list === 'yes') {
$('.btn-list').trigger('click');
}
});

File diff suppressed because one or more lines are too long

View File

@@ -3,7 +3,7 @@
// Amend the width of container if you want to here
@container-md-ie8: @container-md;
@grid-adjustment: percentage(@grid-gutter-width / @container-md-ie8);
@grid-adjustment: percentage((@grid-gutter-width / @container-md-ie8));
.ie7, .ie8 {
* {

View File

@@ -221,12 +221,6 @@
text-decoration: none;
background-color: darken(@gray-lighter, 2%);
}
.h3 {
text-overflow: ellipsis;
overflow: hidden;
width: 100%;
white-space: nowrap;
}
.task-stats li {
padding: 7px 0 6px 0;
text-align: center;
@@ -235,6 +229,23 @@
.dropdown-menu {
top: 25px;
}
.gridview {
.h3 {
text-overflow: ellipsis;
overflow: hidden;
width: 100%;
white-space: nowrap;
}
.h4 {
display: none;
}
}
.listview {
padding-left: 0;
}
.last-run {
clear: both;
}
}
/* Badges */
@@ -723,3 +734,22 @@ ul.date-links {
.popover-content {
overflow-x: auto;
}
/*list and grid view buttons */
.view-btn {
&.btn-default, &.btn-default:hover, &.btn-default:focus {
color: #ffffff;
}
&:hover {
color: #000000;
}
&:last-child:not(:first-child) {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
margin-left: -3px;
}
&:first-child:not(:last-child) {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
}
}

View File

@@ -233,7 +233,7 @@
@navbar-default-bg: @brand-primary;
@navbar-default-border: darken(@navbar-default-bg, 6.5%);
@navbar-border-radius: @border-radius-base;
@navbar-padding-horizontal: floor(@grid-gutter-width / 2); // ~15px
@navbar-padding-horizontal: floor((@grid-gutter-width / 2)); // ~15px
@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
// Navbar links

View File

@@ -247,7 +247,7 @@
@navbar-height: 50px;
@navbar-margin-bottom: @line-height-computed;
@navbar-border-radius: @border-radius-base;
@navbar-padding-horizontal: floor(@grid-gutter-width / 2);
@navbar-padding-horizontal: floor((@grid-gutter-width / 2));
@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
@navbar-default-color: #777;

View File

@@ -41,10 +41,18 @@ describe.only('GET /', function() {
it('should display all of the expected tasks', function() {
const tasks = this.last.dom('[data-test=task]');
assert.strictEqual(tasks.length, 4);
assert.match(tasks.eq(0).text(), /npg home\s+\(wcag2aa\)/i);
assert.match(tasks.eq(1).text(), /npg home\s+\(wcag2aaa\)/i);
assert.match(tasks.eq(2).text(), /nature news\s+\(section508\)/i);
assert.match(tasks.eq(3).text(), /z integration test\s+\(wcag2aa\)/i);
assert.equal(tasks.eq(0).find('.h3').text(), 'NPG Home');
assert.equal(tasks.eq(0).find('.h4').text(), 'nature.com');
assert.equal(tasks.eq(0).find('.h5').text(), '(WCAG2AA)');
assert.equal(tasks.eq(1).find('.h3').text(), 'NPG Home');
assert.equal(tasks.eq(1).find('.h4').text(), 'nature.com');
assert.equal(tasks.eq(1).find('.h5').text(), '(WCAG2AAA)');
assert.equal(tasks.eq(2).find('.h3').text(), 'Nature News');
assert.equal(tasks.eq(2).find('.h4').text(), 'nature.com/news');
assert.equal(tasks.eq(2).find('.h5').text(), '(Section508)');
assert.equal(tasks.eq(3).find('.h3').text(), 'Z Integration Test');
assert.equal(tasks.eq(3).find('.h4').text(), 'localhost:8132');
assert.equal(tasks.eq(3).find('.h5').text(), '(WCAG2AA)');
});
it('should have links to each task', function() {

View File

@@ -14,8 +14,12 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
}}
<div class="col-md-12 task-card clearfix">
<button class="btn view-btn btn-grid btn-default"><i class="glyphicon glyphicon-th"></i> Grid</button>
<button class="btn view-btn btn-list"><i class="glyphicon glyphicon-align-justify "></i> List</button>
<ul class="list-unstyled clearfix crunch-bottom">
</div>
<ul class="list-unstyled clearfix crunch-bottom" id="grid-container">
{{#unless readonly}}
<li class="col-md-4 col-sm-6 task-card add-task">
@@ -28,9 +32,14 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
{{#each tasks}}
<li class="col-md-4 col-sm-6 task-card" data-test="task" data-role="task" data-keywords="{{lowercase name}} {{lowercase standard}} {{simplify-url url}}">
<a class="well task-card-link crunch-bottom" title="Details for URL {{simplify-url url}}" href="{{href}}">
<div class="gridview">
<p class="h3">{{name}}</p>
<p class="h4">{{simplify-url url}}</p>
<p class="h5">({{standard}})</p>
</div>
{{#if lastResult}}
<div class="gridview">
<ul class="clearfix list-unstyled floated-list task-stats">
{{#lastResult}}
<li class="danger" title="Number of errors ({{count.error}})">{{count.error}}<span class="stat-type">Errors</span></li>
@@ -38,7 +47,8 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
<li class="info last" title="Number of notices ({{count.notice}})">{{count.notice}}<span class="stat-type">Notices</span></li>
{{/lastResult}}
</ul>
Last run {{date-format lastResult.date format="DD MMM YYYY"}}
</div>
<div class="last-run">Last run {{date-format lastResult.date format="DD MMM YYYY"}}</div>
{{else}}
<p class="no-results">No results</p>
{{/if}}