import $ from "jquery"; import {AppDispatcher} from "./dispatcher.js"; import {fetchApi} from "./utils.js"; export var ActionTypes = { // Connection CONNECTION_OPEN: "connection_open", CONNECTION_CLOSE: "connection_close", CONNECTION_ERROR: "connection_error", // Stores SETTINGS_STORE: "settings", EVENT_STORE: "events", FLOW_STORE: "flows" }; export var StoreCmds = { ADD: "add", UPDATE: "update", REMOVE: "remove", RESET: "reset" }; export var ConnectionActions = { open: function () { AppDispatcher.dispatchViewAction({ type: ActionTypes.CONNECTION_OPEN }); }, close: function () { AppDispatcher.dispatchViewAction({ type: ActionTypes.CONNECTION_CLOSE }); }, error: function () { AppDispatcher.dispatchViewAction({ type: ActionTypes.CONNECTION_ERROR }); } }; export var SettingsActions = { update: function (settings) { $.ajax({ type: "PUT", url: "/settings", contentType: 'application/json', data: JSON.stringify(settings) }); /* //Facebook Flux: We do an optimistic update on the client already. AppDispatcher.dispatchViewAction({ type: ActionTypes.SETTINGS_STORE, cmd: StoreCmds.UPDATE, data: settings }); */ } }; export var FlowActions = { accept: function (flow) { $.post("/flows/" + flow.id + "/accept"); }, accept_all: function(){ $.post("/flows/accept"); }, "delete": function(flow){ $.ajax({ type:"DELETE", url: "/flows/" + flow.id }); }, duplicate: function(flow){ $.post("/flows/" + flow.id + "/duplicate"); }, replay: function(flow){ $.post("/flows/" + flow.id + "/replay"); }, revert: function(flow){ $.post("/flows/" + flow.id + "/revert"); }, update: function (flow, nextProps) { /* //Facebook Flux: We do an optimistic update on the client already. var nextFlow = _.cloneDeep(flow); _.merge(nextFlow, nextProps); AppDispatcher.dispatchViewAction({ type: ActionTypes.FLOW_STORE, cmd: StoreCmds.UPDATE, data: nextFlow }); */ $.ajax({ type: "PUT", url: "/flows/" + flow.id, contentType: 'application/json', data: JSON.stringify(nextProps) }); }, clear: function(){ $.post("/clear"); }, download: () => window.location = "/flows/dump", upload: (file) => { let data = new FormData(); data.append('file', file); fetchApi("/flows/dump", { method: 'post', body: data }) } }; export var Query = { SEARCH: "s", HIGHLIGHT: "h", SHOW_EVENTLOG: "e" };