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}}