Remove links from templates board for the moment

Insert the correct template type in templates board
Allow independant lists in templates board
Add some helpers
This commit is contained in:
Andrés Manelli 2019-02-23 01:40:11 +01:00
parent 64bf455b29
commit cdf070189e
7 changed files with 61 additions and 10 deletions

View file

@ -45,13 +45,14 @@ template(name="addCardForm")
.add-controls.clearfix
button.primary.confirm(type="submit") {{_ 'add'}}
unless isSandstorm
span.quiet
| {{_ 'or'}}
a.js-link {{_ 'link'}}
span.quiet
|  
| /
a.js-search {{_ 'search'}}
unless currentBoard.isTemplatesBoard
span.quiet
| {{_ 'or'}}
a.js-link {{_ 'link'}}
span.quiet
|  
| /
a.js-search {{_ 'search'}}
template(name="autocompleteLabelLine")
.minicard-label(class="card-label-{{colorName}}" title=labelName)

View file

@ -70,7 +70,11 @@ BlazeComponent.extendComponent({
const boardId = this.data().board();
let swimlaneId = '';
const boardView = Meteor.user().profile.boardView;
if (boardView === 'board-view-swimlanes')
let cardType = 'cardType-card';
if (this.data().board().isTemplatesBoard()) {
swimlaneId = this.parentComponent().parentComponent().data()._id; // Always swimlanes view
cardType = (Swimlanes.findOne(swimlaneId).isCardTemplatesSwimlane())?'template-card':'cardType-card';
} else if (boardView === 'board-view-swimlanes')
swimlaneId = this.parentComponent().parentComponent().data()._id;
else if ((boardView === 'board-view-lists') || (boardView === 'board-view-cal'))
swimlaneId = boardId.getDefaultSwimline()._id;
@ -85,7 +89,7 @@ BlazeComponent.extendComponent({
boardId: boardId._id,
sort: sortIndex,
swimlaneId,
type: 'cardType-card',
type: cardType,
});
// if the displayed card count is less than the total cards in the list,
@ -149,7 +153,8 @@ BlazeComponent.extendComponent({
idOrNull(swimlaneId) {
const currentUser = Meteor.user();
if (currentUser.profile.boardView === 'board-view-swimlanes')
if (currentUser.profile.boardView === 'board-view-swimlanes'
|| this.data().board().isTemplatesBoard())
return swimlaneId;
return undefined;
},

View file

@ -47,12 +47,14 @@ BlazeComponent.extendComponent({
const titleInput = this.find('.swimlane-name-input');
const title = titleInput.value.trim();
const sortValue = calculateIndexData(this.currentSwimlane, nextSwimlane, 1);
const swimlaneType = (currentBoard.isTemplatesBoard())?'template-swimlane':'swimlane';
if (title) {
Swimlanes.insert({
title,
boardId: Session.get('currentBoard'),
sort: sortValue.base,
type: swimlaneType,
});
titleInput.value = '';

View file

@ -10,6 +10,13 @@ template(name="swimlane")
+miniList(this)
if currentUser.isBoardMember
+addListForm
else if currentBoard.isTemplatesBoard
each lists
+list(this)
if currentCardIsInThisList _id ../_id
+cardDetails(currentCard)
if currentUser.isBoardMember
+addListForm
else
each currentBoard.lists
+list(this)

View file

@ -153,6 +153,10 @@ BlazeComponent.extendComponent({
}).register('swimlane');
BlazeComponent.extendComponent({
onCreated() {
this.currentSwimlane = this.currentData();
},
// Proxy
open() {
this.childComponents('inlinedForm')[0].open();
@ -164,11 +168,14 @@ BlazeComponent.extendComponent({
evt.preventDefault();
const titleInput = this.find('.list-name-input');
const title = titleInput.value.trim();
const listType = (this.currentSwimlane.isListTemplatesSwimlane())?'template-list':'list';
if (title) {
Lists.insert({
title,
boardId: Session.get('currentBoard'),
sort: $('.list').length,
type: listType,
swimlaneId: this.currentSwimlane._id,
});
titleInput.value = '';

View file

@ -27,6 +27,13 @@ Lists.attachSchema(new SimpleSchema({
*/
type: String,
},
swimlaneId: {
/**
* the swimalen associated to this list. Used for templates
*/
type: String,
defaultValue: '',
},
createdAt: {
/**
* creation date

View file

@ -108,6 +108,13 @@ Swimlanes.helpers({
}), { sort: ['sort'] });
},
lists() {
return Lists.find(Filter.mongoSelector({
swimlaneId: this._id,
archived: false,
}), { sort: ['sort'] });
},
allCards() {
return Cards.find({ swimlaneId: this._id });
},
@ -129,6 +136,21 @@ Swimlanes.helpers({
isTemplateContainer() {
return this.type === 'template-container';
},
isListTemplatesSwimlane() {
const user = Users.findOne(Meteor.userId());
return user.profile.listTemplatesSwimlaneId === this._id;
},
isCardTemplatesSwimlane() {
const user = Users.findOne(Meteor.userId());
return user.profile.cardTemplatesSwimlaneId === this._id;
},
isBoardTemplatesSwimlane() {
const user = Users.findOne(Meteor.userId());
return user.profile.boardsTemplatesSwimlaneId === this._id;
},
});
Swimlanes.mutations({