Last active
February 22, 2023 17:28
-
-
Save mindrones/2831cffd35e9962b1fbaddb3a2a90a7b to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Machine({ | |
| "id": "ExploreRoute", | |
| "initial": "Interactive", | |
| "states": { | |
| "Interactive": { | |
| "type": "parallel", | |
| "states": { | |
| "History": { | |
| "id": "History", | |
| "initial": "Idle", | |
| "states": { | |
| "Idle": { | |
| "on": { | |
| "RESULTS_UPDATED": { | |
| "target": "Idle", | |
| "actions": [ | |
| "updateCurrentURL", | |
| "sendCurrentUrlUpdated", | |
| "conditionalLog" | |
| ] | |
| }, | |
| "CURRENT_URL_UPDATED": { | |
| "target": "Idle", | |
| "actions": [ | |
| "updateEntry", | |
| "conditionalLog" | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "Selecting": { | |
| "initial": "Idle", | |
| "states": { | |
| "Idle": { | |
| "entry": [ | |
| "conditionalLog" | |
| ], | |
| "on": { | |
| "SELECTED_FIELDS": { | |
| "target": "Idle", | |
| "actions": [ | |
| "selectFields", | |
| "updateSelectionAggsHierarchy", | |
| "sendAggsHierarchyUpdated" | |
| ] | |
| }, | |
| "TOGGLED_FIELD_COUNTER": { | |
| "target": "Idle", | |
| "actions": [ | |
| "toggleField", | |
| "updateSelectionAggsHierarchy", | |
| "sendAggsHierarchyUpdated" | |
| ] | |
| }, | |
| "SELECTED_NEXT_FIELD": { | |
| "target": "Idle", | |
| "actions": [ | |
| "selectNextField", | |
| "updateSelectionAggsHierarchy", | |
| "sendAggsHierarchyUpdated" | |
| ] | |
| }, | |
| "SELECTED_PREVIOUS_FIELD": { | |
| "target": "Idle", | |
| "actions": [ | |
| "selectPreviousField", | |
| "updateSelectionAggsHierarchy", | |
| "sendAggsHierarchyUpdated" | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "Results": { | |
| "id": "Results", | |
| "initial": "Idle", | |
| "on": { | |
| "AGGS_HIERARCHY_UPDATED": { | |
| "target": "#Results.CheckMatching" | |
| } | |
| }, | |
| "states": { | |
| "Idle": {}, | |
| "CheckMatching": { | |
| "entry": [ | |
| "conditionalLog" | |
| ], | |
| "always": [ | |
| { | |
| "target": "Matching", | |
| "cond": "isMatching" | |
| }, | |
| { | |
| "target": "Dirty" | |
| } | |
| ] | |
| }, | |
| "Matching": { | |
| "id": "Matching", | |
| "entry": [ | |
| "conditionalLog", | |
| "sendResultsUpdated" | |
| ] | |
| }, | |
| "Dirty": { | |
| "id": "Dirty", | |
| "initial": "CheckingCache", | |
| "entry": [ | |
| "conditionalLog" | |
| ], | |
| "states": { | |
| "CheckingCache": { | |
| "entry": [ | |
| "conditionalLog", | |
| "setCacheKey" | |
| ], | |
| "always": [ | |
| { | |
| "target": "#Matching", | |
| "cond": "isInCache", | |
| "actions": [ | |
| "loadFromCache" | |
| ] | |
| }, | |
| { | |
| "target": "UpdatingQueue", | |
| "actions": [ | |
| "initQueue" | |
| ] | |
| } | |
| ] | |
| }, | |
| "UpdatingQueue": { | |
| "entry": [ | |
| "conditionalLog", | |
| "updateQueue" | |
| ], | |
| "always": [ | |
| { | |
| "target": "Pending", | |
| "cond": "hasQueuedAggs" | |
| }, | |
| { | |
| "target": "#Matching", | |
| "actions": [ | |
| "updateCache", | |
| "updateCurrentResults", | |
| "resetQueue" | |
| ] | |
| } | |
| ] | |
| }, | |
| "Pending": { | |
| "entry": [ | |
| "conditionalLog" | |
| ], | |
| "invoke": { | |
| "id": "request", | |
| "src": "apiRequest", | |
| "onDone": { | |
| "target": "UpdatingQueue", | |
| "actions": [ | |
| "updateQueueResults" | |
| ] | |
| }, | |
| "onError": { | |
| "target": "Error" | |
| } | |
| } | |
| }, | |
| "Error": { | |
| "id": "Error", | |
| "entry": [ | |
| "conditionalLog", | |
| "getError" | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "Search": { | |
| "id": "Search", | |
| "type": "parallel", | |
| "on": { | |
| "RESET_SEARCH": { | |
| "actions": [ | |
| "resetSearchContext" | |
| ] | |
| } | |
| }, | |
| "states": { | |
| "SearchInput": { | |
| "id": "SearchInput", | |
| "initial": "Idle", | |
| "states": { | |
| "Idle": { | |
| "entry": [ | |
| "conditionalLog" | |
| ], | |
| "on": { | |
| "TYPED": { | |
| "target": "Idle", | |
| "actions": [ | |
| "updateSearchQuery", | |
| "sendSearchQueryUpdated" | |
| ] | |
| }, | |
| "SEARCHED": { | |
| "target": "Idle", | |
| "actions": [ | |
| "setMenuInactive" | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "Fields": { | |
| "initial": "Idle", | |
| "on": { | |
| "FIELD_SELECTED": { | |
| "target": ".CheckingCache", | |
| "actions": [ | |
| "updateCurrentField", | |
| "sendFieldUpdated" | |
| ] | |
| }, | |
| "NEXT_FIELD_SELECTED": { | |
| "target": ".CheckingCache", | |
| "actions": [ | |
| "selectNextSearchField", | |
| "sendFieldUpdated" | |
| ] | |
| }, | |
| "PREV_FIELD_SELECTED": { | |
| "target": ".CheckingCache", | |
| "actions": [ | |
| "selectPrevSearchField", | |
| "sendFieldUpdated" | |
| ] | |
| }, | |
| "SEARCH_QUERY_UPDATED": { | |
| "target": ".CheckingCache" | |
| } | |
| }, | |
| "states": { | |
| "Idle": { | |
| "on": { | |
| "FIELD_STATS_SHOWN": { | |
| "actions": [ | |
| "setMenuActive" | |
| ] | |
| }, | |
| "FIELD_STATS_HIDDEN": { | |
| "actions": [ | |
| "setMenuInactive" | |
| ] | |
| } | |
| } | |
| }, | |
| "CheckingCache": { | |
| "entry": [ | |
| "setStatsCacheKey", | |
| "conditionalLog" | |
| ], | |
| "always": [ | |
| { | |
| "target": "Idle", | |
| "cond": "isInStatsCache", | |
| "actions": [ | |
| "loadStatsFromCache" | |
| ] | |
| }, | |
| { | |
| "target": "Pending" | |
| } | |
| ] | |
| }, | |
| "Pending": { | |
| "entry": [ | |
| "conditionalLog" | |
| ], | |
| "invoke": { | |
| "id": "StatsRequest", | |
| "src": "fieldsStatsRequest", | |
| "onDone": { | |
| "target": "Idle", | |
| "actions": [ | |
| "updateStatsCache", | |
| "updateFieldStats", | |
| "sendFieldUpdated" | |
| ] | |
| }, | |
| "onError": { | |
| "target": "Error" | |
| } | |
| } | |
| }, | |
| "Error": { | |
| "id": "FieldsError", | |
| "entry": [ | |
| "conditionalLog", | |
| "getFieldsError" | |
| ] | |
| } | |
| } | |
| }, | |
| "Suggestions": { | |
| "initial": "Idle", | |
| "on": { | |
| "FIELD_UPDATED": { | |
| "target": ".CheckingCache" | |
| }, | |
| "SEARCH_QUERY_UPDATED": { | |
| "target": ".CheckingCache" | |
| } | |
| }, | |
| "states": { | |
| "Idle": {}, | |
| "CheckingCache": { | |
| "entry": [ | |
| "conditionalLog", | |
| "setSuggestionsCacheKey" | |
| ], | |
| "always": [ | |
| { | |
| "target": "Idle", | |
| "cond": "isSuggestionsRequestIncomplete" | |
| }, | |
| { | |
| "target": "Idle", | |
| "cond": "isInSuggestionsCache", | |
| "actions": [ | |
| "loadSuggestionsFromCache" | |
| ] | |
| }, | |
| { | |
| "target": "Pending" | |
| } | |
| ] | |
| }, | |
| "Pending": { | |
| "entry": [ | |
| "conditionalLog", | |
| "setAsWaiting" | |
| ], | |
| "invoke": { | |
| "id": "SuggestionsRequest", | |
| "src": "suggestionsRequest", | |
| "onDone": { | |
| "target": "Idle", | |
| "actions": [ | |
| "updateSuggestionsCache", | |
| "updateSuggestions", | |
| "sendFieldUpdated" | |
| ] | |
| }, | |
| "onError": { | |
| "target": "Error" | |
| } | |
| } | |
| }, | |
| "Error": { | |
| "id": "SuggestionsError", | |
| "entry": [ | |
| "conditionalLog", | |
| "getSuggestionsError" | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "on": { | |
| "DATASET_UPDATED": { | |
| "target": "#ExploreRoute.Interactive", | |
| "actions": [ | |
| "selectDataset", | |
| "setDataset", | |
| "setURL" | |
| ] | |
| }, | |
| "RESET_SOURCES": { | |
| "target": "#ExploreRoute.Interactive", | |
| "actions": [ | |
| "resetSources" | |
| ] | |
| }, | |
| "SELECT_SOURCE": { | |
| "target": "#ExploreRoute.Interactive", | |
| "actions": [ | |
| "selectSource" | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| }, { | |
| "actions": { | |
| "updateCurrentURL": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "sendCurrentUrlUpdated": { | |
| "type": "xstate.send", | |
| "event": { | |
| "type": "CURRENT_URL_UPDATED" | |
| }, | |
| "id": "CURRENT_URL_UPDATED" | |
| }, | |
| "updateEntry": () => {}, | |
| "getError": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "initQueue": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "loadFromCache": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "resetQueue": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "sendResultsUpdated": { | |
| "type": "xstate.send", | |
| "event": { | |
| "type": "RESULTS_UPDATED" | |
| }, | |
| "id": "RESULTS_UPDATED" | |
| }, | |
| "setCacheKey": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "updateCache": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "updateCurrentResults": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "updateQueue": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "updateQueueResults": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "conditionalLog": { | |
| "type": "xstate.choose", | |
| "conds": [ | |
| { | |
| "cond": "logGuard", | |
| "actions": [ | |
| { | |
| "type": "xstate.log", | |
| "label": "conditionalLog", | |
| "expr": () => {} | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "setDataset": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "setURL": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "resetSources": () => {}, | |
| "selectDataset": () => {}, | |
| "selectSource": () => {}, | |
| "selectFields": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "selectNextField": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "selectPreviousField": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "sendAggsHierarchyUpdated": { | |
| "type": "xstate.send", | |
| "event": { | |
| "type": "AGGS_HIERARCHY_UPDATED" | |
| }, | |
| "id": "AGGS_HIERARCHY_UPDATED" | |
| }, | |
| "toggleField": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "updateSelectionAggsHierarchy": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "loadStatsFromCache": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "loadSuggestionsFromCache": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "resetSearchContext": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "selectNextSearchField": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "selectPrevSearchField": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "sendFieldUpdated": { | |
| "type": "xstate.send", | |
| "event": { | |
| "type": "FIELD_UPDATED" | |
| }, | |
| "id": "FIELD_UPDATED" | |
| }, | |
| "sendSearchQueryUpdated": { | |
| "type": "xstate.send", | |
| "event": { | |
| "type": "SEARCH_QUERY_UPDATED" | |
| }, | |
| "id": "SEARCH_QUERY_UPDATED" | |
| }, | |
| "setAsWaiting": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "setMenuActive": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "setMenuInactive": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "setStatsCacheKey": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "setSuggestionsCacheKey": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "updateCurrentField": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "updateFieldStats": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "updateSearchQuery": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "updateStatsCache": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "updateSuggestions": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| }, | |
| "updateSuggestionsCache": { | |
| "type": "xstate.assign", | |
| "assignment": () => {} | |
| } | |
| }, | |
| "guards": { | |
| "hasQueuedAggs": () => {}, | |
| "isInCache": () => {}, | |
| "isMatching": () => {}, | |
| "logGuard": () => {}, | |
| "isInStatsCache": () => {}, | |
| "isInSuggestionsCache": () => {}, | |
| "isSuggestionsRequestIncomplete": () => {} | |
| }, | |
| "services": { | |
| "apiRequest": () => {}, | |
| "fieldsStatsRequest": () => {}, | |
| "suggestionsRequest": () => {} | |
| } | |
| }) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment