Skip to content
Snippets Groups Projects
datasets.js 1.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • Matthias Konitzny's avatar
    Matthias Konitzny committed
    /**
     * Uses the fetch API to create an ajax call for the WordPress API to fetch/post data from/to the server.
     * @param data {FormData} Data for the ajax call. Must contain an entry which specifies the ajax `action`
     * @returns {Promise<any>} The response from the server
     */
    function ajaxCall(data) {
        let opts = {
            method: "POST",
            body: data,
        };
    
        return fetch(ks_global.ajax_url, opts).then(function (response) {
            return response.json();
        });
    }
    
    
    /**
     * Returns the json object from the stored graph as promise.
     *
     * @param {String} spaceId Identification of graph to load.
    
     * @returns Promise returning graph object.
    
     */
    export function loadGraphJson(spaceId) {
    
        const data = new FormData();
        data.append("action", "get_space");
        data.append("space", spaceId);
    
    
    Matthias Konitzny's avatar
    Matthias Konitzny committed
        return ajaxCall(data);
    
    }
    
    /**
     * Takes the graph json object and stores it in the backend.
     *
    
    Maximilian Giller's avatar
    Maximilian Giller committed
     * @param {String} spaceId Identification of graph to save.
    
     * @param {object} json Graph object
    
     *
     * @returns Promise returning state of query.
    
     */
    export function saveGraphJson(spaceId, json) {
    
        const data = new FormData();
        data.append("action", "update_space");
        data.append("space", spaceId);
        data.append("graph", JSON.stringify(json));
    
    
    Matthias Konitzny's avatar
    Matthias Konitzny committed
        return ajaxCall(data);
    
    }
    
    /**
     * Retrieves a list of all available spaces to choose from.
     *
     * @returns A promise containing an array containing all available space ids.
     */
    export function listAllSpaces() {
    
        const data = new FormData();
        data.append("action", "list_spaces");
    
    
    Matthias Konitzny's avatar
    Matthias Konitzny committed
        return ajaxCall(data).then((data) => data.spaces);