Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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())
Пример #4
0
    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())
Пример #5
0
    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()
Пример #6
0
    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()