Enigma-dart - cross-platform (for use in server and browser), fully typed dart client for Qlik Assosiative Engine

Examples are

To run examples you must accept the Qlik Core EULA by setting the ACCEPT_EULA environment variable and run qlikcore/engine

$ ACCEPT_EULA=yes docker-compose up -d

Simple example:

import 'package:web_socket_channel/io.dart';
import 'package:enigma/enigma.dart';

const loadScript = '''
RecNo() as ID,
Rand() as Value
AutoGenerate 100

main() async {  
  var channel = new IOWebSocketChannel.connect('ws://localhost:19076/app');
  var enigma = new Enigma(channel);
  var global = enigma.open();
  var doc = await global.createSessionApp();
  await doc.setScript(loadScript);
  await doc.doReload();
  var properties = new GenericObjectProperties((b) => b
    ..info.type = 'my-straight-hypercube'
        .add(new NxDimension((b) => b..def.fieldDefs.add('ID')))
        .add(new NxMeasure((b) => b..def.def = '=Sum(Value)'))
    ..hyperCubeDef.initialDataFetch.add(new NxPage((b) => b
      ..height = 5
      ..width = 2)));
  var object = await doc.createObject(properties);
  var layout = await object.getLayout();
  print('Hypercube data pages: ${layout.hyperCube.dataPages}');
  await object.selectHyperCubeCells('/qHyperCubeDef', [0, 2, 4], [0]);
  print('After selection (notice the `qState` values)');
  layout = await object.getLayout();
  print('Hypercube data pages: ${layout.hyperCube.dataPages}');

  await enigma.close();