Git Product home page Git Product logo

secret-conquery's Introduction

Disclaimer:

Please check touch behaviour only on a real tablet. See below.

Deployments

Log of work by Hardfork

Work to solve the challenge from the tender (Übungsaufgabe)

  • #36: We implemented touch and hold to drag for the touch backend. As a result, we have intuitive drag and drop as well as scrolling with one finger on mobile devices.
  • #40: We removed the SplitPane component and use a fixed layout depending on the orientation of the device. This provides a nice experience on e.g. iPad or other devices that rotate the view based on device orientation as well as on desktop when resizing the browser. The SplitPane component not only created issues for drag on touch-devices, in our opinion it also provided no benefit for the user: Better to provide the user with a nice interface than with a funky interface with the possibility to somehow make the interface nice themselves.
  • #40: Following UX best practices, we rearranged the main components of the application i.e. we ordered components from top left to bottom right in order of their importance for the user, making sure that the main interactive components always stay in central view. To that effect, the query-editor as the main interactive component is now the top central resp. leftmost component in portrait resp. landscape view, followed by the list of concepts/queries/forms and the additional info component.
  • #42: We gave the info component a fixed place in the layout and consequently removed the functionality to collapse it.
  • #46: We made the top bar (with the database selector) responsive to be usable on mobile devices. Unimportant content is simply removed on smaller screens.
  • #37, #44: We use bootstrap classes to easily achieve responsiveness and also use the utility classes for spacing etc. With these it is possible to reduce the complexity of the code. Bootstrap is also easily themable without the need to ever mention or use the theme in the code base. White labeling the result will be quite easy.
  • #43, #45, and others: We do not see emotionjs as a beneficial technology over using a well established, responsive CSS-framework like bootstrap and if need be the usage of scss modules. We took the liberty to implement our styling differently and not using emotionjs and also remove / change some styles done with emotionjs. The result partially will look different, but as there was no apparent style guide and some choices for spacing and font size were wasting precious space on the smaller mobile devices we think that these style changes are not problematic for the user.

Known issues

  • Currently, the app is near to unusable on devices smaller than tablets. In our current opinion there is no way to fix this while preserving the "drag and drop" UX. For these small devices a new UX has to be designed (e.g. working with step by step processes over multiple pages). We consider this to be out of scope for the challenge and reduced our QA to devices with the lowest resolution of 768px. Also we do not see users analyze large datasets of public health insurers on their mobile phones. Looks like a privacy issue to us.
  • The app (especially drag and drop) does not work in the "tablet emulation" in Chrome. That is in order. It works on the actual mobile device. You have to test it with a real device. In our opinion it is not in order to create more code and weird workarounds to make these previews work more nicely. The touch emulation in Chrome on desktop is simply broken.
  • The ratio between the editor pane and the tools pane might be worth discussing. Currently, it is 70/30 in landscape and 60/40 in portrait. If one wants a different ratio, this can be set to other values quickly in future iterations. Same holds of other ratios.

Work done to prepare the codebase and enable productive software development

  • #2, #4, #35: We added CI to enforce our very strict linting rules, passing of tests and error free compilage of the TypeScript code. All for the sake of higher code quality (which now will stay high because CI).
  • #10, #13: We added prettier with eslint-plugin-prettier to the project to enforce consistent code formatting automatically. This speeds up development cycles (no more manual indention) and eliminates the annoying white-space and format changes in PRs. More focus on the actual changes!
  • #14: We silenced all existing (prior to our work) TypeScript errors with //@ts-ignore. Actually fixing these errors is out of scope of the task at hand, but we need TypeScript to work correctly to catch and fix our own errors during our work on the codebase. Now we can block a PR from being merged if a new error comes up due to our code changes.
  • #29, #41: We added CD to deploy not only an always up do date version of the app but also to get staging deployments for each pull request. This is on order for others to check the acceptance criteria for a PR and do QA without having to checkout and build locally. It also enables non-technical personel to verify and approve work in a larger team.
  • #22: We added a Storybook to be able to work on components in isolation to speed up development cycle and ease debugging. Obviously we added CD for this storybook. A staging deployment of this storybook will also happen for each PR. As this was not part of the challenge we only some simple stories that we had a use for.

Conquery

fast & efficient analysis

Last Release Build Status CodeFactor Heroku Code Size License

Live-Demo

conquery Screenshot

Conquery is a powerful web-based tool to compose and execute queries against large event-like data sets.

