Merge pull request #387 from taigaio/refactoring-menu-structure

Refactoring menu structure
stable
David Barragán Merino 2015-03-12 12:07:47 +01:00
commit 79d19bec39
25 changed files with 257 additions and 154 deletions

View File

@ -89,12 +89,22 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
{templateUrl: "admin/admin-project-modules.html"})
$routeProvider.when("/project/:pslug/admin/project-profile/export",
{templateUrl: "admin/admin-project-export.html"})
$routeProvider.when("/project/:pslug/admin/project-values/us",
{templateUrl: "admin/admin-project-values-us.html"})
$routeProvider.when("/project/:pslug/admin/project-values/task",
{templateUrl: "admin/admin-project-values-task.html"})
$routeProvider.when("/project/:pslug/admin/project-values/issue",
{templateUrl: "admin/admin-project-values-issue.html"})
$routeProvider.when("/project/:pslug/admin/project-profile/reports",
{templateUrl: "admin/admin-project-reports.html"})
$routeProvider.when("/project/:pslug/admin/project-values/status",
{templateUrl: "admin/admin-project-values-status.html"})
$routeProvider.when("/project/:pslug/admin/project-values/points",
{templateUrl: "admin/admin-project-values-points.html"})
$routeProvider.when("/project/:pslug/admin/project-values/priorities",
{templateUrl: "admin/admin-project-values-priorities.html"})
$routeProvider.when("/project/:pslug/admin/project-values/severities",
{templateUrl: "admin/admin-project-values-severities.html"})
$routeProvider.when("/project/:pslug/admin/project-values/types",
{templateUrl: "admin/admin-project-values-types.html"})
$routeProvider.when("/project/:pslug/admin/project-values/custom-fields",
{templateUrl: "admin/admin-project-values-custom-fields.html"})
$routeProvider.when("/project/:pslug/admin/memberships",
{templateUrl: "admin/admin-memberships.html"})
# Admin - Roles

View File

