Add front-end part

This commit is contained in:
aignatov-bio 2020-02-14 12:07:40 +01:00
parent f36e1cb8f4
commit 485597a9ef
7 changed files with 151 additions and 0 deletions

View file

@ -45,6 +45,7 @@
//= require marvinjslauncher //= require marvinjslauncher
//= require_tree ./repositories/renderers //= require_tree ./repositories/renderers
//= require_directory ./repositories/validators //= require_directory ./repositories/validators
//= require_directory ./dashboard
//= require_directory ./sitewide //= require_directory ./sitewide
//= require turbolinks //= require turbolinks

View file

@ -0,0 +1,43 @@
/* global dropdownSelector */
var DasboardCurrentTasksWidget = (function() {
function initFilters() {
dropdownSelector.init('.curent-tasks-filters .sort-filter', {
noEmptyOption: true,
singleSelect: true,
closeOnSelect: true,
selectAppearance: 'simple'
});
dropdownSelector.init('.curent-tasks-filters .view-filter', {
noEmptyOption: true,
singleSelect: true,
closeOnSelect: true,
selectAppearance: 'simple'
});
dropdownSelector.init('.curent-tasks-filters .project-filter');
dropdownSelector.init('.curent-tasks-filters .experiment-filter');
$('.curent-tasks-filters').click((e) => {
e.stopPropagation();
e.preventDefault();
dropdownSelector.closeDropdown('.curent-tasks-filters .sort-filter');
dropdownSelector.closeDropdown('.curent-tasks-filters .view-filter');
dropdownSelector.closeDropdown('.curent-tasks-filters .project-filter');
dropdownSelector.closeDropdown('.curent-tasks-filters .experiment-filter');
});
}
return {
init: () => {
if ($('.current-tasks-widget').length) {
initFilters();
}
}
};
}());
$(document).on('turbolinks:load', function() {
DasboardCurrentTasksWidget.init();
});

View file

@ -1,6 +1,65 @@
.dashboard-container .current-tasks-widget { .dashboard-container .current-tasks-widget {
grid-column: 1 / span 9; grid-column: 1 / span 9;
grid-row: 1 / span 6; grid-row: 1 / span 6;
.filter-container {
align-items: center;
display: flex;
justify-content: center;
height: 30px;
width: 30px;
.fa-filter {
cursor: pointer;
font-size: $font-size-h2;
}
.curent-tasks-filters {
padding: 0;
width: 230px;
.header {
align-items: center;
border-bottom: $border-default;
display: flex;
height: 44px;
margin-bottom: 16px;
padding: 0 5px 0 16px;
.title {
@include font-h2;
flex-grow: 1;
user-select: none;
}
}
.select-block {
display: inline-block;
padding: 0 16px 16px;
position: relative;
width: 100%;
label {
@include font-small;
display: inline-block;
font-weight: bold;
margin-bottom: 5px;
user-select: none;
}
}
.footer {
align-items: center;
border-top: $border-default;
display: flex;
justify-content: center;
height: 68px;
position: relative;
width: 100%;
}
}
}
} }
@media (max-width: 1000px) { @media (max-width: 1000px) {

View file

@ -40,6 +40,7 @@
} }
.search-field { .search-field {
@include font-button;
border: 0; border: 0;
flex-basis: 0; flex-basis: 0;
flex-grow: 2000; flex-grow: 2000;
@ -108,6 +109,7 @@
} }
.dropdown-container { .dropdown-container {
@include font-button;
background: $color-white; background: $color-white;
border: 1px solid $color-alto; border: 1px solid $color-alto;
border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px;

View file

@ -0,0 +1,8 @@
# frozen_string_literal: true
module Dashboard
class CurrentTasksController < ApplicationController
def show
end
end
end

View file

@ -1,2 +1,38 @@
<div class="current-tasks-widget basic-widget"> <div class="current-tasks-widget basic-widget">
<div class="filter-container dropdown">
<span data-toggle="dropdown" class="fas fa-filter"></span>
<div class="dropdown-menu curent-tasks-filters" role="menu">
<div class="header">
<div class="title">Filters</div>
<div class="btn btn-light"><i class="fas fa-times-circle"></i>Clear</div>
</div>
<div class="select-block">
<label>Sort by</label>
<select class="sort-filter">
<option value="date_asc" >Due Date Ascending</option>
<option value="date_desc" >Due Date Descending</option>
<option value="atoz" >From A to Z</option>
<option value="ztoa" >From Z to A</option>
</select>
</div>
<div class="select-block">
<label>Display</label>
<select class="view-filter">
<option value="active" >Only active tasks</option>
<option value="completed" >Only completed and locked tasks</option>
</select>
</div>
<div class="select-block">
<label>Project</label>
<select class="project-filter"></select>
</div>
<div class="select-block">
<label>Experiment</label>
<select class="experiment-filter"></select>
</div>
<div class="footer">
<div class="btn btn-primary">Apply</div>
</div>
</div>
</div>
</div> </div>

View file

@ -241,6 +241,8 @@ Rails.application.routes.draw do
post 'reports/destroy', to: 'reports#destroy' post 'reports/destroy', to: 'reports#destroy'
resource :dashboard, only: :show do resource :dashboard, only: :show do
resource :current_tasks, module: 'dashboard', only: :show do
end
end end
resources :projects, except: [:new, :destroy] do resources :projects, except: [:new, :destroy] do