Le 2014-07-08 14:35, Ashutosh Dhundhara a écrit :
On Tuesday, July 8, 2014, Marc Delisle <marc@infomarc.info mailto:marc@infomarc.info> wrote:
Le 2014-07-08 13:33, Ashutosh Dhundhara a écrit : > On Tue, Jul 8, 2014 at 9:04 PM, Marc Delisle <marc@infomarc.info > <mailto:marc@infomarc.info>> wrote: > > Le 2014-07-08 10:48, Ashutosh Dhundhara a écrit : > > On Tue, Jul 8, 2014 at 6:01 PM, Marc Delisle <marc@infomarc.info > <mailto:marc@infomarc.info> > > <mailto:marc@infomarc.info <mailto:marc@infomarc.info>>> wrote: > > > > Le 2014-07-08 07:52, Ashutosh Dhundhara a écrit : > > > Hi, > > > > > > I have got some ideas regarding RFE #908 > > > <http://sourceforge.net/p/phpmyadmin/feature-requests/908/> > > (Improvements for > > > the table editor (index creation)). > > > > > > *_1. Making Column section on 'Add Index' dialog sort-able._* > > > With this user will be able to change the order of columns > in case of > > > composite keys. > > > > > > *_2. Displaying a dialog box when multiple columns for same > type of > > > index are selected on 'Create table' page._* > > > This dialog will have two options: 'Create new' and 'Create > > composite'. > > > - 'Create new' will allow user to create a new single column > key. > > (Table > > > can have only one Primary key) > > > - 'Create composite' will allow user to add that column to a > existing > > > key (to be created) and sort the order of columns. > > > > > > Will this implement this feature request? > > > > Hi Ashutosh, > > first, the feature request says "If I add two indexed fields to a > > table"; remember that this action can be done on initial table > creation, > > and when adding columns on an existing table. > > > > > > Thanks for pointing this out. I missed that 'adding column on an > > existing table' part. > > > > > > > > About your suggestion #1, are you talking about the dialog > that appears > > after choosing table Structure > Indexes > Create an index on > x columns > > ? If so, the user can already choose the columns in the > correct order; > > so you want to help the user change his mind when creating the > index? > > > > I am not against, but this would be more useful when _editing_ > an index. > > Or it can be done in both situations. > > > > > > > > Yeah, this can be done with the existing system. I failed to see that. > > I mean, calling the existing index editor (improved with the sortable > columns), when adding the columns with an index choice selected. > > > But the user can still change the order of columns using the select > lists on the 'Edit Index' dialog. Correct, or by dragging them (this is what you meant by "sortable", right?)
Yeah, I meant by dragging with the use of existing jQuery UI Sortable plugin.
> > > > > > > > About your suggestion #2, if the user chose PRIMARY in the > selector for > > two columns, it makes no sense to show this additional dialog > (unless > > you want him to confirm that the PRIMARY will be composite) > but it makes > > sense to allow column sorting. > > > > > > Yeah Marc, I won't show this dialog for PRIMARY key. > > But if the user wants to create a composite primary key, I expect that > you will show the dialog for choosing the index order. > > > Yeah, I will do that. > > > > > > > > > > If he chose UNIQUE or INDEX, instead of "Create new" I would > say "Create > > single-column indexes". The other message could be "Create a > composite > > index" but do you suggest that this choice opens the > already-existing > > Edit index dialog, which you would prefill with the chosen > column names? > > > > As per the feature request, the default choice should be to create > > single-column indexes. > > > > > > I think you are getting it wrong. This part is for 'Create table' page > > and 'add column to existing table' page. Lets say I am creating a new > > table. I have added a column `col1` and selected UNIQUE index for it > > (before clicking 'Go'). I won't see any dialog yet. Now lets I have > > added another column `col2` and selected UNIQUE index for this as > well. > > Now I will get a dialog asking for "Create single-column indexes" or > > "Create a composite index". If I will choose "Create a composite > index", > > then I will get a list of all temporary UNIQUE indexes and I can merge > > that column into any of these indexes. > > For PRIMARY index, we will need only the composite-index part. > > But the create table form can still change before submission. What > happens if the user goes back to col1 and unselects UNIQUE? > > > We can remove that column from the corresponding indexes and add it a > new as before. Yes, but the logic will be more complex. Maybe it would be better to show a series of dialogs at the end when user submits the form?
Can you please elaborate a little this series of dialogs part? I am going to temporarily hold this keys and their order information in JS variables. So nothing is committed yet. Its just a simple manipulation of JS variables only.
Sounds good to do it your way.
> > > > > > > I think this will also handle the issue highlighted by you in the > next mail? > > Not sure, it depends on the moment when the user uses the index selector > and for which column. > > > Lets user first selects INDEX for col a (no dialog box yet); then > selects INDEX for col b too and he gets a dialog box. Then he adds col b > with col a's index by choosing "Create a composite index" option. And > finally he selects UNIQUE for col c and again he gets a dialog box. Then > he chooses "Create single-column indexes" option. In this way he can get > composite-index for a + b and single index on c. Is this the case you > are referring? This case would work, but how can you detect if the user wants to create a composite on cols A + C and another composite on cols B + D?
The user will get a list all temporarily created indexes when he will choose "Create a composite index" option. For instance, in this case lets say the user has newly added columns A,B,C and D and he has already created composite index A+C and single-column index B. Now when he will choose for composite INDEX for D, he will be asked:
Add this column to which of the following indexes: <radio_button> A+C <radio_button> B
After choosing the combination, he will choose the order of the columns. And as I have mentioned above, I will be holding this information in JS variables. Nothing is committed yet.
Sounds good.