Skip to content

Devops #106

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Nov 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 2 additions & 7 deletions css/common/subsetEditor.css
Original file line number Diff line number Diff line change
Expand Up @@ -242,16 +242,11 @@
margin: auto;
display: inherit;
}
.vp-ds-select-add-btn {
.vp-ds-select-btn-box button {
height: 24px;
background: #FFFFFF;
border: 0.25px solid #E4E4E4;
}
.vp-ds-select-del-btn {
height: 24px;
background: #FFFFFF;
border: 0.25px solid #E4E4E4;
margin-top: 5px;
grid-row-gap: 5px;
}
.vp-ds-btn-add-condition {
width: 95px;
Expand Down
54 changes: 37 additions & 17 deletions src/api/functions/fileNaviCommand.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"""

import os as _vp_os
import stat as _vp_stat

def _vp_get_userprofile_path():
"""
Expand Down Expand Up @@ -64,9 +65,17 @@ def _vp_sizeof_fmt(num, suffix='B'):
num /= 1024.0
return '%.1f%s%s' % (num, 'Yi', suffix)

def _vp_search_path(path):
def _vp_search_path(path, show_hidden=False):
"""
Search child folder and file list under the given path
path: str
path to search file/dir list
show_hidden: bool (optional; default: False)
set True for show hidden file/dir
returns: list
list with scanned file/dir list
0 element with current and parent path information
1~n elements with file/dir list under given path
"""
import datetime as _dt
_current = _vp_os.path.abspath(path)
Expand All @@ -76,20 +85,21 @@ def _vp_search_path(path):
_info = []
_info.append({'current':_current,'parent':_parent})
for _entry in i:
_name = _entry.name
_path = _entry.path # 파일 경로
_stat = _entry.stat()
_size = _vp_sizeof_fmt(_stat.st_size) # 파일 크기
_a_time = _stat.st_atime # 최근 액세스 시간
_a_dt = _dt.datetime.fromtimestamp(_a_time).strftime('%Y-%m-%d %H:%M')
_m_time = _stat.st_mtime # 최근 수정 시간
_m_dt = _dt.datetime.fromtimestamp(_m_time).strftime('%Y-%m-%d %H:%M')
_e_type = 'other'
if _entry.is_file():
_e_type = 'file'
elif _entry.is_dir():
_e_type = 'dir'
_info.append({'name':_name, 'type':_e_type, 'path':_path, 'size':_size, 'atime':str(_a_dt), 'mtime':str(_m_dt)})
if show_hidden or _vp_check_hidden(_entry.path) == False:
_name = _entry.name
_path = _entry.path # 파일 경로
_stat = _entry.stat()
_size = _vp_sizeof_fmt(_stat.st_size) # 파일 크기
_a_time = _stat.st_atime # 최근 액세스 시간
_a_dt = _dt.datetime.fromtimestamp(_a_time).strftime('%Y-%m-%d %H:%M')
_m_time = _stat.st_mtime # 최근 수정 시간
_m_dt = _dt.datetime.fromtimestamp(_m_time).strftime('%Y-%m-%d %H:%M')
_e_type = 'other'
if _entry.is_file():
_e_type = 'file'
elif _entry.is_dir():
_e_type = 'dir'
_info.append({'name':_name, 'type':_e_type, 'path':_path, 'size':_size, 'atime':str(_a_dt), 'mtime':str(_m_dt)})
return _info

def _vp_get_image_by_path(path):
Expand All @@ -104,10 +114,20 @@ def _vp_get_relative_path(start, path):
"""
Get relative path using start path and current path
start: str
start path
start path+
path: str
current path
returns: str
current relative path
"""
return _vp_os.path.relpath(path, start)
return _vp_os.path.relpath(path, start)

def _vp_check_hidden(path):
"""
Check if it's hidden
path: str
file path
returns: bool
True for hidden file/dir, False for others
"""
return bool(_vp_os.stat(path).st_file_attributes & _vp_stat.FILE_ATTRIBUTE_HIDDEN)
25 changes: 16 additions & 9 deletions src/common/vpBind.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,11 @@ define([
this.codepreview = undefined;

this.howList = [
{ label: 'Inner', value: 'inner' },
{ label: 'Outer', value: 'outer' },
{ label: 'Left', value: 'left' },
{ label: 'Right', value: 'right' },
{ label: 'Cross', value: 'cross' },
{ label: 'Inner', value: 'inner', desc: 'Inner join' },
{ label: 'Full outer', value: 'outer', desc: 'Full outer join' },
{ label: 'Left outer', value: 'left', desc: 'Left outer join' },
{ label: 'Right outer', value: 'right', desc: 'Right outer join' },
{ label: 'Cross', value: 'cross', desc: 'Cartesian product' },
]
}

Expand Down Expand Up @@ -116,13 +116,16 @@ define([

$(this._wrapSelector('#vp_bdHow')).val(merge.how);
this._loadSelectorInput(this._wrapSelector('#vp_bdOn'), merge.on);
if (on && on.length > 0) {
if (merge.on && merge.on.length > 0) {
$(this._wrapSelector('#vp_bdLeftOnSelect')).attr('disabled', true);
$(this._wrapSelector('#vp_bdRightOnSelect')).attr('disabled', true);
$(this._wrapSelector('#vp_bdLeftIndex')).attr('disabled', true);
$(this._wrapSelector('#vp_bdRightIndex')).attr('disabled', true);
}
this._loadSelectorInput(this._wrapSelector('#vp_bdLeftOn'), merge.left.on);
this._loadSelectorInput(this._wrapSelector('#vp_bdRightOn'), merge.right.on);
if (merge.left.on.length > 0 || merge.right.on.length > 0) {
if (merge.left.on.length > 0 || merge.right.on.length > 0
|| merge.left.useIndex || merge.right.useIndex) {
$(this._wrapSelector('#vp_bdOnSelect')).attr('disabled', true);
}

Expand Down Expand Up @@ -361,7 +364,7 @@ define([
page.appendFormatLine('<select id="{0}">', 'vp_bdHow');
var savedHow = this.state.merge.how;
this.howList.forEach(how => {
page.appendFormatLine('<option value="{0}"{1}>{2}</option>', how.value, savedHow==how.value?' selected':'', how.label);
page.appendFormatLine('<option value="{0}"{1} title="{2}">{3}</option>', how.value, savedHow==how.value?' selected':'', how.desc, how.label);
});
page.appendLine('</select>');
page.appendLine('</div>');
Expand Down Expand Up @@ -666,9 +669,13 @@ define([
if (colList && colList.length > 0) {
$(that._wrapSelector('#vp_bdLeftOnSelect')).attr('disabled', true);
$(that._wrapSelector('#vp_bdRightOnSelect')).attr('disabled', true);
$(that._wrapSelector('#vp_bdLeftIndex')).attr('disabled', true);
$(that._wrapSelector('#vp_bdRightIndex')).attr('disabled', true);
} else {
$(that._wrapSelector('#vp_bdLeftOnSelect')).attr('disabled', false);
$(that._wrapSelector('#vp_bdRightOnSelect')).attr('disabled', false);
$(that._wrapSelector('#vp_bdLeftIndex')).attr('disabled', false);
$(that._wrapSelector('#vp_bdRightIndex')).attr('disabled', false);
}
});

Expand Down Expand Up @@ -927,7 +934,7 @@ define([
//================================================================
// On columns
//================================================================
code.appendFormat(', on=[{0}]', on.map(col => col.code));
code.appendFormat(', on=[{0}]', merge.on.map(col => col.code));
} else {
//====================================================================
// Left & Right On columns
Expand Down
1 change: 0 additions & 1 deletion src/common/vpCommon.js
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,6 @@ define([
iopub: {
output: function(msg) {
// msg.content.data['text/plain']
console.log(msg);
resolve(msg.content.data);
}
}
Expand Down
54 changes: 38 additions & 16 deletions src/common/vpGroupby.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ define([
]

this.methodList = [
{ label: 'None', value: '' },
{ label: 'count', value: 'count' },
{ label: 'first', value: 'first' },
{ label: 'last', value: 'last' },
Expand Down Expand Up @@ -134,13 +135,14 @@ define([
_loadState(state) {
var {
variable, groupby, useGrouper, grouperNumber, grouperPeriod,
display, method, advanced, allocateTo, resetIndex,
display, method, advanced, allocateTo, toFrame, resetIndex,
advPageDom, advColList, advNamingList
} = state;

$(this._wrapSelector('#vp_gbVariable')).val(variable);
$(this._wrapSelector('#vp_gbBy')).val(groupby.map(col=>col.code).join(','));
$(this._wrapSelector('#vp_gbBy')).data('list', groupby);
$(this._wrapSelector('#vp_gbResetIndex')).val(resetIndex?'yes':'no');
if (useGrouper) {
$(this._wrapSelector('#vp_gbByGrouper')).removeAttr('disabled');
$(this._wrapSelector('#vp_gbByGrouper')).prop('checked', useGrouper);
Expand All @@ -157,7 +159,7 @@ define([
$(this._wrapSelector('#vp_gbAdvanced')).trigger('change');
}
$(this._wrapSelector('#vp_gbAllocateTo')).val(allocateTo);
$(this._wrapSelector('#vp_gbResetIndex')).val(resetIndex?'yes':'no');
$(this._wrapSelector('#vp_gbToFrame')).val(toFrame);

$(this._wrapSelector('.vp-gb-adv-box')).html(advPageDom);

Expand Down Expand Up @@ -358,6 +360,7 @@ define([
page.appendLine('<div>');
page.appendFormatLine('<label for="{0}" class="{1}">{2}</label>', 'vp_gbAllocateTo', 'wp80', 'Allocate to');
page.appendFormatLine('<input type="text" id="{0}" placeholder="{1}"/>', 'vp_gbAllocateTo', 'New variable name');
page.appendFormatLine('<label style="display:none;"><input type="checkbox" id="{0}"/><span>{1}</span></label>', 'vp_gbToFrame', 'To DataFrame');
page.appendLine('</div>');

page.appendLine('</div>'); // end of df-box
Expand Down Expand Up @@ -618,6 +621,7 @@ define([
$(document).off('change', this._wrapSelector('#vp_gbMethodSelect'));
$(document).off('change', this._wrapSelector('#vp_gbAdvanced'));
$(document).off('change', this._wrapSelector('#vp_gbAllocateTo'));
$(document).off('change', this._wrapSelector('#vp_gbToFrame'));
$(document).off('change', this._wrapSelector('#vp_gbResetIndex'));

$(document).off('click', this._wrapSelector('#vp_gbAdvAdd'));
Expand Down Expand Up @@ -716,6 +720,12 @@ define([
$(document).on('change', this._wrapSelector('#vp_gbDisplay'), function(event) {
var colList = event.dataList;
that.state.display = colList;

if (colList && colList.length == 1) {
$(that._wrapSelector('#vp_gbToFrame')).parent().show();
} else {
$(that._wrapSelector('#vp_gbToFrame')).parent().hide();
}
});

// display select button event
Expand Down Expand Up @@ -756,6 +766,11 @@ define([
$(document).on('change', this._wrapSelector('#vp_gbAllocateTo'), function() {
that.state.allocateTo = $(this).val();
});

// to dataframe event
$(document).on('change', this._wrapSelector('#vp_gbToFrame'), function() {
that.state.toFrame = $(this).prop('checked') == true;
});

// reset index checkbox event
$(document).on('change', this._wrapSelector('#vp_gbResetIndex'), function() {
Expand Down Expand Up @@ -1009,9 +1024,13 @@ define([
var code = new sb.StringBuilder();
var {
variable, groupby, useGrouper, grouperNumber, grouperPeriod,
display, method, advanced, allocateTo, resetIndex
display, method, advanced, allocateTo, toFrame, resetIndex
} = this.state;

if (!variable || variable == '') {
return '';
}

// mapping colList states
groupby = groupby.map(col => col.code);
display = display.map(col => col.code);
Expand Down Expand Up @@ -1048,13 +1067,13 @@ define([
//====================================================================
var colStr = '';
if (display) {
if (display.length == 1) {
// for 1 column
colStr = '[' + display.join('') + ']';
} else if (display.length > 1) {
if (toFrame || display.length > 1) {
// over 2 columns
colStr = '[[' + display.join(',') + ']]';
}
} else if (display.length == 1) {
// for 1 column
colStr = '[' + display.join('') + ']';
}
}

//====================================================================
Expand Down Expand Up @@ -1172,21 +1191,24 @@ define([
//================================================================
// Method code generation
//================================================================
methodStr.appendFormat('{0}()', method);
if (method != '') {
methodStr.appendFormat('{0}()', method);
}
}

// when using as_index option with Grouper, use .reset_index()
if (useGrouper && resetIndex) {
methodStr.append('.reset_index()');
if (method != '') {
// when using as_index option with Grouper, use .reset_index()
if (useGrouper && resetIndex) {
methodStr.append('.reset_index()');
}
// display columns
code.appendFormat('{0}.{1}', colStr, methodStr.toString());
}
// display columns
code.appendFormat('{0}.{1}', colStr, methodStr.toString());


if (allocateTo && allocateTo != '') {
code.appendLine();
code.append(allocateTo);
}

return code.toString();
}

Expand Down
Loading