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. python血脉贲张的cosplay小姐姐图片

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本环境配置 python 3.6 pycharm requests 相关模块pip安装即可 ...

  2. 垃圾回收器(GC)

    分类 针对hotSpot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC) 部分收集:不是完整收集整个Java堆的垃圾收集 ...

  3. 前端性能测试工具之PageSpeed Insights

    谷歌开发的一个免费的网页分析工具,在地址栏中输入被分析的网站 url 地址,点击分析 地址:https://developers.google.cn/speed/pagespeed/insights/ ...

  4. python环境变量的安装与配置

    安装最新的3.x(2.x如今已经不常见) 下图来源:百度(电脑已安装,不能重复) 一定要勾选"Add Python 3.6 to PATH".(如果没有勾选在安装完成后需要手动添加 ...

  5. C++练习案例1.计算机类(利用多态实现)

    c++简单计算机类 简介 大家好,这里是天天like的博客,这是我发的第一篇随笔,用来记录我的学习日程,大家可以相互学习,多多交流,感谢 今天我要记录的随笔是在学习c++多态的知识点练习改进的一个案例 ...

  6. MySQL 8.0索引合并

    简介 参考https://dev.mysql.com/doc/refman/8.0/en/index-merge-optimization.html#index-merge-intersection. ...

  7. Python正则表达式 re.sub()函数:标志位flags与参数个数问题

    这两天在写爬虫程序,涉及英文文本处理,需要规范化英文标点符号的写法.正常情况下,英文句号「.」后面需要保证有且只有一个空格,但也有例外情况,比如「i.e.」.「e.g.」.「P.S.」这种.由于无法预 ...

  8. 部署项目到服务器 & 搭建博客网站

    搭建博客网站 作为名程序员,或者是网络编程爱好者,拥有一个自己的博客网站再好不过,本篇文章手把手教你部署自己的网站

  9. Unity Shader 00 - 梳理 Unity Shader 的基本结构

    0x00 写在前面 之前一直在阅读 The Book of Shaders 一书,为什么会开始写 Unity Shader 呢?一方面,因为该书目前尚未完结,写下此文时已阅读到该书的最新章节:另一方面 ...

  10. 【比赛记录】8.21 div2

    A 选择一个点\(B(x,0)\)使得\(|dis(A,B)-x|=k.\) 题目实际上就是找到一个最接近\(n\)的数,使得它可以分成两个数\(a,b,\)使\(a-b=k.\) 我们考虑先分成一个 ...