Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita75ff41

Browse files
author
minjk-bl
committed
Add checking functions and package whether it is declared or not
1 parent4587a36 commita75ff41

23 files changed

+336
-143
lines changed

‎js/com/com_Config.js‎

Lines changed: 112 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@
1414
define([
1515
'./com_Const',
1616
'./com_util',
17-
'./com_interface'
18-
],function(com_Const,com_util,com_interface){
17+
'./com_interface',
18+
'text!vp_base/python/userCommand.py',
19+
],function(com_Const,com_util,com_interface,userCommandFile){
1920
'use strict';
2021
//========================================================================
2122
// Define Inner Variable
@@ -115,7 +116,64 @@ define([
115116
this.defaultConfig={};
116117
this.metadataSettings={};
117118

119+
this.moduleDict={
120+
'np':{
121+
code:'import numpy as np',
122+
type:'package'
123+
},
124+
'numpy':{
125+
code:'import numpy as np',
126+
type:'package'
127+
},
128+
'pd':{
129+
code:'import pandas as pd',
130+
type:'package'
131+
},
132+
'pandas':{
133+
code:'import pandas as pd',
134+
type:'package'
135+
},
136+
'plt':{
137+
code:'import matplotlib.pyplot as plt\n%matplotlib inline',
138+
type:'package'
139+
},
140+
'sns':{
141+
code:'import seaborn as sns',
142+
type:'package'
143+
},
144+
'metrics':{
145+
code:'from sklearn import metrics',
146+
type:'package'
147+
},
148+
'ProfileReport':{
149+
code:'from pandas_profiling import ProfileReport',
150+
type:'package'
151+
},
152+
'px':{
153+
code:'import plotly.express as px',
154+
type:'package'
155+
},
156+
'WordCloud':{
157+
code:'from wordcloud import WordCloud',
158+
type:'package'
159+
},
160+
'fitz':{
161+
code:'import fitz',
162+
type:'package'
163+
},
164+
'nltk':{
165+
code:"import nltk\nnltk.download('punkt')",
166+
type:'package'
167+
},
168+
'Counter':{
169+
code:'from collections import Counter',
170+
type:'package'
171+
}
172+
}
173+
118174
this._readDefaultConfig();
175+
this._readUserCommandList();
176+
119177
}
120178

121179
/**
@@ -150,6 +208,46 @@ define([
150208
$.extend(true,this.defaultConfig,this.metadataSettings);
151209
}
152210

211+
_readUserCommandList(){
212+
letdivider='#'.repeat(6);
213+
// get list of codes (ignore first 2 items)
214+
lettmpList=userCommandFile.split(divider).slice(2);
215+
216+
// match key-codes-description
217+
// { 'func_name': { code: '', description: '' }}
218+
letfuncDict={};
219+
letreg=/^def(.+)\(/;
220+
letname='';
221+
letcode='';
222+
letdesc='';
223+
letpackageAlias={
224+
'_vp_np':'np',
225+
'_vp_pd':'pd',
226+
'_vp_plt':'plt'
227+
}
228+
229+
for(leti=0;i<tmpList.length;i+=2){
230+
desc=tmpList[i].trim();
231+
code=tmpList[i+1].trim();
232+
letregResult=reg.exec(code);
233+
if(regResult!==null){
234+
name=regResult[1];
235+
// convert code's package alias
236+
Object.keys(packageAlias).forEach(key=>{
237+
letdesAlias=packageAlias[key];
238+
code=code.replaceAll(key+'.',desAlias+'.');
239+
});
240+
// list up
241+
funcDict[name]={code:code,type:'function',description:desc};
242+
}
243+
}
244+
245+
this.moduleDict={
246+
...this.moduleDict,
247+
...funcDict
248+
}
249+
}
250+
153251
/**
154252
* Read kernel functions for using visualpython
155253
* - manually click restart menu (MenuFrame.js)
@@ -161,7 +259,7 @@ define([
161259
'fileNaviCommand.py',
162260
'pandasCommand.py',
163261
'variableCommand.py',
164-
'userCommand.py'
262+
//'userCommand.py'
165263
];
166264
letpromiseList=[];
167265
libraryList.forEach(libName=>{
@@ -464,6 +562,17 @@ define([
464562
returnObject.keys(Config.ML_DATA_DICT);
465563
}
466564

565+
getModuleCode(modName=''){
566+
if(modName==''){
567+
returnthis.moduleDict;
568+
}
569+
try{
570+
returnthis.moduleDict[modName];
571+
}catch{
572+
returnnull;
573+
}
574+
}
575+
467576
}
468577

469578
//========================================================================

‎js/com/com_Kernel.js‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,23 @@ define([
9696
});
9797
}
9898

99+
/**
100+
* Check if module/function is loaded already
101+
*@param {*} moduleList
102+
*/
103+
checkModule(moduleList){
104+
varthat=this;
105+
returnnewPromise(function(resolve,reject){
106+
that.execute(com_util.formatString('_vp_print(_vp_check_module_loaded({0}))',JSON.stringify(moduleList))).then(function(resultObj){
107+
// resolve
108+
resolve(resultObj);
109+
}).catch(function(err){
110+
// reject
111+
reject(err);
112+
})
113+
});
114+
}
115+
99116
getDataList(dataTypeList=[],excludeList=[]){
100117
// use function command to get variable list of selected data types
101118
varcmdSB='_vp_print(_vp_get_variables_list(None))';

‎js/com/component/InnerFuncViewer.js‎

Lines changed: 3 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@
1515
define([
1616
'text!vp_base/html/component/innerFuncViewer.html!strip',
1717
'css!vp_base/css/component/innerFuncViewer.css',
18-
'text!vp_base/python/userCommand.py',
1918
'vp_base/js/com/com_util',
2019
'vp_base/js/com/com_String',
2120
'vp_base/js/com/component/PopupComponent',
2221
'vp_base/js/com/component/FileNavigation'
23-
],function(ifHtml,ifCss,userCommandFile,com_util,com_String,PopupComponent,FileNavigation){
22+
],function(ifHtml,ifCss,com_util,com_String,PopupComponent,FileNavigation){
2423

2524
/**
2625
* InnerFuncViewer
@@ -46,12 +45,6 @@ define([
4645

4746
// double click setter
4847
this.clicked=0;
49-
50-
this.packageAlias={
51-
'_vp_np':'np',
52-
'_vp_pd':'pd',
53-
'_vp_plt':'plt'
54-
}
5548
}
5649

5750
_bindEvent(){
@@ -181,33 +174,8 @@ define([
181174
loadUserCommandList(){
182175
varthat=this;
183176

184-
letdivider='#'.repeat(6);
185-
// get list of codes (ignore first 2 items)
186-
lettmpList=userCommandFile.split(divider).slice(2);
187-
188-
// match key-codes-description
189-
// { 'func_name': { code: '', description: '' }}
190-
letfuncDict={};
191-
letreg=/^def(.+)\(/;
192-
letname='';
193-
letcode='';
194-
letdesc='';
195-
196-
for(leti=0;i<tmpList.length;i+=2){
197-
desc=tmpList[i].trim();
198-
code=tmpList[i+1].trim();
199-
letregResult=reg.exec(code);
200-
if(regResult!==null){
201-
name=regResult[1];
202-
// convert code's package alias
203-
Object.keys(that.packageAlias).forEach(key=>{
204-
letdesAlias=that.packageAlias[key];
205-
code=code.replaceAll(key+'.',desAlias+'.');
206-
});
207-
// list up
208-
funcDict[name]={code:code,description:desc};
209-
}
210-
}
177+
letfuncDict=vpConfig.getModuleCode();
178+
funcDict=Object.fromEntries(Object.entries(funcDict).filter(([key])=>funcDict[key].type=='function'));
211179

212180
// clear table except head
213181
$(this.wrapSelector('.vp-if-table')).html('');

‎js/com/component/LibraryComponent.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ define([
4444
vpLog.display(VP_LOG_TYPE.ERROR,'Cannot find package id from library: '+this.packageId);
4545
return;
4646
}
47+
this.config.checkModules=[this.package.library];
4748

4849
vpLog.display(VP_LOG_TYPE.DEVELOP,'loading state',this.state);
4950
}

‎js/com/component/PopupComponent.js‎

Lines changed: 45 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ define([
6666
footer:true,
6767
position:{right:10,top:120},
6868
size:{width:400,height:550},
69-
saveOnly:false
69+
saveOnly:false,
70+
checkModules:[]// module aliases or function names
7071
};
7172

7273
// check BoardFrame width and set initial position of popup
@@ -725,26 +726,59 @@ define([
725726
returnrequiredFilled;
726727
}
727728

729+
checkAndRunModules(execute=true,background=false){
730+
letsigText=this.getSigText();
731+
732+
letcheckModules=this.config.checkModules;
733+
returnnewPromise(function(resolve,reject){
734+
if(checkModules.length>0){
735+
vpKernel.checkModule(checkModules).then(function(resultObj){
736+
let{ result}=resultObj;
737+
letcheckedList=JSON.parse(result);
738+
letexecuteList=[];
739+
checkedList&&checkedList.forEach((mod,idx)=>{
740+
if(mod==false){
741+
letmodInfo=vpConfig.getModuleCode(checkModules[idx]);
742+
if(modInfo){
743+
executeList.push(modInfo.code);
744+
}
745+
}
746+
});
747+
if(executeList&&executeList.length>0){
748+
com_interface.insertCell('code',executeList.join('\n'),execute,sigText);
749+
}
750+
resolve(executeList);
751+
});
752+
}else{
753+
resolve([]);
754+
}
755+
});
756+
}
757+
728758
run(execute=true,addcell=true){
729759
// check required
730760
if(this.checkRequiredOption()===false){
731-
returnnull;
761+
returnfalse;
732762
}
733763

734-
letcode=this.generateCode();
735764
letmode=this.config.executeMode;
736765
letsigText=this.getSigText();
766+
letcode=this.generateCode();
767+
737768
vpLog.display(VP_LOG_TYPE.DEVELOP,sigText,mode,code);
738769

739-
if(addcell){
740-
if(Array.isArray(code)){
741-
// insert cells if it's array of codes
742-
com_interface.insertCells(mode,code,execute,sigText);
743-
}else{
744-
com_interface.insertCell(mode,code,execute,sigText);
770+
// check modules
771+
this.checkAndRunModules(execute).then(function(executeList){
772+
if(addcell){
773+
if(Array.isArray(code)){
774+
// insert cells if it's array of codes
775+
com_interface.insertCells(mode,code,execute,sigText);
776+
}else{
777+
com_interface.insertCell(mode,code,execute,sigText);
778+
}
745779
}
746-
}
747-
returncode;
780+
});
781+
returntrue;
748782
}
749783

750784
/**

‎js/m_apps/Bind.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ define([
3030
super._init();
3131
/** Write codes executed before rendering */
3232
this.config.sizeLevel=2;
33+
this.config.checkModules=['pd'];
3334

3435
this.howList=[
3536
{label:'Inner',value:'inner',desc:'Inner join'},

‎js/m_apps/File.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ define([
3535
/** Write codes executed before rendering */
3636
this.config.dataview=false;
3737
this.config.sizeLevel=1;
38+
this.config.checkModules=['pd'];
3839

3940
this.fileExtensions={
4041
'csv':'csv',

‎js/m_apps/Frame.js‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ define([
3030
_init(){
3131
super._init();
3232
this.config.sizeLevel=3;
33+
this.config.checkModules=['pd'];
3334

3435
// state
3536
this.state={
@@ -369,6 +370,12 @@ define([
369370
caseFRAME_EDIT_TYPE.AS_TYPE:
370371
that.openInputPopup(editType);
371372
break;
373+
caseFRAME_EDIT_TYPE.DROP_OUT:
374+
that.config.checkModules=['pd','np','vp_drop_outlier'];
375+
that.checkAndRunModules(true).then(function(){
376+
that.loadCode(that.getTypeCode(editType));
377+
});
378+
break;
372379
default:
373380
that.loadCode(that.getTypeCode(editType));
374381
break;
@@ -1221,6 +1228,7 @@ define([
12211228
switch(type){
12221229
caseFRAME_EDIT_TYPE.INIT:
12231230
code.appendFormat('{0} = {1}.copy()',tempObj,orgObj);
1231+
this.config.checkModules=['pd'];
12241232
break;
12251233
caseFRAME_EDIT_TYPE.DROP:
12261234
code.appendFormat("{0}.drop([{1}], axis={2}, inplace=True)",tempObj,selectedName,axis);

‎js/m_apps/Groupby.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ define([
3030
super._init();
3131
/** Write codes executed before rendering */
3232
this.config.size={width:700,height:550};
33+
this.config.checkModules=['pd'];
3334

3435
this.periodList=[
3536
{label:'business day',value:'B'},

‎js/m_apps/Import.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ define([
4646
/** Write codes executed before rendering */
4747
this.config.dataview=false;
4848
this.config.sizeLevel=1;
49+
this.config.checkModules=['pd'];
4950

5051
letsavedData=vpConfig.getDataSimple('','vpimport');
5152
// Reset abnormal data

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp