From 1945074db6a68704635f567558c4f19ae04c8b68 Mon Sep 17 00:00:00 2001 From: Manuel Wiedenmann Date: Tue, 24 Apr 2018 15:27:54 +0200 Subject: [PATCH] Create proposal-list/item component --- .../proposal-list/item/component.js | 29 +++++++++++++++++++ .../proposal-list/item/template.hbs | 8 +++++ 2 files changed, 37 insertions(+) create mode 100644 app/components/proposal-list/item/component.js create mode 100644 app/components/proposal-list/item/template.hbs diff --git a/app/components/proposal-list/item/component.js b/app/components/proposal-list/item/component.js new file mode 100644 index 0000000..66c000e --- /dev/null +++ b/app/components/proposal-list/item/component.js @@ -0,0 +1,29 @@ +import Component from '@ember/component'; +import tag from 'ember-awesome-macros/tag'; +import { computed } from '@ember/object'; +import { reads } from '@ember/object/computed'; +import { inject } from '@ember/service'; + +export default Component.extend({ + kredits: inject(), + + tagName: 'li', + classNames: ['proposal-list-item'], + + attributeBindings: ['data-proposal-id', 'title'], + + title: tag`(${'proposal.kind'}) ${'proposal.description'}`, + 'data-proposal-id': reads('proposal.id'), + + canBeVoted: computed('voterIds.[]', 'kredits.currentUser', function() { + let { isExecuted, voterIds } = this.proposal; + let { currentUser } = this.kredits; + voterIds = voterIds.map((id) => id.toString()); + + return currentUser.isCore && !isExecuted && !voterIds.includes(currentUser.id); + }), + + selected: computed('selectedProposals.[]', function() { + return this.selectedProposals.includes(this.proposal.id); + }) +}); diff --git a/app/components/proposal-list/item/template.hbs b/app/components/proposal-list/item/template.hbs new file mode 100644 index 0000000..75ab52e --- /dev/null +++ b/app/components/proposal-list/item/template.hbs @@ -0,0 +1,8 @@ + +{{proposal.amount}}₭S +for {{proposal.contributor.name}} +({{proposal.votesCount}}/{{proposal.votesNeeded}} votes) + +{{#if canBeVoted}} + +{{/if}}