diff options
Diffstat (limited to 'web/src/js/actions.js')
-rw-r--r-- | web/src/js/actions.js | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/web/src/js/actions.js b/web/src/js/actions.js new file mode 100644 index 00000000..2455a52e --- /dev/null +++ b/web/src/js/actions.js @@ -0,0 +1,137 @@ +var $ = require("jquery"); +var _ = require("lodash"); +var AppDispatcher = require("./dispatcher.js").AppDispatcher; + +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", +}; + +var StoreCmds = { + ADD: "add", + UPDATE: "update", + REMOVE: "remove", + RESET: "reset" +}; + +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 + }); + } +}; + +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 + }); + */ + } +}; + +var EventLogActions_event_id = 0; +var EventLogActions = { + add_event: function (message) { + AppDispatcher.dispatchViewAction({ + type: ActionTypes.EVENT_STORE, + cmd: StoreCmds.ADD, + data: { + message: message, + level: "web", + id: "viewAction-" + EventLogActions_event_id++ + } + }); + } +}; + +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"); + } +}; + +var Query = { + SEARCH: "s", + HIGHLIGHT: "h", + SHOW_EVENTLOG: "e" +}; + +module.exports = { + ActionTypes: ActionTypes, + ConnectionActions: ConnectionActions, + FlowActions: FlowActions, + StoreCmds: StoreCmds, + SettingsActions: SettingsActions, + EventLogActions: EventLogActions, + Query: Query +};
\ No newline at end of file |