Opened 4 years ago

Closed 3 years ago

# component selection depending on projects

Reported by: Owned by: falkb falkb normal SimpleMultiProjectPlugin normal crossroad, thomasd 0.11

### Description

each project can have its own component set which should be filtered at 'New Ticket'

### comment:2 Changed 4 years ago by falkb

(In [11650]) introduced mapping component<->project (additional Admin panel page for category project)

• Refs #10084: now 'New Ticket' only offers the components associated with the chosen project
• Refs #10085: now 'New Ticket' only offers the versions associated with the chosen project
• Refs #10086: now the project<->version mapping is via the roadmap page, just click on a version date there and assign a project
• Refs #10088: 2 additional checkboxes on the roadmap page: hide milestones + hide versions

### comment:3 follow-up: ↓ 4 Changed 4 years ago by AdrianFritz

Question: is it possible to have a component associated to more than one project?

• Use case 1:
1. a component is developed in project 1
2. same component evolves in project 2
• Use case 2:
1. a component is developed in project 1
2. same component is simultaneously developed under project 2

### comment:4 in reply to: ↑ 3 Changed 4 years ago by falkb

Question: is it possible to have a component associated to more than one project?

Yes, for a list of components and for every component, you just select in which projects the component is available.

### comment:5 Changed 4 years ago by falkb

• Owner changed from crossroad to falkb
• Status changed from new to assigned

### comment:6 Changed 4 years ago by falkb

• Keywords testing removed

Working good.

### comment:8 follow-up: ↓ 9 Changed 4 years ago by heiko.boettger@…

Just tried to create a ticket and found out that there is a little issue. When a ticket is created, the first component is filled in a standard. Now when changing the project selection the component (i think its always the last selection) remains in the combobox. Is it possible to change the component to empty, when the old selection is no longer valid?

### comment:9 in reply to: ↑ 8 Changed 4 years ago by falkb

Just tried to create a ticket and found out that there is a little issue. When a ticket is created, the first component is filled in a standard. Now when changing the project selection the component (i think its always the last selection) remains in the combobox. Is it possible to change the component to empty, when the old selection is no longer valid?

Before I'm able to have a look at this problem in some days, could you have a look at simplemultiprojectplugin/trunk/simplemultiproject/htdocs/filter_milestones.js and see if you can provide a fix to us by yourself?

### comment:10 follow-up: ↓ 12 Changed 4 years ago by heiko.boettger@…

Yes, why not. Ah I see, the problem is that the cur_comp must be reset if not valid:

When I remember js-script right it should look something like that:

function smp_updateSelect(id, newOptions, selectedOption)
{
var field_id = '#field-' + id;
var select = $(field_id); var options; if (select.prop) { options = select.prop('options'); } else { options = select.attr('options'); } select.empty(); var addedOptions = []; if (newOptions) {$.each(newOptions, function(val, text) {
var isSelected = (selectedOption && text == selectedOption);
options[options.length] = new Option(text, text, isSelected, isSelected);
});
}

if (selectedOption && $.inArray(selectedOption, addedOptions) == -1) { options[options.length] = new Option(selectedOption, selectedOption, true, true); } // call custom event trigger to allow other plugins to notify the change$(field_id).trigger("onUpdate");
}

function smp_onProjectChange(project)
{
if (!project) {
project = smp_initialProjectMilestone[0];
}

// milestones
var milestones = smp_milestonesForProject[project];
var selectedMilestone = "";

if (project == smp_initialProjectMilestone[0]) {
selectedMilestone = smp_initialProjectMilestone[1];
}

// components
var components = smp_all_components;
var cur_comp = $('#field-component option:selected').text(); var filtered_components = []; var cur_comp_valid = false; for (var i = 0; i < components.length; i++) { var comp = components[i]; if (!smp_component_projects[comp] ||$.inArray(project, smp_component_projects[comp]) != -1) {
filtered_components.push(comp);
cur_comp_valid = cur_comp_valid || (comp == cur_comp);
}
}

if (!cur_comp || cur_comp == "" || !cur_comp_valid) {
cur_comp = smp_default_component;
}

// versions
}

smp_onProjectChange();
});



Is there a way to know if this is a new ticket and the user never touched the component field. I think this is the only case where the component field should be auto-filled.

### comment:11 Changed 4 years ago by falkb

(In [12006]) Refs #10084: applied the Heiko Böttger's patch of 10, reset of component if not available anymore after project switch. Thank you very much Heiko!

### comment:12 in reply to: ↑ 10 Changed 4 years ago by falkb

Is there a way to know if this is a new ticket and the user never touched the component field.

No, I don't think so

### comment:13 Changed 3 years ago by falkb

• Keywords planned removed
• Resolution set to fixed
• Status changed from assigned to closed

Now I've dropped the idea of reusing 'Admin'=>'Ticket System'=>'Components' instead of having an own 'Admin'=>'Manage Projects'=>'Components'. Reasons:

• It's hard to integrate another column with HTML stream Genshi transformers, especially if other plugins also add columns.
• And the output would be just a cosmetic improvement.