Coder Social home page Coder Social logo

dmgress / cloudgrapher Goto Github PK

View Code? Open in Web Editor NEW
10.0 10.0 1.0 1.43 MB

One page visualization tool for AWS CloudFormation scripts

Home Page: http://dmgress.github.io/cloudgrapher/

License: MIT License

HTML 11.54% JavaScript 80.30% CSS 8.17%
cloudformation

cloudgrapher's People

Contributors

dmgress avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

cloudgrapher's Issues

Research cytoscape layout extensions

The switch to cytoscape 2.5 caused some changes in provided layout extensions and how to include new ones. I had to remove:

  • Arbor
  • Cola
  • Dagre
  • Spread

Maybe they're still useful? Or perhaps some others are nice too?

Use title attribute on buttons

The buttons in the button bar don't have titles or tooltips when you hover over them. Adding a title attribute to each list item will fix this.

Switch to Node application

The current setup of a single static page has several limitations. By switching the codebase to a Node application it will be possible to proxy through it's own back-end and use non-browser capabilities through API calls in the future.

Ask confirmation when current template isn't saved

When the template has been modified in the editor and the user leaves or loads another template, then a confirmation dialog becomes visible

  • able to detect changed template
  • shows modal confirmation dialog
  • prevents exit until confirmation dialog closes
  • prevents template change until confirmation dialog closes

Embed the graph through use of parameters

It should be possible to embed a generated graph through the use of several query parameters. The parameter embed indicates it should only show a cytoscape graph or rendered png image.

By default it will use a predefined graph type, style and dimension.

Parameters required for:

  • graph type
  • cloudgrapher style (see issue #8)
  • custom cytoscape CSS URL
  • show style menu
  • dimensions (width & height)
  • option to enable dragging stuff around
  • PNG only

Depends on #7 and #8.

Allow exploring of AWS::CloudFormation::Stack resources

A CloudFormation Stack can contain other stacks. These might be reachable for further exploration.

  • How to indicate you can explore a stack? (In the graph or in the editor?)
  • When to check if the referenced stack is reachable?
  • How to render the stack?
    • Expand existing graph
    • Replace existing graph
    • Pop up

Implement back-end API server

From issue #3 it is clear that some functionality eventually will need some server-side code.

  • determine if you want to use JavaScript for this as well
  • implement some sort of remote template loading proxy (check https://github.com/afeld/jsonp.git for inspiration)
  • switch current front-end to use the new back-end
  • (Optional) update de Readme.md to reflect any application changes
  • (Optional) remove the GitHub pages or put some redirect in it

Hook up CI

  • Pick an integration
  • Configure it to run tests and check for JS Hint errors

Rendering undefined resources

Currently undefined resources are not rendered. Rendering "the web" or external predefined resources might improve insight in how well access to those is defined in the CloudFormation script.

Predefine some graph styles

It would be nice to have several styles to choose from. The chosen style will affect the cytoscape elements (borders, text, etc.) and might influence the icons used.

  • high contrast style (something clearly visible on black
  • simple style (using simple images instead of AWS stuff)
  • black on white style
  • white on black style
  • greyscale style (several shades of black to grey)
  • full color style

Allow loading a template from a public URL

Given an URL the application should load the document and visualize the template if it's a valid CloudFormation template.

  • Able to load and render an example template from AWS
  • Able to load a faulty template (the editor shows the template with an error, no graph update)
  • Shows URL on successful template loading
  • Notify when the URL is not a valid template
  • Won't bother trying an invalid URL
  • A 40x or 50x status code is shown as notification
  • Notifies when redirecting

Add debug mode

  • Determine the best option to implement a debug mode where there is (more) console.log
  • Implement debug mode

Refactor template

The edit.js currently holds the template "class", it should be extracted to it's own file and some tests need to be written.

Improve web interface

The current design is very basic and unappealing. Selecting fonts and applying styling will improve the appeal of the interface.

Rework addEdge and findEdges

Currently each nodes & edges collecting function defines how it wants to model a new edge. The specs are matched to the collecting function, but should only test the edge finding function.

![Collecting function calls findEdges which calls the addEdge defined in the collecting function](http://g.gravizo.com/g?
digraph G {
collecting_function [label="Collecting function"];
edge_model [label="Edge model",shape="box",style=filled,color="gray"];
collecting_function -> addEdge [label="creates",style="dotted"];
addEdge -> edge_model [label="defines",style=dashed];
collecting_function -> findEdges [label="calls"];
findEdges -> addEdge [label="calls"];
})

To Do:

  • Define the structure of an edge in edge finding function
  • Return a flattened collection of found edges
  • Fix the specs to match
  • Fix collection functions to conform

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.