date: 2018-12-21 12:33:29

updated: 2018-12-21 12:33:29

Qlik Sense学习笔记之Mashup开发(一)

1.基于Qlik Sense API的Mashup开发

  1. Capability API

    一定程度上对应了鼠标所能做到的所有操作或功能

  2. 开发工具

    • Qlik Sense dev-hub Mashup Editor
    • Text Editor
      • Notepad++
      • Sublime
    • IDE
      • Visual Studio Code
      • Web Storm
      • Eclipse

2.Mashup基础代码分析

  1. Project

    • XXX.html

    • XXX.js

    • XXX.css

    • XXX.qext

    qlik文件,用来概括mashup的一些基本信息,比如名称,版本,有什么依赖等。

    • wbfolder.wbl

    当前mashup有什么文件,有哪些文件是可以在Mashup Editor中罗列出来再次被编辑的。通过Sense go插件可以自动生成。

  2. Require JS

    1. 新建一个mashup,在head中自动引入了require.js文件
    2. <script src="../../resources/assets/external/requirejs/require.js"></script>
    3. 针对qlik sense的异步调用,优化后的一个require版本
    4. 可以通过依赖的形式将需要的js文件注入进来,是lazy load的一种方式,只有用到的时候以后才会引入
  3. Qlik-style.css

    1. 新建一个mashup,在head中自动引入了Qlik-style.css文件
    2. <link href="../../resources/autogenerated/qlik-styles.css" rel="stylesheet">
    3. 保证object拖动之后渲染效果与图表原先效果保持一致
    4. 可以覆写这个文件来尝试修改图表样式

3.Mashup开发技巧

  1. Qlik Sense Desktop

    在Document--Qlik--Sense--Extensions下可以找到Qlik Sense Desktop中的工程目录,以及相关的文件,可以自由增删文件,并可以立即调用

  2. Qlik 文档

    点击下面的Developer,在最左面有一个 API reference

  3. Sense-go

    辅助开发插件,只需要设置一下项目名称、版本号、目标输出目录,其他的会自动监听文件变化,并自动编译到目标输出目录中

  4. Qlik Sense Developer Mode

    1. 开发中调用图表,是通过 id 去获取调用。
    2. 第一种方式:可以从dev-hub中的Single Configuration中查看
    3. 第二种方式:针对这个页面,可以从页面中查看
    4. http://域名/sense/app/515fc2f7-7779-4d78-b355-250814d16b17/sheet/6d79d8f2-9314-4718-8d48-ff63b72acc21/state/analysis
    5. 把/state/analysis修改成/options/developer,然后右键点击图表可以看到 Developer 选项,可以查看object的id还有其中的数据、结构如何。
  5. 引入第三方类库

    1. 如果是css文件的话可以直接在head中引入
    2. 但是如果是js文件的话,因为一次性加入的js文件可能过多导致第一次进入太卡,所以放在 app.js 文件 require 函数中统一载入。
    3. 即 第一次进入时先出现loading页面,这个时候载入相关文件和数据
  6. ID 变与不变

    1. 如果复制了一个chart,那两个chart的id
    2. 但是如果是删除一个chart,然后再重新写一个一样的chart,id会自动改变
    3. 比如现在有一个piechart,现在想用barchart,但是以后可能还会用piechart,最好是复制一个,然后将其中一个piechart点击右键通过convert转换成barchart
    4. 可以在js文件夹下创建一个map.js文件,专门存放 objname -- objid,或者写一个json文件,这样可以保证修改时不会重新编译整个项目

4.Mashup安装与管理

  1. QMC – Qlik Management Console

  2. Export / Import

  3. 多版本处理

    修改qext文件中的name,重新导入时候就会区分开

  4. Qlik Branch

5.Mashup 最常用的 Qlik API – Capability API

