catarse/catarse.js

View on GitHub
legacy/src/c/project-goals-edit.js

Summary

Maintainability
A
1 hr
Test Coverage
import m from 'mithril';
import prop from 'mithril/stream';
import models from '../models';
import _ from 'underscore';
import h from '../h';
import {
    commonAnalytics
} from '../api';
import projectGoalEditCard from './project-goal-edit-card';
import projectGoalCard from './project-goal-card';
import projectGoalsVM from '../vms/project-goals-vm';
import popNotification from './pop-notification';
import generateErrorInstance from '../error';
import railsErrorsVM from '../vms/rails-errors-vm';

const I18nScope = _.partial(h.i18nScope, 'projects.dashboard_goal');

const projectGoalsEdit = {
    oninit: function(vnode) {
        const e = generateErrorInstance();
        const mapErrors = [
            ['goals', ['goals.size']]
        ];
        const goals = projectGoalsVM.goals;

        const l = commonAnalytics.loaderWithToken(models.projectSubscribersInfo.postOptions({
            id: vnode.attrs.project.common_id
        }));

        const currentGoal = prop();
        const subscribersDetails = prop({});
        l.load().then((subData) => {
            try {
                subscribersDetails(subData);
                const sortedGoals = _.sortBy(goals(), g => g().value());
                const nextGoal = _.find(sortedGoals, goal => goal().value() > subscribersDetails().amount_paid_for_valid_period);
                currentGoal(nextGoal());
            } catch(e) {

            }
        });
        const showSuccess = prop(false);
        const error = prop(false);

        projectGoalsVM.fetchGoalsEdit(vnode.attrs.projectId);

        if (railsErrorsVM.railsErrors()) {
            railsErrorsVM.mapRailsErrors(railsErrorsVM.railsErrors(), mapErrors, e);
        }
        vnode.state = {
            showSuccess,
            e,
            error,
            goals,
            currentGoal,
            addGoal: projectGoalsVM.addGoal
        };
    },

    view: function({state, attrs}) {
        const showSuccess = state.showSuccess,
            error = state.error;
        return m('.w-container',
            m('.w-row', [
                (state.showSuccess() ? m(popNotification, {
                    message: 'Meta salva com sucesso'
                }) : ''),
                (state.error() ? m(popNotification, {
                    message: 'Erro ao salvar informações',
                    error: true
                }) : ''),

                m('.w-col.w-col-8',
                    m('.w-form', [
                        state.e.inlineError('goals'),
                        m('div',
                            m(".card.card-terciary.medium.u-marginbottom-30[id='arrecadacao']", [
                                m('.u-marginbottom-30', [
                                    m("label.fontsize-base.fontweight-semibold[for='name-8']",
                                        'O que você vai alcançar com os pagamentos mensais de seus assinantes?'
                                    ),
                                    m('.fontsize-smaller', [
                                        'As metas mensais são a melhor maneira de informar aos seus assinantes como os recursos arrecadados mensalmente serão usados e o que vocês estão conquistando juntos.',
                                        m.trust(' '),
                                        'Você pode alterar suas metas a qualquer momento durante sua campanha.'
                                    ])
                                ]),
                                _.map(state.goals(), (goal) => {
                                    if (goal().editing()) {
                                        return m(projectGoalEditCard, {
                                            goal,
                                            showSuccess,
                                            project: attrs.project,
                                            currentGoal: state.currentGoal,
                                            error
                                        });
                                    }
                                    return m(projectGoalCard, {
                                        goal
                                    });
                                }),
                                m('button.btn.btn-large.btn-message', {
                                    onclick: () => {
                                        state.addGoal(attrs.projectId);
                                    }
                                }, [
                                    '+ ',
                                    m.trust(' '),
                                    ' Adicionar meta mensal'
                                ])
                            ])
                        )
                    ])
                ),
                m('.w-col.w-col-4',
                  m('.card.u-radius',
                      [
                          m('.fontsize-small.u-marginbottom-20',
                              [
                                  m('span.fa.fa-lightbulb-o.fa-lg'),
                                  m.trust(' '),
                                  'Dicas'
                              ]
                      ),
                          m('ul.w-list-unstyled',
                              [
                                  m('li.u-marginbottom-10',
                            m('a.fontsize-smaller.alt-link[href="https://suporte.catarse.me/hc/pt-br/articles/115005632746-Catarse-Assinaturas-FAQ-Realizadores#meta_inicial"][target="_blank"]',
                              'O que é a meta mensal inicial?'
                            )
                          ),
                                  m('li.u-marginbottom-10',
                            m('a.fontsize-smaller.alt-link[href="https://suporte.catarse.me/hc/pt-br/articles/115005632746-Catarse-Assinaturas-FAQ-Realizadores#meta_futura"][target="_blank"]',
                              'O que são as metas mensais futuras?'
                            )
                          ),
                                  m('li.u-marginbottom-10',
                            m('a.fontsize-smaller.alt-link[href="https://suporte.catarse.me/hc/pt-br/articles/115005632746-Catarse-Assinaturas-FAQ-Realizadores#meta_atual"][target="_blank"]',
                              'O que é a meta mensal atual?'
                            )
                          ),
                                  m('li.u-marginbottom-10',
                            m('a.fontsize-smaller.alt-link[href="https://suporte.catarse.me/hc/pt-br/articles/115005632746-Catarse-Assinaturas-FAQ-Realizadores#nova_meta"][target="_blank"]',
                              'Posso adicionar novas metas depois do lançamento?'
                            )
                          ),
                                  m('li.u-marginbottom-10',
                            m('a.fontsize-smaller.alt-link[href="https://suporte.catarse.me/hc/pt-br/articles/115005632746-Catarse-Assinaturas-FAQ-Realizadores#nao_atingir"][target="_blank"]',
                              'O que acontece se eu não atingir a meta do meu projeto?'
                            )
                          )
                              ]
                      )
                      ]
                  )
                )
            ])
        );
    }
};

export default projectGoalsEdit;