Event data sets typically associate events with a certain subject (i.e. a person or a physical object). One common use case for the data is to identify groups of similar subjects based on the assumption that they share similar events in a given time frame.

Conquery supplies a powerful interface to group event types in a hierarchical concept tree structure. Elements of this tree represent a group of similar subjects. Those subjects can be composed into a powerful query that runs against the data set.

Starting the demo

This repository includes the Conquery frontend along with a non-functional backend. It provides a set of example concept trees to demonstrate the capabilities of the UI: The example's use case is to search for groups of actors who appeared in movies of the same genre or received the same award.

The demo can be started using the following commands, provided that node.js (version 8.x LTS) and yarn are already installed:

cd frontend/
yarn install
yarn start

Acknowledgements

This platform was created by InGef – Institut für angewandte Gesundheitsforschung Berlin GmbH in cooperation with bakdata GmbH and Kai Rollmann.

InGef – Institut für angewandte Gesundheitsforschung Berlin GmbHbakdata GmbHRollmann Software

secret-conquery's People

Contributors

aheise avatar awildturtok avatar bakdata-bot avatar dependabot-preview[bot] avatar dependabot-support avatar jakobkolb avatar kadrian avatar levino avatar m-wettig avatar manuel-hegner avatar marcusbaitz avatar martintaraz avatar maxvonknobloch avatar mergify[bot] avatar nstrelow avatar priehn avatar rs22 avatar svenlehmann avatar thonitub avatar

Watchers

 avatar  avatar

secret-conquery's Issues

Top menu bar is not responsive and either vanishes or causes display issues

Describe the bug
The top menu bar causes issues on low res screens. See screenshots below

To Reproduce
Steps to reproduce the behavior:

  1. Open app on smartphone
  2. See how the database selector is either pushed out of the view port or pushes other components out of the view port.

Expected behavior
On smaller screens, I expect the app to be rendered inside the view port and components to rearrange responsively. Therefore, I expect the database selector to take up the entire top menu bar (with maybe the exception of a logo/icon on the left side)

Screenshots
On Pixel 2 XL:
Screenshot from 2020-07-27 12-17-39

On Moto G4:
Screenshot from 2020-07-27 12-14-53

Add prettier to project

To enforce a consistent coding style and to keep diffs focused on the relevant parts, we want to have prettier in this.

Improve "Forumular-Editor"

Currently the "Formular-Editor" uses a lot of space which leads to the lower panes (tools and info) to be pushed down too far to use the app on tablet. See screenshot.
deploy-preview-36--hardfork-conquery netlify app_(iPad)

Make the editor more compact by reducing unnecessary white (wide) space.
deploy-preview-36--hardfork-conquery netlify app_(iPad)

Formular-Editor squeezed on iPad.

Describe the bug
The Formular-Editor is squeezed (squeezed, scrambled and partly inaccessible) on iPad in portrait view.

To Reproduce
Steps to reproduce the behavior:

  1. Go the the "Formular-Editor"
  2. Optional (for even worse effect) open info bar on the right
  3. View squeezed and scrambled layout.

Expected behavior
Responsive behavior of components in the Formular-Editor and option to scroll down to access them if neccessary.

Screenshots
Screenshot from 2020-07-27 11-20-08

Smartphone (please complete the following information):

  • Device: iPad (as simulated in Chromium)

Info pane behavior broken on mobile (since hover does not port)

Describe the bug
On mobile, touch event on the "Konzeptbäume" pane first toggles the pin in the info pane and then updates the info displayed in the info pane. This means on the first click on a "Konzept" its info is not shown, instead the pin appears in the sidebar. On the second click on another "Konzept" the pin disappears and the corresponding info is shown. On clicking on yet another concept, the pin is activated again, and the Info corresponding to the "Konzept" that was clicked does not show.

Technically, this is because on mobile, a touch event on the "Konzeptbäume" pane fires both a TOGGLE_ADDITIONAL_INFOS and a DISPLAY_ADDITIONAL_INFOS action. in Contrast, on desktop DISPLAY is triggered by hover and TOGGLE is triggered by clicking. This leads to inconsistent behavior of the info pane on mobile.

To Reproduce
Steps to reproduce the behavior:

  1. Open the App on mobile (or simulate touch events in browser)
  2. Go to "Konzeptbäume"
  3. Open the "Movie Appearances" folder by touching
  4. Touch e.g. "Action Movies"
  5. See how in the Info Pane, the green pin is activated, but no Info is shown.
  6. Touch e.g. "Fantasy Movies"
  7. See how the pin in the Info pane disapears and and the Info for "Fantasy Movies" is shown.
  8. Touch e.g. "Horror Movies"
  9. See how the pin in the Info pane appears, but the pane still displays Info for "Fantasy Movies".

