diff --git a/README.md b/README.md index ab5cfc24..75ca4fb0 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ # Egeria React UI -The Egeria React UI is a multitenanted user interface with eco-system and solution capabilities. +The Egeria React UI is a multitenanted user interface with eco-system and solution capabilities. It's documentation is [https://odpi.github.io/egeria-docs/user-interfaces/react/](https://odpi.github.io/egeria-docs/user-interfaces/react/) -### Documentation [https://odpi.github.io/egeria-docs/user-interfaces/react/](https://odpi.github.io/egeria-docs/user-interfaces/react/) +Contributors see the [Contributor Guide](contributors/contributorguide.md) ---- License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), diff --git a/cra-client/src/components/Dino/README.md b/cra-client/src/components/Dino/README.md deleted file mode 100644 index a62d5c29..00000000 --- a/cra-client/src/components/Dino/README.md +++ /dev/null @@ -1,17 +0,0 @@ -## Dino User Interface - -The Dino interface provides a way to visualize Egeria platforms, servers, the services they are running and the cohorts they have joined. - -The Dino interface runs under the [Presentation Server](../../../../../README.md). - -The Dino interface delegates operations to the [Dino View Service](../../../../../../../view-services/rex-view/README.md). in order to retrieve metadata. - -For more general information about view services, see [View Services](../../../../../../../view-services/README.md). - - -### Configuration - -For information on how to configure the presentation server refer to the Admin Guide section on [Configuring the presentation server](../../../../../../../admin-services/docs/user/configuring-the-presentation-server.md). - -For information on how to configure the view services refer to the Admin Guide section on and [Configuring the view services](../../../../../../../admin-services/docs/user/configuring-the-view-services.md). - diff --git a/cra-client/src/components/TypeExplorer/README.md b/cra-client/src/components/TypeExplorer/README.md deleted file mode 100644 index 9da6c907..00000000 --- a/cra-client/src/components/TypeExplorer/README.md +++ /dev/null @@ -1,20 +0,0 @@ -## Type Explorer User Interface - -The Type Explorer (Tex) interface provides a way to explore the Egeria type system. It can be used to retrieve the types supported by a chosen server. The type information is then displayed both textually (on the left side) and diagrammatically (on the right side) with a choice of diagrams. One of the diagrams shows the entity inheritance tree and the other diagram shows the types of relationships that an entity type supports. - - -The Type Explorer (Tex) interface runs under the [Presentation Server](../../../../../README.md). - -The Type Explorer (Tex) interface delegates operations to the [Type Explorer (Rex) View Service](../../../../../../../view-services/tex-view/README.md) in order to retrieve metadata. - -For more general information about view services, see [View Services](../../../../../../../view-services/README.md). - - -### Configuration - -For information on how to configure the presentation server refer to the Admin Guide section on [Configuring the presentation server](../../../../../../../admin-services/docs/user/configuring-the-presentation-server.md). - -For information on how to configure the view services refer to the Admin Guide section on and [Configuring the view services](../../../../../../../admin-services/docs/user/configuring-the-view-services.md). - - - diff --git a/docs/GlossaryAuthor/Glossary author Node.drawio b/docs/GlossaryAuthor/Glossary author Node.drawio deleted file mode 100644 index 1120b7a8..00000000 --- a/docs/GlossaryAuthor/Glossary author Node.drawio +++ /dev/null @@ -1 +0,0 @@ -7ZpRU6MwEMc/TR/tAAkFHr226oN354zOnT7dYIltPCBOGpXep7+0JIWQWnpoIt7Yh053m6Tkn98uydIBGGfFKY0fFl9JgtKB5yTFAEwGnhcGkL+vHavS4QdR6ZhTnJQut3Jc4j9IOB3hfcQJWioNGSEpww+qc0byHM2Y4ospJc9qszuSqr/6EM+R5ricxanu/YkTthDT8oLKf4bwfCF/2R2J+WWxbCxmslzECXmuucB0AMaUEFZ+yooxStfaSV3KficvfLu9MIpydkiHZbF6uqbT+6vz6Av6Nf3+4yyER+6oHOYpTh/FjL/xJRRXzFZShgXLUv7JHYAvogOiDBUvXoq7nSAHA5EMMbriTUQHIFdXQOGGwn6uJHZlm0VNXl/4YrGq8+3Q1cT5BzH3f9Eh0HQ4TclyGYuxzWnhBqoW3vtrEWpaXCGaWWaiBzpEmg7jmKE5Mc4EDPumhUxiNS0uH2/vecY9piieoDucY4ZJblqYRrCAaIcwwKowribM8YzhJ8xMQwK8qF0Lu5B4OwImJznmt9NNNrWRTg8AxK4oQM+mcUFykhmXYtQ7LeDLgNgSBaii+M4OUaIdooyMieJrokwLhvJkqUnBncfrPS23blMy+80l4S6xaeZbuY15gte/P3G4VZOOy0NX18K/MW7WxtCX5qSofzlZSavA7Lpqya2b2jdVp7Uh+5TXjRJtZ91YJD438khn6IB9GYvpHLHWjay+7PVllUtIURrzFK1e3a51FcNdEMyve4uQ14gr6DbQKGcletV35I2BoNcyUDlrbaANZts5voI8ffNvlLxh4Nfhc3uOXthD9ICvEONFHdEDIBw6IKpeI3Vc6NolUT9+mSTR/Vg5MOofiCCCbwQiDIYNpqHlLKgfd81mwY+UBOUdqp29yBp7PnyjJAhdf38ShHZB1OsNnyA2z9ntIIb2kmCoJkEQdASxSTSwnALlmejzCLKnqtFOXvBut18Qdr39NgeyTZ5ePutnzovcGntHztAJ9/K3Ni4QxVwfRA0wCT6ZNMekXsY0wWSHrFbneAQVkocObIN5bZlkEh7IZAmvnfNys8LSlUltIGCZSb2KvHnerhH5xs8YHDUUgx3FUqsVZKBXkPcFZYLjjOTJ1QLnWixWgerB/2KLLJ/ltwYgsBiAkRo3wOl6VvNbBjIdgHqV/hznpv8o4UN11u/+HBjoJWOD8de1TlePvm0sGo8/iUif4g8E6snS7VynG3nDyHeqV2NceYN6dThys/pPVNm8+mMZmP4F \ No newline at end of file diff --git a/docs/GlossaryAuthor/Glossary author Node.png b/docs/GlossaryAuthor/Glossary author Node.png deleted file mode 100644 index 18617819..00000000 Binary files a/docs/GlossaryAuthor/Glossary author Node.png and /dev/null differ diff --git a/docs/GlossaryAuthor/GlossaryAuthorGuide.md b/docs/GlossaryAuthor/GlossaryAuthorGuide.md deleted file mode 100644 index 5ed12328..00000000 --- a/docs/GlossaryAuthor/GlossaryAuthorGuide.md +++ /dev/null @@ -1,102 +0,0 @@ - - - -# Glossary Author - -The **Glossary Author** is a UI capability of the Egeria React UI that allows you to author glossary content, such as Glossaries, Terms, Categories -and the relationships between them. - -# Concepts - -Egeria has subject area open types that are described in [Area 3](https://egeria.odpi.org/open-metadata-publication/website/open-metadata-types/Area-3-models.html). This mature model of glossary content describes the relevant concepts around glossaries. - -The Glossary Author exposes concepts (json objects) that map onto the open types. The Glossary Author concepts are intended to make it easier for a -user interface to author glossaries. - -As metadata is often best thought of as a graph; the Glossary author user interface exposes the concept of a Graph containing only the concepts relevant to a glossary author. The Graph is composed of Nodes (vertices) and Relationships (edges). - -Glossary, Category and Term are all types of Node. The Node object contains standard Egeria properties including: - -* Name - name to be displayed. -* qualfied name - readable unique name -* guid - global unique identifier. - -Glossary Author Node inheritance model, including the nodes that inherit from Term , Category and Glossary. - Glossary author node model - -# Working with the Glossary Author user interface. - -Note the screenshots might be slightly out of date with the code base, but hopefully help orientate the reader. - -## Getting to the Glossary Author start screen -- After logging into the Egeria react UI, you will see tasks at the left hand side of the user interface including the glossary author task. -Left hand side of the user interface -- If you see a screen with a connect button like this connect button then the glossary author is not able to issue a successfully glossary call; this is caused by either - - the Subject Area OMAS is not active, so the glossary author cannot call it - - the glossary author view is not configured on the view server. - - the presentation server is not configured to point to the glossary server view service. - If everythign is correctly configured but the view server or its downstream server is not started then, start them and press the connect button. -- Assuming you have successfully connected, then you are now in a position to author glossary content and should see -Empty start screen -- You will notice that you can choose the node to work with using the node tabs -Node Tabs - -## Add a glossary -- Add a node on a tab using the Glossary add input . The minimal input is a name. -pressing create will show a screen like : - Glossary add result - - ## Working with a glossary -- Navigating back after having created a glossary called 'glossary1' in an empty system will show you - start screen with one glossary -- 'List view' You can toggle the glossary view to show the glossaries as a list -start screen with one listed glossary - -- 'paging' - notice the paging options, these allow you to change the page size (how many are displayed), page through the results if there is more than a page's worth to display. -- 'filter' Entering text into the filter box Filter field filters the displayed results. If you want an exact match, check Exact match - -## Button that appear when a node is selected -- Note that there is a checkbox on the node card; when checked, buttons appear indicating actions you can perform against the selected node: - - quick terms - this is shown for glossary, to quickly create Terms under the selected glossary - - children - this shows the children of the selected node. - - edit - this displays an edit screen for the selected node - - delete - this deletes the selected node. Glossaries with content cannot be deleted. - -## Quick terms -- The quick term screen looks like this: - initial quick terms -- Press the + button to add extra rows - quick terms with blank rows -- fillin the name and description in the rows - quick terms with names -- press Create Terms on Server button to show - quick terms with results - -## Working with Categories and Terms -Working with Categories and terms, is similar to working with Glossaries, apart from - - choosing the Term or Category node tab, Terms or Categories can be created, in this case a wizard is displayed to aske the user to choose the glossary in which the term should be created. Here is the first page of the term wizard - term wizard - -## Glossary children -When the glossary children action is chosen, the categories and terms under that glossary are displayed. - glossary children -By default top categories are displayed, these are categories that do not have a parent category. If you want to see the all the categories under the glossary then toggle the Top Categories top categories to All Categories all categories - -## Breadcrumb -While navigating, a breadcrumb is created showing how deep the current node is that is being authored. - - - -## Future improvements -- a breadcrumb to be optimized to minimize the url length. -- Allow category hierarchies to be authored. i.e. child categories of categories -- Allow Relationships to be authored -- add governance classification authoring -- add spine object views -- add collaboration authoring and viewing -- start with a context from the community profile. - ----- -License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), -Copyright Contributors to the ODPi Egeria project. diff --git a/docs/GlossaryAuthor/Termwizard.png b/docs/GlossaryAuthor/Termwizard.png deleted file mode 100644 index 5ade5947..00000000 Binary files a/docs/GlossaryAuthor/Termwizard.png and /dev/null differ diff --git a/docs/GlossaryAuthor/add.png b/docs/GlossaryAuthor/add.png deleted file mode 100644 index d73376ff..00000000 Binary files a/docs/GlossaryAuthor/add.png and /dev/null differ diff --git a/docs/GlossaryAuthor/allcats.png b/docs/GlossaryAuthor/allcats.png deleted file mode 100644 index 30bd7f2d..00000000 Binary files a/docs/GlossaryAuthor/allcats.png and /dev/null differ diff --git a/docs/GlossaryAuthor/children.png b/docs/GlossaryAuthor/children.png deleted file mode 100644 index b4ab2a15..00000000 Binary files a/docs/GlossaryAuthor/children.png and /dev/null differ diff --git a/docs/GlossaryAuthor/connect.png b/docs/GlossaryAuthor/connect.png deleted file mode 100644 index 15a94bb5..00000000 Binary files a/docs/GlossaryAuthor/connect.png and /dev/null differ diff --git a/docs/GlossaryAuthor/delete.png b/docs/GlossaryAuthor/delete.png deleted file mode 100644 index b84fe755..00000000 Binary files a/docs/GlossaryAuthor/delete.png and /dev/null differ diff --git a/docs/GlossaryAuthor/edit.png b/docs/GlossaryAuthor/edit.png deleted file mode 100644 index 094f6434..00000000 Binary files a/docs/GlossaryAuthor/edit.png and /dev/null differ diff --git a/docs/GlossaryAuthor/emptystartscreen.png b/docs/GlossaryAuthor/emptystartscreen.png deleted file mode 100644 index 2845ac75..00000000 Binary files a/docs/GlossaryAuthor/emptystartscreen.png and /dev/null differ diff --git a/docs/GlossaryAuthor/exactmatch.png b/docs/GlossaryAuthor/exactmatch.png deleted file mode 100644 index 030b15ba..00000000 Binary files a/docs/GlossaryAuthor/exactmatch.png and /dev/null differ diff --git a/docs/GlossaryAuthor/filter.png b/docs/GlossaryAuthor/filter.png deleted file mode 100644 index 70981304..00000000 Binary files a/docs/GlossaryAuthor/filter.png and /dev/null differ diff --git a/docs/GlossaryAuthor/glossaryaddinput.png b/docs/GlossaryAuthor/glossaryaddinput.png deleted file mode 100644 index 7f279c09..00000000 Binary files a/docs/GlossaryAuthor/glossaryaddinput.png and /dev/null differ diff --git a/docs/GlossaryAuthor/glossaryaddresult.png b/docs/GlossaryAuthor/glossaryaddresult.png deleted file mode 100644 index 62b853f5..00000000 Binary files a/docs/GlossaryAuthor/glossaryaddresult.png and /dev/null differ diff --git a/docs/GlossaryAuthor/glossarychildren.png b/docs/GlossaryAuthor/glossarychildren.png deleted file mode 100644 index 52df380e..00000000 Binary files a/docs/GlossaryAuthor/glossarychildren.png and /dev/null differ diff --git a/docs/GlossaryAuthor/initialquickterms.png b/docs/GlossaryAuthor/initialquickterms.png deleted file mode 100644 index 9a145e44..00000000 Binary files a/docs/GlossaryAuthor/initialquickterms.png and /dev/null differ diff --git a/docs/GlossaryAuthor/leftnav.png b/docs/GlossaryAuthor/leftnav.png deleted file mode 100644 index 82ff2a51..00000000 Binary files a/docs/GlossaryAuthor/leftnav.png and /dev/null differ diff --git a/docs/GlossaryAuthor/nodetabs.png b/docs/GlossaryAuthor/nodetabs.png deleted file mode 100644 index 1f2e5afc..00000000 Binary files a/docs/GlossaryAuthor/nodetabs.png and /dev/null differ diff --git a/docs/GlossaryAuthor/quickterms.png b/docs/GlossaryAuthor/quickterms.png deleted file mode 100644 index ea4b335e..00000000 Binary files a/docs/GlossaryAuthor/quickterms.png and /dev/null differ diff --git a/docs/GlossaryAuthor/quicktermsresults.png b/docs/GlossaryAuthor/quicktermsresults.png deleted file mode 100644 index 8d066fc6..00000000 Binary files a/docs/GlossaryAuthor/quicktermsresults.png and /dev/null differ diff --git a/docs/GlossaryAuthor/quicktermswithblankrows.png b/docs/GlossaryAuthor/quicktermswithblankrows.png deleted file mode 100644 index 5e86b09f..00000000 Binary files a/docs/GlossaryAuthor/quicktermswithblankrows.png and /dev/null differ diff --git a/docs/GlossaryAuthor/quicktermswithnames.png b/docs/GlossaryAuthor/quicktermswithnames.png deleted file mode 100644 index 3a427668..00000000 Binary files a/docs/GlossaryAuthor/quicktermswithnames.png and /dev/null differ diff --git a/docs/GlossaryAuthor/startscreenwithoneglossary.png b/docs/GlossaryAuthor/startscreenwithoneglossary.png deleted file mode 100644 index 2ad92970..00000000 Binary files a/docs/GlossaryAuthor/startscreenwithoneglossary.png and /dev/null differ diff --git a/docs/GlossaryAuthor/startscreenwithonelistedglossary.png b/docs/GlossaryAuthor/startscreenwithonelistedglossary.png deleted file mode 100644 index 244823b7..00000000 Binary files a/docs/GlossaryAuthor/startscreenwithonelistedglossary.png and /dev/null differ diff --git a/docs/GlossaryAuthor/topcats.png b/docs/GlossaryAuthor/topcats.png deleted file mode 100644 index 89c8d944..00000000 Binary files a/docs/GlossaryAuthor/topcats.png and /dev/null differ diff --git a/site/docs/contributors/contributorguide.md b/docs/contributors/contributorguide.md similarity index 99% rename from site/docs/contributors/contributorguide.md rename to docs/contributors/contributorguide.md index df20e6d9..06a17013 100644 --- a/site/docs/contributors/contributorguide.md +++ b/docs/contributors/contributorguide.md @@ -29,6 +29,7 @@ This project is a [Create React App](https://reactjs.org/docs/create-a-new-react ## 5. cra-server This is the Express server (also known as the presentation server). the cra - stands for Create React app. + * db - this is the in memory database used for the simple authentication for demo purposes * functions - common functions * node_modules - dependant node modules @@ -37,6 +38,7 @@ This is the Express server (also known as the presentation server). the cra - st ## 6. cra-client This is the client code including the javascript. the cra - stands for Create React app. + * build - this is where the client code is built for use in production * node_modules - dependant node modules * public - resources diff --git a/docs/TEX-design.drawio b/docs/design/glossary-author/TEX-design.drawio similarity index 100% rename from docs/TEX-design.drawio rename to docs/design/glossary-author/TEX-design.drawio diff --git a/docs/design/tex/TEX-design.drawio b/docs/design/tex/TEX-design.drawio deleted file mode 100644 index ce273870..00000000 --- a/docs/design/tex/TEX-design.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/site/docs/assets/favicon.ico b/site/docs/assets/favicon.ico deleted file mode 100644 index 34a0309e..00000000 Binary files a/site/docs/assets/favicon.ico and /dev/null differ diff --git a/site/docs/assets/images/egeria-header.png b/site/docs/assets/images/egeria-header.png deleted file mode 100644 index 3dfac040..00000000 Binary files a/site/docs/assets/images/egeria-header.png and /dev/null differ diff --git a/site/docs/assets/stylesheets/egeria.css b/site/docs/assets/stylesheets/egeria.css deleted file mode 100644 index de010c8c..00000000 --- a/site/docs/assets/stylesheets/egeria.css +++ /dev/null @@ -1,18 +0,0 @@ -/* SPDX-License-Identifier: CC-BY-4.0 */ -/* Copyright Contributors to the ODPi Egeria project. */ - -:root { - --goreleaser-primary-color: #026e00; - --md-primary-fg-color: rgb(0, 174, 185); - --md-primary-fg-color--light: rgb(0, 174, 185); - --md-primary-fg-color--dark: rgb(0, 174, 185); -} - -.md-announce { - height: 20px; -} - -.md-announce__inner { - margin-top: 2px; - margin-bottom: 2px; -} diff --git a/site/docs/ecosystem/RepositoryExplorerGuide.md b/site/docs/ecosystem/RepositoryExplorerGuide.md deleted file mode 100644 index c929d8f7..00000000 --- a/site/docs/ecosystem/RepositoryExplorerGuide.md +++ /dev/null @@ -1,280 +0,0 @@ - - - - -The **Repository Explorer (Rex)** can help you explore and visualize the metadata in a repository. -It retrieves entities and relationships from the repository and displays them. -A details panel also shows the properties and other information about an object. -Each entity or relationship is added to a network diagram, which shows how they are connected. - -Starting with an initial object - an entity or relationship - Rex enables you to explore the -neighborhood of objects around that initial object. It does so by traversing the relationships -connected to each entity, and allows you to select what types of relationship and types of -neighboring entity you want it to retrieve. You can also filter the traversal by specifying -classifications that the neighboring entities must possess. - -You can repeat this traversal process to assemble a graph of the objects that you are -interested in. - -You don't need to know the available relationship types, entity types or classifications in -advance, because Rex will display what is possible and let you choose. - -In general, one object in the graph is the 'focus'; this is the object from where the next -traversal starts; the focus object is the one that is displayed in the details panel. -You can set which object is the focus by clicking on it in the diagram. If you retrieve an -object from the repository by searching or typing in its GUID, that object automatically -becomes the new focus. - -Rex can retrieve and display objects of the types supported by whichever repository you -connect it to. When you connect it to a repository, Rex will automatically read the type information -from the repository. It uses this information to populate things like the search filters (explained -below). - -Rex is intended as a tool to help targeted exploration of relatively small sets of entities and relationships. -It is not a general graph visualization utility, so it would not be wise to use to construct a large graph. -It is advisable to limit the number of traversals you perform, and avoid performing a traversal that would include -a large number of objects. There are no hard limits on graph size, but it is recommended that exploration is -kept specific and aimed at revealing the structure of relatively small sub-graphs. - -To help with this, Rex provides assistance to help limit what you get back from each traversal. For -example, it provides Traversal Filters that allow you to filter the types of entity and relationship to include. The -Traversal Filters work by types and classifications. They do not support fine-grained (property-based) filtering of -objects within a traversal. This is not a limitation of Rex, rather a reflection of the functions available in the -metadata collection interface. - -If the type-based filtering provided by Rex's Traversal Filters proves to be too coarse-grained, and you find yourself struggling -to select a particular entity within a possible set of neighbors, consider adopting a different approach. For example, -it may be better to with a search for the interesting entity, followed by traversing from that entity. It may be possible -in future to add more sophisticated traversal filters but there would most likely still be repositories that would not support -the full metadata collection interface. - - -**A Typical Workflow:** - -Typically you would perform the following steps: - -* Set the repository server details -* Retrieve one or more initial metadata objects, either using Search or by specifying an object's GUID if you know it -* Explore starting from the initial object, applying filters at each step -* Explore from additional objects or using different filters -* When you have something you want to keep, capture the diagram and history views -* At any point you can Undo the most recent operation (repeatedly) or can clear the whole graph - - -**Set the Repository Server:** - -To get started Rex needs the name and URL of the repository server that you wish to explore. -Enter these details in the "Server Name" and "Server URL Root" fields and press the 'Connect' button. -Immediately below the server input fields, you will see a status message. On first start the message -asks that you enter the server details and press Connect. Rex will use the server -details to request the type information from the repository, which Rex uses to populate its search filters. -If the request to the server completes successfully you should see the message change to "Server OK". -If Rex cannot connect to the server it will display an error message and ask you to check the details and retry. - -Rex does not maintain a long-running connection to the server; each time it needs to get something from the -server it will use the server details you have set. - -**Get some initial metadata:** - -Rex needs an object as the starting point of a traversal. You can retrieve a starting object either by entering a -GUID or by performing a Search, which is explained below. If an object is found it will appear in the diagram. -If no object could be found you will see an alert pop up. - -You can start with either an entity or a relationship - use whichever is most convenient. -Entities are drawn as circles. Relationships are drawn as lines connecting pairs of circles (entities). -Classifications are not shown in the diagram, but any classifications associated with an entity are shown in -the details panel when the entity is selected. - -**Setting the focus object:** - -If one object was retrieved it will automatically be set to the focus, so it will be highlighted and its details will -be displayed in the details panel. -If multiple objects were retrieved they will be shown in the diagram and none will be highlighted. You can select a -focus object in the diagram by clicking on it. The focus object will be highlighted in the diagram -and its details will be shown in the details panel. - -The focus object is highlighted in the primary color for the UI - this is the same color used for things like buttons and -banners. The default primary color is the Egeria 'aqua' color (a pale blue), but this may be changed if a different color -scheme has been applied. Other objects (not the focus) are given a color that reflects the home repository of the object; objects from the -same home repository will be the same color. These 'repository colors' are generally shades of gray. - -If you want to deselect the selected object, click on it again. This can be useful if you want to view the graph with no -object focused, so that all objects are shown in their 'repository colors'. - - -**Traverse to find related metadata:** - -Once there's an initial object in the diagram, you can use the Explore button to retrieve further objects that are -related to the focus object. Rex needs to traverse from an entity, so if you retrieved or selected a relationship, -click on one of its entities before attempting to traverse. -When you traverse, Rex will explore the neighborhood around the selected entity, traversing outward -along the available relationships to find adjacent entities. This process can be repeated to enlarge the graph of -entities and relationships that are displayed. -Rex currently supports a traversal depth of 1 - meaning it will only traverse as far -as the immediate neighbors of the focus entity. It could support deeper traversals, but this would make it harder -to understand the traversal filters - so depth is limited to 1. - -When you press the Explore button, Rex display a set of (optional) traversal filters, that you can set before it -actually performs the traversal. This is to let you decide which relationships and entities will be included in -the traversal. The traversal filters display the number of relationships and entities of each type, that could be -included in the displayed graph. Check the counts and select the types you want. Rex will then only retrieve the -objects you are really interested in. There is more information below under "Traversal Filtering". - - -**Search:** - -The search utility in Rex is fairly basic. It allows you to enter a text string and optionally apply an -entity, relationship or classification filter, which limits the search to one particular type. The classification -filter is not yet enabled, but that capability should be added soon. - -The search utility does not include property-based searching, it is just a text-based search. It therefore relies -on objects having string-type attributes that can be searched. If an object is of a type that has no string-type -attributes then it will not be found by the search. It is possible that property-based searching could be added, -but it is not available yet. - -When you enter a string as search text, it can include regular expression characters. Beware that the level of support -for regular expressions varies between repositories. If you are searching an Egeria graph repository or in-memory -repository, then you have more freedom than you might have with some other repositories. - -If the text you are searching for contains special characters, you will need to literalize the string. As an example, -suppose there are two Assets called asset-qn001 and asset-(qn001). In this example, the parentheses are special -characters, because they affect the processing of the regular expression. - -* If you type asset-qn001 as the search text, the first asset (only) will match. -* If you type asset-(qn001) as the search text, the first asset (only) will match. -* If you type \Qasset-(qn001)\E in as the search text, the second asset (only) will match. - -This example was tested using the Egeria graph repository. Some repositories support broad regular expressions -but others do not. All repositories should support exact, prefix and suffix matches - so you should be able to -use expressions like \Qany.characters.you.like!\E.* - which would literalize the part between \Q and \E as the -beginning of the search expression and permit any other characters to follow it. - -**Traversal Filtering:** - -When you press Explore to expand the neighborhood around an entity, a dialog box will show how many entities and -relationships might be included. The number of occurrences of each type of entity or relationship are shown alongside the type -name. You can decide which types to include in the traversal. This dialog box also shows numbers of classifications -associated with the neighboring entities. - -The filters are separated into three columns - for entity types, relationship types and classifications, respectively. - -Each column operates as follows: - -If none of the types in a column are checked, no filtering is applied to that column. This means that all entity types -will be included in the traversal, or all relationship types. - -If any of the types in a column are checked then filtering is performed. Only the checked types are allowed. If you were -to check ALL the types in the entity or relationship columns you achieve the same as when none of the checkboxes in -those columns are checked (i.e. when there is no filtering). That is, the traversal will include all entities or all -relationships. Note that if you wish to include a relationship to a neighboring entity, you need to enable both the -relationship type and the entity type. This allows you to be very specific about which relationships to traverse. If -there are relationships of the same type to entities of different types, or vice versa, you can independently -select relationship and entity types to achieve finer grain traversal. - -If no classification types are checked there is no classification filtering. This means all entities will be eligible, -regardless of their classifications (if any). Be careful with the classification column - if you check ALL the -classification types it does NOT mean that all entities are eligible - it means only those entities that have at -least one of the checked classifications will be eligible. If there is a neighboring entity that has none of the -classifications it will not be reached. - -**Adding to the graph:** - -If after a number of traversals you realize that you would like to perform an additional traversal from an entity you -visited at an earlier stage, just go back and select the entity from which you want to perform the additional traversal. Then press -the Explore button. You can set the filters to include the types that you would like to add to the graph. - -**Undoing a change:** - -If you realize that you have added things to the graph that you actually do not want, you can use the Undo button to undo -the most recent change. The Undo button can be used repeatedly to unwind back to a state that contains objects you want to -keep. You can then use Explore from this state to add more objects. - -**Clearing the graph:** - -The Clear button will clear the graph diagram, the GUID input field and the details panel. It effectively resets Rex to the -state it was in when the page was first loaded, apart from the search text. - -**Traversal History:** - -At any point during an exploration session you can use the History button to list the operations that resulted -in the graph as it is currently displayed. The traversal history shows the sequence of operations and describes -the type and parameters of each operation and the entities and relationships that were added to the graph by each -operation. The types of operation include retrieval using a GUID, search and traversal. In each case the GUID, -search string or traversal parameters are recorded. - -**Diagram layouts:** - -There is currently one type of diagram - called the 'Network Diagram'. Other types of diagram may be added later. -The Network Diagram is a visualization of the traversed graph, in which entities and relationships are drawn as circles and arcs. -Each entity or relationship is labelled according to Rex's built-in labelling scheme (see below). The GUID (globally unique id) -associated with an instance may be the only way to uniquely identify it, but it is not particularly convenient or memorable. -Rex includes the GUID in the details panel and in the traversal history to help to uniquely identify an instance. - -There are two layout settings within the Network Diagram, that can be selected using the radio button in the top-left corner of -the diagram: - -* Time-based (default) layout. This layout places objects starting at the top of the diagram and working vertically downwards with each - stage of traversal; the more recently visited objects will be located toward the bottom of the diagram. This layout may be helpful while - you are building the diagram. The temporal placement is not rigid - if a relationship connects a pair of entities retrieved in different - stages of the traversal, it will tend to pull them together, possibly distorting the temporal sequence. - -* Proximity-based layout. This layout places objects using a straightforward force-directed graph layout. There is no temporal ordering. - This layout may be preferred when you have finished adding to the diagram and would like to lay it out for display or printing. - -You can switch back and forth between the layout options. - -** Labelling of objects: - -Rex has a built-in labeler that assigns a label to each object (entity or relationship) that is retrieved from the -repository. The labels are used in the diagram and attempts to find a concise, meaningful and hopefully unique label, based on the -properties of the entity or relationship. - -The labelling strategy behaves differently depending on the type of an object. For some types of object there are -not many possible labels, but in the default case Rex will examine the instance properties of the object and choose a label -based on the following precedence order: -* displayName - which should have been set with the expectation that it will be used for display purposes -* name - which should be easier to read than qualified name -* qualifiedName - limited to the last 24 characters as qualified names can be long and the last part is often the best - means of discrimination. - -If you retrieve a relationship (from Get or Search), the entities at the ends of the relationship will be assigned -labels based on the information available - which is limited to the unique properties in the EntityProxy. If such -an entity is subsequently selected (by clicking on it) Rex will retrieve the full entity and if it can identify -a better label, it will update the label associated with the entity in both the diagram and in the details panel. - -**Tips for using Rex:** - -* Rex uses the Metadata Collection API to interrogate the chosen repository. All Egeria repositories support this API, but - some functions of the API are optional, so not all repositories support them. For maximum support for graph - traversals, if possible choose a repository server that has the Egeria graph repository. Remember that Egeria servers can - create reference copies of objects, so you can ask a server with a graph repository about objects that belong to - other repositories in the cohort. - -* Relationship types do not have many attributes; some have no type-defined attributes at all. If you have trouble searching - for a relationship, it may be easier to search for an entity that you believe is connected to the relationship. Alternatively, - use another tool to retrieve the relationship GUID and paste that into Rex and use the Get button. - -* If you are short of screen space, there a couple of things you can do to save space with Rex: - - * One is to click the 'hamburger' menu icon to toggle away the left-hand navigation menu. - - * Another is that, once you have selected the repository server to use and retrieved the first - entity or relationship, you may not need to visit the top part of the screen again, or only infrequently, so - try scrolling until the top edge of the diagram and controls are at the top of the browser page. The controls - have been placed level with the top of the diagram to enable this. - -* At any point during an exploration session you can use the History button to display a dialog that lists where the - exploration started and what steps have been used, to arrive at the graph that is currently displayed. - -* You can save the current diagram as a .png image file, using the button near the top-left of the diagram. - Before capturing the image, consider clicking on the currently selected object to remove the focus color, if you want to - see its home repository color instead. - -* After capturing the history and image, as described above, it is straightforward to copy and paste them into a report -document. - -**Customization:** - -Rex uses a styled set of colors, so it can be re-themed. The important colors are defined as CSS variables in the -shared-styles.js file. They are called --egeria-primary-color and --egeria-secondary-color. -By setting the egeria-primary-color you can achieve different themes. \ No newline at end of file diff --git a/site/docs/ecosystem/ecosystem.md b/site/docs/ecosystem/ecosystem.md deleted file mode 100644 index 1bde8d05..00000000 --- a/site/docs/ecosystem/ecosystem.md +++ /dev/null @@ -1,11 +0,0 @@ - - - - -Egeria ecosystems, consist of platforms, on which servers run; these servers run services and communicate using cohorts. The ecosystem tools allows an infrastructure architect to configure, define, explore, navigate and operate the eco-system. Services work on open types and instances of these open types; these can also be explored using these tools. The ecosystem tools are - -- Type Explorer: allowing a user to explore the Egeria open types -- [RepositoryExplorer](./RepositoryExplorerGuide.md) : allowing a user to explore Egeria instances -- Server Author: allowing a user to configure a server. This is work in progress. -- Dino: allowing a user to see and work with Egeria platforms and servers operationally. - diff --git a/site/docs/getting-started/prereqs.md b/site/docs/getting-started/prereqs.md deleted file mode 100644 index 63c8ccf9..00000000 --- a/site/docs/getting-started/prereqs.md +++ /dev/null @@ -1,13 +0,0 @@ - - - -# Getting Started - prerequisites - -Egeria is about integrating metadata from different sources in a peer to peer manner; the open types are the language of this integration. [Egeria Solutions](https://github.com/odpi/egeria/tree/master/open-metadata-publication/website/solutions) can be sophisicated, but to get started with the Egeria React UI you can use a simple setup, with : - -* [A Metadata repository server](https://egeria.odpi.org/open-metadata-implementation/admin-services/docs/concepts/metadata-server.html) -* [A View server](https://egeria.odpi.org/open-metadata-implementation/admin-services/docs/concepts/view-server.html) - -Each user interface capability in the presentation server requires an associated view service. To use a particular UI capability you need to -have the equivalient view service configured and active; follow [these intructions](https://egeria.odpi.org/open-metadata-implementation/admin-services/docs/concepts/view-server.html) to set up the view services. The name of the UI capability is the same as the name of the view service. Be aware that a view -service has a downstream dependancy as well, for example the Glossary Author View service calls the downstream dependancy [Subject Area OMAS](https://egeria.odpi.org/open-metadata-implementation/access-services/subject-area/), which also needs to be configured and active. diff --git a/site/docs/getting-started/setup.md b/site/docs/getting-started/setup.md deleted file mode 100644 index d1740bcd..00000000 --- a/site/docs/getting-started/setup.md +++ /dev/null @@ -1,109 +0,0 @@ - - - -# Setup - -Ensure you have set up the Egeria servers you need to run the UI. A simple setup is described [here](./prereqs.md). - -## 1. Obtain the Egeria React user interface - -Start by downloading the Egeria React User Interface: - -=== "Latest release" - Release 2.11.0 - The released user interface is supplied in an archive, containing the source code as a zip or tar.gz file, which you need to extract. -=== "Development" - git clone the repository using the instructions under the Code button at Latest code - - You now have a folder on your machine with the user interface code extracted. - -## 2. The presentation server environment variable - -The presentation server is the node application for the user applicaiton. It serves the web pages, proxies therest calls andhandles the login. -For a particular tentant thepresentation server needs to know which back end servr to send requests to. This information is supplied in an -environment variable(s). - -The environment variable is: - -EGERIA_PRESENTATIONSERVER_SERVER_\={"remoteServerName":"\","remoteURL":"\"} - -where - - should be replaced with the local server name. This segment is the start segment of the url that the browser sends. - - should be replaced with the remote server name. This is the name of the view service that has been configured in the view server. - - should be replaced with the remote server URL. This is the URL of the view service. - -Since this environment variable is typically handled by the shell and includes a json fragment, when setting it you need to be sure -to 'escape' quotation characters, so you would type: - -```bash -EGERIA_PRESENTATIONSERVER_SERVER_aaa="{\"remoteServerName\":\"cocoView1\",\"remoteURL\":\"https://localhost:9443\"}" -``` -We can see this is set as we expect -``` -$ echo $EGERIA_PRESENTATIONSERVER_SERVER_aaa -{"remoteServerName":"cocoView1","remoteURL":"https://localhost:9443"} - -To get an initial environment up-and-running just download the `truststore.p12` -file from: [https://github.com/odpi/egeria/raw/master/truststore.p12](https://github.com/odpi/egeria/raw/master/truststore.p12). - -??? question "Transport-level security" - The [truststore.p12](https://github.com/odpi/egeria/raw/master/truststore.p12) - file provides a local truststore for Java. This allows the self-signed certificate embedded - within the server chassis (by default) to be trusted. - - Without this trust, interactions with the server chassis (such as the REST calls that are made - through Java to handle interaction between the chassis and the connector) will result in an - `SSLHandshakeException`. - - While this `truststore.p12` file allows SSL-encrypted communication, the fact that - it relies on a self-signed certificate means that there is no independent source of trust - in the interactions (which would typically be achieved through an independent Certificate - Authority). - - Additional details on TLS for Egeria can be found in [the Egeria documentation](https://egeria.odpi.org/open-metadata-implementation/admin-services/docs/concepts/omag-server.html). - -## 3. Running the presentation server -To run on a different machine, copy over the cra-client and cra-server/build folders, maintaining their relative locations to the target machine. - -Once you have the code where you want to run it: -
    -
  1. Navigate to the cra-client folder and run npm install
  2. -
  3. Navigate to the cra-server folder and run npm install
  4. -
