Suggestions for VS NORMA Development #52
Replies: 6 comments
-
|
That's quite a list Mike. Let me see where I can add some insights.
Feel free to push back on these. I'm especially curious on the AI results. The web verbalizer is an active project, so things like a 'copy text' button and options UI are not far out. |
Beta Was this translation helpful? Give feedback.
-
1. Date ColumnsThank you for offering a solution. Keep in mind I don't know all that much about VS and working with code extensions. Learning to work with those files may turn into more than what it would take for me to just add the value types where I need them. I re-read my number one and can see that I forgot to add that the biggest help of all would be having those audit values (date added/modified) show up in the ORM verbalization by way of a dropdown option of some kind. Visually seeing them in the relational view would be nice too, but the ORM verbalization is where this would be most helpful. |
Beta Was this translation helpful? Give feedback.
-
2. Additional Data TypesI can see how enums and JSON types would function more as value constraints, and I completely agree with that perspective. My initial reason for bringing these up was to suggest reflecting them explicitly within the NORMA ORM verbalization. Even if they are treated as value types conceptually, it would be incredibly helpful if the verbalization specified when a value is an Enum or JSON. This clarity would make it easier for me to use the verbalization effectively, especially when collaborating with AI tools like Copilot. For example, if the ORM verbalization labeled a value as "JSON" and I copied it into Copilot while working with a PostgreSQL database, Copilot would know to create a column with the appropriate JSON or JSONB data type. Similarly, marking a value as "Enum" would help AI tools interpret the constraints and generate SQL with an ENUM type or its equivalent. Having these designations directly in the verbalization would bridge the gap between conceptual design and practical implementation, saving time, and reducing any inaccuracy. |
Beta Was this translation helpful? Give feedback.
-
3. Indexed ColumnsThank you for the reply on this. It sounds like it would be easier for me to make a note and handle this manually as needed. I appreciate the offer to work with a config file, but I don’t have all that much experience with Visual Studio config files. I'm most likely going to give the ORM verbalization to AI and ask it to create what is needed. With that said, that's where it would be helpful if these indexed columns were reflected within the ORM verbalization. This would provide additional clarity when working with AI. |
Beta Was this translation helpful? Give feedback.
-
4. Improved Contextual DescriptionsThat tool is AWESOME! I use Copilot in Edge. Within Edge, and without having to export anything, Copilot can see everything relating to my project. It can look through all of the tabs too. It sees everything because of that tool. Thank you for this. The one issue I’ve noticed, and this is more of a me problem, is that Copilot in the browser doesn’t carry over what it sees to the desktop version. I like working with the desktop app more so than the browser. Being that I have everything broken up into different tabs, is there a way to do a "copy all" for the complete verbalization of my project? That way I can paste it into a text file and upload it to AI. I know you said you were working on a button. Is this what you are referring to? |
Beta Was this translation helpful? Give feedback.
-
Modifications Required:
Code Suggestion:Here's an idea of what the updated public override void GetItemDrawInfo(ListField listField, int row, ItemDrawInfo itemDrawInfo)
{
base.GetItemDrawInfo(listField, row, itemDrawInfo);
Column currentColumn = this.Items[row] as Column;
Debug.Assert(currentColumn != null, "An item in the ColumnElementListCompartment is not a column.");
// Determine FK/PK
StringBuilder fkPkIndicator = new StringBuilder();
foreach (UniquenessConstraint constraint in UniquenessConstraintIncludesColumn.GetUniquenessConstraints(currentColumn))
{
if (constraint.IsPrimary)
{
fkPkIndicator.Append(PrimaryKeyString);
}
else
{
fkPkIndicator.AppendFormat(AlternateKeyString, /* constraint number logic here */);
}
}
foreach (ColumnReference columnReference in ColumnReference.GetLinksToTargetColumnCollection(currentColumn))
{
fkPkIndicator.AppendFormat(ForeignKeyString, /* FK numbering logic here */);
}
// Get column name
string columnName = currentColumn.Name;
// Get data type
string dataType = GetDataType(currentColumn.AssociatedValueType);
// Combine into a three-column layout
itemDrawInfo.Text = $"{fkPkIndicator.ToString().PadRight(10)} | {columnName.PadRight(20)} | {dataType}";
}
### Display Adjustments:
- You might also need to modify the layout settings in `InitializeShapeFields` to ensure that these columns are aligned properly in the visual representation.
---
### Next Steps:
1. Implement and test these changes in a development environment.
2. Ensure that the layout works well even for wider data types and longer column names.
3. Handle edge cases, such as columns with no FK/PK or undefined data types. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I've been working with NORMA for a little while now and have compiled a few notes along the way. It's possible that some of the items below may already be implemented within NORMA, but I may not be aware of them. I share all of these respectfully and not as a work order.
Date Columns
Additional Data Types
Indexed Columns
Improved Contextual Descriptions
Enhanced Table Display in Relational View
Beta Was this translation helpful? Give feedback.
All reactions