From ff50b4040919fe54ce48e2c4570a3555d74978cf Mon Sep 17 00:00:00 2001 From: Sergey Linev <S.Linev@gsi.de> Date: Fri, 1 Mar 2019 19:52:42 +0100 Subject: [PATCH] eve7: change the way application is loading Now Component.js and mainfest.json are used to configure libs, css, main application and top view. Some minor parts are not yet working (like routing and css), but main application is runs! --- ui5/eve7/Component.js | 31 +++--------- ui5/eve7/controller/GL.controller.js | 70 ++++++++++++++++++-------- ui5/eve7/controller/Main.controller.js | 11 ++-- ui5/eve7/index.html | 36 ++++++------- ui5/eve7/manifest.json | 60 ++++++++++++++++++++++ ui5/eve7/view/MainMain.view.xml | 6 +++ 6 files changed, 145 insertions(+), 69 deletions(-) create mode 100644 ui5/eve7/manifest.json create mode 100644 ui5/eve7/view/MainMain.view.xml diff --git a/ui5/eve7/Component.js b/ui5/eve7/Component.js index 349693ea559..1274cda53c5 100644 --- a/ui5/eve7/Component.js +++ b/ui5/eve7/Component.js @@ -1,32 +1,15 @@ -sap.ui.define(['sap/ui/core/UIComponent'], - function(UIComponent) { +sap.ui.define([ + 'sap/ui/core/UIComponent', 'sap/ui/core/mvc/XMLView', 'sap/m/routing/Router' /* Router is only needed for packaging */ +], function(UIComponent, XMLView) { "use strict"; var Component = UIComponent.extend("eve.Component", { - metadata : { - rootView : "eve.Main", - dependencies : { - libs : [ - "sap.ui.commons", - "sap.ui.layout" - ] - }, - config : { - sample : { - files : [ - "Main.view.xml", - "Main.controller.js", - "GL.view.xml", - "GL.controller.js", - "Summary.view.xml", - "Summary.controller.js" - ] - } - } + manifest: "json" }, - - onAfterRendering : function() { + init: function() { + UIComponent.prototype.init.apply(this, arguments); + this.getRouter().initialize(); } }); diff --git a/ui5/eve7/controller/GL.controller.js b/ui5/eve7/controller/GL.controller.js index c0b961cc649..7e18010a0b1 100644 --- a/ui5/eve7/controller/GL.controller.js +++ b/ui5/eve7/controller/GL.controller.js @@ -1,15 +1,18 @@ sap.ui.define([ + 'sap/ui/core/Component', + 'sap/ui/core/UIComponent', 'sap/ui/core/mvc/Controller', 'sap/ui/model/json/JSONModel', "sap/ui/core/ResizeHandler", - 'rootui5/eve7/lib/EveManager', - 'rootui5/eve7/lib/EveElements', - 'rootui5/eve7/lib/EveScene' -], function (Controller, JSONModel, ResizeHandler, EveManager, EveElements, EveScene) { + 'rootui5/eve7/lib/EveManager' +], function (Component, UIComponent, Controller, JSONModel, ResizeHandler, EveManager) { "use strict"; + // for debug purposes - do not create geometry painter, just three.js renderer var direct_threejs = false; + + var EveScene = null; return Controller.extend("rootui5.eve7.controller.GL", { @@ -18,7 +21,49 @@ sap.ui.define([ var id = this.getView().getId(); console.log("eve.GL.onInit id = ", id); - var data = this.getView().getViewData(); + var viewData = this.getView().getViewData(); + if (viewData) { + console.log("Create with view data"); + this.createXXX(viewData); + } + + var oRouter = UIComponent.getRouterFor(this); + if (oRouter) oRouter.getRoute("View").attachPatternMatched(this._onObjectMatched, this); + + ResizeHandler.register(this.getView(), this.onResize.bind(this)); + this.fast_event = []; + + this._load_scripts = false; + this._render_html = false; + this.geo_painter = null; + // this.painter_ready = false; + + JSROOT.AssertPrerequisites("geom", this.onLoadScripts.bind(this)); + }, + + onLoadScripts: function() + { + var pthis = this; + + sap.ui.define(['rootui5/eve7/lib/EveScene'], function (_handle) { + EveScene = _handle; + pthis._load_scripts = true; + pthis.checkViewReady(); + }); + }, + + _onObjectMatched: function(oEvent) { + var args = oEvent.getParameter("arguments"); + this.createXXX(Component.getOwnerComponentFor(this.getView()).getComponentData(), args.viewName); + }, + + createXXX: function(data, viewName) { + + if (viewName) { + data.standalone = viewName; + data.kind = viewName; + } + //var data = this.getView().getViewData(); // console.log("VIEW DATA", data); if (data.standalone && data.conn_handle) @@ -35,15 +80,6 @@ sap.ui.define([ this.kind = data.kind; } - ResizeHandler.register(this.getView(), this.onResize.bind(this)); - this.fast_event = []; - - this._load_scripts = false; - this._render_html = false; - this.geo_painter = null; - // this.painter_ready = false; - - JSROOT.AssertPrerequisites("geom", this.onLoadScripts.bind(this)); }, // MT-HAKA @@ -171,12 +207,6 @@ sap.ui.define([ this.renderer.render( this.scene, this.camera ); }, - onLoadScripts: function() - { - this._load_scripts = true; - this.checkViewReady(); - }, - onManagerUpdate: function() { // called when manager was updated, need only in standalone modes to detect own element id diff --git a/ui5/eve7/controller/Main.controller.js b/ui5/eve7/controller/Main.controller.js index bc39dd03501..12a6e85a05a 100644 --- a/ui5/eve7/controller/Main.controller.js +++ b/ui5/eve7/controller/Main.controller.js @@ -1,8 +1,9 @@ -sap.ui.define(['sap/ui/core/mvc/Controller', +sap.ui.define(['sap/ui/core/Component', + 'sap/ui/core/mvc/Controller', 'sap/ui/layout/Splitter', 'sap/ui/layout/SplitterLayoutData', 'rootui5/eve7/lib/EveManager' -], function(Controller, Splitter, SplitterLayoutData, EveManager) { +], function(Component, Controller, Splitter, SplitterLayoutData, EveManager) { "use strict"; @@ -13,11 +14,13 @@ sap.ui.define(['sap/ui/core/mvc/Controller', this.mgr = new EveManager(); - this.mgr.UseConnection(this.getView().getViewData().conn_handle); + var conn_handle = Component.getOwnerComponentFor(this.getView()).getComponentData().conn_handle; + this.mgr.UseConnection(conn_handle); + // this.mgr.UseConnection(this.getView().getViewData().conn_handle); // method to found summary controller by ID and set manager to it var elem = this.byId("Summary"); - var ctrl = sap.ui.getCore().byId(elem.getId()).getController(); + var ctrl = elem.getController(); ctrl.SetMgr(this.mgr); this.mgr.RegisterUpdate(this, "onManagerUpdate"); diff --git a/ui5/eve7/index.html b/ui5/eve7/index.html index 99fbdcb6c83..63abca6edf5 100644 --- a/ui5/eve7/index.html +++ b/ui5/eve7/index.html @@ -5,7 +5,6 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Eve7</title> <script type="text/javascript" src="jsrootsys/scripts/JSRootCore.js"></script> - <!-- link rel="stylesheet" type="text/css" href="evedir/eve.css"/--> <style> html { height: 100%; } body { min-height: 100%; margin: 0; overflow: hidden } @@ -30,34 +29,29 @@ function InitUI(handle) { - var kind = JSROOT.GetUrlOption('view'); - - if (!kind) { - new JSROOT.sap.ui.xmlview({ - id: "TopEveId", - viewName: "rootui5.eve7.view.Main", - viewData: { conn_handle: handle } - }).placeAt("EveDiv"); - } else { - new JSROOT.sap.ui.xmlview({ - id: "TopGlId", - viewName: "rootui5.eve7.view.GL", - viewData: { conn_handle: handle, standalone: kind } - }).placeAt("EveDiv"); - } + sap.ui.require(["sap/ui/core/ComponentContainer"], function(ComponentContainer) { + new ComponentContainer({ + name: "rootui5.eve7", + manifest: true, + async: true, + settings: { + componentData: { + conn_handle: handle + } + }, + height: "100%" + }).placeAt("EveDiv") + }); } if (JSROOT.GetUrlOption('nogl')!==null) JSROOT.gStyle.NoWebGL = true; if (JSROOT.GetUrlOption('libs')!==null) JSROOT.use_full_libs = true; - var jsroot_prereq = "openui5"; - if (JSROOT.GetUrlOption('view')) jsroot_prereq += ";geom"; - JSROOT.ConnectWebWindow({ - prereq: jsroot_prereq, + prereq: "openui5", // openui5src: "jsroot", // use JSROOT provided package, experimental openui5src: "https://openui5.hana.ondemand.com/", - openui5libs: "sap.m, sap.ui.layout, sap.ui.table, sap.ui.commons", // customize openui5 libs + openui5libs: "sap.ui.core", // customize openui5 libs prereq_logdiv: "EveDiv", callback: InitUI }); diff --git a/ui5/eve7/manifest.json b/ui5/eve7/manifest.json new file mode 100644 index 00000000000..8d15694e93e --- /dev/null +++ b/ui5/eve7/manifest.json @@ -0,0 +1,60 @@ +{ + "sap.app": { + "id": "rootui5.eve7" + }, + "sap.ui5": { + "rootView": { + "viewName": "rootui5.eve7.view.MainMain", + "type": "XML", + "async": true, + "id": "app" + }, + "resources": { + "css": [ + { + "uri": "rootui5/eve7/css/eve.css" + } + ] + }, + "dependencies": { + "libs": { + "sap.ui.core": {}, + "sap.ui.layout": {}, + "sap.m": {}, + "sap.uxap": {}, + "sap.ui.table": {} + } + }, + "routing": { + "config": { + "routerClass": "sap.m.routing.Router", + "viewType": "XML", + "async": true, + "viewPath": "rootui5.eve7.view", + "controlAggregation": "pages", + "controlId": "myApp" + }, + "routes": [{ + "name": "Default", + "pattern": "", + "target": ["Main"] + }, { + "name": "View", + "pattern": "view/:viewName:", + "target": ["GL"] + }], + "targets": { + "Main": { + "transition": "slide", + "clearAggregation": true, + "viewName": "Main" + }, + "GL": { + "transition": "slide", + "clearAggregation": true, + "viewName": "GL" + } + } + } + } +} \ No newline at end of file diff --git a/ui5/eve7/view/MainMain.view.xml b/ui5/eve7/view/MainMain.view.xml new file mode 100644 index 00000000000..74fdbb4004b --- /dev/null +++ b/ui5/eve7/view/MainMain.view.xml @@ -0,0 +1,6 @@ +<mvc:View height="100%" class="sapUiSizeCompact" + xmlns:mvc="sap.ui.core.mvc" + xmlns="sap.m"> + <App id="myApp"></App> +</mvc:View> + -- GitLab