view client/src/store/imports.js @ 1372:553aadd97087

new cross profile workflow (WIP) Needs fixing of some bugs and not so nice looks.
author Markus Kottlaender <markus@intevation.de>
date Tue, 27 Nov 2018 12:59:26 +0100
parents da7ee82ad5d6
children f4b3fb43b311 5e1218b5a123
line wrap: on
line source

/* This is Free Software under GNU Affero General Public License v >= 3.0
 * without warranty, see README.md and license for details.
 *
 * SPDX-License-Identifier: AGPL-3.0-or-later
 * License-Filename: LICENSES/AGPL-3.0.txt
 *
 * Copyright (C) 2018 by via donau
 *   – Österreichische Wasserstraßen-Gesellschaft mbH
 * Software engineering by Intevation GmbH
 *
 * Author(s):
 * Thomas Junk <thomas.junk@intevation.de>
 */

import { HTTP } from "../lib/http";

/* eslint-disable no-unused-vars */
/* eslint-disable no-unreachable */
const STATES = {
  NEEDSAPPROVAL: "NEEDSAPPROVAL",
  APPROVED: "APPROVED",
  REJECTED: "REJECTED"
};

// initial state
const init = () => {
  return {
    imports: [],
    staging: []
  };
};

const imports = {
  init,
  namespaced: true,
  state: init(),
  mutations: {
    setImports: (state, imports) => {
      state.imports = imports;
    },
    setStaging: (state, staging) => {
      const enriched = staging.map(x => {
        return { ...x, status: STATES.NEEDSAPPROVAL };
      });
      state.staging = enriched;
    },

    toggleApproval: (state, change) => {
      const { id, newStatus } = change;
      const stagedResult = state.staging.find(e => {
        return e.id === id;
      });
      if (stagedResult.status === newStatus) {
        stagedResult.status = STATES.NEEDSAPPROVAL;
      } else {
        stagedResult.status = newStatus;
      }
    }
  },
  actions: {
    getImports({ commit }) {
      return new Promise((resolve, reject) => {
        HTTP.get("/imports", {
          headers: { "X-Gemma-Auth": localStorage.getItem("token") }
        })
          .then(response => {
            commit("setImports", response.data.imports);
            resolve(response);
          })
          .catch(error => {
            reject(error);
          });
      });
    },
    getStaging({ commit }) {
      return new Promise((resolve, reject) => {
        HTTP.get("/imports?states=pending", {
          headers: { "X-Gemma-Auth": localStorage.getItem("token") }
        })
          .then(response => {
            commit("setStaging", response.data.imports);
            resolve(response);
          })
          .catch(error => {
            reject(error);
          });
      });
    },
    setStaging({ commit }, results) {
      return new Promise((resolve, reject) => {
        throw "Not implemented!";
        HTTP.get("/imports?states=pending", {
          headers: { "X-Gemma-Auth": localStorage.getItem("token") }
        })
          .then(response => {
            commit("setStaging", response.data.imports);
            resolve(response);
          })
          .catch(error => {
            reject(error);
          });
      });
    }
  }
};

export { imports, STATES };