Service - GraphNavigation

From Izara Wiki
Revision as of 12:56, 22 September 2023 by Sven the Barbarian (talk | contribs) (Created page with "= Overview = Manages configuration a graph navigation (eg forum system) = Repository = https://bitbucket.org/izara-core-shared/izara-core-shared-graphnavigation-config = DynamoDB tables = == GraphNavigationConfigMain == <syntaxhighlight lang="JavaScript"> { graphNavigationConfigId: "xx", // {random uuid} graphNavigationConfig: "xx", // json encoded object of configuration graphNavigationConfigName: "yy", // user specified name of the config userId: "xx" } </syn...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Overview

Manages configuration a graph navigation (eg forum system)

Repository

https://bitbucket.org/izara-core-shared/izara-core-shared-graphnavigation-config

DynamoDB tables

GraphNavigationConfigMain

{
	graphNavigationConfigId: "xx", // {random uuid}
	graphNavigationConfig: "xx", // json encoded object of configuration
	graphNavigationConfigName: "yy", // user specified name of the config
	userId: "xx"
}
  • partition key: graphNavigationConfigId
  • sort key: {none}

UsersGraphNavigationConfigs

{
	userId: "xx" // user who owns the GraphNavigationConfig
	graphNavigationConfigId: "xx",
}
  • partition key: userId
  • sort key: graphNavigationConfigId

graphNavigationConfig Object

{
	// grouping/row/cell/elements structure same tableConfig
	// add css theme and overwrite settings
	// standardize property names to match tableConfig structure (eg elementTypes)
	sections: [
		{
			sectionName: "xx",
			groupings: [
				{
					groupingName: "xx",
					rows: [
						{
							rowName: "xx",
							cells: [
								{
									cellName: "xx",
									elements: [
										{
											// displays the graph
											elementType: "graphNav",
											focusOnSelected: { //settings how to center viewport to selected element
												// eg speed of moving viewport focus
											}
											objTypes: { // which objectTypes are shown and settings for their display
												{serviceTag}: {
													{objType}: {
														// config for nodes of each objType
														// what fields to present, title, label, shape, colour (or css) etc..
														// filters
													},
													//..
												},
												//..
											],
											relationshipTags:[ // which relationshipTags are shown and settings for their display
												{
													relationshipTag: "xx",
													// config for each relationship type
													// which field sets weight etc
													// filters
												},
												//..
											]
										},
										{
											//presents detailed information about the selected element (eg node)
											elementType: "elementDetail",
											objTypes: { // objectType settings for detailed display
												{serviceTag}: {
													{objType}: {
														formObjectEditConfigId: "xx",
													},
													//..
												},
												//..
											],
										},
										{
											// present list of relationships for the selected node
											elementType: "relationships",
											relationshipTags:[ // which relationshipTags are shown and settings for their display
												{
													relationshipTag: "xx",
													// config for each relationship type
													// filters
												},
												//..
											]
										},	
										{
											elementType: "freeText",
											text: "xxx",
										},					
									]
								},
								// ..
							]
						},
						//...
					],
				},
				//...
			],
		},
		//...
	]
}

Multiple graphNav or elementDetail

  • One GraphNavigation setup can have multiple graphNav or elementDetail configs showing
  • Each has it's own settings so can present the navigation or detail for different uses

Interaction with sitePageConfig

  • sitePage can set a starting node, or have a popup to input the starting node
  • Need some way to wrap in conversations presentation that shows most recent, most commented (within timerange) etc
  • Maybe that could be a popup settin for the GraphNavigation, or an element that pops up and allows for a search that returns a range of nodes (might not be related) that match the search
  • GraphNavigation could be set to default to showing that popup for initial seeding of graph data

Working documents

GraphNavigation Config