Skip to content

Commit

Permalink
Merge pull request #4280 from rauenzi/promoted-alias
Browse files Browse the repository at this point in the history
Add option for promoted aliases
  • Loading branch information
zadam authored Sep 25, 2023
2 parents c14ce2c + 149462e commit 4ac609f
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ function parse(value) {

defObj.numberPrecision = parseInt(chunks[1]);
}
else if (token.startsWith('alias')) {
const chunks = token.split('=');

defObj.promotedAlias = chunks[1];
}
else if (token.startsWith('inverse')) {
const chunks = token.split('=');

Expand Down
23 changes: 23 additions & 0 deletions src/public/app/widgets/attribute_widgets/attribute_detail.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,14 @@ const TPL = `
<th>Promoted:</th>
<td><input type="checkbox" class="attr-input-promoted form-control form-control-sm" /></td>
</tr>
<tr class="attr-row-promoted-alias">
<th title="The name to be displayed in the promoted attributes UI.">Alias:</th>
<td>
<div class="input-group">
<input type="text" class="attr-input-promoted-alias form-control" />
</div>
</td>
</tr>
<tr class="attr-row-multiplicity">
<th title="Multiplicity defines how many attributes of the same name can be created - at max 1 or more than 1.">Multiplicity:</th>
<td>
Expand Down Expand Up @@ -323,6 +331,10 @@ export default class AttributeDetailWidget extends NoteContextAwareWidget {
this.$inputPromoted = this.$widget.find('.attr-input-promoted');
this.$inputPromoted.on('change', () => this.userEditedAttribute());

this.$rowPromotedAlias = this.$widget.find('.attr-row-promoted-alias');
this.$inputPromotedAlias = this.$widget.find('.attr-input-promoted-alias');
this.$inputPromotedAlias.on('change', () => this.userEditedAttribute());

this.$rowMultiplicity = this.$widget.find('.attr-row-multiplicity');
this.$inputMultiplicity = this.$widget.find('.attr-input-multiplicity');
this.$inputMultiplicity.on('change', () => this.userEditedAttribute());
Expand Down Expand Up @@ -453,6 +465,11 @@ export default class AttributeDetailWidget extends NoteContextAwareWidget {
.prop("checked", !!definition.isPromoted)
.attr('disabled', () => !isOwned);

this.$rowPromotedAlias.toggle(!!definition.isPromoted);
this.$inputPromotedAlias
.val(definition.promotedAlias)
.attr('disabled', () => !isOwned);

this.$rowMultiplicity.toggle(['label-definition', 'relation-definition'].includes(this.attrType));
this.$inputMultiplicity
.val(definition.multiplicity)
Expand Down Expand Up @@ -673,6 +690,10 @@ export default class AttributeDetailWidget extends NoteContextAwareWidget {

if (this.$inputPromoted.is(":checked")) {
props.push("promoted");

if (this.$inputPromotedAlias.val() !== '') {
props.push(`alias=${this.$inputPromotedAlias.val()}`);
}
}

props.push(this.$inputMultiplicity.val());
Expand All @@ -693,6 +714,8 @@ export default class AttributeDetailWidget extends NoteContextAwareWidget {
this.attrType === 'label-definition'
&& this.$inputLabelType.val() === 'number');

this.$rowPromotedAlias.toggle(this.$inputPromoted.is(":checked"));

return props.join(",");
}

Expand Down
3 changes: 2 additions & 1 deletion src/public/app/widgets/ribbon_widgets/promoted_attributes.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const TPL = `
}
.promoted-attribute-cell strong {
word-break:keep-all;
white-space: nowrap;
}
</style>
Expand Down Expand Up @@ -137,7 +138,7 @@ export default class PromotedAttributesWidget extends NoteContextAwareWidget {
.attr("nowrap", true);

const $wrapper = $('<div class="promoted-attribute-cell">')
.append($("<strong>").text(valueName))
.append($("<strong>").text(definition.promotedAlias ?? valueName))
.append($("<div>").addClass("input-group").append($input))
.append($actionCell)
.append($multiplicityCell);
Expand Down
5 changes: 5 additions & 0 deletions src/services/promoted_attribute_definition_parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ function parse(value) {

defObj.numberPrecision = parseInt(chunks[1]);
}
else if (token.startsWith('alias')) {
const chunks = token.split('=');

defObj.promotedAlias = chunks[1];
}
else if (token.startsWith('inverse')) {
const chunks = token.split('=');

Expand Down

0 comments on commit 4ac609f

Please sign in to comment.