因为qlik传递的信息是单节点信息,没有办法绑定js的event事件,所以无法判断传递的数据类型以及根据数据传递事件做出相应的事情。所以需要通过API来获取数据。

  • Root API

    1. 返回高于APP层级的信息,通过getAppList可以返回当前用户有多少app,app有什么信息。
    2. openApp:打开一个app,之后才能继续使用APP API
    3. resize:Qlik Sense虽然可以自适应,但是如果想把一个chart放到一个div中 ,同时用户可以对div进行拖动放大放小,这时没有触发浏览器的resize,所以就需要resize这个api来辅助实现自适应。
    4. sessionApp:如果说想做一个app,让用户可以点进来看,但是用户所有的操作做出的改动不想保留下来,可以使用sessionApp
    5. setDeviceType:可以强行设置'auto'、'touch'、'desktop',若未设置则自动检测
    6. table:能够直接将app中的数据变换成table输出
  • App API

    1. clearAll:清空选项
    2. getObjectProperties:通过传参(appid)获取到chart数据,并进行二次开发
    3. getObject:直接将app渲染到div中
  • Bookmark API

    可以存储当前的选择信息,类似于宏操作,可以保留历史

  • Field API

    1. QField -> select:因为Qlik Sense中做筛选是在字段上做的,所以所用到的select是在QField下的select方法中,添加字段名称,以及想要选择的下标索引,以及是否需要重新覆写上一次的选择。
    2. QField -> selectAlternative:互斥选择。选择当前选择的所有其他选项。
    3. 选择的时候有四种颜色:绿色表示当前选择的,白色表示与当前选择相关的选项,深灰色表示不可选,灰色表示可选。白色的可以通过selectPossible方法来选择。
    4. QField -> selectValues:不知道选项下标,直接传入value,帮助选择
  • Global API

    用于返回Qlik Sense基本信息,如版本号,server信息,运行状态等

  • Table API

  • Navigation API

  • Selection API

    1. 专注于当前app中选择的选项,选择的状态等,是基于QField中的select方法的。
    2. 通过对app.selectionState().onData.bind(listener)进行绑定监听,获取当前选中 的选项信息,可以进行下一步的跳转或者其他事件。
  • Variable API

  • Visualization API

    1. 在app的dataModel基础上,通过create方法可以生成新的图表,或者通过get方法拿到一个图表,在其渲染之前进行一些数据判断或再次筛选。类似于预读功能,先读入配置,等需要渲染的时候再渲染。
    2. Options:可以获取某一些图表的properties,并可进行适当的替换,所作出的操作不会影响原始数据和图表。

6.Mashup 客户端 API

  1. Capability API

  2. Extension API / Backend API

  3. URL Integration (Single Object /App)

    每一个object在single configuration中可以直接复制url地址粘贴在浏览器直接打开,单独占一个websocket,同时可以设置opt=nointeraction(无法选择进行交互)或者删除这一句话来使用户可以选择其中的某一项。

7.Qlik 服务端 API

  1. Engine API

    • Enigma.js
    • .NET SDK
  2. QRS API (Qlik Repository Service API)

    1. 删除app 修改app 上传文件 etc
    2. 需要保证header中的X-Qlik-Xrfkey 16位字符串与参数是一样
    3. 可以查看QRS API endpoints (subset)
  3. QPS API (Qlik Proxy API)

    1. 可以拿到ticket,通过ticket获取一个session,再与Qlik进行交互
  4. UDC API (User Directory Connector API)

8.Qlik 扩展 API

  1. Customer Connector (QVX)

  2. ODAG API (on demand app generation)

  3. SSE (Server side extension)

  4. Leonardo UI

  5. Picasso Chart Lib