@ -84,9 +84,15 @@ urls = {
"project-admin-project-profile-default-values": "/project/:project/admin/project-profile/default-values"
"project-admin-project-profile-modules": "/project/:project/admin/project-profile/modules"
"project-admin-project-profile-export": "/project/:project/admin/project-profile/export"
"project-admin-project-values-us": "/project/:project/admin/project-values/us"
"project-admin-project-values-task": "/project/:project/admin/project-values/task"
"project-admin-project-values-issue": "/project/:project/admin/project-values/issue"
"project-admin-project-profile-reports": "/project/:project/admin/project-profile/reports"
"project-admin-project-values-status": "/project/:project/admin/project-values/status"
"project-admin-project-values-points": "/project/:project/admin/project-values/points"
"project-admin-project-values-priorities": "/project/:project/admin/project-values/priorities"
"project-admin-project-values-severities": "/project/:project/admin/project-values/severities"
"project-admin-project-values-types": "/project/:project/admin/project-values/types"
"project-admin-project-values-custom-fields": "/project/:project/admin/project-values/custom-fields"
"project-admin-memberships": "/project/:project/admin/memberships"
"project-admin-roles": "/project/:project/admin/roles"
"project-admin-third-parties-webhooks": "/project/:project/admin/third-parties/webhooks"

View File

@ -0,0 +1,32 @@
div.wrapper(ng-controller="ProjectProfileController as ctrl",
ng-init="section='admin'; sectionName='Reports'")
sidebar.menu-secondary.sidebar(tg-admin-navigation="project-profile")
include ../includes/modules/admin-menu
sidebar.menu-tertiary.sidebar(tg-admin-navigation="reports")
include ../includes/modules/admin-submenu-project-profile
section.main.admin-common(tg-project-export)
header
include ../includes/components/mainTitle
p.admin-subtitle Export your project data in CSV format and make your own reports.
p Download a CSV file or copy the generated URL and open it in your favourite text editor or spreadsheet to make your own project data reports. You will be able to visualize and analize all your data easily.
- var csvType = "US";
- var controller = "CsvExporterUserstoriesController";
div.admin-attributes-section
include ../includes/modules/admin/project-csv
- var csvType = "Task";
- var controller = "CsvExporterTasksController";
div.admin-attributes-section
include ../includes/modules/admin/project-csv
- var csvType = "Issues";
- var controller = "CsvExporterIssuesController";
div.admin-attributes-section
include ../includes/modules/admin/project-csv
a.help-button(href="https://taiga.io/support/csv-reports/", target="_blank")
span.icon.icon-help
span How to use this on my own spreadsheet?

View File

@ -0,0 +1,31 @@
div.wrapper(ng-controller="ProjectValuesSectionController")
sidebar.menu-secondary.sidebar(tg-admin-navigation="project-values")
include ../includes/modules/admin-menu
sidebar.menu-tertiary.sidebar(tg-admin-navigation="values-custom-fields")
include ../includes/modules/admin-submenu-project-values
section.main.admin-common.admin-attributes
include ../includes/components/mainTitle
p.admin-subtitle Specify the custom fields for your user stories, tasks and issues
div.admin-attributes-section(tg-project-custom-attributes,
ng-controller="ProjectCustomAttributesController as ctrl",
ng-init="type='userstory';")
- var customFieldSectionTitle = "User stories custom fields"
- var customFieldButtonTitle = "Add a custom field in user stories"
include ../includes/modules/admin/admin-custom-attributes
div.admin-attributes-section(tg-project-custom-attributes,
ng-controller="ProjectCustomAttributesController as ctrl",
ng-init="type='task';")
- var customFieldSectionTitle = "Tasks custom fields"
- var customFieldButtonTitle = "Add a custom field in tasks"
include ../includes/modules/admin/admin-custom-attributes
div.admin-attributes-section(tg-project-custom-attributes,
ng-controller="ProjectCustomAttributesController as ctrl",
ng-init="type='issue';")
- var customFieldSectionTitle = "Issues custom fields"
- var customFieldButtonTitle = "Add a custom field in issues"
include ../includes/modules/admin/admin-custom-attributes

View File

@ -1,41 +0,0 @@
div.wrapper(ng-controller="ProjectValuesSectionController")
sidebar.menu-secondary.sidebar(tg-admin-navigation="project-values")
include ../includes/modules/admin-menu
sidebar.menu-tertiary.sidebar(tg-admin-navigation="values-issue")
include ../includes/modules/admin-submenu-project-values
section.main.admin-common.admin-attributes
include ../includes/components/mainTitle
p.admin-subtitle Specify the column headers that you will use to classify Issues
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='issues'; type='issue-statuses'; sectionName='Status'",
type="issue-statuses")
include ../includes/modules/admin/project-status
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='issues'; type='priorities'; sectionName='Priorities'; objName='priority'",
type="priorities")
include ../includes/modules/admin/project-types
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='issues'; type='severities'; sectionName='Severities'; objName='severity'",
type="severities")
include ../includes/modules/admin/project-types
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='issues'; type='issue-types'; sectionName='Types'; objName='type'",
type="issue-types")
include ../includes/modules/admin/project-types
div.admin-attributes-section(tg-project-custom-attributes,
ng-controller="ProjectCustomAttributesController as ctrl",
ng-init="type='issue';")
- var customFieldButtonTitle = "Add a custom field in tasks"
include ../includes/modules/admin/admin-custom-attributes
- var csvType = "Issues";
- var controller = "CsvExporterIssuesController";
div.admin-attributes-section
include ../includes/modules/admin/project-csv

View File

@ -0,0 +1,15 @@
div.wrapper(ng-controller="ProjectValuesSectionController")
sidebar.menu-secondary.sidebar(tg-admin-navigation="project-values")
include ../includes/modules/admin-menu
sidebar.menu-tertiary.sidebar(tg-admin-navigation="values-points")
include ../includes/modules/admin-submenu-project-values
section.main.admin-common.admin-attributes
include ../includes/components/mainTitle
p.admin-subtitle Specify the points your user stories could be estimated to
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='userstories'; type='points'; sectionName='Us points'",
type="points")
include ../includes/modules/admin/project-points

View File