- - -=== "In production mode" - To run the presentation server in production mode, the javascipt and resources need to be [minified](https://reactjs.org/docs/optimizing-performance.html). -
    -
  1. Navigate into cra-client, then run npm run build. The cra-client folder now should contain a build folder containing the artifiacts to run in production.
  2. -
  3. Run npm run prod in the cra-server folder.
  4. -
-=== "In development mode" -
    -
  1. Navigate into cra-server and run npm start.
  2. -
  3. After a couple of minutes while it builds, for tenant aaa, you should be able to login.
  4. -
- - -## 4. Demo login - -If you have used the sample environment variables and are using the Egeria Dojo setup, then you can login as follows. - - -In your web browser go to https://localhost:9443/aaa/ (Replace host/port accordingly) - -* In this example `aaa` is the tenant name we used above when defining the environment variable - -* The trailing / is currently required to allow the login page to load - -For ecosystem tools use user 'garygeeke' and password 'admin'. - -For glossary author use user 'faithbroker' and password 'admin'. - - -## 5. SSL configuration - -By default the Egeria React UI uses a truststore.p12 and keystore.p12 files for ssl. The p12 files are copies of files 'https://github.com/odpi/egeria/blob/master/keystore.p12' and 'https://github.com/odpi/egeria/blob/master/truststore.p12', which are the definitive sources of these files. The keystore and truststore files allow Egeria to run simply in a demo/development; this is not appropriate for production, which should be appropriately secured. diff --git a/site/docs/index.md b/site/docs/index.md deleted file mode 100644 index d2ad9b0d..00000000 --- a/site/docs/index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -template: home.html -title: About ---- diff --git a/site/docs/overview/Overview.md b/site/docs/overview/Overview.md deleted file mode 100644 index 4f70b37d..00000000 --- a/site/docs/overview/Overview.md +++ /dev/null @@ -1,20 +0,0 @@ - - -# Egeria React UI Overview - -The Egeria React UI isa React multi tenant User Interface for Open Metadata and Governance. It is part of the [Egeria](https://github.com/odpi/egeria/blob/master/README.md) project; as such it is bound by the same code of conduct, governance etc and it part of the Egeria community (and community calls). - -This Git repository contains the Egeria React User Interface (UI), which provides a multi tenanted, persona based interface for users to work with Egeria solutions and Egeria ecosystem tools. - -This repository is separate from the main Egeria repository, because the technology and build infrastructure is sufficiently different for the User interface. -Egeria React User Interface developers work with nodejs, develop in javascript, use the React framework and use npm; whereas the main Egeria repository attracts developers with Java skills. - -The **Presentation Server** is a multi-tenant persona based server that serves a user interface - it issues rest calls downstream primarily to [view servers](https://egeria.odpi.org/open-metadata-implementation/admin-services/docs/concepts/view-server.html) - -See the [Egeria Planning guide](https://egeria.odpi.org/open-metadata-publication/website/planning-guide/) to familiarise yourself with -the types of [Egeria OMAG Servers](https://egeria.odpi.org/open-metadata-implementation/docs/concepts/omag-server.md). There is an Egeria tutorial on setting up Egeria servers can be following [Egeria Dojo](https://egeria.odpi.org/open-metadata-resources/open-metadata-tutorials/egeria-dojo/), but this does not detail the parts to do with the presentation server and this UI. - -There are 2 types of capabilities in the Presentation Server. - -* [Ecosystem Tools](../ecosystem/ecosystem.md) -* [Solutions](../solutions/solutions.md) diff --git a/site/docs/solutions/GlossaryAuthor/GlossaryAuthorGuide.md b/site/docs/solutions/GlossaryAuthor/GlossaryAuthorGuide.md deleted file mode 100644 index 5c8b6627..00000000 --- a/site/docs/solutions/GlossaryAuthor/GlossaryAuthorGuide.md +++ /dev/null @@ -1,86 +0,0 @@ - - - -# Glossary Author - -The **Glossary Author** is a UI capability of the Egeria React UI that allows you to author glossary content, such as Glossaries, Terms, Categories -and the relationships between them. - -## 1. Concepts - -Egeria has subject area open types that are described in [Area 3](https://egeria.odpi.org/open-metadata-publication/website/open-metadata-types/Area-3-models.html). This mature model of glossary content describes the relevant concepts around glossaries. - -The Glossary Author exposes concepts (json objects) that map onto the open types. The Glossary Author concepts are intended to make it easier for a -user interface to author glossaries. - -As metadata is often best thought of as a graph; the Glossary author user interface exposes the concept of a Graph containing only the concepts relevant to a glossary author. The Graph is composed of Nodes (vertices) and Relationships (edges). - -Glossary, Category and Term are all types of Node. The Node object contains standard Egeria properties including: - -* Name - name to be displayed. -* qualfied name - readable unique name -* guid - global unique identifier. - -Glossary Author Node inheritance model, including the nodes that inherit from Term , Category and Glossary. - Glossary author node model - -## 2. Working with the Glossary Author user interface. - - -## 2.1 Getting to the Glossary Author start screen -- After logging into the Egeria react UI, you will see tasks at the left hand side of the user interface including the glossary author task. -- If you see a screen with a connect button, then the glossary author is not able to issue a successfully glossary call; this is caused by either - - the Subject Area OMAS is not active, so the glossary author cannot call it - - the glossary author view is not configured on the view server. - - the presentation server is not configured to point to the glossary server view service. - If everythign is correctly configured but the view server or its downstream server is not started then, start them and press the connect button. -- Assuming you have successfully connected, then you are now in a position to author glossary content -- You will notice that you can choose the node to work with using the node tabs. - -## 2.2 Add a glossary -- Add a node on a tab using the add (+) button. Pressing add for glossary will show a form to input properties. The minimal input is a name. - - ## 2.3 Working with a glossary -- Navigating back after having created a glossary called 'glossary1' in an empty system, will show one glossary in a 'card view' -- 'List view' You can toggle the glossary view to show the glossaries as a list -- 'paging' - notice the paging options, these allow you to change the page size (how many are displayed), page through the results if there is more than a page's worth to display. -- 'filter' Entering text into the filter box, filters the displayed results. If you want an exact match, check the exact match box. - -## 2.4 Buttons that appear when a node is selected -- Note that there is a checkbox on the node card; when checked, buttons appear indicating actions you can perform against the selected node: - - Quickterms button - this is shown for glossary, to quickly create Terms under the selected glossary - - Children button - this shows the children of the selected node. - - edit button - this displays an edit screen for the selected node - - delete button - this deletes the selected node. Glossaries with content cannot be deleted. - - glove button - visualisation described later - -## 2.5 Quick terms -- The quick term screen lists the terms to be added. Initially it is empty -- Press the + button to add extra rows -- fill in the name and description in the rows -- press Create Terms on Server button to show a screen indicaing whetehr the terms have been created or not. - -## 3. Working with Categories and Terms -Working with Categories and terms, is similar to working with Glossaries, apart from - - choosing the Term or Category node tab, Terms or Categories can be created, in this case a wizard is displayed to aske the user to choose the glossary in which the term should be created. - -## 4. Glossary children -When the glossary children action is chosen, the categories and terms under that glossary are displayed. -By default top categories are displayed, these are categories that do not have a parent category. If you want to see the all the categories under the glossary then toggle the Top Categories to All Categories - -## 5. Breadcrumb -While navigating, a breadcrumb is created showing how deep the current node is that is being authored. - -## 6. Glove -Glove is a visualisation that can be displayed when there is a selected node, it displays a canvas with the single node on it.It is then possible to -* explore from the node to other glossary content. -* Author new relationsips and nodes -* search and add new nodes to the canvas - - -## 7. Future improvements -- a breadcrumb to be optimized to minimize the url length. -- add governance classification authoring -- add spine object views -- add collaboration authoring and viewing -- start with a context from the community profile. diff --git a/site/docs/solutions/solutions.md b/site/docs/solutions/solutions.md deleted file mode 100644 index ff4bdd95..00000000 --- a/site/docs/solutions/solutions.md +++ /dev/null @@ -1,8 +0,0 @@ - - - -These are user interface capabilities allowing particular personas to work with [Egeria Solutions](https://egeria.odpi.org/open-metadata-publication/website/solutions/). The solutions that are being developed are: - -- [GlossaryAuthor](./GlossaryAuthor/GlossaryAuthorGuide.md): allowing a Glossary Author persona to create, update and delete Glossary content. - -The expectation is that more solutions will be developed by the community. \ No newline at end of file diff --git a/site/mkdocs.yml b/site/mkdocs.yml deleted file mode 100644 index 8e514075..00000000 --- a/site/mkdocs.yml +++ /dev/null @@ -1,85 +0,0 @@ -# SPDX-License-Identifier: CC-BY-4.0 -# Copyright Contributors to the ODPi Egeria project. - -site_name: Egeria React UI -site_description: A multi-tenant Egeria React UI for Open Metadata. -copyright: "License: CC BY 4.0, © 2018-2021 contributors to the Egeria project." -repo_name: odpi/egeria-react-ui -repo_url: https://github.com/odpi/egeria-react-ui -site_url: https://odpi.github.io/egeria-react-ui/ -edit_uri: "" - -nav: - - About: index.md - - Getting started: - - getting-started/prereqs.md - - getting-started/setup.md - - Overview: - - overview/Overview.md - - Solutions: - - solutions/solutions.md - - solutions/GlossaryAuthor/GlossaryAuthorGuide.md - - Eco System: - - ecosystem/ecosystem.md - - ecosystem/RepositoryExplorerGuide.md - - Contributors section: - - contributors/contributorguide.md - -theme: - name: material - language: en - custom_dir: overrides - features: - - navigation.tabs - - navigation.sections -# - navigation.instant - - navigation.top -# - toc.integrate - palette: - - scheme: default - accent: cyan - toggle: - icon: material/toggle-switch-off-outline - name: Switch to dark mode - - scheme: slate - accent: cyan - toggle: - icon: material/toggle-switch - name: Switch to light mode - icon: - repo: fontawesome/brands/github - favicon: assets/favicon.ico - logo: assets/images/egeria-header.png - -extra_css: - - assets/stylesheets/egeria.css - -extra: - social: - - icon: fontawesome/brands/github - link: https://github.com/odpi/egeria - name: Egeria on GitHub - - icon: fontawesome/brands/docker - link: https://hub.docker.com/u/odpi - name: Egeria on Docker - - icon: fontawesome/brands/medium - link: https://medium.com/tag/egeria - name: Egeria on Medium - - icon: fontawesome/brands/slack - link: https://lfaifoundation.slack.com/archives/C01F40J2XA8 - name: Egeria on Slack - -markdown_extensions: - - admonition - - attr_list - - abbr - - pymdownx.snippets - - pymdownx.highlight - - pymdownx.details - - pymdownx.tabbed - - pymdownx.superfences - - toc: - permalink: true - - pymdownx.emoji: - emoji_index: !!python/name:materialx.emoji.twemoji - emoji_generator: !!python/name:materialx.emoji.to_svg diff --git a/site/overrides/home.html b/site/overrides/home.html deleted file mode 100644 index 19f0b755..00000000 --- a/site/overrides/home.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - -{% extends "main.html" %} - -{% block tabs %} -{{ super() }} - - -
-
-
-
-

{{ config.site_name }}

-

{{ config.site_description }}

- - Get started - - - Go to GitHub - -
-
-
-
-
-
-

- - Explore -

-

- User interface to explore open metadata from many metadata sources via the Egeria eco-system. -

-
-
-

- - Solutions -

-

- Leverages Egeria's open APIs for solutions designed for a particuler personna e.g. glossary author. -

-
-
-

- - Multi-tenant -

-

- Supports multi tenants. Each tenant can access different subsets of the backend metadata. -

-
-
-

- - Popular technology -

-

- Uses popular front end technologies, including Nodejs and React , so front end code contributers are productive quickly. -

-
-
- -{% endblock %} - - -{% block content %}{% endblock %} diff --git a/site/overrides/main.html b/site/overrides/main.html deleted file mode 100644 index 8eeaa98d..00000000 --- a/site/overrides/main.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -{% extends "base.html" %} - -{% block announce %} - -{% endblock %} \ No newline at end of file diff --git a/site/overrides/partials/header.html b/site/overrides/partials/header.html deleted file mode 100644 index 0fb8ab3d..00000000 --- a/site/overrides/partials/header.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - -
- -
\ No newline at end of file diff --git a/site/overrides/partials/logo.html b/site/overrides/partials/logo.html deleted file mode 100644 index 997b3322..00000000 --- a/site/overrides/partials/logo.html +++ /dev/null @@ -1,4 +0,0 @@ - - - -Egeria \ No newline at end of file diff --git a/site/snippets/abbr.md b/site/snippets/abbr.md deleted file mode 100644 index 28407ca8..00000000 --- a/site/snippets/abbr.md +++ /dev/null @@ -1,9 +0,0 @@ - - - -*[CTS]: Conformance Test Suite -*[HA]: High Availability -*[OMAG]: Open Metadata and Governance -*[OMAS]: Open Metadata Access Services -*[OMRS]: Open Metadata Repository Services -*[PTS]: Performance Test Suite