We are designing a price calculation tool, for which every property adds a percentage increase/decrease in value of the object. Properties in combination with each other can have shared impact on the percentage increase/decrease.
our object is a laptop,it has a make, a type, memory, cpu, hard-disc (we have 13 such properties)
the make if it is "msi" has a 5% value increase
the type if it is "gx740" has 0% value increase
the memory if it is "8Gb" has a 0% value increase
the memory if it is "16GB" has a 5% value increase
the cpu if it is "8-core" and the memory is "8GB" has a 0% value increase
the cpu if it is "8-core" and the memory is "16GB" has a 5% value increase
the hard-disc if it is "ssd" has a 0% value increase
the hard-disc if it is "hdd" has a -10% value increase
if the make is "msi" type is "gx740" cpu is "6-core" has a -6% value increase
Simply put we can materialize the full matrix from the direct increase/decrease of the properties and replace the percentages of impact of shared properties in the matrix.
We create a form for each of the properties and allow the user to set the increase/decrease. We create a filterable grid-view with the materialized combinations and allow the user to fine-tune the specific combined combinations.
We create a form for each of the properties and allow the user to set the increase/decrease. We create a form in which the user can choose properties and set values for the selected properties and their state We create a list of selected properties so the user can go back later and modify the selections
The problems we have with our approach (1):
Each property will have a multiple possible values, the memory can be one of "4GB", "8GB, "12GB", "16GB",... Materializing such a big matrix is (i think) overwhelming. Lets say 10 states per property, which will give a total of 130 columns per row.
We have to create some intuitive method of editing a column within a selection instead of forcing the user to edit all rows by hand.
We have to somehow show to the user the reason why a property, if it differs from the default increase, is changed (is it because of a combination, of a column, or just a manual edit based on current demand)
The problems we have with our approach (2):
There now needs to be a way of allowing the user to choose which property or combination will take precedence over other modifications to such properties.
This solves the problem of the huge grid editing, but the materialized grid is still required to display the result of the created rules. A mouseover a value could be used to explain the steps used to calculate that value.
The system is not yet created, so no examples of how it is now are present. The user editing the values is a staff member in a admin environment, based on the matrix other users "appraisers" can make valuations for secondhand computers being offered from companies and consumers. The side of the system for the "appraisers" is just a form where they input the specs of the computer. The real use-case of the application is not for computers, but to make it easier to understand than just abstract hierarchical data and matrixes I have put it in terms of a computer.
Given the problemspace it will probably always be complex. We are asking for suggestions, and do not expect a solution for the system as a whole. There will only be one or two uses editing the data