Giter Site home page Giter Site logo

stefanrinderle / softvis3d Goto Github PK

View Code? Open in Web Editor NEW
60.0 60.0 15.0 8.36 MB

License: GNU Lesser General Public License v3.0

Java 2.18% HTML 0.62% CSS 0.28% JavaScript 2.00% Shell 0.17% TypeScript 89.48% Dockerfile 0.52% SCSS 4.75%
java sonarqube visualization

softvis3d's People

Contributors

adambadu avatar bobquest33 avatar dependabot[bot] avatar dzmitry-paulenka avatar eitsch avatar elbart avatar spoertm avatar stefanrinderle avatar yvo-niedrich avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

softvis3d's Issues

Feature idea: Animations to see the evolution of the city (= architecture)

Very nice visualisation of the software archtiecture depending on different metrics. Thanks a lot for this project.

We had a small idea -probably already know :):
What about saving states of the "city" each day and allowing the user to switch between the saved state. The view could automatically be refreshed. Like that, the user can see the evolution of the city and the code...

All the best,
Sascha (4th floor :) ), Mario

Remove jquery as dependency

JQuery is currently used in SoftVis3dScene react component.

Please replace this code and remove jquery from the package.json

Errorhandling

Catch and display errors and Warnings.

  • Loading-Queue is taking to long
  • Exceptions thrown
  • ...

PluginVersion 0.3 not working with Sonar 5.2 (jdk1.8.0_40/postgresql-9.3)

From @guidowojke on November 13, 2015 14:49

Hallo everybody,

simply putting the file sonar-softVis3D-plugin-0.3.jar into the ./sonarqube-5.2/extensions/plugins folder and restarting sonar with sonar.sh file produces the following error:

uname -a: Linux 3.2.0-4-amd64 1 SMP Debian 3.2.63-2+deb7u1 x86_64 GNU/Linux

--> Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.

