本發(fā)明涉及數(shù)據(jù)展示技術(shù)領(lǐng)域,更具體地,涉及一種數(shù)據(jù)展示圖表生成方法及系統(tǒng)。
背景技術(shù):
目前,隨著互聯(lián)網(wǎng)移動(dòng)端的多樣化發(fā)展和產(chǎn)品對(duì)用戶體驗(yàn)的不懈追求,很多app中都運(yùn)用了絢麗多彩的圖表。對(duì)于一些需要展示大量數(shù)據(jù)的app,如股市波動(dòng)類,天氣變化類等一些依靠數(shù)據(jù)展示說(shuō)話的app,圖表的應(yīng)用無(wú)疑會(huì)讓繁雜枯燥的數(shù)據(jù)變得生動(dòng),在簡(jiǎn)單直觀的反映內(nèi)容的同時(shí),還能提高app的美觀和用戶的體驗(yàn)。但是目前,在移動(dòng)端開(kāi)發(fā)圖表的方法,大多是基于原生的框架,如ios端常用的shlinegraphview,通過(guò)圖層和調(diào)用c語(yǔ)言函數(shù),點(diǎn)、線、面一點(diǎn)點(diǎn)畫(huà)出來(lái)的,耗時(shí)耗力,且擴(kuò)展性一點(diǎn)都不好,嚴(yán)重影響開(kāi)發(fā)效率。
現(xiàn)有技術(shù)解決方案使用開(kāi)源的前端圖表庫(kù),在解決圖表展示app開(kāi)發(fā)效率和擴(kuò)展性的同時(shí),還能在不發(fā)布新版本的前提下動(dòng)態(tài)修改需求,開(kāi)發(fā)效率大大提高,用戶體驗(yàn)也不遜于原生的。
然而,上述現(xiàn)有技術(shù)存在以下問(wèn)題:移動(dòng)終端app對(duì)于圖表文件的多次加載容易對(duì)外暴露app內(nèi)置程序中所包含函數(shù)的細(xì)節(jié),容易造成各函數(shù)間的耦合;同時(shí)多次的對(duì)于圖表文件的加載所對(duì)應(yīng)的代碼量也會(huì)增加,當(dāng)需要修改加載方法或需要加載圖表模板文件地址時(shí)的代碼修改量比較繁重。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明為克服上述問(wèn)題或者至少部分地解決上述問(wèn)題,提供一種數(shù)據(jù)展示圖表生成方法及系統(tǒng)。
根據(jù)本發(fā)明的一個(gè)方面,提供一種數(shù)據(jù)展示圖表生成方法,包括:
步驟1,獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息,將所述圖表模板路徑信息字符串進(jìn)行編碼轉(zhuǎn)換;將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息;獲取所述待生成數(shù)據(jù)展示圖表的圖表模板的存儲(chǔ)路徑信息;
步驟2,根據(jù)所述url路徑信息和存儲(chǔ)路徑信息加載所述待生成數(shù)據(jù)展示圖表的圖表模板;
步驟3,將待展示數(shù)據(jù)信息載入所述圖表模板中,生成數(shù)據(jù)展示圖表,將所述數(shù)據(jù)展示圖表在所述用戶移動(dòng)終端進(jìn)行展示。
根據(jù)本發(fā)明的另一個(gè)方面,提供一種數(shù)據(jù)展示圖表生成系統(tǒng),包括獲取模塊、加載模塊和展示模塊:
所述獲取模塊與所述加載模塊相連,用于獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息,將所述圖表模板路徑信息字符串進(jìn)行編碼轉(zhuǎn)換;將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息;獲取所述待生成數(shù)據(jù)展示圖表的圖表模板的存儲(chǔ)路徑信息;
所述加載模塊分別與所述獲取模塊、展示模塊相連,用于根據(jù)所述url路徑信息和存儲(chǔ)路徑信息加載所述待生成數(shù)據(jù)展示圖表的圖表模板;
所述展示模塊與所述加載模塊相連,用于將待展示數(shù)據(jù)信息載入所述圖表模板中,生成數(shù)據(jù)展示圖表,將所述數(shù)據(jù)展示圖表在所述用戶移動(dòng)終端進(jìn)行展示。
本申請(qǐng)?zhí)岢鲆环N數(shù)據(jù)展示圖表生成方法及系統(tǒng),將加載待生成數(shù)據(jù)展示圖表的圖表模板用一個(gè)公共的方法進(jìn)行實(shí)現(xiàn),上述方法實(shí)現(xiàn)了對(duì)表格模板路徑的拼接,最少可能的暴露了函數(shù)細(xì)節(jié),從而降低耦合,同時(shí),上述方法只需要外面?zhèn)魅胍粋€(gè)路徑,就可以方便快捷的實(shí)現(xiàn)對(duì)于圖表模板文件的多次讀取調(diào)用,從而減少了編程代碼量,當(dāng)發(fā)生需求改變時(shí),從而起到對(duì)加載方法修改更加便捷的有益效果。
附圖說(shuō)明
圖1為根據(jù)本發(fā)明實(shí)施例一種數(shù)據(jù)展示圖表生成方法的整體流程示意圖;
圖2為根據(jù)本發(fā)明實(shí)施例一種數(shù)據(jù)展示圖表生成系統(tǒng)的整體框架示意圖;
圖3為根據(jù)本發(fā)明實(shí)施例一種數(shù)據(jù)展示圖表生成方法的測(cè)試設(shè)備整體框架示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說(shuō)明本發(fā)明,但不用來(lái)限制本發(fā)明的范圍。
目前,隨著互聯(lián)網(wǎng)移動(dòng)端的多樣化發(fā)展和產(chǎn)品對(duì)用戶體驗(yàn)的不懈追求,很多app中都運(yùn)用了絢麗多彩的圖表。對(duì)于一些需要展示大量數(shù)據(jù)的app,如股市波動(dòng)類,天氣變化類等一些依靠數(shù)據(jù)展示說(shuō)話的app,圖表的應(yīng)用無(wú)疑會(huì)讓繁雜枯燥的數(shù)據(jù)變得生動(dòng),在簡(jiǎn)單直觀的反映內(nèi)容的同時(shí),還能提高app的美觀和用戶的體驗(yàn)。但是目前,在移動(dòng)端開(kāi)發(fā)圖表的方法,大多是基于原生的框架,如ios端常用的shlinegraphview,通過(guò)圖層和調(diào)用c語(yǔ)言函數(shù),點(diǎn)、線、面一點(diǎn)點(diǎn)畫(huà)出來(lái)的,耗時(shí)耗力,且擴(kuò)展性一點(diǎn)都不好,嚴(yán)重影響開(kāi)發(fā)效率。
現(xiàn)有技術(shù)解決方案使用開(kāi)源的前端圖表庫(kù),在解決圖表展示app開(kāi)發(fā)效率和擴(kuò)展性的同時(shí),還能在不發(fā)布新版本的前提下動(dòng)態(tài)修改需求,開(kāi)發(fā)效率大大提高,用戶體驗(yàn)也不遜于原生的。然而,上述現(xiàn)有技術(shù)存在以下問(wèn)題:移動(dòng)終端app對(duì)于圖表文件的多次加載容易對(duì)外暴露app內(nèi)置程序中所包含函數(shù)的細(xì)節(jié),容易造成各函數(shù)間的耦合;同時(shí)多次的對(duì)于圖表文件的加載所對(duì)應(yīng)的代碼量也會(huì)增加,當(dāng)需要修改加載方法或需要加載圖表模板文件地址時(shí)的代碼修改量比較繁重。
如圖1所示,本發(fā)明第一個(gè)實(shí)施例提供一種數(shù)據(jù)展示圖表生成方法整體流程示意圖??傮w上,包括以下步驟:步驟1,獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息,將所述圖表模板路徑信息字符串進(jìn)行編碼轉(zhuǎn)換;將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息;獲取所述待生成數(shù)據(jù)展示圖表的圖表模板的存儲(chǔ)路徑信息;步驟2,根據(jù)所述url路徑信息和存儲(chǔ)路徑信息加載所述待生成數(shù)據(jù)展示圖表的圖表模板;步驟3,將待展示數(shù)據(jù)信息載入所述圖表模板中,生成數(shù)據(jù)展示圖表,將所述數(shù)據(jù)展示圖表在所述用戶移動(dòng)終端進(jìn)行展示。
上述具體實(shí)施例存在以下有益效果:所述用戶移動(dòng)終端app在運(yùn)行過(guò)程中難免多次對(duì)于所述圖表模板文件進(jìn)行多次調(diào)用,上述具體實(shí)施例將調(diào)用圖表模板文件的過(guò)程抽象成一個(gè)公共的方法,根據(jù)圖表模板文件的路徑信息,實(shí)現(xiàn)了對(duì)于圖表模板文件存儲(chǔ)路徑的拼接,起到了最少的暴露函數(shù)細(xì)節(jié),降低函數(shù)間耦合的有益效果;同時(shí),通過(guò)這個(gè)公共的方法只需要外面?zhèn)魅胍粋€(gè)存儲(chǔ)路徑,就可以方便快捷的讀取圖表模板文件,這樣的做法減少了代碼量,當(dāng)需要對(duì)于app內(nèi)調(diào)用請(qǐng)求進(jìn)行修改時(shí),可以有效減少修改加載方法或者更換加載方法的代碼修改量。
在本發(fā)明另一個(gè)具體實(shí)施例中,提供一種數(shù)據(jù)展示圖表生成方法,所述圖表模板為利用外部圖表庫(kù)生成。
目前,用戶移動(dòng)端圖表生成的方法,還存在不少是基于所述用戶移動(dòng)終端內(nèi)原生操作系統(tǒng)的框架體系,例如ios端常用的shlinegraphview,在圖表生成時(shí)通過(guò)圖層和調(diào)用c語(yǔ)言函數(shù),點(diǎn)、線、面一點(diǎn)點(diǎn)畫(huà)出來(lái)的,耗時(shí)耗力,且擴(kuò)展性一點(diǎn)都不好,嚴(yán)重影響開(kāi)發(fā)效率。而本具體實(shí)施例使用開(kāi)源的前端圖表庫(kù),例如echarts,在解決移動(dòng)端圖表生成效率和方法代碼擴(kuò)展性的同時(shí),還能在不發(fā)布新版本的前提下動(dòng)態(tài)修改需求,開(kāi)發(fā)效率大大提高,用戶體驗(yàn)也不遜于原生的。因此使用外部圖表庫(kù)進(jìn)行用戶移動(dòng)端圖表的生成可以有效的解決圖表生成方法中的快速開(kāi)發(fā)問(wèn)題。
在本發(fā)明另一個(gè)具體實(shí)施例中,提供一種數(shù)據(jù)展示圖表生成方法,所述圖表模板存儲(chǔ)在所述用戶移動(dòng)終端或遠(yuǎn)程服務(wù)器上。
加載圖表模板文件的方式有兩種,一種是將圖表模板文件放在用戶移動(dòng)終端本地,從本地加載;另一種是直接從遠(yuǎn)程服務(wù)器上進(jìn)行加載。這兩種加載方法的不同主要體現(xiàn)在url地址上,從遠(yuǎn)程服務(wù)器動(dòng)態(tài)加載圖表模板文件,其url地址是一個(gè)網(wǎng)址,好處是app發(fā)布后可以在線更改圖表模板而不需要用戶移動(dòng)端有任何更改,其不足是圖表加載完成的速度取決于網(wǎng)速,網(wǎng)速較慢時(shí)比較耗時(shí)甚至加載失敗,用戶體驗(yàn)不是很好。而從本地加載就克服了耗時(shí)和用戶體驗(yàn)的問(wèn)題,其url是本地資源文件的路徑,圖表模板文件存放在本地的資源文件中。本地加載圖表的缺陷是不能動(dòng)態(tài)修改,一旦app發(fā)布后,圖表的更改只能在新的版本中完成,且前端修改圖表后,移動(dòng)端也得使用新的圖表模板文件替換之前的圖表模板文件。選擇哪種方式加載圖表,應(yīng)根據(jù)產(chǎn)品的具體需求。如果當(dāng)前的需求比較穩(wěn)定,后期改動(dòng)圖表的可能性較小,建議從本地加載;反之如果需求不是很穩(wěn)定,圖標(biāo)需要經(jīng)常動(dòng)態(tài)變化,就建議從網(wǎng)頁(yè)加載。
在本發(fā)明另一個(gè)具體實(shí)施例中,提供一種數(shù)據(jù)展示圖表生成方法,所述步驟將所述圖表模板路徑信息字符串進(jìn)行編碼轉(zhuǎn)換還包括:將所述圖表模板路徑信息字符串進(jìn)行utf8編碼轉(zhuǎn)換。
在本發(fā)明另一個(gè)具體實(shí)施例中,提供一種數(shù)據(jù)展示圖表生成方法,所述步驟1前還包括,在所述用戶移動(dòng)終端中創(chuàng)建視覺(jué)控件;設(shè)置所述視覺(jué)控件的背景顏色。
上述具體實(shí)施例的具體實(shí)現(xiàn)過(guò)程如下:創(chuàng)建webview,添加到相應(yīng)頁(yè)面的view上,webview的大小,根據(jù)ui標(biāo)注的圖表大小和位置確定。使用webview.backgroundcolor=[uicolorclearcolor];設(shè)置創(chuàng)建的webview的背景顏色。
在本發(fā)明另一個(gè)具體實(shí)施例中,提供一種數(shù)據(jù)展示圖表生成方法,所述步驟獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息還包括:在ios操作系統(tǒng)的用戶移動(dòng)終端中,利用方法stringwithcontentsoffile獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息;在android為操作系統(tǒng)的用戶移動(dòng)終端中,利用方法getcontent獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息。
在ios操作系統(tǒng)的用戶移動(dòng)終端中,具體實(shí)施例的具體實(shí)現(xiàn)過(guò)程如下:nsstring*htmlstring=[nsstringstringwithcontentsoffile:pathencoding:nsutf8stringencodingerror:nil];,同時(shí),獲取得路徑需要nsutf8stringencoding編碼。將所述圖表模板路徑信息進(jìn)行nsutf8stringencoding編碼是為了有效的防止圖表模板路徑信息字符串中亂碼的生成。
在本發(fā)明另一個(gè)具體實(shí)施例中,提供一種數(shù)據(jù)展示圖表生成方法,所述步驟將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息還包括:在ios操作系統(tǒng)的用戶移動(dòng)終端中,利用方法fileurlwithpath:basepath將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息;在android操作系統(tǒng)的用戶移動(dòng)終端中,利用方法gethtmlstring將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息。
在ios操作系統(tǒng)的用戶移動(dòng)終端中,上述具體實(shí)施例的具體實(shí)現(xiàn)過(guò)程如下:在ios系統(tǒng)下,將獲得的路徑轉(zhuǎn)化為nsurl,nsurl*baseurl=[nsurlfileurlwithpath:basepath]。
在本發(fā)明另一個(gè)具體實(shí)施例中,提供一種數(shù)據(jù)展示圖表生成方法,所述步驟獲取所述待生成數(shù)據(jù)展示圖表的圖表模板的存儲(chǔ)路徑信息具體實(shí)現(xiàn)方式如下:在ios操作系統(tǒng)的用戶移動(dòng)終端中,使用函數(shù)nsstring*basepath=[[nsbundlemainbundle]bundlepath];獲得文件中存儲(chǔ)的html文件的路徑;在android操作系統(tǒng)的用戶移動(dòng)終端中,根據(jù)所述url路徑信息和存儲(chǔ)路徑信息,利用方法gethtmlstring加載所述待生成數(shù)據(jù)展示圖表的圖表模板。
在本發(fā)明另一個(gè)具體實(shí)施例中,提供一種數(shù)據(jù)展示圖表生成方法,所述步驟2還包括:在ios操作系統(tǒng)的用戶移動(dòng)終端中,根據(jù)所述url路徑信息和存儲(chǔ)路徑信息,利用方法htmlstring加載所述待生成數(shù)據(jù)展示圖表的圖表模板。
在ios操作系統(tǒng)的用戶移動(dòng)終端中,上述具體實(shí)施例的具體實(shí)現(xiàn)過(guò)程如下:使用[selfloadhtmlstring:htmlstringbaseurl:baseurl]去加載所述url路徑信息和存儲(chǔ)路徑信息,經(jīng)過(guò)這些就可以實(shí)現(xiàn)對(duì)html的加載。
在本發(fā)明另一個(gè)具體實(shí)施例中,提供一種數(shù)據(jù)展示圖表生成方法,所述步驟3中將待展示數(shù)據(jù)信息載入所述圖表模板還包括:在ios操作系統(tǒng)的用戶移動(dòng)終端中,利用方法stringbyevaluatingjavascriptfromstring將待展示數(shù)據(jù)信息載入所述圖表模板;在android操作系統(tǒng)的用戶移動(dòng)終端中,利用方法showhtmlstring將待展示數(shù)據(jù)信息載入所述圖表模板。
在ios操作系統(tǒng)的用戶移動(dòng)終端中,上述具體實(shí)施例的具體實(shí)現(xiàn)過(guò)程如下:通常,前端提供的都是一個(gè)圖表框架,具體的數(shù)據(jù)需要移動(dòng)端從后臺(tái)請(qǐng)求,然后調(diào)用前端提供的接口(如setdata方法)將數(shù)據(jù)注入。ios端注入數(shù)據(jù)只需要調(diào)用-(nullablensstring*)stringbyevaluatingjavascriptfromstring:(nsstring*)script方法即可完成。
使用蘋果ios中stringbyevaluatingjavascriptfromstring函數(shù)進(jìn)行注入,這個(gè)函數(shù)可以兼容ios7甚至更老的版本,注入方法簡(jiǎn)單,一行代碼就可以實(shí)現(xiàn),數(shù)據(jù)注入。
在本發(fā)明另一個(gè)具體實(shí)施例中,提供一種數(shù)據(jù)展示圖表生成方法,還包括:對(duì)于部分需要與用戶交互的圖表,可以調(diào)用context的exceptionhandler進(jìn)行交互,前端只需要知道實(shí)現(xiàn)交互的方法名(如sourceinfo),移動(dòng)端利用context調(diào)用該方法就好,交互過(guò)程中需要傳遞的參數(shù)通過(guò)block回調(diào)。其中context通過(guò)調(diào)用valueforkeypath:@"documentview.webview.mainframe.javascriptcontext"方法獲得。
上述具體實(shí)施例具有以下有益效果:使用javascriptcontext方法,獲取到context,獲得了context就獲得了實(shí)現(xiàn)了js和oc的交互的引擎,有了context后面的進(jìn)行數(shù)據(jù)處理就很方便。
如圖2所示,本發(fā)明又一個(gè)實(shí)施例一種數(shù)據(jù)展示圖表生成系統(tǒng)總體框架示意圖??傮w上,包括獲取模塊a1、加載模塊a2和展示模塊a3:
所述獲取模塊a1與所述加載模塊a2相連,用于獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息,將所述圖表模板路徑信息字符串進(jìn)行編碼轉(zhuǎn)換;將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息;獲取所述待生成數(shù)據(jù)展示圖表的圖表模板的存儲(chǔ)路徑信息;
所述加載模塊a2分別與所述獲取模塊a1、展示模塊a3相連,用于根據(jù)所述url路徑信息和存儲(chǔ)路徑信息加載所述待生成數(shù)據(jù)展示圖表的圖表模板;
所述展示模塊a3與所述加載模塊a2相連,用于將待展示數(shù)據(jù)信息載入所述圖表模板中,生成數(shù)據(jù)展示圖表,將所述數(shù)據(jù)展示圖表在所述用戶移動(dòng)終端進(jìn)行展示。
具體的,所述獲取模塊,還包括第一獲取單元、編碼單元和第二獲取單元,所述第一獲取單元用于獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息,將所述圖表模板路徑信息字符串進(jìn)行編碼轉(zhuǎn)換;將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息;所述第二獲取單元用于獲取所述待生成數(shù)據(jù)展示圖表的圖表模板的存儲(chǔ)路徑信息。
上述具體實(shí)施例存在以下有益效果:所述用戶移動(dòng)終端app在運(yùn)行過(guò)程中難免多次對(duì)于所述圖表模板文件進(jìn)行多次調(diào)用,上述具體實(shí)施例將調(diào)用圖表模板文件的過(guò)程抽象成一個(gè)公共的方法,根據(jù)圖表模板文件的路徑信息,實(shí)現(xiàn)了對(duì)于圖表模板文件存儲(chǔ)路徑的拼接,起到了最少的暴露函數(shù)細(xì)節(jié),降低函數(shù)間耦合的有益效果;同時(shí),通過(guò)這個(gè)公共的方法只需要外面?zhèn)魅胍粋€(gè)存儲(chǔ)路徑,就可以方便快捷的讀取圖表模板文件,這樣的做法減少了代碼量,當(dāng)需要對(duì)于app內(nèi)調(diào)用請(qǐng)求進(jìn)行修改時(shí),可以有效減少修改加載方法或者更換加載方法的代碼修改量。
在本發(fā)明另一個(gè)具體實(shí)施例中,一種數(shù)據(jù)展示圖表生成系統(tǒng),所述圖表模板為利用外部圖表庫(kù)生成。
目前,用戶移動(dòng)端圖表生成的方法,還存在不少是基于所述用戶移動(dòng)終端內(nèi)原生操作系統(tǒng)的框架體系,例如ios端常用的shlinegraphview,在圖表生成時(shí)通過(guò)圖層和調(diào)用c語(yǔ)言函數(shù),點(diǎn)、線、面一點(diǎn)點(diǎn)畫(huà)出來(lái)的,耗時(shí)耗力,且擴(kuò)展性一點(diǎn)都不好,嚴(yán)重影響開(kāi)發(fā)效率。
而本具體實(shí)施例使用開(kāi)源的前端圖表庫(kù),例如echarts,在解決移動(dòng)端圖表生成效率和方法代碼擴(kuò)展性的同時(shí),還能在不發(fā)布新版本的前提下動(dòng)態(tài)修改需求,開(kāi)發(fā)效率大大提高,用戶體驗(yàn)也不遜于原生的。因此使用外部圖表庫(kù)進(jìn)行用戶移動(dòng)端圖表的生成可以有效的解決圖表生成方法中的快速開(kāi)發(fā)問(wèn)題。
在本發(fā)明另一個(gè)具體實(shí)施例中,一種數(shù)據(jù)展示圖表生成系統(tǒng),所述圖表模板存儲(chǔ)在所述用戶移動(dòng)終端或遠(yuǎn)程服務(wù)器上。
加載圖表模板文件的方式有兩種,一種是將圖表模板文件放在用戶移動(dòng)終端本地,從本地加載;另一種是直接從遠(yuǎn)程服務(wù)器上進(jìn)行加載。這兩種加載方法的不同主要體現(xiàn)在url地址上,從遠(yuǎn)程服務(wù)器動(dòng)態(tài)加載圖表模板文件,其url地址是一個(gè)網(wǎng)址,好處是app發(fā)布后可以在線更改圖表模板而不需要用戶移動(dòng)端有任何更改,其不足是圖表加載完成的速度取決于網(wǎng)速,網(wǎng)速較慢時(shí)比較耗時(shí)甚至加載失敗,用戶體驗(yàn)不是很好。而從本地加載就克服了耗時(shí)和用戶體驗(yàn)的問(wèn)題,其url是本地資源文件的路徑,圖表模板文件存放在本地的資源文件中。本地加載圖表的缺陷是不能動(dòng)態(tài)修改,一旦app發(fā)布后,圖表的更改只能在新的版本中完成,且前端修改圖表后,移動(dòng)端也得使用新的圖表模板文件替換之前的圖表模板文件。選擇哪種方式加載圖表,應(yīng)根據(jù)產(chǎn)品的具體需求。如果當(dāng)前的需求比較穩(wěn)定,后期改動(dòng)圖表的可能性較小,建議從本地加載;反之如果需求不是很穩(wěn)定,圖標(biāo)需要經(jīng)常動(dòng)態(tài)變化,就建議從網(wǎng)頁(yè)加載。
在本發(fā)明另一個(gè)具體實(shí)施例中,一種數(shù)據(jù)展示圖表生成系統(tǒng),所述系統(tǒng)還包括創(chuàng)建模塊,與所述獲取模塊相連,用于在所述用戶移動(dòng)終端中創(chuàng)建視覺(jué)控件。上述具體實(shí)施例的具體實(shí)現(xiàn)過(guò)程如下:創(chuàng)建webview,添加到相應(yīng)頁(yè)面的view上,webview的大小,根據(jù)ui標(biāo)注的圖表大小和位置確定。
在本發(fā)明另一個(gè)具體實(shí)施例中,一種數(shù)據(jù)展示圖表生成系統(tǒng),所述創(chuàng)建模塊還用于設(shè)置所述視覺(jué)控件的背景顏色。上述具體實(shí)施例的具體實(shí)現(xiàn)過(guò)程如下:使用webview.backgroundcolor=[uicolorclearcolor];設(shè)置創(chuàng)建的webview的背景顏色。
在本發(fā)明另一個(gè)具體實(shí)施例中,一種數(shù)據(jù)展示圖表生成系統(tǒng),所述第一獲取單元還用于利用方法stringwithcontentsoffile獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息。
上述具體實(shí)施例的具體實(shí)現(xiàn)過(guò)程如下:nsstring*htmlstring=[nsstringstringwithcontentsoffile:pathencoding:nsutf8stringencodingerror:nil];,同時(shí),獲取得路徑需要nsutf8stringencoding編碼。將所述圖表模板路徑信息進(jìn)行nsutf8stringencoding編碼是為了有效的防止圖表模板路徑信息字符串中亂碼的生成。
在本發(fā)明另一個(gè)具體實(shí)施例中,一種數(shù)據(jù)展示圖表生成系統(tǒng),所述編碼單元還用于利用方法fileurlwithpath:basepath將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息。
上述具體實(shí)施例的具體實(shí)現(xiàn)過(guò)程如下:在ios系統(tǒng)下,將獲得的路徑轉(zhuǎn)化為nsurl,nsurl*baseurl=[nsurlfileurlwithpath:basepath]。
在本發(fā)明另一個(gè)具體實(shí)施例中,一種數(shù)據(jù)展示圖表生成系統(tǒng),所述第二獲取單元還用于使用函數(shù)nsstring*basepath=[[nsbundlemainbundle]bundlepath];獲得文件中存儲(chǔ)的html文件的路徑。
在本發(fā)明另一個(gè)具體實(shí)施例中,一種數(shù)據(jù)展示圖表生成系統(tǒng),所述加載模塊還用于根據(jù)所述url路徑信息和存儲(chǔ)路徑信息,利用方法htmlstring加載所述待生成數(shù)據(jù)展示圖表的圖表模板。
上述具體實(shí)施例的具體實(shí)現(xiàn)過(guò)程如下:使用[selfloadhtmlstring:htmlstringbaseurl:baseurl]去加載所述url路徑信息和存儲(chǔ)路徑信息,經(jīng)過(guò)這些就可以實(shí)現(xiàn)對(duì)html的加載。
在本發(fā)明另一個(gè)具體實(shí)施例中,一種數(shù)據(jù)展示圖表生成系統(tǒng),所述展示模塊還用于利用方法stringbyevaluatingjavascriptfromstring將待展示數(shù)據(jù)信息載入所述圖表模板。
上述具體實(shí)施例的具體實(shí)現(xiàn)過(guò)程如下:通常,前端提供的都是一個(gè)圖表框架,具體的數(shù)據(jù)需要移動(dòng)端從后臺(tái)請(qǐng)求,然后調(diào)用前端提供的接口(如setdata方法)將數(shù)據(jù)注入。ios端注入數(shù)據(jù)只需要調(diào)用-(nullablensstring*)stringbyevaluatingjavascriptfromstring:(nsstring*)script方法即可完成。
使用蘋果ios中stringbyevaluatingjavascriptfromstring函數(shù)進(jìn)行注入,這個(gè)函數(shù)可以兼容ios7甚至更老的版本,注入方法簡(jiǎn)單,一行代碼就可以實(shí)現(xiàn),數(shù)據(jù)注入。
在本發(fā)明另一個(gè)具體實(shí)施例中,一種數(shù)據(jù)展示圖表生成系統(tǒng),還包括交互模塊,用于對(duì)于部分需要與用戶交互的圖表,可以調(diào)用context的exceptionhandler進(jìn)行交互,前端只需要知道實(shí)現(xiàn)交互的方法名(如sourceinfo),移動(dòng)端利用context調(diào)用該方法就好,交互過(guò)程中需要傳遞的參數(shù)通過(guò)block回調(diào)。其中context通過(guò)調(diào)用valueforkeypath:@"documentview.webview.mainframe.javascriptcontext"方法獲得。
上述具體實(shí)施例具有以下有益效果:使用javascriptcontext方法,獲取到context,獲得了context就獲得了實(shí)現(xiàn)了js和oc的交互的引擎,有了context后面的進(jìn)行數(shù)據(jù)處理就很方便。
圖3是示出本申請(qǐng)實(shí)施例的數(shù)據(jù)展示圖表生成方法的測(cè)試設(shè)備的結(jié)構(gòu)框圖。
參照?qǐng)D3,所述數(shù)據(jù)展示圖表生成方法的測(cè)試設(shè)備,包括:處理器(processor)301、存儲(chǔ)器(memory)302、通信接口(communicationsinterface)303和總線304;
其中,
所述處理器301、存儲(chǔ)器302、通信接口303通過(guò)所述總線304完成相互間的通信;
所述通信接口303用于該測(cè)試設(shè)備與數(shù)據(jù)展示圖表生成方法的通信設(shè)備之間的信息傳輸;
所述處理器301用于調(diào)用所述存儲(chǔ)器302中的程序指令,以執(zhí)行上述各方法實(shí)施例所提供的方法,例如包括:獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息,將所述圖表模板路徑信息進(jìn)行nsutf8stringencoding編碼;將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息;獲取所述待生成數(shù)據(jù)展示圖表的圖表模板的存儲(chǔ)路徑信息;根據(jù)所述url路徑信息和存儲(chǔ)路徑信息加載所述待生成數(shù)據(jù)展示圖表的圖表模板;將待展示數(shù)據(jù)信息載入所述圖表模板中,生成數(shù)據(jù)展示圖表,將所述數(shù)據(jù)展示圖表在所述用戶移動(dòng)終端進(jìn)行展示。
本實(shí)施例公開(kāi)一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)在非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包括程序指令,當(dāng)所述程序指令被計(jì)算機(jī)執(zhí)行時(shí),計(jì)算機(jī)能夠執(zhí)行上述各方法實(shí)施例所提供的方法,例如包括:獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息,將所述圖表模板路徑信息進(jìn)行nsutf8stringencoding編碼;將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息;獲取所述待生成數(shù)據(jù)展示圖表的圖表模板的存儲(chǔ)路徑信息;根據(jù)所述url路徑信息和存儲(chǔ)路徑信息加載所述待生成數(shù)據(jù)展示圖表的圖表模板;將待展示數(shù)據(jù)信息載入所述圖表模板中,生成數(shù)據(jù)展示圖表,將所述數(shù)據(jù)展示圖表在所述用戶移動(dòng)終端進(jìn)行展示。
本實(shí)施例提供一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)計(jì)算機(jī)指令,所述計(jì)算機(jī)指令使所述計(jì)算機(jī)執(zhí)行上述各方法實(shí)施例所提供的方法,例如包括:獲取待生成數(shù)據(jù)展示圖表的圖表模板路徑信息,將所述圖表模板路徑信息進(jìn)行nsutf8stringencoding編碼;將所述編碼后的圖表模板路徑信息轉(zhuǎn)化為用戶移動(dòng)終端操作系統(tǒng)所能識(shí)別的url路徑信息;獲取所述待生成數(shù)據(jù)展示圖表的圖表模板的存儲(chǔ)路徑信息;根據(jù)所述url路徑信息和存儲(chǔ)路徑信息加載所述待生成數(shù)據(jù)展示圖表的圖表模板;將待展示數(shù)據(jù)信息載入所述圖表模板中,生成數(shù)據(jù)展示圖表,將所述數(shù)據(jù)展示圖表在所述用戶移動(dòng)終端進(jìn)行展示。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所描述的數(shù)據(jù)展示圖表生成方法的測(cè)試設(shè)備等實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
最后,本申請(qǐng)的方法僅為較佳的實(shí)施方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。