Git Product home page Git Product logo

catwalk's Introduction

⚠️ This project is no longer maintained. If you are interested in working on the project you can still create a fork of it on Github.

catwalk

CircleCI

Gain data model insights quickly during its development and validation phases. This tool is useful when you want to explore your data model for whatever reason; maybe you are creating a complex load script, maybe you want to investigate associations.

screenshot

Usage

For catwalk to work there are two things needed:

  1. The UI
  2. A Qlik Associative Engine app

1. UI

Hosted

You can use catwalk from catwalk.qlik.dev, where the latest master build is deployed. It can be used against any Qlik Associative Engine, local or hosted.

Local

If you want to run/develop the catwalk UI locally, you need Node.js installed. Then run these commands in Git Bash/command prompt/terminal and follow the instructions on your screen:

git clone https://github.com/qlik-oss/catwalk.git
cd catwalk
npm install
npm start

2. Qlik Associative Engine

You need to provide catwalk with a websocket URL to the app. The URL is set with the engine_url query parameter.

Example App

For convenience, there is an example app and docker-compose.yml in the catwalk repository

ACCEPT_EULA=yes docker-compose up -d

The docker-compose.yml in the repository will expose the Qlik Associative Engine app at:

ws://localhost:9076/data/drugcases.qvf

and is viewable in catwalk with e.g. https://catwalk.qlik.dev/?engine_url=ws://localhost:9076/data/drugcases.qvf

Qlik Sense Desktop

For connecting to a Qlik Sense Desktop the websocket URL will be:

ws://localhost:4848/app/<app-name>

Qlik Cloud Services / Qlik Sense Enterprise on Kubernetes

In order to connect to an app residing in Qlik Cloud Services or Qlik Sense Enterprise on Kubernetes, the qlik-web-integration-id has to be provided. You can create web integrations to add origins that are whitelisted to access the tenant. When a request arrives, Qlik Sense Enterprise confirms that the request derives from a whitelisted domain and then approves the request, else not. This is administered by tenant admins from the management console on the Integrations page. More info about this can be found here. The id is provided to catwalk by adding it as url parameter to the websocket address, e.g. wss://tenant.qlikcloud.com/app/<app-guid>?qlik-web-integration-id=<web-integration-id>.

Qlik Sense Enterprise on Windows

The catwalk UI doesn't provide a login to the Qlik Sense app, but as long as there has been a login to the app in another tab/window the X-Qlik-Session cookie is set, and catwalk can "reuse" that session. The URL catwalk.qlik.dev has to be white listed in the QMC -> virtual proxy (per virtual proxy being used) for the Sense Proxy to allow sessions from catwalk. Since catwalk is running client side only, there is nothing other then the browser session and the engine that accesses the data in the app. This means that catwalk can be seen as any externally hosted mashup which also needs to be whitelisted.

host white list

Tip 1:tada:

We created a Qlik Sense extension that can be found in the sense-extension folder that will create a link to the Qlik hosted catwalk UI with the current open app if "dragged" onto a sheet of you Qlik Sense app. To install the extension you have to zip the folder and import it into you Qlik Sense installation, read more about how to do this here.

Tip 2:tada:

We created a javascript bookmark that can be found in the bookmark folder that will open up a new tab to the Qlik hosted catwalk UI with the current open app. To setup, create a bookmark and paste the content of bookmark.js in the URL field.

Data Policy

catwalk is running in a browser environment only, and creates a websocket connection directly to the QIX engine specified with the engine_url query parameter. This means that nothing other than the browser session and the engine will ever access the data in an app.

|-----------------|
| Browser running |
| catwalk    |----|------------|
|--------|---|----|            |
         |   |                 |
   |-----|---|-|           |---|----|
   |    you    |           | engine |
   |-----------|           |--------|