Expected behavior
I expect the first touch on a concept to select the concept (showing the the green hover effect) and display the Info for that concept and the second touch on the concept (that is already displayed) to activate the pin for that concept.
Then, clicking on another concept should select the concept (with the green hover effect) but not update the info in the info pane.
Touching the pinned concept or touching the pin in the info pane should unpin the concept.

Screenshots
Peek 2020-07-27 11-50

Smartphone (please complete the following information):

  • Device: iPad (with click events as simulated in Firefox)

"Anfrage" node shows `@ts-ignore` on loading in "Editor" pane.

Describe the bug
When dragging an "Anfrage" nodes into the "Editor" it shows @ts-ignore on loading.

To Reproduce
Steps to reproduce the behavior:

  1. Open "Anfrage" pane and "Editor" pane side to side
  2. Drag an "Anfrage" into the "Editor"
  3. Scroll down to '....'
  4. See error

Expected behavior
I expect to see some kind of loading indicator during loading.

Desktop (please complete the following information):
On all devices

Fix typescript errors

Currently, there are 1980 typescript errors in the front end code base. We want to fix them, so we properly use linting and typechecking in the future.

Implement scrolling on mobile as swipe/touch and drag.

Is your feature request related to a problem? Please describe.
On mobile, scrolling in different panes does not work. (only when one hits the barely visible scroll bar and then its imprecise and in the opposite direction of finger movement)

Describe the solution you'd like
Implement drag to scroll for all the components where it would be expected (Konzeptbaum, Anfragen, Formulare). Scrolling should be activated on touching anywhere inside the component.

Document restriction: No support on devices below 768 px (iPad portrait)

Is your feature request related to a problem? Please describe.
The app UI does not work well on small screens and optimizing it for screens below 768 px would require some work that will not be done in the immediate future.

Describe the solution you'd like
Make this limitation transparent in the docs and open an issue to mark this as an enhancement (with either won't fix or icebox depending on product management priorities)

Prettify Project

Once prettier is added to the project, it should be applied to the codebase once.

Implement drag and drop activation on mobile as drag and hold.

Is your feature request related to a problem? Please describe.
User interface on mobile is unintuitive. Drag and drop does not work as expected.

Describe the solution you'd like
I would expect Drag and Drop to work with touch and hold to activate drag. Specifically, I would expect to get some feedback on touch and hold that dragging is activated like a popup of the element that can be dragged and/or vibration.

Rethink arrangement of Panes

Is your feature request related to a problem? Please describe.
Currently, the usability on the app on small screens is very limited, since all three panes are displayed simultaneously side by side and are overlapping each other and/or pushing each others content out of the view port. This makes the app pretty much unusable on screens with a max resolution below 900px.

Describe the solution you'd like
One solution to this problem would be rearranging the panes of the app. e.g. a break point at 1080px below which the the screen is separated in two rows where the info pane and the "Konzepte/Anfragen" pane are two collumns in the top row and the editor pane is in the bottom row.

Remove node_modules folder from project

As we have a yarn.lock that keeps track of installed versions, we can remove the node_modules folder. It bloats the diffs, slows sync and does not add value over yarn.lock.

Show error on devices with screen resolution below 768 px vertically

Is your feature request related to a problem? Please describe.
The app is not optimized for usage (and currently also not intended for usage) on screens with resolution below 768 px vertically. Usage on smaller screens is difficult frustrating due to poor responsiveness of components that lead issues with accessibility of features.

Describe the solution you'd like
Show an error on screens with vertical resolution below 768 px saying that this app does not work on their device because the screen is too small. Optionally with a button that lets them use the app anyway but warns them that the experience will be 'not optimal'

Panes top bars cut off on low res screens.

Describe the bug
The tab headers in top bar of the main Panes (Konzeptbäume, Anfragen, Formulare) and (Editor, Zeit-Editor, Formular-Editor) are cut off on the right side on iPad in portrait mode. On smaller screens they even vanish to the right and are inaccessible.

To Reproduce
Steps to reproduce the behavior:

  1. Open App on iPad (or iPad simulator in your Browser),
  2. Rotate view to portrait,
  3. Look at the right end of the tab headers in the top bars.
  4. See cut off.

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
Screenshot from 2020-07-27 11-02-53

Smartphone (please complete the following information):

  • Device: iPad (simulated in Chromium)

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.