2015.11.13 15:25:52 INFO  app[o.s.p.m.JavaProcessLauncher] Launch process[search]: /export/home/bsci/tools/jdk/jdk1.8.0_40/jre/bin/java -Djava.awt.headless=true -Xmx1G -Xms256m -Xss256k -Djava.net.preferIPv4Stack=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Djava.io.tmpdir=/export/home/bsci/server/sonarqube/sonarqube-5.2/temp -cp ./lib/common/*:./lib/search/* org.sonar.search.SearchServer /tmp/sq-process6222138717536646989properties
2015.11.13 15:25:53 INFO   es[o.s.p.ProcessEntryPoint]  Starting search
2015.11.13 15:25:53 INFO   es[o.s.s.SearchSettings]  Elasticsearch listening on 127.0.0.1:9001
2015.11.13 15:25:53 INFO   es[o.elasticsearch.node]  [sonar-1447424752708] version[1.7.2], pid[15850], build[e43676b/2015-09-14T09:49:53Z]
2015.11.13 15:25:53 INFO   es[o.elasticsearch.node]  [sonar-1447424752708] initializing ...
2015.11.13 15:25:53 INFO   es[o.e.plugins]  [sonar-1447424752708] loaded [], sites []
2015.11.13 15:25:53 INFO   es[o.elasticsearch.env]  [sonar-1447424752708] using [1] data paths, mounts [[/export (/dev/drbd0)]], net usable_space [871gb], net total_space [899.5gb], types [xfs]
2015.11.13 15:25:54 WARN   es[o.e.bootstrap]  JNA not found. native methods will be disabled.
2015.11.13 15:25:55 INFO   es[o.elasticsearch.node]  [sonar-1447424752708] initialized
2015.11.13 15:25:55 INFO   es[o.elasticsearch.node]  [sonar-1447424752708] starting ...
2015.11.13 15:25:55 INFO   es[o.e.transport]  [sonar-1447424752708] bound_address {inet[/127.0.0.1:9001]}, publish_address {inet[/127.0.0.1:9001]}
2015.11.13 15:25:55 INFO   es[o.e.discovery]  [sonar-1447424752708] sonarqube/u5SDHQiES1uYcG3EmBhwTw
2015.11.13 15:25:58 INFO   es[o.e.cluster.service]  [sonar-1447424752708] new_master [sonar-1447424752708][u5SDHQiES1uYcG3EmBhwTw][bscibeadev02.be.server.lan][inet[/127.0.0.1:9001]]{rack_id=sonar-1447424752708}, reason: zen-disco-join (elected_as_master)
2015.11.13 15:25:58 INFO   es[o.elasticsearch.node]  [sonar-1447424752708] started
2015.11.13 15:25:58 INFO   es[o.e.gateway]  [sonar-1447424752708] recovered [6] indices into cluster_state
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=160m; support was removed in 8.0
2015.11.13 15:25:59 INFO  app[o.s.p.m.Monitor] Process[search] is up
2015.11.13 15:25:59 INFO  app[o.s.p.m.JavaProcessLauncher] Launch process[web]: /export/home/bsci/tools/jdk/jdk1.8.0_40/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djruby.management.enabled=false -Djruby.compile.invokedynamic=false -Xmx768m -Xms256m -XX:MaxPermSize=160m -XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true -Dhttps.proxyHost=********** -Dhttps.proxyPort=3128 -Djava.io.tmpdir=/export/home/bsci/server/sonarqube/sonarqube-5.2/temp -cp ./lib/common/*:./lib/server/*:/export/home/bsci/server/sonarqube/sonarqube-5.2/lib/jdbc/postgresql/postgresql-9.3-1102-jdbc41.jar org.sonar.server.app.WebServer /tmp/sq-process5056604064872068091properties
2015.11.13 15:26:00 INFO  web[o.s.p.ProcessEntryPoint] Starting web
2015.11.13 15:26:00 INFO  web[o.s.s.app.Webapp] Webapp directory: /export/home/bsci/server/sonarqube/sonarqube-5.2/web
2015.11.13 15:26:00 INFO  web[o.a.c.h.Http11NioProtocol] Initializing ProtocolHandler ["http-nio-0.0.0.0-8999"]
2015.11.13 15:26:00 INFO  web[o.a.t.u.n.NioSelectorPool] Using a shared selector for servlet write/read
2015.11.13 15:26:01 INFO  web[o.e.plugins] [sonar-1447424752708] loaded [], sites []
2015.11.13 15:26:01 INFO  web[o.s.s.p.ServerImpl] SonarQube Server / 5.2 / f045be98be3ba032b6b19d71574038eeeb91803b
2015.11.13 15:26:01 INFO  web[o.sonar.db.Database] Create JDBC data source for jdbc:postgresql://*************/sonar
2015.11.13 15:26:02 INFO  web[o.s.s.p.DefaultServerFileSystem] SonarQube home: /export/home/bsci/server/sonarqube/sonarqube-5.2
2015.11.13 15:26:02 INFO  web[o.s.s.p.ServerPluginRepository] Deploy plugin Build Stability / 1.3 / adf81f731fc54be04431d4ccf753900c44ec33bd
2015.11.13 15:26:02 INFO  web[o.s.s.p.ServerPluginRepository] Deploy plugin Checkstyle / 2.3 / 7c62fe8a00123b8df1fa16cc25ad77888e50e811
2015.11.13 15:26:02 INFO  web[o.s.s.p.ServerPluginRepository] Deploy plugin Findbugs / 3.3 / e1a76544ee6aed765106e7e2bb64072adf63ccaf
2015.11.13 15:26:02 INFO  web[o.s.s.p.ServerPluginRepository] Deploy plugin Git / 1.1 / 21e7329a632904350bb9a2e7f1b17b9967988db8
2015.11.13 15:26:02 INFO  web[o.s.s.p.ServerPluginRepository] Deploy plugin Java / 3.6 / 88ff47a7574edcc4472ff495c15b6f94d8dbd98f
2015.11.13 15:26:02 INFO  web[o.s.s.p.ServerPluginRepository] Deploy plugin LDAP / 1.4 / 18ba3a13ba4c6c07e6b0ad77940a52734159c27e
2015.11.13 15:26:02 INFO  web[o.s.s.p.ServerPluginRepository] Deploy plugin PHP / 2.6 / 153f397dc6cac76c93eca5df541278447ed85ea4
2015.11.13 15:26:02 INFO  web[o.s.s.p.ServerPluginRepository] Deploy plugin PMD / 2.4.1 / 2f30e0a7177041a4fb9f7ecefdb301e2bfc15903
2015.11.13 15:26:02 INFO  web[o.s.s.p.ServerPluginRepository] Deploy plugin SVN / 1.2 / d04c3cdb21f48905dd8300d1129ec90281aa6db2
2015.11.13 15:26:02 INFO  web[o.s.s.p.ServerPluginRepository] Deploy plugin SoftVis3D / 0.3 / c5f74dec1790d1b3945855d18f29757a6f2d29ba
2015.11.13 15:26:03 INFO  web[o.s.s.p.RailsAppsDeployer] Deploying Ruby on Rails applications
2015.11.13 15:26:03 INFO  web[o.s.s.p.UpdateCenterClient] Update center: http://update.sonarsource.org/update-center.properties (HTTP proxy: ***********:3128)
2015.11.13 15:26:04 ERROR web[o.a.c.c.C.[.[.[/sonar]] Exception sending context initialized event to listener instance of class org.sonar.server.platform.PlatformServletContextListener
java.lang.NoClassDefFoundError: org/sonar/api/database/DatabaseSession
    at java.lang.Class.getDeclaredConstructors0(Native Method) ~[na:1.8.0_40]
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) ~[na:1.8.0_40]
...
2015.11.13 15:26:08 INFO  web[o.a.c.h.Http11NioProtocol] Pausing ProtocolHandler ["http-nio-0.0.0.0-8999"]
2015.11.13 15:26:09 INFO  web[o.a.c.h.Http11NioProtocol] Stopping ProtocolHandler ["http-nio-0.0.0.0-8999"]
2015.11.13 15:26:09 INFO  web[o.a.c.h.Http11NioProtocol] Destroying ProtocolHandler ["http-nio-0.0.0.0-8999"]
2015.11.13 15:26:09 INFO  web[o.s.s.a.TomcatAccessLog] Web server is stopped
2015.11.13 15:26:09 INFO  app[o.s.p.m.TerminatorThread] Process[search] is stopping
2015.11.13 15:26:09 INFO   es[o.s.p.StopWatcher]  Stopping process
2015.11.13 15:26:09 INFO   es[o.elasticsearch.node]  [sonar-1447424752708] stopping ...
2015.11.13 15:26:09 INFO   es[o.elasticsearch.node]  [sonar-1447424752708] stopped
2015.11.13 15:26:09 INFO   es[o.elasticsearch.node]  [sonar-1447424752708] closing ...
2015.11.13 15:26:09 INFO   es[o.elasticsearch.node]  [sonar-1447424752708] closed
2015.11.13 15:26:09 INFO  app[o.s.p.m.TerminatorThread] Process[search] is stopped
<-- Wrapper Stopped

After removing the plugin and restarting again, everything is running fine again.

Regards,
Guido

Copied from original issue: stefanrinderle/sonar-softvis3d-plugin#5

Prepare a release candidate and announce a feedback period prior release

Based on the requirenments 2. Releases follow open source conventions stated in #24 we will have to:

  1. A Release Candidate and feedback period are announced prior to each release.
  2. A "feedback period closed" notice is sent just before the release.
  3. Prepare release notes that reflect all significant changes in the version and provide the plugin jar

This also includes to write a description for the plugin.
Important: Quality gate has to be green on release.

Reactivate color metric for buildings

I would like to reactivate different colors for the buildings based on metrics. The colors should start with green #00ff00 and go all the way to red #ff0000 based on the max metric etc.

I also would like to discuss the colors if no metric for the color is selected. I would vote for a single color instead of a random color for each platform / package. Why?

  • Although there is no information hidden, the colors attract the visual scope of the user. As a result, some users start to think about the colors of the packages although they are random
  • The more different "information" (color) is visible, it is harder to understand.

On the other hand, the different colors seperate the packages. What do you think?

I created this new issue to focus on the SQ release. #8 was moved to the second milestone for now as i don't see it as mandatory. Ok?

React js integration proof of concept

As stated in #20 we want to refactor the frontend code to be able to extend the plugin functionality fast and reliable. The POC will be implemented in branch softvis3d_react_example and then hopefully merged into master.

Acceptance criteria:

  • Integrate a simple react component somewhere in the angular app view
  • Write a plain typescript class which can be used within the current angular app view
  • Write simple tests with karma/jasmine for the typescript class

Prepare requirenments for SonarQube udpate center release

According to this documentation http://docs.sonarqube.org/display/DEV/Deploying+to+Update+Center, we have to fulfill the following:

  1. Your plugin is open-source
    a. Source is freely accessible
    b. The license is a known FLOSS one (check the list provided by the Open Source Initiative)
    c. There's a public issue tracking system
    d. Documentation is available online
    e. Binaries of each version are accessible somewhere
  2. Releases follow open source conventions
    a. A Release Candidate and feedback period are announced prior to each release.
    b. A "feedback period closed" notice is sent just before the release.
    c. For each release the following must be available:
    1. release notes that reflect all significant changes in the version
    2. plugin jar
  3. The key of your plugin should by convention be:
    a. short and unique
    b. lowercase (no camelcase)
    c. composed only of [a-z0-9]
    d. examples: motionchart, php, scmactivity
  4. The description of your plugin must not be misleading in terms of content (the code needs to do pretty much what the name and description say it does)
  5. Your plugin does not compete with existing SonarSource products (sorry, but we gotta pay the bills somehow)
  6. It is analysed on SonarQube.com and the quality gate is green when doing a release
    a. Initial configuration must be requested in a new thread on the SonarQube Google Group
  7. It is compatible with the platform requirements (e.g. it runs on the minimum listed JRE)
  8. Last but not least: your plugin must be aligned with the goal of the SonarQube platform: management of the technical debt and the quality of the code
    a. To be more precise: every feature of SonarQube is tied to the code, so if your plugin provides data that can't be attached to a source or a test file, then there are chances that your plugin won't be accepted in the Update Center

Create default profiles with descriptions and metric settings

We decided to create default Profiles targeting the most common use cases of the visualization plugin.

Each profile should have:

  • Name
  • Description answering what is the use case and how to interpret the visualization is
  • Picture used for the description

TODOs:

  • Think about and discuss the most common use cases
  • Create at least 3 profiles to start

Advanced config in CityBuilder page

The CityBuild needs to have additional/advanced settings. This is the bottom part of the picture here. We need at least the settings we already had in the 0.6 branch.

20161029_161939

Frontend code should not be in the subfolder /src/main/resources

Currently, the frontend code is in the subfolder structure /src/main/resources. As we build the plugin with maven this is the default folder for that.

It would be cleaner to change this folder structure and have the frontend code in softvis3d/softvis3d-frontend/src/

Adjust default resource folder in pom.

IE Performance is abysmal

Has something changed on the WebGL-Side? The Performance of IE is really bad. Even worse, once the debugging console is opened.

Also a new Error appeared, when drawing a city. (It did not occur a week ago!)

TypeError: Object doesn't support this action
   at Anonymous function (http://sonar-vbox:80/static/softvis3d/threeViewer/bundle.js:9023:6)
   at Scope.prototype.$broadcast (http://sonar-vbox:80/static/softvis3d/threeViewer/vendor.js:27643:16)
   at ThreeViewer.MessageBus.prototype.broadcast (http://sonar-vbox:80/static/softvis3d/threeViewer/bundle.js:8945:4)
   at ThreeViewer.MessageBus.prototype.trigger (http://sonar-vbox:80/static/softvis3d/threeViewer/bundle.js:8927:4)
   at Anonymous function (http://sonar-vbox:80/static/softvis3d/threeViewer/bundle.js:1736:6)
   at processQueue (http://sonar-vbox:80/static/softvis3d/threeViewer/vendor.js:26046:12)
   at Anonymous function (http://sonar-vbox:80/static/softvis3d/threeViewer/vendor.js:26062:28)
   at Scope.prototype.$eval (http://sonar-vbox:80/static/softvis3d/threeViewer/vendor.js:27320:10)
   at Scope.prototype.$digest (http://sonar-vbox:80/static/softvis3d/threeViewer/vendor.js:27133:16)
   at Scope.prototype

Using IE 11.0.9600


Edit:
Maybe the new draw-size?

Automated integration tests

As we are now part of the update center, it is really important that our releases work as expected. In addition to a good unit test coverage for the frontend code, we need integration tests to check multiple releases of sonarqube with the plugin.

Acceptance criteria:

  • Integration tests run on every checkin / build
  • At least check that both visualization layouts are rendered properly
  • It should be possible to check multiple SonarQube versions against
  • Test again snapshot as well as specific tags / releases should be possible

More choices for the color of the buildings

Within #23, we reduced the metrics which can be used for the color of the building. Although we should prevent that any metric to be used as in previous versions, there should be more meaningful metrics available.

Plain visualization page

Link to SonarQube independent page (without Sonarqube header and footer) - just the visualization.

Integrate layoutprocessor and softvis3d model using typescript

The only classes which have not be ported to typescript yet are

  • layoutProcessor.js
  • softvisdmodel.js

We need this methods to generate the layout. The currently, displayed layout is based on a fixed json file in app.tsx. Plese remove this afterwards.

Window Management (Loader, CityBuilder, Scene, ...)

image

Actually this issue is just for review purposes, as this (necessary) feature has been implemented with 1b31502.

The right now all the windows visibility is stored and calculated in the WindowStateStore and distributed through the Softvis3D-Component (previously App). The visibility of components can only be changed via events.

error with big project on JSONWriter - broken pipe

i had a big project

image

more thant 4,1 megalines

if i try to create city of it with standart metric (for example code quality)

image

i have an error without text

image

in stacktrace theres is something strange

sonarqube_1  | 2016.10.14 00:07:00 INFO  web[][d.r.s.p.t.TreeBuilder] Create tree structure for id AVcciAWQWxicchL5dZGz
sonarqube_1  | 2016.10.14 00:07:00 INFO  web[][d.r.s.p.t.TreeBuilder] Number of modules: 0
sonarqube_1  | 2016.10.14 00:08:44 ERROR web[][d.r.s.w.AbstractWebserviceHandler] java.io.IOException: Broken pipe
sonarqube_1  | java.lang.IllegalStateException: java.io.IOException: Broken pipe
sonarqube_1  |  at de.rinderle.softvis3d.base.result.SoftVis3dJsonWriter.rethrow(SoftVis3dJsonWriter.java:197) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.SoftVis3dJsonWriter.value(SoftVis3dJsonWriter.java:129) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.SoftVis3dJsonWriter.prop(SoftVis3dJsonWriter.java:165) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformTreeToJson(TreeNodeJsonWriter.java:43) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformChildren(TreeNodeJsonWriter.java:87) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformTreeToJson(TreeNodeJsonWriter.java:59) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformChildren(TreeNodeJsonWriter.java:80) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformTreeToJson(TreeNodeJsonWriter.java:59) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformChildren(TreeNodeJsonWriter.java:80) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformTreeToJson(TreeNodeJsonWriter.java:59) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformChildren(TreeNodeJsonWriter.java:80) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformTreeToJson(TreeNodeJsonWriter.java:59) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformChildren(TreeNodeJsonWriter.java:80) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformTreeToJson(TreeNodeJsonWriter.java:59) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.base.result.TreeNodeJsonWriter.transformRootTreeToJson(TreeNodeJsonWriter.java:34) ~[softvis3d-base-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.webservice.VisualizationWebserviceHandler.writeResultsToResponse(VisualizationWebserviceHandler.java:80) [sonar-softvis3d-plugin-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.webservice.VisualizationWebserviceHandler.handleRequest(VisualizationWebserviceHandler.java:68) [sonar-softvis3d-plugin-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.webservice.AbstractWebserviceHandler.handle(AbstractWebserviceHandler.java:39) ~[sonar-softvis3d-plugin-0.6.0.jar:na]
sonarqube_1  |  at de.rinderle.softvis3d.webservice.VisualizationWebserviceHandler.handle(VisualizationWebserviceHandler.java:36) [sonar-softvis3d-plugin-0.6.0.jar:na]

i see broken pipe with json from WriteRelustHandler to JSON writer

seem to be this line https://github.com/stefanrinderle/softvis3d/blob/master/softvis3d-base/src/main/java/de/rinderle/softvis3d/base/result/SoftVis3dJsonWriter.java#L115

how to fix that error ? our how to debug this behavior ?

Restrict certain packages or file types from being visualized

From @stefanrinderle on November 15, 2015 21:59

Use case: There is one particular File or package which "destroys" any differences of metrics for all other classes (eg. if jQuery is within the view). Therefore it should be possible to remove these classes from the visualization and more important from the calculation.

Other use-cases: Only show java classes and no pom files.

Copied from original issue: stefanrinderle/sonar-softvis3d-plugin#15

Display environmental Information

Problem

The Code City Environment is highly configurable, so many of it's properties can represent different features. As such we should make the current city configuration clearly visible to the user.

I know I picked what metrics I'm looking at, but it's difficult for me at least to remember what maps to height and what to breadth.
-- Ann at Google Group

Proposed changes

  • create a legend area/window for the city
  • add status information like a HUD

Check requirements for the plugin during initialization (webgl)

From @stefanrinderle on November 15, 2015 21:46

  • Check what happens if webgl is not available and detect if its not.
  • Create a meaningful error message (incl. link to webgl testpage and homepage) to resolve the issue on the user side
  • Check if the dot path is available and try to get the graphviz version
  • Create a meaningful error message (where to specify the path) to resolve the issue on the user side

Copied from original issue: stefanrinderle/sonar-softvis3d-plugin#9

As a user of the visualization i want to use other sources of data

During #14, the webservice-example is not usable anymore.

After this user story, it should be possible to try out the visualization without sonarqube again. If its within the webservice.example module or not is not important. Maybe its possible to make the frontend-code of the sonarplugin module so generic and configurable, that we do not need an extra module to use the visualization without SQ.

Project complexity

The Project is rather complex, as multiple webpack instances exist, that are spread across the the entire softvis3d-project. Refactoring and extending the plugin would become a lot easier, once the code layout is simplified and dependencies are easily visible.

For discussion I will add the suggested plugin layout once again:

softvis3d-sonar
 |
 |--- Backend (Java)
        |--- Sonar-Plugin-Integration
        |--- Backend-Service
 |
 |--- Frontend (webpack)
        |--- User Interface (Initially SonarQube-dependent)
        |--- Softvis-Modell (SonarQube-dependent: Connects to Backend, Load analyzed code structure, Load Metrics, Create & maintain software modell)
        |--- Softvis-Illustrator (Configurations interface for the UI, Finalizes the model for drawing)
        |--- ThreeJS-Renderer (Independent of SonarQube, Provide Services as an interface for the UI)```

Simplify metric scaling and UI

PR #33 introduced more/new scaling Methods for metrics modifying building dimensions. While it can be useful, this feature also makes the UI more complex.

We need to simplify the options / interface. (Maybe drop a few useless options)...

Suggestions are very welcome ๐Ÿ˜‰

Update UI concept

Based on the server side layout approach, the current UI has three parts:

Select modal dialog

  • Select the metric and trigger the layout and visualization

Toolbar (could be renamed to e.g. Details)

  • Show current status of the visualization (current metric names)
  • Show the current selected item with name, parent and children info
  • "Action buttons" to focus on a specific part of the visualization or reset this to show all objects

Help modal dialog
(Re-)Select / Hide / Show one of the dialogs above with little buttons on the bottom right

As we create the layout in the frontend and faster as before, we could make the UI more interactive and rethink the current structure. I think of the following things:

  • I would keep the initial modal dialog to be able to explain the user the basic stuff and help to select adequate metrics.
  • The current help extra dialog should be integrated into the initial modal dialog
  • The little buttons on the bottom right corner should be moved to the top left (because there is always a white space in the 3D visualization
  • I think that the toolbar could stay as is for the first step, but the inner css should be updated. A better margin of the text, more "focus" on the selected object, ...
  • Overall, the CSS is not really good. With the toolbar css refactoring, all the other "components" should be updated as well
  • The space for the little buttons on the top left could be extended to give the user a more interactive experience. Select layout algorithm, select linear/log calculation, ...

Export screenshot

It should be possible to export the current visualization as screenshot without using any screenshot tools.

Should be added as sub-menu item in the app settings bar in the top right corner.

20161029_161948

Recreate Frontend

The complexity of the Softvis3D-Frontend will grow a lot in the long-term. I intend to provide a lot of configuration options, which can influence the behavior of the plugin at runtime. Looking forward it is not effective to expand on the currently existing code based on AngularJS. We should agree on a future-proof framework and design a structure that meets our needs and goals.

Then we have to determine a strategy to port the existing functionality into the new framework, before we develop new features. Can we do a Big Bang?

Get more infos about metrics --> only show relevant ones

There are a lot of metrics available in SonarQube. It would be great to increase the number of metrics for the user and remove "not relevant" ones

TODOs:

  • Check which information about metrics is available
  • Filter out "not relevant" ones

Make Softvis use Districts again

The District View was an integral part of the softvis-plugin. We cannot just cut districts, just to replace it with an unknown, experimental Layout.

Bring District-View back and make it somewhat recognizable. Evostreets should still be available (optional!)

Bug in Tree Algorithm

2016-06-05 18_10_00-clipboard

Once i added a second file into the folder a new SubTree was created for interfaces. So i assume it's Problem with folders containing only a single file...


For reproduction on the softvis 0.5-branch:

git clone http://git.ungolianth.de/ungolianth/codecity-visualizer.git
cd codecity-visualizer
git checkout b1b8036d

and sonar-properties:

sonar.projectKey=ccv
sonar.projectName=CodeCityVisiualizer
sonar.projectVersion=0.1.3
sonar.sources=src
sonar.sourceEncoding=UTF-8

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.