@ -0,0 +1,15 @@
div.wrapper(ng-controller="ProjectValuesSectionController")
sidebar.menu-secondary.sidebar(tg-admin-navigation="project-values")
include ../includes/modules/admin-menu
sidebar.menu-tertiary.sidebar(tg-admin-navigation="values-priorities")
include ../includes/modules/admin-submenu-project-values
section.main.admin-common.admin-attributes
include ../includes/components/mainTitle
p.admin-subtitle Specify the priorities your issues will have
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='issues'; type='priorities'; sectionName='Issue priorities'; objName='priority'",
type="priorities")
include ../includes/modules/admin/project-types

View File

@ -0,0 +1,15 @@
div.wrapper(ng-controller="ProjectValuesSectionController")
sidebar.menu-secondary.sidebar(tg-admin-navigation="project-values")
include ../includes/modules/admin-menu
sidebar.menu-tertiary.sidebar(tg-admin-navigation="values-severities")
include ../includes/modules/admin-submenu-project-values
section.main.admin-common.admin-attributes
include ../includes/components/mainTitle
p.admin-subtitle Specify the severities your issues will have
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='issues'; type='severities'; sectionName='Issue severities'; objName='severity'",
type="severities")
include ../includes/modules/admin/project-types

View File

@ -0,0 +1,25 @@
div.wrapper(ng-controller="ProjectValuesSectionController")
sidebar.menu-secondary.sidebar(tg-admin-navigation="project-values")
include ../includes/modules/admin-menu
sidebar.menu-tertiary.sidebar(tg-admin-navigation="values-status")
include ../includes/modules/admin-submenu-project-values
section.main.admin-common.admin-attributes
include ../includes/components/mainTitle
p.admin-subtitle Specify the statuses your user stories, tasks and issues will go through
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='userstories'; type='userstory-statuses'; sectionName='Us Statuses'",
type="userstory-statuses")
include ../includes/modules/admin/project-us-status
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='tasks'; type='task-statuses'; sectionName='Task Statuses'",
type="task-statuses")
include ../includes/modules/admin/project-status
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='issues'; type='issue-statuses'; sectionName='Issue Statuses'",
type="issue-statuses")
include ../includes/modules/admin/project-status

View File

@ -1,26 +0,0 @@
div.wrapper(ng-controller="ProjectValuesSectionController")
sidebar.menu-secondary.sidebar(tg-admin-navigation="project-values")
include ../includes/modules/admin-menu
sidebar.menu-tertiary.sidebar(tg-admin-navigation="values-task")
include ../includes/modules/admin-submenu-project-values
section.main.admin-common.admin-attributes
include ../includes/components/mainTitle
p.admin-subtitle Specify the column headers that you will use to classify Tasks related to each User Stories
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='tasks'; type='task-statuses'; sectionName='Task Statuses'",
type="task-statuses")
include ../includes/modules/admin/project-status
div.admin-attributes-section(tg-project-custom-attributes,
ng-controller="ProjectCustomAttributesController as ctrl",
ng-init="type='task';")
- var customFieldButtonTitle = "Add a custom field in tasks"
include ../includes/modules/admin/admin-custom-attributes
- var csvType = "Task";
- var controller = "CsvExporterTasksController";
div.admin-attributes-section
include ../includes/modules/admin/project-csv

View File

@ -0,0 +1,15 @@
div.wrapper(ng-controller="ProjectValuesSectionController")
sidebar.menu-secondary.sidebar(tg-admin-navigation="project-values")
include ../includes/modules/admin-menu
sidebar.menu-tertiary.sidebar(tg-admin-navigation="values-types")
include ../includes/modules/admin-submenu-project-values
section.main.admin-common.admin-attributes
include ../includes/components/mainTitle
p.admin-subtitle Specify the types your user stories could be estimated to
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='issues'; type='issue-types'; sectionName='Issue types'; objName='type'",
type="issue-types")
include ../includes/modules/admin/project-types

View File

