def init(my): assert my.task super(TaskExtraInfoWdg, my).init() # create the visible element icon = IconWdg('Time Card', icon=IconWdg.TIME) my.add(icon) my.add(HtmlElement.b(my.task.get_process())) my.time_card = TimecardWdg() my.time_card.set_task(my.task) from pyasm.security import Login # create the content content = DivWdg() content.add_style('width', '46em') # customize the extra info widget my.set_class('timecard_main') my.set_content(content) my.set_mouseout_flag(False) my.login = Login.get_by_login(my.task.get_assigned()) title = FloatDivWdg() login_name = 'unassigned' my.is_other = False if my.login: login_name = my.login.get_full_name() if my.login.get_login() == Environment.get_login().get_login(): icon = IconWdg(icon=IconWdg.REFRESH) icon.add_class('hand') icon.add_event('onclick', my.time_card.get_refresh_script()) title.add(icon) else: my.is_other = True title.add("Time card - %s" % login_name) content.add(title) content.add(CloseWdg(my.get_off_script())) content.add(HtmlElement.br(2)) content.add(my.time_card, 'time') if not my.login: div = DivWdg( HtmlElement.b( 'Time card cannot be entered for unassigned task.')) content.set_widget(div, 'time') my.height = 60 elif my.is_other: div = DivWdg(HtmlElement.b('Time card cannot be entered for other users [%s].'\ %login_name)) content.set_widget(div, 'time') my.height = 60
def init(my): assert my.task super(TaskExtraInfoWdg, my).init() # create the visible element icon = IconWdg('Time Card', icon=IconWdg.TIME) my.add(icon) my.add(HtmlElement.b(my.task.get_process())) my.time_card = TimecardWdg() my.time_card.set_task(my.task) from pyasm.security import Login # create the content content = DivWdg() content.add_style('width','46em') # customize the extra info widget my.set_class('timecard_main') my.set_content(content) my.set_mouseout_flag(False) my.login = Login.get_by_login(my.task.get_assigned()) title = FloatDivWdg() login_name = 'unassigned' my.is_other = False if my.login: login_name = my.login.get_full_name() if my.login.get_login() == Environment.get_login().get_login(): icon = IconWdg(icon=IconWdg.REFRESH) icon.add_class('hand') icon.add_event('onclick', my.time_card.get_refresh_script()) title.add(icon) else: my.is_other = True title.add("Time card - %s" % login_name) content.add(title) content.add(CloseWdg(my.get_off_script())) content.add(HtmlElement.br(2)) content.add(my.time_card, 'time') if not my.login: div = DivWdg(HtmlElement.b('Time card cannot be entered for unassigned task.')) content.set_widget(div, 'time') my.height = 60 elif my.is_other: div = DivWdg(HtmlElement.b('Time card cannot be entered for other users [%s].'\ %login_name)) content.set_widget(div, 'time') my.height = 60
def _add_user_assign_wdg(my, task, info_span, widget): ''' add a user assignment icon ''' icon = IconWdg('assign', icon=IconWdg.ASSIGN) icon.add_class('hand') assign = UserAssignWdg(check_name=True) assign.set_task(task) # UserAssignWdg will take care of filtering duplicated refresh scripts # eventually it is added into this widget below via assign.get_post_data() assign.set_post_ajax_script(my.get_refresh_script(show_progress=False)) script = [] script.append("Common.follow_click(event, '%s', 12, -15)" \ % UserAssignContainerWdg.CONTAINER_ID) script.append( "set_display_on('%s')" \ % UserAssignContainerWdg.CONTAINER_ID) script.append(assign.get_refresh_script()) icon.add_event('onclick', ';'.join(script)) info_span.add(icon) widget.add(assign.get_post_data())
def _add_user_assign_wdg(self, task, info_span, widget): ''' add a user assignment icon ''' icon = IconWdg('assign', icon=IconWdg.ASSIGN) icon.add_class('hand') assign = UserAssignWdg(check_name=True) assign.set_task(task) # UserAssignWdg will take care of filtering duplicated refresh scripts # eventually it is added into this widget below via assign.get_post_data() assign.set_post_ajax_script(self.get_refresh_script(show_progress=False)) script = [] script.append("Common.follow_click(event, '%s', 12, -15)" \ % UserAssignContainerWdg.CONTAINER_ID) script.append( "set_display_on('%s')" \ % UserAssignContainerWdg.CONTAINER_ID) script.append(assign.get_refresh_script()) icon.add_event('onclick', ';'.join(script)) info_span.add(icon) widget.add(assign.get_post_data())
def get_display(my): delimiter = my.get_delimiter() my.init_setup() sobject = my.get_my_sobject() select_items_name = '%s|%s' % (my.col_name.get_value(), my.SELECT_ITEMS) my.set_ajax_top_id(my.ID) widget = DivWdg(id=my.ID) # mode select mode_cb = FilterCheckboxWdg('display_mode', label='simple view', css='small') # return simple widget if selected if mode_cb.is_checked(False): mode_cb.set_checked() type_select = SelectWdg(my.TYPE, label='Type: ') type_select.set_option('values', 'sequence|map|string') type = my.get_my_sobject().get_value('type') if type: type_select.set_value(type) widget.add(type_select) widget.add(HtmlElement.br(2)) text = TextWdg(select_items_name) text.set_value(my.get_value()) text.set_attr('size', '70') widget.add(text) widget.add(HtmlElement.br(2)) widget.add(mode_cb) return widget if my.is_from_ajax(): widget = Widget() else: widget.add_style('display', 'block') widget.add(my.col_name) widget.add(my.select_items) items = [] sobj_items = [] prod_setting_type = 'sequence' if sobject: sobj_value = sobject.get_value(my.col_name.get_value()) sobj_items = sobj_value.split(delimiter) prod_setting_type = sobject.get_value('type') delete_widget = Widget() delete_mode = HiddenWdg('delete_mode') delete_mode.set_persist_on_submit() # only needs it for the first time # NOTE: this essentially prevents a sequence from having no value at all if not my.items and not delete_mode.get_value() == 'true': items.extend(sobj_items) items.extend(my.items) my.type_select = my.get_type_select(prod_setting_type) my.select_items.set_value(delimiter.join(items)) my.select = my.get_item_list(items) item_span = '' if my.type_select_val == 'map': item_span = my.get_map_wdg() my.select.add_empty_option('-- Map items --', my.EMPTY) else: item_span = my.get_sequence_wdg() my.select.add_empty_option('-- Sequence items --', my.EMPTY) # delete item button icon = IconWdg('Select an item to remove', icon=IconWdg.DELETE) icon.add_class('hand') drop_script = ["drop_item('%s')" % my.SELECT_NAME] drop_script.append(my.get_refresh_script()) icon.add_event('onclick', ';'.join(drop_script)) delete_widget.add(delete_mode) delete_widget.add(icon) function_script = '''function append_item(select_name, new_item, new_item_extra) { var new_item_val = get_elements(new_item).get_value() if (new_item_extra != null) new_item_val = new_item_val + ':' + get_elements(new_item_extra).get_value() var items = get_elements('%s') var items_arr = new Array() var delimiter = '%s' if (items.get_value()) items_arr = items.get_value().split(delimiter) for (var i=0; i < items_arr.length; i++) { if (new_item_val == items_arr[i]) return } var idx = document.form.elements[select_name].selectedIndex // skip the title item if (idx < 0) idx = 0 if (idx == 0) idx = items_arr.length else idx = idx - 1 items_arr.splice(idx, 0, new_item_val) items.set_value(items_arr.join(delimiter)) } ''' % (select_items_name, delimiter) widget.add(HtmlElement.script(function_script)) function_script = '''function drop_item(select_name) { var items = get_elements('%s') var items_arr = new Array() var delimiter = '%s' if (items.get_value()) items_arr = items.get_value().split(delimiter) var idx = document.form.elements[select_name].selectedIndex if (idx == 0 || idx == -1) { alert('You need to pick an item to remove') return } alert("'"+ items_arr[idx-1] + "' removed.") items_arr.splice(idx-1, 1) items.set_value(items_arr.join(delimiter)) var delete_mode = get_elements('delete_mode') delete_mode.set_value('true') } ''' % (select_items_name, delimiter) widget.add(HtmlElement.script(function_script)) my.draw_widgets(widget, delete_widget, item_span) widget.add(HtmlElement.br(2)) widget.add(mode_cb) my.add(widget) return super(CreateSelectWdg, my).get_display()
def get_display(my): delimiter = my.get_delimiter() my.init_setup() sobject = my.get_my_sobject() select_items_name = '%s|%s' %(my.col_name.get_value(), my.SELECT_ITEMS) my.set_ajax_top_id(my.ID) widget = DivWdg(id=my.ID) # mode select mode_cb = FilterCheckboxWdg('display_mode', label='simple view', css='small') # return simple widget if selected if mode_cb.is_checked(False): mode_cb.set_checked() type_select = SelectWdg(my.TYPE, label='Type: ') type_select.set_option('values','sequence|map|string') type = my.get_my_sobject().get_value('type') if type: type_select.set_value(type) widget.add(type_select) widget.add(HtmlElement.br(2)) text = TextWdg(select_items_name) text.set_value(my.get_value()) text.set_attr('size', '70') widget.add(text) widget.add(HtmlElement.br(2)) widget.add(mode_cb) return widget if my.is_from_ajax(): widget = Widget() else: widget.add_style('display', 'block') widget.add(my.col_name) widget.add(my.select_items) items = [] sobj_items= [] prod_setting_type = 'sequence' if sobject: sobj_value = sobject.get_value(my.col_name.get_value()) sobj_items = sobj_value.split(delimiter) prod_setting_type = sobject.get_value('type') delete_widget = Widget() delete_mode = HiddenWdg('delete_mode') delete_mode.set_persist_on_submit() # only needs it for the first time # NOTE: this essentially prevents a sequence from having no value at all if not my.items and not delete_mode.get_value()=='true': items.extend(sobj_items) items.extend(my.items) my.type_select = my.get_type_select(prod_setting_type) my.select_items.set_value(delimiter.join(items)) my.select = my.get_item_list(items) item_span = '' if my.type_select_val == 'map': item_span = my.get_map_wdg() my.select.add_empty_option( '-- Map items --', my.EMPTY) else: item_span = my.get_sequence_wdg() my.select.add_empty_option( '-- Sequence items --', my.EMPTY) # delete item button icon = IconWdg('Select an item to remove', icon=IconWdg.DELETE) icon.add_class('hand') drop_script = ["drop_item('%s')" %my.SELECT_NAME] drop_script.append(my.get_refresh_script()) icon.add_event('onclick', ';'.join(drop_script) ) delete_widget.add(delete_mode) delete_widget.add(icon) function_script = '''function append_item(select_name, new_item, new_item_extra) { var new_item_val = get_elements(new_item).get_value() if (new_item_extra != null) new_item_val = new_item_val + ':' + get_elements(new_item_extra).get_value() var items = get_elements('%s') var items_arr = new Array() var delimiter = '%s' if (items.get_value()) items_arr = items.get_value().split(delimiter) for (var i=0; i < items_arr.length; i++) { if (new_item_val == items_arr[i]) return } var idx = document.form.elements[select_name].selectedIndex // skip the title item if (idx < 0) idx = 0 if (idx == 0) idx = items_arr.length else idx = idx - 1 items_arr.splice(idx, 0, new_item_val) items.set_value(items_arr.join(delimiter)) } '''% (select_items_name, delimiter) widget.add(HtmlElement.script(function_script)) function_script = '''function drop_item(select_name) { var items = get_elements('%s') var items_arr = new Array() var delimiter = '%s' if (items.get_value()) items_arr = items.get_value().split(delimiter) var idx = document.form.elements[select_name].selectedIndex if (idx == 0 || idx == -1) { alert('You need to pick an item to remove') return } alert("'"+ items_arr[idx-1] + "' removed.") items_arr.splice(idx-1, 1) items.set_value(items_arr.join(delimiter)) var delete_mode = get_elements('delete_mode') delete_mode.set_value('true') } '''% (select_items_name, delimiter) widget.add(HtmlElement.script(function_script)) my.draw_widgets(widget, delete_widget, item_span) widget.add(HtmlElement.br(2)) widget.add(mode_cb) my.add(widget) return super(CreateSelectWdg, my).get_display()