Qlik Sense学习笔记之Mashup开发(一)的更多相关文章

  1. Qlik Sense学习笔记之Mashup开发(二)

    date: 2019-01-26 11:28:07 updated: 2019-01-26 11:28:07 Qlik Sense学习笔记之Mashup开发(二) 1.Mobile SPA UI Fr ...

  2. Qlik Sense学习笔记之插件开发

    date: 2019-05-06 13:18:45 updated: 2019-08-09 15:18:45 Qlik Sense学习笔记之插件开发 1.开发前的基础工作 1.1 新建插件 dev-h ...

  3. Android(java)学习笔记219:开发一个多界面的应用程序之两种意图

    1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...

  4. APPCAN学习笔记003---原生开发与HTML5技术

    APPCAN学习笔记003---原生开发与HTML5技术 技术qq交流群:JavaDream:251572072 1.HTML5的优势:   HTML5强悍牢固的骨架   CSS3精致到每一个毛孔的皮 ...

  5. APPCAN学习笔记001---app高速开发AppCan.cn平台概述

    1.APPCAN学习笔记---app高速开发AppCan.cn平台概述 1. 平台概述 技术qq交流群:JavaDream:251572072 AppCan.cn开发平台是基于HTML5技术的跨平台移 ...

  6. Hadoop学习笔记(4) ——搭建开发环境及编写Hello World

    Hadoop学习笔记(4) ——搭建开发环境及编写Hello World 整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclip ...

  7. Android(java)学习笔记162:开发一个多界面的应用程序之两种意图

    1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...

  8. jsp学习笔记:mvc开发模式

    jsp学习笔记:mvc开发模式2017-10-12 22:17:33 model(javabe)与view层交互 view(视图层,html.jsp) controller(控制层,处理用户提交的信息 ...

  9. JavaSE 学习笔记01丨开发前言与环境搭建、基础语法

    本蒟蒻学习过C/C++的语法,故在学习Java的过程中,会关注于C++与Java的区别.开发前言部分,看了苏星河教程中的操作步骤.而后,主要阅读了<Java核心技术 卷1 基础知识>(第8 ...

随机推荐

  1. C# 中居然也有切片语法糖,太厉害了

    一:背景 1. 讲故事 昨天在 github 上准备找找 C# 9 又有哪些新语法糖可以试用,不觉在一个文档上看到一个很奇怪的写法: foreach (var item in myArray[0..5 ...

  2. 关于KeePass实现ssh协议的自动登录

    本文主要介绍一下,在keepass中如何实现linux主机的ssh方式的自动登录 keepass版本:KeePass 2.45 在keepass的URL中,其实默认也是内置了ssh的,其原理是调用pu ...

  3. 听我的,看完这30道MySQL基础题再去面试

    可以微信搜索公众号「 后端技术学堂 」回复「1024」获取50本计算机电子书,回复「进群」拉你进读者技术交流群,文章每周持续更新,我们下期见! 一个典型的互联网产品架构包含接入层.逻辑处理层以及存储层 ...

  4. 双向最大匹配算法——基于词典规则的中文分词(Java实现)

    目录 一.中文分词理论描述 二.算法描述 1.正向最大匹配算法 2.反向最大匹配算法 3.双剑合璧 三.案例描述 四.JAVA实现完整代码 五.组装UI 六.总结 前言 这篇将使用Java实现基于规则 ...

  5. sping cloud入门

    可以参考原文 https://www.cnblogs.com/sam-uncle/archive/2018/04/25/8943471.html 注册服务 https://www.cnblogs.co ...

  6. zeroc ICE 使用案例

    此处案例将ICE接口当做单servant使用(ICE自带端口复用的多servant,过于复杂,此处不讨论) 使用ICE较为方便的地方时 可以编写 ice中间代码,然后由官方工具转换为目标平台代码(通过 ...

  7. Centos-修改文件访问和修改时间-touch

    touch 如果文件存在,则改变文件的访问时间和修改时间,如果不存在则创建一个空文件 相关选项 -a   更改文件访问时间为当前系统时间 -m     更改文件修改时间为当前系统时间 -c   如果文 ...

  8. vant实现下拉多选组件

    1.最近需要做一个移动端多选的功能,发现vant上没有多选的下拉组件,于是决定写一个,样式如下 调用部分传入值 propsselect-data-opts 传入list数据, disabled 下拉是 ...

  9. Tensorflow学习笔记No.7

    tf.data与自定义训练综合实例 使用tf.data自定义猫狗数据集,并使用自定义训练实现猫狗数据集的分类. 1.使用tf.data创建自定义数据集 我们使用kaggle上的猫狗数据以及tf.dat ...

  10. elk-安装 通过docker

      一. github地址   https://github.com/deviantony/docker-elk   cd /usr/local/src   git clone https://git ...