@ -1,31 +0,0 @@
div.wrapper(ng-controller="ProjectValuesSectionController")
sidebar.menu-secondary.sidebar(tg-admin-navigation="project-values")
include ../includes/modules/admin-menu
sidebar.menu-tertiary.sidebar(tg-admin-navigation="values-us")
include ../includes/modules/admin-submenu-project-values
section.main.admin-common.admin-attributes
include ../includes/components/mainTitle
p.admin-subtitle Specify the column headers that you will use to classify User Stories
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='userstories'; type='userstory-statuses'; sectionName='Us Statuses'",
type="userstory-statuses")
include ../includes/modules/admin/project-us-status
div.admin-attributes-section(tg-project-values, ng-controller="ProjectValuesController as ctrl",
ng-init="section='admin'; resource='userstories'; type='points'; sectionName='Us points'",
type="points")
include ../includes/modules/admin/project-points
div.admin-attributes-section(tg-project-custom-attributes,
ng-controller="ProjectCustomAttributesController as ctrl",
ng-init="type='userstory';")
- var customFieldButtonTitle = "Add a custom field in tasks"
include ../includes/modules/admin/admin-custom-attributes
- var csvType = "US";
- var controller = "CsvExporterUserstoriesController";
div.admin-attributes-section
include ../includes/modules/admin/project-csv

View File

@ -9,7 +9,7 @@ section.admin-menu
span.title Project
span.icon.icon-arrow-right
li#adminmenu-project-values
a(href="", tg-nav="project-admin-project-values-us:project=project.slug")
a(href="", tg-nav="project-admin-project-values-status:project=project.slug")
span.title Attributes
span.icon.icon-arrow-right
li#adminmenu-memberships

View File

@ -20,3 +20,7 @@ section.admin-submenu
a(href="", tg-nav="project-admin-project-profile-export:project=project.slug")
span.title Export
span.icon.icon-arrow-right
li#adminmenu-reports
a(href="", tg-nav="project-admin-project-profile-reports:project=project.slug")
span.title Reports
span.icon.icon-arrow-right

View File

@ -4,17 +4,32 @@ section.admin-submenu
nav
ul
li#adminmenu-values-us
a(href="", tg-nav="project-admin-project-values-us:project=project.slug")
span.title US
li#adminmenu-values-status
a(href="", tg-nav="project-admin-project-values-status:project=project.slug")
span.title Status
span.icon.icon-arrow-right
li#adminmenu-values-task
a(href="", tg-nav="project-admin-project-values-task:project=project.slug")
span.title Task
li#adminmenu-values-points
a(href="", tg-nav="project-admin-project-values-points:project=project.slug")
span.title Points
span.icon.icon-arrow-right
li#adminmenu-values-issue
a(href="", tg-nav="project-admin-project-values-issue:project=project.slug")
span.title Issue
li#adminmenu-values-priorities
a(href="", tg-nav="project-admin-project-values-priorities:project=project.slug")
span.title Priorities
span.icon.icon-arrow-right
li#adminmenu-values-severities
a(href="", tg-nav="project-admin-project-values-severities:project=project.slug")
span.title Severities
span.icon.icon-arrow-right
li#adminmenu-values-types
a(href="", tg-nav="project-admin-project-values-types:project=project.slug")
span.title Types
span.icon.icon-arrow-right
li#adminmenu-values-custom-fields
a(href="", tg-nav="project-admin-project-values-custom-fields:project=project.slug")
span.title Custom fields
span.icon.icon-arrow-right

View File

@ -1,6 +1,6 @@
section.custom-fields-table.basic-table
div.project-values-title
h2 Custom fields
h2 #{customFieldSectionTitle}
a.button.button-gray.show-add-new.js-add-custom-field-button(href="", title="#{customFieldButtonTitle}")
span Add custom field

View File

@ -1,20 +1,16 @@
section.project-csv(ng-controller='#{controller} as ctrl', tg-select-input-text)
div.project-values-title
h2 Export #{csvType} Data
span (.csv format)
h2 #{csvType} reports
a.button.button-gray(title="Download #{csvType} CSV", ng-href="{{csvUrl}}", ng-show="csvUrl")
span Download CSV
p Get all information about your project #{csvType}. Save all your data to a <em>.csv</em> file and open it in your favourite text editor or spreadsheet. You will be able to visualize and analize all your data easily.
div.csv-regenerate-field
.field-with-options
input(type="text", placeholder="Please regenerate CSV url", readonly, ng-model="csvUrl")
.option-wrapper.select-input-content
.icon.icon-copy
a(href="", title="Regenerate CSV url", ng-click="ctrl.regenerateUuid()")
span.icon.icon-reload
span Regenerate
a.help-button(href="https://taiga.io/support/csv-reports/", target="_blank")
span.icon.icon-help
span How to use this on my own spreadsheet?
span.icon.icon-plus(ng-hide="csvUrl")
span(ng-hide="csvUrl") Generate URL
span.icon.icon-reload(ng-Show="csvUrl")
span(ng-Show="csvUrl") Regenerate

