翻譯|使用教程|編輯:況魚杰|2020-11-02 10:42:21.127|閱讀 260 次
概述:本文將會介紹Enigma.js,它是一個可幫助您與Qlik QIX Engine通信的庫。其中有一項很酷的功能是,它允許您編寫自己的mixins來擴展或覆蓋您一直使用的Qlik對象上的方法。這篇文章將教你mixin的基礎(chǔ)知識,并向你展示如何實現(xiàn)自己的。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
真正的現(xiàn)代分析時代始于經(jīng)典的QlikView分析解決方案的發(fā)布,以及基于它的改變游戲規(guī)則的關(guān)聯(lián)引擎。它徹底改變了組織使用直觀可視化發(fā)現(xiàn)使用數(shù)據(jù)的方式,從而使商業(yè)智能比以往任何時候都多。而且,我們將繼續(xù)借助下一代分析平臺Qlik Sense引領(lǐng)這一潮流。借助關(guān)聯(lián)引擎,強大的增強智能和受管的多云架構(gòu),它支持企業(yè)任何規(guī)模的分析場景。
本文將會介紹Enigma.js,它是一個可幫助您與Qlik QIX Engine通信的庫。其中有一項很酷的功能是,它允許您編寫自己的mixins來擴展或覆蓋您一直使用的Qlik對象上的方法。這篇文章將教你mixin的基礎(chǔ)知識,并向你展示如何實現(xiàn)自己的。
	
如果您想查看最終產(chǎn)品,這是完成的存儲庫://github.com/coolinmc6/enigma-mixins-tutorial。如果您想繼續(xù),請克隆倉庫并檢出“開始”分支`git checkout -b start`以便從頭開始。
希望您熟悉典型的Enigma配置(//community.qlik.com/t5/Qlik-Design-Blog/Qlik-Engine-and-Picasso-js/ba-p/1706241),因為這是必須在mixin所在的位置包括在內(nèi)。對于第一個mixin和我們將要編寫的其他mixin,需要創(chuàng)建一個單獨的mixin文件,以保持代碼干凈。然后主要在該mixin文件和?index.js`中工作。
首先,在您的`/ config`目錄中創(chuàng)建一個單獨的文件,名為`mixins.js`。復(fù)制下面的代碼,然后開始:
// mixins.js
const docMixin = {
  types: ['Doc'],
  init(args) {},
  extend: {
    myMixin() {
        console.log('myMixin was called - this is all it does');
    },
  }
}
export {
  docMixin,
};
將您的mixin添加到配置文件?app.js`中:
// app.js
import { docMixin } from './mixins';
// CODE
export default enigma.create({ 
  schema, url, mixins: [docMixin] // add docMixin
}).open().then(global => global.openDoc(config.appId));
現(xiàn)在,在index.js文件中,只需執(zhí)行以下操作即可調(diào)用mixin:?app.myMixin()`。 如果您檢查控制臺,則會看到我們輸入的console.log消息; 您剛完成第一次Mixin。
注意:Mixin對象應(yīng)具有類型屬性,以指示您正在修改的Qlik對象(例如Doc,GenericObject,GenericBookmark等)。對于第一個Mixin,將修改Doc類。接下來是?init(args)`方法,該方法在初始化mixin時運行一些代碼。最后,有兩個屬性:“ extend”和“ override”。 顧名思義,“ extend”將向Qlik Object添加方法,而“ override”將覆蓋現(xiàn)有的Qlik Object方法。本教程將主要側(cè)重于擴展Qlik Objects的功能。
	
 
現(xiàn)在,已經(jīng)用擴展Doc對象的單個方法創(chuàng)建了第一個mixin,然后逐步提高并編寫一種獲取超立方體數(shù)據(jù)的方法。這種方法的重點是為我們完成Qlik QIX Engine的所有工作。此方法位于Doc類上,因此在我們的代碼中,我們可以像下面這樣在“ myMixin()”代碼下面編寫該方法:
// mixins.js
const docMixin = {
  types: ['Doc'],
  init(args) {},
  extend: {
    myMixin() {
        console.log('myMixin was called - this is all it does');
    },
    mGetData({ object }) {
      return new Promise((res) => {
        this.createSessionObject(object).then((obj) => {
          console.log(obj)
          obj.getLayout().then((layout) => {
            const data = layout.qHyperCube.qDataPages;
            res(data);
          })
        })
      })
    },
  }
}
export {
  docMixin,
};
在index.js文件中,我們將調(diào)用該方法并提供一個超立方體。復(fù)制以下超多維數(shù)據(jù)集和代碼以調(diào)用該方法:
// index.js
const hypercube = {
  qInfo: { qId: 'Sales by Year', qType: 'data'},
  qHyperCubeDef: {
    qDimensions: [
      // { qDef: { qFieldDefs: ['[Country]']} },
      { qDef: { qFieldDefs: ['[Product Group Desc]']} }
    ],
    qMeasures: [
      { qDef: { qDef: 'SUM([Sales Margin Amount])'}, },
    ],
    qInitialDataFetch: [{
      qTop: 0, qLeft: 0, qWidth: 10, qHeight: 1000,
    }],
    qInterColumnSortOrder: [],
    qSuppressZero: true,
    qSuppressMissing: true,
  }
}
// CODE
(async () => {
  const app = await appPromise;
  app.myMixin()
  const data = await app.mGetData({ object: hypercube })
  console.log(data)
})()
在控制臺中,您會發(fā)現(xiàn)那里還有兩個日志。第一個是剛剛創(chuàng)建的會話對象(并且您可能太熟悉了)。 第二個是在JavaScript數(shù)組中請求的數(shù)據(jù)。它仍然處于Qlik格式中,如果您只想查看數(shù)據(jù),可能需要進行更多清理,但是請注意,現(xiàn)在可以輕松地為您可能編寫的任何超立方體請求數(shù)據(jù)。現(xiàn)在可以避免不得不一遍又一遍地編寫所有代碼的步驟,而只需使用我們新的`mGetData()`方法。
	
Qlik的愿景是一個數(shù)據(jù)素養(yǎng)的世界,每個人都可以使用數(shù)據(jù)來改善決策并解決他們最具挑戰(zhàn)性的問題。只有Qlik提供端到端的實時數(shù)據(jù)集成和分析解決方案,以幫助組織訪問所有數(shù)據(jù)并將其轉(zhuǎn)化為價值。Qlik幫助企業(yè)領(lǐng)導(dǎo)數(shù)據(jù),以更深入地了解客戶行為,重塑業(yè)務(wù)流程,發(fā)現(xiàn)新的收入流以及平衡風(fēng)險和回報。
想要了解更多有關(guān)Qlik的資訊,歡迎咨詢在線客服>>
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:Qlik