本文整理汇总了Python中pyasm.web.DivWdg.add_relay_behavior方法的典型用法代码示例。如果您正苦于以下问题:Python DivWdg.add_relay_behavior方法的具体用法?Python DivWdg.add_relay_behavior怎么用?Python DivWdg.add_relay_behavior使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyasm.web.DivWdg
的用法示例。
在下文中一共展示了DivWdg.add_relay_behavior方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_display
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
def get_display(self):
#assert self.template
top = DivWdg()
top.add_class("spt_list_top")
top.add_relay_behavior( {
'type': 'mouseup',
'bvr_match_class': 'spt_remove',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_list_top");
var items = top.getElements(".spt_list_item");
if (items.length > 1) {
var item = bvr.src_el.getParent(".spt_list_item");
item.destroy();
}
'''
} )
top.add_relay_behavior( {
'type': 'mouseup',
'bvr_match_class': 'spt_add',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_list_top");
var template = top.getElement(".spt_list_template_item");
var new_item = spt.behavior.clone(template);
var item = bvr.src_el.getParent(".spt_list_item");
new_item.removeClass("spt_list_template_item");
new_item.addClass("spt_list_item")
new_item.setStyle("display", "")
//new_item.inject(top, 'bottom');
new_item.inject(item, 'after');
'''
} )
if self.template:
template_wdg = self.get_item_wdg(self.template, is_template=True)
top.add(template_wdg )
for item in self.items:
item_wdg = self.get_item_wdg(item)
top.add( item_wdg )
return top
示例2: get_display
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
def get_display(my):
top = my.top
top.add_class("spt_sandbox_select_top")
sandbox_options = [
{
'name': 'fast',
'base_dir': 'C:/Fast',
},
{
'name': 'faster',
'base_dir': 'C:/Faster',
},
{
'name': 'slow',
'base_dir': 'Z:/Slow',
}
]
process = my.kwargs.get("process")
search_key = my.kwargs.get("search_key")
sobject = Search.get_by_search_key(search_key)
search_type = sobject.get_base_search_type()
client_os = Environment.get_env_object().get_client_os()
if client_os == 'nt':
prefix = "win32"
else:
prefix = "linux"
alias_dict = Config.get_dict_value("checkin", "%s_sandbox_dir" % prefix)
search_key = sobject.get_search_key()
key = "sandbox_dir:%s" % search_key
from pyasm.web import WidgetSettings
value = WidgetSettings.get_value_by_key(key)
sandboxes_div = DivWdg()
top.add(sandboxes_div)
sandboxes_div.add_relay_behavior( {
'type': 'mouseenter',
'bvr_match_class': 'spt_sandbox_option',
'cbjs_action': '''
var last_background = bvr.src_el.getStyle("background-color");
bvr.src_el.setAttribute("spt_last_background", last_background);
bvr.src_el.setStyle("background-color", "#E0E0E0");
bvr.src_el.setStyle("opacity", "1.0");
'''
} )
sandboxes_div.add_relay_behavior( {
'type': 'mouseleave',
'bvr_match_class': 'spt_sandbox_option',
'cbjs_action': '''
var last_background = bvr.src_el.getAttribute("spt_last_background");
bvr.src_el.setStyle("background-color", last_background);
if (!bvr.src_el.hasClass("spt_selected")) {
bvr.src_el.setStyle("opacity", "0.5");
}
'''
} )
sandboxes_div.add_relay_behavior( {
'type': 'mouseup',
'key': key,
'bvr_match_class': 'spt_sandbox_option',
'cbjs_action': '''
var sandbox_dir = bvr.src_el.getAttribute("spt_sandbox_dir");
var server = TacticServerStub.get();
server.set_widget_setting(bvr.key, sandbox_dir);
var applet = spt.Applet.get();
applet.makedirs(sandbox_dir);
//var top = bvr.src_el.getParent(".spt_sandbox_select_top");
var top = bvr.src_el.getParent(".spt_checkin_top");
spt.panel.refresh(top);
'''
} )
#search = Search("config/naming")
#search.add_filter("search_type", search_type)
#search.add_filter("process", process)
#namings = search.get_sobjects()
#naming = namings[0]
from pyasm.biz import Snapshot, Naming
virtual_snapshot = Snapshot.create_new()
#.........这里部分代码省略.........
示例3: get_display
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
#.........这里部分代码省略.........
clone.inject(top);
}
spt.drag.noop = function(evt, el) {
var top = $(el).getParent(".spt_ingest_top");
var files_el = top.getElement(".spt_upload_files");
evt.stopPropagation();
evt.preventDefault();
evt.dataTransfer.dropEffect = 'copy';
var files = evt.dataTransfer.files;
var delay = 0;
var skip = false;
for (var i = 0; i < files.length; i++) {
var size = files[i].size;
if (size >= 10*1024*1024) {
spt.drag.show_file(files[i], files_el, 0, false);
}
else {
spt.drag.show_file(files[i], files_el, delay, true);
if (size < 100*1024) delay += 50;
else if (size < 1024*1024) delay += 500;
else if (size < 10*1024*1024) delay += 1000;
}
}
}
'''
} )
# create a template that will be filled in for each file
files_div.add_relay_behavior( {
'type': 'mouseenter',
'color': files_div.get_color("background3", -5),
'bvr_match_class': 'spt_upload_file',
'cbjs_action': '''
bvr.src_el.setStyle("background", bvr.color);
'''
} )
files_div.add_relay_behavior( {
'type': 'mouseleave',
'bvr_match_class': 'spt_upload_file',
'cbjs_action': '''
bvr.src_el.setStyle("background", "");
'''
} )
files_div.add_relay_behavior( {
'type': 'mouseup',
'bvr_match_class': 'spt_remove',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_upload_file");
spt.behavior.destroy_element(top);
'''
} )
"""
metadata_view = "test/wizard/metadata"
files_div.add_relay_behavior( {
'type': 'mouseup',
'view': metadata_view,
'bvr_match_class': 'spt_upload_file',
'cbjs_action': '''
var class_name = 'tactic.ui.panel.CustomLayoutWdg';
示例4: get_display
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
#.........这里部分代码省略.........
td.add_style("vertical-align: top")
text = TextWdg()
text.add_style("border", "none")
text.add_style("text-align", "right")
text.add_style("width", "25px")
text.add_style("margin", "0 10 0 0")
text.add_style("opacity", "0.5")
text.set_value(count)
td.add(text)
count += 1
is_new = False
td = line_table.add_cell()
if not is_new:
SmartMenu.assign_as_local_activator( td,'TEXT_CTX' )
tr.add_class("spt_line");
else:
SmartMenu.assign_as_local_activator( td,'TEXT_NEW_CTX' )
tr.add_class("spt_new_line");
td.add_class("spt_line_content");
td.add(line)
#from tactic.ui.app import AceEditorWdg
#editor = AceEditorWdg(code=text, show_options=False, readonly=True, height="600px")
#text_wdg.add(editor)
# add a click on spt_item
text_wdg.add_relay_behavior( {
'type': 'mouseup',
'bvr_match_class': 'spt_document_item',
'search_type': self.search_type,
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_document_top");
var data_el = top.getElement(".spt_document_data");
var search_key = bvr.src_el.getAttribute("spt_search_key");
var class_name = 'tactic.ui.panel.ViewPanelWdg';
var kwargs = {
'search_type': bvr.search_type,
'search_key': search_key,
}
spt.panel.load(data_el, class_name, kwargs);
'''
} )
# add a double click on spt_item
bgcolor = text_wdg.get_color("background", -10)
text_wdg.add_relay_behavior( {
'type': 'mouseover',
'bvr_match_class': 'spt_document_item',
'search_type': self.search_type,
'bgcolor': bgcolor,
'cbjs_action': '''
bvr.src_el.setStyle("opacity", "1.0");
//bvr.src_el.setStyle("font-weight", "normal");
bvr.src_el.setStyle("background", bvr.bgcolor);
'''
示例5: get_templates_wdg
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
def get_templates_wdg(my):
div = DivWdg()
div.add_style("padding: 5px")
div.add_color("background", "background3")
div.add_style("height: 100%")
title_div = DivWdg()
button = ActionButtonWdg(title="+", tip="Choose a Project Template file to install", size="small")
title_div.add(button)
button.add_style("float: right")
button.add_style("margin-top: -6px")
button.add_style("margin-right: -4px")
button.add_behavior( {
'type': 'click_up',
'cbjs_action': r'''
var applet = spt.Applet.get();
spt.app_busy.show('Choose a Project Template file');
var paths = applet.open_file_browser();
var server = TacticServerStub.get();
var cmd = "tactic.ui.app.ProjectTemplateInstallCmd";
if (!paths.length) {
return;
}
try {
for (var i = 0; i < paths.length; i++) {
if (!paths[i].test(/\.zip/)) {
spt.alert('A template file should be a zip file');
return;
}
server.upload_file(paths[i]);
}
var kwargs = {
paths: paths
};
server.execute_cmd(cmd, kwargs);
var path = paths[0]
path = path.replace(/\\/g, "/");
var parts = path.split("/");
var name = parts[parts.length-1];
var parts2 = name.split("-");
var name = parts2[0];
var top = bvr.src_el.getParent(".spt_project_template_top");
top.setAttribute("spt_template", name);
spt.panel.refresh(top);
spt.app_busy.hide();
spt.notify.show_message("Project Template ["+name+"] has been installed.");
}catch (e) {
spt.app_busy.hide();
spt.alert(spt.exception.handler(e));
}
'''
} )
div.add(title_div)
title_div.add("<b>Installed Templates</b>")
title_div.add_gradient("background", "background", 0, -10)
title_div.add_color("color", "color3")
title_div.add_style("margin: -5px -5px 5px -5px")
title_div.add_style("font-weight: bold")
title_div.add_style("padding: 8px")
templates_div = DivWdg()
div.add(templates_div)
templates_div.add_relay_behavior( {
'type': 'mouseup',
'bvr_match_class': 'spt_template',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_project_template_top");
var content = top.getElement(".spt_project_template_content")
var class_name = 'tactic.ui.app.ProjectTemplateEditWdg';
var template_dir = bvr.src_el.getAttribute("spt_template_dir");
var kwargs = {
template_dir: template_dir
};
spt.panel.load(content, class_name, kwargs);
'''
} )
templates_div.add_class("hand")
bgcolor = title_div.get_color("background3")
bgcolor2 = title_div.get_color("background3", -10)
templates_div.add_relay_behavior( {
'type': 'mouseover',
#.........这里部分代码省略.........
示例6: BaseConfigWdg
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
class BaseConfigWdg(BaseRefreshWdg):
def __init__(self, search_type, config_base, input_prefix='', config=None):
if type(search_type) in types.StringTypes:
self.search_type_obj = SearchType.get(search_type)
self.search_type = search_type
elif isinstance(search_type, SearchType):
self.search_type_obj = search_type
self.search_type = self.search_type_obj.get_base_key()
elif inspect.isclass(search_type) and issubclass(search_type, SObject):
self.search_type_obj = SearchType.get(search_type.SEARCH_TYPE)
self.search_type = self.search_type_obj.get_base_key()
else:
raise LayoutException('search_type must be a string or an sobject')
self.config = config
self.config_base = config_base
self.input_prefix = input_prefix
self.element_names = []
self.element_titles = []
from pyasm.web import DivWdg
self.top = DivWdg()
# Layout widgets compartmentalize their widgets in sections for drawing
self.sections = {}
super(BaseConfigWdg,self).__init__()
# NEED to add these because this is derived from HtmlElement and not
# BaseRefreshWdg
def add_style(self, name, value=None):
return self.top.add_style(name, value=value)
def add_class(self, class_name):
return self.top.add_class(class_name)
def has_class(self, class_name):
return self.top.has_class(class_name)
def add_behavior(self, behavior):
return self.top.add_behavior(behavior)
def add_relay_behavior(self, behavior):
return self.top.add_relay_behavior(behavior)
def get_default_display_handler(cls, element_name):
raise Exception("Must override 'get_default_display_handler()'")
get_default_display_handler = classmethod(get_default_display_handler)
def get_config_base(self):
return self.config_base
def get_config(self):
return self.config
def get_view(self):
return self.config_base
def remap_display_handler(self, display_handler):
'''Provide an opportunity to remap a display handler for newer
layouts engines using older configs'''
return display_handler
def init(self):
# create all of the display elements
if not self.config:
# it shouldn't use the self.search_type_obj here as it would absorb the project info
self.config = WidgetConfigView.get_by_search_type(self.search_type, self.config_base)
self.element_names = self.config.get_element_names()
self.element_titles = self.config.get_element_titles()
# TODO: should probably be all the attrs
self.element_widths = self.config.get_element_widths()
simple_view = self.kwargs.get("show_simple_view")
if simple_view == "true":
simple_view = True
else:
simple_view = False
self.extra_data = self.kwargs.get("extra_data")
if self.extra_data and isinstance(self.extra_data, basestring):
try:
self.extra_data = jsonloads(self.extra_data)
except:
self.extra_data = self.extra_data.replace("'", '"')
self.extra_data = jsonloads(self.extra_data)
#.........这里部分代码省略.........
示例7: get_display
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
def get_display(self):
top = self.top
top.add_style("margin: 10px")
search = Search("config/widget_config")
search.add_column("view")
search.add_filter("category", "CustomLayoutWdg")
search.add_filter("view", "pages.%", op="like")
sobjects = search.get_sobjects()
self.pages = SObject.get_values(sobjects, "view")
top.add("<div style='font-size: 16px'>Select page to load</div>")
top.add("<hr/>")
pages_div = DivWdg()
top.add(pages_div)
pages_div.add_style("margin: 20px")
pages_div.add_relay_behavior( {
'type': 'click',
'bvr_match_class': "spt_user_page_item",
'cbjs_action': '''
var popup = bvr.src_el.getParent(".spt_popup");
var activator = popup.activator;
var page = bvr.src_el.getAttribute("spt_page");
var top = activator.getParent(".spt_panel_top");
var content = top.getElement(".spt_panel_content");
var class_name = 'tactic.ui.panel.CustomLayoutWdg';
var kwargs = {
view: page,
}
spt.panel.load(content, class_name, kwargs);
spt.popup.close(popup);
'''
} )
if self.pages:
last_parts = self.pages[0].split(".")[:-1]
self.pages.sort()
last_parts = []
for count, page in enumerate(self.pages):
page = page.replace(".", "/")
page_div = DivWdg()
pages_div.add(page_div)
page_div.add_class("spt_user_page_item")
page_div.add_style("padding: 3px")
page_div.add_class("tactic_hover")
page_div.add_attr("spt_page", page)
page_div.add_class("hand")
page_div.add_style("min-width: 400px")
new_parts = []
parts = page.split("/")
parts = parts[1:]
index = 0
for part in parts:
if index < len(last_parts):
last_part = last_parts[index]
if part == last_part:
part = "<i style='opacity: 0.0'>%s</i>" % part
index += 1
new_parts.append(part)
last_parts = parts
#parts = ["<b>%s</b>" % x for x in parts]
display_path = " <i style='opacity: 1.0'>/</i> ".join(new_parts)
page_div.add("<div style='margin-right: 10px;display: inline-block; width: 20px; text-align: right'>%s: </div>" % count)
page_div.add(display_path)
return top
示例8: get_display
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
def get_display(my):
my.collection_key = my.kwargs.get("collection_key")
collection = Search.get_by_search_key(my.collection_key)
top = my.top
my.kwargs["scale"] = 75;
my.kwargs["show_scale"] = False;
my.kwargs["expand_mode"] = "plain"
from tile_layout_wdg import TileLayoutWdg
tile = TileLayoutWdg(
**my.kwargs
)
parent_dict = my.kwargs.get("parent_dict")
has_parent=False
if parent_dict:
has_parent = True
path = my.kwargs.get("path")
if collection and path:
title_div = DivWdg()
top.add(title_div)
title_div.add_style("float: left")
title_div.add_style("margin: 15px 0px 15px 30px")
asset_lib_span_div = SpanWdg()
title_div.add(asset_lib_span_div)
icon = IconWdg(name="Asset Library", icon="BS_FOLDER_OPEN")
asset_lib_span_div.add(icon)
asset_lib_span_div.add(" <a><b>Asset Library</b></a> ")
path = path.strip("/")
parts = path.split("/")
for idx, part in enumerate(parts):
title_div.add(" / ")
# the last spt_collection_link does not need a search_key
if has_parent and (idx is not len(parts) - 1):
search_key = parent_dict.get(part)
title_div.add(" <a class='spt_collection_link' search_key=%s><b>%s</b></a> " % (search_key, part))
else:
title_div.add(" <a class='spt_collection_link'><b>%s</b></a> " % part)
title_div.add_style("margin-top: 10px")
# Adding behavior to collections link
parts = my.kwargs.get("search_type").split("/")
collection_type = "%s/%s_in_%s" % (parts[0], parts[1], parts[1])
exists = SearchType.get(collection_type, no_exception=True)
if not exists:
title_div.add("SearchType %s is not registered." % collection_type)
return top
# These behaviors are only activated if the view is within collection layout,
# "is_new_tab" is a kwargs set to true, if opening a new tab
if not my.kwargs.get("is_new_tab"):
icon.add_class("hand")
icon.add_behavior( {
'type': 'mouseover',
'cbjs_action': '''
bvr.src_el.setStyle('opacity', 1.0);
'''
} )
icon.add_behavior( {
'type': 'mouseout',
'cbjs_action': '''
bvr.src_el.setStyle('opacity', 0.6);
'''
} )
# make icon and All Assets title clickable to return to view all assets
asset_lib_span_div.add_class("hand")
asset_lib_span_div.add_behavior( {
'type': 'click_up',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_collection_top");
var content = top.getElements(".spt_collection_content");
spt.panel.refresh(top);
'''
} )
title_div.add_class("hand")
title_div.add_relay_behavior( {
'type': 'mouseup',
'search_type': my.kwargs.get("search_type"),
'collection_type': collection_type,
'bvr_match_class': 'spt_collection_link',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_collection_top");
var content = top.getElement(".spt_collection_content");
var collection_key = bvr.src_el.getAttribute("search_key");
#.........这里部分代码省略.........
示例9: get_collection_wdg
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
#.........这里部分代码省略.........
asset_lib_div.add_style("font-weight: bold")
asset_lib_div.add("Asset Library")
asset_lib_div.add_class("tactic_hover")
asset_lib_div.add_class("hand")
asset_lib_div.add_behavior( {
'type': 'click_up',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_collection_top");
var content = top.getElements(".spt_collection_content");
spt.panel.refresh(top);
'''
} )
# collection
search = Search(my.search_type)
search.add_filter("_is_collection", True)
collections = search.get_sobjects()
collections_div = DivWdg()
collections_div.add_class("spt_collection_list")
div.add(collections_div)
collections_div.add_style("margin: 5px 0px 5px -5px")
from tactic.ui.panel import ThumbWdg2
parts = my.search_type.split("/")
collection_type = "%s/%s_in_%s" % (parts[0], parts[1], parts[1])
collections_div.add_relay_behavior( {
'type': 'mouseup',
'search_type': my.search_type,
'collection_type': collection_type,
'bvr_match_class': 'spt_collection_item',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_collection_top");
var content = top.getElement(".spt_collection_content");
var list = bvr.src_el.getParent(".spt_collection_list");
var items = list.getElements(".spt_collection_item");
for (var i = 0; i < items.length; i++) {
items[i].setStyle("background", "");
items[i].setStyle("box-shadow", "");
}
bvr.src_el.setStyle("background", "#EEE");
var collection_key = bvr.src_el.getAttribute("spt_collection_key");
var collection_code = bvr.src_el.getAttribute("spt_collection_code");
var collection_path = bvr.src_el.getAttribute("spt_collection_path");
var expr = "@SEARCH("+bvr.collection_type+"['parent_code','"+collection_code+"']."+bvr.search_type+")";
var parent_dict = {};
var parent_collection = bvr.src_el.getParent(".spt_subcollection_wdg");
var path = collection_path.substring(0, collection_path.lastIndexOf("/"));
if (parent_collection) {
for (var i = 0; i < collection_path.split("/").length - 1; i++) {
var n = path.lastIndexOf("/");
var collection_name = path.substring(n+1);
path = path.substring(0, n);
var parent_key = parent_collection.getAttribute("spt_parent_key");
示例10: get_display
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
def get_display(self):
top = self.top
inner = DivWdg()
top.add(inner)
inner.add_behavior( {
'type': 'load',
'cbjs_action': self.get_onload_js()
} )
width = "100%"
height = "100%"
inner.add_style("width: %s" % width)
inner.add_style("height: %s" % height)
inner.add_style("overflow: hidden")
inner.add_class("spt_container")
content = DivWdg()
inner.add(content)
content.add_class("spt_content")
content.add_style("width: %s" % width)
content.add_style("height: %s" % height)
content.add_style("position: relative")
content.add_behavior( {
'type': 'load',
'cbjs_action': '''
spt.drag.load(bvr.src_el);
'''
} )
content.add_behavior( {
'type': 'wheel',
'cbjs_action': '''
spt.drag.wheel(evt, bvr);
'''
} )
inner.add_relay_behavior( {
'type': 'dblclick',
'bvr_match_class': 'spt_content',
'cbjs_action': '''
spt.drag.dblclick(evt, bvr);
'''
} )
src = self.kwargs.get("src")
if not src:
src = DivWdg()
src.add("No Content")
img = HtmlElement.img(src=src)
content.add(img)
img.add_style("width: 100%")
img.add_style("height: 100%")
return top
示例11: get_display
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
def get_display(my):
my.search_type = my.kwargs.get("search_type")
search = Search(my.search_type)
search.add_filter("_is_collection", True)
collections = search.get_sobjects()
collections_div = DivWdg()
is_refresh = my.kwargs.get("is_refresh")
if is_refresh:
div = Widget()
else:
div = DivWdg()
my.set_as_panel(div)
div.add_class("spt_collection_left_side")
div.add(collections_div)
collections_div.add_class("spt_collection_list")
collections_div.add_style("margin: 5px 0px 5px -5px")
from tactic.ui.panel import ThumbWdg2
parts = my.search_type.split("/")
collection_type = "%s/%s_in_%s" % (parts[0], parts[1], parts[1])
collections_div.add_relay_behavior( {
'type': 'mouseup',
'search_type': my.search_type,
'collection_type': collection_type,
'bvr_match_class': 'spt_collection_item',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_collection_top");
var content = top.getElement(".spt_collection_content");
var list = bvr.src_el.getParent(".spt_collection_list");
var items = list.getElements(".spt_collection_item");
for (var i = 0; i < items.length; i++) {
items[i].setStyle("background", "");
items[i].setStyle("box-shadow", "");
}
bvr.src_el.setStyle("background", "#EEE");
var collection_key = bvr.src_el.getAttribute("spt_collection_key");
var collection_code = bvr.src_el.getAttribute("spt_collection_code");
var collection_path = bvr.src_el.getAttribute("spt_collection_path");
var expr = "@SEARCH("+bvr.collection_type+"['parent_code','"+collection_code+"']."+bvr.search_type+")";
var parent_dict = {};
var parent_collection = bvr.src_el.getParent(".spt_subcollection_wdg");
var path = collection_path.substring(0, collection_path.lastIndexOf("/"));
if (parent_collection) {
for (var i = 0; i < collection_path.split("/").length - 1; i++) {
var n = path.lastIndexOf("/");
var collection_name = path.substring(n+1);
path = path.substring(0, n);
var parent_key = parent_collection.getAttribute("spt_parent_key");
parent_dict[collection_name] = parent_key;
parent_collection = parent_collection.getParent(".spt_subcollection_wdg");
}
}
var cls = "tactic.ui.panel.CollectionContentWdg";
var kwargs = {
collection_key: collection_key,
path: collection_path,
search_type: bvr.search_type,
show_shelf: false,
show_search_limit: true,
expression: expr,
parent_dict: parent_dict
}
spt.panel.load(content, cls, kwargs);
bvr.src_el.setStyle("box-shadow", "0px 0px 3px rgba(0,0,0,0.5)");
// hide the bottom show_search_limit when clicking into a collection
var panel = bvr.src_el.getParent(".spt_panel");
var search_limit_div = panel.getElements(".spt_search_limit_top");
if (search_limit_div.length == 2){
search_limit_div[1].setStyle("visibility", "hidden");
}
'''
} )
collections_div.add_relay_behavior( {
'type': 'mouseup',
'search_type': my.search_type,
'bvr_match_class': 'spt_collection_open',
'cbjs_action': '''
var item = bvr.src_el.getParent(".spt_collection_div_top");
var next = item.getNext();
if (bvr.src_el.hasClass("spt_open")) {
#.........这里部分代码省略.........
示例12: get_versions_wdg
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
def get_versions_wdg(self):
div = DivWdg()
div.add_class("spt_imports")
title_wdg = DivWdg()
div.add(title_wdg)
title_wdg.add("Imports found:")
title_wdg.add_style("padding: 0px 0px 8px 0px")
base_dir = self.kwargs.get("base_dir")
imports_dir = "%s/imports" % base_dir
if not os.path.exists(imports_dir):
imports_dir = base_dir
basenames = os.listdir(imports_dir)
basenames.sort()
basenames.reverse()
div.add_relay_behavior( {
'type': 'mouseup',
'bvr_match_class': "spt_import_item",
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_imports");
var els = top.getElements(".spt_import_info");
for ( var i = 0; i < els.length; i++) {
spt.hide(els[i]);
}
var el = bvr.src_el.getElement(".spt_import_info");
spt.show(el);
'''
} )
# find all the zip files
count = 0
for basename in basenames:
if not basename.endswith(".txt"):
continue
if basename.find("-files-") != -1:
continue
if basename.find("-data-") != -1:
continue
version_wdg = DivWdg()
div.add(version_wdg)
version_wdg.add_style("padding: 3px 3px 3px 12px")
version_wdg.add_class("spt_import_item")
radio = RadioWdg("basename")
version_wdg.add(radio)
radio.set_option("value", basename)
if not count:
radio.set_checked()
version_wdg.add(basename)
version_wdg.add("<br/>")
# add info
path = "%s/%s" % (imports_dir, basename)
f = open(path)
data = f.read()
f.close()
data = jsonloads(data)
table = Table()
version_wdg.add(table)
table.add_class("spt_import_info")
if count:
table.add_style("display: none")
table.set_max_width()
table.add_style("margin-left: 40px")
table.add_style("margin-right: 20px")
version_wdg.add(table)
for name, value in self.data.items():
name = Common.get_display_title(name)
table.add_row()
table.add_cell(name)
table.add_cell(value)
count += 1
if count == 0:
msg_wdg = DivWdg()
div.add(msg_wdg)
#.........这里部分代码省略.........
示例13: get_share_wdg
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
#.........这里部分代码省略.........
spt.panel.load(content, class_name);
//spt.panel.load_popup("Sync Import", class_name);
'''
} )
div.add("<br/>")
search = Search("sthpw/sync_server")
shares = search.get_sobjects()
title_wdg = DivWdg()
div.add( title_wdg )
title_wdg.add( "Share List" )
title_wdg.add_style("padding: 5px")
title_wdg.add_color("background", "background", -10)
title_wdg.add_border()
title_wdg.add_style("margin: 5px -22px 10px -22px")
shares_div = DivWdg()
div.add(shares_div)
shares_div.add_relay_behavior( {
'type': 'mouseup',
'bvr_match_class': 'spt_share_item',
'cbjs_action': '''
var server_code = bvr.src_el.getAttribute("spt_server_code");
var class_name = 'tactic.ui.startup.ShareItemWdg';
var kwargs = {
server_code: server_code
}
var top = bvr.src_el.getParent(".spt_share_top");
var content = top.getElement(".spt_share_content");
spt.panel.load(content, class_name, kwargs);
'''
} )
bgcolor = shares_div.get_color("background", -5)
shares_div.add_relay_behavior( {
'type': 'mouseover',
'bvr_match_class': 'spt_share_item',
'bgcolor': bgcolor,
'cbjs_action': '''
bvr.src_el.setStyle("background", bvr.bgcolor);
'''
} )
shares_div.add_relay_behavior( {
'type': 'mouseout',
'bvr_match_class': 'spt_share_item',
'cbjs_action': '''
bvr.src_el.setStyle("background", "");
'''
} )
示例14: BaseRefreshWdg
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
#.........这里部分代码省略.........
element = xml.create_element("element")
xml.set_attribute(element, "name", self.name)
# create the display handler
display = xml.create_element("display")
xml.set_attribute(display, "class", Common.get_full_class_name(self) )
element.appendChild(display)
# create the options
for name, value in self.kwargs.items():
if value:
option = xml.create_text_element(name, value)
else: # avoid the \n in the textContent of the textNode
option = xml.create_element(name)
display.appendChild(option)
return xml.to_string(element)
def get_top(self):
return self.top
def add_style(self, name, value=None):
return self.top.add_style(name, value=value)
def add_class(self, class_name):
return self.top.add_class(class_name)
def has_class(self, class_name):
return self.top.has_class(class_name)
def add_behavior(self, behavior):
return self.top.add_behavior(behavior)
def add_relay_behavior(self, behavior):
return self.top.add_relay_behavior(behavior)
def set_option(self, name, value):
self.kwargs[name] = value
def get_option(self, name):
return self.kwargs.get(name)
def get_persistent_key(self):
return "whatever"
def commit(self):
# store the widget persistently
config_xml = self.serialize()
key = self.get_persistent_key()
WidgetSettings.set_key_values(key, [config.xml.to_string()])
def get_by_key(self, key):
key = self.get_persistent_key()
return WidgetSettings.set_key_values(key, [config.xml.to_string()])
def set_as_panel(self, widget, class_name='spt_panel', kwargs=None):
self.top = widget
widget.add_class(class_name)
widget.add_attr("spt_class_name", Common.get_full_class_name(self) )
if not kwargs:
kwargs = self.kwargs
for name, value in kwargs.items():
if name == 'class_name':
continue
if value == None:
continue
if type(value) not in types.StringTypes:
value = str(value)
# replace " with ' in case the kwargs is a dict
value = value.replace('"', "'")
if value:
widget.add_attr("spt_%s" % name, value)
def get_top_wdg(self):
return self.top
def process_state(state):
'''process the state object for use with a widget. Usually a dictionary
or a string version of it'''
if not state:
state = {}
elif isinstance(state, basestring):
# FIXME: SECURITY HOLE: NOT SURE ABOUT THIS
if state != 'null':
try:
state = eval(state)
except Exception as e:
print("WARNING: ", str(e))
state = {}
return state
process_state = staticmethod(process_state)
示例15: get_display
# 需要导入模块: from pyasm.web import DivWdg [as 别名]
# 或者: from pyasm.web.DivWdg import add_relay_behavior [as 别名]
#.........这里部分代码省略.........
spt.drag.noop = function(evt, el) {
var top = $(el).getParent(".spt_ingest_top");
var files_el = top.getElement(".spt_to_ingest_files");
evt.stopPropagation();
evt.preventDefault();
evt.dataTransfer.dropEffect = 'copy';
var files = evt.dataTransfer.files;
var delay = 0;
var skip = false;
var regex = new RegExp('(' + bvr.normal_ext.join('|') + ')$', 'i');
for (var i = 0; i < files.length; i++) {
var size = files[i].size;
var file_name = files[i].name;
var is_normal = regex.test(file_name);
if (size >= 10*1024*1024 || is_normal) {
spt.drag.show_file(files[i], files_el, 0, false);
}
else {
spt.drag.show_file(files[i], files_el, delay, true);
if (size < 100*1024) delay += 50;
else if (size < 1024*1024) delay += 500;
else if (size < 10*1024*1024) delay += 1000;
}
}
}
'''
} )
# create a template that will be filled in for each file
files_div.add_relay_behavior( {
'type': 'mouseenter',
'color': files_div.get_color("background3", -5),
'bvr_match_class': 'spt_upload_file',
'cbjs_action': '''
bvr.src_el.setStyle("background", bvr.color);
'''
} )
files_div.add_relay_behavior( {
'type': 'mouseleave',
'bvr_match_class': 'spt_upload_file',
'cbjs_action': '''
bvr.src_el.setStyle("background", "");
'''
} )
files_div.add_relay_behavior( {
'type': 'mouseup',
'bvr_match_class': 'spt_remove',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_upload_file");
spt.behavior.destroy_element(top);
'''
} )
"""
metadata_view = "test/wizard/metadata"
files_div.add_relay_behavior( {
'type': 'mouseup',
'view': metadata_view,
'bvr_match_class': 'spt_upload_file',
'cbjs_action': '''
var class_name = 'tactic.ui.panel.CustomLayoutWdg';