Last active
January 27, 2021 12:20
-
-
Save mindrones/fcf9375f64216e1a7c20d3350362ec80 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", | |
"updateQuery", | |
"sendQueryUpdated" | |
] | |
}, | |
"TOGGLED_FIELD_COUNTER": { | |
"target": "Idle", | |
"actions": [ | |
"toggleField", | |
"updateQuery", | |
"sendQueryUpdated" | |
] | |
}, | |
"SELECTED_NEXT_FIELD": { | |
"target": "Idle", | |
"actions": [ | |
"selectNextField", | |
"updateQuery", | |
"sendQueryUpdated" | |
] | |
}, | |
"SELECTED_PREVIOUS_FIELD": { | |
"target": "Idle", | |
"actions": [ | |
"selectPreviousField", | |
"updateQuery", | |
"sendQueryUpdated" | |
] | |
} | |
} | |
} | |
} | |
}, | |
"Results": { | |
"id": "Results", | |
"initial": "CheckMatching", | |
"on": { | |
"QUERY_UPDATED": { | |
"target": "#Results.CheckMatching" | |
} | |
}, | |
"states": { | |
"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": "Pending" | |
} | |
] | |
}, | |
"Pending": { | |
"entry": [ | |
"conditionalLog" | |
], | |
"invoke": { | |
"id": "request", | |
"src": "apiRequest", | |
"onDone": { | |
"target": "#Results.Matching", | |
"actions": [ | |
"updateCache", | |
"updateCurrentResults" | |
] | |
}, | |
"onError": { | |
"target": "Error" | |
} | |
} | |
}, | |
"Error": { | |
"id": "Error", | |
"entry": [ | |
"conditionalLog", | |
"getError" | |
] | |
} | |
} | |
} | |
} | |
}, | |
"Search": { | |
"id": "Search", | |
"initial": "Idle", | |
"type": "parallel", | |
"states": { | |
"SearchInput": { | |
"id": "SearchInput", | |
"initial": "Idle", | |
"states": { | |
"Idle": { | |
"entry": [ | |
"conditionalLog" | |
], | |
"on": { | |
"TYPED": { | |
"target": "Idle", | |
"actions": [ | |
"updateSearchQuery", | |
"sendSearchQueryUpdated" | |
] | |
}, | |
"SEARCHED": { | |
"target": "Idle", | |
"actions": [ | |
"setMenuInactive", | |
"updateQuery", | |
"sendQueryUpdated" | |
] | |
} | |
} | |
} | |
} | |
}, | |
"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": () => {} | |
}, | |
"loadFromCache": { | |
"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": () => {} | |
}, | |
"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": () => {} | |
}, | |
"sendQueryUpdated": { | |
"type": "xstate.send", | |
"event": { | |
"type": "QUERY_UPDATED" | |
}, | |
"id": "QUERY_UPDATED" | |
}, | |
"toggleField": { | |
"type": "xstate.assign", | |
"assignment": () => {} | |
}, | |
"updateQuery": { | |
"type": "xstate.assign", | |
"assignment": () => {} | |
}, | |
"loadStatsFromCache": { | |
"type": "xstate.assign", | |
"assignment": () => {} | |
}, | |
"loadSuggestionsFromCache": { | |
"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": { | |
"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