Name | SampleServiceV2 |
Service URL | select /destinations/mobileservices_cf destination |
Application ID | com.sap.mdk.demo |
Destination Name | com.sap.edm.sampleservice.v2 |
Enable Offline Store | Uncheck it |
export default function SalesData(sectionProxy) {
//The following currentCustomer will retrieve the current customer record
const currentCustomer = sectionProxy.getPageProxy().binding.CustomerId;
return sectionProxy.read('/NS_CustomerSales/Services/SampleServiceV2.service',
'SalesOrderHeaders', [],`$filter=CustomerId eq '${currentCustomer}'`).then(results => {
return results.get("_array");
});
}
{
"SalesData": "/NS_CustomerSales/Rules/SalesData.js"
}
{
"compilerOptions":{
"module":"commonjs",
"target":"es5",
"experimentalDecorators":true,
"emitDecoratorMetadata":true,
"removeComments":true,
"inlineSourceMap":false,
"sourceMap":false,
"noEmitOnError":false,
"noEmitHelpers":true,
"declaration":true,
"lib":[
"es6",
"dom"
],
"baseUrl":".",
"paths":{
"tns-core-modules/*":[
"./node_modules/tns-core-modules/*"
],
"mdk-sap":[
"./node_modules/mdk-sap"
],
"toolbar-plugin":[
"./node_modules/toolbar-plugin"
],
"zip-plugin":[
"./node_modules/zip-plugin"
]
}
},
"exclude":[
"node_modules",
"platforms",
"modules",
"plugins",
"build.definitions"
]
}
import { Observable } from 'tns-core-modules/data/observable';
export class oModel extends Observable {
private list : any;
constructor() {
super();
this.initData();
}
private initData() {
this.set("SalesOrderHeader",
[{ SalesOrderId: "4500001", Amount: 10 }]); // Dummy record
this.list = this.get( "SalesOrderHeader" );
}
private setSalesOrderHeader( SalesOrderId, Amount ){
this.list.push({ "SalesOrderId": SalesOrderId , "Amount" : Amount });
}
private getSalesOrderHeader(){
return this.list;
}
}
import * as app from 'tns-core-modules/application';
import { BaseObservable } from 'mdk-core/observables/BaseObservable';
import { Color } from 'tns-core-modules/color';
import { IControl } from 'mdk-core/controls/IControl';
import { Label } from "tns-core-modules/ui/label";
import { StackLayout } from "tns-core-modules/ui/layouts/stack-layout";
import { oModel } from './main-model';
import { Page } from 'tns-core-modules/ui/page';
import { RadPieChart, DonutSeries, ChartSeriesSelectionMode } from 'nativescript-ui-chart';
import { ObservableArray } from "tns-core-modules/data/observable-array";
export class SalesChartClass extends IControl {
private _model: any;
private _observable: BaseObservable;
private _targetLabel: any;
private _StackLayout: any;
private oRadPieChart: any;
private oDonutSeries: any;
private Selectionmode: any;
private seriesArray: any;
public initialize(props) {
super.initialize(props);
// Initiate saleorder Model
if(!this._model){ this._model = new oModel(); };
// Stack Layout
this._StackLayout = new StackLayout();
this._StackLayout.backgroundColor = "#f2efe8";
// Create Label
this._targetLabel = new Label();
this._targetLabel.text = "No Sales Data";
this._StackLayout.addChild(this._targetLabel);
// Create Pie Chart using External plugin
this.oRadPieChart = new RadPieChart();
this.oRadPieChart.row = 0 ;
this.oDonutSeries = new DonutSeries();
this.oDonutSeries.seriesName = "myDonutSeries";
this.Selectionmode = <ChartSeriesSelectionMode> 'None';
this.oDonutSeries.selectionMode = this.Selectionmode;
this.oDonutSeries.expandRadius = 0.4;
this.oDonutSeries.outerRadiusFactor = 0.6;
this.oDonutSeries.innerRadiusFactor = 0.8;
this.oDonutSeries.valueProperty = "Amount";
this.oDonutSeries.showLabels = true;
this.seriesArray = new ObservableArray();
this.seriesArray.push(this.oDonutSeries);
this.oRadPieChart.series = this.seriesArray;
this._StackLayout.addChild(this.oRadPieChart);
// Extension Properties
let extProps = this.definition().data.ExtensionProperties;
if (extProps) {
// Resolve SalesData
this.valueResolver().resolveValue(extProps.SalesData, this.context, true).then(function(SalesData){
this._targetLabel.text = "Sales Orders Revenue";
this._targetLabel.textAlignment = "center";
this._targetLabel.fontWeight = "bold";
SalesData.forEach(result=> {
this._model.setSalesOrderHeader( result.SalesOrderId, result.NetAmount );
});
this.oDonutSeries.items = this._model.getSalesOrderHeader();
}.bind(this));
}
}
public view() {
return this._StackLayout; // Return View
}
public viewIsNative() {
return true;
}
// Abstract Method
public observable() {
if (!this._observable) {
this._observable = new BaseObservable(this, this.definition(), this.page());
}
return this._observable;
}
// Abstract Method
public setValue(value: any, notify: boolean): Promise<any> {
return Promise.resolve();
}
public setContainer(container: IControl) {
// do nothing
}
}
file-system;ui/dialogs;./controls/IControl;./observables/BaseObservable;nativescript-ui-chart;ui/enums
This Concludes overview of adding the native script as an external plugin to a Mobile Development Kit app with an extension control.
Regards,
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
6 | |
5 | |
4 | |
4 | |
3 | |
3 | |
3 | |
3 | |
2 | |
2 |