Skip to content
Snippets Groups Projects
feature.store.js 15.32 KiB
import axios from '@/axios-client.js';
import router from '../../router';

const feature = {
  namespaced: true,
  state: {
    attachmentFormset: [],
    attachmentsToDelete: [],
    checkedFeatures: [],
    clickedFeatures: [],
    extra_forms: [],
    features: [],
    features_count: 0,
    currentFeature: null,
    form: null,
    linkedFormset: [], //* used to edit in feature_edit
    linked_features: [], //* used to display in feature_detail
    massMode: 'edit-status',
  },
  mutations: {
    SET_FEATURES(state, features) {
      state.features = features.sort((a, b) => {
        return new Date(b.created_on) - new Date(a.created_on); // sort features chronologically
      });
    },
    SET_FEATURES_COUNT(state, features_count) {
      state.features_count = features_count;
    },
    SET_CURRENT_FEATURE(state, feature) {
      state.currentFeature = feature;
    },
    UPDATE_FORM(state, payload) {
      state.form = payload;
    },
    INIT_FORM(state) {
      state.form = {
        title: state.currentFeature.title,
        description: { value: state.currentFeature.description },
        status: { value: state.currentFeature.status },
      };
    },
    UPDATE_FORM_FIELD(state, field) {
      if (state.form[field.name].value !== undefined) {
        state.form[field.name].value = field.value;
      } else {
        state.form[field.name] = field.value;
      }
    },
    UPDATE_EXTRA_FORM(state, extra_form) {
      const index = state.extra_forms.findIndex(el => el.label === extra_form.label);
      if (index !== -1) {
        state.extra_forms[index] = extra_form;
      }
    },
    SET_EXTRA_FORMS(state, extra_forms) {
      state.extra_forms = extra_forms;
    },
    CLEAR_EXTRA_FORM(state) {
      state.extra_forms = [];
    },
    ADD_ATTACHMENT_FORM(state, attachmentFormset) {
      state.attachmentFormset = [...state.attachmentFormset, attachmentFormset];
    },
    UPDATE_ATTACHMENT_FORM(state, payload) {
      const index = state.attachmentFormset.findIndex((el) => el.dataKey === payload.dataKey);
      if (index !== -1) {
        state.attachmentFormset[index] = payload;
      }
    },
    REMOVE_ATTACHMENT_FORM(state, payload) {