From 99683684d68b9d8dac5673274416c780c16fbde9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Wed, 27 Jul 2016 16:55:42 +0200 Subject: [PATCH] Empty epics --- app/images/epics-empty.png | Bin 0 -> 3573 bytes app/locales/taiga/locale-en.json | 5 ++++ .../epic-row/epic-row.controller.coffee | 1 - .../epics-dashboard.controller.coffee | 9 +++++- .../epics/dashboard/epics-dashboard.jade | 24 ++++++++++++++-- .../epics/dashboard/epics-dashboard.scss | 26 ++++++++++++++++++ .../epics-table/epics-table.controller.coffee | 12 ++------ .../epics-table/epics-table.directive.coffee | 1 + 8 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 app/images/epics-empty.png create mode 100644 app/modules/epics/dashboard/epics-dashboard.scss diff --git a/app/images/epics-empty.png b/app/images/epics-empty.png new file mode 100644 index 0000000000000000000000000000000000000000..28363733acda0918a81fc6e69e7cc7ca99045647 GIT binary patch literal 3573 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 v4`8#|u(-HLJa>6{xvO literal 0 HcmV?d00001 diff --git a/app/locales/taiga/locale-en.json b/app/locales/taiga/locale-en.json index 012bb8a5..15c3bf2e 100644 --- a/app/locales/taiga/locale-en.json +++ b/app/locales/taiga/locale-en.json @@ -398,6 +398,11 @@ "ADD": "+ ADD EPIC", "UNASSIGNED": "Unassigned" }, + "EMPTY": { + "TITLE": "It looks like you have not created any epics yet", + "EXPLANATION": "Create an epic to have a superior level of User Stories. Epics can contain or be composed by User Stories from this or any other project", + "HELP": "Learn more about epics" + }, "TABLE": { "VOTES": "Votes", "NAME": "Name", diff --git a/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee b/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee index cb1e5989..c1f034b2 100644 --- a/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee +++ b/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee @@ -59,7 +59,6 @@ class EpicRowController @.epicStories = data console.log @.epicStories.toJS() @.displayUserStories = true - @confirm.notify('success') onError = (data) => @confirm.notify('error') diff --git a/app/modules/epics/dashboard/epics-dashboard.controller.coffee b/app/modules/epics/dashboard/epics-dashboard.controller.coffee index 91fb2ecd..477c288e 100644 --- a/app/modules/epics/dashboard/epics-dashboard.controller.coffee +++ b/app/modules/epics/dashboard/epics-dashboard.controller.coffee @@ -22,11 +22,12 @@ module = angular.module("taigaEpics") class EpicsDashboardController @.$inject = [ "$tgResources", + "tgResources", "$routeParams", "tgErrorHandlingService" ] - constructor: (@rs, @params, @errorHandlingService) -> + constructor: (@rs, @resources, @params, @errorHandlingService) -> @.sectionName = "Epics" @._loadProject() @@ -35,6 +36,12 @@ class EpicsDashboardController if not project.is_epics_activated @errorHandlingService.permissionDenied() @.project = project + @._loadEpics() + + _loadEpics: () -> + projectId = @.project.id + return @resources.epics.list(projectId).then (epics) => + @.epics = epics addNewEpic: () -> console.log 'Add new Epic' diff --git a/app/modules/epics/dashboard/epics-dashboard.jade b/app/modules/epics/dashboard/epics-dashboard.jade index 38b45593..788cbdce 100644 --- a/app/modules/epics/dashboard/epics-dashboard.jade +++ b/app/modules/epics/dashboard/epics-dashboard.jade @@ -9,7 +9,7 @@ doctype html project-name="vm.project.name" i18n-section-name="{{ vm.sectionName }}" ) - .action-buttons + .action-buttons(ng-if="vm.epics.size") button.button-green( translate="EPICS.DASHBOARD.ADD" title="{{ EPICS.DASHBOARD.ADD_TITLE | translate }}", @@ -17,6 +17,26 @@ doctype html ) tg-epics-table( - ng-if="vm.project" + ng-if="vm.project && vm.epics.size" project="vm.project" + epics="vm.epics" ) + + section.empty-epics(ng-if="!vm.epics.size") + img( + src="/#{v}/images/epics-empty.png" + ng-title="EPICS.EMPTY.HELP | translate" + ) + h1.title(translate="EPICS.EMPTY.TITLE") + p(translate="EPICS.EMPTY.EXPLANATION") + a( + translate="EPICS.EMPTY.HELP" + href="https://tree.taiga.io/support/frequently-asked-questions/who-is-taiga-for/" + target="_blank" + ng-title="EPICS.EMPTY.HELP | translate" + ) + button.create-epic.button-green( + translate="EPICS.DASHBOARD.ADD" + title="{{ EPICS.DASHBOARD.ADD_TITLE | translate }}", + ng-click="vm.addNewEpic()" + ) diff --git a/app/modules/epics/dashboard/epics-dashboard.scss b/app/modules/epics/dashboard/epics-dashboard.scss new file mode 100644 index 00000000..b52027dc --- /dev/null +++ b/app/modules/epics/dashboard/epics-dashboard.scss @@ -0,0 +1,26 @@ +.empty-epics { + margin: 0 auto; + padding: 5vh; + text-align: center; + width: 650px; + .title { + @include font-type(normal); + @include font-size(larger); + color: $gray-light; + margin-bottom: .5rem; + text-transform: none; + } + img { + margin: 2rem auto; + text-align: center; + width: 6rem; + } + p { + color: $gray-light; + } + a { + color: $primary; + display: block; + margin-bottom: 2rem; + } +} diff --git a/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee b/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee index fb22e4ed..6f02f06f 100644 --- a/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee +++ b/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee @@ -20,11 +20,9 @@ module = angular.module("taigaEpics") class EpicsTableController - @.$inject = [ - "tgResources" - ] + @.$inject = [] - constructor: (@rs) -> + constructor: () -> @.displayOptions = false @.displayVotes = true @.column = { @@ -36,7 +34,6 @@ class EpicsTableController status: true, progress: true } - @.loadEpics() @._checkPermissions() toggleEpicTableOptions: () -> @@ -47,11 +44,6 @@ class EpicsTableController canEdit: _.includes(@.project.my_permissions, 'modify_epic') } - loadEpics: () -> - projectId = @.project.id - promise = @rs.epics.list(projectId).then (epics) => - @.epics = epics - reorderEpics: (epic, index) -> console.log epic, index diff --git a/app/modules/epics/dashboard/epics-table/epics-table.directive.coffee b/app/modules/epics/dashboard/epics-table/epics-table.directive.coffee index 39c75a8f..bc4793cb 100644 --- a/app/modules/epics/dashboard/epics-table/epics-table.directive.coffee +++ b/app/modules/epics/dashboard/epics-table/epics-table.directive.coffee @@ -27,6 +27,7 @@ EpicsTableDirective = () -> controllerAs: "vm", bindToController: true, scope: { + epics: "=" project: "=" } }