Giter VIP home page Giter VIP logo

qs-mir's Introduction

Qlik Sense Master Item Repository

QS MIR is a web application written in JavaScript that should help Qlik Sense users manage their master items across their Qlik platform. The basic functionality allows users to:

  • Connect to an app
  • List, preview and extract master dimensions and measures
  • Manage (store, clone, edit or delete) these master items
  • Export modified or original master items back to ANY app

Quick Demo

Technology

The entire solution has been created in JavaScript/Node.js using React.js for the front end, enigma.js for the Qlik platform communication, express for the API and sqlite for storage.

Compatibility

This has been tested with Qlik Sense Server and Desktop February and April 2019 - Since enigma has been available longer it might work with legacy versions.

Installation

To install QS MIR do the following:

  1. Have node js installed :-)

  2. Clone or Download this repository and unzip to a folder on your PC / Server

  3. Open a command prompt and navigate to the project's folder you created in 1). Here, run npm install

  4. If you're running this with Qlik Sense Desktop, skip to step 8. For Server continue with step 4

  5. To enable the backend to communicate with Qlik we need to export certificates in Platform independent PEM-format through yor QMC (or via API). See HERE to find out how.

  6. Copy the certificates to the following path in your project folder <Your project folder>/src/server/cert if it doesnt exist yet, create the subfolder.

  7. Modify the config file stored in <Your project folder>/src/server/config/config.js. (I want to have an admin layer in the future but this is it for now ;-))

///src/server/config/config.js

// Webserver Config 

export var port = 1212; // Change this port if you wish

// Qlik Sense Stuff

export var qlikCertificateDir = './src/server/cert/'; //change this if you want to take your certificates from elsewhere
export var qlikUser     = 'UserDirectory=INTERNAL;UserId=SA_API'; //Change this if you want to use another user then the standard API service account
export var qlikServer   = null; // Here enter the websocket address for your Qlik Sense Server engine (default: wss://your.qlik.sense:4747/app/engineData)
export var qlikIsSrv    = false; //change this to true if you're connecting to a QS server
  1. Once you have certificates and config in place you should be ready to go and proceed with step 8.

  2. To start the webserver run npm run server in the command prompt from your project directory.

  3. Open http://localhost:1212 (or whatever port you used in the config above) in your browser and you should be good to go.

Functionality

Use the button at the top to cycle between import and repository view

Import master items after choosng an app and pressing Load basic Import

Manage and export master items from the repository view basic Export

Known Issues

  • When you use SA_API user with server, sometimes master items don't show for users. Use a real user from the directory in this case (app owner for example). In the future users will be able to choose which user they want to export for. Defaults to app owner or a window appears to provide user information

  • When using Qlik Sense Desktop and you exported an item to an app while the same app is open in a window: You have to refresh the page for the element to show up. Do not save before hitting F5.

Call for Support

If you're interested in contributing or collaborating on the project let me know. There are tons of ideas and possibilities and since I'm doing this in my free time I cannot possibly realise all of them :-)

Ideas

  • Add a management/settings view to handle connection and other properties
  • Choose which user to export the ite for on server (get app owner via QRS)
  • Validate expression syntax by choosing an app to validate in and then use API method. Could also validate before export to see if fields are available that are used
  • Replace original master item when exporting and object is present - this should update all dependent objects (thanks @dietler) - This should be done via ApplyPatches() method

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.