def get_search_wdg(self): filter_div = DivWdg() filter_div.add_style("width: 100px") buttons_list = [ {'label': 'Run Search', 'tip': 'Run search with this criteria' }, ] txt_btn_set = TextBtnSetWdg( position='', buttons=buttons_list, spacing=6, size='large', side_padding=4 ) run_search_bvr = { 'type': 'click_up', 'cbjs_action': ''' spt.app_busy.show('Search ...', 'Searching Active Directory for matching users.'); setTimeout( function() { var top = bvr.src_el.getParent('.ad_search_wdg_top'); var values = spt.api.Utility.get_input_values(top); spt.panel.refresh(top, values); spt.app_busy.hide(); }, 100); ''' } txt_btn_set.get_btn_by_label('Run Search').add_behavior( run_search_bvr ) #filter_div.add( txt_btn_set ) div = DivWdg() div.add_behavior(run_search_bvr) button = ProdIconButtonWdg("Run Search") button.add_behavior(run_search_bvr) div.add(button) filter_div.add(div) return filter_div
def get_search_wdg(my): filter_div = DivWdg() #my.main_src_el_id = my.kwargs.get('main_src_el_id') buttons_list = [{ 'label': 'Run Local Search', 'tip': 'Run search with this criteria' }, { 'label': 'Clear', 'tip': 'Clear all search criteria', 'bvr': { 'cbjs_action': 'spt.api.Utility.clear_inputs(bvr.src_el.getParent(".spt_search"))' } }] txt_btn_set = TextBtnSetWdg(buttons=buttons_list, spacing=6, size='small', side_padding=4) run_search_bvr = { 'type': 'click_up', 'cbjs_action': 'spt.dg_table.local_search_cbk(evt, bvr);', 'panel_id': my.prefix, 'prefix_namespace': my.prefix_namespace } txt_btn_set.get_btn_by_label('Run Local Search').add_behavior( run_search_bvr) filter_div.add(txt_btn_set) return filter_div
def get_action_html(my): search_key = SearchKey.get_by_sobject(my.sobjects[0]) behavior_submit = { 'type': 'click_up', 'cb_fire_named_event': 'append_pressed', 'element_names': my.element_names, 'search_key': search_key, 'input_prefix': my.input_prefix } behavior_cancel = { 'type': 'click_up', 'cb_fire_named_event': 'preclose_edit_popup', 'cbjs_postaction': "spt.popup.destroy( spt.popup.get_popup( $('edit_popup') ) );" } button_list = [{'label': "%s/Close" % my.mode.capitalize(), 'bvr': behavior_submit}, {'label': "Cancel", 'bvr': behavior_cancel}] edit_close = TextBtnSetWdg( buttons=button_list, spacing =6, size='large', \ align='center',side_padding=10) div = DivWdg() div.add_styles('height: 35px; margin-top: 10px;') div.center() div.add(edit_close) return div
def get_search_wdg(self): filter_div = DivWdg() buttons_list = [ { 'label': 'Run Search', 'tip': 'Run search with this criteria' }, #{'label': 'Terminal View', 'tip': 'Launch Terminal View' }, #{'label': 'Clear', 'tip': 'Clear all search criteria', # 'bvr': {'cbjs_action': 'spt.api.Utility.clear_inputs(bvr.src_el.getParent(".spt_search"))'} } ] txt_btn_set = TextBtnSetWdg(position='', buttons=buttons_list, spacing=6, size='small', side_padding=4) # handle the search button run_search_bvr = { 'type': 'click_up', 'cbjs_action': ''' spt.dg_table.search_cbk(evt, bvr); //setTimeout( function() { //var top = bvr.src_el.getParent(".spt_table_search"); //spt.panel.refresh(top); //}, 10); ''', 'panel_id': self.prefix } txt_btn_set.get_btn_by_label('Run Search').add_behavior(run_search_bvr) # handle the terminal button #terminal_bvr = { # 'type': 'click_up', # 'cbjs_action': ''' # bvr.script_code = '784MMS'; # spt.CustomProject.custom_script(evt, bvr); # ''', #} #txt_btn_set.get_btn_by_label('Terminal View').add_behavior( terminal_bvr ) filter_div.add(txt_btn_set) return filter_div
def get_search_wdg(self): filter_div = DivWdg() filter_div.add_style("width: 100px") buttons_list = [ { 'label': 'Run Search', 'tip': 'Run search with this criteria' }, ] txt_btn_set = TextBtnSetWdg(position='', buttons=buttons_list, spacing=6, size='large', side_padding=4) run_search_bvr = { 'type': 'click_up', 'cbjs_action': ''' spt.app_busy.show('Search ...', 'Searching Active Directory for matching users.'); setTimeout( function() { var top = bvr.src_el.getParent('.ad_search_wdg_top'); var values = spt.api.Utility.get_input_values(top); spt.panel.refresh(top, values); spt.app_busy.hide(); }, 100); ''' } txt_btn_set.get_btn_by_label('Run Search').add_behavior(run_search_bvr) #filter_div.add( txt_btn_set ) div = DivWdg() div.add_behavior(run_search_bvr) button = ProdIconButtonWdg("Run Search") button.add_behavior(run_search_bvr) div.add(button) filter_div.add(div) return filter_div
def get_search_wdg(self): filter_div = DivWdg() buttons_list = [ {'label': 'Run Search', 'tip': 'Run search with this criteria' }, #{'label': 'Terminal View', 'tip': 'Launch Terminal View' }, #{'label': 'Clear', 'tip': 'Clear all search criteria', # 'bvr': {'cbjs_action': 'spt.api.Utility.clear_inputs(bvr.src_el.getParent(".spt_search"))'} } ] txt_btn_set = TextBtnSetWdg( position='', buttons=buttons_list, spacing=6, size='small', side_padding=4 ) # handle the search button run_search_bvr = { 'type': 'click_up', 'cbjs_action': ''' spt.dg_table.search_cbk(evt, bvr); //setTimeout( function() { //var top = bvr.src_el.getParent(".spt_table_search"); //spt.panel.refresh(top); //}, 10); ''', 'panel_id': self.prefix } txt_btn_set.get_btn_by_label('Run Search').add_behavior( run_search_bvr ) # handle the terminal button #terminal_bvr = { # 'type': 'click_up', # 'cbjs_action': ''' # bvr.script_code = '784MMS'; # spt.CustomProject.custom_script(evt, bvr); # ''', #} #txt_btn_set.get_btn_by_label('Terminal View').add_behavior( terminal_bvr ) filter_div.add( txt_btn_set ) return filter_div
def get_search_wdg(my): filter_div = DivWdg() #my.main_src_el_id = my.kwargs.get('main_src_el_id') buttons_list = [ {'label': 'Run Local Search', 'tip': 'Run search with this criteria' }, {'label': 'Clear', 'tip': 'Clear all search criteria', 'bvr': {'cbjs_action': 'spt.api.Utility.clear_inputs(bvr.src_el.getParent(".spt_search"))'} } ] txt_btn_set = TextBtnSetWdg( buttons=buttons_list, spacing=6, size='small', side_padding=4 ) run_search_bvr = { 'type': 'click_up', 'cbjs_action': 'spt.dg_table.local_search_cbk(evt, bvr);', 'panel_id': my.prefix, 'prefix_namespace': my.prefix_namespace } txt_btn_set.get_btn_by_label('Run Local Search').add_behavior( run_search_bvr ) filter_div.add( txt_btn_set ) return filter_div
def get_search_wdg(my): filter_div = DivWdg() # my.main_src_el_id = my.kwargs.get('main_src_el_id') buttons_list = [ {"label": "Run Local Search", "tip": "Run search with this criteria"}, { "label": "Clear", "tip": "Clear all search criteria", "bvr": {"cbjs_action": 'spt.api.Utility.clear_inputs(bvr.src_el.getParent(".spt_search"))'}, }, ] txt_btn_set = TextBtnSetWdg(buttons=buttons_list, spacing=6, size="small", side_padding=4) run_search_bvr = { "type": "click_up", "cbjs_action": "spt.dg_table.local_search_cbk(evt, bvr);", "panel_id": my.prefix, "prefix_namespace": my.prefix_namespace, } txt_btn_set.get_btn_by_label("Run Local Search").add_behavior(run_search_bvr) filter_div.add(txt_btn_set) return filter_div
def get_example_display(my): div = DivWdg() div.add_styles("background: grey; padding: 10px; width: 450px;") div.add("<br/><br/>") from tactic.ui.container import RoundedCornerDivWdg rc_wdg = RoundedCornerDivWdg(corner_size=10) # rc_wdg.set_dimensions(width_str="100%", content_height_str='100%', height_str="100%") rs0_wdg = ResizeScrollWdg( width=300, height=200, scroll_bar_size_str='thin', scroll_expansion='inside', # max_content_w=500, max_content_h=400, set_max_to_content_size=True, min_content_w=100, min_content_h=50) rs0_wdg.add(my.get_popwin_oversize_content()) rc_wdg.add(rs0_wdg) div.add(rc_wdg) div.add("<br/><br/>") div.add( "<p style='color: black;'>Resize/Scroll Widget example ...</p>") rs_wdg = ResizeScrollWdg(width=300, height=200, scroll_bar_size_str='thin', scroll_expansion='inside') rs_wdg.add(my.get_popwin_oversize_content()) div.add(rs_wdg) div.add("<br/><br/>") div.add( "<p style='color: black;'>Resize/Scroll Widget example WITH NO RESIZE CAPABILITY" \ " (just scroll bars) ...</p>" ) rs2_wdg = ResizeScrollWdg(width=300, height=200, scroll_bar_size_str='thin', scroll_expansion='inside', no_resize=True) rs2_wdg.add(my.get_popwin_oversize_content()) div.add(rs2_wdg) div.add("<br/><br/>") popwin_id = "NewPopupWindowTest" popwin_title = "New Popup Window Widget Test" popwin = PopWindowWdg(top_id=popwin_id, title=popwin_title, width=150, height=150) popwin.add(my.get_popwin_oversize_content()) div.add(popwin) pwin_launch = DivWdg() pwin_launch.add_styles( "cursor: pointer; background-color: red; color: black; border: 1px solid black; width: 100px; height: 50px;" ) pwin_launch.add_behavior({ 'type': 'click_up', 'cbjs_action': 'spt.popup.open("' + popwin_id + '");' }) pwin_launch.add("Click to launch New Popup Window") div.add(pwin_launch) div.add("<br/><br/>") test_div = DivWdg() test_div.add_styles( "background: black; padding: 10px; width: 350px; text-align: center;" ) test_div.add( SpanWdg("This black DIV has<br/>text-align set to center")) my_table = Table() my_table.add_row() my_table.add_cell("This").add_styles( "border: 1px solid white; padding: 4px;") my_table.add_cell("that").add_styles( "border: 1px solid white; padding: 4px;") my_table.add_cell("and").add_styles( "border: 1px solid white; padding: 4px;") my_table.add_cell("The").add_styles( "border: 1px solid white; padding: 4px;") my_table.add_cell("other").add_styles( "border: 1px solid white; padding: 4px;") test_div.add("<br/><br/>") test_div.add(my_table) test_div.add("<br/><br/>") tmp_div = DivWdg() tmp_div.add_styles( "width: 200px; background-color: green; color: black; padding: 10px;" ) tmp_div.add("I am a DIV without my margins set") test_div.add(tmp_div) test_div.add("<br/><br/>") tmp_div = DivWdg() tmp_div.add_styles( "width: 200px; background-color: green; color: black; padding: 10px;" ) tmp_div.center() tmp_div.add( "I am a DIV with my margins<br/>set using HtmlElement.center()") test_div.add(tmp_div) test_div.add("<br/><br/>") buttons_list = [{ 'label': "Insert", 'tip': "This is an insert", 'bvr': { 'cbjs_action': 'alert("Insert!");' } }, { 'label': 'Cancel', 'tip': 'Cancel', 'bvr': { 'cbjs_action': 'alert("Cancel!");' } }] buttons = TextBtnSetWdg(float="", align="center", buttons=buttons_list, spacing=6, size='medium', side_padding=4) test_div.add(buttons) div.add(test_div) div.add("<br/><br/>") div.add("<br/><br/>") buttons_list = [ { 'label': 'One', 'tip': 'Button One', 'bvr': { 'cbjs_action': 'alert("First button!");' } }, { 'label': 'Two', 'tip': 'Button Two', 'bvr': { 'cbjs_action': 'alert("Second button!");' } }, { 'label': 'Three', 'tip': 'Button Three', 'bvr': { 'cbjs_action': 'alert("Third button!");' } }, { 'label': 'Four', 'tip': 'Button Four', 'bvr': { 'cbjs_action': 'alert("Fourth button!");' } }, ] txt_btn_set = TextBtnSetWdg(float='right', buttons=buttons_list, spacing=6, size='large', side_padding=4) txt_btn_set.get_btn_by_label('Three').add_behavior({ 'type': 'click_up', 'modkeys': 'SHIFT', 'cbjs_action': 'alert("SHIFT happened!");' }) div.add(txt_btn_set) div.add("<br/><br/>") div.add("<br/><br/>") d1 = my.get_simple_div( "Drop Zone (runs cbjs_action of drag-drop element on drop)", None) d1.set_attr("SPT_ACCEPT_DROP", "Qweejibo") d1.add_behavior({ 'type': 'hover', 'mod_styles': 'background-color: green;' }) table1 = Table() tr = table1.add_row() tr.add_behavior({ 'type': 'hover', 'mod_styles': 'background-color: #f11; color: green' }) td = table1.add_cell('what') #td.add_behavior( { 'type': 'hover', 'mod_styles': 'background-color: orange;' } ) td = table1.add_cell('is') #td.add_behavior( { 'type': 'hover', 'mod_styles': 'background-color: green;' } ) div.add(table1) # d2 = my.get_simple_div( "Pick Up!", "white" ) d2 = my.get_simple_div("Override with 'accept_drop' behavior!", None) d2.add_looks("menu") # NOTE: with 'accept_drop' behavior you do not need to set the "SPT_ACCEPT_DROP" attribute on the # given drop-on element, just need to add the same value to a 'drop_code' attribute in the # 'accept_drop' bvr spec (doing this will automatically add it to the SPT_ACCEPT_DROP at # behavior construction time # so we do not need this here --> d2.set_attr("SPT_ACCEPT_DROP","Qweejibo") d2.add_behavior({ 'type': 'accept_drop', 'cbjs_action': 'log.debug("Override #1 on Qweejibo");', 'drop_code': 'Qweejibo' }) d2.add_behavior({ 'type': 'accept_drop', 'cbjs_action': ''' log.debug("Override #2 on Qweejibo"); var el = bvr._drop_source_bvr.src_el; el.setStyle("background-color", "white"); ''', 'drop_code': 'Qweejibo' }) d2.add_behavior({'type': 'hover', 'add_looks': 'menu_hover'}) d2.add_behavior({ 'type': 'hover', 'mod_styles': 'border: 1px solid red;', 'drag_drop_codes': 'Qweejibo', }) div.add(d1) div.add("<br/>") div.add(d2) div.add("<br/><br/>") div.add("<br/><br/>") btn = DivWdg() btn.add("TEST JS LOG TIME") btn.add_styles( "padding: 4px; width: 150px; cursor: pointer; background: red; color: white; " + "border: 1px solid white;") btn.add_behavior({ 'type': 'click', 'cbjs_action': 'spt.js_log.test_perf();' }) div.add(btn) div.add("<br/><br/>") dragme = DivWdg() dragme.add_styles( "background: blue; padding: 10px; width: 200px; border: 1px solid black; " \ "position: absolute; top: 200px; left: 400px; cursor: default;" ) dragme.add("Click me OR Drag me!") # dragme.add_behavior( { 'type': 'drag', 'drag_el': '@', 'use_default_cbs': 'true', # 'cbjs_action_onnomotion': 'alert("I\'ve been clicked!");' } ) dragme.add_behavior({ 'type': 'smart_drag', 'drag_el': '@', 'use_copy': 'true', 'use_delta': 'true', 'dx': 1, 'dy': 1, 'drop_code': 'Qweejibo', 'copy_styles': 'background: red; opacity: .3;', 'cbjs_action': 'alert("Got Qweejibo");', 'cbjs_action_onnomotion': 'alert("I\'ve been clicked!");' }) div.add(dragme) div.add("<br/><br/>") select = SelectWdg("OnChangeTestSelectWidget") select.add_behavior({ 'type': 'change', 'cbjs_preaction': ''' alert("Click OK then see Web Client Output Log for 'change' behavior activity"); log.debug("[preaction] My value is now: "+bvr.src_el.value); ''', 'cbjs_action': 'log.debug("[action] My value is now: "+bvr.src_el.value);', 'cbjs_postaction': 'log.debug("[postaction] My value is now: "+bvr.src_el.value);' }) select.add_behavior({ 'type': 'change', 'cbjs_action': 'log.debug("ORIG - stacked change behavior #2!");' }) select.add_behavior({ 'type': 'change', 'cbjs_action': 'log.debug("ORIG - stacked change behavior #3!");' }) select.add_behavior({ 'type': 'change', 'cbjs_action': 'log.debug("ORIG - stacked change behavior #4!");' }) select.set_option("values", "One|Day|In|Your|Life") select.set_value("Life") # Test for set_behavior override with stacked onchange behaviors ... ''' select.set_behavior( {'type': 'change', 'cbjs_action': 'alert("This is what me gots: "+bvr.src_el.value);'} ); select.add_behavior( {'type': 'change', 'cbjs_action': 'log.debug("OVERRIDE - stacked change behavior #5!");'} ); select.add_behavior( {'type': 'change', 'cbjs_action': 'log.debug("OVERRIDE - stacked change behavior #6!");'} ); ''' div.add(select) div.add("<br/><br/>") click_core_div = DivWdg() click_core_div.add_styles( "background-color: blue; color: white; border: 1px solid black; padding: 10px" ) click_core_div.add_styles("cursor: pointer;") click_core_div.add("Click me for preaction, action, postaction test") click_core_div.add_behavior({ 'type': 'click', 'cbjs_preaction': ''' alert("Click OK then see Web output log for 'click' behavior activity"); log.debug("Click pre-action"); ''', 'cbjs_action': 'log.debug("Click action");', 'cbjs_postaction': 'log.debug("Click post-action");' }) div.add(click_core_div) div.add("<br/><br/>") override = DivWdg() override.add_styles( "padding: 4px; background: white; color: black; border: 1px solid black; cursor: pointer;" ) override.add("Set Behavior Override Test") bvr = { 'type': 'click', 'modkeys': 'SHIFT', 'cbjs_action': 'alert("Load ONE");' } override.add_behavior(bvr) bvr = { 'type': 'click', 'modkeys': 'SHIFT', 'cbjs_action': 'alert("Load ONE OVERRIDDEN!");' } override.set_behavior(bvr) div.add(override) div.add("<br/><br/>") div1 = DivWdg() div1.add_styles( "background: #444477; border: solid 1px black; padding: 10px;") div1.add("Div1") div1.set_id("Div_1") div2 = DivWdg() div2.add_styles( "background: #4444BB; border: solid 1px black; padding: 10px; cursor: pointer;" ) div2.add("Div2") div2.set_id("Div_2") # div2.add_behavior( { 'type': 'click_up', 'cbjs_action': '$("Div_3").inject("Div_2","after");' } ) div2.add_behavior({ 'type': 'click_up', 'cbjs_action': '$("Div_3").inject("Div_1","bottom");' }) div1.add(div2) div.add(div1) div.add("<br/><br/>") div3 = DivWdg() div3.add_styles( "background: #4444FF; border: solid 1px black; padding: 10px;") div3.add("Div3") div3.set_id("Div_3") div.add(div3) return div
def get_action_html(my): search_key = SearchKey.get_by_sobject(my.sobjects[0]) search_type = my.sobjects[0].get_base_search_type() div = DivWdg(css='centered') div.add_behavior( { 'type': 'load', 'cbjs_action': my.get_onload_js() } ) div.add_styles('height: 35px; margin-top: 10px;') div.add_named_listener('close_EditWdg', ''' var popup = bvr.src_el.getParent( ".spt_popup" ); if (popup) spt.popup.close(popup); ''') # custom callbacks cbjs_cancel = my.kwargs.get('cbjs_cancel') if not cbjs_cancel: cbjs_cancel = ''' spt.named_events.fire_event('preclose_edit_popup', {}); spt.named_events.fire_event('close_EditWdg', {}) ''' # custom callbacks cbjs_insert_path = my.kwargs.get('cbjs_%s_path' % my.mode) cbjs_insert = None if cbjs_insert_path: script_obj = CustomScript.get_by_path(cbjs_insert_path) cbjs_insert = script_obj.get_value("script") cbjs_insert = cbjs_insert.replace("'", '"') # get it inline if not cbjs_insert: cbjs_insert = my.kwargs.get('cbjs_%s' % my.mode) # use a default if not cbjs_insert: cbjs_insert = ''' spt.edit.edit_form_cbk(evt, bvr); ''' element_names = my.element_names[:] for element_name in my.skipped_element_names: element_names.remove(element_name) # Must not have postaction which closes the EditWdg before upload finishes from tactic.ui.widget import TextBtnWdg, TextBtnSetWdg bvr = { 'cbjs_action': cbjs_insert, 'named_event': 'close_EditWdg', 'element_names': element_names, 'search_key': search_key, 'input_prefix': my.input_prefix, 'view': my.view } keys = WebContainer.get_web().get_form_keys() for key in keys: bvr[key] = WebContainer.get_web().get_form_value(key) label = my.mode if label == 'edit': label = 'save' buttons_list = [ { 'label': label.capitalize(), 'tip': label.capitalize(), 'bvr': bvr }, { 'label': 'Cancel', 'tip': 'Cancel', 'bvr': { 'cbjs_action': cbjs_cancel } } ] buttons = TextBtnSetWdg( align="center", buttons=buttons_list, spacing=10, size='large', side_padding=4 ) div.add(buttons) return div
def get_display(self): top = DivWdg() search_type = self.kwargs.get("search_type") view = self.kwargs.get("view") element_name = self.kwargs.get("element_name") config_view = WidgetConfigView.get_by_search_type(search_type, view) #inner_div = RoundedCornerDivWdg(hex_color_code="949494",corner_size="10") inner_div = RoundedCornerDivWdg(hex_color_code="272727", corner_size="10") inner_div.set_dimensions(width_str='400px', content_height_str='600px') top.add(inner_div) # add the save button buttons_list = [] buttons_list.append({ 'label': 'Save as View', 'tip': 'Save as View', 'bvr': { 'cbjs_action': "alert('Not Implemented')" } }) buttons_list.append({ 'label': 'Save as Def', 'tip': 'Save as Definition', 'bvr': { 'cbjs_action': "alert('Not Implemented')" } }) buttons = TextBtnSetWdg(float="right", buttons=buttons_list, spacing=6, size='small', side_padding=4) inner_div.add(buttons) title_div = DivWdg() title_div.add_style("margin-bottom: 10px") title_div.add_class("maq_search_bar") title_div.add("Element Definition") inner_div.add(title_div) test = SimpleElementDefinitionWdg(config_view=config_view, element_name=element_name) inner_div.add(test) config_title_wdg = DivWdg() inner_div.add(config_title_wdg) config_title_wdg.add("<b>Definitions in config</b>") config_title_wdg.add_style("margin: 15px 0px 5px 0px") for config in config_view.get_configs(): view = config.get_view() xml = config.get_element_xml(element_name) config_div = DivWdg() inner_div.add(config_div) # add the title from pyasm.widget import SwapDisplayWdg, IconWdg view_div = DivWdg() view_div.add_class("spt_view") config_div.add(view_div) if not xml: icon_wdg = IconWdg("Nothing defined", IconWdg.DOT_RED) icon_wdg.add_style("float: right") view_div.add(icon_wdg) else: icon_wdg = IconWdg("Is defined", IconWdg.DOT_GREEN) icon_wdg.add_style("float: right") view_div.add(icon_wdg) swap = SwapDisplayWdg() view_div.add(swap) swap.add_action_script(''' var info_wdg = bvr.src_el.getParent('.spt_view').getElement('.spt_info'); spt.toggle_show_hide(info_wdg); ''') mode = "predefined" file_path = config.get_file_path() if not file_path: mode = "database" elif file_path == 'generated': mode = 'generated' # display the title view_div.add("%s" % view) view_div.add(" - [%s]" % mode) info_div = DivWdg() info_div.add_class("spt_info") info_div.add_style("margin-left: 20px") info_div.add_style("display: none") #if not xml: # info_div.add_style("display: none") #else: # swap.set_off() view_div.add(info_div) path_div = DivWdg() if not file_path: file_path = mode path_div.add("Defined in: %s" % file_path) info_div.add(path_div) text_wdg = TextAreaWdg() text_wdg.set_option("rows", 15) text_wdg.set_option("cols", 80) text_wdg.set_value(xml) info_div.add(text_wdg) #view_div.add("<hr/>") return top
def get_example_display(self): div = DivWdg() div.add_styles("background: grey; padding: 10px; width: 450px;") div.add( "<br/><br/>" ) from tactic.ui.container import RoundedCornerDivWdg rc_wdg = RoundedCornerDivWdg(corner_size=10) # rc_wdg.set_dimensions(width_str="100%", content_height_str='100%', height_str="100%") rs0_wdg = ResizeScrollWdg( width=300, height=200, scroll_bar_size_str='thin', scroll_expansion='inside', # max_content_w=500, max_content_h=400, set_max_to_content_size=True, min_content_w=100, min_content_h=50 ) rs0_wdg.add( self.get_popwin_oversize_content() ) rc_wdg.add( rs0_wdg ) div.add( rc_wdg ) div.add( "<br/><br/>" ) div.add( "<p style='color: black;'>Resize/Scroll Widget example ...</p>" ) rs_wdg = ResizeScrollWdg( width=300, height=200, scroll_bar_size_str='thin', scroll_expansion='inside' ) rs_wdg.add( self.get_popwin_oversize_content() ) div.add( rs_wdg ) div.add( "<br/><br/>" ) div.add( "<p style='color: black;'>Resize/Scroll Widget example WITH NO RESIZE CAPABILITY" \ " (just scroll bars) ...</p>" ) rs2_wdg = ResizeScrollWdg( width=300, height=200, scroll_bar_size_str='thin', scroll_expansion='inside', no_resize=True ) rs2_wdg.add( self.get_popwin_oversize_content() ) div.add( rs2_wdg ) div.add( "<br/><br/>" ) popwin_id = "NewPopupWindowTest" popwin_title = "New Popup Window Widget Test" popwin = PopWindowWdg(top_id=popwin_id, title=popwin_title, width=150, height=150) popwin.add( self.get_popwin_oversize_content() ) div.add( popwin ) pwin_launch = DivWdg() pwin_launch.add_styles("cursor: pointer; background-color: red; color: black; border: 1px solid black; width: 100px; height: 50px;") pwin_launch.add_behavior( {'type': 'click_up', 'cbjs_action': 'spt.popup.open("' + popwin_id + '");'} ) pwin_launch.add("Click to launch New Popup Window") div.add( pwin_launch ) div.add( "<br/><br/>" ) test_div = DivWdg() test_div.add_styles("background: black; padding: 10px; width: 350px; text-align: center;") test_div.add( SpanWdg("This black DIV has<br/>text-align set to center") ) my_table = Table() my_table.add_row() my_table.add_cell("This").add_styles("border: 1px solid white; padding: 4px;") my_table.add_cell("that").add_styles("border: 1px solid white; padding: 4px;") my_table.add_cell("and").add_styles("border: 1px solid white; padding: 4px;") my_table.add_cell("The").add_styles("border: 1px solid white; padding: 4px;") my_table.add_cell("other").add_styles("border: 1px solid white; padding: 4px;") test_div.add( "<br/><br/>" ) test_div.add( my_table ) test_div.add( "<br/><br/>" ) tmp_div = DivWdg() tmp_div.add_styles("width: 200px; background-color: green; color: black; padding: 10px;") tmp_div.add("I am a DIV without self margins set") test_div.add(tmp_div) test_div.add( "<br/><br/>" ) tmp_div = DivWdg() tmp_div.add_styles("width: 200px; background-color: green; color: black; padding: 10px;") tmp_div.center() tmp_div.add("I am a DIV with self margins<br/>set using HtmlElement.center()") test_div.add(tmp_div) test_div.add( "<br/><br/>" ) buttons_list = [ { 'label': "Insert", 'tip': "This is an insert", 'bvr': {'cbjs_action': 'alert("Insert!");'} }, { 'label': 'Cancel', 'tip': 'Cancel', 'bvr': {'cbjs_action': 'alert("Cancel!");'} } ] buttons = TextBtnSetWdg( float="", align="center", buttons=buttons_list, spacing=6, size='medium', side_padding=4 ) test_div.add( buttons ) div.add(test_div) div.add( "<br/><br/>" ) div.add( "<br/><br/>" ) buttons_list = [ {'label': 'One', 'tip': 'Button One', 'bvr': {'cbjs_action': 'alert("First button!");'} }, {'label': 'Two', 'tip': 'Button Two', 'bvr': {'cbjs_action': 'alert("Second button!");'} }, {'label': 'Three', 'tip': 'Button Three', 'bvr': {'cbjs_action': 'alert("Third button!");'} }, {'label': 'Four', 'tip': 'Button Four', 'bvr': {'cbjs_action': 'alert("Fourth button!");'} }, ] txt_btn_set = TextBtnSetWdg( float='right', buttons=buttons_list, spacing=6, size='large', side_padding=4 ) txt_btn_set.get_btn_by_label('Three').add_behavior( {'type': 'click_up', 'modkeys': 'SHIFT', 'cbjs_action': 'alert("SHIFT happened!");'} ) div.add( txt_btn_set ) div.add( "<br/><br/>" ) div.add( "<br/><br/>" ) d1 = self.get_simple_div( "Drop Zone (runs cbjs_action of drag-drop element on drop)", None ) d1.set_attr("SPT_ACCEPT_DROP","Qweejibo") d1.add_behavior( { 'type': 'hover', 'mod_styles': 'background-color: green;' } ) table1 = Table() tr = table1.add_row() tr.add_behavior( { 'type': 'hover', 'mod_styles': 'background-color: #f11; color: green' } ) td = table1.add_cell('what') #td.add_behavior( { 'type': 'hover', 'mod_styles': 'background-color: orange;' } ) td = table1.add_cell('is') #td.add_behavior( { 'type': 'hover', 'mod_styles': 'background-color: green;' } ) div.add(table1) # d2 = self.get_simple_div( "Pick Up!", "white" ) d2 = self.get_simple_div( "Override with 'accept_drop' behavior!", None ) d2.add_looks("menu"); # NOTE: with 'accept_drop' behavior you do not need to set the "SPT_ACCEPT_DROP" attribute on the # given drop-on element, just need to add the same value to a 'drop_code' attribute in the # 'accept_drop' bvr spec (doing this will automatically add it to the SPT_ACCEPT_DROP at # behavior construction time # so we do not need this here --> d2.set_attr("SPT_ACCEPT_DROP","Qweejibo") d2.add_behavior( { 'type': 'accept_drop', 'cbjs_action': 'log.debug("Override #1 on Qweejibo");', 'drop_code': 'Qweejibo' } ) d2.add_behavior( { 'type': 'accept_drop', 'cbjs_action': ''' log.debug("Override #2 on Qweejibo"); var el = bvr._drop_source_bvr.src_el; el.setStyle("background-color", "white"); ''', 'drop_code': 'Qweejibo' } ) d2.add_behavior( { 'type': 'hover', 'add_looks': 'menu_hover' } ) d2.add_behavior( { 'type': 'hover', 'mod_styles': 'border: 1px solid red;', 'drag_drop_codes': 'Qweejibo', } ) div.add( d1 ) div.add( "<br/>" ) div.add( d2 ) div.add( "<br/><br/>" ) div.add( "<br/><br/>" ) btn = DivWdg() btn.add("TEST JS LOG TIME") btn.add_styles("padding: 4px; width: 150px; cursor: pointer; background: red; color: white; " + "border: 1px solid white;") btn.add_behavior( { 'type': 'click', 'cbjs_action': 'spt.js_log.test_perf();' } ) div.add( btn ) div.add( "<br/><br/>" ) dragme = DivWdg() dragme.add_styles( "background: blue; padding: 10px; width: 200px; border: 1px solid black; " \ "position: absolute; top: 200px; left: 400px; cursor: default;" ) dragme.add( "Click me OR Drag me!" ) # dragme.add_behavior( { 'type': 'drag', 'drag_el': '@', 'use_default_cbs': 'true', # 'cbjs_action_onnomotion': 'alert("I\'ve been clicked!");' } ) dragme.add_behavior( { 'type': 'smart_drag', 'drag_el': '@', 'use_copy': 'true', 'use_delta': 'true', 'dx': 1, 'dy': 1, 'drop_code': 'Qweejibo', 'copy_styles': 'background: red; opacity: .3;', 'cbjs_action': 'alert("Got Qweejibo");', 'cbjs_action_onnomotion': 'alert("I\'ve been clicked!");' } ) div.add( dragme ) div.add( "<br/><br/>" ) select = SelectWdg("OnChangeTestSelectWidget") select.add_behavior( {'type': 'change', 'cbjs_preaction': ''' alert("Click OK then see Web Client Output Log for 'change' behavior activity"); log.debug("[preaction] My value is now: "+bvr.src_el.value); ''', 'cbjs_action': 'log.debug("[action] My value is now: "+bvr.src_el.value);', 'cbjs_postaction': 'log.debug("[postaction] My value is now: "+bvr.src_el.value);' } ); select.add_behavior( {'type': 'change', 'cbjs_action': 'log.debug("ORIG - stacked change behavior #2!");'} ); select.add_behavior( {'type': 'change', 'cbjs_action': 'log.debug("ORIG - stacked change behavior #3!");'} ); select.add_behavior( {'type': 'change', 'cbjs_action': 'log.debug("ORIG - stacked change behavior #4!");'} ); select.set_option("values", "One|Day|In|Your|Life") select.set_value("Life") # Test for set_behavior override with stacked onchange behaviors ... ''' select.set_behavior( {'type': 'change', 'cbjs_action': 'alert("This is what me gots: "+bvr.src_el.value);'} ); select.add_behavior( {'type': 'change', 'cbjs_action': 'log.debug("OVERRIDE - stacked change behavior #5!");'} ); select.add_behavior( {'type': 'change', 'cbjs_action': 'log.debug("OVERRIDE - stacked change behavior #6!");'} ); ''' div.add(select) div.add( "<br/><br/>" ) click_core_div = DivWdg() click_core_div.add_styles( "background-color: blue; color: white; border: 1px solid black; padding: 10px" ) click_core_div.add_styles( "cursor: pointer;" ) click_core_div.add( "Click me for preaction, action, postaction test" ) click_core_div.add_behavior( {'type': 'click', 'cbjs_preaction': ''' alert("Click OK then see Web output log for 'click' behavior activity"); log.debug("Click pre-action"); ''', 'cbjs_action': 'log.debug("Click action");', 'cbjs_postaction': 'log.debug("Click post-action");' } ) div.add( click_core_div ) div.add( "<br/><br/>" ) override = DivWdg() override.add_styles( "padding: 4px; background: white; color: black; border: 1px solid black; cursor: pointer;" ) override.add( "Set Behavior Override Test" ) bvr = { 'type': 'click', 'modkeys': 'SHIFT', 'cbjs_action': 'alert("Load ONE");' } override.add_behavior( bvr ) bvr = { 'type': 'click', 'modkeys': 'SHIFT', 'cbjs_action': 'alert("Load ONE OVERRIDDEN!");' } override.set_behavior( bvr ) div.add(override) div.add( "<br/><br/>" ) div1 = DivWdg() div1.add_styles("background: #444477; border: solid 1px black; padding: 10px;") div1.add("Div1") div1.set_id("Div_1") div2 = DivWdg() div2.add_styles("background: #4444BB; border: solid 1px black; padding: 10px; cursor: pointer;") div2.add("Div2") div2.set_id("Div_2") # div2.add_behavior( { 'type': 'click_up', 'cbjs_action': '$("Div_3").inject("Div_2","after");' } ) div2.add_behavior( { 'type': 'click_up', 'cbjs_action': '$("Div_3").inject("Div_1","bottom");' } ) div1.add( div2 ) div.add(div1) div.add("<br/><br/>") div3 = DivWdg() div3.add_styles("background: #4444FF; border: solid 1px black; padding: 10px;") div3.add("Div3") div3.set_id("Div_3") div.add(div3) return div