View File

@ -1,7 +1,7 @@
section.project-values-table
div.project-values-title
h2 Points
h2(ng-bind="sectionName")
a.button.button-gray.show-add-new(href="", title="Add New")
span Add new point

View File

@ -1,6 +1,6 @@
section.colors-table.admin-status-table
div.project-values-title
h2 Status
h2(ng-bind="sectionName")
a.button.button-gray.show-add-new(href="", title="Add New")
span Add new status

View File

@ -1,7 +1,7 @@
section.project-us-status
div.project-values-title
h2 Status
h2(ng-bind="sectionName")
a.button.button-gray.show-add-new(href="", title="Add New")
span Add new status

View File

@ -24,7 +24,7 @@
background: $whitish;
display: flex;
justify-content: space-between;
padding: .5rem 1rem;
padding: .8em 1rem;
text-transform: uppercase;
h2 {
margin: 0;

View File

@ -4,26 +4,31 @@
}
.custom-fields-table {
margin-bottom: 2em;
.row {
border-bottom: 0;
padding: .5rem 0;
}
.table-header {
@extend %bold;
border-bottom: 1px solid $gray-light;
border-bottom: 3px solid $whitish;
.custom-name span,
.custom-description span {
padding-left: 1.1rem;
}
}
.table-body {
form:last-child {
.row {
border: 0;
}
}
.row:hover {
background: rgba($fresh-taiga, .05);
cursor: move;
transition: background .2s linear;
.icon-drag-v,
.custom-options-wrapper {
.custom-options {
opacity: 1;
transition: opacity .2s linear;
}
@ -72,6 +77,7 @@
flex-basis: 100px;
flex-grow: 0;
flex-shrink: 0;
opacity: 0;
text-align: center;
a {
color: $gray-light;

View File

@ -1,4 +1,5 @@
.project-csv {
margin-bottom: 2.5rem;
.project-values-title {
margin-bottom: 1rem;
}
@ -10,8 +11,9 @@
margin-bottom: 1rem;
a {
@extend %small;
min-width: 110px;
}
span:first-child {
.icon {
margin-right: .3rem;
}
}

View File

@ -21,9 +21,16 @@
.project-values-header {
@extend %bold;
border-bottom: 2px solid $gray-light;
border-bottom: 3px solid $whitish;
}
.project-values-body {
form {
&:last-child {
.project-values-row {
border: 0;
}
}
}
.project-values-row {
&:hover {
background: lighten($green-taiga, 60%);

View File

@ -2,7 +2,7 @@
.table-header {
@extend %medium;
@extend %bold;
border-bottom: 2px solid $gray-light;
border-bottom: 3px solid $whitish;
&:hover {
background: transparent;
}
@ -10,17 +10,40 @@
padding-left: 50px;
}
}
form {
&:last-child {
.row {
border: 0;
}
}
}
.row {
align-items: center;
border-bottom: 1px solid $whitish;
display: flex;
justify-content: center;
padding: 1rem;
&:hover {
background: lighten($green-taiga, 60%);
cursor: move;
transition: background .2s ease-in;
.icon {
opacity: 1;
transition: opacity .2s ease-in;
}
.options-column {
opacity: 1;
transition: opacity .3s linear;
}
}
&:last-child {
border: 0;
}
&.edition {
.current-color {
cursor: pointer;
}
}
&.edition,
&.new-value {
padding-left: 50px;
@ -28,11 +51,6 @@
&.hidden {
display: none;
}
&.edition {
.current-color {
cursor: pointer;
}
}
.color-column {
flex-basis: 60px;
flex-grow: 1;
@ -86,18 +104,7 @@
opacity: 1;
}
}
.table-main {
border-bottom: 1px solid $whitish;
.row:hover {
background: lighten($green-taiga, 60%);
cursor: move;
transition: background .2s ease-in;
.icon {
opacity: 1;
transition: opacity .2s ease-in;
}
}
}
.current-color {
background-color: $gray-light;
border-radius: 2px;