The only data collected is via Google Analytics which stores cookies on the users` PC. This is to gain insight into how catwalk is used, how much and by whom. Examples of this information could be how long the users are staying, where the users are coming from (e.g. social media links, but also where in the world), and errors and exceptions.

catwalk's People

Contributors

aihazm avatar axelssonhakan avatar dependabot[bot] avatar gabbaxx avatar kfredberg avatar peol avatar qlikossbuild avatar renovate[bot] avatar rjriel avatar shaun-hope avatar snurrfint avatar sublibra 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

Watchers

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

catwalk's Issues

Perform

Prepare Catwalk for a larger customer base including:

  • Gather usage statistics
  • Ensure we have good documentation
  • Create promotion material (video/blog)

Create the sort tables and field algorithm

Based on the algorithm in the prototype finalize the algorithm and decided in which order the tables and the fields should be visualized.

Suggestion to move the first table in the prototype to center of the model.

HyperCube builder dialog scrolls inverse.

When pressing the + sign in the bottom right corner. The list with fields, dimensions and measures that appears is scrolled to the bottom. So to see additional items you have to scroll upwards as opposed to downwards.

The list is also sorted inverted.

Source comparison of two fields

Add support for comparing two fields with similar content which are supposed to be associated but are not, e.g.

  • dates with different formatting
  • data with trailing spaces, missing spaces etc
  • numbers parsed as text

End modal state if BeginSelections fails

Only one object in an app (across multiple websockets) can be in modal state. We should assume we need to end any current modal state before trying to start one to avoid states that was set in the session before catwalk connected.

app.abortModal() will end any selection state in the app, genericobject.endSelections() does the same but assumes you know which object is in the modal state (which is impossible on a fresh websocket).

Color legend

We could use a legend, hover state, tooltip or something to explain what the different colors of keys mean.

Reload in progress error while working with the tool

If you share session without a project doing continuous reloads (on e.g. load script change), catwalk throws a reload in progress error and you have to reload the UI. It would be preferable that that we can handle this seamless, perhaps treating it as a "request aborted" and retry?

React on a suspend notification

When triggering a reload in the same engine session a suspend notification is triggered in catwalk but a resume call is never issued.

Expose reload date in UI

While working on a project now I noticed that whenever I did a typo in my load script, I had to switch to somewhere else (i.e. terminal or websocket traffic where the reload happens) to check if it actually reloaded properly.

It would be awesome to see the reload date in the UI, preferably as "time since" instead of just a date:

Reloaded less than a minute ago
// or
Reloaded 5 minutes ago
// or when it's > an hour:
Reloaded at 2018-10-20 12:13:14

Sort order for key fields

In key fields, possible values are not sorted first. Non-key fields have the right sorting.

Recreate issue using demo app BranchCore.qvf:
Select value "Qlik" in company. The field fullname now shows possible values on top (as expected). However, key field entityId is not sorted with possible values on top.

Thanks for a great tool!

Add possibility to resize the fields

Adding the possibility to resize the fields or atleast making them as wide as the widest valuse would make the tool easier to use.

Now I have to hoover over the long elements to read the value

Analyse and design the measures component

  • Find a good way to view measures in current component (pull in, modal, own component etc)
  • Decide which measures should be listed (debug measures, all measures in component etc - sync with Andrée and Gabriel)

Add description on items in the grid view

Add information to all entities in the grid view describing what the entity is (e.g. primary key, field, ...) along with informative information about the entity (number of fields etc)

Sort order for first table

Today we sort based on number of fields.
A better metric to determine first table is perhaps number of keys in the table as that would most likely be the fact table

Develop the dimension component

Create a component hosting a list of available dimensions selected in the grid view. Allow for navigation and selection of the content

Design a new filterbox for Catwalk

Analyse what possibilities we have and design a new filterbox with Catwalk requirements in mind.

  • Performance (with large datasets) - virtual scrolling?
  • Search for existing filerbox implementations we can use
  • Support for grey white green

Add tooltip component

Add a tooltip which support the amount of information we would like to convey in the the tool

Build the scene

Build all basic functionality for the first release of catwalk.

Selection tooltip: Some funky text parsing

See attached screenshot. When hovering over a selection in the selection bar you get . .
Guessing there is some blank string value that has a appended dot to it.
Faulty text: "total of 910 values. ."

image

Rehearsal

Goal: Release the tool to customers and gather feedback

Data island

Using an app with data islands shows only one of them:
DMV shows:
image
kitty says:
image

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.