add read only tree table and value help
This commit is contained in:
@@ -40,7 +40,68 @@ annotate AdminService.Books with @(
|
||||
}
|
||||
);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Value Help for Tree Table
|
||||
//
|
||||
annotate AdminService.Books with {
|
||||
genre @(Common: {
|
||||
Label : 'Genre',
|
||||
ValueList: {
|
||||
CollectionPath : 'GenreHierarchy',
|
||||
Parameters : [
|
||||
{
|
||||
$Type : 'Common.ValueListParameterDisplayOnly',
|
||||
ValueListProperty: 'name',
|
||||
},
|
||||
{
|
||||
$Type : 'Common.ValueListParameterInOut',
|
||||
LocalDataProperty: genre_ID,
|
||||
ValueListProperty: 'ID',
|
||||
}
|
||||
],
|
||||
PresentationVariantQualifier: 'VH',
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
annotate AdminService.GenreHierarchy with @UI: {
|
||||
PresentationVariant #VH: {
|
||||
$Type : 'UI.PresentationVariantType',
|
||||
Visualizations : ['@UI.LineItem'],
|
||||
RecursiveHierarchyQualifier: 'GenreHierarchy'
|
||||
},
|
||||
LineItem : [{
|
||||
$Type: 'UI.DataField',
|
||||
Value: name,
|
||||
Label : 'Genre'
|
||||
}],
|
||||
};
|
||||
|
||||
// Hide ID because of the ValueHelp
|
||||
annotate AdminService.GenreHierarchy with {
|
||||
ID @UI.Hidden;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Tree Table
|
||||
//
|
||||
annotate AdminService.GenreHierarchy with @Aggregation.RecursiveHierarchy#GenreHierarchy: {
|
||||
$Type: 'Aggregation.RecursiveHierarchyType',
|
||||
NodeProperty: ID, // identifies a node
|
||||
ParentNavigationProperty: parent // navigates to a node's parent
|
||||
};
|
||||
|
||||
annotate AdminService.GenreHierarchy with @Hierarchy.RecursiveHierarchy#GenreHierarchy: {
|
||||
$Type: 'Hierarchy.RecursiveHierarchyType',
|
||||
LimitedDescendantCount: LimitedDescendantCount,
|
||||
DistanceFromRoot: DistanceFromRoot,
|
||||
DrillState: DrillState,
|
||||
Matched: Matched,
|
||||
MatchedDescendantCount: MatchedDescendantCount,
|
||||
LimitedRank: LimitedRank
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -82,5 +143,3 @@ extend service AdminService {
|
||||
// Workaround for Fiori popup for asking user to enter a new UUID on Create
|
||||
annotate AdminService.Books with { ID @Core.Computed; }
|
||||
|
||||
// Show Genre as drop down, not a dialog
|
||||
annotate AdminService.Books with { genre @Common.ValueListWithFixedValues; }
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"id": "BrowseGenres",
|
||||
"tileType": "sap.ushell.ui.tile.StaticTile",
|
||||
"properties": {
|
||||
"title": "Browse Genres (OData v2)",
|
||||
"title": "Browse Genres",
|
||||
"targetURL": "#Genres-display"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,3 +55,16 @@ annotate CatalogService.Books with @(UI : {
|
||||
{Value : currency.symbol},
|
||||
]
|
||||
}, );
|
||||
|
||||
annotate CatalogService.GenreHierarchy with @UI: {
|
||||
PresentationVariant : {
|
||||
$Type : 'UI.PresentationVariantType',
|
||||
RequestAtLeast: [name],
|
||||
Visualizations: ['@UI.LineItem'],
|
||||
},
|
||||
LineItem : [{
|
||||
$Type: 'UI.DataField',
|
||||
Value: name,
|
||||
Label : 'Genre'
|
||||
}],
|
||||
};
|
||||
@@ -80,7 +80,8 @@ annotate my.Genres with @(
|
||||
LineItem : [
|
||||
{ Value: name },
|
||||
{
|
||||
Value : parent.name,
|
||||
Value : name,
|
||||
// TODO: i18n
|
||||
Label: 'Main Genre'
|
||||
},
|
||||
],
|
||||
@@ -115,7 +116,6 @@ annotate my.Genres with @(UI : {
|
||||
// Genres Elements
|
||||
//
|
||||
annotate my.Genres with {
|
||||
ID @title: '{i18n>ID}';
|
||||
name @title: '{i18n>Genre}';
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
using { sap.capire.bookshop } from '../../db/common';
|
||||
/*
|
||||
UI annotations for the Browse GenreHierarchy App
|
||||
*/
|
||||
using CatalogService from '@capire/bookstore';
|
||||
|
||||
annotate bookshop.GenreHierarchy {
|
||||
ID @sap.hierarchy.node.for;
|
||||
parent @sap.hierarchy.parent.node.for;
|
||||
hierarchyLevel @sap.hierarchy.level.for;
|
||||
drillState @sap.hierarchy.drill.state.for;
|
||||
}
|
||||
annotate CatalogService.GenreHierarchy with @Aggregation.RecursiveHierarchy#GenreHierarchy: {
|
||||
$Type: 'Aggregation.RecursiveHierarchyType',
|
||||
NodeProperty: ID, // identifies a node
|
||||
ParentNavigationProperty: parent // navigates to a node's parent
|
||||
};
|
||||
|
||||
annotate CatalogService.GenreHierarchy with @Hierarchy.RecursiveHierarchy#GenreHierarchy: {
|
||||
$Type: 'Hierarchy.RecursiveHierarchyType',
|
||||
LimitedDescendantCount: LimitedDescendantCount,
|
||||
DistanceFromRoot: DistanceFromRoot,
|
||||
DrillState: DrillState,
|
||||
Matched: Matched,
|
||||
MatchedDescendantCount: MatchedDescendantCount,
|
||||
LimitedRank: LimitedRank
|
||||
};
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
sap.ui.define(["sap/suite/ui/generic/template/lib/AppComponent"], (AppComponent) =>
|
||||
AppComponent.extend("genres.Component", {
|
||||
metadata: {
|
||||
manifest: "json",
|
||||
},
|
||||
})
|
||||
);
|
||||
sap.ui.define(["sap/fe/core/AppComponent"], ac => ac.extend("genres.Component", {
|
||||
metadata:{ manifest:'json' }
|
||||
}))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#XTIT
|
||||
appTitle=Genres
|
||||
appTitle=Browse Genres
|
||||
#XTXT
|
||||
appDescription=Browse Genres
|
||||
appDescription=Genres as Tree View
|
||||
|
||||
2
fiori/app/genres/webapp/i18n/i18n_de.properties
Normal file
2
fiori/app/genres/webapp/i18n/i18n_de.properties
Normal file
@@ -0,0 +1,2 @@
|
||||
appTitle=Zeige Genres
|
||||
appDescription=Genres als Baumansicht
|
||||
@@ -3,18 +3,31 @@
|
||||
"sap.app": {
|
||||
"id": "genres",
|
||||
"type": "application",
|
||||
"title": "Browse genres",
|
||||
"description": "Sample Application",
|
||||
"i18n": "i18n/i18n.properties",
|
||||
"applicationVersion": {
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"title": "Browse Genres Hierarchy (OData v2)",
|
||||
"description": "{{appDescription}}",
|
||||
"dataSources": {
|
||||
"CatalogService": {
|
||||
"uri": "browse/",
|
||||
"type": "OData",
|
||||
"settings": {
|
||||
"odataVersion": "4.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"keywords": []
|
||||
},
|
||||
"crossNavigation": {
|
||||
"inbounds": {
|
||||
"appShow": {
|
||||
"Genres-display": {
|
||||
"signature": {
|
||||
"parameters": {},
|
||||
"additionalParameters": "allowed"
|
||||
},
|
||||
"title": "{{appTitle}}",
|
||||
"semanticObject": "GenreHierarchy",
|
||||
"action": "display",
|
||||
@@ -29,25 +42,6 @@
|
||||
},
|
||||
"outbounds": {}
|
||||
},
|
||||
"ach": "",
|
||||
"resources": "resources.json",
|
||||
"dataSources": {
|
||||
"main": {
|
||||
"uri": "/odata/v2/browse",
|
||||
"type": "OData",
|
||||
"settings": {
|
||||
"annotations": ["localAnnotations"],
|
||||
"localUri": "localService/metadata.xml"
|
||||
}
|
||||
},
|
||||
"localAnnotations": {
|
||||
"type": "ODataAnnotation",
|
||||
"uri": "annotations/localAnnotations.xml",
|
||||
"settings": {
|
||||
"localUri": "annotations/localAnnotations.xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"offline": false,
|
||||
"sourceTemplate": {
|
||||
"id": "ui5template.smartTemplate",
|
||||
@@ -86,70 +80,79 @@
|
||||
"type": "sap.ui.model.resource.ResourceModel",
|
||||
"uri": "i18n/i18n.properties"
|
||||
},
|
||||
"@i18n": {
|
||||
"type": "sap.ui.model.resource.ResourceModel",
|
||||
"uri": "i18n/i18n.properties"
|
||||
},
|
||||
"json": {
|
||||
"type": "sap.ui.model.json.JSONModel"
|
||||
},
|
||||
"i18n|sap.suite.ui.generic.template.ListReport|Genres": {
|
||||
"type": "sap.ui.model.resource.ResourceModel",
|
||||
"uri": "i18n/ListReport/Genres/i18n.properties"
|
||||
},
|
||||
"": {
|
||||
"dataSource": "main",
|
||||
"preload": true,
|
||||
"dataSource": "CatalogService",
|
||||
"settings": {
|
||||
"useBatch": true,
|
||||
"defaultBindingMode": "TwoWay",
|
||||
"defaultCountMode": "Inline",
|
||||
"refreshAfterChange": true,
|
||||
"metadataUrlParams": {
|
||||
"sap-value-list": "none"
|
||||
"synchronizationMode": "None",
|
||||
"operationMode": "Server",
|
||||
"autoExpandSelect": true,
|
||||
"earlyRequests": true,
|
||||
"groupProperties": {
|
||||
"default": {
|
||||
"submit": "Auto"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"routing": {
|
||||
"routes": [
|
||||
{
|
||||
"pattern": ":?query:",
|
||||
"name": "GenreHierarchyList",
|
||||
"target": "GenreHierarchyList"
|
||||
},
|
||||
{
|
||||
"pattern": "GenreHierarchy({key}):?query:",
|
||||
"name": "GenreHierarchyDetails",
|
||||
"target": "GenreHierarchyDetails"
|
||||
}
|
||||
],
|
||||
"targets": {
|
||||
"GenreHierarchyList": {
|
||||
"type": "Component",
|
||||
"id": "GenreHierarchyList",
|
||||
"name": "sap.fe.templates.ListReport",
|
||||
"options": {
|
||||
"settings" : {
|
||||
"contextPath" : "/GenreHierarchy",
|
||||
"navigation" : {
|
||||
"GenreHierarchy" : {
|
||||
"detail" : {
|
||||
"route" : "GenreHierarchyDetails"
|
||||
}
|
||||
}
|
||||
},
|
||||
"controlConfiguration": {
|
||||
"@com.sap.vocabularies.UI.v1.LineItem": {
|
||||
"tableSettings": {
|
||||
"hierarchyQualifier": "GenreHierarchy",
|
||||
"type": "TreeTable"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"GenreHierarchyDetails": {
|
||||
"type": "Component",
|
||||
"id": "GenreHierarchyDetails",
|
||||
"name": "sap.fe.templates.ObjectPage",
|
||||
"options": {
|
||||
"settings" : {
|
||||
"contextPath" : "/GenreHierarchy"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"contentDensities": {
|
||||
"compact": true,
|
||||
"cozy": true
|
||||
}
|
||||
},
|
||||
"sap.ui.generic.app": {
|
||||
"_version": "1.3.0",
|
||||
"settings": {
|
||||
"forceGlobalRefresh": false,
|
||||
"useColumnLayoutForSmartForm": false,
|
||||
"showBasicSearch": false
|
||||
},
|
||||
"pages": {
|
||||
"ListReport|Genres": {
|
||||
"entitySet": "GenreHierarchy",
|
||||
"component": {
|
||||
"name": "sap.suite.ui.generic.template.ListReport",
|
||||
"list": true,
|
||||
"settings": {
|
||||
"condensedTableLayout": true,
|
||||
"smartVariantManagement": true,
|
||||
"tableType": "TreeTable",
|
||||
"enableTableFilterInPageVariant": true,
|
||||
"dataLoadSettings": {
|
||||
"loadDataOnAppLaunch": "always"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"sap.fiori": {
|
||||
"registrationIds": [],
|
||||
"archeType": "transactional"
|
||||
},
|
||||
"sap.platform.hcp": {
|
||||
"uri": ""
|
||||
},
|
||||
"sap.platform.cf": {
|
||||
"oAuthScopes": []
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
namespace sap.capire.bookshop;
|
||||
|
||||
using { sap.capire.bookshop } from '@capire/bookstore/srv/mashup';
|
||||
|
||||
entity GenreHierarchy : bookshop.Genres {
|
||||
hierarchyLevel : Integer default 0;
|
||||
drillState : String default 'leaf';
|
||||
parent : Association to GenreHierarchy;
|
||||
children : Composition of many GenreHierarchy on children.parent = $self;
|
||||
}
|
||||
|
||||
extend service CatalogService with {
|
||||
@readonly entity GenreHierarchy as projection on bookshop.GenreHierarchy;
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
ID;parent_ID;name;hierarchyLevel;drillState
|
||||
10;;Fiction;0;expanded
|
||||
11;10;Drama;1;leaf
|
||||
12;10;Poetry;1;leaf
|
||||
13;10;Fantasy;1;leaf
|
||||
14;10;Science Fiction;1;leaf
|
||||
15;10;Romance;1;leaf
|
||||
16;10;Mystery;1;leaf
|
||||
17;10;Thriller;1;leaf
|
||||
18;10;Dystopia;1;leaf
|
||||
20;;Non-Fiction;0;expanded
|
||||
19;10;Fairy Tale;1;leaf
|
||||
21;20;Biography;1;expanded
|
||||
22;21;Autobiography;2;leaf
|
||||
23;20;Essay;1;leaf
|
||||
24;20;Speech;1;leaf
|
||||
|
Reference in New Issue
Block a user