Skip to content

Commit

Permalink
Primary Measurable Ratings
Browse files Browse the repository at this point in the history
Added isPrimary to:

- allocations extractor
- ratings extractor
- measurable explorer detail grid
- added toggle (with no back end support)

#CTCTOWALTZ-2746
finos#6635
  • Loading branch information
db-waltz committed Jun 19, 2023
1 parent 84972f1 commit a259c1e
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,19 @@
<p class="text-muted">
<waltz-markdown text="$ctrl.activeCategory.description"></waltz-markdown>
</p>
<waltz-warning ng-if="$ctrl.activeCategory.allowPrimaryRatings">
<message>This category supports Primary Ratings</message>
<content>
blah blah bah.
<waltz-toggle icon-on="star"
icon-off="star-o"
label-on="Showing only primary ratings"
label-off="Showing all ratings"
state="$ctrl.showPrimaryOnly"
on-toggle="$ctrl.onTogglePrimaryOnly(!$ctrl.showPrimaryOnly)">
</waltz-toggle>
</content>
</waltz-warning>
<hr>
</div>
<waltz-loading-notification show="$ctrl.visibility.loading"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,37 +56,59 @@ const initialState = {
},
selectedMeasurable: null,
onLoadDetail: () => log("onLoadDetail"),
showMore: false
showMore: false,
showPrimaryOnly: false
};


function prepareColumnDefs(measurableCategory) {
return [
mkLinkGridCell("Name", "application.name", "application.id", "main.app.view"),
{
field: "application.assetCode",
name: "Asset Code",
width: "10%"
},
{
field: "rating.name",
name: "Rating",
cellTemplate: `<div class="ui-grid-cell-contents">
<waltz-rating-indicator-cell rating="row.entity.rating"
show-description-popup="true"
show-name="true">
</waltz-rating-indicator-cell></div>`,
width: "10%"
},
{
field: "measurable.name",
name: measurableCategory.name
},
{
field: "rating.description",
name: "Comment"
}
];
const appLinkCol = mkLinkGridCell("Name", "application.name", "application.id", "main.app.view");

const assetCodeCol = {
field: "application.assetCode",
name: "Asset Code",
width: "10%"
};

const ratingSchemeItemCol = {
field: "ratingSchemeItem.name",
name: "Rating",
cellTemplate: `<div class="ui-grid-cell-contents">
<waltz-rating-indicator-cell rating="row.entity.ratingSchemeItem"
show-description-popup="true"
show-name="true">
</waltz-rating-indicator-cell></div>`,
width: "10%"
};

const isPrimaryCol = {
cellTemplate: `<div class="ui-grid-cell-contents">
<waltz-icon name="check" ng-show="row.entity.rating.isPrimary"></waltz-icon></div>`,
field: "rating.isPrimary",
name: "Primary?",
width: "10%"
};

const measurableNameCol = {
field: "measurable.name",
name: measurableCategory.name
};

const ratingDescriptionCol = {
field: "rating.description",
name: "Comment"
};

return _.compact([
appLinkCol,
assetCodeCol,
ratingSchemeItemCol,
measurableCategory.allowPrimaryRatings
? isPrimaryCol
: null,
measurableNameCol,
ratingDescriptionCol
]);
}


Expand Down Expand Up @@ -128,10 +150,8 @@ function prepareTableData(measurable,
.map(r => {
return {
application: appsById[r.entityReference.id],
rating: Object.assign(
{},
ratingScheme.ratingsByCode[r.rating],
{ description: r.description}),
ratingSchemeItem: ratingScheme.ratingsByCode[r.rating],
rating: r,
measurable: measurablesById[r.measurableId]
};
})
Expand Down Expand Up @@ -250,7 +270,7 @@ function controller($q, serviceBroker) {
loadRatingSchemes(serviceBroker, vm),
loadMeasurableRatingTallies(serviceBroker, vm.selector, vm),
loadApps(serviceBroker, vm.selector, vm),
loadLastViewedCategory(serviceBroker, vm)
loadLastViewedCategory(serviceBroker, vm),
]);
};

Expand Down Expand Up @@ -360,6 +380,11 @@ function controller($q, serviceBroker) {
};

vm.toggleShow = () => vm.showMore = !vm.showMore;

vm.onTogglePrimaryOnly = (showPrimaryOnly) => {
console.log("onTogglePrimaryOnly", {showPrimaryOnly});
vm.showPrimaryOnly = showPrimaryOnly;
};
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
ng-class="{ 'wt-active': tab.category.id == $ctrl.visibility.tab }"
class="wt-tab">
<br>
<h1 ng-if="tab.category.allowPrimaryRatings">Primaries!</h1>
<div ng-class="$ctrl.containerClass">
<treecontrol class="tree-light"
tree-model="tab.treeData"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ function controller($q,
vm.entityReference = toEntityRef(vm.measurable);
})
.then(() => serviceBroker
.loadAppData(CORE_API.MeasurableCategoryStore.findAll)
.then(r => vm.measurableCategory = _.find(r.data, { id: vm.measurable.categoryId })))
.loadAppData(CORE_API.MeasurableCategoryStore.findAll)
.then(r => vm.measurableCategory = _.find(r.data, { id: vm.measurable.categoryId })))
.then(() => logHistory(vm.measurable, historyStore));
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,10 @@ private SelectConditionStep<Record> prepareQuery(Condition additionalCondition,
MEASURABLE.ID.as("Taxonomy Item Waltz Id"),
MEASURABLE.EXTERNAL_ID.as("Taxonomy Item External Id"))
.select(MEASURABLE_RATING.RATING.as("Taxonomy Item Rating"),
DSL
.when(MEASURABLE_CATEGORY.ALLOW_PRIMARY_RATINGS.isTrue().and(MEASURABLE_RATING.IS_PRIMARY.isTrue()), "Y")
.when(MEASURABLE_CATEGORY.ALLOW_PRIMARY_RATINGS.isTrue().and(MEASURABLE_RATING.IS_PRIMARY.isFalse()), "N")
.otherwise("n/a").as("Is Primary"),
MEASURABLE_RATING.DESCRIPTION.as("Taxonomy Item Rating Description"))
.select(RATING_SCHEME_ITEM.NAME.as("Taxonomy Item Rating Name"))
.select(ENTITY_HIERARCHY.LEVEL.as("Taxonomy Item Hierarchy Level"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,45 @@
package org.finos.waltz.web.endpoints.extracts;


import org.finos.waltz.schema.Tables;
import org.finos.waltz.schema.tables.*;
import org.finos.waltz.data.InlineSelectFieldFactory;
import org.finos.waltz.data.application.ApplicationIdSelectorFactory;
import org.finos.waltz.model.EntityKind;
import org.finos.waltz.model.EntityLifecycleStatus;
import org.finos.waltz.model.IdSelectionOptions;
import org.finos.waltz.schema.Tables;
import org.finos.waltz.schema.tables.Application;
import org.finos.waltz.schema.tables.Measurable;
import org.finos.waltz.schema.tables.MeasurableCategory;
import org.finos.waltz.schema.tables.MeasurableRating;
import org.finos.waltz.schema.tables.MeasurableRatingPlannedDecommission;
import org.finos.waltz.schema.tables.MeasurableRatingReplacement;
import org.finos.waltz.schema.tables.OrganisationalUnit;
import org.finos.waltz.schema.tables.RatingScheme;
import org.finos.waltz.schema.tables.RatingSchemeItem;
import org.finos.waltz.web.WebUtilities;
import org.jooq.*;
import org.jooq.Condition;
import org.jooq.DSLContext;
import org.jooq.Field;
import org.jooq.Record;
import org.jooq.Record1;
import org.jooq.Record5;
import org.jooq.Select;
import org.jooq.SelectConditionStep;
import org.jooq.SelectSeekStep1;
import org.jooq.SelectSelectStep;
import org.jooq.impl.DSL;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import static org.finos.waltz.schema.Tables.*;
import static org.finos.waltz.common.SetUtilities.asSet;
import static org.finos.waltz.schema.Tables.APPLICATION;
import static org.finos.waltz.schema.Tables.MEASURABLE_RATING_PLANNED_DECOMMISSION;
import static org.finos.waltz.schema.Tables.MEASURABLE_RATING_REPLACEMENT;
import static org.finos.waltz.schema.Tables.RATING_SCHEME;
import static org.finos.waltz.schema.Tables.RATING_SCHEME_ITEM;
import static org.finos.waltz.schema.tables.Measurable.MEASURABLE;
import static org.finos.waltz.schema.tables.MeasurableRating.MEASURABLE_RATING;
import static org.finos.waltz.schema.tables.OrganisationalUnit.ORGANISATIONAL_UNIT;
import static org.finos.waltz.common.SetUtilities.asSet;
import static org.jooq.tools.StringUtils.toCamelCase;
import static spark.Spark.post;

Expand Down Expand Up @@ -68,13 +90,13 @@ public MeasurableRatingExtractor(DSLContext dsl) {
public void register() {

String path = WebUtilities.mkPath("data-extract", "measurable-rating", ":id");
registerAllocations(path);
registerRatingsExtract(path);

String unmappedPath = WebUtilities.mkPath("data-extract", "measurable-rating", "unmapped", ":id");
registerUnmappedAllocations(unmappedPath);
registerUnmappedAllocationsExtract(unmappedPath);
}

private void registerAllocations(String path) {
private void registerRatingsExtract(String path) {
post(path, (request, response) -> {
long categoryId = WebUtilities.getId(request);
IdSelectionOptions selectionOpts = WebUtilities.readIdSelectionOptionsFromBody(request);
Expand All @@ -90,7 +112,11 @@ private void registerAllocations(String path) {
app.KIND.as("App Kind"))
.select(rsi.NAME.as("Rating Name"),
rsi.CODE.as("Rating Code"))
.select(mr.DESCRIPTION.as("Rating Description"),
.select(DSL
.when(mc.ALLOW_PRIMARY_RATINGS.isTrue().and(mr.IS_PRIMARY.isTrue()), "Y")
.when(mc.ALLOW_PRIMARY_RATINGS.isTrue().and(mr.IS_PRIMARY.isFalse()), "N")
.otherwise("n/a").as("Is Primary"),
mr.DESCRIPTION.as("Rating Description"),
mr.LAST_UPDATED_AT.as("Last Updated Time"),
mr.LAST_UPDATED_BY.as("Last Updated By"))
.select(mrd.PLANNED_DECOMMISSION_DATE.as("Planned Decommission Date"))
Expand Down Expand Up @@ -132,7 +158,7 @@ private void registerAllocations(String path) {
});
}

private void registerUnmappedAllocations(String path) {
private void registerUnmappedAllocationsExtract(String path) {
post(path, (request, response) -> {
long categoryId = WebUtilities.getId(request);

Expand Down

0 comments on commit a259c1e

Please sign in to comment.